Skip to content

Commit

Permalink
Stand up an IBC relayer to test out the bridging functionality (#86)
Browse files Browse the repository at this point in the history
Before testing you have to download relayer app from this link
https://github.com/cosmos/relayer/releases

You can test as following commands

- make init-allora
- make init-axelar
- init-relayer
- start-relayer
  • Loading branch information
RedBird96 authored Mar 27, 2024
1 parent 48197fd commit 8db5e72
Show file tree
Hide file tree
Showing 12 changed files with 402 additions and 0 deletions.
27 changes: 27 additions & 0 deletions x/ibc/scripts/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
###############################################################################
### Initialize ###
###############################################################################

init-allora:
@echo "Initializing allora blockchain..."
./network/init-allorad.sh
./network/start-allorad.sh

init-axelar:
@echo "Initializing axelar blockchain..."
./network/init-axelar.sh

init-relayer:
@echo "Initializing relayer..."
./network/relayer/rly.sh
@echo "Creating connection and ICS20 channel..."
./network/relayer/rly-link.sh

start-relayer:
@echo "Starting relayer..."
./network/relayer/rly-start.sh

kill-dev:
@echo "Killing icad and removing previous data"
-@rm -rf ./data
-@killall icad 2>/dev/null
72 changes: 72 additions & 0 deletions x/ibc/scripts/init-allorad.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
#!/bin/bash

BINARY=./allorad
CHAIN_DIR=./data
CHAINID=allora_demo
P2PPORT=16656
RPCPORT=16657
RESTPORT=1316
ROSETTA=8080

# Stop if it is already running
if pgrep -x "$BINARY" >/dev/null; then
echo "Terminating $BINARY..."
killall $BINARY
fi

echo "Removing previous data..."
rm -rf $CHAIN_DIR/$CHAINID &> /dev/null

# Add directories for both chains, exit if an error occurs
if ! mkdir -p $CHAIN_DIR/$CHAINID_1 2>/dev/null; then
echo "Failed to create chain folder. Aborting..."
exit 1
fi

echo "configure allorad"
$BINARY config set client chain-id $CHAINID
$BINARY config set client keyring-backend test
$BINARY keys add alice --home $CHAIN_DIR/$CHAINID
$BINARY keys add bob --home $CHAIN_DIR/$CHAINID
$BINARY keys add relayer --home $CHAIN_DIR/$CHAINID

echo "Initializing $CHAINID..."
$BINARY init test --home $CHAIN_DIR/$CHAINID --chain-id $CHAINID --default-denom uallo

echo "Adding genesis accounts..."

$BINARY genesis add-genesis-account alice 10000000allo --keyring-backend test --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account bob 1000allo --keyring-backend test --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allorarelayer 1000allo --keyring-backend test --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allo1m4ssnux4kh5pfmjzzkpde0hvxfg0d37mla0pdf 10000000allo --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allo1m8m7u5wygh8f0m55m7aj957yts44fsqdzryjmc 10000000allo --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allo18kq56ckavhacjjxwc7lajspfgn6zf78srfx3lk 10000000allo --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allo1asz8turchyh3f9psyc6yag4shc8ssy0v3y0kjv 10000000allo --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allo1ey0fvvpx3y99g7s8n8k7ft74dh0zq6y7l3fnke 10000000allo --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allo14uyrh7kkg83qmjnme69dna8p07x3wugnxsxdk4 10000000allo --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allo1q4fa4tqzng2lshfhjaklx90hzfnfennxt02s0v 10000000allo --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allo1zy5akp9grwfp3x6rqd40x0g4agpzjaskxr9lnn 10000000allo --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allo1ywhj2svg67mn7ylr9mu5kz9f668z2xejnp9w9y 10000000allo --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account allo1r7hqeqdmf6jg9v9px0gh5l6n7tlr0tlxt86plc 10000000allo --home $CHAIN_DIR/$CHAINID


echo $RLY_MNEMONIC_1 | $BINARY keys add rly --home $CHAIN_DIR/$CHAINID --recover --keyring-backend=test
$BINARY genesis add-genesis-account $($BINARY --home $CHAIN_DIR/$CHAINID keys show rly --keyring-backend test -a) 10000000allo --home $CHAIN_DIR/$CHAINID

echo "Creating and collecting gentx..."
$BINARY genesis gentx alice 50000allo --chain-id $CHAINID --home $CHAIN_DIR/$CHAINID
$BINARY genesis collect-gentxs --home $CHAIN_DIR/$CHAINID


echo "Changing defaults and ports in app.toml and config.toml files..."
sed -i -e 's#"tcp://0.0.0.0:26656"#"tcp://0.0.0.0:'"$P2PPORT"'"#g' $CHAIN_DIR/$CHAINID/config/config.toml
sed -i -e 's#"tcp://127.0.0.1:26657"#"tcp://0.0.0.0:'"$RPCPORT"'"#g' $CHAIN_DIR/$CHAINID/config/config.toml
sed -i -e 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $CHAIN_DIR/$CHAINID/config/config.toml
sed -i -e 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $CHAIN_DIR/$CHAINID/config/config.toml
sed -i -e 's/index_all_keys = false/index_all_keys = true/g' $CHAIN_DIR/$CHAINID/config/config.toml
sed -i -e 's/enable = false/enable = true/g' $CHAIN_DIR/$CHAINID/config/app.toml
sed -i -e 's/swagger = false/swagger = true/g' $CHAIN_DIR/$CHAINID/config/app.toml
sed -i -e 's#"tcp://0.0.0.0:1317"#"tcp://0.0.0.0:'"$RESTPORT"'"#g' $CHAIN_DIR/$CHAINID/config/app.toml
sed -i -e 's#":8080"#":'"$ROSETTA"'"#g' $CHAIN_DIR/$CHAINID/config/app.toml


55 changes: 55 additions & 0 deletions x/ibc/scripts/init-axelar.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#!/bin/bash

BINARY=./axelard
CHAIN_DIR=./data
CHAINID=axelar_demo
VAL_MNEMONIC="clock post desk civil pottery foster expand merit dash seminar song memory figure uniform spice circle try happy obvious trash crime hybrid hood cushion"
DEMO_MNEMONIC="banner spread envelope side kite person disagree path silver will brother under couch edit food venture squirrel civil budget number acquire point work mass"
RLY_MNEMONIC="record gift you once hip style during joke field prize dust unique length more pencil transfer quit train device arrive energy sort steak upset"
P2PPORT=26656
RPCPORT=26657
RESTPORT=1317
ROSETTA=8081

# Stop if it is already running
if pgrep -x "$BINARY" >/dev/null; then
echo "Terminating $BINARY..."
killall $BINARY
fi

echo "Removing previous data..."
rm -rf $CHAIN_DIR/$CHAINID &> /dev/null

# Add directories for both chains, exit if an error occurs
if ! mkdir -p $CHAIN_DIR/$CHAINID 2>/dev/null; then
echo "Failed to create chain folder. Aborting..."
exit 1
fi

echo "Initializing $CHAINID..."
$BINARY init test --home $CHAIN_DIR/$CHAINID --chain-id=$CHAINID

echo "Adding genesis accounts..."
$BINARY keys add val --home $CHAIN_DIR/$CHAINID --recover --keyring-backend=test
$BINARY keys add demowallet --home $CHAIN_DIR/$CHAINID --recover --keyring-backend=test
$BINARY keys add axelarrelayer --home $CHAIN_DIR/$CHAINID --recover --keyring-backend=test

$BINARY genesis add-genesis-account $($BINARY --home $CHAIN_DIR/$CHAINID keys show val --keyring-backend test -a) 100000000000uaxl --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account $($BINARY --home $CHAIN_DIR/$CHAINID keys show demowallet --keyring-backend test -a) 100000000000uaxl --home $CHAIN_DIR/$CHAINID
$BINARY genesis add-genesis-account $($BINARY --home $CHAIN_DIR/$CHAINID keys show axelarrelayer --keyring-backend test -a) 100000000000uaxl --home $CHAIN_DIR/$CHAINID

echo "Creating and collecting gentx..."
$BINARY gentx val2 7000000000uaxl --home $CHAIN_DIR/$CHAINID --chain-id $CHAINID --keyring-backend test
$BINARY collect-gentxs --home $CHAIN_DIR/$CHAINID

echo "Changing defaults and ports in app.toml and config.toml files..."

sed -i -e 's#"tcp://0.0.0.0:26656"#"tcp://0.0.0.0:'"$P2PPORT"'"#g' $CHAIN_DIR/$CHAINID/config/config.toml
sed -i -e 's#"tcp://127.0.0.1:26657"#"tcp://0.0.0.0:'"$RPCPORT"'"#g' $CHAIN_DIR/$CHAINID/config/config.toml
sed -i -e 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $CHAIN_DIR/$CHAINID/config/config.toml
sed -i -e 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $CHAIN_DIR/$CHAINID/config/config.toml
sed -i -e 's/index_all_keys = false/index_all_keys = true/g' $CHAIN_DIR/$CHAINID/config/config.toml
sed -i -e 's/enable = false/enable = true/g' $CHAIN_DIR/$CHAINID/config/app.toml
sed -i -e 's/swagger = false/swagger = true/g' $CHAIN_DIR/$CHAINID/config/app.toml
sed -i -e 's#"tcp://0.0.0.0:1317"#"tcp://0.0.0.0:'"$RESTPORT"'"#g' $CHAIN_DIR/$CHAINID/config/app.toml
sed -i -e 's#":8080"#":'"$ROSETTA"'"#g' $CHAIN_DIR/$CHAINID/config/app.toml
91 changes: 91 additions & 0 deletions x/ibc/scripts/init-icad.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
#!/bin/bash

BINARY=./icad
CHAIN_DIR=./data
CHAINID_1=alloard
CHAINID_2=axelar
VAL_MNEMONIC_1="clock post desk civil pottery foster expand merit dash seminar song memory figure uniform spice circle try happy obvious trash crime hybrid hood cushion"
VAL_MNEMONIC_2="angry twist harsh drastic left brass behave host shove marriage fall update business leg direct reward object ugly security warm tuna model broccoli choice"
DEMO_MNEMONIC_1="banner spread envelope side kite person disagree path silver will brother under couch edit food venture squirrel civil budget number acquire point work mass"
DEMO_MNEMONIC_2="veteran try aware erosion drink dance decade comic dawn museum release episode original list ability owner size tuition surface ceiling depth seminar capable only"
RLY_MNEMONIC_1="alley afraid soup fall idea toss can goose become valve initial strong forward bright dish figure check leopard decide warfare hub unusual join cart"
RLY_MNEMONIC_2="record gift you once hip style during joke field prize dust unique length more pencil transfer quit train device arrive energy sort steak upset"
P2PPORT_1=16656
P2PPORT_2=26656
RPCPORT_1=16657
RPCPORT_2=26657
RESTPORT_1=1316
RESTPORT_2=1317
ROSETTA_1=8080
ROSETTA_2=8081

# Stop if it is already running
if pgrep -x "$BINARY" >/dev/null; then
echo "Terminating $BINARY..."
killall $BINARY
fi

echo "Removing previous data..."
rm -rf $CHAIN_DIR/$CHAINID_1 &> /dev/null
rm -rf $CHAIN_DIR/$CHAINID_2 &> /dev/null

# Add directories for both chains, exit if an error occurs
if ! mkdir -p $CHAIN_DIR/$CHAINID_1 2>/dev/null; then
echo "Failed to create chain folder. Aborting..."
exit 1
fi

if ! mkdir -p $CHAIN_DIR/$CHAINID_2 2>/dev/null; then
echo "Failed to create chain folder. Aborting..."
exit 1
fi

echo "Initializing $CHAINID_1..."
echo "Initializing $CHAINID_2..."
$BINARY init test --home $CHAIN_DIR/$CHAINID_1 --chain-id=$CHAINID_1
$BINARY init test --home $CHAIN_DIR/$CHAINID_2 --chain-id=$CHAINID_2

echo "Adding genesis accounts..."
echo $VAL_MNEMONIC_1 | $BINARY keys add val1 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test
echo $VAL_MNEMONIC_2 | $BINARY keys add val2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test
echo $DEMO_MNEMONIC_1 | $BINARY keys add demowallet1 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test
echo $DEMO_MNEMONIC_2 | $BINARY keys add demowallet2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test
echo $RLY_MNEMONIC_1 | $BINARY keys add rly1 --home $CHAIN_DIR/$CHAINID_1 --recover --keyring-backend=test
echo $RLY_MNEMONIC_2 | $BINARY keys add rly2 --home $CHAIN_DIR/$CHAINID_2 --recover --keyring-backend=test

$BINARY add-genesis-account $($BINARY --home $CHAIN_DIR/$CHAINID_1 keys show val1 --keyring-backend test -a) 100000000000stake1 --home $CHAIN_DIR/$CHAINID_1
$BINARY add-genesis-account $($BINARY --home $CHAIN_DIR/$CHAINID_2 keys show val2 --keyring-backend test -a) 100000000000stake2 --home $CHAIN_DIR/$CHAINID_2
$BINARY add-genesis-account $($BINARY --home $CHAIN_DIR/$CHAINID_1 keys show demowallet1 --keyring-backend test -a) 100000000000stake1 --home $CHAIN_DIR/$CHAINID_1
$BINARY add-genesis-account $($BINARY --home $CHAIN_DIR/$CHAINID_2 keys show demowallet2 --keyring-backend test -a) 100000000000stake2 --home $CHAIN_DIR/$CHAINID_2
$BINARY add-genesis-account $($BINARY --home $CHAIN_DIR/$CHAINID_1 keys show rly1 --keyring-backend test -a) 100000000000stake1 --home $CHAIN_DIR/$CHAINID_1
$BINARY add-genesis-account $($BINARY --home $CHAIN_DIR/$CHAINID_2 keys show rly2 --keyring-backend test -a) 100000000000stake2 --home $CHAIN_DIR/$CHAINID_2

echo "Creating and collecting gentx..."
$BINARY gentx val1 7000000000stake1 --home $CHAIN_DIR/$CHAINID_1 --chain-id $CHAINID_1 --keyring-backend test
$BINARY gentx val2 7000000000stake2 --home $CHAIN_DIR/$CHAINID_2 --chain-id $CHAINID_2 --keyring-backend test
$BINARY collect-gentxs --home $CHAIN_DIR/$CHAINID_1
$BINARY collect-gentxs --home $CHAIN_DIR/$CHAINID_2

echo "Changing defaults and ports in app.toml and config.toml files..."
sed -i -e 's#"tcp://0.0.0.0:26656"#"tcp://0.0.0.0:'"$P2PPORT_1"'"#g' $CHAIN_DIR/$CHAINID_1/config/config.toml
sed -i -e 's#"tcp://127.0.0.1:26657"#"tcp://0.0.0.0:'"$RPCPORT_1"'"#g' $CHAIN_DIR/$CHAINID_1/config/config.toml
sed -i -e 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $CHAIN_DIR/$CHAINID_1/config/config.toml
sed -i -e 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $CHAIN_DIR/$CHAINID_1/config/config.toml
sed -i -e 's/index_all_keys = false/index_all_keys = true/g' $CHAIN_DIR/$CHAINID_1/config/config.toml
sed -i -e 's/enable = false/enable = true/g' $CHAIN_DIR/$CHAINID_1/config/app.toml
sed -i -e 's/swagger = false/swagger = true/g' $CHAIN_DIR/$CHAINID_1/config/app.toml
sed -i -e 's#"tcp://0.0.0.0:1317"#"tcp://0.0.0.0:'"$RESTPORT_1"'"#g' $CHAIN_DIR/$CHAINID_1/config/app.toml
sed -i -e 's#":8080"#":'"$ROSETTA_1"'"#g' $CHAIN_DIR/$CHAINID_1/config/app.toml

sed -i -e 's#"tcp://0.0.0.0:26656"#"tcp://0.0.0.0:'"$P2PPORT_2"'"#g' $CHAIN_DIR/$CHAINID_2/config/config.toml
sed -i -e 's#"tcp://127.0.0.1:26657"#"tcp://0.0.0.0:'"$RPCPORT_2"'"#g' $CHAIN_DIR/$CHAINID_2/config/config.toml
sed -i -e 's/timeout_commit = "5s"/timeout_commit = "1s"/g' $CHAIN_DIR/$CHAINID_2/config/config.toml
sed -i -e 's/timeout_propose = "3s"/timeout_propose = "1s"/g' $CHAIN_DIR/$CHAINID_2/config/config.toml
sed -i -e 's/index_all_keys = false/index_all_keys = true/g' $CHAIN_DIR/$CHAINID_2/config/config.toml
sed -i -e 's/enable = false/enable = true/g' $CHAIN_DIR/$CHAINID_2/config/app.toml
sed -i -e 's/swagger = false/swagger = true/g' $CHAIN_DIR/$CHAINID_2/config/app.toml
sed -i -e 's#"tcp://0.0.0.0:1317"#"tcp://0.0.0.0:'"$RESTPORT_2"'"#g' $CHAIN_DIR/$CHAINID_2/config/app.toml
sed -i -e 's#":8080"#":'"$ROSETTA_2"'"#g' $CHAIN_DIR/$CHAINID_2/config/app.toml

# Update host chain genesis to allow x/bank/MsgSend ICA tx execution
sed -i -e 's/\"allow_messages\":.*/\"allow_messages\": [\"\/cosmos.bank.v1beta1.MsgSend\", \"\/cosmos.staking.v1beta1.MsgDelegate\"]/g' $CHAIN_DIR/$CHAINID_2/config/genesis.json
22 changes: 22 additions & 0 deletions x/ibc/scripts/relayer/chains/alloard.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"type": "cosmos",
"value": {
"key": "testkey",
"chain-id": "allora_demo",
"rpc-addr": "http://localhost:16657",
"grpc-addr": "",
"account-prefix": "cosmos",
"keyring-backend": "test",
"default-denom": "allo",
"gas-adjustment": 1.5,
"gas-prices": "0.025allo",
"debug": true,
"timeout": "20s",
"output-format": "json",
"sign-mode": "direct",
"trusting-period": "330h",
"gas":900000
}
}


23 changes: 23 additions & 0 deletions x/ibc/scripts/relayer/chains/axelar.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"type": "cosmos",
"value": {
"key": "testkey",
"chain-id": "axelar_demo",
"rpc-addr": "http://localhost:26657",
"grpc-addr": "",
"account-prefix": "cosmos",
"keyring-backend": "test",
"default-denom": "allo",
"gas-adjustment": 1.5,
"gas-prices": "0.025allo",
"debug": true,
"timeout": "20s",
"output-format": "json",
"sign-mode": "direct",
"trusting-period": "330h",
"gas":900000
}
}



22 changes: 22 additions & 0 deletions x/ibc/scripts/relayer/paths/allora_demo-axelar_demo.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"src":
{
"chain-id":"allora_demo",
"client-id":"",
"connection-id":"",
"channel-id":""
},
"dst":
{
"chain-id":"axelar_demo",
"client-id":"",
"connection-id":"",
"channel-id":""
},
"src-channel-filter": {
"rule": "",
"channel-list": []
}
}


16 changes: 16 additions & 0 deletions x/ibc/scripts/relayer/rly-link.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

# Configure predefined mnemonic pharses
BINARY=./rly
CHAIN_DIR=./data
RELAYER_DIR=./relayer

# Ensure rly is installed
if ! [ -x "$(command -v $BINARY)" ]; then
echo "$BINARY is required to run this script..."
echo "You can download at https://github.com/cosmos/relayer"
exit 1
fi

echo "Linking both chains"
$BINARY tx link allora_demo-axelar_demo --home $CHAIN_DIR/$RELAYER_DIR
16 changes: 16 additions & 0 deletions x/ibc/scripts/relayer/rly-start.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/bin/bash

# Configure predefined mnemonic pharses
BINARY=./rly
CHAIN_DIR=./data
RELAYER_DIR=./relayer

# Ensure rly is installed
if ! [ -x "$(command -v $BINARY)" ]; then
echo "$BINARY is required to run this script..."
echo "You can download at https://github.com/cosmos/relayer"
exit 1
fi

echo "Starting to listen relayer..."
$BINARY start allora_demo-axelar_demo -b 100 -p events --home $CHAIN_DIR/$RELAYER_DIR
30 changes: 30 additions & 0 deletions x/ibc/scripts/relayer/rly.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash

# Configure predefined mnemonic pharses
BINARY=./rly
CHAINID_1=allora_demo
CHAINID_2=axelar_demo
CHAIN_DIR=./data
RELAYER_DIR=./relayer

# Ensure rly is installed
if ! [ -x "$(command -v $BINARY)" ]; then
echo "$BINARY is required to run this script..."
echo "You can download at https://github.com/cosmos/relayer"
exit 1
fi


echo "Removing previous data..."
rm -rf $CHAIN_DIR/$RELAYER_DIR &> /dev/null

echo "Initializing $BINARY..."
$BINARY config init --home $CHAIN_DIR/$RELAYER_DIR

echo "Adding configurations for both chains..."
$BINARY chains add-dir ./network/relayer/chains --home $CHAIN_DIR/$RELAYER_DIR
$BINARY paths add-dir ./network/relayer/paths --home $CHAIN_DIR/$RELAYER_DIR

echo "Restoring accounts..."
$BINARY keys restore $CHAINID_1 testkey allorarelayer --home $CHAIN_DIR/$RELAYER_DIR
$BINARY keys restore $CHAINID_2 testkey axelarrelayer --home $CHAIN_DIR/$RELAYER_DIR
9 changes: 9 additions & 0 deletions x/ibc/scripts/start-allorad.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

BINARY=./allorad
CHAIN_DIR=./data
CHAINID=allora_demo

echo "Starting $CHAINID in $CHAIN_DIR..."
echo "Creating log file at $CHAIN_DIR/$CHAINID.log"
$BINARY start --log_level trace --log_format json --home $CHAIN_DIR/$CHAINID --minimum-gas-prices="1uallo" --pruning=nothing > $CHAIN_DIR/$CHAINID.log 2>&1 &
Loading

0 comments on commit 8db5e72

Please sign in to comment.