关于数据裁剪相关的问题

在读 CITA 的数据裁剪文档时:

遇到几个问题:

  1. 目前 CITA 20.2.0 版本中是否支持对应快照功能?

  2. 被裁剪后的节点数据只包含区块头 (block_header);不包含 body,即没有交易相关内容。

    这句的意思是快照后,快照前的交易查询不到(如果只从快照后的节点查询),那对应的状态是否会变?比如快照前 Alice 100 token,Bob 0 token,然后发生一笔交易 Alice -> Bob 10 token,此时 Alice 90 token,Bob 10 Token。然后快照,则快照后的状态还是 Alice 90 token,Bob 10 Token 吗?

  3. 新加入节点数据同步:然后将快照恢复到另一个节点/本节点,就可以在较短时间内同步/恢复区块链数据。如果链上所有节点都做过快照,则会导致直接增加节点失败,增加节点后需要从快照数据恢复,新增节点才能成功运行。

    这句的意思是快照恢复需要连接全节点吗?还是仅仅只需要那两个文件: snapshot_chain.rlp 和 snapshot_executor.rlp 就能得到快照了?

  4. 我对快照的理解是类似对应节点重新起了一条新链,但是其创世区块里面的状态(账户,合约等)和创建快照时的状态相同,且链的配置也相同,只是无法查到状态怎么来的(无法查到交易)。我觉得这种快照不需要保存所有区块的区块头。不知道这样理解是否有误

1赞
  1. 不支持。只有1.0.0之前的版本,即0.2x的版本支持。
  2. 最新的世界状态不变,只是把历史数据裁掉。包括块的body和世界状态的历史。所以裁剪掉的高度,无法查询交易,无法在对应高度进行call操作,会返回错误。
  3. 不用连其他节点。使用snapshot工具,可以直接从快照文件把data目录恢复出来。
  4. 不是重新起一条链,就是把某个高度之后的数据单独导出来。保留区块头是为了可以从创世块开始验证后续块头的合法性。

好的,谢了

开源版v20 已经不支持 snapshot 工具了