This repository contains a step-by-step guide to deploy and operate an Aztec Prover Node on the public alpha-testnet.
A Prover continuously generates ZK proofs that attest to roll-up integrity — a core security pillar of the Aztec protocol.
Heads-up 💡
• This guide is intended for hobbyists and testnet enthusiasts. It is not an airdrop or rewards tutorial.
• Run the Prover and Sequencer with separate wallets and servers to avoid nonce issues and port conflicts.
Resource | Recommended | Notes |
---|---|---|
RAM | 128 GB + | Proof generation is memory intensive |
CPU | 32 cores + | More cores → faster proving |
Disk | 1 TB NVMe SSD + | High I/O throughput is essential |
Running below these specs will likely trigger
Error: Epoch proving failed: Proving cancelled
because the machine cannot finish proofs before the epoch deadline.
Purpose | Provider | Plan | Indicative Cost* |
---|---|---|---|
Bare-metal server | Hetzner | AX102 | €116/mo (+€44 setup) |
Ethereum RPC | Chainstack | Growth | $49/mo |
* Costs are approximate and subject to change.
sudo apt update && sudo apt upgrade -y
# Essentials
sudo apt install -y curl build-essential wget lz4 automake autoconf \
tmux htop pkg-config libssl-dev tar unzip
Remove any old Docker versions and install the official repository:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do
sudo apt-get remove -y "$pkg" || true
done
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
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
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
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable docker --now
bash -i <(curl -s https://install.aztec.network)
echo 'export PATH="$HOME/.aztec/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
aztec -V # should print version
sudo ufw allow ssh
sudo ufw allow 8080
sudo ufw allow 40400
sudo ufw allow 40400/udp
sudo ufw --force enable
mkdir ~/prover && cd ~/prover
Create .env
:
P2P_IP=<YOUR_PUBLIC_SERVER_IP>
ETHEREUM_HOSTS=<EXECUTION_RPC_ENDPOINT>
L1_CONSENSUS_HOST_URLS=<CONSENSUS_RPC_ENDPOINT>
PROVER_PUBLISHER_PRIVATE_KEY=0x<PRIVATE_KEY>
PROVER_ID=0x<YOUR_WALLET_ADDRESS>
name: aztec-prover
services:
prover-node:
image: aztecprotocol/aztec:latest
command:
- node
- --no-warnings
- /usr/src/yarn-project/aztec/dest/bin/index.js
- start
- --prover-node
- --archiver
- --network
- alpha-testnet
depends_on:
broker:
condition: service_started
environment:
P2P_ENABLED: "true"
DATA_DIRECTORY: /data-prover
P2P_IP: ${P2P_IP}
DATA_STORE_MAP_SIZE_KB: "134217728"
ETHEREUM_HOSTS: ${ETHEREUM_HOSTS}
L1_CONSENSUS_HOST_URLS: ${L1_CONSENSUS_HOST_URLS}
LOG_LEVEL: info
PROVER_BROKER_HOST: http://broker:8080
PROVER_PUBLISHER_PRIVATE_KEY: ${PROVER_PUBLISHER_PRIVATE_KEY}
ports:
- "8080:8080"
- "40400:40400"
- "40400:40400/udp"
volumes:
- ./data-prover:/data-prover
entrypoint: >
sh -c 'node --no-warnings /usr/src/yarn-project/aztec/dest/bin/index.js \
start --network alpha-testnet --archiver --prover-node'
agent:
image: aztecprotocol/aztec:latest
command:
- node
- --no-warnings
- /usr/src/yarn-project/aztec/dest/bin/index.js
- start
- --prover-agent
- --network
- alpha-testnet
entrypoint: >
sh -c 'node --no-warnings /usr/src/yarn-project/aztec/dest/bin/index.js \
start --network alpha-testnet --prover-agent'
environment:
PROVER_AGENT_COUNT: "3"
PROVER_AGENT_POLL_INTERVAL_MS: "10000"
PROVER_BROKER_HOST: http://broker:8080
PROVER_ID: ${PROVER_ID}
restart: unless-stopped
volumes:
- ./data-prover:/data-prover
broker:
image: aztecprotocol/aztec:latest
command:
- node
- --no-warnings
- /usr/src/yarn-project/aztec/dest/bin/index.js
- start
- --prover-broker
- --network
- alpha-testnet
environment:
DATA_DIRECTORY: /data-broker
LOG_LEVEL: info
ETHEREUM_HOSTS: ${ETHEREUM_HOSTS}
P2P_IP: ${P2P_IP}
volumes:
- ./data-broker:/data-broker
entrypoint: >
sh -c 'node --no-warnings /usr/src/yarn-project/aztec/dest/bin/index.js \
start --network alpha-testnet --prover-broker'
docker compose up -d
Check containers:
docker ps
# Follow general prover logs
docker logs -f aztec-prover-prover-node-1
# Filter for proven epochs
docker logs -f aztec-prover-prover-node-1 2>&1 | grep --line-buffered -E 'epoch proved|epoch'
# Filter for submitted proofs
docker logs -f aztec-prover-prover-node-1 2>&1 | grep --line-buffered -E 'Submitted'
You can also verify activity by pasting your PROVER_ID
on Sepolia Etherscan.
Task | Command |
---|---|
Restart | docker compose restart |
Tear down | docker compose down -v |
Pull requests are welcome! Feel free to open an issue for suggestions, questions, or improvements.
This guide is released under the terms of the MIT License. See LICENSE
for details.