Merkle 根是如何生成的?
先获取区块中每笔交易的 ID,它本身就是经过双重 SHA-256 哈希得到的。按顺序排列这些 ID,并把 coinbase 交易放在最前面。将相邻的哈希两两配对,再对每一对进行哈希。这样哈希数量就减半了。重复这个过程,直到只剩一个哈希:这就是 Merkle 根。
如果某一层的哈希数量为奇数,最后一个哈希会与自身配对。只要改动任意一笔交易,哪怕只改动 1 聪,它到顶层路径上的所有哈希都会改变,包括 Merkle 根。可以在上方的演示中试试。
为什么要用树,而不是一个大哈希?
证明。要证明某笔交易属于某个区块,只需要它所在分支上的哈希,不需要整个区块。一个包含约 4,000 笔交易的区块,只需要其中 12 个哈希,也就几百字节。中本聪的白皮书介绍了通过这种方式验证付款的轻量钱包,它们只保存区块头。
这对挖矿也很重要。矿工更改 coinbase 交易中的额外随机数时,Merkle 根也会改变,区块头就会得到一组新的随机数供矿工尝试。
来源
- 比特币:一种点对点的电子现金系统 · 中本聪,2008
- 区块链参考资料:区块头、默克尔树、目标值 · 比特币开发者文档
- Merkle 树 · Bitcoin Wiki
本页的实时数据来自 CloudMineCrypto API 和公开的链上数据,会定期更新,并在相应位置标明。仅供学习参考,不构成财务建议。