
先区分“物理结构”的讨论范围
“区块链的物理结构”容易把几类问题混在一起:区块内部放什么,属于数据组织;哪些计算机交换数据,属于网络部署;数据如何保存在磁盘上,属于本地存储。阅读相关术语时,应先判断它描述的是哪一层。
链式关系并不表示计算机在现实中首尾连接,也不意味着磁盘文件必须按照一条链连续排列。理解结构图时,要分清图中的连线表示数据引用,还是节点之间的通信。
区块、区块头与默克尔根
比特币区块包含区块头和交易数据。区块头记录前一区块头的哈希及交易的默克尔根;交易标识经过逐层配对哈希,形成这个根。区块高度表示位置,但分叉中的不同区块可以拥有相同高度。
这些概念解决不同问题:交易数据承载记录,默克尔根把交易集合与区块头关联,前块哈希建立区块之间的引用关系。高度适合说明位置,不能单独承担唯一识别区块的作用。哈希也不是存放原文的压缩包,不能从中直接还原交易。
节点是运行实例,客户端是软件
以太坊节点运行客户端软件并连接其他节点。执行客户端处理交易执行与状态,共识客户端处理共识相关工作;验证者软件承担额外的验证者职责。全节点、归档节点和轻节点,则体现验证方式与数据保留方式的区别。
因此,“客户端”回答运行什么软件,“节点”回答哪个实例参与网络,“验证者”回答承担什么角色。不能把三者当作同义词,也不能仅凭一台机器运行了节点,就认定它承担出块职责。
存储完整性与验证能力如何区分
判断节点类型时,应分别问:它自行验证哪些数据,长期保留哪些数据,查询时还需要谁提供信息。能够验证区块,并不自动意味着本地保存了所有历史状态。
历史交易记录与历史状态也有区别:前者描述发生过什么,后者描述某个时点的结果。归档需求通常关心历史状态查询;轻量验证则需要明确证明能验证什么,不能把某条记录的包含证明理解为对全部规则的完整检查。
适用条件与常见误解
上述区块结构以比特币为例,客户端分工以以太坊为例。两者可以帮助建立术语框架,但具体字段、共识机制和存储策略不能直接互套。
“链式连接是否让数据绝对无法修改?”哈希关联使修改能够被检测,历史记录的保护还依赖验证规则与共识机制。“所有节点是否始终保存相同内容?”应区分对有效链的共识与本地保留数据的范围,两者不是同一个问题。