小白入门-什么是UTXO?

什么是UTXO?

UTXO,全称Unspent Transaction Output,直译即未花费交易输出。

每笔比特币交易都有输入和输出,别人付给你的钱是“交易输入”,你收到的钱是“交易输出”。只不过当你没支付出去之前是“未花费的交易输出”,一旦你支付出去,就变成了真正的“交易输出”。

 

UTXO简单理解就是:取代了传统账户,用来快速计算你有多少数字资产余额的一种设计。

 

为什么中本聪采用UTXO的方式,而没用余额方式呢?

假设比特币和传统货币一样,使用账户余额系统,首先需要一个数据库,记录所有人的余额。这里假设全世界使用BTC的用户有10亿用户,每个人每天交易10次,那么平均每秒余额变动将达11万次,如果按照这个频次继续下去,用不了多久相关数据就会撑爆线上的服务器。

 

而UTXO的方案简单到极致:只确认交易本身,具有极大的优越性:

1.   UTXO不能分割,只能被消耗,独立的数据结构大大减少了计算量;

2.   UTXO配合地址使用,具备天然的匿名性,保证了账户的安全;

3.   因为地址的存在,UTXO的销毁和产生,都可追溯,很难伪造;

 

我们举个简单的例子:

以现金购买商品为例,我的钱包中有一张10元、一张5元和一张1元的纸币,一共16元。如果我买了一包烟,需要花费13元,需要拿出10元和5元的纸币,随后找零得到一张2元纸币。

这时候我要看自己的余额,钱包里剩下一张2元纸币和一张1元纸币,可以直接得出还剩3元。

但如果在区块链上,由于账本记录的都是交易记录,在查余额的时候,一共要进行3笔交易的计算(15元-13元+1元=3元)。

在这里如果使用UTXO的概念,之前的10元和5元由于已经花掉(消耗)了,便不再是UTXO了,再看钱包里的金额,相当于您只有两条记录,一条是找零新产生的2元,一条是原有的1元,这样计算量就减少了。表面单看这一笔并没减少太多计算量,但是随着交易量的无限增加,UTXO的数据会小很多。

 

正如,中本聪在比特币白皮书上说:

It should be noted that fan-out, where a transaction depends on several transactions, and those transactions depend on many more, is not a problem here. There is never the need to extract a complete standalone copy of a transaction’s history.

当一笔交易基于之前的多笔交易时,这些交易又各自基于多笔交易,但这并不存在任何问题。因为这个系统永远不需要提取一份所有历史交易的完整记录。

 

发表评论

暂时没有评论,赶紧抢沙发吧!