Validator Setup Ru

Нода Agoric

Agoric - блокчейн первого уровня построенный на базе системы Cosmos. Особенностью проекта является возможность создания смарт-контрактов на языке JavaScript, что позволяет легко интегрировать разработчиков с Web2 в Web3 и быстро расширять экосистему. Нативный токен Agoric - BLD.

Минимальные требования:

  • 16 GB RAM

  • 4 cores/ vCPU

  • 100 GB SSD

  • Ubuntu 20.04

Подготовка сервера:

Перед установкой ноды на сервер необходимо установить Node.js, Yarn, Go и обновить систему.

Добавляем репозиторий пакетов Node.js

curl -Ls https://deb.nodesource.com/setup_16.x | sudo bash

Загружаем репозиторий пакетов Yarn

curl -Ls 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 -q update
sudo apt -qy install curl git jq lz4 build-essential nodejs=16.* yarn
sudo apt -qy upgrade

Устанавливаем Go

sudo rm -rf /usr/local/go
curl -Ls https://go.dev/dl/go1.19.9.linux-amd64.tar.gz | sudo tar -xzf - -C /usr/local
eval $(echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/golang.sh)
eval $(echo 'export PATH=$PATH:$HOME/go/bin' | tee -a $HOME/.profile)

Установка ноды:

Установка ноды происходить при помощи сделанного ранее снимка. При желании или необходимости порты, сиды, минимальную цену газа и сами снимки можно заменить на собственные или общедоступные.

Клонируем репозиторий проекта

cd $HOME
rm -rf pismoC
git clone https://github.com/Agoric/agoric-sdk.git pismoC
cd pismoC
git checkout pismoC

Устанавливаем Agoric Javascript пакеты

yarn install
yarn build

Интегрируем поддержку Agoric Cosmos SDK

(cd packages/cosmic-swingset && make)

Подготавливаем файлы для Cosmovisor

mkdir -p $HOME/.agoric/cosmovisor/genesis/bin
ln -s $HOME/pismoC/packages/cosmic-swingset/bin/ag-chain-cosmos $HOME/.agoric/cosmovisor/genesis/bin/ag-chain-cosmos
ln -s $HOME/pismoC/packages/cosmic-swingset/bin/ag-nchainz $HOME/.agoric/cosmovisor/genesis/bin/ag-nchainz
cp golang/cosmos/build/agd $HOME/.agoric/cosmovisor/genesis/bin/
cp golang/cosmos/build/ag-cosmos-helper $HOME/.agoric/cosmovisor/genesis/bin/

Создаем ссылки

sudo ln -s $HOME/.agoric/cosmovisor/genesis $HOME/.agoric/cosmovisor/current -f
sudo ln -s $HOME/.agoric/cosmovisor/current/bin/agd /usr/local/bin/agd -f

Загружаем и устанавливаем Cosmovisor

go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@v1.4.0

Создаем сервис для запуска

sudo tee /etc/systemd/system/agd.service > /dev/null << EOF
[Unit]
Description=agoric node service
After=network-online.target

[Service]
User=$USER
ExecStart=$(which cosmovisor) run start
Restart=on-failure
RestartSec=10
LimitNOFILE=65535
Environment="DAEMON_HOME=$HOME/.agoric"
Environment="DAEMON_NAME=agd"
Environment="UNSAFE_SKIP_BACKUP=true"
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:$HOME/.agoric/cosmovisor/current/bin"

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable agd

Настраиваем конфигурации ноды

agd config chain-id agoric-3
agd config keyring-backend file
agd config node tcp://localhost:12757

Инициализируем ноду

agd init NODE_NAME --chain-id agoric-3

Вместо NODE_NAME вписываем название ноды

Загружаем файлы genesis и addrbook

curl -Ls https://s3.eu-central-1.amazonaws.com/w3coins.io/genesis/agoric-mainnet/genesis.json > $HOME/.agoric/config/genesis.json
curl -Ls https://s3.eu-central-1.amazonaws.com/w3coins.io/addrbook/agoric-mainnet/addrbook.json > $HOME/.agoric/config/addrbook.json

Добавляем сиды

sed -i -e "s|^seeds *=.*|seeds = \"0f04c4610b7511a64b8644944b907416db568590@104.198.182.148:26656\"|" $HOME/.agoric/config/config.toml

Устанавливаем минимальную цену газа

sed -i -e "s|^minimum-gas-prices *=.*|minimum-gas-prices = \"0.03ubld\"|" $HOME/.agoric/config/app.toml

Добавляем альтернативные порты

sed -i -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:12758\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:12757\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:12760\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:12756\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":12766\"%" $HOME/.agoric/config/config.toml
sed -i -e "s%^address = \"tcp://0.0.0.0:1317\"%address = \"tcp://0.0.0.0:12717\"%; s%^address = \":8080\"%address = \":12780\"%; s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:12790\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:12791\"%; s%:8545%:12745%; s%:8546%:12746%; s%:6065%:12765%" $HOME/.agoric/config/app.toml

Загружаем снимок сети

curl -L https://s3.eu-central-1.amazonaws.com/w3coins.io/snapshots/agoric-mainnet/agoric_snapsot_latest.tar.lz4 | tar -Ilz4 -xf - -C $HOME/.agoric
[[ -f $HOME/.agoric/data/upgrade-info.json ]] && cp $HOME/.agoric/data/upgrade-info.json $HOME/.agoric/cosmovisor/genesis/upgrade-info.json

Запускаем ноду

sudo systemctl start agd

Проверка и синхронизация

После установки ноде необходимо синхронизироваться.

Проверяем статус синхронизации

agd status | jq .SyncInfo

Если все установлено правильно, ответ будет подобным:

{
  "latest_block_hash": "3A0F2AD88C987F6EEDB322BA2CC762A5BC69CF91FB02359DA535D49FFF35CB74",
  "latest_app_hash": "BE512418BDC91AA6BC887F5F33ED2226139D96B5DDB963D2ED4C61BAB4D49F91",
  "latest_block_height": "10123111",
  "latest_block_time": "2023-05-31T13:18:38.478539726Z",
  "earliest_block_hash": "3AB9448D36EF7B2DF224E4721A5BB0EE4182F5CE00B87E78B04E466CF7586568",
  "earliest_app_hash": "64018478AE11A0D2C4262874EE8B65F975DC7CE9720434074AFC25422EACE638",
  "earliest_block_height": "10110283",
  "earliest_block_time": "2023-05-30T16:13:50.226497159Z",
  "catching_up": true
}

Конец синхронизации

Нода синхронизирована, когда "latest_block_height" догонит последний блок в сети. В тот момент "catching_up" сменится с true на false.

Для монтиринга можно использовать скрипт:

while sleep 5; do
  sync_info=`agd status | jq .SyncInfo`
  echo "$sync_info"
  if test `echo "$sync_info" | jq -r .catching_up` == false; then
    echo "Caught up"
    break
  fi
done

По завершению синхронизации в терминале будет написано "Caught up"

Проверка логов (при возникновении ошибок)

journalctl -u agd -f

Добавление ключа

Для дальнейшей работы необходимо добавить ключи/кошельки.

Создание нового ключа

agd keys add KEY_NAME

Меняем KEY_NAME на название вашего ключа. Добавляем пароль и сохраняем мнемоническую фразу.

Добавление имеющегося ключа

agd keys add KEY_NAME --recover

Проверка ключей

agd keys list

Делегация валидатору

agd tx staking delegate OPERATOR_ADRESS AMOUNT --from KEY_NAME --chain-id agoric-3 --gas-adjustment 1.4 --gas auto --gas-prices 0.03ubld -y

Изменяем следующие параметры:

- OPERATOR_ADRESS - вписываем адрес валидатора, например адрес w3coins:

agoricvaloper1tfmed8ueaxrmdsvkecrae6renyxjct8xwdkes5

- AMOUNT - вписываем количество делегируемых токенов в значении ubld (1BLD = 1000000UBLD), например:

1000000ubld

- KEY_NAME - вписываем раннее указанное имя ключа

Last updated