Wax技术指南第二期:如何创建/使用WAX快照
原文:EOSphere (Ross Dold) 翻译:WAX Eastern (NFT Gamer)
在之前的“技术指南”文章中,您学习了如何构建 WAX 节点并将其同步到公共 WAX 测试网。您会注意到,同步到一个已经运行了数百万个区块的区块链可能需要相当长的时间。幸运的是,可以通过使用链状态数据库的现有有效快照来加快同步。
在第二期中,将展示如何使用快照以及如何自己创建快照。
如何使用 WAX 快照
通过使用快照文件重新创建有效的链状态数据库,可以使用有效的快照将 WAX nodeos 进程同步到启动时所需的块。
这避免了从区块#1一次构建一个区块的状态数据库的需要,这需要时间来赶上数百万或更多的链头区块。
解释
nodeos运行需要链状态数据库shared_memory.bin,它是一个内存映射文件,包含与每个区块关联的状态,包括智能合约数据、账户详细信息和延迟交易。
但是有一个警告。根据您需要节点的功能,例如将其作为 P2P 种子节点或功能齐全的 API 节点运行,您还需要来自区块#1的相关完整blocks.log才能提供“完整”链。
还应该提到的是,现在贬值的 V1 History(V1历史)功能不会保留在快照中,需要完整重播。
可以使用当前快照文件在没有任何blocks.log的情况下运行 nodeos,但该节点不会被视为“完整”节点,通常仅用于查询当前链信息和推送操作。
理想情况下,快照应与包含更高头块编号的相关blocks.log一起使用。所以快照中的较低块是您启动 nodeos 时,blocks.log 中的较高块。
常见场景
快照最常见的用途是从错误停止的节点中恢复。比如电源故障、内存不足、进程终止等。
nodeos 需要正确地退出,否则状态数据库可能会损坏并显示这个错误:
“Database dirty flag set (likely due to unclean shutdown): replay required”
定位快照
首先,您需要从可信来源获取有效的快照文件。WAX Guilds 提供了很多 WAX 快照服务,包括 EOSphere,但并不是所有的都提供测试网快照,因此您可能需要自己找找。
EOS Nation bp.json Validator 有一个非常方便的快照服务列表,如下所示。
公会发布的快照服务
用法
使用之前的 WAX 技术指南中的示例nodeos构建,所有相关文件都位于 ~/waxdata 中。
下载并取消存档所需的快照文件:
> sudo apt install zstd
> cd ~/waxdata/snapshots
> wget http://snapshots.eosphere.io/snapshots/wax/snapshot.bin.zst
> unzstd snapshot.bin.zst
删除现有的(如果有的话)状态数据库和可逆块:
> rm -r ~/waxdata/state
> rm -r ~/waxdata/blocks/reversible
从下载的快照启动 nodeos(注意未指定 genesis.json):
> cd ~/wax-leap/build/programs/nodeos
> ./nodeos --data-dir ~/waxdata --config-dir ~/waxdata --snapshot ~/waxdata/snapshots/snapshot.bin
nodeos 现在将从快照开始,并尝试从使用的快照文件中捕获的头块同步到活动链。blocks.log 也将从快照块号开始继续,这就是为什么确保快照中的较低块是blocks.log 中的较高块很重要,这样可以避免间隙。
生成快照
使用快照最安全的方法是创建和使用您自己的快照。甚至可以为 WAX 生态系统的其他部分提供快照文件托管服务。
nodoes 需要一个配置为启用快照生成的生产者的api插件。将以下内容添加到 config.ini 的末尾:
plugin = eosio::producer_api_plugin
警告:公开公开 producer_api_plugin 存在安全风险并可能被利用,用于创建快照的节点不应被公开查询。
使用以下语法在本地生成快照,快照文件将默认保存到snapshots文件夹:
> curl -X POST http://127.0.0.1:8888/v1/producer/create_snapshot
在 WAX 技术指南的下一期中,将讲解查询您的 WAX 测试网节点、加强安全性以及注册为测试网公会以生产区块。
Play and Own 将在2023年取代Play to Earn
了解更多,加入橘猫玩家公会:
Telegram:https://t.me/NFTGamerChina
Discord:https://discord.gg/NU82sXeTNs
阅读原文,获取详细信息