You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- `PROVER_BROKER_HOST`: Broker endpoint for job submission
162
162
- `PROVER_ID`: Ethereum address corresponding to `PROVER_PUBLISHER_PRIVATE_KEY`
163
163
164
+
**Note**: Some variables overlap with the prover node configuration. In this case we use the same value for`PROVER_BROKER_HOST`, so we will not duplicate itin our `.env` file.
165
+
164
166
Add to your `.env` file:
165
167
166
168
```sh
167
169
PROVER_AGENT_COUNT=10
168
170
PROVER_AGENT_POLL_INTERVAL_MS=10000
169
-
PROVER_BROKER_HOST=http://prover-broker:8080
170
171
PROVER_ID=<the address corresponding to the PROVER_PUBLISHER_PRIVATE_KEY you set on the node>
This guide covers the steps required to run a sequencer node on Aztec. It will also provide context to ensure users are comfortable with the steps they are taking.
27
+
This guide covers the steps required to run a sequencer node on the Aztec network.
28
28
29
29
The Aztec sequencer node is critical infrastructure responsible for ordering transactions and producing blocks.
30
30
31
-
The sequencer node takes part in three key actions:
31
+
The sequencer node performs three key actions:
32
32
33
-
1.Assemble unprocessed transactions and propose the next block
34
-
2.Attest to correct execution of txs in the proposed block (if part of the sequencer committee)
35
-
3.Submit the successfully attested block to L1
33
+
1.Assembles unprocessed transactions and proposes the next block
34
+
2.Attests to correct execution of transactions in proposed blocks (when part of the sequencer committee)
35
+
3.Submits successfully attested blocks to L1
36
36
37
-
When transactions are sent to the Aztec network, sequencer nodes bundle them into blocks, checking various constraints such as gas limits, block size, and transaction validity. Before a block can be published, it must be validated by a committee of other sequencer nodes who re-execute public transactions and verify private function proofs so they can attest to correct execution. These sequencers attest to the block's validity by signing the block header, and once enough attestations are collected (two-thirds of the committee plus one), the sequencer can submit the block to L1.
37
+
Sequencer nodes bundle transactions into blocks while checking constraints like gas limits, block size, and validity. Before publication, blocks must be validated by a committee of sequencer nodes who re-execute public transactions and verify private function proofs. Committee members attest to validity by signing the block header. Once sufficient attestations are collected (two-thirds of the committee plus one), the block can be submitted to L1.
38
38
39
39
The archiver component complements this process by maintaining historical chain data. It continuously monitors L1 for new blocks, processes them, and maintains a synchronized view of the chain state. This includes managing contract data, transaction logs, and L1-to-L2 messages, making it essential for network synchronization and data availability.
Please note that these requirements are subject to change as the network throughput increases.
51
51
52
-
This guide expects you to be using a "standard" Linux distribution like Debian / Ubuntu when following along with the steps.
52
+
This guide assumes you are using a standard Linux distribution (Debian or Ubuntu).
53
53
54
-
It also is assumed that you have installed Docker and the aztec toolchain via aztec-up as described in the [getting started section](../../index.md).
54
+
### Required Software
55
55
56
-
Furthermore, as this guide uses Docker compose, you will need to install it. Please follow [this](https://docs.docker.com/compose/install/) guide to do so.
56
+
- Docker and the Aztec toolchain installed via aztec-up (see the [getting started section](../../index.md))
- Access to L1 node endpoints (execution and consensus clients). See [Eth Docker's guide](https://ethdocker.com/Usage/QuickStart) if you need to set these up.
57
59
58
-
Finally, this guide requires you to have endpoints of an L1 node stack of an execution and consensus client. If you do not have one set up, you can see a good guide on how to do that [here at Eth Docker](https://ethdocker.com/Usage/QuickStart).
60
+
## Configure the Sequencer
59
61
62
+
Setting up a sequencer involves configuring keys, environment variables, and Docker Compose.
60
63
61
-
##Configure the sequencer
64
+
### Setup Steps
62
65
63
-
There are a few important things to note when setting up a sequencer. This guide will guide you in setting up and running a sequencer with a standard setup using Docker compose with a .env file.
66
+
1. Define private keys and accounts for sequencer duties
67
+
2. Configure node settings via environment variables
68
+
3. Enable auto-update and auto-restart functionality
69
+
4. Deploy with Docker Compose
64
70
65
-
The setup of the sequencer has four important steps.
71
+
First, create the directory structure for sequencer data storage:
66
72
67
-
1. Define private keys / accounts used for sequencer duties
68
-
2. Set required node configuration
69
-
3. Ensure auto-update / auto-restart is enabled
70
-
4. Apply your Docker compose file
71
-
72
-
Let's start by creating a new directory called `aztec-sequencer`, with two subdirectories, `keys`, and `data`. This is where all the information used by the sequencer will be stored. Please also create an empty `.env` file in `aztec-sequencer` to define your settings before moving on to the next step.
A sequencer must hold and use private keys identifying it as a valid proposer or attester. This is done by defining a keystore file.
81
+
Sequencers require private keys to identify themselves as valid proposers or attesters. Configure these through a keystore file.
77
82
78
-
An example keystore file is below. Copy this file and save it as `keystore.json`into your `aztec-sequencer/keys` folder.
83
+
Create a `keystore.json`file in your `aztec-sequencer/keys` folder:
79
84
80
85
```json
81
86
{
@@ -91,20 +96,18 @@ An example keystore file is below. Copy this file and save it as `keystore.json`
91
96
}
92
97
```
93
98
94
-
The keystore defines a few important keys and addresses for sequencer operation. They include but are not limited to:
99
+
The keystore defines keys and addresses for sequencer operation:
95
100
96
-
-`attester`: the private key of the sequencer, used for signing block proposals and attestations on block proposals produced by other sequencers. The corresponding Ethereum address of the private key is the identity of the sequencer.
97
-
-`publisher`: the private key of the Ethereum EOA used for sending the block proposal to L1. This defaults to the attester private key if not set.
98
-
-`coinbase`: the Ethereum address set in a block proposal. L1 rewards and fees are sent to this address. This falls back to the address derived by the attester private key if not set.
99
-
-`feeRecipient`: the Aztec Address of the fee recipient address when proposing blocks. The unburnt portion of the tx fees in a given block are sent to this address.
101
+
-`attester`: Private key for signing block proposals and attestations. The corresponding Ethereum address identifies the sequencer.
102
+
-`publisher`: Private key for sending block proposals to L1. Defaults to attester key if not set.
103
+
-`coinbase`: Ethereum address receiving L1 rewards and fees. Defaults to attester address if not set.
104
+
-`feeRecipient`: Aztec address receiving unburnt transaction fees from blocks.
100
105
101
-
Please set these values with the ones you want and save `keystore.json`.
106
+
Replace the placeholder values with your actual keys and addresses.
102
107
103
-
### Node configuration
108
+
### Node Configuration
104
109
105
-
Next you will need to define some environment variables that set important configuration for your node.
106
-
107
-
These include:
110
+
Required environment variables:
108
111
109
112
-`DATA_DIRECTORY`: the folder where the data of the sequencer is stored
110
113
-`KEY_STORE_DIRECTORY`: can be a path to the file or directory where keystores are located. In our case it is the path to the folder containing the `keystore.json` file created above
@@ -115,7 +118,7 @@ These include:
115
118
-`P2P_PORT`: The port that P2P communication happens on
116
119
-`AZTEC_PORT`: The port that the sequencer node API is exposed on
117
120
118
-
Please paste this sample `.env` file into the empty one currently residing in your `aztec-sequencer` folder. Please note that we are assuming you are using the default ports of 8080 for the sequencer itself, and 40400 for p2p connectivity. If this is not the case, please overwrite the defaults below.
121
+
Add the following to your `.env` file (using default ports 8080 and 40400):
119
122
120
123
```sh
121
124
DATA_DIRECTORY=./data
@@ -129,27 +132,23 @@ AZTEC_PORT=8080
129
132
```
130
133
131
134
:::tip
132
-
Forward your ports. Your router must send UDP and TCP traffic on the port specified by `P2P_PORT` to your IP address on your local network.
135
+
You MUST forward portsfor P2P connectivity. Configure your router to forward both UDP and TCP traffic on the port specified by `P2P_PORT` to your localIP address.
133
136
134
-
Running the command`curl ipv4.icanhazip.com` can retrieve your public IP addressfor you.
137
+
To find your public IP address, run: `curl ipv4.icanhazip.com`
135
138
:::
136
139
137
-
### Enable auto-update / auto-restart
138
-
139
-
It is imperative that the built in auto-updating functionality of the sequencer is not disabled. The update-checker is a background module in the Aztec node that enables global coordination of updates. It allows the protocol team to:
140
+
### Enable Auto-Update and Auto-Restart
140
141
141
-
- Push configuration changes to all nodes
142
-
- Trigger shutdowns so that nodes can pull the latest image version
143
-
- Apply hot-fixes quickly
144
-
- Coordinate node resets after a governance upgrade, especially when a new canonical rollup is published to the Registry
142
+
The sequencer's auto-update functionality is critical for network coordination. This background module enables:
145
143
146
-
This module ensures that upgrades and fixes propagate smoothly without requiring manual intervention from every node operator.
144
+
- Configuration updates across all nodes
145
+
- Automated image updates via controlled shutdowns
146
+
- Rapid hot-fix deployment
147
+
- Coordinated resets after governance upgrades
147
148
148
-
Please ensure environment variables:
149
+
**Important**: Do NOT set `AUTO_UPDATE_URL` or `AUTO_UPDATE` environment variables. These must use their default values for proper operation.
149
150
150
-
`AUTO_UPDATE_URL` and `AUTO_UPDATE` remain unset, as to take their default values (which are the s3 bucket being used to host the update information, and `config-and-version` respectively).
151
-
152
-
Because docker-compose does not respect pull policies on container restarts, to handle updates properly, add Watchtower to your stack by running:
151
+
Since Docker Compose doesn't respect pull policies on container restarts, install Watchtower for automatic updates:
153
152
154
153
```sh
155
154
docker run -d \
@@ -158,9 +157,9 @@ docker run -d \
158
157
containrrr/watchtower
159
158
```
160
159
161
-
### Applying your Docker compose file
160
+
### Deploy with Docker Compose
162
161
163
-
Now that you have done all the setup, create a Docker compose file named `compose.yml`in your `aztec-sequencer` directory and paste the below code into it.
162
+
Create a `docker-compose.yml`file in your `aztec-sequencer` directory:
Please note that we are setting only the necessary configuration for running this sequencer. The full list of settings and flags can be explored here at the [cli reference](../../reference/cli_reference.md). A lot of these options are preset to defaults by the `--network` flag above. This downloads defaults forthe specified network and applies them to the node.
203
+
**Note**: This configuration includes only essential settings. The `--network testnet` flag applies network-specific defaults. See the [CLI reference](../../reference/cli_reference.md)forall available options.
203
204
204
-
Now, you can run `docker compose up` inside your `aztec-sequencer` folder to start the sequencer!
205
+
Start the sequencer:
205
206
206
-
To check if your sequencer is currently synced, which may take a few minutes, run this command and compare its output to any of the Aztec block explorers. (See [Aztec Scan](https://aztecscan.xyz/) or [Aztec Explorer](https://aztecexplorer.xyz/))
207
+
```sh
208
+
docker compose up -d
209
+
```
210
+
211
+
## Verification
212
+
213
+
To verify your sequencer is running correctly:
214
+
215
+
1. Check the current sync status (this may take a few minutes):
207
216
208
217
```sh
209
218
curl -s -X POST -H 'Content-Type: application/json' \
Compare the output with block explorers like [Aztec Scan](https://aztecscan.xyz/) or [Aztec Explorer](https://aztecexplorer.xyz/).
224
+
225
+
2. View sequencer logs:
226
+
227
+
```sh
228
+
docker compose logs -f aztec-sequencer
229
+
```
230
+
231
+
3. Check node status:
232
+
233
+
```sh
234
+
curl http://localhost:8080/status
235
+
```
236
+
237
+
## Troubleshooting
238
+
239
+
### Common Issues
240
+
241
+
**Port forwarding not working:**
242
+
243
+
- Verify your external IP address matches the `P2P_IP` setting
244
+
- Check firewall rules on your router and local machine
245
+
- Test connectivity using: `nc -zv <your-ip><p2p-port>`
246
+
247
+
**Sequencer not syncing:**
248
+
249
+
- Check L1 endpoint connectivity
250
+
- Verify both execution and consensus clients are fully synced
251
+
- Review logs for specific error messages
252
+
253
+
**Keystore issues:**
254
+
255
+
- Ensure keystore.json is properly formatted
256
+
- Verify private keys are valid Ethereum private keys
257
+
- Check file permissions on the keys directory
258
+
259
+
**Docker issues:**
260
+
261
+
- Ensure Docker and Docker Compose are up to date
262
+
- Check disk space availability
263
+
- Verify container has sufficient resources
264
+
265
+
## Join the Sequencer Set
266
+
267
+
After setting up your node, you must request to be added to the sequencer set.
268
+
269
+
Complete the onboarding process at [testnet.aztec.network](https://testnet.aztec.network) using zkPassport.
215
270
216
-
After setting up your node you must explicitly request to be added to the sequencer set.
271
+
## Next Steps
217
272
218
-
To complete this final step you can now head to [testnet.aztec.network](https://testnet.aztec.network) and complete the onboarding flow there utilizing zkPassport!
273
+
- Monitor your sequencer's performance and attestation rate
274
+
- Join the [Aztec Discord](https://discord.gg/aztec) for operator support
275
+
- Review [Reacting to Upgrades](../../reference/reacting_to_upgrades.md) guide
276
+
- Consider implementing monitoring and alerting for production deployments
Copy file name to clipboardExpand all lines: docs/docs/the_aztec_network/guides/run_nodes/index.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,15 +13,15 @@ description: Learn how to participate in the Aztec Network by running different
13
13
<h3>Run Aztec Sequencer Nodes</h3>
14
14
</CardHeader>
15
15
<CardBody>
16
-
Participate in the Aztec protocol as a sequencer that orders transactions in a block and proposed them to the L1. Runs on consumer hardware.
16
+
Participate in the Aztec protocol as a sequencer that orders transactions in blocks and proposes them to L1. Runs on consumer hardware.
17
17
</CardBody>
18
18
</Card>
19
19
<Cardlink='./run_nodes/how_to_run_prover'>
20
20
<CardHeader>
21
21
<h3>Run Aztec Prover Nodes</h3>
22
22
</CardHeader>
23
23
<CardBody>
24
-
Participate in the Aztec protocol as a prover, proving the rollup integrity that is pivotal to the protocol. Runs on hardware fit for data centers.
24
+
Participate in the Aztec protocol as a prover, generating proofs that ensure rollup integrity. Requires high-performance hardware suitable for data centers.
0 commit comments