
区块链:有顺序的数据记录
区块链和存储涉及哪些技术概念,可以从记录组织、内容验证和数据访问三个层面理解。区块保存交易,区块头通过前一区块头的哈希建立关联。比特币开发文档介绍了这种链式结构,以及节点对区块独立验证的方式。
链式关联让历史改动能够被检测;共识规则决定节点接受哪些有效记录。比特币利用工作量证明,并在有效分支之间依据累计工作量选择链。因此,历史记录的保护需要哈希关联与共识机制共同发挥作用。
哈希与 Merkle 树:验证数据归属
密码学哈希把数据映射为固定长度的摘要,可用于校验内容。其安全性依赖难以找到碰撞等密码学性质,不能理解为数学上绝无碰撞,也不能将摘要还原成原始数据。
Merkle 树逐层汇总子节点的哈希,最终得到根哈希。比特币将交易的 Merkle 根写入区块头。验证者取得交易、相应的证明路径和可信的根,就能检查交易是否包含在该树中,无须为这项检查取得全部交易。
这种包含性证明的适用范围是数据归属。它本身不能证明交易符合全部规则,也不能保证保存原始数据的节点始终在线。
状态树:组织可更新的键值数据
以太坊开发文档介绍的 Merkle Patricia Trie,将按键路径查找的字典树、路径压缩和哈希校验结合起来。分支节点表示路径分叉,扩展节点压缩连续路径,叶节点保存路径末端的值;序列化则把节点转换为确定的字节表示。
这些概念分别处理不同问题:路径帮助定位数据,压缩减少冗余结构,确定性编码使哈希计算一致,根哈希为整棵树提供可验证的摘要。这类结构适合需要更新键值映射并提供验证证明的场景。
数据库与状态模型:实际保存什么
树是数据的逻辑组织形式,底层键值数据库承担节点数据的持久化。一次树查询可能沿路径访问多个数据库条目,因此,数据库的一次按键读取与树的一次完整查询并不等同。
状态模型决定系统需要追踪什么。比特币通过未花费交易输出,即 UTXO,判断哪些输出仍可被使用;以太坊的状态组织涉及账户及合约相关数据。历史交易记录与执行后得到的状态,也应分别理解。
常见问题:根哈希能代替存储吗
不能。根哈希可用于核验数据,却不包含足以恢复全部内容的信息。系统仍需保存原始记录、状态数据及生成证明所需的节点。
理解存储方案时,应分别确认数据是否被保留、能否被读取、内容能否校验,以及对应记录是否获得共识认可。这些能力相互配合,但任何一项都不能自动替代其他项。