Sei Network - atlantic-2
Sei Network - блокчейн 1 уровня со встроенной книгой заказов, надежностью, безопасностью и высокой пропускной способностью. Все как у всех)
Проект на ранней стадии, но сразу выкатили информацию о тестнете https://3pgv.notion.site/Sei-Network-Incentivized-Testnet-Seinami-1f3de71c76c24d4f862af936f0a5fe04
- Заполняем первую форму для всех https://forms.gle/CzBeqENRZrrXXG4x7
- Подаем Gentx и заполняем вторую форму для валидаторов https://docs.google.com/forms/d/10PD9PeJVraVSruLM4mHIHJBrbBQ7v0pQU9GEHIfWYgo/
- Форма для заданий https://docs.google.com/forms/d/1qxpIL-ATe1HMX87w1P7BjMqpjXExlKyo1_btEJi00JM/
- Network Chain ID:
atlantic-2
- Denom:
usei
- Cosmos explorer: 1 2
- Офф инструкция: https://docs.seinetwork.io/nodes-and-validators/seinami-incentivized-testnet/joining-incentivized-testnet
НОВАЯ подача GENTX - 1 группа остается в старой сети
Проверяем в какой Вы группе здесь2-3 группы переходят в atlantic-sub-1 и подают GENTX по данной инструкции4-5 группы переходят в atlantic-sub-2 и подают GENTX по данной инструкции
Подача Gentx для 2-3 группы
Если на сервере ранее стояла нода, то удаляем ее. Если идет новая установка, то сначала обновляем репозитории, устанавливаем GO и продолжаем с установки бинарных файлов
sudo systemctl stop seid && \ sudo systemctl disable seid && \ rm /etc/systemd/system/seid.service && \ sudo systemctl daemon-reload && \ cd $HOME && \ rm -rf .sei .sei-chain sei-chain && \ rm -rf $(which seid)
cd $HOME git clone https://github.com/sei-protocol/sei-chain && cd sei-chain git checkout master && git pull git checkout 1.1.2beta-internal make install seid version --long | head # version 1.1.2beta-internal # commit: 23fb21f32de20869a6b1d50291ef6bbf2b2e7a0c
Инициализируем ноду, чтобы создать необходимые файлы конфигурации
seid init <name_node> --chain-id atlantic-sub-1 # редактируем config.toml seid config chain-id atlantic-sub-1
Cоздаем или восстанавливаем кошелек и сохраняем вывод
# восстановить кошелек (после команды вставить seed) seid keys add <name_wallet> --recover
Добавляем учетную запись в свой локальный файл genesis с заданной суммой и ключом, которые вы только что создали
seid add-genesis-account <name_wallet> 10000000usei
Создаем Gentx (предварительно меняем под себя к примеру в блокноте)
seid gentx <name_wallet> 10000000usei \ --chain-id atlantic-sub-1 \ --commission-rate=0.05 \ --commission-max-rate=0.2 \ --commission-max-change-rate=0.05 \ --pubkey $(seid tendermint show-validator) \ --moniker <"name_moniker">
cat ~/.sei/config/gentx/gentx-*
Делаем форк репозитория, добавляем туда наш Gentx и создаем PR
UPD Если Вас не добавили в генезис, то заполняем данную форму
Далее подготавливаемся к запуску SUB-1
wget -O $HOME/.sei/config/genesis.json "https://raw.githubusercontent.com/sei-protocol/testnet/main/atlantic-subchains/atlantic-sub-1/genesis.json" # Проверим генезис sha256sum ~/.sei/config/genesis.json # b04350f2cc2db7ee1bd6a8a125167ce0a49c528aca78fe95085cdd2413dac863
Проверяем, что состояние валидатора на начальном этапе
cd && cat .sei/data/priv_validator_state.json { "height": "0", "round": 0, "step": 0 } # если нет, то выполняем команду seid tendermint unsafe-reset-all --home $HOME/.sei
# добавляем seeds/bpeers/peers в config.toml external_address=$(wget -qO- eth0.me) sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:26656\"/" $HOME/.sei/config/config.toml peers="[email protected]:46656,[email protected]:26656,[email protected]:26656,[email protected]:26656,[email protected]:2665,[email protected]:26656" sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $HOME/.sei/config/config.toml # увеличиваем количество входящих и исходящих пиров для подключения, за исключением постоянных пиров в config.toml sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 100/g' $HOME/.sei/config/config.toml sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 100/g' $HOME/.sei/config/config.toml
# ВАЖНО дополнительная настройка от команды wget -qO optimize-configs.sh https://raw.githubusercontent.com/sei-protocol/testnet/main/sei-testnet-2/optimize-configs.sh sudo chmod +x optimize-configs.sh && ./optimize-configs.sh sudo systemctl restart seid && sudo journalctl -u seid -f -o cat
(ОПЦИОНАЛЬНО) Настраиваем прунинг одной командой вapp.toml
pruning="custom" && \ pruning_keep_recent="1000" && \ pruning_keep_every="0" && \ pruning_interval="50" && \ sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.sei/config/app.toml && \ sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.sei/config/app.toml && \ sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.sei/config/app.toml && \ sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.sei/config/app.toml
(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты вapp.toml
# По умолчанию снэпшоты выключены "snapshot-interval=0" snapshot_interval="1000" && \ sed -i.bak -e "s/^snapshot-interval *=.*/snapshot-interval = \"$snapshot_interval\"/" ~/.sei/config/app.toml
(ОПЦИОНАЛЬНО) Смена портов #для 2 ноды
# config.toml sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:36658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:36657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6061\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:36656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":36660\"%" $HOME/.sei/config/config.toml # app.toml sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9190\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9191\"%" $HOME/.sei/config/app.toml # client.toml sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/.sei/config/client.toml external_address=$(wget -qO- eth0.me) sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:36656\"/" $HOME/.sei/config/config.toml
Подробнее о смене портов здесь
sudo tee /etc/systemd/system/seid.service > /dev/null <<EOF [Unit] Description=seid After=network-online.target [Service] User=$USER ExecStart=$(which seid) start Restart=on-failure RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload && \ systemctl enable seid && \ systemctl restart seid && journalctl -u seid -f -o cat
Обновления
# проверяем статус prevotes/precommits FOLDER=.sei # узнать порт RPC echo -e "\033[0;32m$(grep -A 3 "\[rpc\]" ~/$FOLDER/config/config.toml | egrep -o ":[0-9]+")\033[0m" PORT=<ввести свой порт> # Проверка prevotes/precommits. Пригодится при обновах curl -s localhost:$PORT/consensus_state | jq '.round_state.height_vote_set[0].prevotes_bit_array'
cd $HOME/sei-chain git pull git checkout 2.0.46beta make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 2.0.46beta # commit: 78520b7438ceb8e9d1a1565a12f70c3bdb76b4bf # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
cd $HOME/sei-chain git pull git checkout 2.0.47beta make clean make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 2.0.47beta # commit: b3f7928d359e0f81f19cd6b1a45a655db7ee98b8 # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
UPD 🕊 на 2.0.48beta (Высота обновления: 9466485)
cd $HOME/sei-chain git pull git checkout 2.0.48beta make clean make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 2.0.48beta # commit: d6a3e606c7d3159e489d3499989f571cceca5fb6 # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
UPD 🕊 на 3.0.0 (Высота обновления: 10582557)
cd $HOME/sei-chain git pull git checkout 3.0.0 make clean make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 3.0.0 # commit: e805cf327d5efacd5bc8764bb1877eba20cd27d8 # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
UPD 🕊 на 3.0.1 (Высота обновления: 1135000)
cd $HOME/sei-chain git pull git checkout 3.0.1 make clean make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 3.0.1 # commit: 81b8af7980df722a63a910cc35ff96e60a94cbfe # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
UPD 🕊 на 3.0.2 (Высота обновления: 1135000)
cd $HOME/sei-chain git pull git checkout 3.0.2 make clean make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 3.0.2 # commit: 3f5dbafe91bdbd5f60a392ab44051298464d86a2 # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
UPD 🕊 на 3.0.3 (Высота обновления: 19667746)
cd $HOME/sei-chain git pull git checkout 3.0.3 make clean make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 3.0.3 # commit: 8d7de6c1cb2f62e54b23af89bfd85163f77b7c62 # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
UPD 🕊 на 3.0.4 (Высота обновления: 16226291)
cd $HOME rm -rf sei-chain git clone https://github.com/sei-protocol/sei-chain && cd sei-chain git checkout 3.0.4 make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 3.0.4 # commit: dba16898f6db5a3289de3de9b05f044d7e0ae72d # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
UPD 🕊 на 3.0.6 (Высота обновления: 21255000)
cd $HOME rm -rf sei-chain git clone https://github.com/sei-protocol/sei-chain && cd sei-chain git checkout 3.0.6 make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 3.0.6 # commit: cb5277c87599a6ff768b887cec9889b40d128e46 # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
UPD 🕊 на 3.0.7 (Высота обновления: 25613021)
cd $HOME rm -rf sei-chain git clone https://github.com/sei-protocol/sei-chain && cd sei-chain git checkout 3.0.7 make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 3.0.7 # commit: 384b94e8fa373c75da39d58e62824f2ef644bb4c # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
UPD 🕊 на 3.0.8 (Высота обновления: 26852946)
cd $HOME rm -rf sei-chain git clone https://github.com/sei-protocol/sei-chain && cd sei-chain git checkout 3.0.8 make build $HOME/sei-chain/build/seid version --long | grep -e version -e commit # 3.0.8 # commit: 605ce0378a0429f04032f095e64ddca014a7128b # ПОСЛЕ ОСТАНОВКИ СЕТИ НА НУЖНОМ БЛОКЕ!!! systemctl stop seid mv $HOME/sei-chain/build/seid $(which seid) seid version --long | grep -e version -e commit # systemctl restart seid && journalctl -u seid -f -o cat
Подготовка сервера
apt update && sudo apt upgrade -y
Устанавливаем необходимые утилиты
apt install curl build-essential git wget jq make gcc tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y
Проверяем работу жестких дисков
curl -sL yabs.sh | bash -s — -ig # Disk Test nvme smart-log /dev/nvme0 nvme smart-log /dev/nvme1
curl -sL yabs.sh | bash -s — -fg
Устанавливаем Go ОДНОЙ КОМАНДОЙ
ver="1.20.3" && \ wget "https://golang.org/dl/go$ver.linux-amd64.tar.gz" && \ sudo rm -rf /usr/local/go && \ sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz" && \ rm "go$ver.linux-amd64.tar.gz" && \ echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \ source $HOME/.bash_profile && \ go version
Установка ноды
ВАЖНО — в командах ниже все, что в <> меняем на свое значение и убираем сами <>
Важно: для правильной работы валидатора и не попадания в jail необходимо одновременно запускать как самого валидатора, так и price-feeder
git clone https://github.com/sei-protocol/sei-chain && cd sei-chain git checkout 3.0.8 make install seid version --long | head # 3.0.8 # commit: 605ce0378a0429f04032f095e64ddca014a7128b
Инициализируем ноду, чтобы создать необходимые файлы конфигурации
seid init UTSA_guide --chain-id atlantic-2
wget -O $HOME/.sei/config/genesis.json "https://raw.githubusercontent.com/sei-protocol/testnet/main/atlantic-2/genesis.json" # Проверим генезис sha256sum ~/.sei/config/genesis.json # 3c135db9177a428893353d7889149ca2ed9c075d6846be07af60354022b81318
Проверяем, что состояние валидатора на начальном этапе
cd && cat .sei/data/priv_validator_state.json { "height": "0", "round": 0, "step": 0 } # если нет, то выполняем команду seid tendermint unsafe-reset-all --home $HOME/.sei
Настраиваем конфигурацию ноды
# правим конфиг, благодаря чему мы можем больше не использовать флаг chain-id для каждой команды CLI в client.toml seid config chain-id atlantic-2 seid config keyring-backend os # настраиваем минимальную цену за газ в app.toml sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.1usei\"/;" ~/.sei/config/app.toml # добавляем seeds/bpeers/peers в config.toml external_address=$(wget -qO- eth0.me) sed -i -e "s/^external-address *=.*/external-address = \"$external_address:26656\"/" $HOME/.sei/config/config.toml peers="[email protected]:26656" sed -i.bak -e "s/^persistent-peers *=.*/persistent-peers = \"$peers\"/" $HOME/.sei/config/config.toml bpeers="" sed -i.bak -e "s/^bootstrap-peers *=.*/bootstrap-peers = \"$bpeers\"/" $HOME/.sei/config/config.toml seeds="" sed -i.bak -e "s/^seeds =.*/seeds = \"$seeds\"/" $HOME/.sei/config/config.toml # увеличиваем количество входящих и исходящих пиров для подключения, за исключением постоянных пиров в config.toml sed -i 's/max_num_inbound_peers =.*/max_num_inbound_peers = 50/g' $HOME/.sei/config/config.toml sed -i 's/max_num_outbound_peers =.*/max_num_outbound_peers = 30/g' $HOME/.sei/config/config.toml
# меняем mode на validator sed -i -e "s/^mode *=.*/mode = \"validator\"/" $HOME/.sei/config/config.toml
# обновляем unsafe-commit-timeout-override sed -i.bak -e "s|unsafe-commit-timeout-override =.*|unsafe-commit-timeout-override = \"200ms\"|" $HOME/.sei/config/config.toml
(ОПЦИОНАЛЬНО) Настраиваем прунинг одной командой вapp.toml
For the disk fill out issue, after some investigation, what we find out is that the db-sync does copied over some garbage data which could impact compaction and pruning, but this is due to the nature of file sync instead of state sync. There's no easy way to avoid that, but we do find out a way to mitigate the issue. Here's our recommendation to tackle the disk filling up issue with db-sync:
1. Use aggressive pruning, set keep-recent=2, keep-every=0, pruning-interval=2,
2. Turn on async compaction, in app.toml set compaction-interval = 60
This will not make the node have the same pruning efficiency as state sync, but it will reduce the disk increase speed by at least 50% to 75%
pruning="custom" pruning_keep_recent="100" pruning_interval="10" sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.sei/config/app.toml sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.sei/config/app.toml sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.sei/config/app.toml
Также можно самостоятельно настроить параметр min-retain-blocks
: Это значение относится к обрезке блоков Tendermint. Оно отличается от настроек обычного Pruning. Если min-retain-blocks=0
, то ничего не удаляется.
min-retain-blocks
определяет минимальное смещение высоты блока от текущего фиксируемого блока, так что все блоки, превышающие это смещение, удаляются из Tendermint
(ОПЦИОНАЛЬНО) Выкл индексацию вconfig.toml
indexer="null" sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.sei/config/config.toml
(ОПЦИОНАЛЬНО) Вкл/выкл снэпшоты вapp.toml
# По умолчанию снэпшоты выключены "snapshot-interval=0" snapshot_interval="1000" sed -i.bak -e "s/^snapshot-interval *=.*/snapshot-interval = \"$snapshot_interval\"/" ~/.sei/config/app.toml
(ОПЦИОНАЛЬНО) Смена портов #для 2 ноды
# config.toml sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:36658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:36657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:6061\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:36656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":36660\"%" $HOME/.sei/config/config.toml # app.toml sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:9190\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:9191\"%" $HOME/.sei/config/app.toml # client.toml sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:36657\"%" $HOME/.sei/config/client.toml external_address=$(wget -qO- eth0.me) sed -i.bak -e "s/^external_address *=.*/external_address = \"$external_address:36656\"/" $HOME/.sei/config/config.toml
Подробнее о смене портов здесь
Здесь контакты wasm автоматически загружаются со statesync. Ближе к концу синхронизации
systemctl stop seid cp $HOME/.sei/data/priv_validator_state.json $HOME/.sei/priv_validator_state.json.backup rm -rf $HOME/.sei/data rm -rf $HOME/.sei/wasm mkdir $HOME/.sei/data/ mv $HOME/.sei/priv_validator_state.json.backup $HOME/.sei/data/priv_validator_state.json
bpeers=$(curl -sS https://raw.githubusercontent.com/AlexToTheMoon/AM-Solutions/main/files/atlantic-2-bpeers.txt) sed -i -e "s|^bootstrap-peers *=.*|bootstrap-peers = \"$bpeers\"|" $HOME/.sei/config/config.toml sed -i.bak -e "s|^persistent-peers *=.*|persistent-peers \ = \"[email protected]:26656\"|" ~/.sei/config/config.toml
SNAP_RPC="https://rpc.atlantic-2.seinetwork.io:443"; \ LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .block.header.height); \ BLOCK_HEIGHT=$((LATEST_HEIGHT - 40000)); \ TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .block_id.hash); \ echo $LATEST_HEIGHT $BLOCK_HEIGHT $TRUST_HASH sed -i.bak -E "s|^(enable[[:space:]]+=[[:space:]]+).*$|\1true| ; \ s|^(rpc-servers[[:space:]]+=[[:space:]]+).*$|\1\"$SNAP_RPC,$SNAP_RPC\"| ; \ s|^(trust-height[[:space:]]+=[[:space:]]+).*$|\1$BLOCK_HEIGHT| ; \ s|^(trust-hash[[:space:]]+=[[:space:]]+).*$|\1\"$TRUST_HASH\"|" $HOME/.sei/config/config.toml; \ sed -i.bak -e "s|^use-p2p *=.*|use-p2p = true|" $HOME/.sei/config/config.toml/.sei/config/config.toml
systemctl restart seid && journalctl -u seid -f -o cat
tee /etc/systemd/system/seid.service > /dev/null <<EOF [Unit] Description=seid After=network-online.target [Service] User=$USER ExecStart=$(which seid) start Restart=on-failure RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload systemctl enable seid systemctl restart seid && journalctl -u seid -f -o cat
Если после старта нода долго не может подцепиться к пирам, то ищем новые пиры или просим addrbook.json в дискорд
# стопаем ноду, удаляем адресную книгу и сбрасываем данные systemctl stop seid rm $HOME/.sei/config/addrbook.json # если нужные каталоги не удаляются, то добавляем флаг --home /root/.sei seid tendermint unsafe-reset-all --home $HOME/.sei # перезагружаем ноду systemctl restart seid && journalctl -u seid -f -o cat
Cоздаем или восстанавливаем кошелек и сохраняем вывод
# создать кошелек seid keys add <name_wallet> # восстановить кошелек (после команды вставить seed) seid keys add <name_wallet> --algo sr25519 --recover
seid tx staking create-validator \ --chain-id atlantic-2 \ --commission-rate 0.05 \ --commission-max-rate 0.2 \ --commission-max-change-rate 0.1 \ --min-self-delegation 1 \ --amount 1000000usei \ --pubkey $(seid tendermint show-validator) \ --moniker "<name_moniker>" \ --from <name_wallet> \ --fees 100000usei
Не забываем сохранить priv_validator_key.json !!!
Подробнее о создании/редактировании валидатора можно почитать здесь
Полезные команды
Для добавления лого в mintscan:
- форк https://github.com/cosmostation/cosmostation_token_resource
- в папке Moniker находим название проекта
- через add file/upload file добавляем свою аватарку. название файла обязательно должно быть валопер.png . и только png
- PR
# проверить блоки seid status 2>&1 | jq ."SyncInfo"."latest_block_height" # проверить логи sudo journalctl -u seid -f -o cat # проверить статус curl localhost:26657/status # проверить баланс seid q bank balances <address> # проверить валидатора seid query staking validator <valoper_address> seid query staking validators --limit 1000000 -o json | jq '.validators[] | select(.description.moniker=="<name_moniker>")' | jq # проверка информации по TX_HASH seid query tx <TX_HASH> # параметры сети seid q staking params seid q slashing params seid q upgrade plan # проверить сколько блоков пропущено валидатором и с какого блока актив seid q slashing signing-info $(seid tendermint show-validator) # узнать транзакцию создания валидатора (заменить свой valoper_address) seid query txs --events='create_validator.validator=<your_valoper_address>' -o=json | jq .txs[0].txhash -r
# собрать комиссионные + реварды seid tx distribution withdraw-rewards <valoper_address> --from <name_wallet> --fees 100000usei --commission -y # заделегировать себе в стейк еще (так отправляется 1 монетa) seid tx staking delegate <valoper_address> 1000000usei --from <name_wallet> --fees 100000usei -y # ределегирование на другого валидатора seid tx staking redelegate <src-validator-addr> <dst-validator-addr> 1000000usei --from <name_wallet> --fees 100000usei -y # unbond seid tx staking unbond <addr_valoper> 1000000usei --from <name_wallet> --fees 100000usei -y # отправить монеты на другой адрес seid tx bank send <name_wallet> <address> 1000000usei --fees 100000usei -y # выбраться из тюрьмы seid tx slashing unjail --from <name_wallet> --fees 100000usei -y
# вывести список кошельков seid keys list # показать ключ аккаунта seid keys show <name_wallet> --bech acc # показать ключ валидатора seid keys show <name_wallet> --bech val # показать ключ консенсуса seid keys show <name_wallet> --bech cons # запрос учетной записи seid q auth account $(quicksilverd keys show <name_wallet> -a) -o text # удалить кошелек seid keys delete <name_wallet>
systemctl stop seid && \ systemctl disable seid && \ rm /etc/systemd/system/seid.service && \ systemctl daemon-reload && \ cd $HOME && \ rm -rf .sei sei-chain && \ rm -rf $(which seid)
# список proposals seid q gov proposals # посмотреть результат голосования seid q gov proposals --voter <ADDRESS> # проголосовать за предложение seid tx gov vote 1 yes --from <name_wallet> --fees 100000usei # внести депозит в предложение seid tx gov deposit 1 1000000usei --from <name_wallet> --fees 100000usei
seid q staking validators -o json --limit=1000 \ | jq '.validators[] | select(.status=="BOND_STATUS_BONDED")' \ | jq -r '.tokens + " - " + .description.moniker' \ | sort -gr | nl
seid q staking validators -o json --limit=1000 \ | jq '.validators[] | select(.status=="BOND_STATUS_UNBONDED")' \ | jq -r '.tokens + " - " + .description.moniker' \ | sort -gr | nl
# проверка количества пиров curl -s http://localhost:26657/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr | split(":")[2])"' | wc -l # cписок моникеров подключенных пиров curl -s http://localhost:26657/net_info | jq '.result.peers[].node_info.moniker'
Проверка vote power онлайн. Пригодится при обновах
curl -s localhost:26657/consensus_state | jq '.result.round_state.height_vote_set[0].prevotes_bit_array'
Поиск всех исходящих транзакций по адресу
seid q txs --events transfer.sender=<ADDRESS> 2>&1 | jq | grep txhash
Поиск всех входящих транзакций по адресу
seid q txs --events transfer.recipient=<ADDRESS> 2>&1 | jq | grep txhash
Получение ID@IP:PORT - cohod исправить на нужное
echo "$(seid tendermint show-node-id)@$(curl ifconfig.me):26656"
Настройка Price Feeder (✔️Oracle)
Docs - https://github.com/sei-protocol/sei-chain/blob/master/oracle/price-feeder/README.md
- используется отдельный кошелек (не кошелек валидатора)
keyring-backend
ставим os- отдельный кошелек привязывается к валидатору и в сервисный файл добавляется
Environment="PRICE_FEEDER_PASS={KEYRING_PASSWORD}"
- на отдельном кошельке должны быть монетки для комиссий
- валидатор должен находиться в активном сете
cd $HOME/sei-chain make install-price-feeder #Installed at &HOME/go/bin/price-feeder price-feeder version #version: "" #commit: "" #sdk: v0.45.4 #go: go1.20.3 linux/amd64
# создаем отдельный кошелек seid keys add SEI_FEEDER_ADDR --algo sr25519 --keyring-backend os # пополняем его баланс seid tx bank send <name_wallet> <SEI_FEEDER_ADDR> 1000000usei --fees 100000usei -y # проверяем баланс seid q bank balances <address> # делегируем полномочия нашему созданному кошельку seid tx oracle set-feeder <SEI_FEEDER_ADDR> --from <name_wallet> --fees 100000usei -y
cp $HOME/sei-chain/oracle/price-feeder/config.example.toml $HOME/.sei/price-feeder-config.toml
sed -i '/^dir *=.*/a pass = ""' $HOME/.sei/price-feeder-config.toml
PASS=<your_password> SEI_FEEDER_ADDR=<sei1jkg...> SEI_VALOPER=<seivaloper13y7...> SEI_CHAIN=<atlantic-2>
Настраиваем price-feeder.toml (при необходимости меняем порты RPC и gRPC)
sed -i "s/^address *=.*/address= \"$SEI_FEEDER_ADDR\"/;\ s/^chain_id *=.*/chain_id= \"$SEI_CHAIN\"/;\ s/^validator *=.*/validator = \"$SEI_VALOPER\"/;\ s/^backend *=.*/backend = \"os\"/;\ s|^dir *=.*|dir = \"$HOME/.sei\"|;\ s|^pass *=.*|pass = \"$PASS\"|;\ s|^grpc_endpoint *=.*|grpc_endpoint = \"localhost:9090\"|;\ s|^tmrpc_endpoint *=.*|tmrpc_endpoint = \"http://localhost:26657\"|;" $HOME/.sei/price-feeder-config.toml
В итоге наш конфиг должен выглядеть примерно так:
gas_adjustment = 1.5 gas_prices = "0.00125usei" enable_server = true enable_voter = true [server] listen_addr = "0.0.0.0:7171" read_timeout = "20s" verbose_cors = true write_timeout = "20s" [[deviation_thresholds]] base = "ETH" threshold = "2" [[currency_pairs]] base = "ETH" chain_denom = "ueth" providers = [ "huobi", "crypto", "coinbase", "kraken", "okx" ] quote = "USDT" [[deviation_thresholds]] base = "BTC" threshold = "2" [[currency_pairs]] base = "BTC" chain_denom = "ubtc" providers = [ "huobi", "kraken", "crypto", "coinbase", "okx", ] quote = "USDT" [[deviation_thresholds]] base = "SOL" threshold = "2" [[currency_pairs]] base = "SOL" chain_denom = "usei" providers = [ "huobi", "kraken", "coinbase", ] quote = "USDT" [[deviation_thresholds]] base = "ATOM" threshold = "2" [[currency_pairs]] base = "ATOM" chain_denom = "uatom" providers = [ "huobi", "kraken", "coinbase", ] quote = "USDT" [[deviation_thresholds]] base = "OSMO" threshold = "2" [[currency_pairs]] base = "OSMO" chain_denom = "uosmo" providers = [ "huobi", "okx", "gate", ] quote = "USDT" [[deviation_thresholds]] base = "DAI" threshold = "2" [[currency_pairs]] base = "DAI" chain_denom = "factory/sei1jdppe6fnj2q7hjsepty5crxtrryzhuqsjrj95y/uust2" providers = [ "kraken", "crypto", "okx", ] quote = "USDT" [[deviation_thresholds]] base = "USDT" threshold = "2" [[currency_pairs]] base = "USDT" chain_denom = "uusdt" providers = [ "kraken", "crypto", "coinbase", ] quote = "USD" [account] address= "sei1pew773t0y6ge7fkd8m3wltef6rysvswpyv4y5a" chain_id= "atlantic-2" validator = "seivaloper166nhgu27n49kwndp30qfd4e7vlw2h2nqh80uz2" prefix = "sei" [keyring] backend = "os" dir = "/root/.sei" pass = "you_password" [rpc] grpc_endpoint = "localhost:9090" rpc_timeout = "100ms" tmrpc_endpoint = "http://localhost:26657" [telemetry] enable_hostname = true enable_hostname_label = true enable_service_label = true enabled = true global_labels = [["chain_id", "sei-chain"]] service_name = "price-feeder" prometheus_retention = 60 [[provider_endpoints]] name = "binance" rest = "https://api1.binance.com" websocket = "stream.binance.com:9443" # [[healthchecks]] # url = "https://hc-ping.com/HEALTHCHECK-UUID" # timeout = "5s"
tee /etc/systemd/system/price-feeder.service > /dev/null <<EOF [Unit] Description=Sei_atlantic-2_price-feeder After=network.target [Service] User=$USER Type=simple Environment="PRICE_FEEDER_PASS=$PASS" ExecStart=$HOME/go/bin/price-feeder $HOME/.sei/price-feeder-config.toml Restart=on-failure RestartSec=10 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload systemctl enable price-feeder systemctl restart price-feeder && journalctl -u price-feeder -f -o cat
Также можно проверить транзакции через explorer
# Запрос учетной записи feeder seid q oracle feeder <seivaloper166n...> # проверить параметры Oracle seid q oracle params # проверить miss_count curl -s https://api-3.sei.nodes.guru/sei-protocol/sei-chain/oracle/validators/<seivaloper166n...>/vote_penalty_counter
systemctl stop price-feeder && \ systemctl disable price-feeder && \ rm /etc/systemd/system/price-feeder.service && \ systemctl daemon-reload && \ cd $HOME/.sei/ && \ rm price-feeder-config.toml