系统要求
- Ubuntu Linux系统
- 至少2核CPU 8GB RAM和100GB存储空间 1M以上带宽
快速开始
准备一个全新的钱包,拷贝私钥。钱包地址准备后续使用
使用钱包地址在接水 Sepolia ETH
https://sepolia-faucet.pk910.de/
谷歌账号进行接水:https://cloud.google.com/application/web3/faucet
如果是腾讯云,



出现类似root开头 #号结尾时,复制粘贴命令 回车开始
使用以下命令下载并运行安装脚本:
#!/bin/bash
declare -A MSG
MSG[zh,install_option]="安装 Aztec 节点"
MSG[zh,run_option]="运行 Aztec 节点"
MSG[zh,status_option]="查看节点状态"
MSG[zh,exit_option]="退出"
MSG[zh,enter_choice]="请输入选项"
MSG[zh,installing_dependencies]="正在安装依赖项..."
MSG[zh,aztec_installed]="Aztec 节点已安装。"
MSG[zh,starting_node]="正在启动 Aztec 节点..."
MSG[zh,current_status]="节点当前状态:"
MSG[zh,status_installed]="已安装"
MSG[zh,status_not_installed]="未安装"
MSG[zh,status_running]="正在运行"
MSG[zh,status_not_running]="未运行"
MSG[zh,node_is]="Aztec 节点"
print_header() {
clear
echo "==============================="
echo " AZTEC 节点管理工具"
echo "==============================="
}
print_section() {
echo "\n========== $1 =========="
}
check_aztec_installed() {
[ -d "$HOME/aztec-packages" ]
}
install_aztec() {
print_section "1. 更新系统软件包"
sudo apt-get update && sudo apt-get upgrade -y
check_error "更新系统软件包失败"
# 2. 安装所需软件包
print_section "2. 安装依赖项"
sudo apt install curl iptables build-essential git wget lz4 jq make gcc nano automake autoconf tmux htop nvme-cli libgbm1 pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y
check_error "安装依赖项失败"
# 3. 安装 Docker
print_section "3. 安装 Docker"
# 移除冲突的软件包
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
sudo apt-get remove $pkg -y
done
# 添加 Docker 的官方 GPG 密钥
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 添加 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新并安装 Docker
sudo apt update -y && sudo apt upgrade -y
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
check_error "安装 Docker 失败"
# 测试 Docker 安装
echo "测试 Docker 安装..."
sudo docker run hello-world
check_error "Docker 测试失败"
# 启用 Docker 服务
sudo systemctl enable docker
sudo systemctl restart docker
check_error "启用 Docker 服务失败"
# 4. 安装 Aztec 工具
print_section "4. 安装 Aztec 工具"
echo "正在安装 Aztec 工具 (自动接受提示)..."
# 创建一个临时 expect 脚本来处理交互式提示
cat > /tmp/aztec_install.exp << 'EOF'
#!/usr/bin/expect -f
set timeout -1
spawn bash -i -c "curl -s https://install.aztec.network | bash -i"
expect "Do you wish to continue? (y/n)"
send "y\r"
expect "Building initial Docker image"
expect "Aztec is ready to use"
send_user "\nAztec 安装成功!\n"
exit 0
EOF
# 使 expect 脚本可执行
chmod +x /tmp/aztec_install.exp
# 检查是否安装了 expect,如果未安装则进行安装
if ! command -v expect &> /dev/null; then
echo "正在安装 'expect' 软件包以处理交互式提示..."
sudo apt-get install expect -y
check_error "安装 'expect' 软件包失败"
fi
# 运行 expect 脚本并等待其完成
echo "开始安装 Aztec。这可能需要几分钟时间..."
echo "请耐心等待 Docker 下载并构建 Aztec 镜像。"
echo ""
/tmp/aztec_install.exp
EXPECT_EXIT_CODE=$?
# 清理临时 expect 脚本
rm /tmp/aztec_install.exp
# 检查安装是否成功
if [ $EXPECT_EXIT_CODE -ne 0 ]; then
echo "⚠️ 警告: Aztec 安装可能未正确完成。"
echo "我们将继续设置,但如果需要,您可能需要再次运行安装程序。"
else
echo "✅ Aztec 安装成功!"
fi
# 正确处理 PATH 更新
print_section "设置 Aztec PATH"
echo "确保 Aztec 二进制文件在 PATH 中..."
# 添加到当前会话的 PATH
export PATH="$PATH:$HOME/.aztec/bin"
# 添加到配置文件以实现持久化
grep -qxF 'export PATH="$PATH:$HOME/.aztec/bin"' $HOME/.bash_profile || echo 'export PATH="$PATH:$HOME/.aztec/bin"' >> $HOME/.bash_profile
grep -qxF 'export PATH="$PATH:$HOME/.aztec/bin"' $HOME/.bashrc || echo 'export PATH="$PATH:$HOME/.aztec/bin"' >> $HOME/.bashrc
grep -qxF 'export PATH="$PATH:$HOME/.aztec/bin"' $HOME/.profile || echo 'export PATH="$PATH:$HOME/.aztec/bin"' >> $HOME/.profile
# 如果以 root 用户身份运行,则也添加到 root 用户的配置中
if [ "$(id -u)" -eq 0 ]; then
grep -qxF 'export PATH="$PATH:/root/.aztec/bin"' /root/.bash_profile || echo 'export PATH="$PATH:/root/.aztec/bin"' >> /root/.bash_profile
grep -qxF 'export PATH="$PATH:/root/.aztec/bin"' /root/.bashrc || echo 'export PATH="$PATH:/root/.aztec/bin"' >> /root/.bashrc
grep -qxF 'export PATH="$PATH:/root/.aztec/bin"' /root/.profile || echo 'export PATH="$PATH:/root/.aztec/bin"' >> /root/.profile
fi
# 如果 Aztec 目录尚不存在,则创建它
mkdir -p "$HOME/.aztec/bin" 2>/dev/null || true
# 根据用户确定正确的路径
if [ "$(id -u)" -eq 0 ]; then
AZTEC_BIN_PATH="/root/.aztec/bin/aztec"
AZTEC_UP_PATH="/root/.aztec/bin/aztec-up"
else
AZTEC_BIN_PATH="$HOME/.aztec/bin/aztec"
AZTEC_UP_PATH="$HOME/.aztec/bin/aztec-up"
fi
# 5. 更新 Aztec
print_section "5. 更新 Aztec"
# 在运行更新之前检查 aztec 是否存在
if [ -f "$AZTEC_BIN_PATH" ]; then
echo "在 $AZTEC_BIN_PATH 找到 Aztec 二进制文件"
# 检查 aztec-up 是否存在
if [ -f "$AZTEC_UP_PATH" ]; then
echo "正在运行 aztec-up latest..."
"$AZTEC_UP_PATH" latest
if [ $? -ne 0 ]; then
echo "⚠️ 警告: aztec-up 命令遇到错误。"
echo "这可能是暂时的。我们将继续其余的设置。"
else
echo "✅ Aztec 已成功更新到 latest"
fi
else
echo "⚠️ 警告: 在 $AZTEC_UP_PATH 未找到 aztec-up 命令"
echo "尝试直接使用 aztec 命令的替代方法..."
# 尝试直接使用 aztec 命令
"$AZTEC_BIN_PATH" up latest
if [ $? -ne 0 ]; then
echo "⚠️ 警告: 使用直接命令更新 Aztec 失败。"
echo "我们将继续其余的设置。"
echo "安装后您可能需要手动运行 'aztec-up latest'。"
else
echo "✅ Aztec 已成功更新到 latest"
fi
fi
else
echo "⚠️ 警告: 安装后在 $AZTEC_BIN_PATH 未找到 Aztec 二进制文件。"
echo "这可能是因为:"
echo "1. 安装仍在后台进行中"
echo "2. Aztec 安装出现问题"
echo ""
echo "我们将继续其余的设置。"
echo "您可能需要通过运行以下命令手动检查安装:"
echo " ls -la $HOME/.aztec/bin/"
echo "安装完成后,您可能需要手动运行 'aztec-up latest'。"
fi
# 6. 配置防火墙
print_section "6. 配置防火墙"
# 检查是否安装了 ufw
if ! command -v ufw &> /dev/null; then
echo "正在安装 ufw..."
sudo apt-get install ufw -y
check_error "安装 ufw 失败"
fi
# 配置防火墙
sudo ufw allow 22
sudo ufw allow ssh
sudo ufw allow 40400
sudo ufw allow 8080
# 如果防火墙尚未启用,则启用它
sudo ufw --force enable
check_error "配置防火墙失败"
print_section "安装完成!"
echo "以下内容已安装和配置:"
echo "- 系统软件包已更新"
echo "- 所有必需的依赖项已安装"
echo "- Docker 已安装并正在运行"
echo "- Aztec 工具已安装和更新"
echo "- 防火墙已配置必要的端口"
echo ""
echo "Aztec 二进制文件位置: $HOME/.aztec/bin/aztec"
echo "当前 Aztec 版本:"
$HOME/.aztec/bin/aztec --version
echo ""
echo "您现在可以再次运行脚本并选择选项 2 来启动您的节点。"
echo ""
read -p "按 Enter 键返回主菜单..."
main_menu
}
# 运行 Aztec 节点函数
run_aztec_node() {
print_section "运行 Aztec 节点"
# 检查 Aztec 是否已安装
if ! check_aztec_installed; then
echo "错误:Aztec未安装。请先安装Aztec。"
read -p "按Enter键返回主菜单..."
main_menu
return
fi
# 如果 screen 不可用,则进行安装
if ! command -v screen &> /dev/null; then
echo "正在安装screen..."
sudo apt-get install screen -y
check_error "安装 screen 失败"
fi
# 获取公网 IP 地址
echo "正在检测您的公共IP地址..."
PUBLIC_IP=$(curl -s ipv4.icanhazip.com)
check_error "检测公网 IP 地址失败"
echo "您的公共IP地址是:$PUBLIC_IP"
echo ""
echo "请提供以下信息以启动您的Aztec节点:"
echo "(随时按Ctrl+C取消)"
echo ""
read -p "输入您的L1 RPC URL: " RPC_URL
check_error "读取 RPC URL 失败"
read -p "输入您的L1共识主机URL(Beacon URL): " BEACON_URL
check_error "读取 Beacon URL 失败"
read -p "输入您的验证者私钥(以0x开头): " VALIDATOR_KEY
check_error "读取验证者私钥失败"
read -p "输入您的Coinbase地址(以0x开头): " COINBASE_ADDRESS
check_error "读取 Coinbase 地址失败"
# 确认信息
echo ""
echo "请确认您的节点配置:"
echo "L1 RPC URL: $RPC_URL"
echo "L1共识主机URL: $BEACON_URL"
echo "验证者私钥: ${VALIDATOR_KEY:0:6}...${VALIDATOR_KEY: -4}"
echo "Coinbase地址: $COINBASE_ADDRESS"
echo "公共IP: $PUBLIC_IP"
echo ""
echo "重要提示:请确保您的L1钱包中有足够的ETH用于后续操作。"
echo ""
read -p "这些信息正确吗?(y/n): " CONFIRM
if [[ "$CONFIRM" != "y" && "$CONFIRM" != "Y" ]]; then
echo "设置已取消。您可以重试。"
read -p "按Enter键返回主菜单..."
main_menu
return
fi
# 创建启动脚本
SCRIPT_PATH="$HOME/start-aztec-node.sh"
cat > $SCRIPT_PATH << EOL
#!/bin/bash
export PATH=\$PATH:\$HOME/.aztec/bin
aztec start --node --archiver --sequencer \\
--network alpha-testnet \\
--l1-rpc-urls $RPC_URL \\
--l1-consensus-host-urls $BEACON_URL \\
--sequencer.validatorPrivateKey $VALIDATOR_KEY \\
--sequencer.coinbase $COINBASE_ADDRESS \\
--p2p.p2pIp $PUBLIC_IP
EOL
chmod +x $SCRIPT_PATH
check_error "创建启动脚本失败"
# 在 screen 会话中启动节点
echo "正在screen会话中启动Aztec节点..."
screen -dmS aztec bash -c "$SCRIPT_PATH"
check_error "启动 screen 会话失败"
echo ""
echo "您的Aztec节点现在正在名为'aztec'的screen会话中运行"
echo ""
echo "要连接到screen会话并查看节点输出:"
echo " screen -r aztec"
echo ""
echo "要从screen会话分离(不停止节点):"
echo " 按Ctrl+A,然后按D"
echo ""
echo "如果您需要稍后重新启动节点,可以运行:"
echo " $SCRIPT_PATH"
echo ""
read -p "按Enter键返回主菜单..."
main_menu
}
check_status() {
print_section "${MSG[$LANGUAGE,current_status]}"
if check_aztec_installed; then
echo "${MSG[$LANGUAGE,node_is]} ${MSG[$LANGUAGE,status_installed]}"
else
echo "${MSG[$LANGUAGE,node_is]} ${MSG[$LANGUAGE,status_not_installed]}"
fi
if pgrep -f "aztec start" > /dev/null; then
echo "${MSG[$LANGUAGE,node_is]} ${MSG[$LANGUAGE,status_running]}"
else
echo "${MSG[$LANGUAGE,node_is]} ${MSG[$LANGUAGE,status_not_running]}"
fi
echo ""
read -p "按 Enter 键返回主菜单..."
main_menu
}
main_menu() {
print_header
echo "1) ${MSG[$LANGUAGE,install_option]}"
echo "2) ${MSG[$LANGUAGE,run_option]}"
echo "3) ${MSG[$LANGUAGE,status_option]}"
echo "4) ${MSG[$LANGUAGE,exit_option]}"
echo ""
read -p "${MSG[$LANGUAGE,enter_choice]}: " CHOICE
case $CHOICE in
1) install_aztec ;;
2) run_aztec_node ;;
3) check_status ;;
4) exit 0 ;;
*) echo "无效选择,请重试。" ; sleep 1 ; main_menu ;;
esac
}
main_menu
使用说明
脚本启动后会显示主菜单,提供以下选项:
- 安装Aztec节点 — 安装所有依赖、Docker、Aztec工具和配置防火墙
- 运行Aztec节点 — 在screen会话中启动节点
- 检查状态 — 显示安装和运行状态,及节点日志
- Change Language — 切换为英文界面
- 退出 — 退出脚本
安装步骤
- 运行脚本后 按 1 自动安装,等待不动后回车 按 2 ,按照说明输入信息。
运行节点
- 按提示输入以下信息:
- L1 RPC URL
- L1共识主机URL (Beacon URL)
参考自建RPC教程 https://www.danny.hk/aztec%e5%85%a8%e8%8a%82%e7%82%b9rpc-gethprysm/
- 钱包私钥 (以0x开头)
- 钱包地址 (以0x开头)
3. 确认信息后,节点将在后台screen会话中启动
重要提示:请向您的钱包地址转入Sepolia ETH测试代币(建议0.01ETH以上),以确保节点正常运行
节点管理
- 使用
screen -r aztec
查看节点输出 - 按
Ctrl+A
然后按D
可以从screen会话分离而不停止节点 - 使用选项 3 随时检查节点状态和最近日志
- 运行节点后,需要几分钟才能同步
DC角色
步骤1:获取最新证明的区块号:
curl -s -X POST -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"node_getL2Tips","params":[],"id":67}' \
http://localhost:8080 | jq -r ".result.proven.number"
- 将返回的数字替换下边的区块号
第 2 步:生成同步证明
curl -s -X POST -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"node_getArchiveSiblingPath","params":["区块号","区块号"],"id":67}' \
http://localhost:8080 | jq -r ".result"
- 运行后将会输出base64 字符串
第 3 步:在discord 的 operators| start-here 频道输入命令: /operator start
(官方DC机器人有问题,等待修复)
- 输入命令后,Discord 将显示如下选项字段:
address
:您的钱包地址(以太坊地址)block-number
:用于验证的区块号(步骤 1 中的区块号)proof
:您的同步证明(步骤 2 中的 base64 字符串)
然后将会得到 Apprentice
角色