AMA Protocol节点部署指南:从源码构建到systemd守护进程

AMA Protocol节点部署指南:从源码构建到systemd守护进程

【免费下载链接】node 【免费下载链接】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
每个 Epoch100,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 等工具链的装配,你不需要手动安装任何语言环境

  1. 先构建构建器镜像(请先安装 podman 或 docker):
podman build --tag erlang_builder -f build.Dockerfile
  1. 执行编译脚本:
./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_PORT80HTTP/RPC 端口
UDP_PORT36969P2P UDP 端口
UDP_IPV40.0.0.0P2P 绑定地址
COMPUTOR未设置设为 true/trainer 启用出块
AUTOUPDATE未设置自动跟随官方版本更新
MAX_PEERS300最大连接节点数
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=ubuntuWorkingDirectory=/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 【免费下载链接】node 项目地址: https://gitcode.com/GitHub_Trending/node95/node

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值