题目
一个「资产快照」功能要读取某个历史区块上的余额与存储。开发环境一切正常,上线后对较早区块的查询开始报错,部分用户还看到空数据。请说明原因,并给出可行的架构选择。
考察目标
- 全节点与 archive 节点在状态保留上的差异。
- 历史状态查询的失败表现与常见触发点。
- 成本、降级与替代方案的设计。
说明全节点与 archive 节点的状态保留差异、历史读取的失败表现,以及成本与替代方案。
一个「资产快照」功能要读取某个历史区块上的余额与存储。开发环境一切正常,上线后对较早区块的查询开始报错,部分用户还看到空数据。请说明原因,并给出可行的架构选择。
节点对历史状态的保留程度不同:常规全节点会对旧状态做裁剪,archive 节点保留历史状态。对较早区块执行依赖当时状态的读取(如带区块参数的余额、存储或 eth_call)时,所用节点缺少对应状态会让请求失败。历史读取需要明确选择具备对应能力的端点,并设计成本与降级方案。实现差异与工程取舍见深入回答。
发现这道题有问题? 反馈此题