美文网首页我爱编程区块链技术深度剖析
比特币区块头中的Merkle Root生成

比特币区块头中的Merkle Root生成

作者: bjgpdn | 来源:发表于2018-05-28 12:16 被阅读0次

      比特币区块链中,每个区块都有一个Merkle Tree,区块头中的Merkle Root(也称为Merkle树的根哈希值)是由区块体中所有交易的哈希值生成的:

      (1)如果一个区块仅有一个CoinBase交易(例如创世区块),这个CoinBase交易的哈希值Hash_Tx0就被用作Merkle树的根哈希值。

      (2)如果一个区块有两个交易:CoinBase交易和一个其它交易,那么就将CoinBase交易的哈希值Hash_Tx0和其它交易的哈希值Hash_Tx1,按照顺序拼接在一起,然后进行SHA256(SHA256(Hash_Tx0 | Hash_Tx1))计算,得到Merkle树的根哈希值。

      (3)如果一个区块有3个以上的交易,交易哈希值按顺序排列并配对。CoinBase交易的Hash_Tx0排在第一位,每一对拼接在一起,然后进行SHA256(SHA256(HashTxi | Hash_Txj))计算,形成第二排哈希排列。如果有奇数个交易哈希值,则最后一个交易哈希值复制自己组成一对,然后进行SHA256(SHA256())计算。如果第二排有超过2个以上的哈希值,则重复上一步的操作。直到只剩2个哈希值的时候,再拼接,最后进行SHA256(SHA256())计算,得到Merkle树的根哈希值。

      注:CoinBase交易为区块的第一个交易,由矿工创建,也被称作:创币交易(新挖出比特币的交易)。

    相关文章

      网友评论

        本文标题:比特币区块头中的Merkle Root生成

        本文链接:https://www.haomeiwen.com/subject/ilzwjftx.html