Завершённые
August 9, 2021

KiChain | kichain-t-3

1package & Let's Node

⠀KiChain — сеть, позволяющая стейкать токены $XKI на валидаторов. О тестовой сети с наградами в этой статье.


Содержание


Информация о проекте

К содержанию

⠀Источники информации:

Описание проекта

⠀Ki — платформа по объединению традиционных активов и DeFi экосистемы. Довольно интересный, а самое главное актуальный проект, так как разработчики стремятся осуществить массовый переход на крипто-технологии, связывая реальный мир и DeFi в единый продукт. Ki уже объединяет в себе два продукта — Klub и KiChain.

⠀Klub — инвестиционная платформа, позволяющая взаимодействовать с традиционными финансовыми рынками. Кроме того, эксклюзивом здесь является то, что Klub позволяет своим клиентам взаимодействовать с миром криптовалют без посредников (например, пополнение из фиата, причем легальное — что является важным пунктом для многих инвесторов). Еще одной интересной фишкой является возможность участвовать в ранних размещениях различных проектов. Построение сильной экосистемы, доступ к ранним раундам финансирования, различные возможности интеграции реального мира с миром криптовалют и ещё множество фишек — это именно то, что может предоставить Klub своим пользователям.

⠀KiChain — сеть, позволяющая взаимодействовать валидаторам и делегаторам между собой. Делегаторы стейкают на валидаторов токены $XKI и получают процент со своих вложений, а последние получают комиссионные (до 10%).

⠀С целью популяризации и набора новых валидаторов в основную сеть была анонсирована стимулирующая тестовая сеть, в ходе которой нужно будет выполнять задания, сложность которых с каждым разом будет увеличиваться. Обязательное условие — аккаунту GitHub должно быть не менее 3 месяцев. Далее речь идёт об этой тестовой сети.

Фазы тестовой сети

⠀Тестовая сеть продлиться чуть больше 1 месяца и включает в себя 4 фазы:

  • 2-15 августа — регистрация
  • 15-23 августа — начало испытания
  • 23 августа - 5 сентября — секретная фаза
  • 5 сентября — подведение итогов

Награды

⠀KiChain запустили испытание для сообщества с наградным фондом в размере 100'000$ в токенах $XKI:

  • 1 место — 50'000$
  • 2 место — 20'000$
  • 3 место — 5'000$
  • 4-10 места — 3'000$
  • Специальные задания — 4'000$

⠀На выигранные монеты будете распространяться 12-ти месячная система вестинга — каждый месяц будет становиться доступным для вывода 1/12 от награды

⠀В дополнении к фиксированным наградам, участники, которые займут 11-20 место получат делегацию от фонда по 100'000$ каждый в токенах $XKI. Благодаря этому нода будет генерировать доход для делегаторов взамен на награду с комиссий (не больше 10%).

⠀Для получения наград будет необходимо пройти KYC верификацию.

⠀Для участников не занявших какие-либо места награда не предусмотрена, однако кто знает, что могут дать за участие.

⠀Появилась возможность участия для тех, кто не заполнил заявку до 16 августа. Что по наградам в таком случае — не известно


Требования к серверу

К содержанию

⠀VPS/VDS/DS: 4 CPU, 4 GB RAM, 80 GB SSD, Ubuntu 20.04

⠀Подходящие сервера:


Запуск

К содержанию

Подготовка

⠀Обновить пакеты

sudo apt update && sudo apt upgrade -y

⠀Установить необходимые пакеты

sudo apt install wget git build-essential make jq -y

⠀Установить GO скриптом

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/installers/golang.sh)

⠀Установить инструментарий

cd; git clone https://github.com/KiFoundation/ki-tools.git && cd ki-tools && git checkout testnet-ibc && make install; cd

⠀Создать директорию с нодой

mkdir -p $HOME/kichain/kid

⠀Придумать название ноды, запустить команду и ввести название, тем самым добавить его в систему в виде переменной

Без пробелов, " и '

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n kichain_moniker

Если есть резервная копия папки config с ключами валидатора

⠀Инициализировать ноду

kid init "$kichain_moniker" --chain-id kichain-t-3 --home $HOME/kichain/kid/

⠀Указанные файлы заменить файлами из резервной копии папки config (команды отображают пути)

echo $HOME/kichain/kid/config/node_key.json
echo $HOME/kichain/kid/config/priv_validator_key.json

Если создаётся новый валидатор

⠀Инициализировать ноду

kid unsafe-reset-all --home $HOME/kichain/kid/

⠀Сделать резервную копию папки с настройками, сохранив себе на ПК (команда отображает путь)

echo $HOME/kichain/kid/config

Продолжение

⠀Придумать название кошелька, запустить команду и ввести название, тем самым добавить его в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n kichain_wallet_name

Если уже есть аккаунт валидатора

⠀Восставить аккаунт валидатора

kid keys add "$kichain_wallet_name" --recover --home $HOME/kichain/kid/

⠀Необходимо ввести мнемоническую фразу от кошелька и дважды пароль для ноды

Если нет аккаунта валидатора

⠀Создать аккаунт валидатора

kid keys add "$kichain_wallet_name" --home $HOME/kichain/kid/

⠀Необходимо задать пароль, запомнить его и

Сохранить вывод команды в текстовый файл

Продолжение

⠀Экспортировать приватные ключи командой (необходимо ввести заданный ранее пароль и тот же или другой для шифрования)

kid keys export "$kichain_wallet_name" --home $HOME/kichain/kid/

⠀Сохранить выведенную информацию в текстовый файл на своём ПК и запомнить указанный вторым пароль

Желательно не хранить данную информацию и пароль в одном месте

⠀Попросить токены на кошелёк, начинающийся на tki1..., у сообщества. Сделать это можно в:

Запуск ноды

⠀Скачать генезис файл

wget -qO $HOME/kichain/kid/config/genesis.json https://raw.githubusercontent.com/KiFoundation/ki-networks/v0.1/Testnet/kichain-t-3/genesis.json

⠀Отредактировать конфиг

sed -i -e "s%^moniker *=.*%moniker = \"$kichain_moniker\"%; s%^seeds *=.*%seeds = \"`wget -qO - https://raw.githubusercontent.com/SecorD0/KiChain/main/settings/seed-nodes.txt | tr '\n' ', '`\"%; s%^persistent_peers *=.*%persistent_peers = \"`wget -qO - https://raw.githubusercontent.com/KiFoundation/ki-networks/v0.1/Testnet/kichain-t-2/peer-nodes.txt | tr '\n' ',' | sed 's%,$%%'`\"%" $HOME/kichain/kid/config/config.toml

⠀Если на сервере стоит ещё одна нода, использующая Tendermint (Stratos, Findora и пр.), то дополнительно настроить конфиг в соответствии со статьёй

⠀Создать сервисный файл

sudo tee /etc/systemd/system/kichaind.service > /dev/null <<EOF
[Unit]
Description=KiChain Node
After=network-online.target

[Service]
User=$USER
ExecStart=`which kid` start --home $HOME/kichain/kid/
Restart=always
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

⠀Запустить сервис

sudo systemctl daemon-reload
sudo systemctl enable kichaind
sudo systemctl restart kichaind

⠀Добавить команду для просмотра лога ноды в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n kichain_log -v "sudo journalctl -fn 100 -u kichaind" -a

⠀Добавить команду для просмотра информации о ноде в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n kichain_node_info -v ". <(wget -qO- https://raw.githubusercontent.com/SecorD0/KiChain/main/node_info.sh) -l RU 2> /dev/null" -a

Ожидание

⠀Дождаться окончания синхронизации ноды (пройдёт несколько (десятков) часов)

kichain_node_info

⠀После того, как на ноду пришлют монеты, создать валидатора

kid tx staking create-validator --commission-max-change-rate 0.1 --commission-max-rate 0.1 --commission-rate 0.09 --min-self-delegation 1 --amount 4995000utki --pubkey `kid tendermint show-validator --home $HOME/kichain/kid/` --moniker "$kichain_moniker" --chain-id kichain-t-3 --gas auto --gas-prices 0.025utki --from "$kichain_wallet_name" --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/kichain/kid/config/config.toml` --home $HOME/kichain/kid/

⠀Записать адрес кошелька (вывод первой команды) и оператора для заполнения формы (есть в выводе второй команды)

kid keys show "$kichain_wallet_name" -a --home $HOME/kichain/kid/
kichain_node_info

⠀Если форма заполнялась, то дальнейшие шаги пропустить

Создание кошелька

⠀Для заполнения формы необходим KiChain адрес основной сети, для этого нужно создать кошелёк.

⠀Сделать это можно как минимум двумя способами

В мобильном приложении Cosmostation Wallet

  1. Найти приложение в Google Play или App Store (ссылки на приложения можно найти на официальном сайте)
  2. Скачать и установить его
  3. Запустить
  4. Выбрать «CREATE»
  5. Найти «Ki Foundation Mainnet»
  6. Нажать «Show Mnemonic»
  7. Задать пароль, состоящий из 4 цифр и 1 буквы
  8. Сохранить мнемоническую фразу
  9. Нажать «Create wallet»
  10. Записать адрес кошелька для заполнения формы

В KiChain Desktop Wallet

  1. Скачать установщик под необходимую ОС из официального репозитория
  2. Установить приложение (может ругаться на вирус при запуске файла установщика)
  3. Запустить приложение (в Windows ярлык не создаётся, нужно запустить либо из поиска меню пуск, либо EXE файл из папки с приложением)
  4. Нажать «Generate a new Wallet»
  5. Ввести название кошелька
  6. Сохранить мнемоническую фразу
  7. Повторить мнемоническую фразу
  8. Ввести пароль
  9. Записать адрес кошелька для заполнения формы

Заполнение формы

⠀Присоединиться к каналу Discord

⠀Открыть и заполнить форму

  • First Name — имя
  • Last Name — фамилия
  • Email address — адрес почты
  • Company — компания/проект (если находитесь в ряду такой)
  • Github handle — логин GitHub (аккаунту должно быть более 3 месяцев)
  • Discord Handle — логин Discord типа xxxxxx#0000 (необходимо вступить в канал)
  • Validator Moniker — название ноды, можно узнать командой
echo $kichain_moniker
  • Validator testnet wallet address — записанный ранее адрес кошелька
  • Validator testnet operator address — записанный ранее адрес оператора
  • Mainnet reward address — записанный ранее адрес кошелька
  • Are you willing to launch a validator on the mainnet — Yes
  • Do you already validate on the following chains? — валидируете ли в указанных сетях? (вероятно можно указать Cosmos Hub, но это не точно)
  • If it applies, on what other chains do you already validate? — указать тестовые сети, в которых принимаете участие (например Stratos, OmniFlix и т. п.)
  • KYC/AML — перевести и прочитать
  • Поставить галочку и отправить форму, если согласны с правилами

Информация о ноде

К содержанию

⠀Посмотреть информацию о ноде

kichain_node_info

Побег из тюрьмы

К содержанию

⠀Чтобы узнать, находится ли нода в тюрьме, необходимо использовать команду

kichain_node_info

⠀Если нода находится в заточении, то необходимо выполнить команду, чтобы выбраться из него

kid tx slashing unjail --from "$kichain_wallet_name" --chain-id kichain-t-3 --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/kichain/kid/config/config.toml` --home $HOME/kichain/kid

⠀Через некоторое время нода должна выбраться из заточения


Установка аватара

К содержанию

⠀Зарегистрировать или авторизоваться на сайте KeyBase

⠀Подтвердить почту

⠀⠀Установить аватар

⠀Сгенерировать PGP ключ

⠀Нажать на PGP ключ и скопировать его для дальнейшей установки аватара

⠀Подставить свои значения в команду для редактирования валидатора (в блокноте), выполнить её, подтвердить транзакцию и ввести пароль

kid tx staking edit-validator \
  --moniker "ANY_NAME" \
  --identity "1A1A2B2B3C3C4D4D" \
  --details "ANY_TEXT" \
  --gas auto \
  --gas-prices 0.025utki \
  --from "$kichain_wallet_name" \
  --chain-id kichain-t-3 \
  --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/kichain/kid/config/config.toml` \
  --home $HOME/kichain/kid
  • moniker — можно указать как старый, так и новый
  • identity — скопированный ранее PGP ключ
  • details — любое описание валидатора

Изменение комиссии

К содержанию

⠀По условиям испытания 11-20 места получат делегацию 100'000$ на каждого, при этом одним из условий получения является комиссия, ниже 10%. Включительно или нет — непонятно, поэтому для снижения комиссии до 9% необходимо выполнить команду

kid tx staking edit-validator --commission-rate 0.09 --gas auto --gas-prices 0.025utki --from "$kichain_wallet_name" --chain-id kichain-t-3 --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/kichain/kid/config/config.toml` --home $HOME/kichain/kid

⠀Менять комиссию можно раз в сутки


Обновление

К содержанию

⠀Подразумевается, что нода была остановлена на 219'800 блоке

⠀Удалить старые резервные копии

rm -rf $HOME/kichain/unsucc_backup $HOME/kid-backup/

⠀Сделать резервную копию папки kid

⠀Копирование может занять несколько десятков минут, поскольку размер папки ~30 ГБ

cp -r $HOME/kichain/kid $HOME/kid_backup_kt3/

Короткий путь

⠀Сделать резервную копию как в начале раздела

⠀Сбросить состояние ноды

kid unsafe-reset-all --home $HOME/kichain/kid

⠀Скачать готовый генезис файл

wget -qO $HOME/kichain/kid/config/genesis.json https://raw.githubusercontent.com/KiFoundation/ki-networks/v0.1/Testnet/kichain-t-4/genesis.json

⠀Убрать остановочную высоту

sed -i "s%^halt-height *=.*%halt-height = 0%" $HOME/kichain/kid/config/app.toml

⠀Изменить сервисный файл обратно

sudo tee /etc/systemd/system/kichaind.service > /dev/null <<EOF
[Unit]
Description=KiChain Node
After=network-online.target

[Service]
User=$USER
ExecStart=`which kid` start --home $HOME/kichain/kid/
Restart=always
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

⠀Запустить сервис

sudo systemctl daemon-reload
sudo systemctl enable kichaind
sudo systemctl restart kichaind

⠀Перейти к пункту «Проверка»

Длинный путь

⠀Сделать резервную копию как в начале раздела

⠀Экспортировать состояние блокчейна

kid export --height 219800 --home $HOME/kichain/kid > $HOME/kichain/kichain-t-3_genesis_export.json

⠀Вывести хэш экспортированного генезис файла

jq -S -c -M '' $HOME/kichain/kichain-t-3_genesis_export.json | shasum -a 256

⠀Хэш должен быть таким. Что делать, если не совпадает — непонятно

3377744f812972a82dac855e357046152905d6a407bd526b55e45b874895d817

⠀Обновить экспортированный генезис

sed -i -e "s%\"receive_enabled\":false%\"receive_enabled\":true%g; s%\"send_enabled\":false%\"send_enabled\":true%g; s%\"voting_period\":\"1209600s\"%\"voting_period\":\"7200s\"%g; s%\"kichain-t-3\"%\"kichain-t-4\"%g" $HOME/kichain/kichain-t-3_genesis_export.json

⠀Найти последовательность каналов

prev=`cat $HOME/kichain/kichain-t-3_genesis_export.json | jq .app_state.ibc.channel_genesis.ack_sequences[] | jq 'map(split("-"))[0][1] | tonumber' | sort -n | tail -1` && next=$(($prev+1)) && echo $next

⠀Должно вывести 42. Что делать, если не совпадает — непонятно

⠀Обновить последовательность каналов

sed -i "s%\"next_channel_sequence\":\"0\"%\"next_channel_sequence\":\"$next\"%g" $HOME/kichain/kichain-t-3_genesis_export.json

⠀Удостовериться, что значение изменилось на 42

cat $HOME/kichain/kichain-t-3_genesis_export.json | jq | grep "next_channel_sequence"

⠀Переименовать изменённое состояние в genesis.json

mv $HOME/kichain/kichain-t-3_genesis_export.json $HOME/kichain/genesis.json

⠀Вывести хэш мигрированного генезис файла

jq -S -c -M '' $HOME/kichain/genesis.json | shasum -a 256

⠀Хэш должен быть таким. Что делать, если не совпадает — непонятно

83e8d8b9b883f1d478fb8d9f0e32c138904d0cbc30e939fa0490f988fd0b78d7

⠀Удостовериться, что резервное копирование было проведено успешно

⠀Размер папок должен быть примерно одинаковым

du $HOME/kichain/kid -BM
du $HOME/kid_backup_kt3/ -BM

⠀Сделать резервную копию настроек

cp $HOME/kichain/kid/config/config.toml $HOME/kichain/kid/config/config.toml.kichain-t-3.bak
cp $HOME/kichain/kid/config/app.toml $HOME/kichain/kid/config/app.toml.kichain-t-3.bak

⠀Сбросить состояние ноды

kid unsafe-reset-all --home $HOME/kichain/kid

⠀Скопировать созданный ранее генезис файл в папку с нодой

cp $HOME/kichain/genesis.json $HOME/kichain/kid/config/

⠀Убрать остановочную высоту

sed -i "s%^halt-height *=.*%halt-height = 0%" $HOME/kichain/kid/config/app.toml

⠀Изменить сервисный файл обратно

sudo tee /etc/systemd/system/kichaind.service > /dev/null <<EOF
[Unit]
Description=KiChain Node
After=network-online.target

[Service]
User=$USER
ExecStart=`which kid` start --home $HOME/kichain/kid/
Restart=always
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

⠀Запустить сервис

sudo systemctl daemon-reload
sudo systemctl enable kichaind
sudo systemctl restart kichaind

Проверка

⠀Проверить лог

kichain_log

⠀Через некоторое время посмотреть информацию о ноде удостовериться, что обработка блоков идёт

kichain_node_info


Возможные проблемы

К содержанию

1) Переменная $kichain_moniker или $kichain_wallet_name не работает

⠀Вероятнее всего, переменная не была записана в систему. Чтобы проверить так ли это, необходимо выполнить команду с подозреваемой переменной

echo $kichain_moniker
echo $kichain_wallet_name

⠀Если вывод команды пустой, то вспомнить название ноды, запустить команду и ввести название, тем самым добавить его в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n kichain_moniker

⠀Или вспомнить название кошелька, запустить команду и ввести название, тем самым добавить его в систему в виде переменной

. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n kichain_wallet_name

⠀Проверить, записалась ли переменная, выполнив команду с подозреваемой переменной

echo $kichain_moniker
echo $kichain_wallet_name

2) Нода работает, но в explorer’е uptime 0%

⠀Нода запущена с другого аккаунта валидатора, чтобы удостовериться в этом необходимо узнать публичный ключ валидатора командой

kid tendermint show-validator --home $HOME/kichain/kid/

⠀Если он не совпадает с тем, который подавался в генезис через GitHub (нет в генезис файле), то необходимо найти сохранённую при регистрации папку (команда отображает путь)

echo $HOME/kichain/kid/config

⠀Если резервная копия папки не была сделана, то можно не продолжать, а перейти к разделу «Если не приняли в генезис или заявка на добавление не подавалась» и запомнить, что

У нод, работающих на базе Tendermint всегда нужно сохранять папку с настройками DIR_WITH_NODE/config/

⠀Остановить ноду

sudo systemctl stop kichaind

⠀Удалить папку с настройками

rm -rf $HOME/kichain/kid/config

⠀Сохранённую при регистрации папку config поместить в папку (команда отображает путь)

echo $HOME/kichain/kid/

⠀Запустить ноду

sudo systemctl start kichaind

⠀Зайти explorer’е на страницу своей ноды и удостовериться, что она начала обрабатывать блоки


Задания

К содержанию

⠀Как заявляли разработчики в официальном посте, предусмотрены задания.

Ретранслятор

⠀IBC позволяет осуществлять кроссчейн передачу криптовалюты и данных. Для этого необходим так называемый ретранслятор. Начиная с 6 сентября участникам предлагается запустить ретранслятор с существующей цепочкой с поддержкой IBC в экосистеме Cosmos.

⠀Требования:

  • Запустить ретранслятор
  • Выполнить несколько кроссчейн транзакций
  • Опубликовать техническую документацию (в Medium или Readme на Github)
    • Используемый клиент ретранслятора (версия, репо, …)
    • Инструкция по установке (спецификации и требования)
    • Конфигурации (тайм-ауты, пути, цепочки, …)
    • Каналы
    • Инструкция по отправке кроссчейн транзакции
    • Хэш выполненных транзакций
    • Поддерживать работоспособность ретранслятора до конца испытания

⠀Материалы должны быть отправлены через Pull Request в этот репозиторий (шаблон отправляемого JSON файла находится в конце страницы).

Крайний срок подачи — перенесли, пока не понятно

⠀Любой запрос на добавление, отправленный после дедлайна или в неправильную директорию, будет отклонен автоматически.

Приведённое ниже делать на том же сервере, где стоит KiChain нода

⠀Установить ноду Cro:

  • В начале ввести название ноды, название кошелька
  • В конце ввести 2 раза пароль для кошелька
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/Cro/main/installer.sh)

⠀Сохранить выведенную мнемоническую фразу

⠀Дождаться синхронизации

cro_node_info

⠀Установить ретранслятор

cd; git clone https://github.com/cosmos/relayer.git; cd relayer;  make install; cd

⠀Инициализировать ретранслятор

rly config init

⠀Создать файл настроек KiChain и Cro сетей

echo '{"chain-id":"kichain-t-4","rpc-addr":"https://rpc-challenge.blockchain.ki:443","account-prefix":"tki","gas-adjustment":1.5,"gas-prices":"0.025utki","trusting-period":"10m"}' > $HOME/.relayer/config/kichain_config.json
echo '{"chain-id":"testnet-croeseid-4","rpc-addr":"'`grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/.chain-maind/config/config.toml`'","account-prefix":"tcro","gas-adjustment":1.5,"gas-prices":"0.025basetcro","trusting-period":"10m"}'  > $HOME/.relayer/config/croeseid_config.json

⠀Добавить сети в ретранслятор

rly chains add -f $HOME/.relayer/config/kichain_config.json
rly chains add -f $HOME/.relayer/config/croeseid_config.json

⠀Создать кошельки в ретрансляторе

rly keys add kichain-t-4 "$kichain_wallet_name" > $HOME/rly_kichain_wallet.txt
rly keys add testnet-croeseid-4 "$cro_wallet_name" > $HOME/rly_croeseid_wallet.txt

⠀Сделать резервную копию файлов с мнемоническими фразами, сохранив себе на ПК (команды отображают пути)

echo $HOME/rly_kichain_wallet.txt
echo $HOME/rly_croeseid_wallet.txt

⠀Привязать кошельки к сетям

rly chains edit kichain-t-4 key "$kichain_wallet_name"
rly chains edit testnet-croeseid-4 key "$cro_wallet_name"

⠀Перевести со своей KiChain ноды 10 токенов на KiChain адрес

kid tx bank send "$kichain_wallet_name" `rly keys show kichain-t-4 "$kichain_wallet_name"` 10000000utki --gas auto --chain-id kichain-t-4 --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/kichain/kid/config/config.toml` --home $HOME/kichain/kid/

⠀На сервере с графическим интерфейсом необходимо добавить флаг --keyring-backend file, заранее импортировав ключи с таким же параметром параметром в KiChain ноду

kid keys add "$kichain_wallet_name" --recover --home $HOME/kichain/kid/ --keyring-backend file

⠀Запросить токены с крана на Cro адрес

rly keys show testnet-croeseid-4 "$cro_wallet_name"

⠀Запустить клиенты сетей

rly light init kichain-t-4 -f
rly light init testnet-croeseid-4 -f

⠀Вывод

successfully created light client for kichain-t-4 by trusting endpoint https://rpc-challenge.blockchain.ki:443...
successfully created light client for testnet-croeseid-4 by trusting endpoint tcp://127.0.0.1:26667...

⠀Добавить каналы в config.yaml (необходимо ввести любые названия для KiChain и Cro каналов по очереди)

sed -i.bak -e 's%timeout: *.*%timeout: 3m%; s% {}%%' $HOME/.relayer/config/config.yaml; \
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n kichain_path; \
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/utils/main/miscellaneous/insert_variable.sh) -n cro_path; \
cat >> $HOME/.relayer/config/config.yaml <<EOF 
  $kichain_path:
    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
  $cro_path:
    src:
      chain-id: testnet-croeseid-4
      port-id: transfer
      order: UNORDERED
      version: ics20-1
    dst:
      chain-id: kichain-t-4
      port-id: transfer
      order: UNORDERED
      version: ics20-1
    strategy:
      type: naive
EOF

⠀Проверить, всё ли готово к работе

rly chains list

⠀Должны везде стоять галочки

 0: kichain-t-4          -> key(✔) bal(✔) light(✔) path(✔)
 1: testnet-croeseid-4   -> key(✔) bal(✔) light(✔) path(✔)

⠀Если у bal стоит крестик, значит на кошельке нет токенов, надо закинуть их

⠀Запустить клиенты сетей ещё раз

rly light init kichain-t-4 -f
rly light init testnet-croeseid-4 -f

⠀Открыть KiChain канал (дождаться надписи Channel created)

rly tx link $kichain_path

⠀Открыть Cro канал (дождаться надписи Channel created)

rly tx link $cro_path

⠀При любых ошибках, из-за которых не открывается канал, например

failed to get trusted header, please ensure header at the height

⠀Необходимо открыть файл (команда отображает путь)

echo $HOME/.relayer/config/config.yaml

⠀Удалить указанные строки (содержание файла будет другим)

⠀Удалить папку light

rm -rf $HOME/.relayer/light/

Заново запустить клиенты и открыть каналы

Делать до тех пор, пока не откроется канал

⠀Отправить 1tki на Cro адрес и сохранить hash транзакции

rly tx transfer kichain-t-4 testnet-croeseid-4 1000000utki `rly keys show testnet-croeseid-4 "$cro_wallet_name"` --path $kichain_path

⠀При ошибке ниже необходимо заново запустить клиенты

failed to update off-chain light client for chain

⠀Если не поможет, то удалить в config.yaml 3 строки ниже в cro-src и cro-dst, заново запустить клиенты и открыть каналы

client-id: ...
connection-id: ...
channel-id: ...

⠀Пример удачной транзакции

I[2021-09-12|23:44:57.052] ✔ [kichain-t-4]@{303033} - msg(0:transfer) hash(A7150C2D83EFF3B50CBAB6872B351213410B56C26E32128433B667865712EBD1)

⠀Отправить 1tcro на KiChain адрес и сохранить hash транзакции

rly tx transfer testnet-croeseid-4 kichain-t-4 1000000basetcro `rly keys show kichain-t-4 "$kichain_wallet_name"` --path $cro_path

⠀Повторить отправку:

  • 1tki ещё 4 раза (в сумме 5 раз)
  • 1tcro ещё 1 раз (в сумме 2 раза)

⠀Написать гайд с ходом действий в ReadMe на GitHub или в Medium

⠀Создать Pull request с выполненной работой на странице GitHub

⠀О том, как это сделать в разделе "ГИТХАБ" в гайде у mzonder

⠀Только JSON файл выглядеть должен так (список состоит из 5 строк - хешей транзакций)

{
   "moniker": "SecorD",
   "documentationURL": "https://github.com/SecorD0/KiChain/blob/main/README.md",
   "ibcTransferTxHashs": ["A7150C2D83EFF3B50CBAB6872B351213410B56C26E32128433B667865712EBD1",
"1A59A91015E4C58BDF9AE426688464CF7B2AFB25C12973466B9C67B9A0BF24F7",
"1F75CC13861388E444F6E8C232EE8436F096BEF4ED673131998CA2A0677A475E",
"2329B555368D457215A30F3457BAC12617394F015813A1CE276CBC2DD6833A76",
"E2100B6DEF7ADD322899EB266AAC1763068BEEC2177CFA06E6C263BAF14876EE"],
   "additionalComments": "Cro to KiChain transaction: 58BE6C694FE77DA8B2F65EDF09B372041C3B0208727C63D554A2CF17DCEF95F0"
}

Полезные команды

К содержанию

⠀Доступные переменные (при использовании убрать echo)

echo $kichain_moniker
echo $kichain_wallet_name

⠀Посмотреть лог ноды

kichain_log
sudo journalctl -fn 100 -u kichaind

⠀Посмотреть информацию о ноде

kichain_node_info
. <(wget -qO- https://raw.githubusercontent.com/SecorD0/KiChain/main/node_info.sh) -l RU

⠀Посмотреть статус ноды (используется в kichain_node_info)

kid status --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/kichain/kid/config/config.toml` --home $HOME/kichain/kid/ 2>&1 | jq

⠀Посмотреть информацию о ноде (используется в kichain_node_info)

kid query staking validators --limit 1500 --output json | jq -r '.validators[] | select(.description.moniker=='\"$kichain_moniker\"')'

⠀Отправить токены на другой кошелёк (подставить адрес и изменить 5 TKI на своё значение)

kid tx bank send "$kichain_wallet_name" tki1... 5000000utki --gas auto --chain-id kichain-t-4 --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/kichain/kid/config/config.toml` --home $HOME/kichain/kid/

⠀Делегировать токены на валидатора (подставить адрес и изменить 5 TKI на своё значение)

kid tx staking delegate tkivaloper1... 4995000utki --from "$kichain_wallet_name" --chain-id kichain-t-4 --gas auto --gas-prices 0.025utki --node `grep -oPm1 "(?<=^laddr = \")([^%]+)(?=\")" $HOME/kichain/kid/config/config.toml` --home $HOME/kichain/kid

⠀Перезапуск ноды

sudo systemctl restart kichaind

Полезные ссылки

К содержанию

Официальный сайт проекта | Официальная группа Telegram

Русскоязычная группа Telegram | Twitter | Discord | GitHub

Explorer | Описание тестовой сети | Описание испытания

Cosmostation Wallet | KiChain Desktop Wallet


Благодарности

К содержанию

Алексей — помощь сообществу, администрирование чата, гайд по работе с ретранслятором

mzonder — установка Cro ноды, гайд по работе с ретранслятором

Freesson — установка аватара

Команда 1package — изучение проекта, написание статьи

Выразить благодарность