主页 > imtoken冷钱包手机版 > 比特币的本质是UTXO

比特币的本质是UTXO

imtoken冷钱包手机版 2023-04-30 06:00:05

事实上,没有比特币。交易所或钱包中显示的比特币余额实际上是 UTXO。那么究竟什么是 UTXO? UTXO的全称是Unspent Transaction Output,翻译过来就是未花费的交易输出。

我似乎还是不明白。 . . . ?

一笔交易记录在比特币区块链账本上。每笔交易都有若干个交易输入(转账者),即资金来源,以及若干个交易输出。 (收款人),也就是资金的去向。每笔交易花费一个输入并产生一个输出,这个输出就是 UTXO。

一个简单的例子:

比特币账户查询

A地址下有1个btc比特币账户查询,A想转1个btc给B,那么账本上交易的输入是A,输出是B比特币账户查询,此时脚本会检查地址是否为A有1个btc(余额不够怎么转给你),就是在某个输出(UTXO)中,发现A确实有1个btc。因此,A 可以将 btc 作为输入传输给 B。此时,有一个价值 1 btc 的输出指向 B 的地址。在 B 进行下一次转账之前,这笔交易是 B 的未使用输出(UTXO)。当B随后要转移到C时,重复A转移到B的操作。

另一个更复杂的例子:

比特币账户查询

交易数据示例

比特币账户查询

上图是一个多输入TxIn多输出TxOut的交易。

比特币账户查询

第一行挖矿收益交易通常称为coinbase,它没有输入,所以TxIn的hash标记为00000...000,索引为ffff。

从第二行开始是一些转账交易,任何一个TxIn都会在区块链上唯一的追溯到这个区块之前的某个交易hash和index。

比特币账户查询

上图中,通过交易哈希和索引(从0开始),可以唯一确定一个未使用的交易输出,从而将每一个Tx In和一个之前的TxOut关联起来。 pkScript为加锁脚本,使用UTXO时需要对UTXO进行验证通过。

验证交易脚本是如何验证的?

总结

比特币不是基于账户的方案,而是 UTXO 方案。这与传统银行账户的思维完全不同。张三拥有10个btc。事实上,在目前的区块链账本中,几笔交易的输出(UTXO)的接收者都是张三的地址,这些 UXTO 的总数是 10。比特币钱包,所以钱包里显示的余额其实就是你的地址有多少btc输出指向。