WAX技术指南第八期:使用WAX软件文件和文件夹功能
原文:EOSphere (Ross Dold) 翻译:WAX Eastern (NFT Gamer)
我们之前的文章都介绍了配置和部署 WAX 软件,但我意识到我可能没有解释文件和文件夹功能。特别是节点类型和恢复或成功同步到链头块的一些细微差别。
第 8 期 WAX 技术指南将介绍 WAX 软件文件和文件夹的功能、由它们包含的数据确定的节点类型以及成功启动或恢复节点类型的细微差别。
使用 WAX 软件文件和文件夹
默认情况下,WAX 软件data-dir数据目录结构由 5 个目录组成:
/state
/blocks
/state-history
/snapshots
/protocol_features
和两个文件:
config.ini
genesis.json
/blocks文件夹包含 blocks.log 文件,它是存储在节点上的 WAX 链的所有不可变块的本地副本。它还包含一个 blocks.index 文件,它是 blocks.log 文件的索引,用于快速查找特定块号的位置。
/state-history包含 chain_state_history.log 、 chain_state_history.index 、 trace_history.log 和 trace_history.index 文件。这些文件是为捕获有关区块链状态(在本例中为 WAX 主网)的历史数据,并将这些数据存储在文件中,使它们以平面文件格式在外部可读。
/snapshots 文件夹是 nodeos 保存快照文件的默认位置。
/protocol_features 文件夹包含网络功能 .json 配置文件,用于启动新网络或对现有链进行重大功能更改。通常这不会被主网上的 WAX 公会使用。
config.ini 文件包含运行 nodeos 二进制文件时使用的 nodeos 配置。
genesis.json 文件包含 WAX 主网上每个新起始节点所需的初始状态参数。
节点类型
WAX 软件提供了 3 种节点类型:producer生产者/query查询/seed种子
producer(生产者):带有签名密钥的节点
Query(查询): 向公众提供 HTTP(S) API 的节点
Seed(种子):向公众提供P2P访问的节点
然而,功能级别也由节点包含的数据决定。例如:可能有一个查询节点没有完整的 blocks.index 用于块号查找,也可能有一个种子节点没有 blocks.log 中的所有块,也有可能一个历史状态数据库不是从网络的第一个块构建的。所有这些例子都意味着任何外部查询或连接到这个部分节点都不会呈现完整节点/区块链数据。
考虑到这一点,根据您的用例,您可以选择部分节点来实现您需要的功能,但是对于面向公众的查询和种子节点,最好确保您拥有完整的功能。
Full Node全节点 和 Full State-History 全状态历史节点的构建解释如下:
从块1 blocks.log 完成(需要从创世纪的对等点同步或从另一个节点复制) 完整的 blocks.index (将从现有的可用 blocks.log 中自动构建) 拥有以上两者将启用块查找并从块 1 提供完整的块对等服务。 当前的 shared_memory.bin(从创世纪同步时会自动创建,可以从另一个节点复制或者可以用快照恢复) 重要的是,当从快照中恢复时,使用来自比 blocks.log 中可用的块编号更低的块编号的快照
必须包含与完整节点相同的完整 blocks.log 、 blocks.index 和当前 shared_memory.bin。 然而,与 blocks.log 一样, /state-history 文件需要从块 1 构建和完成。 /state-history 文件可以从另一个节点复制,或者必须从块 1 的重放或重新同步中构建。 重要的是,当从快照中恢复时,使用来自较低块编号的快照,而不是 blocks.log 中可用的快照以及 /state-history 文件中可用的快照。
检查工具
WAX 软件有一个很好的管理 blocks.log 的工具,叫做 eosio-blocklog ,这个二进制文件是在构建时创建的。
执行以下操作以就货币或其他任何问题查询当前的blocks.log 块和 blocks.index :
> ./eosio-blocklog --blocks-dir /home/eosphere/datavolume/blocks --smoke-test
Smoke test of blocks.log and blocks.index in directory "/home/eosphere/datavolume/blocks"
info 2022-01-10T04:59:07.720 eosio-blo block_log.cpp:1081 trim_data ] block log version= 3
info 2022-01-10T04:59:07.724 eosio-blo block_log.cpp:1133 trim_data ] first block= 1
info 2022-01-10T04:59:07.724 eosio-blo block_log.cpp:1134 trim_data ] last block= 160670840
blocks.log and blocks.index agree on number of blocks
此外,如果由于节点的不正常关闭而导致任何损坏,则可以干净地修整当前 blocks.log 的末尾。
例如,您可以像下面这样修整到块 160670000:
./eosio-blocklog --blocks-dir /home/eosphere/datavolume/blocks --trim-blocklog --last 160670000
防失联,加入橘猫玩家公会:
Telegram:https://t.me/NFTGamerChina
Discord:https://discord.gg/NU82sXeTNs
阅读原文,获取详细信息