主页 > 官网安卓版下载imtoken > 比特币架构Merkle树简述

比特币架构Merkle树简述

官网安卓版下载imtoken 2023-01-17 10:17:27

来自比特币维基

默克尔树

Merkle 树是由哈希值组成的二叉树。 比特币中的 Merkle 树使用双 SHA-256比特币系统架构,它是 SHA-256 哈希的 SHA-256 哈希。

当在树中形成一行时(树的根除外),如果该行当前总共有奇数个元素比特币系统架构,则复制末尾的这个双哈希以确保该行具有偶数个哈希。

比特币系统架构_比特币主连比特币连续的区别_比特币怎么比特币钱包

首先形成树的最下面一行,这里是区块中的交易排序,顺序按照交易的双SHA-256哈希的字节流内存排序(有点啰嗦,大体思路就是按照每笔交易的哈希值)排序)。

那么它上面一行的哈希值个数是当前行哈希值个数的一半。 每个条目都是树中对应的两个哈希值的 64 字节串联的双 SHA-256。

此过程递归重复,直到我们到达由单个双哈希组成的行。 这是树的 Merkle 根。

例如,想象一个包含三个事务 a、b 和 c 的块。 默克尔树是:

比特币主连比特币连续的区别_比特币系统架构_比特币怎么比特币钱包

dhash(a) = sha256(sha256(a))//双重哈希

//底部的行
d1 = dhash(a)
d2 = dhash(b)

比特币系统架构_比特币主连比特币连续的区别_比特币怎么比特币钱包

d3 = dhash(c) d4 = dhash(c) # a, b, c 是 3. 这是个奇数,所以再取一遍c的双哈希 //倒数第二行

比特币主连比特币连续的区别_比特币系统架构_比特币怎么比特币钱包

d5 = dhash(d1 concat d2) d6 = dhash(d3 concat d4) //树根

比特币怎么比特币钱包_比特币主连比特币连续的区别_比特币系统架构

d7 = dhash(d5 concat d6)

d7 是该区块中 3 笔交易的 Merkle 根。

注意:区块浏览器中显示的 Merkle 树中的哈希是小端(符号)。 对于某些实现和计算,这些字节需要在散列之前或之后进行反向操作。

附上地址:在线计算哈希