🟢IBC Relayer

Relayer Documentation

login to user : salinem

Generate Keys For Gravity IBC | save as file _ibc-gravity.json_

gravityd keys add ibc-gravity --keyring-backend file --output json     

Generate Keys For Osmosis IBC | save as file _ibc-osmosis.json_

If you have not Node Osmosis, Download first binary

 wget -c https://github.com/osmosis-labs/osmosis/releases/download/v13.1.0/osmosisd-13.1.0-linux-amd64
 mv osmosisd-13.1.0-linux-amd64 osmosisd

Generate Keys

osmosisd keys add ibc-osmosis --keyring-backend file --output json 

Generate Keys For Planq | Save as ibc-planq.json

planqd keys add ibc-planq --keyring-backend file --output json 

Install Hermes

 wget -c https://github.com/informalsystems/ibc-rs/releases/download/v1.1.0/hermes-v1.1.0-x86_64-unknown-linux-gnu.tar.gzb
 tar xvf hermes-v1.1.0-x86_64-unknown-linux-gnu.tar.gz
 mkdir -p ibc-relayer/{bin,conf,systemd}
 mv hermes ibc-relayer/bin/
 mkdir ~/.hermes/{keys,wallets} 

Copy all Keys json

mv ibc-*.json ~/.hermes/wallets

Create Config Hermes in ~/ibc-relayer/conf/config.toml

# The global section has parameters that apply globally to the relayer operation.
[global]
log_level = 'info'

# Specify the mode to be used by the relayer. [Required]
[mode]

# Specify the client mode.
[mode.clients]
enabled = false
refresh = true
misbehaviour = false

# Specify the connections mode.
[mode.connections]
enabled = false

# Specify the channels mode.
[mode.channels]
enabled = false

# Specify the packets mode.
[mode.packets]
enabled = true
clear_interval = 200
clear_on_start = true
tx_confirmation = true


[rest]
enabled = true
host = '0.0.0.0'
port = 3001

[telemetry]
enabled = true
host = '0.0.0.0'
port = 4001

######## PLANQ #####
[[chains]]
id = 'planq_7070-2'
rpc_addr = 'xxxxxxx'
grpc_addr = 'xxxxxxx'
websocket_addr = 'xxxxxxxx'

rpc_timeout = '20s'
account_prefix = 'plq'
key_name = 'ibc-planq'
address_type = { derivation = 'ethermint', proto_type = { pk_type = '/ethermint.crypto.v1.ethsecp256k1.PubKey' } }
default_gas = 2000000
max_gas = 40000000
gas_multiplier = 1.3
store_prefix = 'ibc'
max_msg_num = 30
max_tx_size = 1800000
clock_drift = '15s'
max_block_time = '10s'
trusting_period = '7days'
memo_prefix = 'RoomIT_IBC'
trust_threshold = { numerator = '1', denominator = '3' }
gas_price = { price = 30000000000, denom = 'aplanq' }


[chains.packet_filter]
policy = 'allow'
list = [
  ['transfer', 'channel-0'], # Gravity
  ['transfer', 'channel-1'], # Osmosis
]



###### GRAVITY ####
[[chains]]
id = 'gravity-bridge-3'
rpc_addr = 'xxxxx'
grpc_addr = 'xxxxx'
websocket_addr = 'xxxxx'

rpc_timeout = '20s'
account_prefix = 'gravity'
key_name = 'xxxxx'
address_type = { derivation = 'cosmos' }
store_prefix = 'ibc'
default_gas = 300000
max_gas = 5000000
gas_price = { price = 0.000, denom = 'ugraviton' }
gas_multiplier = 1.4
max_msg_num = 30
max_tx_size = 1800000
clock_drift = '15s'
max_block_time = '10s'
trusting_period = '7days'
memo_prefix = 'RoomIT_IBC'
trust_threshold = { numerator = '1', denominator = '3' }

[chains.packet_filter]
policy = 'allow'
list = [
  ['transfer', 'channel-10'], # Osmosis
  'transfer', 'channel-102'], # Planq
]


##### OSMOSIS ###
[[chains]]
id = 'osmosis-1'
rpc_addr = 'xxxxxxx'
grpc_addr = 'xxxxxxxx'
websocket_addr = 'xxxxxxxxxxx'

rpc_timeout = '20s'
account_prefix = 'osmo'
key_name = 'ibc-osmosis'
address_type = { derivation = 'cosmos' }
store_prefix = 'ibc'
default_gas = 500000
max_gas = 120000000
gas_price = { price = 0.0026, denom = 'uosmo' }
gas_multiplier = 1.8
max_msg_num = 30
max_tx_size = 1800000
clock_drift = '15s'
max_block_time = '10s'
trusting_period = '7days'
memo_prefix = 'RoomIT_IBC'
trust_threshold = { numerator = '1', denominator = '3' }

[chains.packet_filter]
policy = 'allow'
list = [
   ['transfer', 'channel-144'], # gravity
   ['transfer', 'channel-492'], # planq
]

Assign as xxxxx with true value

Copy All Config to ~/.hermes/

cp  ~/ibc-relayer/conf/config.toml ~/.hermes/

Add Keys to Hermes

hermes keys add --chain gravity-bridge-3 --key-file .hermes/wallets/ibc-gravity.json
hermes keys add --chain osmosis-1 --key-file .hermes/ibc-osmosis.json

alternative

hermes keys add --chain planq_7070-2 --key-name ibc-planq --hd-path "m/44'/60'/0'/0/0" --mnemonic-file  ibc-planq.json

Create Init Systemd

cat > ~/ibc-relayer/ibc.service<EOF
[Unit]
Description=hermes ibc 
After=network-online.target

[Service]
User=tendermint
Group=tendermint
ExecStart=/mainnet/salinem/ibc-relayer/bin/hermes start 
Restart=on-failure
RestartSec=3
LimitNOFILE=500000
LimitNPROC=500000
Environment="HOME=/mainnet/salinem"


[Install]
WantedBy=multi-user.target
EOF

Linking systemd

sudo ln -sf /mainnet/salinem/ibc-relayer/systemd/ibc.service /etc/systemd/system
sudo systemctl daemon-reload

Start Service Hermes

sudo systemctl start ibc

Create Connection

  hermes create connection --a-chain planq_7070-2 --b-chain gravity-bridge-3
  hermes create connection --a-chain planq_7070-2  --b-chain osmosis-1
  hermes create connection --a-chain gravity-bridge-3  --b-chain osmosis-1
  hermes create connection --a-chain gravity-bridge-3  --b-chain planq_7070-2
  hermes create connection --a-chain osmosis-1  --b-chain planq_7070-2
  hermes create connection --a-chain osmosis-1  --b-chain gravity-bridge-3

Test Transfer

your_blockchain tx ibc-transfer transfer transfer channel-0 your_osmo_wallet_address 1000000usource --from your_wallet_name --gas-adjustment 1.4 --gas auto --gas-prices 0.025usource -y

Last updated