ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Shardeum 如何用 network-account-compare 工具比对 mainnet、testnet 等环境的网络账户配置差异?

Shardeum 如何用 network-account-compare 工具比对 mainnet、testnet 等环境的网络账户配置差异? Shardeum 如何用 network-account-compare 工具比对 mainnet、testnet 等环境的网络账户配置差异【免费下载链接】shardeumShardeum is an EVM based autoscaling blockchain项目地址: https://gitcode.com/GitHub_Trending/sh/shardeum在 Shardeum 中部署或接入某个环境mainnet、testnet 等时需要确认该环境网络账户上的历史变更参数与本地仓库environments/目录下的环境配置文件是否一致。仓库自带的scripts/network-account-compare/目录提供了一个只读的 CLI 比对工具它会从指定环境的 archiver 拉取网络账户数据再与对应的环境配置文件逐项比对并以颜色区分匹配与不匹配项。完成本文后你可以对任一受支持环境执行一次比对并根据输出判断两边是否存在配置差异。工具比对的是什么内容在执行之前先明确比对的两侧数据来源便于理解输出结果网络侧工具请求 archiver 的GET ${archiverUrl}/get-network-account?hashfalse接口见 入口脚本取回网络账户中的listOfChanges各 cycle 的参数变更记录。本地侧工具读取仓库根目录下的environments/environment.config.json取其中server段作为比对基准例如 mainnet.config.json 的server段。各环境的 archiver 地址预定义在 config.ts当前值为mainnet:http://35.238.248.68:4000testnet:http://104.197.117.164:4000stagenet:http://34.57.177.170:4000devnetUs:http://35.227.45.34:4000devnetApac:http://35.243.187.134:4000local:http://localhost:4000比对是只读操作工具只发 HTTP 请求和读本地 JSON 文件不会修改任何配置也不会向网络写入数据。准备条件安装依赖并构建工具是一个独立的 TypeScript 子项目需要先安装依赖并编译出dist/产物cd scripts/network-account-compare # 安装依赖axios、commander 等见 package.json npm install # 编译 TypeScript 源码到 dist/ npm run buildpackage.json 中每个环境快捷命令都会先执行npm run build再运行node dist/index.js -e environment所以也可以跳过单独构建直接用下面的快捷命令。执行比对使用环境快捷命令在scripts/network-account-compare目录下按环境选择对应命令命令名与 package.json 的 scripts 定义一致# 与 mainnet 比对 npm run mainnet # 与 testnet 比对 npm run testnet # 与 stagenet 比对 npm run stagenet # 与 local 比对对应 archiver 为 http://localhost:4000需要本地有 archiver 在运行 npm run local # devnet 相关见下方限制说明 npm run devnet-us npm run devnet-apac工具文档README中的 Quick Start 将 devnet 命令写作npm run devnetUs/npm run devnetApac但package.json实际定义的脚本名是devnet-us和devnet-apac以package.json为准。手动指定环境与 archiver 地址除快捷命令外也可以直接运行编译产物并传参参数定义见 index.tsnode dist/index.js -e testnet可用的参数-e, --environment environment必填要比对的环境取值只能是mainnet、testnet、stagenet、devnetUs、devnetApac、local之一。传入其他值会报Error: Invalid environment name并退出。-u, --url url可选覆盖config.ts中预定义的 archiver 地址。例如要指向自己部署的 archiver可写成node dist/index.js -e testnet -u http://你的archiver地址:4000其中你的archiver地址需要读者替换为实际 IP 或域名。-v, --verbose可选输出额外的调试信息。注意-e传的是环境键名如devnetUs而 npm 脚本名是devnet-us两者拼法不同。如何判断比对结果工具输出带颜色编码含义如下来自 README 的 Output 章节绿色配置匹配红色不匹配或错误蓝色信息提示青色变更详情黄色警告比对过程会先打印Fetching network account data from archiverUrl...和Loading environment config...随后进入Comparing Network Account Changes with Environment Config段落。判定一致如果没有任何差异输出结尾为绿色的✓ No mismatches found between Network Account and Environment Config存在差异差异会按变更条目Change #n (Cycle x)分组列出每条差异前带红色✗标记并给出具体说明例如Value mismatch: 网络值 vs 本地值、Missing in network: key、Type mismatch: type vs type等形式具体文本由 index.ts 中compareNestedValues函数生成...为运行时实际填充的键名和值。看到这类输出时逐条对照差异中的 key 和两侧值即可定位是环境配置文件落后于网络变更还是网络侧参数与预期不符。另外比对逻辑对multisigKeys、devPublicKeys两个键做特殊处理按键的集合比较两侧是否互相缺失而普通键在一侧为undefined时会跳过比较。常见报错与限制执行过程中可能遇到三类错误均来自工具自身的错误处理逻辑Error fetching network account: message请求 archiver 失败地址不可达、网络不通等。此时确认预定义地址或-u提供的地址是否有效local环境则要求本地localhost:4000有 archiver 在运行。Error loading environment config: message读取environments/environment.config.json失败。仓库当前environments/目录下只有mainnet、testnet、stagenet、devnet、local五个配置文件因此用-e devnetUs或-e devnetApac会因找不到devnetUs.config.json/devnetApac.config.json而报错。若需要比对这两个 devnet 环境需要先在仓库中准备好对应的配置文件参见 environments/README.md 中对环境配置文件的说明。Error: Invalid environment name-e传入了不在支持列表中的环境名。如需更换某环境的 archiver 地址直接修改 src/config.ts 中对应的archiverUrl即可README 的 Configuration 章节也明确说明可以按需修改这些 URL改完重新npm run build后生效。与其他部署环节的衔接本工具只负责网络账户变更 vs 环境配置的一致性核对。若要检查 archiver 列表本身是否配置正确对比当前配置与网络上发现的所有 archiver仓库另有 configure-archiver.js 脚本支持check、set、add三种操作用法见 environments/README.md。两者可以配合使用先用 network-account-compare 确认参数差异再用 configure-archiver.js 处理 archiver 端点配置随后按 environments/README.md 中的方式设置LOAD_JSON_CONFIGS环境变量或使用scripts/run-env.sh启动对应环境的节点。【免费下载链接】shardeumShardeum is an EVM based autoscaling blockchain项目地址: https://gitcode.com/GitHub_Trending/sh/shardeum创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进