UTXO模型

一、简介

UTXO全名是Unspent Transaction Outputs,相比于账户模型来说没那么直观。
       它是比特币交易生成及验证的一个核心概念。交易构成了一组链式结构,所有合法的比特币交易都可以追溯到前向一个或多个交易的输出,这些链条的源头都是挖矿奖励,末尾则是当前未花费的交易输出。
       比特币中并没有一个纪录所有帐户余额的帐本,要确定一个地址有多少余额,简单的说,就是要回顾这个地址所有的交易,并且找到所有发送给这个地址的比特币,再把他们全都加起来就是当前余额。

二、基于UTXO的交易

比特币交易遵守几个规则:

  1. 除了 coinbase交易之外,所有的资金来源都必须来自前面某一个或者几个交易的 UTXO,就像接水管一样,一个接一个,此出彼入,此入彼出,生生不息,钱就在交易之间流动起来了。
  2. 任何一笔交易的交易输入总量必须等于交易输出总量,等式两边必须配平。

交易的数据结构:

  1. 交易输出[amount : xxxxx , locking script:xxxxxxxx , metadata:xxxxxxx]

amount表示要转移的金额,locking script表示对满足条件的进行编码,为了使金额得以认出,metadata泛指其他所有需要使用的元数据。

  1. 交易输入[Tx hash : xxxxxxxxxx , output index : xxxxx , unlocking script:xxxxxxxx , metadata:xxxxxxx]

Tx hash表示交易的哈希,output index指明引用的交易从哪个UTXO中提取 ,unlocking script表示对引用UTXO的locking script进行解码,metadata泛指其他所有需要使用的元数据。

比特币中的一笔「交易」过程

假设Fred给了Alice 2个BTC,Ted给了Alice 3个BTC,我们把这两笔寄给Alice,总和为5的BTC称为Unspent Transaction Outputs:也就是说现在Alice拥有了两笔Unspent Transcation Outputs,可以当作他未来转钱给别人的input。如果现在Alice想要转5 BTC给Bob,他要将前面两笔总和刚好为5的UTXO当作这笔交易的输入。而矿工要验证的就是并没有其他交易在先前的区块当中,已经使用过这笔Unspent Output。如果同一笔输出已经被发送过,那它就不是Unspent了,这就是比特币预防Double Spending的方法。

上一篇:什么是浏览器跨域访问操作,js如何实现?


下一篇:零经验小白的独游历程——U3d学习经验与教程分享