@@ -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,7 +188,7 @@ 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.
192194 dydxprotocold tendermint gen-priv-key --home " $VAL_HOME_DIR " --mnemonic " ${MNEMONICS[$i]} "
@@ -217,7 +219,7 @@ create_validators() {
217219 dydxprotocold 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
@@ -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%2Fv4.1.0/dydxprotocold-v4.1.0-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 /bin/dydxprotocold_preupgrade
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/v5.0.0/bin/"
278+ ln -s /bin/dydxprotocold " $FULL_NODE_HOME_DIR /cosmovisor/upgrades/v5.0.0/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/v5.0.0/bin/"
288+ ln -s /bin/dydxprotocold " $VAL_HOME_DIR /cosmovisor/upgrades/v5.0.0/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