From 936c33fa39350c6fe2aeba8813057a1a03575595 Mon Sep 17 00:00:00 2001 From: riley-stride <104941670+riley-stride@users.noreply.github.com> Date: Tue, 23 May 2023 21:08:31 -0400 Subject: [PATCH] Changes required to get local to mainnet testing working with Umee (#776) Closes: #XXX ## Context and purpose of the change ## Brief Changelog ## Author's Checklist I have... - [ ] Run and PASSED locally all GAIA integration tests - [ ] If the change is contentful, I either: - [ ] Added a new unit test OR - [ ] Added test cases to existing unit tests - [ ] OR this change is a trivial rework / code cleanup without any test coverage If skipped any of the tests above, explain. ## Reviewers Checklist *All items are required. Please add a note if the item is not applicable and please add your handle next to the items reviewed if you only reviewed selected items.* I have... - [ ] reviewed state machine logic - [ ] reviewed API design and naming - [ ] manually tested (if applicable) - [ ] confirmed the author wrote unit tests for new logic - [ ] reviewed documentation exists and is accurate ## Documentation and Release Note - [ ] Does this pull request introduce a new feature or user-facing behavior changes? - [ ] Is a relevant changelog entry added to the `Unreleased` section in `CHANGELOG.md`? - [ ] This pull request updates existing proto field values (and require a backend and frontend migration)? - [ ] Does this pull request change existing proto field names (and require a frontend migration)? How is the feature or change documented? - [ ] not applicable - [ ] jira ticket `XXX` - [ ] specification (`x//spec/`) - [ ] README.md - [ ] not documented --- Makefile | 11 +++++ scripts/local-to-mainnet/README.md | 2 +- scripts/local-to-mainnet/commands.sh | 26 +++++------ scripts/local-to-mainnet/start.sh | 45 ++++++++++--------- .../local-to-mainnet/templates/commands.sh | 26 +++++------ .../templates/relayer_config.yaml | 5 ++- 6 files changed, 62 insertions(+), 53 deletions(-) diff --git a/Makefile b/Makefile index 624239ee3..694079007 100644 --- a/Makefile +++ b/Makefile @@ -11,6 +11,7 @@ DOCKERNET_COMPOSE_FILE=$(DOCKERNET_HOME)/docker-compose.yml LOCALSTRIDE_HOME=./testutil/localstride LOCALNET_COMPOSE_FILE=$(LOCALSTRIDE_HOME)/localnet/docker-compose.yml STATE_EXPORT_COMPOSE_FILE=$(LOCALSTRIDE_HOME)/state-export/docker-compose.yml +LOCAL_TO_MAIN_COMPOSE_FILE=./scripts/local-to-mainnet/docker-compose.yml # process build tags @@ -140,6 +141,16 @@ upgrade-submit: upgrade-validate: PART=2 bash $(DOCKERNET_HOME)/tests/run_tests_upgrade.sh + +############################################################################### +### Local to Mainnet ### +############################################################################### +start-local-to-main: + bash scripts/local-to-mainnet/start.sh + +stop-local-to-main: + docker-compose -f $(LOCAL_TO_MAIN_COMPOSE_FILE) down + ############################################################################### ### Protobuf ### ############################################################################### diff --git a/scripts/local-to-mainnet/README.md b/scripts/local-to-mainnet/README.md index a2a332c68..66919627f 100644 --- a/scripts/local-to-mainnet/README.md +++ b/scripts/local-to-mainnet/README.md @@ -18,7 +18,7 @@ make build-docker build=srh{n} # where n is the new host zone that was just adde ``` * Start a local stride instance and setup all the commands needed to test the flow ``` -bash scripts/local-to-mainnet/start.sh +make start-local-to-main ``` ## Walk through Flow diff --git a/scripts/local-to-mainnet/commands.sh b/scripts/local-to-mainnet/commands.sh index bf1d5478a..27d0dac8a 100644 --- a/scripts/local-to-mainnet/commands.sh +++ b/scripts/local-to-mainnet/commands.sh @@ -7,13 +7,13 @@ echo "$HOT_WALLET_1_MNEMONIC" | build/gaiad keys add hot --recover --keyring-bac #### START RELAYER -# NOTE: CREATING CONNECTIONS WITH THE GO RELAYER IS BROKEN, USE HERMES +# NOTE: CREATING CONNECTIONS WITH THE GO RELAYER # Create connections and channels -# docker-compose -f scripts/local-to-mainnet/docker-compose.yml run --rm relayer rly transact link stride-host +docker-compose -f scripts/local-to-mainnet/docker-compose.yml run --rm relayer rly transact link stride-host # (OR) If the go relayer isn't working, use hermes (NOTE: you'll have to add the connections to the relayer config in `scripts/state/relayer/config/config.yaml`) -docker-compose -f scripts/local-to-mainnet/docker-compose.yml run --rm hermes hermes create connection --a-chain cosmoshub-4 --b-chain local-test-1 -docker-compose -f scripts/local-to-mainnet/docker-compose.yml run --rm hermes hermes create channel --a-chain local-test-1 --a-connection connection-0 --a-port transfer --b-port transfer +# docker-compose -f scripts/local-to-mainnet/docker-compose.yml run --rm hermes hermes create connection --a-chain cosmoshub-4 --b-chain local-test-1 +# docker-compose -f scripts/local-to-mainnet/docker-compose.yml run --rm hermes hermes create channel --a-chain local-test-1 --a-connection connection-0 --a-port transfer --b-port transfer # Ensure Relayer Config is updated (`scripts/local-to-mainnet/state/relayer/config/config.yaml`) # paths: @@ -38,7 +38,7 @@ docker-compose -f scripts/local-to-mainnet/docker-compose.yml logs -f relayer | #### REGISTER HOST # IBC Transfer from HOST to stride (from relayer account) -build/gaiad tx ibc-transfer transfer transfer $transfer_channel stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 4000000uatom --from hot --chain-id cosmoshub-4 -y --keyring-backend test --node http://gaia-fleet-direct.main.stridenet.co:26657 +build/gaiad tx ibc-transfer transfer transfer $transfer_channel stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 4000000uatom --from hot --chain-id cosmoshub-4 -y --keyring-backend test --node http://HOST_ENDPOINT:26657 --fees 150000uatom # Confirm funds were recieved on stride and get IBC denom build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 @@ -50,7 +50,9 @@ build/strided --home scripts/state/stride1 tx stakeibc register-host-zone \ --from admin --gas 1000000 -y # Add validator -build/strided --home scripts/state/stride1 tx stakeibc add-validator cosmoshub-4 imperator cosmosvaloper1vvwtk805lxehwle9l4yudmq6mn0g32px9xtkhc 10 5 --chain-id local-test-1 --keyring-backend test --from admin -y +echo '{"validators": [{"name": "imperator", "address": "cosmosvaloper1vvwtk805lxehwle9l4yudmq6mn0g32px9xtkhc", "weight": 10}]}' > validator.json +build/strided --home scripts/state/stride1 tx stakeibc add-validators cosmoshub-4 validator.json --gas 1000000 --chain-id local-test-1 --keyring-backend test --from admin -y +rm validator.json # Confirm ICA channels were registered build/strided --home scripts/state/stride1 q stakeibc list-host-zone @@ -73,7 +75,9 @@ build/strided --home scripts/state/stride1 q bank balances stride1u20df3trc2c2zd build/strided --home scripts/state/stride1 q stakeibc list-host-zone # Add another validator -build/strided --home scripts/state/stride1 tx stakeibc add-validator cosmoshub-4 notional cosmosvaloper1083svrca4t350mphfv9x45wq9asrs60cdmrflj 10 5 --chain-id local-test-1 --keyring-backend test --from admin -y +echo '{"validators": [{"name": "notional", "address": "cosmosvaloper1083svrca4t350mphfv9x45wq9asrs60cdmrflj", "weight": 10}]}' > validator.json +build/strided --home scripts/state/stride1 tx stakeibc add-validators cosmoshub-4 validator.json --gas 1000000 --chain-id local-test-1 --keyring-backend test --from admin -y +rm validator.json # Liquid stake and confirm the stake was split 50/50 between the validators build/strided --home scripts/state/stride1 tx stakeibc liquid-stake 1000000 uatom --keyring-backend test --from admin -y --chain-id local-test-1 -y @@ -85,14 +89,6 @@ build/strided --home scripts/state/stride1 tx stakeibc change-validator-weight c # LS and confirm delegation aligned with new weights build/strided --home scripts/state/stride1 tx stakeibc liquid-stake 1000000 uatom --keyring-backend test --from admin -y --chain-id local-test-1 -y -# Call rebalance to and confirm new delegations -build/strided --home scripts/state/stride1 tx stakeibc rebalance-validators cosmoshub-4 5 --from admin - -# Clear balances -fee_address=$(build/strided --home scripts/state/stride1 q stakeibc show-host-zone osmosis-1 | grep feeAccount -A 1 | grep address | awk '{print $2}') && echo $fee_address -balance=$(build/osmosisd --home scripts/state/stride1 q bank balances $fee_address | grep amount | awk '{print $3}' | tr -d '"') && echo $balance -build/strided --home scripts/state/stride1 tx stakeibc clear-balance cosmoshub-4 $balance $transfer_channel --from admin - # Update delegations (just submit this query and confirm the ICQ callback displays in the stride logs) # Must be submitted in ICQ window build/strided --home scripts/state/stride1 tx stakeibc update-delegation cosmoshub-4 cosmosvaloper1vvwtk805lxehwle9l4yudmq6mn0g32px9xtkhc --from admin -y diff --git a/scripts/local-to-mainnet/start.sh b/scripts/local-to-mainnet/start.sh index 4a366858f..8f3f0a64a 100644 --- a/scripts/local-to-mainnet/start.sh +++ b/scripts/local-to-mainnet/start.sh @@ -3,19 +3,23 @@ set -eu SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -# DO NOT USE STRIDE MAINNET CHAIN ID! -STRIDE_CHAIN_ID=local-test-1 -HOST_CHAIN_ID=cosmoshub-4 -HOST_ENDPOINT=gaia-fleet-direct.main.stridenet.co +### SETTING VARIABLES FOR LOCAL TO MAINNET BELOW ONLY + +STRIDE_CHAIN_ID=local-test-1 # # DO NOT USE STRIDE MAINNET CHAIN ID! always use a new chain id by incrementing the suffix after each run +HOST_CHAIN_ID=cosmoshub-4 # chain id on the host +HOST_RPC=https://comsos-rpc.polkachu.com # RPC on the host HOST_ACCOUNT_PREFIX=cosmos HOST_DENOM=uatom HOST_BINARY=build/gaiad +HOST_COIN_TYPE=118 HOST_VAL_NAME_1=imperator HOST_VAL_ADDRESS_1=cosmosvaloper1vvwtk805lxehwle9l4yudmq6mn0g32px9xtkhc HOST_VAL_NAME_2=notional HOST_VAL_ADDRESS_2=cosmosvaloper1083svrca4t350mphfv9x45wq9asrs60cdmrflj HOT_WALLET_1_ADDRESS=cosmos1c37n9aywapx2v0s6vk2yedydkkhq65zzeupe92 +### ^^^ SETTING VARIABLES FOR LOCAL TO MAINNET ABOVE ONLY ^^^ + STATE=$SCRIPT_DIR/../state LOGS=$SCRIPT_DIR/../logs STRIDE_LOGS=$LOGS/stride.log @@ -25,7 +29,7 @@ HERMES_STRIDE_MNEMONIC="alter old invest friend relief slot swear pioneer syrup RELAYER_STRIDE_MNEMONIC="pride narrow breeze fitness sign bounce dose smart squirrel spell length federal replace coral lunar thunder vital push nuclear crouch fun accident hood need" # cleanup any stale state -make stop-docker +make stop-local-to-main rm -rf $STATE $LOGS mkdir -p $STATE mkdir -p $LOGS @@ -49,26 +53,27 @@ cp ${SCRIPT_DIR}/templates/hermes_config.toml $HERMES_CONFIG_FILE cp ${SCRIPT_DIR}/templates/relayer_config.yaml $RELAYER_CONFIG_FILE # Update relayer templates -sed -i -E "s|STRIDE_CHAIN_ID|$STRIDE_CHAIN_ID|g" $HERMES_CONFIG_FILE -sed -i -E "s|HOST_CHAIN_ID|$HOST_CHAIN_ID|g" $HERMES_CONFIG_FILE -sed -i -E "s|HOST_ENDPOINT|$HOST_ENDPOINT|g" $HERMES_CONFIG_FILE -sed -i -E "s|HOST_ACCOUNT_PREFIX|$HOST_ACCOUNT_PREFIX|g" $HERMES_CONFIG_FILE -sed -i -E "s|HOST_DENOM|$HOST_DENOM|g" $HERMES_CONFIG_FILE +# sed -i -E "s|STRIDE_CHAIN_ID|$STRIDE_CHAIN_ID|g" $HERMES_CONFIG_FILE +# sed -i -E "s|HOST_CHAIN_ID|$HOST_CHAIN_ID|g" $HERMES_CONFIG_FILE +# sed -i -E "s|HOST_ENDPOINT|$HOST_ENDPOINT|g" $HERMES_CONFIG_FILE +# sed -i -E "s|HOST_ACCOUNT_PREFIX|$HOST_ACCOUNT_PREFIX|g" $HERMES_CONFIG_FILE +# sed -i -E "s|HOST_DENOM|$HOST_DENOM|g" $HERMES_CONFIG_FILE sed -i -E "s|STRIDE_CHAIN_ID|$STRIDE_CHAIN_ID|g" $RELAYER_CONFIG_FILE sed -i -E "s|HOST_CHAIN_ID|$HOST_CHAIN_ID|g" $RELAYER_CONFIG_FILE -sed -i -E "s|HOST_ENDPOINT|$HOST_ENDPOINT|g" $RELAYER_CONFIG_FILE +sed -i -E "s|HOST_RPC|$HOST_RPC|g" $RELAYER_CONFIG_FILE sed -i -E "s|HOST_ACCOUNT_PREFIX|$HOST_ACCOUNT_PREFIX|g" $RELAYER_CONFIG_FILE sed -i -E "s|HOST_DENOM|$HOST_DENOM|g" $RELAYER_CONFIG_FILE +sed -i -E "s|HOST_COIN_TYPE|$HOST_COIN_TYPE|g" $RELAYER_CONFIG_FILE -echo "Adding Hermes keys" -HERMES_CMD="$SCRIPT_DIR/../../build/hermes/release/hermes --config $STATE/hermes/config.toml" -TMP_MNEMONICS=$STATE/mnemonic.txt -echo "$HERMES_STRIDE_MNEMONIC" > $TMP_MNEMONICS -$HERMES_CMD keys add --key-name hrly1 --chain $STRIDE_CHAIN_ID --mnemonic-file $TMP_MNEMONICS --overwrite -echo "$HOT_WALLET_2_MNEMONIC" > $TMP_MNEMONICS -$HERMES_CMD keys add --key-name hrly2 --chain $HOST_CHAIN_ID --mnemonic-file $TMP_MNEMONICS --overwrite -rm -f $TMP_MNEMONICS +# echo "Adding Hermes keys" +# HERMES_CMD="$SCRIPT_DIR/../../build/hermes/release/hermes --config $STATE/hermes/config.toml" +# TMP_MNEMONICS=$STATE/mnemonic.txt +# echo "$HERMES_STRIDE_MNEMONIC" > $TMP_MNEMONICS +# $HERMES_CMD keys add --key-name hrly1 --chain $STRIDE_CHAIN_ID --mnemonic-file $TMP_MNEMONICS --overwrite +# echo "$HOT_WALLET_2_MNEMONIC" > $TMP_MNEMONICS +# $HERMES_CMD keys add --key-name hrly2 --chain $HOST_CHAIN_ID --mnemonic-file $TMP_MNEMONICS --overwrite +# rm -f $TMP_MNEMONICS echo "Adding Relayer keys" RELAYER_CMD="$SCRIPT_DIR/../../build/relayer --home $STATE/relayer" @@ -93,7 +98,7 @@ sed -i -E "s|HOST_CHAIN_ID|$HOST_CHAIN_ID|g" $COMMANDS_FILE sed -i -E "s|HOST_BINARY|$HOST_BINARY|g" $COMMANDS_FILE sed -i -E "s|HOST_DENOM|$HOST_DENOM|g" $COMMANDS_FILE sed -i -E "s|HOST_ACCOUNT_PREFIX|$HOST_ACCOUNT_PREFIX|g" $COMMANDS_FILE -sed -i -E "s|HOST_ENDPOINT|$HOST_ENDPOINT|g" $COMMANDS_FILE +sed -i -E "s|HOST_RPC|$HOST_RPC|g" $COMMANDS_FILE sed -i -E "s|HOST_VAL_NAME_1|$HOST_VAL_NAME_1|g" $COMMANDS_FILE sed -i -E "s|HOST_VAL_NAME_2|$HOST_VAL_NAME_2|g" $COMMANDS_FILE sed -i -E "s|HOST_VAL_ADDRESS_1|$HOST_VAL_ADDRESS_1|g" $COMMANDS_FILE diff --git a/scripts/local-to-mainnet/templates/commands.sh b/scripts/local-to-mainnet/templates/commands.sh index 04d82e23e..265c48e8a 100644 --- a/scripts/local-to-mainnet/templates/commands.sh +++ b/scripts/local-to-mainnet/templates/commands.sh @@ -3,13 +3,13 @@ echo "$HOT_WALLET_1_MNEMONIC" | HOST_BINARY keys add hot --recover --keyring-bac #### START RELAYER -# NOTE: CREATING CONNECTIONS WITH THE GO RELAYER IS BROKEN, USE HERMES +# NOTE: CREATING CONNECTIONS WITH THE GO RELAYER # Create connections and channels -# DOCKER_COMPOSE run --rm relayer rly transact link stride-host +DOCKER_COMPOSE run --rm relayer rly transact link stride-host # (OR) If the go relayer isn't working, use hermes (NOTE: you'll have to add the connections to the relayer config in `STATE/relayer/config/config.yaml`) -DOCKER_COMPOSE run --rm hermes hermes create connection --a-chain HOST_CHAIN_ID --b-chain STRIDE_CHAIN_ID -DOCKER_COMPOSE run --rm hermes hermes create channel --a-chain STRIDE_CHAIN_ID --a-connection connection-0 --a-port transfer --b-port transfer +# DOCKER_COMPOSE run --rm hermes hermes create connection --a-chain HOST_CHAIN_ID --b-chain STRIDE_CHAIN_ID +# DOCKER_COMPOSE run --rm hermes hermes create channel --a-chain STRIDE_CHAIN_ID --a-connection connection-0 --a-port transfer --b-port transfer # Ensure Relayer Config is updated (`scripts/local-to-mainnet/state/relayer/config/config.yaml`) # paths: @@ -34,7 +34,7 @@ DOCKER_COMPOSE logs -f relayer | sed -r -u "s/\x1B\[([0-9]{1,3}(;[0-9]{1,2})?)?[ #### REGISTER HOST # IBC Transfer from HOST to stride (from relayer account) -HOST_BINARY tx ibc-transfer transfer transfer $transfer_channel stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 4000000HOST_DENOM --from hot --chain-id HOST_CHAIN_ID -y --keyring-backend test --node http://HOST_ENDPOINT:26657 +HOST_BINARY tx ibc-transfer transfer transfer $transfer_channel stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 4000000HOST_DENOM --from hot --chain-id HOST_CHAIN_ID -y --keyring-backend test --node http://HOST_ENDPOINT:26657 --fees 150000HOST_DENOM # Confirm funds were recieved on stride and get IBC denom build/strided --home STRIDE_HOME q bank balances stride1u20df3trc2c2zdhm8qvh2hdjx9ewh00sv6eyy8 @@ -46,7 +46,9 @@ build/strided --home STRIDE_HOME tx stakeibc register-host-zone \ --from admin --gas 1000000 -y # Add validator -build/strided --home STRIDE_HOME tx stakeibc add-validator HOST_CHAIN_ID HOST_VAL_NAME_1 HOST_VAL_ADDRESS_1 10 5 --chain-id STRIDE_CHAIN_ID --keyring-backend test --from admin -y +echo '{"validators": [{"name": "HOST_VAL_NAME_1", "address": "HOST_VAL_ADDRESS_1", "weight": 10}]}' > validator.json +build/strided --home scripts/state/stride1 tx stakeibc add-validators HOST_CHAIN_ID validator.json --gas 1000000 --chain-id STRIDE_CHAIN_ID --keyring-backend test --from admin -y +rm validator.json # Confirm ICA channels were registered build/strided --home STRIDE_HOME q stakeibc list-host-zone @@ -69,7 +71,9 @@ build/strided --home STRIDE_HOME q bank balances stride1u20df3trc2c2zdhm8qvh2hdj build/strided --home STRIDE_HOME q stakeibc list-host-zone # Add another validator -build/strided --home STRIDE_HOME tx stakeibc add-validator HOST_CHAIN_ID HOST_VAL_NAME_2 HOST_VAL_ADDRESS_2 10 5 --chain-id STRIDE_CHAIN_ID --keyring-backend test --from admin -y +echo '{"validators": [{"name": "HOST_VAL_NAME_2", "address": "HOST_VAL_ADDRESS_2", "weight": 10}]}' > validator.json +build/strided --home scripts/state/stride1 tx stakeibc add-validators HOST_CHAIN_ID validator.json --gas 1000000 --chain-id STRIDE_CHAIN_ID --keyring-backend test --from admin -y +rm validator.json # Liquid stake and confirm the stake was split 50/50 between the validators build/strided --home STRIDE_HOME tx stakeibc liquid-stake 1000000 HOST_DENOM --keyring-backend test --from admin -y --chain-id STRIDE_CHAIN_ID -y @@ -81,14 +85,6 @@ build/strided --home STRIDE_HOME tx stakeibc change-validator-weight HOST_CHAIN_ # LS and confirm delegation aligned with new weights build/strided --home STRIDE_HOME tx stakeibc liquid-stake 1000000 HOST_DENOM --keyring-backend test --from admin -y --chain-id STRIDE_CHAIN_ID -y -# Call rebalance to and confirm new delegations -build/strided --home STRIDE_HOME tx stakeibc rebalance-validators HOST_CHAIN_ID 5 --from admin - -# Clear balances -fee_address=$(build/strided --home STRIDE_HOME q stakeibc show-host-zone osmosis-1 | grep feeAccount -A 1 | grep address | awk '{print $2}') && echo $fee_address -balance=$(build/osmosisd --home STRIDE_HOME q bank balances $fee_address | grep amount | awk '{print $3}' | tr -d '"') && echo $balance -build/strided --home STRIDE_HOME tx stakeibc clear-balance HOST_CHAIN_ID $balance $transfer_channel --from admin - # Update delegations (just submit this query and confirm the ICQ callback displays in the stride logs) # Must be submitted in ICQ window build/strided --home STRIDE_HOME tx stakeibc update-delegation HOST_CHAIN_ID HOST_VAL_ADDRESS_1 --from admin -y diff --git a/scripts/local-to-mainnet/templates/relayer_config.yaml b/scripts/local-to-mainnet/templates/relayer_config.yaml index 66a885ff2..e63d46aa7 100644 --- a/scripts/local-to-mainnet/templates/relayer_config.yaml +++ b/scripts/local-to-mainnet/templates/relayer_config.yaml @@ -23,11 +23,12 @@ chains: value: key: rly2 chain-id: HOST_CHAIN_ID - rpc-addr: http://HOST_ENDPOINT:26657 + rpc-addr: HOST_RPC account-prefix: HOST_ACCOUNT_PREFIX keyring-backend: test gas-adjustment: 1.2 - gas-prices: 0.01HOST_DENOM + gas-prices: 0.1HOST_DENOM + coin-type: HOST_COIN_TYPE debug: false timeout: 20s output-format: json