区块链 · 数字资产知识 · 行业资讯
文章库关于本站

资料与核验

区块链剪裁技术相关术语如何理解:节点、状态与验证的区别

摘要

理解区块链剪裁,需要区分区块历史、当前状态和历史状态,并分别考察数据保留、验证能力与查询能力。本文结合比特币的全节点与SPV机制,以及以太坊的状态归档概念,解释常见术语及其适用边界。

玻璃文档与棱镜的原创资料研究概念插画

剪裁首先要明确数据对象

区块链语境中的“剪裁”通常也称“剪枝”,讨论的是节点如何减少本地保留的数据。理解这个词,首先要问删减的是区块、交易记录,还是旧版本状态。不同对象承担不同功能,不能只凭数据库变小就判断节点能力发生了什么变化。

可以把相关问题分成三层:节点保留哪些数据,节点如何验证数据,以及节点能够回答哪些历史查询。剪裁主要涉及存储安排,其影响需要结合后两层判断。

全节点、SPV与默克尔证明

比特币开发者指南用全节点与简化支付验证(SPV)说明验证方式的差异:全节点下载并验证区块;SPV主要利用区块头及默克尔分支,检查交易是否被某个区块收录。默克尔根是区块头中用于承诺交易集合的摘要,分支提供从交易到该根的验证路径。

交易被收录的证明,并不等于交易符合全部规则的证明。因此,SPV不能简单理解为“删掉一些数据的全节点”。讨论剪裁时,应把验证方式与数据保留策略分别说明。

当前状态、历史状态与归档节点

以太坊节点文档中的“状态”,包含账户余额、nonce、合约代码及存储等信息。当前状态服务于后续区块处理,历史状态则对应过去某个时点。归档节点保留历史状态,以便查询过去的账户和合约信息;剪除旧状态可以减轻存储负担,但会改变历史查询能力。

区块和交易记录描述变化过程,状态描述变化后的结果。保存过程记录,不代表已经保存每个历史结果;若所需历史记录完整,旧状态可以通过重放交易重建,但这需要额外计算。

布隆过滤器不等于剪裁机制

布隆过滤器是一种节省空间的概率型集合查询结构,可能把不属于集合的元素判为匹配。在相关SPV机制中,它用于筛选希望接收的交易数据。筛选网络传输内容与删除本地旧数据属于不同环节,不能把两者视为同一种技术,也不能把过滤效果当作完整有效性验证。

适用条件与常见问题

“不保留全部历史状态,还能处理新区块吗?”历史状态归档并非日常验证的必要条件,关键在于客户端保有所需的当前状态和验证数据。具体保留范围取决于客户端实现与配置。

“需要查询很久以前的合约状态怎么办?”频繁历史查询更适合具备相应归档能力的服务;通过重放恢复状态,则以计算开销换取较少的预先存储。判断剪裁方案是否适用,应明确历史查询需求、数据能否恢复,以及可接受的等待时间。

← 返回全部文章

延伸阅读 · 相关栏目

区块链基础技术原理数字资产知识资料与核验