Skip to content

Commit

Permalink
Ibc wasm binding (#40)
Browse files Browse the repository at this point in the history
* setup query wasm handler for IBC - wip

* migrate ibc to v7, renaming some query msgs

* script for setting up local ibc chains

* fix query exposer interface issues

* add merkle path query binding interface for more generalization

* add custom path prefix for verifying any states on other chains

* setup error handling for ibc verify, add unit tests for cw

* remove err string from query responses

* update binding query responses
  • Loading branch information
antstalepresh authored Oct 26, 2023
1 parent db53cee commit ec8023a
Show file tree
Hide file tree
Showing 14 changed files with 538 additions and 8 deletions.
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,8 @@ release/
.idea/
.vscode/
.DS_Store
build/
build/
logs
keys
wasmbinding/test/wasm
wasmbinding/test/data
2 changes: 2 additions & 0 deletions app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -619,6 +619,8 @@ func New(
app.BankKeeper,
app.OracleKeeper,
*app.DenomKeeper,
*app.IBCKeeper,
keys[ibcexported.StoreKey],
), wasmOpts...)

app.WasmKeeper = wasmkeeper.NewKeeper(
Expand Down
Empty file added test/relayer/config/config.lock
Empty file.
69 changes: 69 additions & 0 deletions test/relayer/config/config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
global:
api-listen-addr: :5183
timeout: 10s
memo: ""
light-cache-size: 20
chains:
kujira:
type: cosmos
value:
key-directory: test/relayer/keys/kujira
key: rly1
chain-id: kujira
rpc-addr: http://127.0.0.1:26657
account-prefix: kujira
keyring-backend: test
gas-adjustment: 1.3
gas-prices: 0.02ukuji
min-gas-amount: 0
max-gas-amount: 0
debug: false
timeout: 20s
block-timeout: ""
output-format: json
sign-mode: direct
extra-codecs: []
coin-type: null
signing-algorithm: ""
broadcast-mode: batch
min-loop-duration: 0s
extension-options: []
feegrants: null
terra:
type: cosmos
value:
key-directory: test/relayer/keys/terra
key: rly3
chain-id: terra
rpc-addr: http://127.0.0.1:26658
account-prefix: terra
keyring-backend: test
gas-adjustment: 1.3
gas-prices: 0.02uluna
min-gas-amount: 0
max-gas-amount: 0
debug: false
timeout: 20s
block-timeout: ""
output-format: json
sign-mode: direct
extra-codecs: []
coin-type: null
signing-algorithm: ""
broadcast-mode: batch
min-loop-duration: 0s
extension-options: []
feegrants: null
paths:
kujira-terra:
src:
chain-id: kujira
client-id: 07-tendermint-0
connection-id: connection-0
dst:
chain-id: terra
client-id: 07-tendermint-0
connection-id: connection-0
src-channel-filter:
rule: ""
channel-list: []
65 changes: 65 additions & 0 deletions test/relayer/config/config_temp.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
global:
api-listen-addr: :5183
timeout: 10s
memo: ""
light-cache-size: 20
chains:
kujira:
type: cosmos
value:
key-directory: test/relayer/keys/kujira
key: rly1
chain-id: kujira
rpc-addr: http://127.0.0.1:26657
account-prefix: kujira
keyring-backend: test
gas-adjustment: 1.3
gas-prices: 0.02ukuji
min-gas-amount: 0
max-gas-amount: 0
debug: false
timeout: 20s
block-timeout: ""
output-format: json
sign-mode: direct
extra-codecs: []
coin-type: null
signing-algorithm: ""
broadcast-mode: batch
min-loop-duration: 0s
extension-options: []
feegrants: null
terra:
type: cosmos
value:
key-directory: test/relayer/keys/terra
key: rly3
chain-id: terra
rpc-addr: http://127.0.0.1:26658
account-prefix: terra
keyring-backend: test
gas-adjustment: 1.3
gas-prices: 0.02uluna
min-gas-amount: 0
max-gas-amount: 0
debug: false
timeout: 20s
block-timeout: ""
output-format: json
sign-mode: direct
extra-codecs: []
coin-type: null
signing-algorithm: ""
broadcast-mode: batch
min-loop-duration: 0s
extension-options: []
feegrants: null
paths:
kujira-terra:
src:
chain-id: kujira
dst:
chain-id: terra
src-channel-filter:
rule: ""
channel-list: []
120 changes: 120 additions & 0 deletions test/setup_ibc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
#!/bin/bash

####################### Config variables & functions #######################
# Common
VALIDATOR="validator"
NODE_IP="localhost"

# Main configs
MAIN_CHAIN_ID="kujira"
MAIN_MONIKER="kujira"
MAIN_HOME="$HOME/.kujirad"
MAIN_BINARY="kujirad --home=$MAIN_HOME"
MAIN_TX_FLAGS="--keyring-backend test --chain-id $MAIN_CHAIN_ID --from $VALIDATOR -y --fees=1000ukuji"
MAIN_RPC_LADDR="$NODE_IP:26657"
MAIN_P2P_LADDR="$NODE_IP:26656"
MAIN_GRPC_ADDR="$NODE_IP:9090"

# Counter configs
COUNTER_CHAIN_ID="terra"
COUNTER_MONIKER="terra"
COUNTER_HOME="$HOME/.terrad"
COUNTER_BINARY="terrad --home=$COUNTER_HOME"
COUNTER_TX_FLAGS="--keyring-backend test --chain-id $COUNTER_CHAIN_ID --from $VALIDATOR -y --fees=1000uluna"
COUNTER_RPC_LADDR="$NODE_IP:26658"
COUNTER_P2P_LADDR="$NODE_IP:26646"
COUNTER_GRPC_ADDR="$NODE_IP:9091"


####################### Initializate chains #######################
echo "==============> Starting chain initialization...<=============="
# Clean start
killall $MAIN_BINARY &> /dev/null || true
killall $COUNTER_BINARY &> /dev/null || true
killall rly 2> /dev/null || true
rm -rf $MAIN_HOME
rm -rf $COUNTER_HOME
rm -rf ./test/relayer/keys
rm -rf ./test/logs
mkdir ./test/logs
cp ./test/relayer/config/config_temp.yaml ./test/relayer/config/config.yaml

# Main chain init
$MAIN_BINARY init --chain-id $MAIN_CHAIN_ID $MAIN_MONIKER
sed -i '' 's/"voting_period": "172800s"/"voting_period": "30s"/g' $MAIN_HOME/config/genesis.json
sed -i '' 's/"max_deposit_period": "172800s"/"max_deposit_period": "30s"/g' $MAIN_HOME/config/genesis.json
sed -i '' 's/stake/ukuji/g' $MAIN_HOME/config/genesis.json
sed -i -E "s|keyring-backend = \".*\"|keyring-backend = \"test\"|g" $MAIN_HOME/config/client.toml
sed -i -E "s|minimum-gas-prices = \".*\"|minimum-gas-prices = \"0ukuji\"|g" $MAIN_HOME/config/app.toml

$MAIN_BINARY keys add $VALIDATOR --keyring-backend=test
$MAIN_BINARY genesis add-genesis-account $($MAIN_BINARY keys show $VALIDATOR --keyring-backend=test -a) 1000000000000000000ukuji
$MAIN_BINARY genesis gentx validator 10000000000ukuji --keyring-backend=test --chain-id=$MAIN_CHAIN_ID
$MAIN_BINARY genesis collect-gentxs

# Counter chain init
$COUNTER_BINARY init --chain-id $COUNTER_CHAIN_ID $COUNTER_MONIKER
sed -i '' 's/"voting_period": "172800s"/"voting_period": "30s"/g' $COUNTER_HOME/config/genesis.json
sed -i '' 's/"max_deposit_period": "172800s"/"max_deposit_period": "30s"/g' $COUNTER_HOME/config/genesis.json
sed -i '' 's/stake/uluna/g' $COUNTER_HOME/config/genesis.json
sed -i -E "s|keyring-backend = \".*\"|keyring-backend = \"test\"|g" $COUNTER_HOME/config/client.toml
sed -i -E "s|minimum-gas-prices = \".*\"|minimum-gas-prices = \"0uluna\"|g" $COUNTER_HOME/config/app.toml
sed -i -E "s|chain-id = \"\"|chain-id = \"${COUNTER_CHAIN_ID}\"|g" $COUNTER_HOME/config/client.toml
sed -i -E "s|node = \".*\"|node = \"tcp://${COUNTER_RPC_LADDR}\"|g" $COUNTER_HOME/config/client.toml

$COUNTER_BINARY keys add $VALIDATOR --keyring-backend=test
$COUNTER_BINARY add-genesis-account $($COUNTER_BINARY keys show $VALIDATOR --keyring-backend=test -a) 1000000000000000000uluna
$COUNTER_BINARY gentx validator 10000000000uluna --keyring-backend=test --chain-id=$COUNTER_CHAIN_ID
$COUNTER_BINARY collect-gentxs


####################### Start chains #######################
echo "==============> Starting kujira...<=============="
$MAIN_BINARY start \
--rpc.laddr tcp://${MAIN_RPC_LADDR} \
--grpc.address ${MAIN_GRPC_ADDR} \
--p2p.laddr tcp://${MAIN_P2P_LADDR} \
--grpc-web.enable=false \
--log_level trace \
--trace \
&> ./test/logs/kujira &
( tail -f -n0 ./test/logs/kujira & ) | grep -q "finalizing commit of block"
echo "Chain started"

echo "==============> Starting terra...<=============="
$COUNTER_BINARY start \
--rpc.laddr tcp://${COUNTER_RPC_LADDR} \
--grpc.address ${COUNTER_GRPC_ADDR} \
--p2p.laddr tcp://${COUNTER_P2P_LADDR} \
--grpc-web.enable=false \
--log_level trace \
--trace \
&> ./test/logs/terra &
( tail -f -n0 ./test/logs/terra & ) | grep -q "finalizing commit of block"
echo "Chain started"

####################### Start relayer #######################

echo "==============> Funding relayers...<=============="
RELAYER_DIR="./test/relayer"
# kujira1pqs8apaa94ejf2etsgv7fkdv6c69jv4l0q74gh
MNEMONIC_1="space hobby carbon shiver genius snap limit clump castle wish silent scan tuition hill aisle senior luxury million beauty now artist solar subject street"
# terra1jy6td9r477fwr4q60adr7lz4anye5y89p5cq7q
MNEMONIC_2="panther trial minimum congress note sense immune bounce muscle tray still island hub awful style square gospel fragile eight report game leaf move category"

# send tokens to relayers
$MAIN_BINARY tx bank send $VALIDATOR kujira1pqs8apaa94ejf2etsgv7fkdv6c69jv4l0q74gh 1000000ukuji $MAIN_TX_FLAGS
sleep 5
$COUNTER_BINARY tx bank send $VALIDATOR terra1jy6td9r477fwr4q60adr7lz4anye5y89p5cq7q 1000000uluna $COUNTER_TX_FLAGS
sleep 5



echo "==============> Restoring relayer accounts...<=============="
rly keys restore kujira rly1 "$MNEMONIC_1" --home $RELAYER_DIR
rly keys restore terra rly3 "$MNEMONIC_2" --coin-type 330 --home $RELAYER_DIR
rly transact link kujira-terra --home $RELAYER_DIR

echo "==============> Starting relayers...<=============="
sleep 5
rly start kujira-terra --home $RELAYER_DIR &> ./test/logs/rly
Loading

0 comments on commit ec8023a

Please sign in to comment.