Skip to content

Commit a2cd020

Browse files
committed
chore: init multichain testing work
Refs: #8863
1 parent 9da7798 commit a2cd020

File tree

7 files changed

+302
-29
lines changed

7 files changed

+302
-29
lines changed

.github/workflows/multichain-e2e-template.yml

-18
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,6 @@ on:
1414
required: true
1515
type: string
1616
description: 'Identifier for the test suite that will be used as part of the filename name for logs'
17-
osmosis_pool:
18-
description: 'Condition to open liquidity pool on osmosis'
19-
default: false
20-
required: false
21-
type: boolean
22-
osmosis_xcs:
23-
description: 'Flag to enable Osmosis Crosschain Swaps'
24-
default: false
25-
required: false
26-
type: boolean
2717

2818
jobs:
2919
multichain-e2e:
@@ -124,14 +114,6 @@ jobs:
124114
run: make register-bank-assets
125115
working-directory: ./agoric-sdk/multichain-testing
126116

127-
- name: Setup Osmosis XCS Contracts
128-
run: make osmosis-xcs-setup
129-
working-directory: ./agoric-sdk/multichain-testing
130-
131-
- name: Create Osmosis Pool
132-
run: make create-osmosis-pool
133-
working-directory: ./agoric-sdk/multichain-testing
134-
135117
- name: Run @agoric/multichain-testing E2E Tests
136118
run: ${{ inputs.test_command }}
137119
working-directory: ./agoric-sdk/multichain-testing

.github/workflows/multichain-e2e.yml

-2
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ jobs:
3030
config: config.yaml
3131
test_command: yarn test:main
3232
test_suite_name: orchestration-api-hermes
33-
osmosis_pool: true
34-
osmosis_xcs: true
3533

3634
fast-usdc-hermes:
3735
name: Fast USDC - Hermes

multichain-testing/Makefile

+2-8
Original file line numberDiff line numberDiff line change
@@ -97,18 +97,12 @@ tail-slog:
9797
###############################################################################
9898
### Osmosis Setup ###
9999
###############################################################################
100+
osmosis-xcs-setup:
101+
$(CURDIR)/scripts/setup-xcs.sh
100102

101103
create-osmosis-pool:
102104
$(CURDIR)/scripts/create-osmosis-pool.sh
103105

104-
105-
###############################################################################
106-
### Osmosis Setup ###
107-
###############################################################################
108-
109-
osmosis-xcs-setup:
110-
$(CURDIR)/scripts/setup-xcs.sh
111-
112106
###############################################################################
113107
### Start All ###
114108
###############################################################################
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
name: agoric-multichain-testing
2+
version: 0.2.20
3+
4+
chains:
5+
- id: agoriclocal
6+
name: agoric
7+
image: ghcr.io/agoric/agoric-sdk:dev
8+
numValidators: 1
9+
env:
10+
- name: DEBUG
11+
value: SwingSet:vat,SwingSet:ls
12+
genesis:
13+
app_state:
14+
staking:
15+
params:
16+
unbonding_time: '2m'
17+
swingset:
18+
params:
19+
bootstrap_vat_config: '@agoric/vm-config/decentral-itest-orchestration-chains-config.json'
20+
scripts:
21+
updateConfig:
22+
file: scripts/update-config.sh
23+
faucet:
24+
enabled: true
25+
type: starship
26+
ports:
27+
rest: 1317
28+
rpc: 26657
29+
exposer: 38087
30+
grpc: 9090
31+
faucet: 8082
32+
resources:
33+
cpu: 1
34+
memory: 4Gi
35+
- id: osmosislocal
36+
name: osmosis
37+
numValidators: 1
38+
genesis:
39+
app_state:
40+
staking:
41+
params:
42+
unbonding_time: '2m'
43+
interchain_accounts:
44+
host_genesis_state:
45+
params:
46+
host_enabled: true
47+
allow_messages: ['*']
48+
interchainquery:
49+
host_port: 'icqhost'
50+
params:
51+
host_enabled: true
52+
allow_queries:
53+
- /cosmos.bank.v1beta1.Query/Balance
54+
- /cosmos.bank.v1beta1.Query/AllBalances
55+
scripts:
56+
updateConfig:
57+
file: scripts/update-config-logs.sh
58+
faucet:
59+
enabled: true
60+
type: starship
61+
ports:
62+
rest: 1315
63+
rpc: 26655
64+
grpc: 9093
65+
faucet: 8084
66+
resources:
67+
cpu: 1
68+
memory: 1Gi
69+
- id: cosmoshublocal
70+
name: cosmoshub
71+
numValidators: 1
72+
genesis:
73+
app_state:
74+
staking:
75+
params:
76+
unbonding_time: '2m'
77+
interchain_accounts:
78+
host_genesis_state:
79+
params:
80+
host_enabled: true
81+
allow_messages: ['*']
82+
faucet:
83+
enabled: true
84+
type: starship
85+
ports:
86+
rest: 1314
87+
rpc: 26654
88+
grpc: 9092
89+
faucet: 8083
90+
resources:
91+
cpu: 1
92+
memory: 1Gi
93+
94+
relayers:
95+
- name: osmosis-cosmoshub
96+
type: hermes
97+
replicas: 1
98+
chains:
99+
- osmosislocal
100+
- cosmoshublocal
101+
- name: agoric-osmosis
102+
type: hermes
103+
replicas: 1
104+
chains:
105+
- agoriclocal
106+
- osmosislocal
107+
config:
108+
global:
109+
log_level: "debug"
110+
telemetry:
111+
enabled: true
112+
- name: agoric-cosmoshub
113+
type: hermes
114+
replicas: 1
115+
chains:
116+
- agoriclocal
117+
- cosmoshublocal
118+
119+
explorer:
120+
enabled: false
121+
122+
registry:
123+
enabled: true
124+
ports:
125+
rest: 8081

multichain-testing/scripts/create-osmosis-pool.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ AGORIC_OSMOSIS_PORT="transfer"
2222
AGORIC_TOKEN_DENOM="ubld"
2323
AGORIC_TOKEN_AMOUNT="250000000000"
2424

25-
IBC_DENOM=$(echo -n "$AGORIC_OSMOSIS_PORT/$OSMOSIS_AGORIC_CHANNEL/$AGORIC_TOKEN_DENOM" | sha256sum | awk '{print toupper($1)}')
25+
IBC_DENOM=$(echo -n "$AGORIC_OSMOSIS_PORT/$OSMOSIS_AGORIC_CHANNEL/$AGORIC_TOKEN_DENOM" | shasum -a 256 | awk '{print toupper($1)}')
2626

2727
POOL_ASSET_1_DENOM="uosmo"
2828
POOL_ASSET_1_AMOUNT="250000"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
#!/bin/bash
2+
3+
CHAIN_ID="${CHAIN_ID:=osmosis}"
4+
CHAIN_DIR="${CHAIN_DIR:=$HOME/.osmosisd}"
5+
KEYS_CONFIG="${KEYS_CONFIG:=configs/keys.json}"
6+
7+
set -eux
8+
9+
ls $CHAIN_DIR
10+
11+
12+
echo "Update config.toml file"
13+
sed -i -e 's#"tcp://127.0.0.1:26657"#"tcp://0.0.0.0:26657"#g' $CHAIN_DIR/config/config.toml
14+
sed -i -e 's/index_all_keys = false/index_all_keys = true/g' $CHAIN_DIR/config/config.toml
15+
sed -i -e 's/seeds = ".*"/seeds = ""/g' $CHAIN_DIR/config/config.toml
16+
sed -i -e 's#cors_allowed_origins = \[\]#cors_allowed_origins = \["*"\]#g' $CHAIN_DIR/config/config.toml
17+
sed -i -e 's/index_all_keys = false/index_all_keys = true/g' $CHAIN_DIR/config/config.toml
18+
19+
echo "Update client.toml file"
20+
sed -i -e 's#keyring-backend = "os"#keyring-backend = "test"#g' $CHAIN_DIR/config/client.toml
21+
sed -i -e 's#output = "text"#output = "json"#g' $CHAIN_DIR/config/client.toml
22+
sed -i -e "s#chain-id = \"\"#chain-id = \"$CHAIN_ID\"#g" $CHAIN_DIR/config/client.toml
23+
24+
25+
echo "Update app.toml file"
26+
sed -i -e "s#minimum-gas-prices = \".*\"#minimum-gas-prices = \"0$DENOM\"#g" $CHAIN_DIR/config/app.toml
27+
sed -i -e "s#pruning = \".*\"#pruning = \"default\"#g" $CHAIN_DIR/config/app.toml
28+
sed -i -e 's/enable-unsafe-cors = false/enable-unsafe-cors = true/g' $CHAIN_DIR/config/app.toml
29+
sed -i -e 's/enabled-unsafe-cors = false/enabled-unsafe-cors = true/g' $CHAIN_DIR/config/app.toml
30+
sed -i -e 's/enable = false/enable = true/g' $CHAIN_DIR/config/app.toml
31+
sed -i -e 's/swagger = false/swagger = true/g' $CHAIN_DIR/config/app.toml
32+
sed -i -e 's/enable = false/enable = true/g' $CHAIN_DIR/config/app.toml
33+
sed -i -e 's/enabled = false/enabled = true/g' $CHAIN_DIR/config/app.toml
34+
35+
36+
function get_next_line_number() {
37+
local txt=$1
38+
local file=$2
39+
local line_number=$(grep -n "$txt" $file | cut -d: -f1 | head -1)
40+
echo $((line_number + 1))
41+
}
42+
43+
line_number=$(get_next_line_number "Address defines the API server to listen on." $CHAIN_DIR/config/app.toml)
44+
sed -i -e "${line_number}s#address = \".*\"#address = \"tcp://0.0.0.0:1317\"#g" $CHAIN_DIR/config/app.toml
45+
46+
line_number=$(get_next_line_number "Address defines the gRPC server address to bind to." $CHAIN_DIR/config/app.toml)
47+
sed -i -e "${line_number}s#address = \".*\"#address = \"0.0.0.0:9090\"#g" $CHAIN_DIR/config/app.toml
48+
49+
line_number=$(get_next_line_number "Address defines the gRPC-web server address to bind to." $CHAIN_DIR/config/app.toml)
50+
sed -i -e "${line_number}s#address = \".*\"#address = \"0.0.0.0:9091\"#g" $CHAIN_DIR/config/app.toml
51+
52+
if [ "$METRICS" == "true" ]; then
53+
sed -i -e "s/prometheus = false/prometheus = true/g" $CHAIN_DIR/config/config.toml
54+
55+
line_number=$(get_next_line_number "PrometheusRetentionTime, when positive, enables a Prometheus metrics sink." $CHAIN_DIR/config/app.toml)
56+
sed -i -e "${line_number}s/prometheus-retention-time = 0/prometheus-retention-time = 3600/g" $CHAIN_DIR/config/app.toml
57+
fi
58+
59+
echo "Update consensus params in config.toml"
60+
sed -i -e "s#timeout_propose = \".*\"#timeout_propose = \"$TIMEOUT_PROPOSE\"#g" $CHAIN_DIR/config/config.toml
61+
sed -i -e "s#timeout_propose_delta = \".*\"#timeout_propose_delta = \"$TIMEOUT_PROPOSE_DELTA\"#g" $CHAIN_DIR/config/config.toml
62+
sed -i -e "s#timeout_prevote = \".*\"#timeout_prevote = \"$TIMEOUT_PREVOTE\"#g" $CHAIN_DIR/config/config.toml
63+
sed -i -e "s#timeout_prevote_delta = \".*\"#timeout_prevote_delta = \"$TIMEOUT_PREVOTE_DELTA\"#g" $CHAIN_DIR/config/config.toml
64+
sed -i -e "s#timeout_precommit = \".*\"#timeout_precommit = \"$TIMEOUT_PRECOMMIT\"#g" $CHAIN_DIR/config/config.toml
65+
sed -i -e "s#timeout_precommit_delta = \".*\"#timeout_precommit_delta = \"$TIMEOUT_PRECOMMIT_DELTA\"#g" $CHAIN_DIR/config/config.toml
66+
sed -i -e "s#timeout_commit = \".*\"#timeout_commit = \"$TIMEOUT_COMMIT\"#g" $CHAIN_DIR/config/config.toml
67+
68+
echo "Update config.toml file log level"
69+
sed -i -E 's/^(log_level\s*=\s*)".*"/\1"debug"/' $CHAIN_DIR/config/config.toml
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
cli-hermes=kubectl exec -it hermes-agoric-osmosis-0 -c relayer -- hermes
2+
exec-agd=kubectl exec -i agoriclocal-genesis-0 -c validator -- agd
3+
exec-osmo=kubectl exec -i osmosislocal-genesis-0 -c validator -- osmosisd
4+
cli-osmo=kubectl exec -i osmosislocal-genesis-0 -c validator -- /bin/bash -c
5+
6+
AGORIC_TEST_ADDRESS=$(shell $(exec-agd) keys show test1 -a --keyring-backend test)
7+
AGORIC_GENESIS_ADDRESS=$(shell $(exec-agd) keys show genesis -a --keyring-backend test)
8+
OSMOSIS_TEST_ADDRESS=$(shell $(exec-osmo) keys show test1 -a --keyring-backend test)
9+
OSMOSIS_GENESIS_ADDRESS = $(shell $(exec-osmo) keys show genesis -a --keyring-backend test)
10+
11+
TX_FLAGS=--from $(OSMOSIS_GENESIS_ADDRESS) --keyring-backend=test --gas=auto --gas-prices 0.1uosmo --gas-adjustment 1.3 --yes --chain-id osmosislocal
12+
AGD_TX_FLAGS=--from $(AGORIC_GENESIS_ADDRESS) --keyring-backend=test --gas=auto --gas-prices 0.1ubld --gas-adjustment 1.3 --yes --chain-id agoriclocal
13+
14+
CHANNEL_INFO=$(shell $(cli-hermes) --json query channels --show-counterparty --chain agoriclocal \
15+
| jq '[.][] | select(.result) | .result[] | select(.chain_id_b == "osmosislocal")')
16+
AGORIC_OSMOSIS_CHANNEL=$(shell echo '$(CHANNEL_INFO)' | jq -r '.channel_a')
17+
OSMOSIS_AGORIC_CHANNEL=$(shell echo '$(CHANNEL_INFO)' | jq -r '.channel_b')
18+
19+
REGISTRY_ADDRESS="osmo1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrqvlx82r"
20+
SWAPROUTER_ADDRESS="osmo14hj2tavq8fpesdwxxcu44rty3hh90vhujrvcmstl4zr3txmfvw9sq2r9g9"
21+
SWAP_ADDRESS="osmo17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs5yczr8"
22+
23+
POOL_ASSET_1_DENOM="uosmo"
24+
POOL_ASSET_1_AMOUNT="250000"
25+
POOL_ASSET_2_DENOM="ibc/E7827844CB818EE9C4DB2C159F1543FF62B26213B44CE8029D5CEFE52F0EE596"
26+
27+
GET_ROUTE_JSON = '{"get_route":{"input_denom":$(POOL_ASSET_2_DENOM),"output_denom":$(POOL_ASSET_1_DENOM)}}'
28+
SET_CHAIN_CHANNEL_LINKS='{"modify_chain_channel_links":{"operations":[{"operation":"set","source_chain":"agoric","destination_chain":"osmosis","channel_id":$(AGORIC_OSMOSIS_CHANNEL)},{"operation":"set","source_chain":"osmosis","destination_chain":"agoric","channel_id":$(OSMOSIS_AGORIC_CHANNEL)}]}}'
29+
SET_PREFIXES_MSG='{"modify_bech32_prefixes":{"operations":[{"operation":"set","chain_name":"osmosis","prefix":"osmo"},{"operation":"set","chain_name":"agoric","prefix":"agoric"}]}}'
30+
GET_CHANNEL_FROM_CHAINS_MSG='{"get_channel_from_chain_pair":{"source_chain":"osmosis","destination_chain":"agoric"}}'
31+
GET_PREFIX_FROM_CHAIN_MSG='{"get_bech32_prefix_from_chain_name":{"chain_name":"osmosis"}}'
32+
33+
GOOD_SWAP_MEMO='{"wasm":{"contract":$(SWAP_ADDRESS),"msg":{"osmosis_swap":{"output_denom":"uosmo","slippage":{"twap":{"window_seconds":10,"slippage_percentage":"20"}},"receiver":"agoric1elueec97as0uwavlxpmj75u5w7yq9dgphq47zx","on_failed_delivery":"do_nothing", "next_memo":{}}}}}'
34+
BAD_SWAP_MEMO=' \
35+
{"wasm":{ \
36+
"contract":"$(SWAP_ADDRESS)", \
37+
"msg":{ \
38+
"osmosis_swap":{ \
39+
"output_denom":"uosmo", \
40+
"slippage":{ \
41+
"twap":{ \
42+
"window_seconds":10, \
43+
"slippage_percentage":"20" \
44+
} \
45+
}, \
46+
"receiver":"$(AGORIC_GENESIS_ADDRESS)", \
47+
"on_failed_delivery":"do_nothing", \
48+
"next_memo":{} \
49+
} \
50+
} \
51+
}}'
52+
53+
print-channel-info:
54+
@echo $(CHANNEL_INFO)
55+
56+
print-agoric-channel:
57+
@echo $(AGORIC_OSMOSIS_CHANNEL)
58+
59+
print-osmosis-channel:
60+
@echo $(OSMOSIS_AGORIC_CHANNEL)
61+
62+
print-osmosis-address:
63+
echo '$(AGORIC_GENESIS_ADDRESS)'
64+
65+
versions:
66+
$(cli-hermes) --version
67+
$(exec-agd) version
68+
$(exec-osmo) version
69+
70+
query-channels:
71+
$(cli-hermes) query channels --show-counterparty --chain $(CHAIN)
72+
73+
query-balance-osmo:
74+
$(exec-osmo) query bank balances $(OSMOSIS_TEST_ADDRESS) | jq
75+
76+
query-balance-agoric:
77+
$(exec-agd) query bank balances agoric1elueec97as0uwavlxpmj75u5w7yq9dgphq47zx | jq
78+
79+
query-route:
80+
$(exec-osmo) q wasm contract-state smart $(SWAPROUTER_ADDRESS) $(GET_ROUTE_JSON)
81+
82+
query-pool-balance:
83+
$(exec-osmo) q gamm pool 1 | jq
84+
85+
query-tx-osmo:
86+
$(exec-osmo) q tx $(TX_HASH) | jq .
87+
88+
query-tx-agoric:
89+
$(exec-agd) q tx $(TX_HASH) | jq .
90+
91+
query-channel-from-registry:
92+
$(exec-osmo) q wasm contract-state smart $(REGISTRY_ADDRESS) $(GET_CHANNEL_FROM_CHAINS_MSG) | jq .
93+
94+
query-prefix-from-registry:
95+
$(exec-osmo) q wasm contract-state smart $(REGISTRY_ADDRESS) $(GET_PREFIX_FROM_CHAIN_MSG) | jq .
96+
97+
tx-chain-channel-links:
98+
$(exec-osmo) tx wasm execute $(REGISTRY_ADDRESS) $(SET_CHAIN_CHANNEL_LINKS) $(TX_FLAGS)
99+
100+
tx-bec32-prefixes:
101+
$(exec-osmo) tx wasm execute $(REGISTRY_ADDRESS) $(SET_PREFIXES_MSG) $(TX_FLAGS)
102+
103+
tx-send-xcs-ibc-transfer:
104+
$(exec-agd) tx ibc-transfer transfer transfer $(AGORIC_OSMOSIS_CHANNEL) $(SWAP_ADDRESS) 125ubld \
105+
--memo $(GOOD_SWAP_MEMO) $(AGD_TX_FLAGS)

0 commit comments

Comments
 (0)