比特币的账本模型 - UTXO

Blockchain Oct 21, 2019

区块链的账本模型,是区块链存储技术的一部分,说到存储,大家就很容易联想到数据库,那么区块链到底是不是一个读不可控写不可控的分布式数据库?或者说区块链和数据库有什么区别?

首先来看什么是数据库,数据库是运行在计算机中,可以储存和访问组织好的数据的场所,从这个定义来看,区块链就是一个数据库,只不过在普遍印象中,数据库有超级用户,有权限控制,还可以增删改查所有数据,并且具有较高的性能。

所以区块链为什么不支持增删改查的部分操作,这是由区块链的基因决定的,数据库发展至今,大概有这么几种,关系型数据库,非关系型数据库,而区块链是基于非关系型数据库又做了一些改进,这使得数据库节点与节点之间的关系,由传统数据库的信任和协作,变为了怀疑和约束,所以区块链上的数据不允许删改。区块链生来不是解决高并发问题的,而且要解决信任问题。

话题继续回到标题,区块链中的数据,是如何存储的,是以什么结构存储的。

在传统数据库中,当我们记录一些东西,会有一个数据库表来把数据结构化,比如当我们需要一个用户表,会记录用户 ID,地址,名字,电话,余额等等。

但是在比特币的世界里就大不相同了,首先,比特币数据库分为两部分,一部分用来存实际的区块,区块中记录了每笔交易的哈希值;另一部分用来存 UTXO,UTXO 也就是接下来要讲到的账户模型。

UTXO 可以理解为纸币找零的过程,只不过这个‘纸币’可以是任意面额,举个例子,在一个新的区块链网络里,最开始没有比特币,也不存在 UTXO,当矿工挖到一个币,也就产生了一个面值为 12.5 的 UTXO,当矿工转账给别人的时候,12.5 面值的 UTXO 又会被拆分成三份,分别给接受者,记账矿工,以及剩余余额。

和普通的数据库模型相比,UTXO 的特点在于可以进行并行计算,因为不同 UTXO 是互相独立的,同时也能保证使用者的隐私,因为找零部分的 UTXO,接收人可以任意指定,这会使得比特币交易变得难以追踪。UTXO 的劣势也很明显,那就是他几乎不支持编程,这也使得比特币只能是一个记账工具,而不能成为一个可信任的计算平台。

Tags

Jie Li

🚘 On-road / 📉 US Stock / 💻 Full Stack Developer / 🎓 Grad Student / ®️ ENTJ

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.