一个比特币区块里可能装着几千笔交易,但区块头只有 80 字节。只用这么一小段数据,就能“锁住”区块里的每一笔交易,靠的就是默克尔树。

每个 $BTC 区块的区块头里都存着一个默克尔根,对应这个区块里的全部交易。目前 82,509.28(24h +0.89%)。

【一棵怎样的树】

默克尔树是一种把大量数据两两哈希、逐层往上合并的树形结构。最底层是每笔交易的哈希;相邻的两个哈希拼在一起再算一次哈希,得到上一层;一直往上合并,最后只剩一个哈希,叫默克尔根。

这种结构以密码学家拉尔夫·默克尔(Ralph Merkle)的名字命名,在上世纪 70 年代末就已提出,比区块链早得多。

【为什么改不动】

比特币的区块头里记着默克尔根。区块里任何一笔交易被改动,它的哈希就会变,变化一路往上传到默克尔根,区块哈希也跟着变,后面的区块就都对不上了。

所以只要盯住区块头里这一个哈希,就等于盯住了区块里的全部交易。

【轻钱包怎么验证交易】

要证明某笔交易在某个区块里,不需要整个区块,只需要从这笔交易到默克尔根路径上的少量哈希。交易数量翻倍,需要的哈希只多一个,几千笔交易的区块,十几个哈希就够了。

比特币白皮书第 8 节描述的简化支付验证(SPV)就是这样工作的:轻客户端只保存区块头,再向节点要一条默克尔路径,就能确认交易已经被打包。

【储备金证明里的应用】

交易所的储备金证明也用到了默克尔树:平台把所有用户的余额做成一棵默克尔树,公布根哈希;每个用户拿到属于自己的路径,就能自己验证余额有没有被计入,而不用公开其他人的明细。

【小结】

默克尔树的思路很简单:用一个短短的根哈希,代表一大堆数据。正是这个设计,让手机钱包、储备金证明这些应用变得可行。刚开始的时候总觉得会看 K 线就够了,后来才发现规则才算入门课。任何回报背后都伴随着相应的风险,多看清最坏的情况。

有收获的话收藏起来,以后翻出来看。

随手记录,买卖请自行决定。