ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

AMA Protocol测试网自动部署指南:testnet模式、随机密钥与Trainer账户全解析

AMA Protocol测试网自动部署指南:testnet模式、随机密钥与Trainer账户全解析 AMA Protocol测试网自动部署指南testnet模式、随机密钥与Trainer账户全解析【免费下载链接】node项目地址: https://gitcode.com/GitHub_Trending/node95/nodeAMA Protocol 测试网自动部署是新手体验去中心化网络最快的方式只需设置TESTNET1环境变量启动节点系统会自动生成随机密钥、创建 Trainer 账户并完成创世块初始化全程无需手动配置。本文带你一步步理解 AMA Protocol 测试网的工作原理从 testnet 模式的启动开关、随机密钥的生成逻辑到 Trainer 账户在出块与治理中的作用并用现成脚本在本地一键拉起一个多节点测试网。一、什么是 AMA Protocol 的 testnet 模式testnet 模式是 AMA Protocol 节点的一个内置启动开关用于在不连接主网的情况下独立启动一条全新链。它最大的价值是让开发者可以在隔离环境里部署合约、测试转账、验证共识流程而不会污染主网数据。testnet 模式的核心环境变量环境变量作用默认值TESTNET是否开启测试网模式关闭TESTNET_SLEEP出块间隔毫秒模拟区块节奏350msWORKFOLDER数据目录存放密钥与数据库~/.cache/amadeusd/UDP_IPV4UDP 监听地址节点间通信用0.0.0.0HTTP_PORTHTTP API 端口80配置入口在 ex/config/runtime.exs当检测到TESTNET环境变量时节点启动流程会走testnet_node()分支如果本地还没有链数据就调用EntryGenesis.generate_testnet()生成测试网创世块并自动开启本地 HTTPS API 代理ex/lib/misc/testnet_https.ex。testnet 模式与普通模式的三个区别无需同步快照普通节点启动要先从 RPC 下载状态快照testnet 则直接本地造块。隔离网络测试网节点不会与主网种子节点通信链上数据完全独立。一键创世首次启动自动生成创世块并注册验证者零手工干预。二、随机密钥测试网的身份基石在 AMA Protocol 测试网中每个节点都需要一组 BLS 密钥对来签名出块。testnet 模式下这些密钥是完全随机生成的保证每个测试网互不冲突。随机密钥的生成逻辑在 ex/config/runtime.exs 中可以看到完整逻辑当工作目录下不存在seeds文件时节点会用:crypto.strong_rand_bytes(64)生成 64 字节加密安全随机数经 Base58 编码后写入seeds文件。启动时程序读取该文件逐行解码出私钥种子再通过BlsEx.get_public_key!推导出公钥并用BlsEx.sign!生成 PoP 证明。也就是说第一次启动自动生成之后每次启动复用同一把密钥除非手动删除seeds文件。为什么测试网需要随机密钥身份唯一每条测试网的验证者集合都是独一无二的避免与主网或其他测试网混淆。零配置上手新手不需要理解 BLS 密钥原理启动即用。安全隔离随机密钥与主网密钥完全无关测试操作不会影响真实资产。三、Trainer 账户测试网的核心角色在 AMA Protocol 中Trainer 是网络的训练者角色负责出块、签署创世块、提交 uPoW 工作量证明以及参与治理投票。测试网的 Trainer 账户正是由上面生成的第一把随机密钥派生而来。Trainer 账户的配置方式在 ex/config/runtime.exs 中keys列表的第一项会被自动指定为 Trainertrainer_pkTrainer 公钥节点的对外身份trainer_skTrainer 私钥种子用于签名trainer_popTrainer 的 PoP 证明节点启动时会在日志中直接打印 Trainer 公钥见 ex/lib/ex.ex方便你快速确认身份。Trainer 账户在创世块中的作用查看 ex/lib/consensus/models/entry_genesis.ex 的generate_testnet()函数可以看到创世块生成时 Trainer 要做的三件事签署创世块用 Trainer 私钥对创世区块头做 BLS 签名并用 VRF 生成随机数vr。注册验证者把测试网所有随机密钥的公钥写入bic:epoch:validators每个验证者获得约 1030 万 AMA 测试币余额。初始化难度写入bic:epoch:diff_bits初始难度 8和bic:epoch:segment_vr_hash作为后续共识的种子。此外ex/lib/upow.ex 中 Trainer 的公钥还被用于 uPoW 工作量证明的求解测试网中Testnet.slash_trainer/1见 ex/lib/misc/testnet.ex则演示了如何对恶意 Trainer 发起治理惩罚——这是了解共识治理机制的绝佳入口。四、一键自动部署localnet 脚本实战理解原理后实操才是重点。项目自带 ex/localnet.sh 一键脚本可以自动生成 10 个验证者、5 个节点的完整测试网并模拟不同节点的网络延迟0ms~200ms是测试共识、同步和根链切换的最佳沙盒。一键部署步骤克隆项目仓库将仓库克隆到本地仓库地址https://gitcode.com/GitHub_Trending/node95/node进入ex目录。安装依赖执行mix deps.get安装 Elixir 依赖。运行一键脚本./localnet.sh查看日志脚本会在/tmp/ama-localnet/下生成n0.log~n4.log五个节点分别监听127.0.0.11~127.0.0.15HTTP 端口8111~8115。停止网络执行pkill -f mix run --no-halt即可全部关闭。脚本背后做了什么localnet.sh的核心流程可以分为四步生成随机密钥与 ANR为 10 个验证者生成随机种子并为每个节点构建一个仅限本机回环地址的 ANR节点身份记录确保测试网永远不会连上主网。一次性创世启动用TESTNET1 TESTNET_SLEEP9999999启动生成节点产出创世数据库后立即退出。分发创世数据库把生成的db目录复制到 5 个节点的工作目录保证所有节点从同一高度起步。并行启动 5 节点每个节点持有 2 把验证者密钥节点 i 持有密钥 i 和 i5配合不同延迟参数模拟真实网络环境。五、测试网常用操作命令测试网跑起来之后ex/lib/misc/testnet.ex 提供了几个非常实用的辅助函数可以直接在iex交互环境中调用操作函数说明部署合约Testnet.deploy(wasm文件路径)用 Trainer 账户部署 WASM 合约转账Testnet.transfer(地址, 数量)转移 AMA 测试币查询状态Testnet.read(键名)直接读取链上 KV 状态调用合约Testnet.call(私钥, 合约, 函数, [参数])调用合约函数并等待上链模拟惩罚Testnet.slash_trainer(1)演示 Trainer 治理惩罚流程六、常见问题解答Q1启动时报 seeded testnet please restart node 怎么办这是正常提示当seeds文件中密钥数量不足 10 个时节点会自动补齐并提示重启。重启一次即可完成测试网初始化。Q2testnet 节点会连接到主网吗不会。localnet 脚本会用本机回环 ANR 替换内置的主网种子节点测试网与主网完全隔离。Q3想换一套全新的随机密钥怎么办删除工作目录下的seeds文件后重启节点系统会重新生成一套随机密钥从而得到一条全新的测试网。Q4TestnetHTTPSProxy 是做什么的当设置了HTTP_IPV4时testnet 节点会启动一个自签名证书的 HTTPS 代理443 端口方便本地 RPC 调用测试源码见 ex/lib/misc/testnet_https.ex。七、总结AMA Protocol 的 testnet 模式把搭一条链的复杂度降到了极致随机密钥自动生成、Trainer 账户自动指定、创世块一键创建。无论是想研究 uPoW 共识细节、部署 WASM 合约还是体验验证者治理流程一条本地测试网都是最安全、最自由的选择。动手运行localnet.sh让五节点测试网在几秒内跑起来吧【免费下载链接】node项目地址: https://gitcode.com/GitHub_Trending/node95/node创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表