Skip to content

Instantly share code, notes, and snippets.

@lenox11
Created September 12, 2021 06:16
Show Gist options
  • Save lenox11/e23bd8396f4d609e41adf82fe4e9f7f7 to your computer and use it in GitHub Desktop.
Save lenox11/e23bd8396f4d609e41adf82fe4e9f7f7 to your computer and use it in GitHub Desktop.
IBC в Cosmos SDK. Crypto - KiChain
Для реализации трансляции транзакций между блокчейнами на базе Cosmos SDK нам понадобиться поднять IBC релеера.
Чтобы выполнить задание и не поднимать дополнительный сервер, будем использовать существующий сервер с KiCahin и установим на него клиент от Crypto.com (далее CRO).
Будем пересылать транзакции между тестовыми сетями kichain-t-4 и testnet-croeseid-4 соответственно.
# Установка клиента CRO, для доступа к тестовой сети testnet-croeseid-4
1. Скачиваем клиент CRO и делаем его доступным для вызова из любого места
curl wget https://github.com/crypto-org-chain/chain-main/releases/download/v3.1.1-croeseid/chain-main_3.1.1-croeseid_Linux_x86_64.tar.gz
mkdir croeseid
tar -C croeseid -zxvf chain-main_3.1.1-croeseid_Linux_x86_64.tar.gz
cd croeseid/bin
sudo cp chain-maind /usr/local/bin/
cd
2. Создаём кошелёк, попутно сохранив mnemominc который будет выведен на экран в результате выполнения команды создания
chain-maind keys add cro_wallet # где cro_wallet - любое имя для вашего кошелька
3. После создания получаем адрес кошелька
chain-maind keys show cro_wallet -a # где cro_wallet - любое имя для вашего кошелька
4. Запрашиваем токены из крана
https://crypto.org/faucet
5. После запроса токенов на предыдущем шаге, проверяем их поступления на кошелек
chain-maind q bank balances cro_wallet --node https://testnet-croeseid-4.crypto.org:26657 # где cro_wallet - любое имя для вашего кошелька
# Установка IBC релеера для трансялции транзакций между блокчейнами
1. Скачиваем с репозитория и устанавливаем IBC релеер
git clone https://github.com/cosmos/relayer.git
cd relayer
make install
cd
2. Инициализируем IBC релеер
rly config init
3. Создаём папку конфигураций IBC релеера
mkdir rly_config
cd rly_config
4. Создаём конфигурацию для используемых сетей:
KiСhain
nano kichain-t-4.json
И вставляем туда следующий текст
{
"chain-id": "kichain-t-4",
"rpc-addr": "http://127.0.0.1:26657",
"account-prefix": "tki",
"gas-adjustment": 1.5,
"gas-prices": "0.025utki",
"trusting-period": "48h"
}
Такая же процедура и для CRO
Croeseid
nano testnet-croeseid-4.json
{
"chain-id": "testnet-croeseid-4",
"rpc-addr": "https://testnet-croeseid-4.crypto.org:26657",
"account-prefix": "tcro",
"gas-adjustment": 1.5,
"gas-prices": "0.025basetcro",
"trusting-period": "48h"
}
5. Добавляем предварительно прописанные настройки в конфигурационный файл IBC релеера
rly chains add -f kichain-t-4.json
rly chains add -f testnet-croeseid-4.json
cd
6. Добавляем в IBC релеер кошельки в обеих сетях (рекомендуется для этого создать отдельные кошельки). Не забудьте сохранить сид-фразы и адреса
rly keys add kichain-t-4 kichain_rly # сохраняем mnemonic
rly keys add cygnusx-osmo-1 cro_rly # сохраняем mnemonic
7. Добавляем созданные кошельки в конфигурацию IBC релеера
rly chains edit kichain-t-4 key kichain_rly
rly chains edit cygnusx-osmo-1 key cro_rly
8. Обновлеяем в настройках IBC релеера значения тайм-аут, чтобы он спевал обрабатывать транзакции
nano ~/.relayer/config/config.yaml
Значние в строке
timeout: 10s
Заменяем на
timeout: 3m
8. Пополняем кошельки IBC релеера. В данном примере пополнение равно 10 монетам.
kid tx bank send ИМЯ_КОШЕЛЬКА_КИЧЕЙН АДРЕС_КОШЕЛЬКА_kichain_rly 10000000utki --chain-id kichain-t-4
chain-maind tx bank send ИМЯ_КОШЕЛЬКА_КРО АДРЕС_КОШЕЛЬКА_cro_rly 10000000basetcro --node https://testnet-croeseid-4.crypto.org:26657/ --chain-id testnet-croeseid-4
9. Проверяем баланс
rly q balance kichain-t-4
rly q balance testnet-croeseid-4
10. Если токены пришли, то инициализируем клиенты для обеих сетей следующими командами
rly light init kichain-t-4 -f
rly light init testnet-croeseid-4 -f
11. Настраиваем тунель с сетью Croeseid.
nano ~/.relayer/config/config.yaml
Добавляем в конфигурацию релеера следующий блок
paths:
transfer:
src:
chain-id: kichain-t-4
port-id: transfer
order: UNORDERED
version: ics20-1
dst:
chain-id: testnet-croeseid-4
port-id: transfer
order: UNORDERED
version: ics20-1
strategy:
type: naive
Сохраняем и выхоодим
12. Проверяем что тонель успешно создан
rly chains list
Должны стоять все галочки, если нет, проверяем все выше, дальше не идем
root@Ubuntu-2004-focal-64-minimal:~# rly chains list
0: kichain-t-4 -> key(✔) bal(✔) light(✔) path(✔)
1: testnet-croeseid-4 -> key(✔) bal(✔) light(✔) path(✔)
13. Открываем каналы
rly tx link transfer
# ждем Channel Created
Если будут ошибки, то нужно повторно выполнить
# Нужно перезапустить клиенты и линки
rly light init kichain-t-4 -f
rly light init testnet-croeseid-4 -f
rly tx link transfer
Должен быть следующий результат
root@Ubuntu-2004-focal-64-minimal:~# rly tx link transfer
I[2021-09-12|06:25:07.635] ★ Clients created: client(07-tendermint-11) on chain[kichain-t-4] and client(07-tendermint-127) on chain[testnet-croeseid-4]
I[2021-09-12|06:25:08.993] ★ Connection created: [kichain-t-4]client{07-tendermint-11}conn{connection-275} -> [testnet-croeseid-4]client{07-tendermint-127}conn{connection-98}
I[2021-09-12|06:25:10.370] ★ Channel created: [kichain-t-4]chan{channel-227}port{transfer} -> [testnet-croeseid-4]chan{channel-88}port{transfer}
14. Отправка токенов через IBC релеер, трансляция между блокчейнами
# отправка из KiChain в Cro
rly tx transfer kichain-t-4 testnet-croeseid-4 500000utki tcro103j3p5qvf79lwea3ahmeg397kp2f80gd5waerg --path transfer
https://api-challenge.blockchain.ki/txs/907CEC853D063F78BFC74F8B0C180CA856637B0ABFA137675EDD8EDB66E28A6D
https://api-challenge.blockchain.ki/txs/6494776CC868FF862382C60BB5196281D602337D2346438664466F8A19BFB4EB
https://api-challenge.blockchain.ki/txs/DA4A13A47C55BB027F037BE96BC44E11F58B3889C8EB155B4334D4BA39211397
https://api-challenge.blockchain.ki/txs/EC28A3889F304CD276354E510D03F3B3E71F85467C3ED7C0E1B07F3DDEE5EC9B
https://api-challenge.blockchain.ki/txs/DCB7D398417CCA018684DB0551241E6400BEC80FC66C1F57C1E3F89BDD85BC30
# отправка из Cro в KiChain
rly tx transfer testnet-croeseid-4 kichain-t-4 100000000basetcro tki1wunkfq9rhr7uah7px7tcgdln8g0p7ezeptm3u4 --path transfer
https://crypto.org/explorer/croeseid4/tx/BE8EEEE80D08D0AAB3B99A9C75A64B965882F70D2DCE9D942C706F9D37443E0E
https://crypto.org/explorer/croeseid4/tx/46C3A1D7399C4061D7FA82892B813F7224285875B91D707FF15320E2AD0E324F
https://crypto.org/explorer/croeseid4/tx/B5FEF7496563FDCAEBAD24CD5161C72E56C84184D330FE5AEF18BA9C0A3D4489
https://crypto.org/explorer/croeseid4/tx/33E2937ECAC1803D2418B4EE69222B27EC7B1CEC1AAA03B5D8D18BEDCBE36408
https://crypto.org/explorer/croeseid4/tx/CB3078B799BBD094CC5D4A7AF783501F5652D0DCAD301C2E869EE0EBD72D190C
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment