【区块链】UTXO是何方神圣呢?

在《精通比特币》提到:

在比特币的世界里既没有账户,也没有余额,只有分散到区块链里的UTXO。

UTXO(Unspent Transaction Outputs)是未花费输出。怎么理解它呢?

比如,你的钱包有10块人民币,其中有1块来自于7-11便利店给你找零,其中1块来自于星巴克咖啡店给你找零,另外8块来自超市给你找零。现在你拿到三笔钱分别是1、1、8,你还没有把三笔钱使用出去的话,这三笔钱都属于未花费输出。

我们在钱包看到比特币余额,是通过扫描区块链把属于该用户的UTXO的金额进行累加起来。UTXO是不能再分割。不能由UTXO拆分出更多UTXO,通过提现产生新的UTXO,但不是原来的UTXO。

假如小红的比特币钱包10个BTC,有一笔UTXO是2个BTC,另一笔UTXO是8个BTC。现在给小明提现3个BTC,矿工费是0.001个BTC,钱包把那个有8个BTC的UTXO进行消耗,给你找零时,会创造一个有4.999个BTC的UTXO。那个有8个BTC的UTXO被标记为“已使用”,然后从有效的(未使用)UTXO池中所移除。如下图所示:

【区块链】UTXO是何方神圣呢?_第1张图片

每一笔交易创造新的输出,都会被记录在账簿中。区块记录的每笔交易是由输入和输出组成。每一笔新的交易的输入必须是某笔交易未花费的输出。顺藤摸瓜查询交易,最终能发现产生BTC的源头——coinbase。coinbase是给矿工奖励的金额和矿工费。

在传统的金融服务,是有账户余额。例如:小红需要向小明转账5000块人民币。

【区块链】UTXO是何方神圣呢?_第2张图片

有可能由网络等原因,使得小红的账户扣了两笔相同的钱,也就是扣除10000块。这个类似区块链上“重放攻击”,使得转出账户的余额反复减少,目标账户的余额反复增多。

在比特币使用UTXO,能抵抗重放攻击问题。因为每笔UTXO被作为交易输入时,就把这个UTXO状态从“为使用”标记“已使用”,并产生新的UTXO,把“已使用”的UTXO从UTXO池挪出。再次执行一次原来的交易找不到输入指向未使用过的UTXO了,无法进行交易。

相信大家明白什么UTXO和它的作用了。如有问题欢迎交流哦。

你可能感兴趣的:(【区块链】UTXO是何方神圣呢?)