tx tracer/explorer на чейне Sei
Вариантов реализации этого задания как обычно несколько, ввиду сжатых сроков идем простейшим путем.
Хочу выразить благодарность команде https://www.theamsolutions.info за возможность использования их API (вероятно API он работает только по https протоколу, а времени на эту возню, как я говорил, нет).
Также хочу поблагодарить команду ping.pub за отличный продукт который они создали.
Итак простейший путь означает что для наших целей будем использовать open source проект ping.pub
🧑🦽 Поехали:
sudo apt install nginx
проверяем что nginx встал нормально, для этого открываем в браузере страницу с ip адресом хоста на котором разворачиваем эту историю, картина должна быть такая:
оставляем все как есть и идем дальше
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash - sudo apt-get install -y nodejs
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt-get update && sudo apt-get install yarn yarn --version
cd ~ git clone https://github.com/ping-pub/explorer.git cd explorer
По умолчанию ping.pub содержит кучу конфигов для майн и тестнетов космоса. К сожаления проект Sei среди них отсутствует. Не испугавшись этого и воспользовавшись имеющимися конфигами в качестве образца, создаем свой конфиг для сети Sei. Конфиг использует формат json и довольно прост для понимания.
Также хочу отметить, что майн и тестнеты разнесены по разным каталогам src/chains/mainnet и src/chains/testnet соответственно, и по логике надо создавать наш конфиг в каталоге testnet, после чего внести исправления в навигацию на главной странице, поскольку по умолчанию открывается страница с майнами, а по ссылке на тестнеты жестко вписан адрес http://testnet.ping.pub В общем это сложно и долго, а мы торопимся, поэтому делаем колхозный вариант, и закидываем конфиг в каталог с майнами, попутно удалив все лишние сети чтобы не резало глаз 👁️.
rm src/chains/mainnet/* nano src/chains/mainnet/sei.json
вставляем туда сам конфиг ( https://gist.github.com/ryssroad/bd8be8aef696651186f2ab90c54ff7ca )
{
"chain_name": "sei",
"api": ["https://sei-api.theamsolutions.info"],
"rpc": ["http://158.101.209.61:12657"],
"sdk_version": "0.42.6",
"coin_type": "505",
"min_tx_fee": "800",
"assets": [{
"base": "usei",
"symbol": "SEI",
"exponent": "6",
"logo": "https://raw.githubusercontent.com/ryssroad/testnets/main/SeiLogo.png"
}],
"addr_prefix": "sei",
"logo": "https://raw.githubusercontent.com/ryssroad/testnets/main/SeiLogo.png"
}
Сразу скажу, за достоверность таких параметров как coin_type, min_tx_fee и т.д. не ручаюсь, достаточно того что он работает.
https://ip_ноды:порт_lcd(по умолчанию 1317)
https://ip_ноды:порт_rpc(по умолчанию 26657)
Сохраняем проделанную работу и идем дальше.
yarn && yarn build
Процесс занимает порядком времени, около двух-трех минут, по окончании наблюдаем сообщение о том все нормально, и копируем сборку в корень веб сервера. Для nginx на стандартной ubuntu это каталог /var/www/html
cp -r ./dist/* /var/www/html
на всякий случай делаем рестарт nginx'a
systemctl restart nginx.service
wget https://gist.githubusercontent.com/ryssroad/3a283625a40587bbfb31b0fe9ab37c07/raw/27a6cba0c9b3c40dbfee31008e35e113c937db89/axelar.json cp axelar.json ~/explorer/src/chains/mainnet
wget https://gist.githubusercontent.com/ryssroad/6c6fc57d9e02d983e26064c89b4d48b8/raw/a7d4ee2362ebaf0f709ef36895930dcab3bab631/juno.json cp juno.json ~/explorer/src/chains/mainnet
yarn && yarn build cp -r ./dist/* /var/www/html
Конечно знатоки nginx и Vue могут закидать меня сцаными тряпками, за то как криво все проделано, однако основная цель достигнута, эксплорер работает, а это главное. Логично также будет зарегистрировать домен под это дело, и опираясь на полученный опыт добавить те сети в которых есть необходимость.
В связи с нестабильностью и непредсказуемостью паблик RPC перенаправляем эксплореры на свои ноды (вариант не рекомендуется для продакшн).
1. правим .sei/config/app.toml строка 129
- ставим enabled-unsafe-cors = true (разрешаем небезопасные кросс_ориджин_чего_то_там)
в том же конфиге строка 114
- смотрим и запоминаем порт api (должен быть 12317 или похожий) и если надо меняем 127.0.0.1 на 0.0.0.0
2. рестарт ноды
3. правим конфиг эксплорера ~/explorer/src/chains/mainnet/sei.json, в значение параметра api ставим http://node_ip:api_port (node_ip смотрим на серваке с нодой командой curl ifconfig.me, порт из конфига
4. делаем ребилд екплорера
cd ~/explorer yarn build cp -r ./dist/* /var/www/html