什么是UTXO模型
Last updated
Last updated
比特币的账本系统和我们传统的“账户/余额”模型不同。为了更好地理解比特币的运作,我们需要了解它的UTXO(未消费的交易输出)模型。这个模型是比特币特有的一种记账方式。
UTXO模型全称是“未消费的交易输出”。它本质上是一种通过交易记录来管理资金的方式,而不是通过账户余额来管理。简单来说,UTXO模型记录的是每笔交易中的“输入”和“输出”,而不是账户中的余额。
交易输入(Input):这部分标识了资金的来源。
交易输出(Output):这部分标识了资金的去向。
每一笔交易都可以有多个输入和多个输出。我们可以把每一笔交易看作是用来“消费”前面交易的输出,同时产生新的输出,这些新的输出在未来可以被用作其他交易的输入。
交易A:假设有一个矿工节点X,它通过挖矿获得了15枚比特币的奖励。这15枚比特币最初就是一个未消费的交易输出(UTXO)。
接下来,节点X进行了一些交易:
交易B:节点X把自己拥有的5枚比特币转给了节点Y。这笔交易可以表示为:
输入:节点X的15枚比特币(来自挖矿的奖励)。
输出:节点Y获得了5枚比特币,节点X剩下10枚比特币作为找零。
在这个交易中,节点X消费了之前获得的15枚比特币(作为输入),产生了两个新的未消费的交易输出(UTXO):一个是节点Y的5枚比特币,另一个是节点X剩下的10枚比特币。
交易C:
后来,节点X和节点Y一起合资,各自拿出3枚比特币支付给节点Z。这笔交易可以表示为:
输入:节点X的10枚比特币中的3枚,节点Y的5枚比特币中的3枚(来自之前交易B)。
输出:节点Z获得了6枚比特币,节点X剩下7枚比特币作为找零,节点Y剩下2枚比特币作为找零,这些都是新产生的UTXO。
比特币系统中的每个“账户”可以视为对应着某个地址,比特币区块链不会直接跟踪每个地址的比特币余额,而是在区块链中存储交易数据的整个历史,比特币系统通过“交易池”跟踪区块链网络中所有UTXO的集合,而某个地址在某个时间点所具有的“余额”,是通过检查、求和与该地址相关的所有UTXO来计算。当使用UTXO时,它将从交易池中被删除,这将实时在计算余额时反映出来。