Login
欢迎来到未来世界

您现在的位置是: 首页 > 计算机 > 区块链

区块链

什么是UTXO?简析账户/余额模型和UTXO模型

区块链 加入收藏
在比特币社区内,有一种这样的说法:其实并没有比特币,有的只是UTXO。还有一种说法是:如果理解了UTXO,你就理解了比特币。这两种说法虽然都有不同程度的夸张,但足以体现UTXO之于比特币的重要性。既然
在比特币社区内,有一种这样的说法:其实并没有比特币,有的只是UTXO。还有一种说法是:如果理解了UTXO,你就理解了比特币。
虽然两种说法都有不同程度的夸大,但足以反映UTXO对比特币的重要性。既然UTXO如此重要,今天我们就简单介绍一下UTXO。
什么是UTXO
在目前的区块链项目中,记账的方式主要有两种,一种是账户/余额模型,一种是UTXO模型。比特币采用UTXO模型,以太坊和EOS采用账户/余额模型。
UTXO是Unspent Transaction Output的缩写,表示未使用的输出。可以简单理解为未使用的集合。例如,韩梅梅收到了一枚比特币,但她没有使用它。这个比特币对她来说就是个UTXO。
账户/余额模型和UTXO模型
账户/余额模型在生活中很常见。比如我们的银行账户、微信账户,都是基于账户/余额模式。
账户中的余额作为一个整体存在。李雷的账户里有多少钱?如果你看看余额,你就会知道,当一笔交易发生时,变化的是余额。比如情人节,李磊通过微信给韩梅梅转账520元,李磊的微信账户余额会减少520元,而韩梅梅的账户余额会增加520元。
UTXO模型不同于帐户模型。雷有多少比特币?你必须把他所有的比特币地址加起来才能知道。简单来说,UTXO模型就像我们使用的钱包,钱包里的每一张纸币或硬币都是一个独立的UTXO。所以,钱包里有多少钱并不是一目了然的。你需要把所有的纸币和硬币面额加起来才能得到。
而且每一笔付款都是由UTXO消费或接收的。比如我们用10元钱买5元的早餐,这10元作为UTXO会全额支付给卖家,卖家给你找头。
我们来举例说明一下。情人节那天,李雷花了520元给韩梅梅买了花。付现金,他拿出六张百元大钞(相当于100元中的六个UTXO)交给卖家,卖家需要给李磊80元的零钱(一张50元,一张20元,一张10元)。在这个过程中,很明显李雷华买花600元,拿零钱80元,卖家卖花拿520元。从UTXO的角度看,李磊花了6个UTXO(6个100元),得到了3个UTXO(3个零钱);卖家拿到了6个UTXO,花了3个utxo的零钱。
如果这个交易是用比特币完成的,流程会略有不同。假设李磊用6个1btc的UTXO支付给卖家5.2BTC,最后卖家得到了一个价值5.2BTC的UTXO,给李磊的零钱是一个价值0.8BTC的UTXO,换句话说,6个UTXO被“消灭”了,变成了两个新的UTXO。(两者不同的原因是纸币面额的种类有限,而比特币不受此限制)。
如果李磊和韩梅梅秀恩爱的过程发生在比特币网络上,那么转账过程是怎样的?
李磊挖掘了12.5个被系统奖励的比特币,所以李磊的比特币地址上有一个12.5BTC的UTXO。
李磊要转5.2BTC到韩梅梅,12.5BTC的UTXO全部花光,其中5.2BTC转韩梅梅,剩下的7.3BTC自己换(为方便讨论,此处忽略矿工费)。换句话说,12.5BTC之前是以一个UTXO的形式整体存在的。在转让过程中,这个UTXO被“销毁”不再存在,变成了两个新的UTXO:一个属于韩梅梅,这个UTXO值5.2BTC,另一个属于李磊,这个UTXO值7.3BTC,这是李磊的变化。

两种模型在转账时的对比
UTXO 核心设计思路是:它记录交易事件,而不记录最终状态。要计算某个用户有多少比特币,就要对其钱包里所有的UTXO求和,得到结果就是他的持币数量。UTXO模型在转账交易时,是以UTXO为单位的,也就是说在支付时,调用的是整数倍UTXO,比如1个UTXO,3个UTXO,没有0.5个UTXO的说法。
图集详情底部广告位