术语表 · 网络

默克尔根

作者:CloudMineCrypto 团队更新于

定义

Merkle 根是一个哈希,用来汇总 Bitcoin 区块中的所有交易。生成时,先将交易两两配对并进行哈希,再将得到的哈希两两配对,直到只剩一个哈希。它会存储在区块头中。

属于比特币挖矿术语表,共收录 88 个通俗易懂的术语。

构建默克尔根

区块头中的默克尔根

17b1344a79d1

哈希 0+1

de80192c

哈希 2+3

b87d4f25

交易 0

94e5fe9e

交易 1

c752a4cd

交易 2

934d1415

交易 3

3f172c5d

点击任意一笔交易上的 Edit。它的哈希、配对哈希和根哈希都会改变。

在浏览器中运行真实的双重 SHA-256,为便于显示而缩短。真实区块对交易数据进行哈希,而不是对句子进行哈希。

Merkle 根是如何生成的?

先获取区块中每笔交易的 ID,它本身就是经过双重 SHA-256 哈希得到的。按顺序排列这些 ID,并把 coinbase 交易放在最前面。将相邻的哈希两两配对,再对每一对进行哈希。这样哈希数量就减半了。重复这个过程,直到只剩一个哈希:这就是 Merkle 根。

如果某一层的哈希数量为奇数,最后一个哈希会与自身配对。只要改动任意一笔交易,哪怕只改动 1 聪,它到顶层路径上的所有哈希都会改变,包括 Merkle 根。可以在上方的演示中试试。

为什么要用树,而不是一个大哈希?

证明。要证明某笔交易属于某个区块,只需要它所在分支上的哈希,不需要整个区块。一个包含约 4,000 笔交易的区块,只需要其中 12 个哈希,也就几百字节。中本聪的白皮书介绍了通过这种方式验证付款的轻量钱包,它们只保存区块头。

这对挖矿也很重要。矿工更改 coinbase 交易中的额外随机数时,Merkle 根也会改变,区块头就会得到一组新的随机数供矿工尝试。

来源

  1. 比特币:一种点对点的电子现金系统 · 中本聪,2008
  2. 区块链参考资料:区块头、默克尔树、目标值 · 比特币开发者文档
  3. Merkle 树 · Bitcoin Wiki

本页的实时数据来自 CloudMineCrypto API 和公开的链上数据,会定期更新,并在相应位置标明。仅供学习参考,不构成财务建议。

现在看看挖矿是怎么进行的。

Claim a free 8-hour mining plan in the CloudMineCrypto app and watch your estimated BTC tick up from live network data. Withdraw to your own wallet, Lightning included. Rewards are estimates.