1
1
#! /bin/bash
2
2
3
+ set -e
4
+
3
5
# Colors and formatting
4
6
BLUE=' \033[0;34m'
5
7
GREEN=' \033[0;32m'
@@ -8,18 +10,34 @@ YELLOW='\033[1;33m'
8
10
NC=' \033[0m' # No Color
9
11
10
12
# Global variables
11
- ARCH=$( uname -m)
12
13
DEFAULT_P2P_PORT=" 40400"
13
14
DEFAULT_PORT=" 8080"
14
15
DEFAULT_KEY=" 0x0000000000000000000000000000000000000000000000000000000000000001"
15
16
# Try to get default IP from ipify API, otherwise leave empty to require user input
16
17
DEFAULT_IP=$( curl -s --connect-timeout 5 https://api.ipify.org? format=json | grep -o ' "ip":"[^"]*' | cut -d' "' -f4 || echo " " )
17
18
DEFAULT_BIND_MOUNT_DIR=" $HOME /aztec-data"
18
19
20
+
19
21
# Parse command line arguments
20
22
parse_args () {
21
23
while [[ $# -gt 0 ]]; do
22
24
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
+ ;;
23
41
-p|--port)
24
42
CLI_PORT=" $2 "
25
43
shift 2
@@ -107,12 +125,64 @@ get_public_ip() {
107
125
fi
108
126
}
109
127
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
+
110
154
# Configure environment
111
155
configure_environment () {
112
156
local args=(" $@ " )
113
157
parse_args " ${args[@]} "
114
158
115
159
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
+
116
186
117
187
if [ -n " $CLI_P2P_PORT " ]; then
118
188
P2P_PORT=" $CLI_P2P_PORT "
@@ -184,25 +254,25 @@ DEBUG=aztec:*,-aztec:avm_simulator*,-aztec:circuits:artifact_hash,-aztec:libp2p_
184
254
LOG_LEVEL=debug
185
255
AZTEC_PORT=${PORT}
186
256
P2P_ENABLED=true
187
- L1_CHAIN_ID=1337
257
+ L1_CHAIN_ID=${L1_CHAIN_ID}
188
258
PROVER_REAL_PROOFS=true
189
259
PXE_PROVER_ENABLED=true
190
260
ETHEREUM_SLOT_DURATION=12sec
191
261
AZTEC_SLOT_DURATION=36
192
262
AZTEC_EPOCH_DURATION=32
193
263
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}
206
276
P2P_UDP_LISTEN_ADDR=0.0.0.0:${P2P_PORT}
207
277
P2P_TCP_LISTEN_ADDR=0.0.0.0:${P2P_PORT}
208
278
DATA_DIRECTORY=/var/lib/aztec
@@ -216,7 +286,7 @@ services:
216
286
network_mode: host
217
287
restart: unless-stopped
218
288
env_file: .env
219
- image: aztecprotocol/aztec:698cd3d62680629a3f1bfc0f82604534cedbccf3- ${ARCH }
289
+ image: ${IMAGE }
220
290
entrypoint: >
221
291
sh -c '
222
292
0 commit comments