May 26

Aztec Testnet | Node

https://x.com/VOleksCrpt
https://x.com/VOleksCrpt
https://x.com/VOleksCrpt


Buying a Server

I chose VDSina hosting β€” been using it for a while:
πŸ”— https://www.vdsina.com/?partner=8evi8an5i1

Server Specifications:

  • RAM: 8–16 GB
  • CPU: 4–9 cores
  • Disk: 100+ GB SSD
  • OS: Ubuntu 20.04/22.04 (I'm using 20.04)

I selected the following:

Standard server / Pure OS Ubuntu 20.04 / Max Tariff

The cost is about $19–20/month. You can try the $0.33/day tariff, but I can't guarantee everything will run correctly.

Create the server, and while it's initializing, let's move to the next step.


Putty

For convenient server access, install Putty:
πŸ”— https://putty.org.ru/download


Connecting to Server

Return to the VDSina panel:
πŸ”— https://cp.vdsina.com/vds/list

Copy your server's IP address and paste it into Putty.

Click Open, then Accept if a window pops up.

In the VDSina panel, go to Access for your server and copy the password.

Back in Putty:

  • At login, type: root
  • Then paste the password with right-click and press Enter (the password won’t be displayed)

If successful, you’ll see a prompt like this:


Working with Putty / Node Installation

Paste and run each command one by one:

sudo apt-get update && sudo apt-get upgrade -y

Install packages:

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

Install Docker:

sudo apt update -y && sudo apt upgrade -y
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

sudo apt-get update
sudo apt-get install 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 update -y && sudo apt upgrade -y

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Test Docker
sudo docker run hello-world

sudo systemctl enable docker
sudo systemctl restart docker

If you see the Docker hello-world message, everything is working.


Aztec Installation

Run:

bash -i <(curl -s https://install.aztec.network)

When prompted β€” type y and press Enter

Then:

echo 'export PATH="$HOME/.aztec/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Check the installation:

aztec

You should see Aztec CLI details.


Start the Aztec Testnet

aztec-up alpha-testnet

Configure Custom RPCs

Register at:
πŸ”— https://www.ankr.com/rpc/?utm_referral=Dfj8Petg4Z

Top up your balance by $5–10.

Create a project in https://www.ankr.com/rpc/projects/ β€” choose Ethereum only.

Copy:

  • First link β†’ Ethereum Sepolia RPC
  • Second link β†’ Ethereum Sepolia Beacon RPC

Wallet Setup

Create an EVM wallet (MetaMask, Rabby, etc).
Save the private key and address.

Get Sepolia ETH from a faucet. If needed, bridge $1 via https://www.gas.zip:

  1. Select the network to bridge from
  2. Choose Ethereum Sepolia
  3. Enter $1
  4. Enter wallet address
  5. Send the transaction

Also save your server's IP from VDSina panel.


Final Setup

Run these commands:

ufw allow 22
ufw allow ssh
ufw enable

ufw allow 40400
ufw allow 8080

docker stop $(docker ps -q --filter "ancestor=aztecprotocol/aztec") && docker rm $(docker ps -a -q --filter "ancestor=aztecprotocol/aztec")

screen -ls | grep -i aztec | awk '{print $1}' | xargs -I {} screen -X -S {} quit

Create project directory:

mkdir aztec
cd aztec
nano .env

Paste and fill in (no spaces):

ETHEREUM_RPC_URL=RPC_URL
CONSENSUS_BEACON_URL=BEACON_URL
VALIDATOR_PRIVATE_KEY=0xYourPrivateKey
COINBASE=0xYourAddress
P2P_IP=Server_IP

Save with Ctrl+X, then Y, then Enter.


Create docker-compose file:

nano docker-compose.yml

Paste:

services:
  aztec-node:
    container_name: aztec-sequencer
    image: aztecprotocol/aztec:alpha-testnet
    restart: unless-stopped
    environment:
      ETHEREUM_HOSTS: ${ETHEREUM_RPC_URL}
      L1_CONSENSUS_HOST_URLS: ${CONSENSUS_BEACON_URL}
      DATA_DIRECTORY: /data
      VALIDATOR_PRIVATE_KEY: ${VALIDATOR_PRIVATE_KEY}
      COINBASE: ${COINBASE}
      P2P_IP: ${P2P_IP}
      LOG_LEVEL: debug
    entrypoint: >
      sh -c 'node --no-warnings /usr/src/yarn-project/aztec/dest/bin/index.js start --network alpha-testnet --node --archiver --sequencer'
    ports:
      - 40400:40400/tcp
      - 40400:40400/udp
      - 8080:8080
    volumes:
      - /root/.aztec/:/data

Save the file with Ctrl+X, then Y, then Enter


Launch node:

docker compose up -d

Check logs:

docker compose logs -fn 100

Check Last Synced Block:

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"

Discord Roles

Join Discord:
πŸ”— https://discord.com/invite/aztec

Go to:
πŸ”— https://discord.com/channels/1144692727120937080/1367196595866828982

Type in chat:

/operator chain-info

Compare the Proven block number with what you saw earlier when you Checked Last Synced Block:

Get your Peer ID:

sudo docker logs $(docker ps -q --filter ancestor=aztecprotocol/aztec:alpha-testnet | head -n 1) 2>&1 | grep -i "peerId" | grep -o '"peerId":"[^"]*"' | cut -d'"' -f4 | head -n 1

Go to: https://aztec.nethermind.io β€” enter your Peer ID.
Wait a few hours for stats to appear.


Get Operator Role

In Discord go to operators | start-here channel -
πŸ”— https://discord.com/channels/1144692727120937080/1367196595866828982

Run again:

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"

Save the number. Then run (BLOCK_NUMBER replace with number u got in previous cmd):

curl -s -X POST -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"node_getArchiveSiblingPath","params":["BLOCK_NUMBER","BLOCK_NUMBER"],"id":67}' \
http://localhost:8080 | jq -r ".result"

Use the output in Discord with /operator start, filling in:

  • address – your wallet
  • block-number – last block number
  • proof – large text from previous command

Also go to channel uninitiated:
πŸ”— https://discord.com/channels/1144692727120937080/1367348435459772467
Scroll to top and like the first message to get another role.


Registering as Validator

aztec add-l1-validator \
  --l1-rpc-urls RPC_URL \
  --private-key private-key \
  --attester your-wallet-address \
  --proposer-eoa your-wallet-address \
  --staking-asset-handler 0xF739D03e98e23A7B65940848aBA8921fF3bAc4b2 \
  --l1-chain-id 11155111

Replace with your own data (RPC, private key, your wallet address).

Currently, only 5 validators can be registered per day, so after running this command, you will most likely see the following error:

ERROR: cli Failed to send L1 transaction: 'ValidatorQuotaFilledUntil(1748296152)'

Replace the number with the one from your error message β€” this will show you the exact time when the quota resets, allowing you to try registering as a validator again.

date -d @1748296152

Then try again after that time.