
摘要把内容变化变得可比较
密码学哈希把输入数据映射为固定长度的摘要。相同输入按相同算法计算,会得到相同结果;输入改变后,摘要通常也会明显改变。比特币把这种关系用于区块结构,使记录之间存在可计算、可检查的联系。
可以自行做一个不涉及链上操作的小实验:对两段只有一个标点不同的文本计算摘要,再比较输出。这个实验展示的是数据一致性的检查方式。摘要不是原文的压缩包,也不意味着原文已经加密成只有指定读者能看的内容。
从交易摘要汇成一棵树
比特币的默克尔树从交易标识开始,按规定顺序两两组合并计算新的摘要,逐层收拢到一个根。这个根写入区块头。区块头又保存前一个区块头的哈希,于是区块内部的交易和区块之间的顺序都形成了关联。
画图理解时,只用四张编号卡片即可:底层放四个交易摘要,中层放两组组合结果,顶层放根。修改一张卡片后,沿着它到根的路径重新计算。你会看到需要更新的是这条路径,而不是凭肉眼逐条比对整份文字。
包含证明也有适用边界
默克尔路径能帮助核对某个交易摘要是否与给定的根相符,但还需要明确这个根来自哪个区块。一个看起来完整的数学计算,不能自动回答该区块是否属于你要查询的网络,也不能替代全部交易有效性检查。
阅读证明材料时,可连续追问三个问题:叶子代表什么数据,路径对应哪个根,根又由什么区块或规则约束。把问题写在证明旁边,能够避免把局部的包含关系扩大成对整个系统、现实事件或数据来源的全面保证。