Near Stakewars node Install Guide
- Кошелек: https://wallet.shardnet.near.org/
- Мониторинг: https://explorer.shardnet.near.org/
- Контабо сервер: https://contabo.com/
- Официальный гайд https://github.com/near/stakewars-iii/blob/main/FAQ.md
Минимальные требования: CPU: 4-Core, RAM: 8GB DDR4, Storage: 500GB SSD
Я установил на сервере Contabo L. Цена составляет 16 евро в месяц.
Подготовка сервера:
Обновляем пакеты
sudo apt update && sudo apt upgrade -y
Устанавливаем необходимые утилиты
Устанавливаем инструменты разработчика, Node.js, npm и другие необходимые пакеты
sudo apt install -y git binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev cmake gcc g++ python docker.io protobuf-compiler libssl-dev pkg-config llvm cargo sudo apt install clang build-essential make sudo apt install curl jq curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install nodejs PATH="$PATH"
node -v #v18.x.x
npm -v #8.x.x
sudo npm install -g near-cli
Настраиваем окружение. Текущий тестнет проходит в сети shardnet. Вводим название сети в качестве переменной
export NEAR_ENV=shardnet echo 'export NEAR_ENV=shardnet' >> ~/.bashrc
Устанавливаем и настраиваем Python pip
sudo apt install python3-pip USER_BASE_BIN=$(python3 -m site --user-base)/bin export PATH="$USER_BASE_BIN:$PATH"
# устанавливаем необходимые пакеты sudo apt install curl build-essential gcc make -y # загружаем установочный скрипт Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
жмем 1) продолжить установку (по умолчанию).
# активируем среду Rust для текущей оболочки source ~/.profile source ~/.cargo/env
Создание кошелька
Заходим по ссылке https://wallet.shardnet.near.org/ и создаем кошелек NEAR для тестовой сети. Сохраняем мнемонику
Установка ноды
git clone https://github.com/near/nearcore cd nearcore git fetch
Сверяем коммит. Актуальный можете проверить по ссылке https://github.com/near/stakewars-iii/blob/main/commit.md
git checkout c1b047b8187accbf6bd16539feb7bb60185bdc38
cargo build -p neard --release --features shardnet
./target/release/neard --home ~/.near init --chain-id shardnet --download-genesis
rm ~/.near/config.json wget -O ~/.near/config.json https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/config.json
printf "[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" > /etc/systemd/system/neard.service
sudo systemctl daemon-reload sudo systemctl enable neard sudo systemctl restart neard
Смотрим логи и ждем пока нода синхронизируется
journalctl -n 100 -f -u neard
curl -s http://127.0.0.1:3030/status | jq .sync_info
Сверяем высоту блока Синхронизация должна быть False
Активация ноды и создание валидатора
near login
Копируем ссылку и открываем в браузере, в котором устанавливали кошелек в первом задании
Вводим Account_ID и даем все необходимые разрешения, после того как страница выдаст ошибку соединения, ваш кошелек будет пополнен.
Переходим в терминал и вводим имя кошелька (Account_ID).
После введения кошелька, терминал может зависнуть и не выдать надпись successfully. В данном случае алгоритм действий следующий:
near generate-key <ACCOUNT_ID> #ACCOUNT_ID должен быть в формате xxx.shardnet.near #Например: trdm.shardnet.near
Сгенерируется JSON файл, в котором нужно скопировать публичный ключ
nano /root/.near-credentials/shardnet/trdm.shardnet.near.json
Копируем "public_key" и нажимаем Ctrl + X для выхода из редактора
В ссылке ниже заменяем <public_key> на скопированный ключ и открываем в браузере
https://wallet.shardnet.near.org/login/?referrer=NEAR+CLI&public_key=<public_key>&success_url=http://127.0.0.1:5000/
Создаем переменные моникера, ID пула и ID аккаунта. Заменяем <MONIKER> на свой ник.
MONIKER=<MONIKER> POOL=<MONIKER>.factory.shardnet.near ACCOUNT_ID=<MONIKER>.shardnet.near
Сохраняем переменные, перезагружаем .bash_profile и проверяем значения переменных
echo "export MONIKER="${MONIKER}"" >> $HOME/.bash_profile
echo "export POOL="${POOL}"" >> $HOME/.bash_profile
echo "export ACCOUNT_ID="${ACCOUNT_ID}"" >> $HOME/.bash_profile
source $HOME/.bash_profile
echo -e "\nmoniker > ${MONIKER}.\n"
echo -e "\npool > ${POOL}.\n"
echo -e "\naccount_id > ${ACCOUNT_ID}.\n"near generate-key $POOL
Заходим в файл и меняем слово private_key на secret_key
nano ~/.near-credentials/shardnet/$POOL.json
Нажимаем Ctrl + X и подтверждаем изменения
Копируем ключ в папку тестнета
cp ~/.near-credentials/shardnet/$POOL.json ~/.near/validator_key.json
sudo systemctl daemon-reload sudo systemctl enable neard sudo systemctl restart neard
Настройка стекинг пула
Вызываем стекинг пул фэктори, создаем и разворачиваем новый стекинг пул. Важно! Заменяем <MONIKER> и <ACCOUNT_ID> (в моем случае: <MONIKER> - trdm; <ACCOUNT_ID> - trdm.shardnet.near). Вместо <public key> вставляем ключ из файла validator_key.json
NEAR_ENV=shardnet near call factory.shardnet.near create_staking_pool '{"staking_pool_id": "<MONIKER>", "owner_id": "<ACCOUNT_ID>", "stake_public_key": "<public key>", "reward_fee_fraction": {"numerator": 5, "denominator": 100}, "code_hash":"DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ"}' --accountId="$ACCOUNT_ID" --amount=30 --gas=300000000000000Дополнительно! Для изменения настроек пула, например изменения комиссии, воспользуемся следующей командой
NEAR_ENV=shardnet near call $POOL update_reward_fee_fraction '{"reward_fee_fraction": {"numerator": 1, "denominator": 100}}' --accountId $ACCOUNT_ID --gas=300000000000000При условии корректного исполнения программы, выведется хэш транзакции и ссылка на транзакцию в эксплорере:
Теперь можем застейкать еще токенов. В моем случае 500.
NEAR_ENV=shardnet near call $POOL deposit_and_stake --amount 500 --accountId $ACCOUNT_ID --gas=300000000000000
Важно! Оставьте немного токенов в кошельке для оплаты комиссий.
Мониторинг ноды
journalctl -n 100 -f -u neard | ccze -A
curl -s http://127.0.0.1:3030/status | jq .version
near view $POOL get_accounts '{"from_index": 0, "limit": 10}' --accountId $ACCOUNT_IDПроверка произведенных блоков. Заменить <POOL> на адрес своего пула в формате xxx.factory.shardnet.near
curl -s -d '{"jsonrpc": "2.0", "method": "validators", "id": "dontcare", "params": [null]}' -H 'Content-Type: application/json' 127.0.0.1:3030 | jq -c '.result.current_validators[] | select(.account_id | contains ("<POOL>"))'
Полезные команды
sudo systemctl restart neard
near view $POOL get_account_total_balance '{"account_id": "<MONIKER>.shardnet.near"}'#определенное количество
near call $POOL unstake '{"amount": "<amount yoctoNEAR>"}' \
--accountId $ACCOUNT_ID --gas=300000000000000
#все
near call $POOL unstake_all --accountId $ACCOUNT_ID \
--gas=300000000000000#определенное количество
near call $POOL withdraw '{"amount": "<amount yoctoNEAR>"}' \
--accountId $ACCOUNT_ID --gas=300000000000000
#все
near call $POOL withdraw_all --accountId $ACCOUNT_ID \
--gas=300000000000000Список активных валидаторов текущей эпохи
near validators current
Список валидаторов, чей пропозал принят и которые будут активны в следующей эпохе
near validators next