Установка ноды Empower
Требования: официальных требований нет. Кто-то советует взять сервер 16G RAM, 4vCPUs, 500GB. Я взял для начала сервер 2CPU, 4RAM, 40GB
Арендовать сервер можно на Hetzner
Подготовка сервера
∎ Обновляем и устанавливаем необходимые пакеты:
sudo apt update && sudo apt upgrade -y && \ sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu gcc git jq chrony liblz4-tool -y
cd $HOME && version="1.19" && \ wget "https://golang.org/dl/go$version.linux-amd64.tar.gz" && \ sudo rm -rf /usr/local/go && \ sudo tar -C /usr/local -xzf "go$version.linux-amd64.tar.gz" && \ rm "go$version.linux-amd64.tar.gz" && \ echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile && \ source $HOME/.bash_profile
∎ Проверяем версию установленного GO (в выводе должно быть go1.19):
go version
Установка ноды
∎ Устанавливаем бинарные файлы:
cd $HOME && git clone https://github.com/empowerchain/empowerchain && \ cd empowerchain/chain && \ make install && \ empowerd version --long | head
∎ Вставляем свои данные вместо ИМЯ_ВАЛИДАТОРА и ИМЯ_КОШЕЛЬКА в кавычках (в поле CHAIN ничего не меняем):
MONIKER="ИМЯ_ВАЛИДАТОРА" WALLET_NAME="ИМЯ_КОШЕЛЬКА" CHAIN="altruistic-1"
∎ Добавляем переменные в баш профиль (ничего менять не надо):
echo 'export MONIKER='${MONIKER} >> $HOME/.bash_profile
echo 'export WALLET_NAME='${WALLET_NAME} >> $HOME/.bash_profile
echo 'export CHAIN='${CHAIN} >> $HOME/.bash_profile
source $HOME/.bash_profileempowerd init $MONIKER --chain-id $CHAIN
wget -O $HOME/.empowerchain/config/genesis.json "https://raw.githubusercontent.com/empowerchain/empowerchain/main/testnets/altruistic-1/genesis.json"
∎ Проверяем генезис (в выводе должно быть fcae4a283488be14181fdc55f46705d9e11a32f8e3e8e25da5374914915d5ca8):
sha256sum $HOME/.empowerchain/config/genesis.json
∎ Сбрасываем состояние валадатора:
empowerd tendermint unsafe-reset-all --home $HOME/.empowerchain
Настройка ноды
∎ Устанавливаем минимальную цену за газ:
sed -i.bak -e "s/^minimum-gas-prices *=.*/minimum-gas-prices = \"0.025umpwr\"/" $HOME/.empowerchain/config/app.toml
seeds="" peers="9de92b545638f6baaa7d6d5109a1f7148f093db3@65.108.77.106:26656,4fd5e497563b2e09cfe6f857fb35bdae76c12582@65.108.206.56:26656,fe32c17373fbaa36d9fd86bc1146bfa125bb4f58@5.9.147.185:26656,220fb60b083bc4d443ce2a7a5363f4813dd4aef4@116.202.236.115:26656,225ad85c594d03942a026b90f4dab43f90230ea0@88.99.3.158:26656,2a2932e780a681ddf980594f7eacf5a33081edaf@192.168.147.43:26656,333de3fc2eba7eead24e0c5f53d665662b2ba001@10.132.0.11:26656,4a38efbae54fd1357329bd583186a68ccd6d85f9@94.130.212.252:26656,52450b21f346a4cf76334374c9d8012b2867b842@167.172.246.201:26656,56d05d4ae0e1440ad7c68e52cc841c424d59badd@192.168.1.46:26656,6a675d4f66bfe049321c3861bcfd19bd09fefbde@195.3.223.204:26656,1069820cdd9f5332503166b60dc686703b2dccc5@138.201.141.76:26656,277ff448eec6ec7fa665f68bdb1c9cb1a52ff597@159.69.110.238:26656,3335c9458105cf65546db0fb51b66f751eeb4906@5.189.129.30:26656,bfb56f4cb8361c49a2ac107251f92c0ea5a1c251@192.168.1.177:26656,edc9aa0bbf1fcd7433fcc3650e3f50ab0becc0b5@65.21.170.3:26656,d582bcd8a8f0a20c551098571727726bc75bae74@213.239.217.52:26656,eb182533a12d75fbae1ec32ef1f8fc6b6dd06601@65.109.28.219:26656,b22f0708c6f393bf79acc0a6ca23643fe7d58391@65.21.91.50:26656,e8f6d75ab37bf4f08c018f306416df1e138fd21c@95.217.135.41:26656,ed83872f2781b2bdb282fc2fd790527bcb6ffe9f@192.168.3.17:26656" sed -i -e 's|^seeds *=.*|seeds = "'$seeds'"|; s|^persistent_peers *=.*|persistent_peers = "'$peers'"|' $HOME/.empowerchain/config/config.toml
pruning="custom" && \ pruning_keep_recent="100" && \ pruning_keep_every="0" && \ pruning_interval="50" && \ sed -i -e "s/^pruning *=.*/pruning = \"$pruning\"/" $HOME/.empowerchain/config/app.toml && \ sed -i -e "s/^pruning-keep-recent *=.*/pruning-keep-recent = \"$pruning_keep_recent\"/" $HOME/.empowerchain/config/app.toml && \ sed -i -e "s/^pruning-keep-every *=.*/pruning-keep-every = \"$pruning_keep_every\"/" $HOME/.empowerchain/config/app.toml && \ sed -i -e "s/^pruning-interval *=.*/pruning-interval = \"$pruning_interval\"/" $HOME/.empowerchain/config/app.toml
indexer="null" && \ sed -i -e "s/^indexer *=.*/indexer = \"$indexer\"/" $HOME/.empowerchain/config/config.toml
sudo tee /etc/systemd/system/empowerd.service > /dev/null <<EOF [Unit] Description=EmpowerChain Node After=network.target [Service] User=$USER Type=simple ExecStart=$(which empowerd) start Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reload && \ sudo systemctl enable empowerd && \ sudo systemctl restart empowerd
∎ Смотрим логи (закрыть логи - CTRL+C):
sudo journalctl -u empowerd -f -o cat
Ждём, когда нода начнёт синхронизироваться и начнёт увеличиваться Height в логах. Текущую высоту можно посмотреть ТУТ.
∎ Проверяем статус синхронизации (если в строке catching_up написано false, то нода синхронизирована, можно приступать к разделу СОЗДАНИЕ ВАЛИДАТОРА):
curl localhost:26657/status
1) Если нода долго не синхронизируется, то можно сделать State Sync:
cd $HOME peers="15b370f9fa0663c227c9a91827752546be587c53@142.132.253.112:23656" config=$HOME/.empowerchain/config/config.toml SNAP_RPC=142.132.253.112:23657 sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$peers\"/" $config sed -i.bak -e "s/^snapshot-interval *=.*/snapshot-interval = \"2000\"/" $HOME/.empowerchain/config/app.toml LATEST_HEIGHT=$(curl -s $SNAP_RPC/block | jq -r .result.block.header.height); \ BLOCK_HEIGHT=$((LATEST_HEIGHT - 2000)); \ TRUST_HASH=$(curl -s "$SNAP_RPC/block?height=$BLOCK_HEIGHT" | jq -r .result.block_id.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\"| ; \ s|^(seeds[[:space:]]+=[[:space:]]+).*$|\1\"\"|" $config empowerd tendermint unsafe-reset-all --keep-addr-book sudo systemctl restart empowerd
2) Либо можно добавить addr book:
sudo systemctl stop empowerd empowerd tendermint unsafe-reset-all
wget -qO $HOME/.empowerchain/config/addrbook.json "https://snapshots2-testnet.nodejumper.io/empower-testnet/addrbook.json"
sudo systemctl restart empowerd
sudo journalctl -u empowerd -f -o cat
curl localhost:26657/status
Создание валидатора
∎ Создаём кошелёк, если у вас его ещё нет (в команде ничего менять не надо).
empowerd keys add $WALLET_NAME
∎ Если кошелёк уже был, то восстанавливаем командой (после команды попросят вставить сид фразу):
empowerd keys add $WALLET_NAME --recover
В выводе будет адрес вашего кошелька empower1... Сохраните его, он нам понадобится для запроса монет в дискорде.
∎ Добавляем переменную с адресом кошелька (ничего не меняем):
WALLET_ADDRESS=$(empowerd keys show $WALLET_NAME -a)
∎ Добавляем кошелёк в баш профиль:
echo 'export WALLET_ADDRESS='${WALLET_ADDRESS} >> $HOME/.bash_profile
source $HOME/.bash_profile∎ Запрашиваем токены с крана. Переходим в Discord, верифицируемся и переходим во ветку faucet. Вставляем команду и меняем АДРЕС_КОШЕЛЬКА на адрес своего кошелька empower1...:
$request АДРЕС_КОШЕЛЬКА altruistic-1
∎ Проверяем баланс. Переходим обратно в командную строку и вводим команду:
empowerd query bank balances $WALLET_ADDRESS
∎ Создаём валидатора, если монеты поступили:
empowerd tx staking create-validator \ --chain-id $CHAIN \ --commission-rate 0.05 \ --commission-max-rate 0.2 \ --commission-max-change-rate 0.1 \ --min-self-delegation "1000000" \ --amount 1000000umpwr \ --pubkey $(empowerd tendermint show-validator) \ --moniker $MONIKER \ --from $WALLET_NAME \ --fees 5000umpwr
∎ Задаём переменную с адресом валидатора:
VALOPER=$(empowerd keys show $WALLET_ADDRESS --bech val -a)
echo 'export VALOPER='${VALOPER} >> $HOME/.bash_profile
source $HOME/.bash_profile∎ Ищем себя в эксплорере во вкладке inactive.
Полезные команды
sudo journalctl -u empowerd -f -o cat
∎ Выход из тюрьмы, если нода в неё попала:
empowerd tx slashing unjail --from $WALLET_NAME --chain-id $CHAIN
∎ Заделегировать средства с кошелька своему валидатору (сумму вводите свою):
empowerd tx staking delegate $VALOPER 1000000umpwr --from $WALLET_NAME --chain-id $CHAIN
Если после команды делегирования возникает ошибка "account sequence mismatch, expected 1, got 0: incorrect account sequence", то добавьте к команде в конце -s 2
systemctl stop empowerd && \ systemctl disable empowerd && \ rm /etc/systemd/system/empowerd.service && \ systemctl daemon-reload && \ cd $HOME && \ rm -rf .empowerchain empowerchain && \ rm -rf $(which empowerd)
Спасибо за внимание!
Ссылка на TG канал: https://t.me/cryptonik_space