Skip to content

Instantly share code, notes, and snippets.

@koxu1996
Last active May 5, 2025 12:59
Show Gist options
  • Save koxu1996/8edeb4daf2ceda4796b61af0b121383c to your computer and use it in GitHub Desktop.
Save koxu1996/8edeb4daf2ceda4796b61af0b121383c to your computer and use it in GitHub Desktop.
Aztec Testnet - Prover Setup 1

Aztec Testnet - Prover Setup 1

Configuration based on official Aztec docs for current version 0.85.0-alpha-testnet.3 - unmodified template stored for reference in docker-compose-docs-template.yaml.

Setting up

  1. Set container image:
export IMAGE="aztecprotocol/aztec:0.85.0-alpha-testnet.3"
  1. Set RPC endpoints:
export RPC_EL_URL="http://sepolia-nr09.phantom-rpc.com:8545"
export RPC_CL_URL="http://sepolia-nr09.phantom-rpc.com:5052"

NOTE: This is our private RPC endpoint - local Sepolia archive node with Reth/Ligthhouse - and it can be stopped anytime.

  1. Set prover private key and corresponding address:
export PROVER_PRIVATE_KEY="0xd9...redacted..."
export PROVER_ID="0xa6fa944323877ec5d0fefab0cd0bbf33df96fe58"
  1. Set directory for persistence:
mkdir /tmp/aztec-data
export DATA_DIR="/tmp/aztec-data"

Running

Take docker-compose.yaml from this gist, and run:

docker pull ${IMAGE}
docker compose up 2>&1 | tee aztec-prover-setup-1.log

Monitoring sync progress

You can see synching status by grepping logs:

cat ./aztec-prover-setup-1.log | grep "Synched" | tail -n 1

In the beggining it will be like:

prover-node-1  | [11:15:07.450] VERBOSE: p2p Synched to latest block 340

However, it should quickly reach the point where all blocks are synced:

prover-node-1  | [11:15:52.775] DEBUG: p2p Synched to proven block 17133
prover-node-1  | [11:15:52.776] DEBUG: p2p Synched to blocks at start

What's next?

We should see proving jobs to be executed, but there is no such thing. Instead prover node reported multiple error.

At this point you can stop containers and remove data directory.

Errors

I am sharing first 10k lines of log file:

There are 3 different types of errors that occured.

1. No blob bodies found - solved

prover-node-1  | [11:15:06.388] ERROR: archiver Error during sync: {
prover-node-1  |   error: NoBlobBodiesFoundError: No blob bodies found for block 17161
prover-node-1  |       at getBlockFromRollupTx (file:///usr/src/yarn-project/archiver/dest/archiver/data_retrieval.js:158:15)
prover-node-1  |       at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
prover-node-1  |       at async file:///usr/src/yarn-project/archiver/dest/archiver/data_retrieval.js:62:27
prover-node-1  | }

Does it mean there something is wrong with our RPC?

Update: RPC is okay; Aztec template uses wrong env L1_CONSENSUS_HOST_URL - it should be L1_CONSENSUS_HOST_URLS (notice "S" suffix).

2. Announce address not provided - solved

prover-node-1  | [11:15:52.777] ERROR: p2p:l2-block-stream Error processing block stream: Error: Announce address not provided.
prover-node-1  |     at LibP2PService.start (file:///usr/src/yarn-project/p2p/dest/services/libp2p/libp2p_service.js:215:19)
prover-node-1  |     at P2PClient.startServiceIfSynched (file:///usr/src/yarn-project/p2p/dest/client/p2p_client.js:542:39)
prover-node-1  |     at async P2PClient.handleProvenL2Blocks (file:///usr/src/yarn-project/p2p/dest/client/p2p_client.js:493:9)
prover-node-1  |     at async P2PClient.handleBlockStreamEvent (file:///usr/src/yarn-project/p2p/dest/client/p2p_client.js:127:21)
prover-node-1  |     at async TraceableL2BlockStream.emitEvent (file:///usr/src/yarn-project/stdlib/dest/block/l2_block_stream/l2_block_stream.js:167:9)
prover-node-1  |     at async TraceableL2BlockStream.work (file:///usr/src/yarn-project/stdlib/dest/block/l2_block_stream/l2_block_stream.js:113:17)
prover-node-1  |     at async poll (file:///usr/src/yarn-project/foundation/dest/promise/running-promise.js:48:21)

I guess some extra configuration is necessary...

Update: I was right; setting P2P_IP helped - it could be even 127.0.0.1.

3. Failed to find txs - solved

prover-node-1  | [11:15:52.805] WARN: prover-node:combined-prover-coordination Failed to find 88 txs from any source. Found 0 from p2p and 0 from nodes
prover-node-1  | [11:15:52.807] ERROR: prover-node Error handling epoch completed: Error: Could not find txs: 0x03c282d7f0837f95aa0765b439ccdcd542a5c7838e4492194cc415b4c4a3bcb3,0x0d3e402e64d24780a2c50121abf4bc0dbf0b1505bf5c5f12ab6bbeb97d6b4688,0x135c3a966c31940b3a1141516c36f5126ef3432295aa62ad998f7748e9a5e105,0x15341ef4b06dce23325bd0818fd126cf8953f6ed33473b94add32b5546af0876,0x1e09f3706d3a9a3e2576d6a8d9e2596b8ab87184451b10bb8e43aa3eb2d355d8,0x1ef0817e7b958a3def5202b9f97f1b253a653df91bf250b83cacc8e78e104012,0x2b0b71917ef3745aa25dfa267dd9f2a07941ded1252dcb39e256a2a192da3156,0x2c0249dfe5a93329296ae823a9c68126052b9c6f1183fd8a4db0b533ce9e39b3,0x06cf894903a99f78e3e67a95c0608f1926588a95e64914f092e4990b6f5373d8,0x0a772c6be4d1af115d72b3839e33cc1dbed51ef79a1a3ad1c555e70c4b4c8cbf,0x16b8e3874df2f1f6cc3114b40db5e95231162a3c6c7aeb085a116a164c78da0d,0x2079e21d9eeeb5004566f66b9dda14a94d8cf560d08056315d8e5ee059aec6a5,0x046bc5734f2edfc84ad3c2fcf46a836e7243995238c7e46c752b234743781a99,0x0c3c22bde97e1607e6020a6ff9b7475985353e761effb1119f1abfd3f6d252ef,0x1550c495b70c32a807b8811eaa1ebe8864d0367f80c22da08a917807aa9a2c08,0x2893c5f7cb746d682c9b67679a56dd59d0c3e3d101897c4c69a9691fad50ea36,0x26da998161382defdc860336e04d8a5c2306dec85109b17c8ec5f216a470b6d2,0x2950f62366d2687341e515cd333656e06a58c5991995c4a3eb1d81f372290c21,0x298707accfd566d773b3b85c49f3081f210ed8590b271c4cf622ed45bb35ce68,0x29b6f6495159accb610719a1fb2a78797777785693b641b297238e06a261903f,0x2a945f263128d41088ae2f5a85a953da39419f4961055b39db1b9b2add49eeba,0x2cb4f38684e53691fd4e38f666768d6e16a8ca429be74e50794c6e3973106c45,0x2d4da166b51ddbb33bb6931928bea4513e9501a6a55e0b86c12e2a7394d0e796,0x2e0070dad67c6249e1de6f283a9f1aad28fb4393c0487ef539c66243eb590123,0x004de843be312b2659c06f91daa332de843fa4218daa3d858ac1430e251ce4e4,0x099451bdda5d524716fcc6fe5efea88824a96869d1fbb32e64eecbbece9fdeb1,0x0cdbafb0dbc407ce66249cca7799e3a855c7e566a7731d8a055b5a3bf0f73227,0x0ef307bf587d2ee3921b22a7ad17ddfaacac932da4dd1a81c01b72545e6f440a,0x0f2d3362252e2138978e61dd5388044d23f16fdbc65e733c2c383a0e380ca4f5,0x1950ca1e4085dcfca4243524719f235f53b9d1d71e666b9f27a0c725a58ba527,0x1e1c83c8cc2fffb2ddafddac5b2d81f2f3588404f60f49f3ca2ee43be0b9d446,0x20adb2f1f4536c26e555a0fcbc77c52a7d76f084cf319303e3f6a769ec502bb7,0x22e275226f1fe1d23256776ad522770c7bb0d3cc7e1cbea509b38fd82feefe5b,0x2633c5717cc356b4047f0fe168c830878082d4b024a1c7eb86cd9909975f74f7,0x263cf1896fba1a451052933bd71e86f12bac41245a24398e7067ff3203850f11,0x3039617451a739758adc2684afa44a1cee90cac8a0d377dbc6ce2ca702a6bed5,0x0093c49c0fbf7d1cb00663c8d1eb59cc63a3294a449fb21d4eb1bc826ebe83a7,0x0fbfc2ac2d03cd8795ac5ca88270f011f9358561e907c5e2c0e7055cb60fc247,0x11416c65ecab2290f22703911223b9fc31fc7903bae7d1e16e9a17c31be6de0a,0x11c33b6d84b43c547a5fdaaf755e3cbb9ecc1e4c10041a6fcf7a08c3d08088f9,0x16956a0b2d3dce628eaa562fe3e936ce1613d90eaff6febead2a0af812d76d45,0x19c0dac61f8feea9f6db35f48f04e68353a251cc03bc19f05b0c46b523094ca4,0x1a47899744c530fe3021da2de1b2ce1dabcc5f09d9158ee1e77c6f6b00ea79f0,0x1d4fc40f59d70ad516432f1907050cc28cef636afb0baffb621a0aadf37d4a04,0x02da2f0acdfeec92e58a909c376f788aac7df306608f901067541831ac170cf3,0x130a39a4c88e3be5a1489f1157a24f262f508d6308bcc3d68d29984d1aac63aa,0x1768e7478039d730fb9dc2a649303c8873234ddce31f5da8e8bc664cede08f77,0x1c821ecad0aa6a472d11d7b03a4307a57204a8fe32a93eed9f08fc6b5f4b8825,0x0d737c301e308a3395766e9a73cddf5e304028aaf6fc2721c9e5a7d10a4143fd,0x242bf03272ae4cfb531c4a9fe535819f77d918fe8aa2e54e1520bb90142d22d2,0x277ee3af6beeeae0357110b4a32ef5b7785fb12921681cb64be4782d6cb93bcc,0x2a7f03f3b8fdad67b2fec0994215f22a115b44fb0acc23f690d46bc1fb2ca094,0x0e62ee49184f3cfa0a859fdfb46b42fce924bd53cf2466fc162d295c031738e2,0x1142c53b70949749b7a706838769545afe2815552ea5709532890ecaf4a19d80,0x11f96b1741dfa5ca58db5b052419e6bafbbef0624f6a42547e09e343ede95e69,0x2a88ef7c695b7d118b3f24bf4324c0c8371703931752881ed536adb945338ef0,0x2ab071cc53a02fbbd73be93efd903d32a39049b164cb1698b94f68fbb15b51fe,0x2bea48f5a0ed85762ed04eb519cf8a3b4de73de9fe2a4c00632dfe806c44cc8f,0x2e2dfa51489bcfa099499e4e2849e8fbef4ac7e223cfd1b183a490e4854bf47e,0x30128d136d4e9378ed4958ce18a98184b87629ea0988ca16fbb4a587a9eefa42,0x064ca7f231e834497e29d6e6b0461033b1f10f5d3ac9cc4130a396beefefcd03,0x0e1d86226b4cc08f9bb427705c9e7f967a945a17571dd33cf48639fe17fdfded,0x1283ea836f2449f785935b4131e94af03027276eca0c1eb708e341da57a55e9d,0x1641a527ed8ec7bb3e5529b9c653857aa96a26a2ac4fbdf08754d4b7b9161a7b,0x04f16ac31d5f5b98480b39dbbf10c2727f5808d654efc250e9b276b78db81115,0x05e9cf30d955bac642100e61446ef8df017744983a0e2702dce8d4e8546e1337,0x07e70423a2fbd698236ef0123e9018392a2e2718681b858dea2fa4f2a66c6ff7,0x1bf8602418b8f76d33805b4dbb0c2bf053bdaa362135df56bde15d9e9da586eb,0x091416dc1b63afcf4e7fa72b7c15b9b976f2a9207bd38049606134b5add0f123,0x11f797136708c1252afbb366d4cb51fbe9b1ee52b67ceaf63735e43df506a732,0x1e33644ba1909d359b93acf6f8f58d5e3f6b5bf9e056eda0d0e245978f224bbf,0x21729149b28c6163c93dc5a6f859b5eb5b7b538ff5b24844dad6aa0ff2430fca,0x220c67bdcbd0936b25d9ce37b216e44c9833be28b6d847a5327a01061fd8cad8,0x23d1cc21571ab06accf35115aa87e3ac3fa24ba1eb6186fb41ce635fda655647,0x28a123208956cb7f5f0c37a9b5424861ceeb4e111a99b944d313a830ff3a2b5f,0x2f917a7d49b2baa2801305106c49aa2b4aa9e02f05584fa7e41d461c7e798b2e,0x070479a5429ede3f42087b8242dd9dfb506c40306d96874c964ec4bbe557ca28,0x0921a9a5e97202e00c9b8363a78f70b1ca7820a7c851cbbd9941d5aae0d70fa5,0x0986fbe76fb39a2884203c6433cc910ddc9ae2b8cb5836205ee6293fd55d2bd4,0x1470c7e39125cfc97ea6f766b028a35679d4f52ab13ea6090bfe4ed4f18f3b47,0x0c2c1504dc6dcfaa73992d3c3768cf66a4a1267febbf3209aee20e36bc982a7b,0x189820af65f083be6f87d9bc01e06d62725c88819e25c079f43adc406bd62c22,0x1a95eef66592c7d825c55b59057369787f5c82b84eb02189106d9e7cee3c56f1,0x1bfb820302a558d42e8b7d209cdc7f27d0f8fd7e5ea08f5ef6aad032512fefe4,0x25cc1046c1527f8565967a48c94dda2e3f7966470bd5c6566c9cc460a8f34a83,0x276d165f7d66501874739be0af5d517a22ec7f4ca0e505b782c68b29bebd5ef5,0x2b3ed74566b5d87302d46b55eaa26701492cb30696b04d262d916ee3c40bf356,0x2c8fde086ceb96dd15c09ebb0bb1065d4e295d348e0a961f71847e90771622f1
prover-node-1  |     at CombinedProverCoordination.getTxsByHash (file:///usr/src/yarn-project/prover-node/dest/prover-coordination/combined-prover-coordination.js:64:19)
prover-node-1  |     at async ProverNode.gatherTxs (file:///usr/src/yarn-project/prover-node/dest/prover-node.js:262:21)
prover-node-1  |     at async ProverNode.gatherEpochData (file:///usr/src/yarn-project/prover-node/dest/prover-node.js:242:21)
prover-node-1  |     at async ProverNode.createProvingJob (file:///usr/src/yarn-project/prover-node/dest/prover-node.js:209:27)
prover-node-1  |     at async ProverNode.startProof (file:///usr/src/yarn-project/prover-node/dest/prover-node.js:147:21)
prover-node-1  |     at async ProverNode.handleEpochReadyToProve (file:///usr/src/yarn-project/prover-node/dest/prover-node.js:99:13)
prover-node-1  |     at async EpochMonitor.work (file:///usr/src/yarn-project/prover-node/dest/monitors/epoch-monitor.js:84:13)
prover-node-1  |     at async poll (file:///usr/src/yarn-project/foundation/dest/promise/running-promise.js:48:21)

This one seems to prevent us from generating proving jobs 😔.

Update: it seems failing prover led to this; I reported BB segfaults with >=256 cores and it was recently fixed.

name: aztec-prover
services:
prover-node:
image: aztecprotocol/aztec:0.85.0-alpha-testnet.2 # Always refer to the docs to check that you're using the correct image.
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
required: true
environment:
# PROVER_COORDINATION_NODE_URL: "http://:8080" # this can point to your own validator - using this replaces the need for the prover node to be on the P2P network and uses your validator as a sentry node of some sort.
# P2P_ENABLED: "false" # Switch to false if you provide a PROVER_COORDINATION_NODE_URL
DATA_DIRECTORY: /data
DATA_STORE_MAP_SIZE_KB: "134217728"
ETHEREUM_HOSTS: # EL RPC endpoint
L1_CONSENSUS_HOST_URL: # CL RPC endpoint
LOG_LEVEL: info
PROVER_BROKER_HOST: http://broker:8080
PROVER_PUBLISHER_PRIVATE_KEY: # The node needs to publish proofs to L1. Replace with your private key
ports:
- "8080:8080"
- "40400:40400"
- "40400:40400/udp"
volumes:
- /home/my-node/node:/data # Local directory
agent:
image: aztecprotocol/aztec:0.85.0-alpha-testnet.2 # Always refer to the docs to check that you're using the correct image.
command:
- node
- --no-warnings
- /usr/src/yarn-project/aztec/dest/bin/index.js
- start
- --prover-agent
- --network
- alpha-testnet
environment:
PROVER_AGENT_COUNT: "1"
PROVER_AGENT_POLL_INTERVAL_MS: "10000" # Just to reduce the log spamming if you're using debug logging.
PROVER_BROKER_HOST: http://broker:8080
PROVER_ID: # this should be the address corresponding to the PROVER_PUBLISHER_PRIVATE_KEY you set on the node.
pull_policy: always
restart: unless-stopped
broker:
image: aztecprotocol/aztec:0.85.0-alpha-testnet.2 # Always refer to the docs to check that you're using the correct image.
command:
- node
- --no-warnings
- /usr/src/yarn-project/aztec/dest/bin/index.js
- start
- --prover-broker
- --network
- alpha-testnet
environment:
DATA_DIRECTORY: /data
ETHEREUM_HOSTS: # Your EL RPC endpoint
LOG_LEVEL: info
volumes:
- /home/my-node/node:/data # Local directory
services:
prover-node:
image: ${IMAGE?error}
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
required: true
environment:
DATA_DIRECTORY: /data
DATA_STORE_MAP_SIZE_KB: "134217728"
ETHEREUM_HOSTS: ${RPC_EL_URL?error}
L1_CONSENSUS_HOST_URL: ${RPC_CL_URL?error}
LOG_LEVEL: trace
PROVER_BROKER_HOST: http://broker:8080
PROVER_PUBLISHER_PRIVATE_KEY: ${PROVER_PRIVATE_KEY?error}
ports:
- "8080:8080"
- "40400:40400"
- "40400:40400/udp"
volumes:
- ${DATA_DIR?error}:/data
agent:
image: ${IMAGE?error}
command:
- node
- --no-warnings
- /usr/src/yarn-project/aztec/dest/bin/index.js
- start
- --prover-agent
- --network
- alpha-testnet
environment:
PROVER_AGENT_COUNT: "1"
PROVER_AGENT_POLL_INTERVAL_MS: "10000"
PROVER_BROKER_HOST: http://broker:8080
PROVER_ID: ${PROVER_ID?error}
pull_policy: always
restart: unless-stopped
broker:
image: ${IMAGE?error}
command:
- node
- --no-warnings
- /usr/src/yarn-project/aztec/dest/bin/index.js
- start
- --prover-broker
- --network
- alpha-testnet
environment:
DATA_DIRECTORY: /data
ETHEREUM_HOSTS: ${RPC_EL_URL?error}
LOG_LEVEL: trace
volumes:
- ${DATA_DIR?error}:/data
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment