feat: add aztec sequencer integration#2638
Conversation
2b5fcbf to
5ab7f43
Compare
- Add aztec-sequencer.yml compose file with alloy observability labels - Add AZTEC_* environment variables to default.env template - Add hybrid keystore.sample.json (Web3Signer for ETH, inline for BLS) and update .gitignore - Documentation moved to eth-docker-docs repository Depends on web3signer, execution, and consensus services.
5ab7f43 to
cf85dd6
Compare
|
This is a decent start, I can suggest edits that make it work more like Eth Docker does. Before going there, though: What is the use case? Aztec have their own supported compose stack. Would that not be a be a better option? |
|
Couple of reasons for the PR. With Coincashew not seen recently around the EthPillar project, I thought Eth-Docker would be a great project to adopt the Aztec Sequencer. Also, I am working on Agentic Ops for ETH nodes: https://github.com/itenev/agentic-node-ops and I thought it would be a good idea to include the Aztec Sequencer in the Eth-Docker observability stack. Tbh, I wasn't aware Aztec have their own compose stack, so if you think it is better suited for the purpose, I am ok to abandon both this and the docs PR. |
|
Their compose stack is controlled by their I don't run an Aztec Sequencer. If you think that there's value in having this in Eth Docker because it's got better observability, or is less opaque than what Aztec does, then by all means let's. For better or worse, you'd be the one maintaining this integration. |
| - KEY_STORE_DIRECTORY=/var/lib/keystore | ||
| - DATA_DIRECTORY=/var/lib/data | ||
| - LOG_LEVEL=${LOG_LEVEL:-info} | ||
| - ETHEREUM_HOSTS=http://execution:${EL_RPC_PORT:-8545} |
There was a problem hiding this comment.
Use ${EL_NODE} here, that's what it is for. You can't rely on there only being one execution or on execution existing locally
| - DATA_DIRECTORY=/var/lib/data | ||
| - LOG_LEVEL=${LOG_LEVEL:-info} | ||
| - ETHEREUM_HOSTS=http://execution:${EL_RPC_PORT:-8545} | ||
| - L1_CONSENSUS_HOST_URLS=http://consensus:${CL_REST_PORT:-5052} |
There was a problem hiding this comment.
Use ${CL_NODE} here, that's what it is for. You can't rely on there only being one consensus or on consensus existing locally. Tbf you also can't rely on CL_NODE being just one entry, it could be multiple comma-separated. That's where an entrypoint script comes in handy, to maybe just grab the first.
| - LOG_LEVEL=${LOG_LEVEL:-info} | ||
| - ETHEREUM_HOSTS=http://execution:${EL_RPC_PORT:-8545} | ||
| - L1_CONSENSUS_HOST_URLS=http://consensus:${CL_REST_PORT:-5052} | ||
| - P2P_IP=${AZTEC_P2P_IP:-0.0.0.0} |
There was a problem hiding this comment.
I don't love having the user hard-code their IP address. Two questions:
- Can the Aztec sequencer auto-detect its external? That is friendliest to users that are on residential ISPs, where the external changes
- If that's not possible, does the image come with a shell? If it has a shell, you could run a small entrypoint script (even just via
command:in theyml, need not be baked into a:localimage) that gets the IP from a service. Something likepublic_v4=$(curl -s -m5 -4 ifconfig.me)
| - AZTEC_ADMIN_PORT=${AZTEC_ADMIN_PORT:-8880} | ||
| ports: | ||
| - "${AZTEC_PORT:-8080}:${AZTEC_PORT:-8080}" | ||
| - "${AZTEC_P2P_PORT:-40400}:${AZTEC_P2P_PORT:-40400}" |
There was a problem hiding this comment.
I prefer making /tcp explicit for ports.
There was a problem hiding this comment.
Also add HOST_IP and for the one below, see other yml files for reference
| - AZTEC_PORT=${AZTEC_PORT:-8080} | ||
| - AZTEC_ADMIN_PORT=${AZTEC_ADMIN_PORT:-8880} | ||
| ports: | ||
| - "${AZTEC_PORT:-8080}:${AZTEC_PORT:-8080}" |
There was a problem hiding this comment.
This should go into an aztec-shared.yml. I prefer only mapping P2P ports to host by default. I'm assuming the Aztec port need not be exposed to host for normal operations.
Add the SHARE_IP when you do
| AZTEC_ADMIN_PORT=8880 | ||
| AZTEC_P2P_PORT=40400 | ||
| # Set to your public IP for P2P discovery, or leave 0.0.0.0 for local testing | ||
| AZTEC_P2P_IP=0.0.0.0 |
There was a problem hiding this comment.
See comment above. Better if this is dynamic
| # ========================================== | ||
| # Aztec Sequencer Configuration | ||
| # ========================================== | ||
| AZTEC_DOCKER_TAG=latest |
There was a problem hiding this comment.
The ports should go to the ports section. The tag goes into the tags section. Please don't just append to the end of the file
| @@ -570,3 +570,13 @@ DOCKER_SOCK=/var/run/docker.sock | |||
|
|
|||
| # Used by ethd update - please do not adjust | |||
| ENV_VERSION=58 | |||
There was a problem hiding this comment.
When variables are being added, this version needs to be bumped by one, so the new variables are picked up by ./ethd update
| pre-ethd-update.sh | ||
|
|
||
| # Aztec Sequencer Keys | ||
| /aztec/keys/keystore.json |
There was a problem hiding this comment.
That's not how .gitignore works. This won't be in the root of the file system. Better to create ./aztec/keys and then have a .gitignore inside there
Uh oh!
There was an error while loading. Please reload this page.