
区块与哈希链接
区块链将交易组织进区块,并通过前一区块的哈希引用连接历史。比特币开发者指南介绍了这种结构,以及节点独立验证区块、通过工作量证明提高改写历史成本的机制。
哈希把数据映射为固定长度的摘要,可用于检查内容是否变化。它不具备从摘要还原完整数据的能力,因此保存哈希不能替代保存原始内容。历史记录的保护还依赖验证规则与共识机制,不能仅归因于哈希链接。

Merkle树与包含证明
Merkle树将多项数据的哈希逐层汇总为一个根。验证某项数据时,可以结合沿途必要的哈希重新计算根,检查它是否与已认可的根一致。

这种证明适合核对数据是否属于某个集合,但有适用条件:作为比较基准的根必须可信。证明一笔交易被某区块收录,也不等于独立验证了该区块全部交易的合法性。
状态结构与路径检索
以太坊开发文档介绍的Merkle Patricia Trie将键值检索路径与哈希校验结合,并通过压缩路径减少不必要的层级。文档区分状态根、交易根和收据根,它们对应不同类别的数据。
交易记录描述发生的操作,状态则表示处理这些操作后的结果。理解储存原理时,需要分别考虑历史记录如何保留,以及某一状态下的数据如何查找和核验,不能把所有区块链都视为同一种账本结构。
序列化与底层数据库
序列化负责把结构化数据转换为规定的字节表示,使不同节点能够按一致规则解析和计算哈希。编码规则不一致,即使人看到的内容相似,也可能得到不同摘要。
树结构规定数据之间的逻辑关系,底层数据库负责实际保存和读取。一次沿树路径进行的查询,可能需要多次数据库访问。因此,证明结构与物理储存是相关但不同的两个层面。
常见问题与适用边界
多个节点保存记录,就能自动保持一致吗?还需要共同的验证规则,以及出现竞争分支时的选择机制。比特币以累计工作量比较有效分支,这一方式不能直接套用于所有区块链。
根哈希相同是否绝对保证数据相同?实际验证依赖所用哈希函数的抗碰撞等安全性质,不宜表述为数学上的绝对不可能碰撞。能核验数据也不代表一定能取得数据:完整性证明和数据可获取性需要分别考虑。