From 065b568bc7d055cbb1db01124c894ec9958a2b8d Mon Sep 17 00:00:00 2001 From: hcastc00 Date: Wed, 12 Nov 2025 17:12:12 +0100 Subject: [PATCH 01/13] Added guide --- sequencer-guide.md | 174 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 174 insertions(+) create mode 100644 sequencer-guide.md diff --git a/sequencer-guide.md b/sequencer-guide.md new file mode 100644 index 0000000..f0ad5e4 --- /dev/null +++ b/sequencer-guide.md @@ -0,0 +1,174 @@ +# πŸš€ Becoming an Aztec Sequencer with DAppNode + +Your comprehensive guide to setting up and joining the Aztec network as a sequencer using DAppNode infrastructure. Let's get you sequencing! 🎯 + +--- + +## πŸ“¦ Phase 1: Install DAppNode Package + +Start by grabbing the Aztec package from the DAppStore. This sets up your sequencer environment all nice and integrated with your DAppNode setup. + +--- + +## πŸ” Phase 2: Generate Your Keystore + +### Step 1️⃣: Install Aztec CLI on Your Local Machine + +Download and install the Aztec Command Line Interface (it's quick, I promise): + +```bash +bash -i <(curl -s https://install.aztec.network) +``` + +### Step 2️⃣: Add Aztec CLI to Your PATH + +Make the Aztec CLI globally accessible by adding it to your shell configuration: + +```bash +echo 'export PATH="$HOME/.aztec/bin:$PATH"' >> ~/.bashrc +source ~/.bashrc +``` + +### Step 3️⃣: Generate Your Keystore + +Time to create your secure keystore! πŸ›‘οΈ You can go with either an automatically generated 12-word mnemonic or your own custom passphrase. **We strongly recommend rolling with a self-determined mnemonic of at least 24 words** for maximum security. Treat it like your most prized possessionβ€”store it securely in a password manager or encrypted vault and never share it with a soul! + +For all the juicy details on keystore generation, check out the [official Aztec keystore documentation](https://docs.aztec.network/devnet/the_aztec_network/operation/keystore). + +Example: + +```bash +aztec validator-keys new \ +--fee-recipient 0x0000000000000000000000000000000000000000000000000000000000000000 \ +--mnemonic "" \ +--data-dir ./ +``` + +### Step 4️⃣: Upload Keystore to DAppNode + +1. Navigate to your **DAppNode Packages Tab** πŸ“ +2. Open the **Aztec package** πŸ¦† +3. Access the **File Manager** tab πŸ“ +4. Upload your newly generated keystore file to the `/keystore` directory + +Boom! πŸ’₯ Your keystore is now locked and loaded, ready for your Aztec sequencer to use. + +--- + +## βœ… Phase 3: Approve STAKE Token Spending + +Before you can join the party as a sequencer, you gotta approve the Aztec rollup contract to spend 200,000 STAKE tokens. That's your ticket to the show! 🎫 + +### Step 1️⃣: Connect to Your DAppNode via SSH + +Open your terminal and SSH into your DAppNode: + +```bash +ssh root@dappnode.local +``` + +Or use your DAppNode's IP address if the hostname doesn't resolve: + +```bash +ssh root@ +``` + +### Step 2️⃣: Access the Aztec Container + +Once connected, access the Aztec sequencer container using Docker: + +```bash +docker exec -it DAppNodePackage-sequencer.aztec-sepolia.dnp.dappnode.eth /bin/bash +``` + +You're now inside the Aztec container! 🐳 From here, you can execute transactions directly. + +### Step 3️⃣: Execute the Approval Transaction + +Now execute the approval transaction from within the container: + +```bash +cast send 0x139d2a7a0881e16332d7D1F8DB383A4507E1Ea7A \ + "approve(address,uint256)" \ + 0xebd99ff0ff6677205509ae73f93d0ca52ac85d67 \ + 200000ether \ + --private-key "$PRIVATE_KEY_OF_OLD_SEQUENCER" \ + --rpc-url http://execution.sepolia.dncore.dappnode:8545 +``` + +Sit tight ⏳ and wait for the transaction to be confirmed on-chain. Grab some coffee β˜• while you wait! + +--- + +## πŸ’° Phase 4: Fund Your Attester & Configure Publisher + +### Attester ETH Funding πŸ’Έ + +Make sure your Attester Ethereum address has enough ETH to cover gas fees. Grab some from a testnet faucet or transfer from your funded account. + +### Publisher Configuration πŸ“€ + +Set up a Publisher for your sequencer or ensure it's got enough ETH to handle publishing operations to the network. + +--- + +## πŸŽ–οΈ Phase 5: Join as a Sequencer + +Alright, moment of truth! 🎬 Let's register your validator on the Aztec network using the CLI. + +Run this bad boy replacing the placeholders with your data and become a sequencer: + +```bash +aztec \ + add-l1-validator \ + --l1-rpc-urls http://execution.sepolia.dncore.dappnode:8545 \ + --network testnet \ + --private-key $PRIVATE_KEY_OF_OLD_SEQUENCER \ + --attester $ETH_ATTESTER_ADDRESS \ + --withdrawer $ANY_ETH_ADDRESS \ + --bls-secret-key $BLS_ATTESTER_PRIV_KEY \ + --rollup 0xebd99ff0ff6677205509ae73f93d0ca52ac85d67 +``` + +Success! πŸŽ‰ Your sequencer is now registered on the Aztec testnet and ready to start producing blocks. Welcome to the sequencer club! πŸ† + +--- + +## πŸ“‹ Progress Checklist + +| Phase | Task | Status | +|-------|------|--------| +| 1️⃣ | Install DAppNode Aztec package | ☐ | +| 2️⃣ | Generate and upload keystore | ☐ | +| 3️⃣ | Connect to DAppNode & approve 200k STAKE | ☐ | +| 4️⃣ | Fund Attester and configure Publisher | ☐ | +| 5️⃣ | Register as validator via CLI | ☐ | + +--- + +## πŸ”’ Security Best Practices + +- **🚫 Never ever share** your mnemonic or private keys with anyone, period +- **πŸ” Lock down that mnemonic** β€” use a dedicated password manager or encrypted storage +- **πŸ’Ό Hardware wallet time** β€” consider using hardware wallets for your withdrawal and attester addresses +- **πŸ§ͺ Test first** β€” run everything through testnet before going anywhere near mainnet +- **πŸ‘€ Keep an eye** on your sequencer logs regularly through DAppNode's dashboard +- **πŸ”Œ SSH Security** β€” use SSH keys instead of passwords when connecting to your DAppNode for extra security + +--- + +## πŸ†˜ Troubleshooting + +Running into issues? Here's a quick troubleshooting guide: + +- **Keystore Upload Fails** πŸ“€ β€” Make sure the file's in proper JSON format and has the right permissions +- **SSH Connection Failed** πŸ”“ β€” Verify your DAppNode is running and accessible on your network, check firewall settings +- **Docker Container Not Found** 🐳 β€” Ensure the Aztec package is installed and running, check the package name matches your network (e.g., `aztec-sepolia`) +- **Approval Transaction Reverts** ❌ β€” Check that you've got enough ETH for gas and sufficient STAKE balance +- **CLI Connection Errors** πŸ”Œ β€” Verify your ETH RPC URL is actually reachable and the network's responding from within the container + +--- + +## 🎯 You've Got This + +You're all set to become an Aztec sequencer. Follow these steps carefully, keep your keys safe, and you'll be sequencing like a pro in no time. Happy validating! πŸš€βœ¨ From f1c63400808ea71aa1885468b3b48f39ea4e2674 Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 18:24:54 +0100 Subject: [PATCH 02/13] Update sequencer-guide.md --- sequencer-guide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sequencer-guide.md b/sequencer-guide.md index f0ad5e4..2fd0e8d 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -44,6 +44,8 @@ aztec validator-keys new \ --data-dir ./ ``` +Please note that `--fee-recipient` needs to be an Aztec address, not an Ethereum address. It's OK to leave it as 0x00... for now because there are no txs in the Ignition phase (so no tx fees) and can be changed later. + ### Step 4️⃣: Upload Keystore to DAppNode 1. Navigate to your **DAppNode Packages Tab** πŸ“ From 428b3122031d777af9c5dc911105bd5375efd845 Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 18:57:26 +0100 Subject: [PATCH 03/13] Update sequencer-guide.md --- sequencer-guide.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sequencer-guide.md b/sequencer-guide.md index 2fd0e8d..7c1683f 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -55,6 +55,11 @@ Please note that `--fee-recipient` needs to be an Aztec address, not an Ethereum Boom! πŸ’₯ Your keystore is now locked and loaded, ready for your Aztec sequencer to use. +If your logs show this error: +``` +[17:55:44.683] WARN: node:blob-sink:client Unable to get blob sidecar for XXXXXXX: Not Found (404) {"status":404,"statusText":"Not Found","body":"{\"message\":\"Block not found: the node does not custody enough data columns to reconstruct blobs - please start the beacon node with the `--subscribe-all-data-subnets` flag to ensure this call to succeed, or retry later if it is already the case\",\"code\":404}"} +``` + --- ## βœ… Phase 3: Approve STAKE Token Spending From f934c5d7dabfec807bd666073d27d96d79ad1d29 Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:01:07 +0100 Subject: [PATCH 04/13] Update sequencer-guide.md --- sequencer-guide.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sequencer-guide.md b/sequencer-guide.md index 7c1683f..6c3c97a 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -59,6 +59,11 @@ If your logs show this error: ``` [17:55:44.683] WARN: node:blob-sink:client Unable to get blob sidecar for XXXXXXX: Not Found (404) {"status":404,"statusText":"Not Found","body":"{\"message\":\"Block not found: the node does not custody enough data columns to reconstruct blobs - please start the beacon node with the `--subscribe-all-data-subnets` flag to ensure this call to succeed, or retry later if it is already the case\",\"code\":404}"} ``` +Make sure to add `--subscribe-all-data-subnets` in your Beacon Chain package: + +Screenshot 2025-11-12 at 15 00 40 +Screenshot 2025-11-12 at 14 58 47 + --- From 047ccc6a8fca2f076f2537d49df5ef560471524c Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:12:06 +0100 Subject: [PATCH 05/13] Update sequencer-guide.md --- sequencer-guide.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sequencer-guide.md b/sequencer-guide.md index 6c3c97a..2458826 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -39,9 +39,12 @@ Example: ```bash aztec validator-keys new \ ---fee-recipient 0x0000000000000000000000000000000000000000000000000000000000000000 \ ---mnemonic "" \ ---data-dir ./ + --fee-recipient 0x0000000000000000000000000000000000000000000000000000000000000000 \ + --staker-output \ + --gse-address 0xfb243b9112bb65785a4a8edaf32529accf003614 \ # Check in Aztec's documentation for the correct GSE address + --mnemonic "" \ + --l1-rpc-urls http://geth.sepolia-geth.dappnode:8545 \ # or any execution RPC + --data-dir ./ ``` Please note that `--fee-recipient` needs to be an Aztec address, not an Ethereum address. It's OK to leave it as 0x00... for now because there are no txs in the Ignition phase (so no tx fees) and can be changed later. From 7f4213395f3c53ca596f3a93918643aea54e89ab Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:15:25 +0100 Subject: [PATCH 06/13] Update sequencer-guide.md --- sequencer-guide.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sequencer-guide.md b/sequencer-guide.md index 2458826..fafd05b 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -117,6 +117,9 @@ Sit tight ⏳ and wait for the transaction to be confirmed on-chain. Grab some c ## πŸ’° Phase 4: Fund Your Attester & Configure Publisher +Your attester address has been generated with the command in Step 3️⃣. Specifically in the `keyn_attestern_staker_output.json`, where `n` is the index of the key you've generated (1, for most of us who only generate 1). +Open the `...staker_output.json` file and you will find the address in the "attester" field. + ### Attester ETH Funding πŸ’Έ Make sure your Attester Ethereum address has enough ETH to cover gas fees. Grab some from a testnet faucet or transfer from your funded account. From bcb4b40122080ed1e1e68478f81a2917e8ce6aa0 Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:16:37 +0100 Subject: [PATCH 07/13] Update sequencer-guide.md --- sequencer-guide.md | 1 + 1 file changed, 1 insertion(+) diff --git a/sequencer-guide.md b/sequencer-guide.md index fafd05b..8bb3e7a 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -123,6 +123,7 @@ Open the `...staker_output.json` file and you will find the address in the "atte ### Attester ETH Funding πŸ’Έ Make sure your Attester Ethereum address has enough ETH to cover gas fees. Grab some from a testnet faucet or transfer from your funded account. +Faucets for testnet [here](https://sepolia-faucet.pk910.de/) and [here](https://cloud.google.com/application/web3/faucet/ethereum/sepolia) ### Publisher Configuration πŸ“€ From 4778023027009f8a29e58bbd794eda04ec979ea1 Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:17:17 +0100 Subject: [PATCH 08/13] Update sequencer-guide.md --- sequencer-guide.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/sequencer-guide.md b/sequencer-guide.md index 8bb3e7a..e2f08df 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -125,10 +125,6 @@ Open the `...staker_output.json` file and you will find the address in the "atte Make sure your Attester Ethereum address has enough ETH to cover gas fees. Grab some from a testnet faucet or transfer from your funded account. Faucets for testnet [here](https://sepolia-faucet.pk910.de/) and [here](https://cloud.google.com/application/web3/faucet/ethereum/sepolia) -### Publisher Configuration πŸ“€ - -Set up a Publisher for your sequencer or ensure it's got enough ETH to handle publishing operations to the network. - --- ## πŸŽ–οΈ Phase 5: Join as a Sequencer From ab69aa079989894c3b44a2cf40eb22ba80418999 Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:28:53 +0100 Subject: [PATCH 09/13] Update sequencer-guide.md --- sequencer-guide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sequencer-guide.md b/sequencer-guide.md index e2f08df..add8065 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -147,6 +147,8 @@ aztec \ Success! πŸŽ‰ Your sequencer is now registered on the Aztec testnet and ready to start producing blocks. Welcome to the sequencer club! πŸ† +You can check the status of your sequencer in https://testnet.dashtec.xyz. Remember that what is called "Sequencer address" in the dashboard is the "Attester" address in your `...staker_output.json` file. + --- ## πŸ“‹ Progress Checklist From b26bfca802998a94b091696f887e6613dfef5e17 Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:32:02 +0100 Subject: [PATCH 10/13] Update sequencer-guide.md --- sequencer-guide.md | 24 ++---------------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/sequencer-guide.md b/sequencer-guide.md index add8065..4350bf0 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -74,29 +74,9 @@ Make sure to add `--subscribe-all-data-subnets` in your Beacon Chain package: Before you can join the party as a sequencer, you gotta approve the Aztec rollup contract to spend 200,000 STAKE tokens. That's your ticket to the show! 🎫 -### Step 1️⃣: Connect to Your DAppNode via SSH +In order to perform this step you will need to install foundry in your computer (there will be a UI later on to perform this step, but for now you'll need to use CLI). -Open your terminal and SSH into your DAppNode: - -```bash -ssh root@dappnode.local -``` - -Or use your DAppNode's IP address if the hostname doesn't resolve: - -```bash -ssh root@ -``` - -### Step 2️⃣: Access the Aztec Container - -Once connected, access the Aztec sequencer container using Docker: - -```bash -docker exec -it DAppNodePackage-sequencer.aztec-sepolia.dnp.dappnode.eth /bin/bash -``` - -You're now inside the Aztec container! 🐳 From here, you can execute transactions directly. +You can install foundry following [the instructions in their repo](https://github.com/foundry-rs/foundry) ### Step 3️⃣: Execute the Approval Transaction From fc4c821c8136bea37c3c8730b20037b713113487 Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:33:18 +0100 Subject: [PATCH 11/13] Update sequencer-guide.md --- sequencer-guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sequencer-guide.md b/sequencer-guide.md index 4350bf0..ae9c633 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -78,7 +78,7 @@ In order to perform this step you will need to install foundry in your computer You can install foundry following [the instructions in their repo](https://github.com/foundry-rs/foundry) -### Step 3️⃣: Execute the Approval Transaction +### Step 1️⃣: Execute the Approval Transaction Now execute the approval transaction from within the container: From 99be9b279e3669469e99aa01141ce6365fb1ef2d Mon Sep 17 00:00:00 2001 From: Lanski <19168735+Pol-Lanski@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:35:50 +0100 Subject: [PATCH 12/13] Update sequencer-guide.md --- sequencer-guide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sequencer-guide.md b/sequencer-guide.md index ae9c633..7a43200 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -113,6 +113,8 @@ Alright, moment of truth! 🎬 Let's register your validator on the Aztec networ Run this bad boy replacing the placeholders with your data and become a sequencer: +Note: `bls-secret-key` can be found in the file `key1.json` under the "bls" section. + ```bash aztec \ add-l1-validator \ From 4709507c51655e2e5a005f0f0b361a1535da18c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A9ctor?= <47385090+hcastc00@users.noreply.github.com> Date: Wed, 12 Nov 2025 19:39:53 +0100 Subject: [PATCH 13/13] Update sequencer-guide.md --- sequencer-guide.md | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/sequencer-guide.md b/sequencer-guide.md index 7a43200..38879ed 100644 --- a/sequencer-guide.md +++ b/sequencer-guide.md @@ -77,6 +77,9 @@ Before you can join the party as a sequencer, you gotta approve the Aztec rollup In order to perform this step you will need to install foundry in your computer (there will be a UI later on to perform this step, but for now you'll need to use CLI). You can install foundry following [the instructions in their repo](https://github.com/foundry-rs/foundry) +```bash +curl -L https://foundry.paradigm.xyz | bash +``` ### Step 1️⃣: Execute the Approval Transaction @@ -95,7 +98,7 @@ Sit tight ⏳ and wait for the transaction to be confirmed on-chain. Grab some c --- -## πŸ’° Phase 4: Fund Your Attester & Configure Publisher +## πŸ’° Phase 4: Fund Your Attester Your attester address has been generated with the command in Step 3️⃣. Specifically in the `keyn_attestern_staker_output.json`, where `n` is the index of the key you've generated (1, for most of us who only generate 1). Open the `...staker_output.json` file and you will find the address in the "attester" field. @@ -133,18 +136,6 @@ You can check the status of your sequencer in https://testnet.dashtec.xyz. Remem --- -## πŸ“‹ Progress Checklist - -| Phase | Task | Status | -|-------|------|--------| -| 1️⃣ | Install DAppNode Aztec package | ☐ | -| 2️⃣ | Generate and upload keystore | ☐ | -| 3️⃣ | Connect to DAppNode & approve 200k STAKE | ☐ | -| 4️⃣ | Fund Attester and configure Publisher | ☐ | -| 5️⃣ | Register as validator via CLI | ☐ | - ---- - ## πŸ”’ Security Best Practices - **🚫 Never ever share** your mnemonic or private keys with anyone, period @@ -152,7 +143,6 @@ You can check the status of your sequencer in https://testnet.dashtec.xyz. Remem - **πŸ’Ό Hardware wallet time** β€” consider using hardware wallets for your withdrawal and attester addresses - **πŸ§ͺ Test first** β€” run everything through testnet before going anywhere near mainnet - **πŸ‘€ Keep an eye** on your sequencer logs regularly through DAppNode's dashboard -- **πŸ”Œ SSH Security** β€” use SSH keys instead of passwords when connecting to your DAppNode for extra security ---