AMA Protocol节点部署指南:从源码构建到systemd守护进程
【免费下载链接】node 项目地址: https://gitcode.com/GitHub_Trending/node95/node
AMA Protocol 节点部署其实比想象中简单:拿到源码、编译出 amadeusd 单文件二进制、再做一次系统调优并注册成 systemd 守护进程,就能让节点 7x24 小时稳定在线。这篇 AMA Protocol 节点部署指南 会带你走完全流程,即使是第一次接触区块链节点的新手,也能按步骤完成从源码构建到开机自启的全部配置。
AMA Protocol 节点是什么?
AMA Protocol 是一个面向 AI Agent(Agentics)的隐私 Layer 1 公链,采用基于矩阵乘法(MatMul)的有用工作量证明(UPoW)——矿工算力不再白耗电,而是在为 AI 推理贡献真实算力。它的核心协议参数如下:
| 参数 | 数值 |
|---|---|
| 出块时间 | 500ms |
| 每个 Epoch | 100,000 个区块 |
| 最大供应量 | 10 亿 AMA |
| 共识机制 | MatMul UPoW |
| 签名算法 | BLS12-381 |
| 智能合约 | WASM |
| 序列化 | VecPak |
节点程序 amadeusd 由 Elixir + Rust 混合编写(Rust 通过 rustler NIF 提供高性能密码学与存储能力),最终用 Bakeware 打包成单个可执行文件,部署起来非常干净。核心构建配置见 ex/mix.exs,运行期环境变量解析见 ex/config/runtime.exs。
部署前准备:环境要求
- 操作系统:Linux(官方测试环境为 Ubuntu 24.04 / Kernel 6.8)
- 内存:建议 16GB 起步(RocksDB + WASM 合约执行都比较吃内存)
- 磁盘:SSD,预留 200GB+ 用于区块数据与快照
- 网络:公网 IP(UDP 端口 36969 用于 P2P,HTTP 端口用于 RPC)
- 构建工具:podman 或 docker、bash
💡 节点数据默认存放在
~/.cache/amadeusd/,可用WORKFOLDER环境变量改到任意目录。
第一步:获取 AMA Protocol 节点源码
打开终端,克隆仓库:
git clone https://gitcode.com/GitHub_Trending/node95/node
cd node
仓库根目录的 README.md 记录了完整的构建与运行说明,DOCS.md 则是协议层面的总览文档(协议参数、网络端点、WASM 合约资源等),建议先花两分钟浏览一遍。
第二步:从源码构建 amadeusd 二进制
构建过程依赖 podman/docker 镜像,脚本会自动完成 Elixir、Rust、LLVM 等工具链的装配,你不需要手动安装任何语言环境。
- 先构建构建器镜像(请先安装 podman 或 docker):
podman build --tag erlang_builder -f build.Dockerfile
- 执行编译脚本:
./build.sh
脚本核心逻辑见 ex/build.sh:它会在容器内以 MIX_ENV=prod 模式执行 mix deps.get && mix release,最终把产物复制为当前目录下的 amadeusd,并打印 sha256 校验值。
编译成功后,当前目录会出现一个约几十 MB 的 amadeusd 单文件可执行程序——这就是我们要部署的节点本体。
第三步:运行前的系统优化
区块节点对 UDP 和文件描述符的要求远高于普通服务,直接跑容易丢包、断连。建议按下面三组配置逐一执行。
1. 调优 UDP 网络栈(1Gbps 网络参考值)
cat <<EOT > /etc/sysctl.conf
net.core.wmem_max = 268435456
net.core.rmem_default = 212992
net.core.rmem_max = 268435456
net.core.netdev_max_backlog = 300000
net.core.optmem_max = 16777216
net.ipv4.udp_mem = 3060432 4080578 6120864
# 普通网络环境:拦截伪造 UDP 包
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1
EOT
2. 放开文件描述符与线程限制
cat <<EOT > /etc/security/limits.conf
root hard nofile 1048576
root soft nofile 1048576
* hard nofile 1048576
* soft nofile 1048576
root hard nproc unlimited
root soft nproc unlimited
* hard nproc unlimited
* soft nproc unlimited
root hard memlock unlimited
root soft memlock unlimited
* hard memlock unlimited
* soft memlock unlimited
EOT
3. 调整 systemd 全局默认限制
cat <<EOT > /etc/systemd/system.conf
[Manager]
DefaultTasksMax=infinity
DefaultLimitNOFILE=infinity
DefaultLimitNPROC=infinity
DefaultLimitMEMLOCK=infinity
DefaultLimitLOCKS=infinity
EOT
cat <<EOT > /etc/systemd/user.conf
[Manager]
DefaultTasksMax=infinity
DefaultLimitNOFILE=infinity
DefaultLimitNPROC=infinity
DefaultLimitMEMLOCK=infinity
DefaultLimitLOCKS=infinity
EOT
改完后重启或执行 sysctl -p 生效。
第四步:快速启动节点(手动验证)
先用前台方式验证节点能否正常同步,再谈守护进程。把二进制放到工作目录并直接运行:
./amadeusd
如果只做数据同步、不参与出块,这样跑就够了;若要让节点参与 UPoW 出块(Computor),加上环境变量:
COMPUTOR=true ./amadeusd # 自动参与出块
COMPUTOR=trainer ./amadeusd # 出块并成为 validator
常用运行参数一览:
| 环境变量 | 默认值 | 作用 |
|---|---|---|
WORKFOLDER | ~/.cache/amadeusd/ | 数据目录 |
HTTP_PORT | 80 | HTTP/RPC 端口 |
UDP_PORT | 36969 | P2P UDP 端口 |
UDP_IPV4 | 0.0.0.0 | P2P 绑定地址 |
COMPUTOR | 未设置 | 设为 true/trainer 启用出块 |
AUTOUPDATE | 未设置 | 自动跟随官方版本更新 |
MAX_PEERS | 300 | 最大连接节点数 |
OFFLINE | 未设置 | 离线模式 |
⚠️ 需要监听 80/443 端口时,先执行
sudo sysctl -w net.ipv4.ip_unprivileged_port_start=80,否则非 root 用户会报权限错误。
第五步:配置 systemd 守护进程(开机自启)
手动跑节点最大的问题是:进程崩溃、服务器重启后不会自动恢复。注册成 systemd 服务即可完美解决。
创建服务文件:
cat <<EOT > /etc/systemd/system/amadeusd.service
[Unit]
Description=AmadeusD
After=network-online.target
[Service]
Type=forking
LimitNOFILE=1048576
KillMode=control-group
Restart=always
RestartSec=3
User=root
WorkingDirectory=/root/
Environment="AUTOUPDATE=true"
ExecStart=/usr/bin/screen -UdmS amadeusd bash -c './amadeusd'
[Install]
WantedBy=default.target
EOT
几个关键点解读:
Type=forking+screen:节点通过 screen 后台运行,方便随时用screen -rd amadeusd附着查看日志;Restart=always+RestartSec=3:进程异常退出后 3 秒自动拉起;Environment="AUTOUPDATE=true":开启自动更新,让节点始终跟随链版本,减少运维负担;LimitNOFILE=1048576:与服务级文件描述符上限对齐。
然后启用并启动:
systemctl enable amadeusd
systemctl start amadeusd
非 root 用户部署时,把
User改成你的用户名、WorkingDirectory改成你的家目录即可,例如User=ubuntu、WorkingDirectory=/home/ubuntu。
第六步:验证节点运行状态
systemctl status amadeusd # 查看服务状态
screen -rd amadeusd # 附着到节点控制台查看实时日志
tail -f ~/.cache/amadeusd/*.log # 或直接看日志文件
如果想让节点作为 validator 自动出块,在服务文件的 [Service] 段追加:
Environment="COMPUTOR=trainer"
然后 systemctl daemon-reload && systemctl restart amadeusd 生效。
常见问题排查
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
| 无法监听 80 端口 | 非 root 用户 + 未放开特权端口 | 执行 sysctl -w net.ipv4.ip_unprivileged_port_start=80 |
| 同步慢 / 大量 UDP 丢包 | 内核网络参数未调优 | 检查第三步的 sysctl 配置是否生效 |
| 服务反复重启 | 工作目录权限或磁盘不足 | 确认 WorkingDirectory 可写,df -h 检查磁盘 |
| 想本地搭测试网 | 需要 5 节点本地网络 | 参考 ex/localnet.sh 一键拉起 5 节点测试网 |
结语
至此,你已经完成了 AMA Protocol 节点从源码构建到 systemd 守护进程 的完整部署:build.sh 产出单文件 amadeusd,三步系统调优保证网络稳定性,再通过 systemd 实现崩溃自愈与开机自启。这套流程同样适用于后续升级:重新 git pull && ./build.sh 覆盖二进制后 systemctl restart amadeusd 即可。希望这份指南能帮你顺利跑起自己的 AMA 节点,早日加入 UPoW 网络 🚀
【免费下载链接】node 项目地址: https://gitcode.com/GitHub_Trending/node95/node
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



