Created
February 2, 2024 13:58
-
-
Save sainoe/8f1fc8354b4b63fe2dab57190bc3d304 to your computer and use it in GitHub Desktop.
Gaia upgrade with CCV enabled
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -eux | |
pkill -f cosmovisor interchain hermes &> /dev/null || true | |
./setup.sh | |
sleep 5 | |
./run-consumer.sh | |
sleep 5 | |
./upgrade.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -eux | |
GAIA_HOME=$HOME/.gaia | |
BINARY_VERSION=v15 | |
NODE_IP=localhost | |
CHAIN_ID=testchain | |
CONSUMER_CHAIN_ID=consumer | |
UPGRADE_NUM=1 | |
CONSUMER_HOME=$HOME/consumer | |
HERMES_BIN=hermes | |
export BINARY_HOME=$GAIA_HOME/cosmovisor/genesis/bin | |
export BINARY=$BINARY_HOME/gaiad | |
# Build consumer chain proposal file | |
tee consumer-proposal.json<<EOF | |
{ | |
"title": "Create a chain", | |
"description": "Gonna be a great chain", | |
"chain_id": "consumer", | |
"initial_height": { | |
"revision_height": 1 | |
}, | |
"genesis_hash": "Z2VuX2hhc2g=", | |
"binary_hash": "YmluX2hhc2g=", | |
"spawn_time": "2022-03-11T09:02:14.718477-08:00", | |
"deposit": "10000001stake", | |
"consumer_redistribution_fraction": "0.75", | |
"historical_entries": 1000, | |
"blocks_per_distribution_transmission": 1000, | |
"unbonding_period": 1728000000000000, | |
"ccv_timeout_period": 2419200000000000, | |
"transfer_timeout_period": 3600000000000 | |
} | |
EOF | |
# Submit consumer chain proposal | |
$BINARY tx gov submit-proposal consumer-addition \ | |
consumer-proposal.json \ | |
--gas auto \ | |
--gas-adjustment 1.5 \ | |
--from val \ | |
--home $GAIA_HOME \ | |
-b block \ | |
-y | |
sleep 5 | |
# Vote yes to proposal | |
$BINARY tx gov vote $UPGRADE_NUM yes --home ${GAIA_HOME} \ | |
--gas auto \ | |
--gas-adjustment 1.5 \ | |
--from val \ | |
--home $GAIA_HOME \ | |
-b block \ | |
-y | |
sleep 5 | |
# CONSUMER CHAIN ## | |
# Clean start | |
pkill -f interchain-security-cd &> /dev/null || true | |
rm -rf $CONSUMER_HOME | |
# Build genesis file and node directory structure | |
interchain-security-cd init val --chain-id consumer --home $CONSUMER_HOME | |
sleep 1 | |
# Create user account keypair | |
interchain-security-cd keys add val --home $CONSUMER_HOME --keyring-backend test --output json > $CONSUMER_HOME/val.json 2>&1 | |
# Add stake to user account | |
CONS_ACCOUNT_ADDR=$(jq -r '.address' $CONSUMER_HOME/val.json) | |
interchain-security-cd add-genesis-account $CONS_ACCOUNT_ADDR 1000000000stake --home $CONSUMER_HOME | |
sleep 5 | |
# Add consumer genesis states to genesis file | |
$BINARY query provider consumer-genesis consumer --home ${GAIA_HOME} -o json > consumer_gen.json | |
jq -s '.[0].app_state.ccvconsumer = .[1] | .[0]' $CONSUMER_HOME/config/genesis.json consumer_gen.json > $CONSUMER_HOME/edited_genesis.json \ | |
&& mv $CONSUMER_HOME/edited_genesis.json $CONSUMER_HOME/config/genesis.json | |
rm consumer_gen.json | |
# Create validator states | |
echo '{"height": "0","round": 0,"step": 0}' > $CONSUMER_HOME/data/priv_validator_state.json | |
# Copy validator key files | |
cp ${GAIA_HOME}/config/priv_validator_key.json $CONSUMER_HOME/config/priv_validator_key.json | |
cp ${GAIA_HOME}/config/node_key.json $CONSUMER_HOME/config/node_key.json | |
# Set default client port | |
sed -i -r "/node =/ s/= .*/= \"tcp:\/\/${NODE_IP}:26648\"/" $CONSUMER_HOME/config/client.toml | |
sed -i -r 's/block_sync = true/block_sync = false/g' $CONSUMER_HOME/config/config.toml | |
# Start gaia | |
interchain-security-cd start --home $CONSUMER_HOME \ | |
--rpc.laddr tcp://${NODE_IP}:26648 \ | |
--grpc.address ${NODE_IP}:9081 \ | |
--address tcp://${NODE_IP}:26645 \ | |
--p2p.laddr tcp://${NODE_IP}:26646 \ | |
--grpc-web.enable=false &> $CONSUMER_HOME/logs & | |
sleep 3 | |
# Setup Hermes in packet relayer mode | |
pkill -f hermes 2> /dev/null || true | |
tee ~/.hermes/config.toml<<EOF | |
[global] | |
log_level = "debug" | |
[mode] | |
[mode.clients] | |
enabled = true | |
refresh = true | |
misbehaviour = true | |
[mode.connections] | |
enabled = false | |
[mode.channels] | |
enabled = false | |
[mode.packets] | |
enabled = true | |
[[chains]] | |
id = "${CONSUMER_CHAIN_ID}" | |
ccv_consumer_chain = true | |
account_prefix = "cosmos" | |
clock_drift = "5s" | |
gas_multiplier = 1.1 | |
grpc_addr = "tcp://${NODE_IP}:9081" | |
key_name = "relayer" | |
max_gas = 2000000 | |
rpc_addr = "http://${NODE_IP}:26648" | |
rpc_timeout = "10s" | |
store_prefix = "ibc" | |
trusting_period = "2days" | |
event_source = { mode = 'push', url = 'ws://${NODE_IP}:26648/websocket' , batch_delay = '50ms' } | |
[chains.gas_price] | |
denom = "stake" | |
price = 0.00 | |
[chains.trust_threshold] | |
denominator = "3" | |
numerator = "1" | |
[[chains]] | |
id = "${CHAIN_ID}" | |
account_prefix = "cosmos" | |
clock_drift = "5s" | |
gas_multiplier = 1.1 | |
grpc_addr = "tcp://${NODE_IP}:9071" | |
key_name = "relayer" | |
max_gas = 2000000 | |
rpc_addr = "http://${NODE_IP}:26657" | |
rpc_timeout = "10s" | |
store_prefix = "ibc" | |
trusting_period = "2days" | |
event_source = { mode = 'push', url = 'ws://${NODE_IP}:26657/websocket' , batch_delay = '50ms' } | |
[chains.gas_price] | |
denom = "stake" | |
price = 0.00 | |
[chains.trust_threshold] | |
denominator = "3" | |
numerator = "1" | |
EOF | |
# Delet_e all previous keys in relayer | |
$HERMES_BIN keys delete --chain $CHAIN_ID --all | |
$HERMES_BIN keys delete --chain $CONSUMER_CHAIN_ID --all | |
# Restore keys to hermes relayer | |
$HERMES_BIN keys add --key-file $CONSUMER_HOME/val.json --chain $CONSUMER_CHAIN_ID | |
$HERMES_BIN keys add --key-file ${GAIA_HOME}/val.json --chain $CHAIN_ID | |
sleep 5 | |
$HERMES_BIN create connection \ | |
--a-chain consumer \ | |
--a-client 07-tendermint-0 \ | |
--b-client 07-tendermint-0 | |
$HERMES_BIN create channel \ | |
--a-chain consumer \ | |
--a-port consumer \ | |
--b-port provider \ | |
--order ordered \ | |
--channel-version 1 \ | |
--a-connection connection-0 | |
sleep 5 | |
$HERMES_BIN --config ~/.hermes/config.toml start &> ~/.hermes/hermes.log & | |
PROV_ACCOUNT_ADDR=$(jq -r '.address' $GAIA_HOME/val.json) | |
DELEGATIONS=$($BINARY q staking delegations $PROV_ACCOUNT_ADDR --home ${GAIA_HOME} -o json) | |
OPERATOR_ADDR=$(echo $DELEGATIONS | jq -r '.delegation_responses[0].delegation.validator_address') | |
$BINARY tx staking delegate $OPERATOR_ADDR 1000000stake \ | |
--from val \ | |
--keyring-backend test \ | |
--home ${GAIA_HOME} \ | |
--chain-id testchain \ | |
-y -b block | |
sleep 5 | |
$BINARY q tendermint-validator-set --home ${GAIA_HOME} | |
$BINARY q tendermint-validator-set --home ${CONSUMER_HOME} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -eux | |
echo "**** testing Gaia v15 parameters migration ****" | |
GAIA_HOME=$HOME/.gaia | |
CHAIN_ID=testchain | |
pkill -f gaiad &> /dev/null || true | |
pkill -f cosmovisor &> /dev/null || true | |
rm -rf $GAIA_HOME | |
rm -rf ./gaia | |
export OLDBINARY_VERSION=v14.1.0 | |
export NEWBINARY_VERSION=v15.0.0 | |
export UPGRADE_NAME_LOWERCASE=v15 | |
# install both v9 and v10 binaries | |
export OLDBINARY_URL="https://github.com/cosmos/gaia/releases/download/${OLDBINARY_VERSION}/gaiad-${OLDBINARY_VERSION}-darwin-arm64" | |
export NEWBINARY_URL="https://github.com/cosmos/gaia/releases/download/${NEWBINARY_VERSION}/gaiad-${NEWBINARY_VERSION}-darwin-amd64" | |
export OLDBINARY_HOME=$GAIA_HOME/cosmovisor/genesis/bin | |
export NEWBINARY_HOME=$GAIA_HOME/cosmovisor/upgrades/${UPGRADE_NAME_LOWERCASE}/bin | |
export OLDBINARY=$OLDBINARY_HOME/gaiad | |
export NEWBINARY=$NEWBINARY_HOME/gaiad | |
####### RUN CACHED BINARY ########## | |
mkdir -p $OLDBINARY_HOME | |
mkdir -p $NEWBINARY_HOME | |
cp ./cosmovisor/genesis/bin/* $OLDBINARY_HOME | |
cp ./cosmovisor/upgrades/${UPGRADE_NAME_LOWERCASE}/bin/* $NEWBINARY_HOME | |
cd $GAIA_HOME | |
################################### | |
# mkdir -p $OLDBINARY_HOME | |
# curl -LJ -o $OLDBINARY $OLDBINARY_URL | |
# chmod +x $OLDBINARY | |
# mkdir -p $NEWBINARY_HOME | |
# ## TO BE CHANGED WHEN BINARY ARE AVAILABLE FOR v10 RELEASE | |
# git clone https://github.com/cosmos/gaia.git | |
# cd gaia | |
# git checkout main | |
# make build | |
# cp ./build/gaiad $NEWBINARY_HOME | |
# #### | |
# # curl -LJ -o $NEWBINARY $NEWBINARY_URL | |
# # chmod +x $NEWBINARY | |
# ### | |
# cd $GAIA_HOME | |
echo "install the latest cosmovisor" | |
go install github.com/cosmos/cosmos-sdk/cosmovisor/cmd/cosmovisor@latest | |
export DAEMON_NAME=gaiad | |
# export DAEMON_HOME=$(pwd -P)/$GAIA_HOME | |
export DAEMON_HOME=$GAIA_HOME | |
export DAEMON_RESTART_AFTER_UPGRADE=true | |
export BROADCAST_MODE=block | |
echo "setup gaia home" | |
$OLDBINARY init mynode0 --chain-id $CHAIN_ID --home $GAIA_HOME | |
$OLDBINARY config chain-id $CHAIN_ID --home $GAIA_HOME | |
$OLDBINARY config keyring-backend test --home $GAIA_HOME | |
$OLDBINARY config broadcast-mode $BROADCAST_MODE --home $GAIA_HOME | |
$OLDBINARY config node tcp://localhost:26657 --home $GAIA_HOME | |
# Generate Genesis Accounts | |
$OLDBINARY keys add val --home $GAIA_HOME \ | |
--output json > $GAIA_HOME/val.json 2>&1 | |
$OLDBINARY add-genesis-account $($OLDBINARY keys show val -a --home $GAIA_HOME) 10000000000000000000stake --home $GAIA_HOME | |
$OLDBINARY gentx val 10000000000stake --chain-id $CHAIN_ID --home $GAIA_HOME | |
$OLDBINARY collect-gentxs --home $GAIA_HOME | |
#Configure App | |
sed -i '' 's/minimum-gas-prices = ""/minimum-gas-prices = "0stake"/g' $GAIA_HOME/config/app.toml | |
# Configure Gov Params | |
# min deposition amount | |
sed -i '' 's%"amount": "10000000",%"amount": "1",%g' $GAIA_HOME/config/genesis.json | |
# min voting power that a proposal requires in order to be a valid proposal | |
sed -i '' 's%"quorum": "0.334000000000000000",%"quorum": "0.000000000000000001",%g' $GAIA_HOME/config/genesis.json | |
# the minimum proportion of "yes" votes requires for the proposal to pass | |
sed -i '' 's%"threshold": "0.500000000000000000",%"threshold": "0.000000000000000001",%g' $GAIA_HOME/config/genesis.json | |
# voting period | |
sed -i '' 's%"voting_period": "172800s"%"voting_period": "10s"%g' $GAIA_HOME/config/genesis.json | |
sed -i '' 's%"veto_threshold": "0.334000000000000000",%"veto_threshold": "0.000000000000000001",%g' $GAIA_HOME/config/genesis.json | |
cosmovisor run start --home $GAIA_HOME --x-crisis-skip-assert-invariants \ | |
--grpc.address localhost:9071 \ | |
--grpc-web.enable=false &> gaia.log & | |
sleep 2 | |
gaiad status --log_format json 2>&1 | jq . |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
export GAIA_HOME=$HOME/.gaia | |
export UPGRADE_NAME_LOWERCASE=v15 | |
export UPGRADE_HEIGHT=30 | |
export UPGRADE_NUM=2 | |
export OLDBINARY_HOME=$GAIA_HOME/cosmovisor/genesis/bin | |
export NEWBINARY_HOME=$GAIA_HOME/cosmovisor/upgrades/${UPGRADE_NAME_LOWERCASE}/bin | |
export OLDBINARY=$OLDBINARY_HOME/gaiad | |
export NEWBINARY=$NEWBINARY_HOME/gaiad | |
export NODEADDR=http://localhost | |
$OLDBINARY tx gov submit-proposal software-upgrade $UPGRADE_NAME_LOWERCASE \ | |
--upgrade-height $UPGRADE_HEIGHT \ | |
--title $UPGRADE_NAME_LOWERCASE \ | |
--description "upgrade" \ | |
--deposit 100000000stake \ | |
--gas-prices 0.025stake \ | |
--from val \ | |
--home $GAIA_HOME \ | |
-y | |
sleep 5 | |
$OLDBINARY tx gov vote $UPGRADE_NUM yes \ | |
--gas-prices 0.025stake \ | |
--from val \ | |
--home $GAIA_HOME \ | |
-y | |
# wait the upgrade to be executed | |
while [ true ]; do | |
curr_block=$(curl -s $NODEADDR:26657/status | jq -r '.result.sync_info.latest_block_height') | |
echo current block $curr_block waiting for upgrade at block $UPGRADE_HEIGHT | |
if [[ ${curr_block} -gt $UPGRADE_HEIGHT ]]; then | |
sleep 5 | |
break | |
fi | |
sleep 5 | |
done | |
# cd |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment