光电 · 技术与产业
文章库关于本站

产业观察

区块链 底层存储有哪些常见问题:容量、同步与历史查询

摘要

区块链底层存储需要区分区块历史、当前状态和历史状态。常见问题包括容量增长、同步与验证负担、裁剪后的查询限制、分叉引起的数据关联变化,以及轻节点对数据提供方的依赖。不同网络、客户端和节点模式的处理方式存在差异。

区块链价格波动率的科技主题配图

先区分存储的数据

讨论底层存储,首先要明确保存的是交易与区块记录,还是用于验证和执行的状态。以太坊节点文档介绍了执行客户端、共识客户端以及不同节点模式,并区分当前状态与历史状态的保存需求。比特币开发者指南则说明了区块、交易、未花费交易输出和分叉之间的关系。两种网络的数据模型不同,存储方案不能直接互套。

容量增长与历史查询的取舍

持续增加的区块记录会带来存储压力,但保存区块历史与保存每个历史时点的状态,是两种不同需求。能验证新区块,不代表能立即回答任意过去时点的账户状态查询。

区块链价格预警的科技主题配图

以太坊归档节点面向历史状态保留需求;采用裁剪策略的节点会减少部分数据的保留。适用场景应按查询范围区分:关注当前状态与频繁查询历史状态,对本地数据的要求不同。具体保留范围取决于客户端及配置,不能统一理解为所有全节点都保存全部历史状态。

区块链行情数据api的科技主题配图

同步不只是下载文件

节点同步还涉及数据验证和状态建立,因此网络下载完成不能单独证明节点已经能够提供完整服务。排查同步问题时,需要区分数据尚未取得、验证尚未完成和所需状态尚未建立。

裁剪也会影响后续查询:被删除的数据可能需要重新获取或借助已有数据重建。是否能够恢复、恢复需要什么条件,应结合节点模式判断,不能承诺所有历史查询都能即时完成。

分叉下的数据关联问题

比特币开发者指南指出,分叉时同一高度可能存在多个区块,因此高度不能作为全局唯一标识。需要唯一定位区块时,应使用区块哈希。

对依赖节点的索引服务而言,仅记录“某高度有某笔交易”可能不足以表达交易归属。还需要关联具体区块及其是否属于当前有效链;发生链重组时,相关查询结果也需要随之调整。这是存储设计需要考虑的数据一致性问题。

轻量存储与数据可获得性

轻节点减少本地保存的数据,并向其他节点请求所需内容。验证证明可以帮助判断返回内容是否符合相应链上承诺,但不能保证对方始终在线或能够提供所有历史数据。

常见误解是把“数据可以验证”理解成“数据一定可获取”。面向历史查询的服务,需要同时确认本地保留范围、外部数据可获得性与验证方式。上述问题属于通用设计考量,具体数据库性能和故障恢复能力仍需针对实际客户端评估。

← 返回全部文章

延伸阅读 · 相关栏目

光电技术产业观察研究资料资料与核验