Skip to content

Commit 5f11cf4

Browse files
authored
chore: update external joiner script for new networks (#10810)
The script now takes an explicit reference to a network. Networks have hardcoded configurations to loadbalancers that sit in front of boot-nodes and the ethereum host. For now, only `troll-turtle` is supported. Users can override to join custom networks by setting. Note: this means that if the `troll-turtle` network goes down, these test will fail. I'm fine with that for now, but I filed #10809
1 parent e2fd046 commit 5f11cf4

File tree

2 files changed

+95
-22
lines changed

2 files changed

+95
-22
lines changed

spartan/releases/rough-rhino/Earthfile

+10-7
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@ deps:
88
curl \
99
git \
1010
make \
11-
nodejs \
12-
npm \
13-
unzip
11+
unzip \
12+
jq
1413

1514
test-setup:
1615
FROM +deps
@@ -43,7 +42,8 @@ test-install:
4342
-p 8080 \
4443
-p2p 40400 \
4544
-ip 1.2.3.4 \
46-
-k 0x00
45+
-k 0x00 \
46+
-n "troll-turtle"
4747
# Verify docker-compose.yml was created and contains correct values
4848
RUN test -f .env && \
4949
test -f docker-compose.yml && \
@@ -73,7 +73,8 @@ test-start-stop:
7373
-p 8080 \
7474
-p2p 40400 \
7575
-ip 1.2.3.4 \
76-
-k 0x00
76+
-k 0x00 \
77+
-n "troll-turtle"
7778
# Test start command
7879
RUN ./aztec-spartan.sh start 2>&1 | grep -q "Starting containers" && \
7980
echo "✅ Start command test passed" || \
@@ -97,7 +98,8 @@ test-data-dir:
9798
-p2p 40400 \
9899
-ip 1.2.3.4 \
99100
-k 0x00 \
100-
-d ./aztec-data
101+
-d ./aztec-data \
102+
-n "troll-turtle"
101103
# Verify docker-compose.yml uses bind mount instead of named volume
102104
RUN grep -q "volumes:" docker-compose.yml && \
103105
grep -q "./aztec-data:/var/lib/aztec" docker-compose.yml && \
@@ -113,7 +115,8 @@ test-p2p-key:
113115
-p2p 40400 \
114116
-ip 1.2.3.4 \
115117
-k 0x00 \
116-
-pk 00000
118+
-pk 00000 \
119+
-n "troll-turtle"
117120
# Verify the P2P private key was set in the .env file
118121
RUN test -f .env && \
119122
grep -q "PEER_ID_PRIVATE_KEY=00000" .env && \

spartan/releases/rough-rhino/aztec-spartan.sh

+85-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
#!/bin/bash
22

3+
set -e
4+
35
# Colors and formatting
46
BLUE='\033[0;34m'
57
GREEN='\033[0;32m'
@@ -8,18 +10,34 @@ YELLOW='\033[1;33m'
810
NC='\033[0m' # No Color
911

1012
# Global variables
11-
ARCH=$(uname -m)
1213
DEFAULT_P2P_PORT="40400"
1314
DEFAULT_PORT="8080"
1415
DEFAULT_KEY="0x0000000000000000000000000000000000000000000000000000000000000001"
1516
# Try to get default IP from ipify API, otherwise leave empty to require user input
1617
DEFAULT_IP=$(curl -s --connect-timeout 5 https://api.ipify.org?format=json | grep -o '"ip":"[^"]*' | cut -d'"' -f4 || echo "")
1718
DEFAULT_BIND_MOUNT_DIR="$HOME/aztec-data"
1819

20+
1921
# Parse command line arguments
2022
parse_args() {
2123
while [[ $# -gt 0 ]]; do
2224
case $1 in
25+
-b|--bootnode-url)
26+
BOOTNODE_URL="$2"
27+
shift 2
28+
;;
29+
-n|--network)
30+
NETWORK="$2"
31+
shift 2
32+
;;
33+
-i|--image)
34+
IMAGE="$2"
35+
shift 2
36+
;;
37+
-e|--ethereum-host)
38+
ETHEREUM_HOST="$2"
39+
shift 2
40+
;;
2341
-p|--port)
2442
CLI_PORT="$2"
2543
shift 2
@@ -107,12 +125,64 @@ get_public_ip() {
107125
fi
108126
}
109127

128+
get_node_info() {
129+
echo -e "${BLUE}Fetching node info...${NC}"
130+
CMD="get-node-info --node-url ${BOOTNODE_URL} --json"
131+
# TODO: use the correct (corresponding) image
132+
# Can't do it today because `release/troll-turtle` doesn't support --json flag
133+
NODE_INFO=$(curl -X POST -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","method":"node_getNodeInfo","params":[],"id":1}' -s ${BOOTNODE_URL})
134+
135+
# Extract the relevant fields
136+
result=$(echo $NODE_INFO | jq -r '.result')
137+
L1_CHAIN_ID=$(echo $result | jq -r '.l1ChainId')
138+
BOOTSTRAP_NODES=$(echo $result | jq -r '.enr')
139+
REGISTRY_CONTRACT_ADDRESS=$(echo $result | jq -r '.l1ContractAddresses.registryAddress')
140+
GOVERNANCE_PROPOSER_CONTRACT_ADDRESS=$(echo $result | jq -r '.l1ContractAddresses.governanceProposerAddress')
141+
FEE_JUICE_CONTRACT_ADDRESS=$(echo $result | jq -r '.l1ContractAddresses.feeJuiceAddress')
142+
ROLLUP_CONTRACT_ADDRESS=$(echo $result | jq -r '.l1ContractAddresses.rollupAddress')
143+
REWARD_DISTRIBUTOR_CONTRACT_ADDRESS=$(echo $result | jq -r '.l1ContractAddresses.rewardDistributorAddress')
144+
GOVERNANCE_CONTRACT_ADDRESS=$(echo $result | jq -r '.l1ContractAddresses.governanceAddress')
145+
COIN_ISSUER_CONTRACT_ADDRESS=$(echo $result | jq -r '.l1ContractAddresses.coinIssuerAddress')
146+
FEE_JUICE_PORTAL_CONTRACT_ADDRESS=$(echo $result | jq -r '.l1ContractAddresses.feeJuicePortalAddress')
147+
INBOX_CONTRACT_ADDRESS=$(echo $result | jq -r '.l1ContractAddresses.inboxAddress')
148+
OUTBOX_CONTRACT_ADDRESS=$(echo $result | jq -r '.l1ContractAddresses.outboxAddress')
149+
150+
echo -e "${GREEN}Node info fetched successfully${NC}"
151+
return 0
152+
}
153+
110154
# Configure environment
111155
configure_environment() {
112156
local args=("$@")
113157
parse_args "${args[@]}"
114158

115159
echo -e "${BLUE}Configuring environment...${NC}"
160+
if [ -n "$NETWORK" ]; then
161+
NETWORK="$NETWORK"
162+
else
163+
read -p "Network [troll-turtle]: " NETWORK
164+
NETWORK=${NETWORK:-troll-turtle}
165+
fi
166+
167+
# if the network is `troll-turtle`
168+
if [ "$NETWORK" = "troll-turtle" ]; then
169+
BOOTNODE_URL="${BOOTNODE_URL:-http://34.82.213.6:8080}"
170+
ETHEREUM_HOST="${ETHEREUM_HOST:-http://34.19.127.9:8545}"
171+
IMAGE="${IMAGE:-aztecprotocol/aztec:0.67.1}"
172+
else
173+
# unknown network
174+
echo -e "${RED}Unknown network: $NETWORK${NC}"
175+
fi
176+
177+
# Check that bootnode, ethereum host, and image are set
178+
if [ -z "$BOOTNODE_URL" ] || [ -z "$ETHEREUM_HOST" ] || [ -z "$IMAGE" ]; then
179+
echo -e "${RED}Bootnode, Ethereum host, and image are required${NC}"
180+
exit 1
181+
fi
182+
183+
# get the node info
184+
get_node_info
185+
116186

117187
if [ -n "$CLI_P2P_PORT" ]; then
118188
P2P_PORT="$CLI_P2P_PORT"
@@ -184,25 +254,25 @@ DEBUG=aztec:*,-aztec:avm_simulator*,-aztec:circuits:artifact_hash,-aztec:libp2p_
184254
LOG_LEVEL=debug
185255
AZTEC_PORT=${PORT}
186256
P2P_ENABLED=true
187-
L1_CHAIN_ID=1337
257+
L1_CHAIN_ID=${L1_CHAIN_ID}
188258
PROVER_REAL_PROOFS=true
189259
PXE_PROVER_ENABLED=true
190260
ETHEREUM_SLOT_DURATION=12sec
191261
AZTEC_SLOT_DURATION=36
192262
AZTEC_EPOCH_DURATION=32
193263
AZTEC_EPOCH_PROOF_CLAIM_WINDOW_IN_L2_SLOTS=13
194-
ETHEREUM_HOST=http://34.48.76.131:8545
195-
BOOTSTRAP_NODES=enr:-Jq4QO_3szmgtG2cbEdnFDIhpGAQkc1HwfNy4-M6sG9QmQbPTmp9PMOHR3xslfR23hORiU-GpA7uM9uXw49lFcnuuvYGjWF6dGVjX25ldHdvcmsBgmlkgnY0gmlwhCIwTIOJc2VjcDI1NmsxoQKQTN17XKCwjYSSwmTc-6YzCMhd3v6Ofl8TS-WunX6LCoN0Y3CCndCDdWRwgp3Q
196-
REGISTRY_CONTRACT_ADDRESS=0x5fbdb2315678afecb367f032d93f642f64180aa3
197-
GOVERNANCE_PROPOSER_CONTRACT_ADDRESS=0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0
198-
FEE_JUICE_CONTRACT_ADDRESS=0xe7f1725e7734ce288f8367e1bb143e90bb3f0512
199-
ROLLUP_CONTRACT_ADDRESS=0x2279b7a0a67db372996a5fab50d91eaa73d2ebe6
200-
REWARD_DISTRIBUTOR_CONTRACT_ADDRESS=0x5fc8d32690cc91d4c39d9d3abcbd16989f875707
201-
GOVERNANCE_CONTRACT_ADDRESS=0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9
202-
COIN_ISSUER_CONTRACT_ADDRESS=0xdc64a140aa3e981100a9beca4e685f962f0cf6c9
203-
FEE_JUICE_PORTAL_CONTRACT_ADDRESS=0x0165878a594ca255338adfa4d48449f69242eb8f
204-
INBOX_CONTRACT_ADDRESS=0xed179b78d5781f93eb169730d8ad1be7313123f4
205-
OUTBOX_CONTRACT_ADDRESS=0x1016b5aaa3270a65c315c664ecb238b6db270b64
264+
ETHEREUM_HOST=${ETHEREUM_HOST}
265+
BOOTSTRAP_NODES=${BOOTSTRAP_NODES}
266+
REGISTRY_CONTRACT_ADDRESS=${REGISTRY_CONTRACT_ADDRESS}
267+
GOVERNANCE_PROPOSER_CONTRACT_ADDRESS=${GOVERNANCE_PROPOSER_CONTRACT_ADDRESS}
268+
FEE_JUICE_CONTRACT_ADDRESS=${FEE_JUICE_CONTRACT_ADDRESS}
269+
ROLLUP_CONTRACT_ADDRESS=${ROLLUP_CONTRACT_ADDRESS}
270+
REWARD_DISTRIBUTOR_CONTRACT_ADDRESS=${REWARD_DISTRIBUTOR_CONTRACT_ADDRESS}
271+
GOVERNANCE_CONTRACT_ADDRESS=${GOVERNANCE_CONTRACT_ADDRESS}
272+
COIN_ISSUER_CONTRACT_ADDRESS=${COIN_ISSUER_CONTRACT_ADDRESS}
273+
FEE_JUICE_PORTAL_CONTRACT_ADDRESS=${FEE_JUICE_PORTAL_CONTRACT_ADDRESS}
274+
INBOX_CONTRACT_ADDRESS=${INBOX_CONTRACT_ADDRESS}
275+
OUTBOX_CONTRACT_ADDRESS=${OUTBOX_CONTRACT_ADDRESS}
206276
P2P_UDP_LISTEN_ADDR=0.0.0.0:${P2P_PORT}
207277
P2P_TCP_LISTEN_ADDR=0.0.0.0:${P2P_PORT}
208278
DATA_DIRECTORY=/var/lib/aztec
@@ -216,7 +286,7 @@ services:
216286
network_mode: host
217287
restart: unless-stopped
218288
env_file: .env
219-
image: aztecprotocol/aztec:698cd3d62680629a3f1bfc0f82604534cedbccf3-${ARCH}
289+
image: ${IMAGE}
220290
entrypoint: >
221291
sh -c '
222292

0 commit comments

Comments
 (0)