这件事我自己也是交过学费才记牢的。
一个比特币区块里可能装着几千笔交易,但区块头只有 80 字节。只用这么一小段数据,就能“锁住”区块里的每一笔交易,靠的就是默克尔树。
对应币种:$BTC 报 83,007.47(24h +0.47%)。
— 一棵怎样的树 —
默克尔树是一种把大量数据两两哈希、逐层往上合并的树形结构。最底层是每笔交易的哈希;相邻的两个哈希拼在一起再算一次哈希,得到上一层;一直往上合并,最后只剩一个哈希,叫默克尔根。
这种结构以密码学家拉尔夫·默克尔(Ralph Merkle)的名字命名,在上世纪 70 年代末就已提出,比区块链早得多。
— 为什么改不动 —
比特币的区块头里记着默克尔根。区块里任何一笔交易被改动,它的哈希就会变,变化一路往上传到默克尔根,区块哈希也跟着变,后面的区块就都对不上了。
所以只要盯住区块头里这一个哈希,就等于盯住了区块里的全部交易。
— 轻钱包怎么验证交易 —
要证明某笔交易在某个区块里,不需要整个区块,只需要从这笔交易到默克尔根路径上的少量哈希。交易数量翻倍,需要的哈希只多一个,几千笔交易的区块,十几个哈希就够了。
比特币白皮书第 8 节描述的简化支付验证(SPV)就是这样工作的:轻客户端只保存区块头,再向节点要一条默克尔路径,就能确认交易已经被打包。
— 储备金证明里的应用 —
交易所的储备金证明也用到了默克尔树:平台把所有用户的余额做成一棵默克尔树,公布根哈希;每个用户拿到属于自己的路径,就能自己验证余额有没有被计入,而不用公开其他人的明细。
— 小结 —
默克尔树的思路很简单:用一个短短的根哈希,代表一大堆数据。正是这个设计,让手机钱包、储备金证明这些应用变得可行。原理可以帮你避开一些坑,但代替不了仓位管理。
你是什么时候弄懂这个的?
随手记录,买卖请自行决定。