Установка ноды валидатора Near Shardnet
--
Для ноды я выбрал сервер Hetzner AX-41 по цене 46.63 евро. Приступим к установке. Выполняем необходимые команды из Challenge 001.sudo apt update && sudo apt upgrade -y
Установим Node.js
и npm
:
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install build-essential nodejs
PATH="$PATH"
Проверяем версиюNode.js
и npm
:
node -v
npm -v
Установим NEAR-CLI
sudo npm install -g near-cli
Пропишем необходимые зависимости:
export NEAR_ENV=shardnet
echo 'export NEAR_ENV=shardnet' >> ~/.bashrc
echo 'export NEAR_ENV=shardnet' >> ~/.bash_profile
source $HOME/.bash_profile
Проверим, соответствует ли процессор требованиям ноды.
lscpu | grep -P '(?=.*avx )(?=.*sse4.2 )(?=.*cx16 )(?=.*popcnt )' > /dev/null \
&& echo "Supported" \
|| echo "Not supported"
Установим необходимые программы для работы ноды
sudo apt install -y git binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev cmake gcc g++ python3 docker.io protobuf-compiler libssl-dev pkg-config clang llvm cargosudo apt install python3-pip
Пропишем необходимые зависимости:
USER_BASE_BIN=$(python3 -m site --user-base)/bin
export PATH="$USER_BASE_BIN:$PATH"
Ещё несколько команд, для установки необходимой среды:
sudo apt install clang build-essential make
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Наконец-то переходим непосредственно к установке ПО near:
Качаем репозитарий nearcore:
git clone https://github.com/near/nearcore
cd nearcore
git fetch
Переходим в нужный коммит, актуальность которого можно проверить здесь: https://github.com/near/stakewars-iii/blob/main/commit.md
git checkout 1897d5144a7068e4c0d5764d8c9180563db2fe43
Скомпилируем бинарник nearcore:
cargo build -p neard --release --features shardnet
Должно всё закончится без ошибок:
Создадим папку .near и файлы config.json, genesis.json, node_key.json с помощью команды:
./target/release/neard --home ~/.near init --chain-id shardnet --download-genesis
Заменим файл config.json актуальным, с необходимыми изменениями, для этого удалим созданный файл и скачаем актуальный:
rm ~/.near/config.json
wget -O ~/.near/config.json https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/config.json
Для запуска ноды я буду использовать systemctl:
sudo tee /etc/systemd/system/neard.service > /dev/null <<EOF
[Unit]
Description=NEARd Daemon Service[Service]
Type=simple
User=root
#Group=near
WorkingDirectory=/root/.near
ExecStart=/root/nearcore/target/release/neard run
Restart=on-failure
RestartSec=30
KillSignal=SIGINT
TimeoutStopSec=45
KillMode=mixed[Install]
WantedBy=multi-user.target
EOF
Запускаем ноды и ждём, пока скачается вся необходимая база данных для работы:
sudo systemctl daemon-reload && \
sudo systemctl enable neard && \
sudo systemctl restart neard && sudo journalctl -u neard -f -o cat
После чего логинимся в созданный ранее кошелек на сайте https://wallet.shardnet.near.org/:
Копируем указанную ссылку в браузер и предоставляем доступ к кошельку:
После чего вы увидите ошибку, но это нормально:
Вводите свой кошелек:
Исполните следующую команду, Вы должны будете увидеть данные по Вашему кошельку, в т.ч. его public_key и secret_key:
cat ~/.near/validator_key.json
Создадим файл пула и скопируем данные в файл validator_key:
near generate-key valera878.factory.shardnet.nearcp ~/.near-credentials/shardnet/valera878.shardnet.near.json ~/.near/validator_key.json
Внесём необходимые изменения в файл validator_key,json:
- Заменим значение поля “account_id”, в моём случае на
valera878.factory.shardnet.near
2. Изменим название private_key
на secret_key
Содержание файла должно быть следуюшим:
{
"account_id": "valera878.factory.shardnet.near",
"public_key": "ed25519:HeaBJ3xLgvPkjHQgEctTeUqyfSU4SDEnWjdsQxd93R4S",
"secret_key": "ed25519:****"
}
Перезапустим ноду:
sudo systemctl restart neard && sudo journalctl -u neard -f -o cat
Создадим стейкинг пул для нашего валидатора:
near call factory.shardnet.near create_staking_pool '{"staking_pool_id": "valera878", "owner_id": "valera878.shardnet.near", "stake_public_key": "ed25519:HeaBJ3xLgvPkjHQgEctTeUqyfSU4SDEnWjdsQxd93R4S", "reward_fee_fraction": {"numerator": 5, "denominator": 100}, "code_hash":"DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ"}' --accountId="valera878.shardnet.near" --amount=30 --gas=300000000000000
Вы увидите, что пул успешно создан.
Вы можете проверить появился ли Ваш созданный пул здесь:
https://explorer.shardnet.near.org/nodes/validators
Внесите и застейкайте токены, которые у Вас есть на кошельке:
near call valera878.factory.shardnet.near deposit_and_stake --amount 2000 --accountId valera878.shardnet.near --gas=300000000000000
Добавим команду пинг в постоянно исполнение, с помощью скрипта. Она необходима для исполнения каждую эпоху. Создадим файл ping.sh
nano ~/ping.sh
Добавим в него следующую команду:
#!/bin/bash
GREEN_COLOR='\033[0;32m'
RED_COLOR='\033[0;31m'
WITHOU_COLOR='\033[0m'
DELAY=300 #in secs - how often restart the scriptfor (( ;; )); donear call orang3club.factory.shardnet.near ping '{}' --accountId orang3club.shardnet.near --gas=300000000000000
for (( timer=${DELAY}; timer>0; timer-- ))
do
printf "* sleep for ${RED_COLOR}%02d${WITHOU_COLOR} sec\r" $timer
sleep 1
donedone
Сохраняем файл и запускаем его исполнение, например в screen’е:
apt install screen -y
screen
./ping.sh
Вы увидите следующее:
Ваша нода работает! Проверять текущее производство блоков и чанков можно следующей командой:
near validators current | grep valera878