Skip to content

Commit fb490cd

Browse files
teddydingjusbar23
authored andcommitted
setup upgrade from v4.1.0 on chain on v5.x
1 parent 0e18ac5 commit fb490cd

File tree

7 files changed

+93
-70
lines changed

7 files changed

+93
-70
lines changed

.github/workflows/protocol-build-and-push-snapshot.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ name: Protocol Build & Push Image to AWS ECR
33
on: # yamllint disable-line rule:truthy
44
push:
55
branches:
6+
- td/upgrade-test-at-v5-branch
67
- main
78
- 'release/protocol/v[0-9]+.[0-9]+.x' # e.g. release/protocol/v0.1.x
89
- 'release/protocol/v[0-9]+.x' # e.g. release/protocol/v1.x

.github/workflows/protocol-build-and-push.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ name: Protocol Build & Push Image to AWS ECR
33
on: # yamllint disable-line rule:truthy
44
push:
55
branches:
6+
- td/upgrade-test-at-v5-branch
67
- main
78
- 'release/protocol/v[0-9]+.[0-9]+.x' # e.g. release/protocol/v0.1.x
89
- 'release/protocol/v[0-9]+.x' # e.g. release/protocol/v1.x

protocol/testing/genesis.sh

Lines changed: 14 additions & 53 deletions
Large diffs are not rendered by default.

protocol/testing/snapshotting/snapshot.sh

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ now_date() {
5151
echo -n $(TZ="UTC" date '+%Y-%m-%d_%H:%M:%S')
5252
}
5353

54+
PREUPGRADE_BINARY_PATH="/bin/dydxprotocold_preupgrade"
55+
5456
install_prerequisites() {
5557
apk add dasel jq curl
5658
apk add --no-cache \
@@ -62,12 +64,23 @@ install_prerequisites() {
6264
&& rm -rf /var/cache/apk/*
6365
}
6466

67+
setup_preupgrade_binary() {
68+
tar_url='https://github.com/dydxprotocol/v4-chain/releases/download/protocol%2Fv4.1.0/dydxprotocold-v4.1.0-linux-amd64.tar.gz'
69+
tar_path='/tmp/dydxprotocold/dydxprotocold.tar.gz'
70+
mkdir -p /tmp/dydxprotocold
71+
curl -vL $tar_url -o $tar_path
72+
dydxprotocold_path=$(tar -xvf $tar_path --directory /tmp/dydxprotocold)
73+
mv /tmp/dydxprotocold/$dydxprotocold_path $PREUPGRADE_BINARY_PATH
74+
}
75+
6576
setup_cosmovisor() {
6677
VAL_HOME_DIR="$HOME/chain/local_node"
6778
export DAEMON_NAME=dydxprotocold
6879
export DAEMON_HOME="$HOME/chain/local_node"
6980

70-
cosmovisor init /bin/dydxprotocold
81+
cosmovisor init $PREUPGRADE_BINARY_PATH
82+
mkdir -p "$VAL_HOME_DIR/cosmovisor/upgrades/v5.0.0/bin/"
83+
ln -s /bin/dydxprotocold "$VAL_HOME_DIR/cosmovisor/upgrades/v5.0.0/bin/dydxprotocold"
7184
}
7285

7386
install_prerequisites
@@ -96,6 +109,7 @@ sed -i 's/min-retain-blocks = 0/min-retain-blocks = 2/' /dydxprotocol/chain/loca
96109
# Do not index tx_index.db
97110
sed -i 's/indexer = "kv"/indexer = "null"/' /dydxprotocol/chain/local_node/config/config.toml
98111

112+
setup_preupgrade_binary
99113
setup_cosmovisor
100114

101115
# TODO: add metrics around snapshot upload latency/frequency/success rate

protocol/testing/testnet-dev/dev.sh

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,12 @@ VAULT_NUMBERS=(
9797
4 # CRV clob pair ID
9898
)
9999

100+
PREUPGRADE_BINARY_PATH="/bin/dydxprotocold_preupgrade"
101+
100102
# Define dependencies for this script.
101103
# `jq` and `dasel` are used to manipulate json and yaml files respectively.
102104
install_prerequisites() {
103-
apk add dasel jq
105+
apk add curl dasel jq
104106
}
105107

106108
# Create all validators for the chain including a full-node.
@@ -110,7 +112,7 @@ create_validators() {
110112
for i in "${!FULL_NODE_KEYS[@]}"; do
111113
FULL_NODE_HOME_DIR="$HOME/chain/.full-node-$i"
112114
FULL_NODE_CONFIG_DIR="$FULL_NODE_HOME_DIR/config"
113-
dydxprotocold init "full-node" -o --chain-id=$CHAIN_ID --home "$FULL_NODE_HOME_DIR"
115+
$PREUPGRADE_BINARY_PATH init "full-node" -o --chain-id=$CHAIN_ID --home "$FULL_NODE_HOME_DIR"
114116

115117
# Note: `dydxprotocold init` non-deterministically creates `node_id.json` for each validator.
116118
# This is inconvenient for persistent peering during testing in Terraform configuration as the `node_id`
@@ -132,7 +134,7 @@ create_validators() {
132134
VAL_CONFIG_DIR="$VAL_HOME_DIR/config"
133135

134136
# Initialize the chain and validator files.
135-
dydxprotocold init "${MONIKERS[$i]}" -o --chain-id=$CHAIN_ID --home "$VAL_HOME_DIR"
137+
$PREUPGRADE_BINARY_PATH init "${MONIKERS[$i]}" -o --chain-id=$CHAIN_ID --home "$VAL_HOME_DIR"
136138

137139
# Overwrite the randomly generated `priv_validator_key.json` with a key generated deterministically from the mnemonic.
138140
dydxprotocold tendermint gen-priv-key --home "$VAL_HOME_DIR" --mnemonic "${MNEMONICS[$i]}"
@@ -163,7 +165,7 @@ create_validators() {
163165
dydxprotocold add-genesis-account "$acct" 900000000000000000$USDC_DENOM,$TESTNET_VALIDATOR_NATIVE_TOKEN_BALANCE$NATIVE_TOKEN --home "$VAL_HOME_DIR"
164166
done
165167

166-
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"
168+
$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"
167169

168170
# Copy the gentx to a shared directory.
169171
cp -a "$VAL_CONFIG_DIR/gentx/." /tmp/gentx
@@ -202,21 +204,34 @@ create_validators() {
202204
done
203205
}
204206

207+
setup_preupgrade_binary() {
208+
tar_url='https://github.com/dydxprotocol/v4-chain/releases/download/protocol%2Fv4.1.0/dydxprotocold-v4.1.0-linux-amd64.tar.gz'
209+
tar_path='/tmp/dydxprotocold/dydxprotocold.tar.gz'
210+
mkdir -p /tmp/dydxprotocold
211+
curl -vL $tar_url -o $tar_path
212+
dydxprotocold_path=$(tar -xvf $tar_path --directory /tmp/dydxprotocold)
213+
mv /tmp/dydxprotocold/$dydxprotocold_path $PREUPGRADE_BINARY_PATH
214+
}
215+
205216
setup_cosmovisor() {
206217
for i in "${!FULL_NODE_KEYS[@]}"; do
207218
FULL_NODE_HOME_DIR="$HOME/chain/.full-node-$i"
208219
export DAEMON_NAME=dydxprotocold
209220
export DAEMON_HOME="$HOME/chain/.full-node-$i"
210221

211-
cosmovisor init /bin/dydxprotocold
222+
cosmovisor init $PREUPGRADE_BINARY_PATH
223+
mkdir -p "$FULL_NODE_HOME_DIR/cosmovisor/upgrades/v5.0.0/bin/"
224+
ln -s /bin/dydxprotocold "$FULL_NODE_HOME_DIR/cosmovisor/upgrades/v5.0.0/bin/dydxprotocold"
212225
done
213226

214227
for i in "${!MONIKERS[@]}"; do
215228
VAL_HOME_DIR="$HOME/chain/.${MONIKERS[$i]}"
216229
export DAEMON_NAME=dydxprotocold
217230
export DAEMON_HOME="$HOME/chain/.${MONIKERS[$i]}"
218231

219-
cosmovisor init /bin/dydxprotocold
232+
cosmovisor init $PREUPGRADE_BINARY_PATH
233+
mkdir -p "$VAL_HOME_DIR/cosmovisor/upgrades/v5.0.0/bin/"
234+
ln -s /bin/dydxprotocold "$VAL_HOME_DIR/cosmovisor/upgrades/v5.0.0/bin/dydxprotocold"
220235
done
221236
}
222237

@@ -235,5 +250,6 @@ edit_config() {
235250
}
236251

237252
install_prerequisites
253+
setup_preupgrade_binary
238254
create_validators
239255
setup_cosmovisor

protocol/testing/testnet-local/local.sh

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,12 @@ VAULT_NUMBERS=(
7575
1 # ETH clob pair ID
7676
)
7777

78+
PREUPGRADE_BINARY_PATH="/bin/dydxprotocold_preupgrade"
79+
7880
# Define dependencies for this script.
7981
# `jq` and `dasel` are used to manipulate json and yaml files respectively.
8082
install_prerequisites() {
81-
apk add dasel jq
83+
apk add curl dasel jq
8284
}
8385

8486
# Create all validators for the chain including a full-node.
@@ -93,7 +95,7 @@ create_validators() {
9395
VAL_CONFIG_DIR="$VAL_HOME_DIR/config"
9496

9597
# Initialize the chain and validator files.
96-
dydxprotocold init "${MONIKERS[$i]}" -o --chain-id=$CHAIN_ID --home "$VAL_HOME_DIR"
98+
$PREUPGRADE_BINARY_PATH init "${MONIKERS[$i]}" -o --chain-id=$CHAIN_ID --home "$VAL_HOME_DIR"
9799

98100
# Overwrite the randomly generated `priv_validator_key.json` with a key generated deterministically from the mnemonic.
99101
dydxprotocold tendermint gen-priv-key --home "$VAL_HOME_DIR" --mnemonic "${MNEMONICS[$i]}"
@@ -126,7 +128,7 @@ create_validators() {
126128
dydxprotocold add-genesis-account "$acct" 900000000000000000$USDC_DENOM,$TESTNET_VALIDATOR_NATIVE_TOKEN_BALANCE$NATIVE_TOKEN --home "$VAL_HOME_DIR"
127129
done
128130

129-
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"
131+
$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"
130132

131133
# Copy the gentx to a shared directory.
132134
cp -a "$VAL_CONFIG_DIR/gentx/." /tmp/gentx
@@ -157,13 +159,24 @@ create_validators() {
157159
done
158160
}
159161

162+
setup_preupgrade_binary() {
163+
tar_url='https://github.com/dydxprotocol/v4-chain/releases/download/protocol%2Fv4.1.0/dydxprotocold-v4.1.0-linux-amd64.tar.gz'
164+
tar_path='/tmp/dydxprotocold/dydxprotocold.tar.gz'
165+
mkdir -p /tmp/dydxprotocold
166+
curl -vL $tar_url -o $tar_path
167+
dydxprotocold_path=$(tar -xvf $tar_path --directory /tmp/dydxprotocold)
168+
mv /tmp/dydxprotocold/$dydxprotocold_path $PREUPGRADE_BINARY_PATH
169+
}
170+
160171
setup_cosmovisor() {
161172
for i in "${!MONIKERS[@]}"; do
162173
VAL_HOME_DIR="$HOME/chain/.${MONIKERS[$i]}"
163174
export DAEMON_NAME=dydxprotocold
164175
export DAEMON_HOME="$HOME/chain/.${MONIKERS[$i]}"
165176

166-
cosmovisor init /bin/dydxprotocold
177+
cosmovisor init $PREUPGRADE_BINARY_PATH
178+
mkdir -p "$VAL_HOME_DIR/cosmovisor/upgrades/v5.0.0/bin/"
179+
ln -s /bin/dydxprotocold "$VAL_HOME_DIR/cosmovisor/upgrades/v5.0.0/bin/dydxprotocold"
167180
done
168181
}
169182

@@ -193,5 +206,6 @@ edit_config() {
193206
}
194207

195208
install_prerequisites
209+
setup_preupgrade_binary
196210
create_validators
197211
setup_cosmovisor

protocol/testing/testnet-staging/staging.sh

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
156158
install_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+
259270
setup_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

291306
install_prerequisites
307+
setup_preupgrade_binary
292308
create_validators
293309
setup_cosmovisor

0 commit comments

Comments
 (0)