
数据组织与多节点一致性
区块链数据储存包含多个层次:数据库负责保存和读取内容,数据结构负责组织内容,密码学摘要帮助验证内容,共识规则约束节点接受哪些记录。把这些层次分开,才能理解为什么复制数据、验证数据和确认共同历史需要不同机制。
比特币开发者指南介绍了区块对前一区块头的哈希引用、交易的Merkle根,以及节点独立验证区块的过程。这些设计把交易记录连接起来,并配合工作量证明与链选择规则维护共同历史。
哈希与Merkle证明
哈希将数据映射为固定长度的摘要。在密码学安全假设成立时,内容变化通常会导致摘要变化,构造具有相同摘要的不同内容在计算上应当不可行。哈希用于完整性校验,不提供数据加密,也不能凭摘要还原全部内容。
Merkle树逐层汇总数据摘要,最终得到根哈希。验证者掌握可信的根后,可以利用目标数据及相应证明核对其是否属于这棵树,无须取得全部数据。证明成立只能说明数据与该根一致;交易是否符合规则,还需要其他验证。
前缀树、路径压缩与状态查询
以太坊开发文档描述的Merkle Patricia Trie结合了按键路径查找、路径压缩和哈希验证。分支节点表示路径分叉,扩展节点压缩连续路径,叶子节点保存路径末端的值;文档还区分了状态、交易和收据对应的根。
这种结构适合需要按键查询、更新并验证的数据集合。路径压缩减少无分叉部分的中间节点,但实际访问成本仍受路径长度、节点布局和底层数据库影响,不能仅凭结构名称断言固定查询速度。
序列化、内容寻址与底层数据库
序列化把结构化数据转换为确定的字节表示,使不同节点能按同一规则计算摘要。内容寻址则利用内容摘要引用数据。统一编码规则是可重复验证的基础,否则逻辑上相同的数据也可能形成不同的字节序列。
树结构与键值数据库承担不同职责:前者定义数据关系和证明路径,后者实际保存节点内容。沿树查找一个值可能需要多次数据库读取,因此一次逻辑查询不一定等于一次磁盘访问。
适用条件与常见问题
根哈希能否代替原始数据?不能。它提供校验依据,查询、执行或构造证明仍需相应内容。树节点也不同于网络节点:前者是数据结构元素,后者是运行协议的软件参与者。
数据是否绝对不可修改?本地副本可以被改写,但修改后的内容可能无法通过完整性与共识验证。历史记录抵抗改写的能力取决于具体协议及其安全条件,不能只归因于哈希链接。