Skip to content

Commit

Permalink
Changes required to get local to mainnet testing working with Umee (S…
Browse files Browse the repository at this point in the history
…tride-Labs#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/<module>/spec/`) 
      - [ ] README.md 
      - [ ] not documented
  • Loading branch information
riley-stride authored May 24, 2023
1 parent 778ed92 commit 936c33f
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 53 deletions.
11 changes: 11 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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 ###
###############################################################################
Expand Down
2 changes: 1 addition & 1 deletion scripts/local-to-mainnet/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
26 changes: 11 additions & 15 deletions scripts/local-to-mainnet/commands.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
45 changes: 25 additions & 20 deletions scripts/local-to-mainnet/start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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"
Expand All @@ -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
Expand Down
26 changes: 11 additions & 15 deletions scripts/local-to-mainnet/templates/commands.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
5 changes: 3 additions & 2 deletions scripts/local-to-mainnet/templates/relayer_config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 936c33f

Please sign in to comment.