@@ -151,10 +151,12 @@ VAULT_NUMBERS=(
151151 4 # CRV clob pair ID
152152)
153153
154+ PREUPGRADE_BINARY_PATH=" /bin/dydxprotocold_preupgrade"
155+
154156# Define dependencies for this script.
155157# `jq` and `dasel` are used to manipulate json and yaml files respectively.
156158install_prerequisites () {
157- apk add dasel jq
159+ apk add curl dasel jq
158160}
159161
160162# Create all validators for the chain including a full-node.
@@ -164,7 +166,7 @@ create_validators() {
164166 for i in " ${! FULL_NODE_KEYS[@]} " ; do
165167 FULL_NODE_HOME_DIR=" $HOME /chain/.full-node-$i "
166168 FULL_NODE_CONFIG_DIR=" $FULL_NODE_HOME_DIR /config"
167- dydxprotocold init " full-node" -o --chain-id=$CHAIN_ID --home " $FULL_NODE_HOME_DIR "
169+ $PREUPGRADE_BINARY_PATH init " full-node" -o --chain-id=$CHAIN_ID --home " $FULL_NODE_HOME_DIR "
168170
169171 # Note: `dydxprotocold init` non-deterministically creates `node_id.json` for each validator.
170172 # This is inconvenient for persistent peering during testing in Terraform configuration as the `node_id`
@@ -186,10 +188,10 @@ create_validators() {
186188 VAL_CONFIG_DIR=" $VAL_HOME_DIR /config"
187189
188190 # Initialize the chain and validator files.
189- dydxprotocold init " ${MONIKERS[$i]} " -o --chain-id=$CHAIN_ID --home " $VAL_HOME_DIR "
191+ $PREUPGRADE_BINARY_PATH init " ${MONIKERS[$i]} " -o --chain-id=$CHAIN_ID --home " $VAL_HOME_DIR "
190192
191193 # Overwrite the randomly generated `priv_validator_key.json` with a key generated deterministically from the mnemonic.
192- dydxprotocold tendermint gen-priv-key --home " $VAL_HOME_DIR " --mnemonic " ${MNEMONICS[$i]} "
194+ $PREUPGRADE_BINARY_PATH tendermint gen-priv-key --home " $VAL_HOME_DIR " --mnemonic " ${MNEMONICS[$i]} "
193195
194196 # Note: `dydxprotocold init` non-deterministically creates `node_id.json` for each validator.
195197 # This is inconvenient for persistent peering during testing in Terraform configuration as the `node_id`
@@ -201,7 +203,7 @@ create_validators() {
201203
202204 edit_config " $VAL_CONFIG_DIR "
203205
204- echo " ${MNEMONICS[$i]} " | dydxprotocold keys add " ${MONIKERS[$i]} " --recover --keyring-backend=test --home " $VAL_HOME_DIR "
206+ echo " ${MNEMONICS[$i]} " | $PREUPGRADE_BINARY_PATH keys add " ${MONIKERS[$i]} " --recover --keyring-backend=test --home " $VAL_HOME_DIR "
205207
206208 # Using "*" as a subscript results in a single arg: "dydx1... dydx1... dydx1..."
207209 # Using "@" as a subscript results in separate args: "dydx1..." "dydx1..." "dydx1..."
@@ -211,13 +213,13 @@ create_validators() {
211213 update_genesis_complete_bridge_delay " $VAL_CONFIG_DIR " " 600"
212214
213215 for acct in " ${TEST_ACCOUNTS[@]} " ; do
214- dydxprotocold add-genesis-account " $acct " 100000000000000000$USDC_DENOM ,$TESTNET_VALIDATOR_NATIVE_TOKEN_BALANCE$NATIVE_TOKEN --home " $VAL_HOME_DIR "
216+ $PREUPGRADE_BINARY_PATH add-genesis-account " $acct " 100000000000000000$USDC_DENOM ,$TESTNET_VALIDATOR_NATIVE_TOKEN_BALANCE$NATIVE_TOKEN --home " $VAL_HOME_DIR "
215217 done
216218 for acct in " ${FAUCET_ACCOUNTS[@]} " ; do
217- dydxprotocold add-genesis-account " $acct " 900000000000000000$USDC_DENOM ,$TESTNET_VALIDATOR_NATIVE_TOKEN_BALANCE$NATIVE_TOKEN --home " $VAL_HOME_DIR "
219+ $PREUPGRADE_BINARY_PATH add-genesis-account " $acct " 900000000000000000$USDC_DENOM ,$TESTNET_VALIDATOR_NATIVE_TOKEN_BALANCE$NATIVE_TOKEN --home " $VAL_HOME_DIR "
218220 done
219221
220- dydxprotocold gentx " ${MONIKERS[$i]} " $TESTNET_VALIDATOR_SELF_DELEGATE_AMOUNT$NATIVE_TOKEN --moniker=" ${MONIKERS[$i]} " --keyring-backend=test --chain-id=$CHAIN_ID --home " $VAL_HOME_DIR "
222+ $PREUPGRADE_BINARY_PATH gentx " ${MONIKERS[$i]} " $TESTNET_VALIDATOR_SELF_DELEGATE_AMOUNT$NATIVE_TOKEN --moniker=" ${MONIKERS[$i]} " --keyring-backend=test --chain-id=$CHAIN_ID --home " $VAL_HOME_DIR "
221223
222224 # Copy the gentx to a shared directory.
223225 cp -a " $VAL_CONFIG_DIR /gentx/." /tmp/gentx
@@ -232,7 +234,7 @@ create_validators() {
232234 cp -r /tmp/gentx " $FIRST_VAL_CONFIG_DIR "
233235
234236 # Build the final genesis.json file that all validators and the full-nodes will use.
235- dydxprotocold collect-gentxs --home " $FIRST_VAL_HOME_DIR "
237+ $PREUPGRADE_BINARY_PATH collect-gentxs --home " $FIRST_VAL_HOME_DIR "
236238
237239 # Copy this genesis file to each of the other validators
238240 for i in " ${! MONIKERS[@]} " ; do
@@ -256,21 +258,34 @@ create_validators() {
256258 done
257259}
258260
261+ setup_preupgrade_binary () {
262+ tar_url=' https://github.com/dydxprotocol/v4-chain/releases/download/protocol%2Fv9.2.1/dydxprotocold-v9.2.1-linux-amd64.tar.gz'
263+ tar_path=' /tmp/dydxprotocold/dydxprotocold.tar.gz'
264+ mkdir -p /tmp/dydxprotocold
265+ curl -vL $tar_url -o $tar_path
266+ dydxprotocold_path=$( tar -xvf $tar_path --directory /tmp/dydxprotocold)
267+ mv /tmp/dydxprotocold/$dydxprotocold_path $PREUPGRADE_BINARY_PATH
268+ }
269+
259270setup_cosmovisor () {
260271 for i in " ${! FULL_NODE_KEYS[@]} " ; do
261272 FULL_NODE_HOME_DIR=" $HOME /chain/.full-node-$i "
262273 export DAEMON_NAME=dydxprotocold
263274 export DAEMON_HOME=" $HOME /chain/.full-node-$i "
264275
265- cosmovisor init /bin/dydxprotocold
276+ cosmovisor init $PREUPGRADE_BINARY_PATH
277+ mkdir -p " $FULL_NODE_HOME_DIR /cosmovisor/upgrades/v9.3/bin/"
278+ ln -s /bin/dydxprotocold " $FULL_NODE_HOME_DIR /cosmovisor/upgrades/v9.3/bin/dydxprotocold"
266279 done
267280
268281 for i in " ${! MONIKERS[@]} " ; do
269282 VAL_HOME_DIR=" $HOME /chain/.${MONIKERS[$i]} "
270283 export DAEMON_NAME=dydxprotocold
271284 export DAEMON_HOME=" $HOME /chain/.${MONIKERS[$i]} "
272285
273- cosmovisor init /bin/dydxprotocold
286+ cosmovisor init $PREUPGRADE_BINARY_PATH
287+ mkdir -p " $VAL_HOME_DIR /cosmovisor/upgrades/v9.3/bin/"
288+ ln -s /bin/dydxprotocold " $VAL_HOME_DIR /cosmovisor/upgrades/v9.3/bin/dydxprotocold"
274289 done
275290}
276291
@@ -289,5 +304,6 @@ edit_config() {
289304}
290305
291306install_prerequisites
307+ setup_preupgrade_binary
292308create_validators
293309setup_cosmovisor
0 commit comments