NEAR Stake Wars 3: Full guide
Добрый день от команды mmg. Сегодня речь пойдет о проекте NEAR, а точнее о их мероприятии Stake Wars 3. Данное мероприятие направлено на привлечение новых валидаторов в основную сеть. Вы сможете познать азы валидаторства, поставив ноду и выполнив ряд заданий. Всего вы можете получить не больше 500 $NEAR на свой основной кошелек и не более 50к $NEAR может быть делегировано в пул вашей основной сети, если вы решите стать полноценным валидатором после мероприятия. Всего на данный момент существует 9 заданий, за каждое из них назначена свой награда. В данном гайде описано решение всех заданий, а также решение возникающих проблем у участников.
Подготовка оборудования
Первым делом нам понадобится сервер, его можно приобрести либо у Contabo (как сделал я), либо у Hetzner. В пятом задании (за него дают только делегированные монеты $NEAR) одно из условий, это арендовать сервер у популярного хостинга, в списке есть Hetzner. Я же арендовал у Contabo, его нет в списке.
Если берете у Contabo советую выбирать VPS M и регион США.
Для покупки сервера вам понадобится иностранная карта, но есть выход. Приложение Pyypl с его помощью можно создать карту и забросить на нее крипту, для регистрации необходимо иметь загранпаспорт. Сервис удобен тем, что можно совершать пополнение прямо через приложение Binance с помощью Binance pay.
Не советую закидывать слишком большие суммы, только на оплату ваших текущих нужд, так как может произойти тоже самое, что и с Bankoff.
Настройка сервера
После того как вы купили сервер и он готов к работе, первым делом вам необходимо подключиться к серверу через терминал удаленного доступа. Я выбираю Termius, он удобней всего.
Для начала необходимо подключится к серверу. Вводим ip, в поле пользователь root и пароль, который вы придумали при покупки сервера.
Первым делом вы можете изменить порт и создать нового пользователя, это не обязательно, но советую всегда заботится о безопасности.
nano /etc/ssh/sshd_config
Необходимо стереть решетку и придумать любой порт, затем сохраняем и закрываем файл:
ctr+x->y->enter
sudo useradd -m -s /bin/bash -c "Administrative User" User_name
Задаем пароль и добавляем в группу sudo:
sudo passwd User_name sudo usermod -aG sudo User_name su - User_name
После всего этого нам необходимо перезагрузить сервер и в параметрах подключения изменить порт, имя пользователя и пароль:
sudo shutdown -r now
Установка инструментов разработчика
sudo apt update && sudo apt upgrade -y
curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt install build-essential nodejs PATH="$PATH"
Если у вас не получается скачать и происходит прерывание скачивания, после подтверждения вопроса в консоли, то попробуйте снова, но перед этим переключитесь на английский язык заранее.
node -v #18.xx npm -v #8.xx
Установить инструменты разработчика:
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 clang llvm cargo
sudo apt install python3-pip #Настройка USER_BASE_BIN=$(python3 -m site --user-base)/bin export PATH="$USER_BASE_BIN:$PATH"
Устанавливаем необходимые пакеты и Rust&Cargo:
sudo apt install clang build-essential make curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Выбираем пункт 1 и жмем enter:
source $HOME/.cargo/env
Задание 1
Создаем кошелек в тестовой сети.
Кошелек: https://wallet.shardnet.near.org/
Переходим на сайт, придумываем свой ник и жмем продолжить. После выбираем создание с помощью мнемонической фразы, сохраняем ее в надежном месте и жмем продолжить. Затем вставляем нужное слово и жмем проверить и завершить.
В следующее окно вставляем свою мнемоническую фразу и жмем найти учетную запись, тогда на вашем кошельке окажется 50 $NEAR.
Если у вас не получается создать кошелек (выдает ошибку), то у вас вряд ли получится это сделать, следует попробовать позже и перейти к следующему пункту.
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
Задание 2
Далее мы преступаем непосредственно к установки и запуску самой ноды.
Клонируем репозиторий с нодой:
git clone https://github.com/near/nearcore cd nearcore git fetch
Проверяем commit. Он должен изменятся, поэтому копируйте по следующей ссылке: https://github.com/near/stakewars-iii/blob/main/commit.md
git checkout <commit>
Это пример, который актуален на 10.08.2022, вам же лучше проверить по ссылке выше:
git checkout 68bfa84ed1455f891032434d37ccad696e91e4f5
Далее вам необходимо скомпилировать бинарный файл, это занимает около 15-20 минут и зависит от мощности вашего сервера:
cargo build -p neard --release --features shardnet
Для работы ноды требуется рабочий каталог со скаченными файлами конфигураций. Для этого используйте следующую команду:
./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
sudo apt-get install awscli -y
rm ~/.near/genesis.json cd ~/.near wget https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/genesis.json
Если у вас не получается сделать этот шаг, то в репозитории вашей системы AWS-клиент устарел. Обновите его следующей командой:
pip3 install awscli --upgrade
Перед запуском ноды, вы можете сделать более красивые логи:
sudo apt install ccze
Теперь вам нужно запустить ноду и дождаться полной синхронизации. Сначала будут скачиваться headers, затем blocks. Вы должны дождаться полной их загрузки, в среднем это занимает около 1,5-2 часа:
cd ~/nearcore ./target/release/neard --home ~/.near run
Вот так выглядят логи после синхронизации.
После синхронизации вы можете выйти из логов и продолжить выполнения задания:
ctr+c
Следующий этап это предоставление полного доступа вашего кошелька ноде.
Начать авторизацию. Введите следующую команду и кликните по ссылке:
near login
Вас перекинет на сайт кошелька, после чего вы нажмете на кнопку продолжить и вас попросят ввести название вашего аккаунта в таком формате: имя_аккаунта.shardnet.near.
В следствии чего, вы увидите на экране данное сообщение. Это нормально!
Вернитесь назад и в консоль вставьте: имя_аккаунта.shardnet.near.
Решение проблем
У многих возникала проблема с тем, что после ввода аккаунта не происходила авторизация. Есть решение этой проблемы.
В командой строке вводим команду генерации ключа доступа (без скобок):
near generate-key <xx.shardnet.near> #Где xx - это ник вашего аккаунта
переходим в сгенерированный файл:
nano /home/.near-credentials/shardnet/xx.shardnet.near.json
Копируем public_key и сохраняем его в любом удобном месте.
Затем вставляем его в ссылку вместо public_key:
https://wallet.shardnet.near.org/login/?referrer=NEAR+CLI&public_key=<public_key>&success_url=http://127.0.0.1:5000/
Затем переходим по ссылки и делаем все что необходимо.
Продолжаем выполнение 2 задания
near generate-key xx.shardnet.near #где xx - это ваш ник
Заходим в сгенерированный файл:
nano ~/.near-credentials/shardnet/xx.shardnet.near.json #где xx - это ваш ник
Изменяем в файле accaunt_id, вставляя factory перед shardnet, также необходимо заменить private_key на secret_key. Вот так должно выглядеть:
{
"account_id": "....factory.shardnet.near",
"public_key": "ed25...",
"secret_key": "ed25..."
}Ctr+x->y->enter
Затем копируем этот файл в другую папку:
cp ~/.near-credentials/shardnet/xx.shardnet.near.json ~/.near/validator_key.json
Дальше необходимо создать сервисный файл. Используем для этого команду:
sudo nano /etc/systemd/system/neard.service
Вставляем в него скрипт, но вместо USER (в 3х-местах) прописываем ваше имя пользователя на сервере:
[Unit] Description=NEARd Daemon Service [Service] Type=simple User=<USER> #Group=near WorkingDirectory=/home/<USER>/.near ExecStart=/home/<USER>/nearcore/target/release/neard run Restart=on-failure RestartSec=30 KillSignal=SIGINT TimeoutStopSec=45 KillMode=mixed [Install] WantedBy=multi-user.target
ctr+x->y->enter
sudo systemctl daemon-reload sudo systemctl enable neard sudo systemctl restart neard
На этом 2 задание можно считать выполненным. Вы запустили ноду валидатора, поздравляю!
Вы можете посмотреть логи своей ноды с помощью команды:
sudo journalctl -n 100 -f -u neard | ccze -A
Задание 3
Суть третьего задания заключается в создании стейкинг пула, оно состоит всего из одной команды, но вот вводить ее нужно внимательно.
Перед тем как ввести эту команду проверьте, чему равна цена кресла валидатора:
near validators current
На данный момент seat price = 580 $NEAR(10.08.2022). Если у вас есть столько, а лучше немного больше, то вы сможете стать валидатором. Но в любом случае стейкинг пул стоит создать сейчас.
Команда создания стейкинг пула:
near call factory.shardnet.near create_staking_pool '{"staking_pool_id": "<pool id>", "owner_id": "<accountId>", "stake_public_key": "<public key>", "reward_fee_fraction": {"numerator": 5, "denominator": 100}, "code_hash":"DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ"}' --accountId="<accountId>" --amount=67 --gas=300000000000000pool id: здесь вводим само название пула, без shardnet.near, то есть в моем случае просто "mmg".
owner id: Здесь вводим имя владельца пула уже с shardnet.near, то есть в моем случае "mmg.shardnet.near"
AccountId: Здесь нужно ввести имя кошелька, то есть в моем случае "mmg.shardnet.near".
near call factory.shardnet.near create_staking_pool '{"staking_pool_id":"mmg", "owner_id":"mmg.shardnet.near", "stake_public_key":"здесь ваш публичный ключ", "reward_fee_fraction": {"numerator": 5, "denominator": 100}, "code_hash":"DD428g9eqLL8fWUxv8QSpVFzyHi1Qd16P8ephYCTmMSZ"}' --accountId="mmg.shardnet.near" --amount=67 --gas=300000000000000После успешного создания стейкинг пула, вы можете посмотреть заявки всех валидаторов и найти там себя:
near proposals
ctr+shift+f
Вы также можете изменить размер комиссии, которую вы берете за стейкинг:
near call <pool_id> update_reward_fee_fraction '{"reward_fee_fraction": {"numerator": 1, "denominator": 100}}' --accountId <account_id> --gas=300000000000000Измените значение numerator, при условии что denominator = 100, numenator = 1, это 1%. Вы можете изменять числитель и знаменатель в любых пропорциях. Здесь pool_id,account_id полные.
Остальные важные команды
near call <pool_id> deposit_and_stake --amount <amount> --accountId <accountId> --gas=300000000000000
near call <pool_id> unstake '{"amount": "<amount yoctoNEAR>"}' --accountId <accountId> --gas=300000000000000
#yoctoNEAR = количество near+24нуля например 5 near= 5*10^24 yoctoNEARnear call <pool_id> withdraw '{"amount": "<amount yoctoNEAR>"}' --accountId <accountId> --gas=300000000000000
#yoctoNEAR = количество near+24нуля например 5 near= 5*10^24 yoctoNEARПинг, это важная вещь, необходимая для обновления новых предложений и баланса для делегаторов:
near call <pool_id> ping '{}' --accountId <accountId> --gas=300000000000000near view <pool_id> get_account_staked_balance '{"account_id": "<accountId>"}'near view <pool_id> get_account_unstaked_balance '{"account_id": "<accountId>"}'near view <pool_id> is_account_unstaked_balance_available '{"account_id": "<accountId>"}'Задание 4
Стать валидатором означает, что ваше предложение было принято и вы стали обрабатывать чанки.
journalctl -n 100 -f -u neard | ccze -A
sudo apt install curl jq
Основные команды
curl -s http://127.0.0.1:3030/status | jq .version
near view <your pool>.factory.shardnet.near get_accounts '{"from_index": 0, "limit": 10}' --accountId <accountId>.shardnet.nearВ двух следующих командах нужно писать только ник вместо pool_id, то есть, в моем случае просто mmg.
Узнать причину, по которой вас собираются исключить из валидаторов:
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.prev_epoch_kickout[] | select(.account_id | contains ("<POOL_ID>"))' | jq .reasonОчень важная команда!! Проверить сколько ваша нода производит чанков и сколько ей нужно произвести:
curl -r -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_ID"))'Задание 5
Награды: 5000 делегированных NEAR в ваш пул
В 5 задании вам нужно написать статью о том, как вы настроили свою ноду, но можно это сделать только если вы поставили свою ноду на одном из топовых провайдеров.
Задание 6
Вы помните, что я говорил о важности пинга? Так вот, это задание заключается в том, что необходимо настроить cron демона, то есть, сделать так, чтобы пинг выполнялся автоматически в определенном промежутке времени (каждые 2 часа).
Первым делом создаем две папки в директории пользователя:
cd mkdir –p scripts mkdir –p logs
cd scripts sudo nano ping.sh
Вставляем туда следующий скрипт, но изменяем USER_ID, на ваше имя пользователя на сервер, POOLID и AccountID на ваш ник:
#!/bin/sh
# Ping call to renew Proposal added to crontab
export NEAR_ENV=shardnet
export LOGS=/home/<USER_ID>/logs
export POOLID=<YOUR_POOL_ID>
export ACCOUNTID=<YOUR_ACCOUNT_ID>
echo "---" >> $LOGS/all.log
date >> $LOGS/all.log
near call $POOLID.factory.shardnet.near ping '{}' --accountId $ACCOUNTID.shardnet.near --gas=300000000000000 >> $LOGS/all.log
near proposals | grep $POOLID >> $LOGS/all.log
near validators current | grep $POOLID >> $LOGS/all.log
near validators next | grep $POOLID >> $LOGS/all.logcrontab -e
Там вас попросят выбрать директорию, выбирайте 1.
Вставляем нашу задачу, USER_ID имя пользователя на сервере:
0 */2 * * * sh /home/<USER_ID>/scripts/ping.sh
Внимательно проверьте правильность, чтобы каждая звездочка была на месте.
systemctl status cron
И через 2 часа у вас будет первый пинг, можно проверить логи так:
cat ~/logs/all.log
На данный момент (06.08.2022) с пингом также возникли проблема, он может не отображаться в explorer.
6 задание первое за которое следует отчитаться. Для этого вам нужно заполнить форму. Все данные должны быть такими же, как при регистрации. В качестве доказательства выполнения, вам нужно предоставить скрин успешных пингов и ссылку на вас в explorer:
https://explorer.shardnet.near.org/
Особое внимание уделите этим строчкам, первое думаю понятно, в скобках ведь есть пример. А вот второе это ваш кошелек в основной сети NEAR, на который вам придут награды. Создать его можно по ссылке: https://wallet.near.org/
Также советую отправить на него пару копеек, чтобы активировать.
Задание 7
Награды: 10 000 делегированных $NEAR в ваш пул, 50 $NEAR на кошелек, 200$ в токене $LiNEAR (за лучшее предложение)
Суть задания заключается в том, чтобы добыть данные из блокчейна, а затем провести их анализ с помощью знакомых вам инструментов. Это задание для экспертов в области анализа больших данных и для тех, кто знаком с извлечением данных из блокчейнов.
Данная статья не рассчитана на таких людей, думаю они и сами справятся.
Задание 8
Награды: 50 NEAR + 15 000 делегированных NEAR в ваш пул
Это задание довольно легкое, но ошибаться тут нельзя. Все нужно сделать с первого раза и правильно, иначе вы попросту не сможете исправить свои ошибки.
Вам нужно развернуть смарт-контракт на своем аккаунте, чтобы разделить награды за стейкинг между двумя аккаунтами. Первым делом зарегистрируйте новый аккаунт, на который будет приходить часть наград.
Затем добавьте набор инструментов:
rustup target add wasm32-unknown-unknown
git clone https://github.com/zavodil/near-staking-pool-owner
cd near-staking-pool-owner/contract cargo build --target wasm32-unknown-unknown --release
Разворачиваем смарт-контракт на свой учетной записи:
NEAR_ENV=shardnet near deploy <OWNER_ID>.shardnet.near --wasmFile target/wasm32-unknown-unknown/release/contract.wasm
Затем вам нужно сделать деплой. Тут будьте осторожны, вы не сможете сделать это второй раз!!!! Во все добавлены приписки вам нужно лишь вставить ники учетных записей. SPLITED_ACCOUNT_ID_1= ник основного кошелька. SPLITED_ACCOUNT_ID_2 = ник второго кошелька. Также вы можете изменить пропорцию наград. По умолчанию на основной падает 30%, а на второстепенный 70%:
CONTRACT_ID=<OWNER_ID>.shardnet.near
NEAR_ENV=shardnet near call $CONTRACT_ID new '{"staking_pool_account_id": "<STAKINGPOOL_ID>.factory.shardnet.near", "owner_id":"<OWNER_ID>.shardnet.near", "reward_receivers": [["<SPLITED_ACCOUNT_ID_1>.shardnet.near", {"numerator":3, "denominator":10}], ["<SPLITED_ACCOUNT_ID_2>.shardnet.near", {"numerator":70, "denominator":100}]]}' --accountId $CONTRACT_IDВот так выглядит успешная транзакция. Если у вас не так, либо у вас на кошельке не хватает монет (нужно около 20), либо вы совершили ошибку. Внимательно читайте вывод командой строки!
Если у вас все получилось, то необходимо подождать пока вам начислять награды и можно будет их вывести, обычно занимает 2-3 эпохи (начисляются они только в том случае, если вы валидатор, и были им 2-3 эпохи подряд)
Команда для проверки возможности вывода:
near view <OWNER_ID>.factory.shardnet.near is_account_unstaked_balance_available '{"account_id": "<OWNER_ID>.shardnet.near"}'CONTRACT_ID=<OWNER_ID>.shardnet.near
NEAR_ENV=shardnet near call $CONTRACT_ID withdraw '{}' --accountId $CONTRACT_ID --gas 200000000000000Если все окей, сделайте скрин успешного вывода, а также сохраните ссылку на транзакцию (в конце скрина).
В качестве доказательства выполнения заполните форму и укажите ссылку и скрин в соответствующих вопросах.
Задание 9
В этом задании вам нужно доказать, что ваша нода работает отлично и ее онлайн больше 70%. Для это, если вы валидатор, то зайдите на сайт этого соревнования:
https://openshards.io/shardnet-uptime-scoreboard/
Найдите там себя и посмотрите, какой у вас онлайн. Если он больше 70%, то смело делайте скрин.
Второй этап - это открыть порт 3030, он создан для мониторинга вашей ноды, вы можете также подключить скрипты мониторинга, если в этом разбираетесь.
sudo iptables -A INPUT -p tcp --dport 3030 -j ACCEPT
Сохранить это в конфигурации сервера:
sudo apt install iptables-persistent sudo dpkg-reconfigure iptables-persistent iptables-save > /etc/iptables/rules.v4 ip6tables-save > /etc/iptables/rules.v6
sudo iptables -L | grep 3030
http://<ip вашего сервера>:3030/status
Для отчета вам следует заполнить форму, как в задании 6 и 8. Прикрепите скрин и ссылку, которые вы делали.
Задание 11
В начале этого года Aurora запустила первую ферму ставок на NEAR, и это очень весело. Однако все еще есть некоторые нерешенные проблемы, связанные с этим, например, как сделать APY устойчивым, как сделать ферму стекинга более децентрализованной и как один пользователь может одновременно получать вознаграждение за несколько ферм стекинга и т. д. Пожалуйста, предложите улучшенную ферму стекинга. решение, которое могло бы помочь решить некоторые из этих проблем.
Задание 13
Награды: 25 NEAR 5000 делегированых NEAR
В этом задании необходимо запустить резервный узел валидатора. Для этого вам необходим еще один сервер. После приобретения сервера необходимо выполнить 1-2,4,6,9 задания. То есть просто настроить ноду, авторизоваться через другие ключи (использую другой кошелек), создавать пул не требуется. Также необходимо настроить автопинг(6 задание), RPC (4 задание), открыть порты (9 задание).
После успешной настройки ноды, вам необходимо создать 2 папки с ключами (одна с резервными, другая с основными на обоих серверах), сделать это можно вручную или через консоль:
#Ключи резервной ноды mkdir -p RESERVE_KEYS #Ключи основной ноды mkdir -p mainnet
После чего в папку с резервными ключами добавьте файл из папки /.near: validator_key.json и node_key.json. Тоже самое сделайте для папки с основными ключами. Две папки закиньте на оба сервера в директорию пользователя.
Замена ключей на основном сервере (Сделайте скрин с выполнением всех следующих команд):
cat ~/.near/node_key.json | grep public_key sudo systemctl stop neard rm ~/.near/validator_key.json ~/.near/node_key.json cp ~/RESERVE_KEYS/validator_key.json ~/RESERVE_KEYS/node_key.json ~/.near sudo systemctl start neard sudo journalctl -n 100 -f -u neard | ccze -A | grep INFO
Замена ключей на резервном сервере (Сделайте скрин с выполнением всех следующих команд):
cat ~/.near/node_key.json | grep public_key sudo systemctl stop neard rm ~/.near/validator_key.json ~/.near/node_key.json cp ~/mainnet/validator_key.json ~/mainnet/node_key.json ~/.near sudo systemctl start neard sudo journalctl -n 100 -f -u neard | ccze -A | grep INFO
Пример скрина из официального гайда (на отличия команд не обращайте внимания, главное тут, чтобы было видно ваш старый ключ на ноде, процесс удаления и замены, новый ключ и то, что вы запустили ноду):
После вам необходимо заполнить форму, где вы прикрепите скрины выполнения для обоих серверов
После всех процедур вы можете сделать обратную замену, то есть изменить ключи еще раз, но начинайте именно с сервера бэкапа, на котором в данный момент стоят ваши основные ключи. Это необходимо для того, чтобы нода с основными ключами валидатора не работала одновременно на двух серверах, так как по этой причине она может стать усеченной.
Обратная замена для сервера бэкапа:
cat ~/.near/node_key.json | grep public_key sudo systemctl stop neard rm ~/.near/validator_key.json ~/.near/node_key.json cp ~/RESERVE_KEYS/validator_key.json ~/RESERVE_KEYS/node_key.json ~/.near sudo systemctl start neard sudo journalctl -n 100 -f -u neard | ccze -A | grep INFO^
Обратная замена для основного сервера:
cat ~/.near/node_key.json | grep public_key sudo systemctl stop neard rm ~/.near/validator_key.json ~/.near/node_key.json cp ~/mainnet/validator_key.json ~/mainnet/node_key.json ~/.near sudo systemctl start neard sudo journalctl -n 100 -f -u neard | ccze -A | grep INFO
Задание 14
Награды: 7500 делегированых NEAR
В это задании вам необходимо создать узел резервного копирования, для того, чтобы в случае необходимости переноса базы данных вы могли это сделать максимально быстро.
Для начала вам нужен дополнительный сервер, на котором будет стоять узел резервного копирования, не следует использовать сервер, на котором стоит ваш валидатор!
После успешного развертывания на новом сервере ноды, вам необходимо создать скрипт автоматического резервного копирования.
cd scripts mkdir backups sudo nano backup.sh
Добавим скрипт, прописав пути:
#!/bin/bash
DATE=$(date +%Y-%m-%d-%H-%M)
DATADIR=<WORK_DIR>
BACKUPDIR=<WORK_DIR>/backups/near_${DATE}
mkdir $BACKUPDIR
sudo systemctl stop neard.service
wait
echo "NEAR node was stopped" | ts
if [ -d "$BACKUPDIR" ]; then
echo "Backup started" | ts
cp -rf $DATADIR/mainnet/data/ ${BACKUPDIR}/
# Submit backup completion status, you can use healthchecks.io, betteruptime.com or other services
# Example
# curl -fsS -m 10 --retry 5 -o /dev/null https://hc-ping.com/xXXXxXXx-XxXx-XXXX-XXXx-...
echo "Backup completed" | ts
else
echo $BACKUPDIR is not created. Check your permissions.
exit 0
fi
sudo systemctl start neard.service
echo "NEAR node was started" | tssudo nano /etc/crontab
Вставляем задание прописывая ваши пути до скрипта и логов:
0 12 * * * near <WORK_DIR>/NEARmain/backup.sh >> <WORK_DIR>/NEARmain/backups/backup.log 2>&1
После выполнения и успешной работы вы должны заполнить форму
В качестве доказательства вы можете отправить файл вашего скрипта или текст скрипта в соответствующих полях форму.
Обновления
Важное обновление (12.08.2022)
Ночью 12.08.2022 вышло важное обновление. Подробнее о нем можно прочитать в документации. И так, чтобы обновиться нам нужно вручную добавить в файл config.json дополнительную строку, состоящую из ключа вашей ноды из файла node_key.json и ip вашего сервера.
Для начала узнаем ip сервера, вы наверняка его знаете, но вот команда:
curl ifconfig.me
Сохраните этот ip в текстовом документе.
Следом вам нужно узнать публичный ключ ноды (не путать с публичным ключом валидатора!). Команда:
cat ~/.near/node_key.json | grep public_key
Сохраните его также в текстовом документе, вместе с (ed25519).
Затем вам нужно вставить в файл config.json строчку:
"public_addrs": ["public key@public IP:24567"],
public key - это ключ из файла node_key.json.
public IP - ip вышего сервера.
nano ~/.near/config.json
Найдите следующие строчки и вставьте новую строку с вашими данным (последняя строка тут):
"network": {
"addr": "0.0.0.0:24567",
"boot_nodes": …,
"public_addrs": ["public key@public IP:24567"],Важно, чтобы строка находилась на одном уровне со своими соседями, то есть важно соблюдать табуляцию (4 пробела или 1 TAB).
После сохраните файл и выйдете.
Следующий шаг, перезапуск ноды:
sudo systemctl stop neard sudo systemctl enable neard sudo systemctl start neard sudo systemctl daemon-reload
После перезапуска ноды вам нужно открыть порт(24567), если вы этого не делали.
Первым делом проверим открыт ли он сейчас:
sudo iptables -L | grep 24567
Если ничего не выдало, то он закрыт. Откроем следующей командой:
sudo iptables -A INPUT -p tcp --dport 24567 -j ACCEPT
Сохраним в конфигурации сервера:
sudo dpkg-reconfigure iptables-persistent
sudo iptables -L | grep 24567
Если да, то выдаст следующую строчку:
Обновили commit
Если обновили commit, то вам нужно перейти по ссылке: https://github.com/near/stakewars-iii/blob/main/commit.md
И взять от туда новый commit и выполнить команды:
sudo systemctl stop neard export NEAR_ENV=shardnet echo 'export NEAR_ENV=shardnet' >> ~/.bashrc cd ~/nearcore git fetch
Затем проверить. Вставить новый commit в эту команду и скомпилировать бинарный файл:
git checkout <commit> cargo build -p neard --release --features shardnet
sudo systemctl enable neard sudo systemctl start neard
Обновили config
sudo systemctl stop neard
Затем удаляем старый конфиг и скачиваем новый:
rm ~/.near/config.json wget -O ~/.near/config.json https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/config.json
sudo systemctl enable neard sudo systemctl start neard
Произошел хардфорк
Хардфорк - это разветвление сети, по сути ее обнуление и перезапуск. В таком случае вам необходимо удалить генезис, базу данных и скачать новый конфиг, а также скомпилировать бинарный файл.
Останавливаем ноду и удаляем базу данных:
sudo systemctl stop neard rm ~/.near/data/*
Скомпилируем бинарный файл, вставляем рекомендуемый commit:
cd ~/nearcore git fetch git checkout <commit> cargo build -p neard --release --features shardnet
cd ~/.near rm genesis.json wget https://s3-us-west-1.amazonaws.com/build.nearprotocol.com/nearcore-deploy/shardnet/genesis.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
sudo systemctl enable neard sudo systemctl start neard && journalctl -n 100 -f -u neard | ccze -A
Причины, по которым вы не можете стать валидатором
1) В данный момент при регистрации кошелька возможно получить только 50 монет, также кошелек создается раз через раз. Поэтому будет крайне сложно иметь более 580 монет (10.08.2022) для принятия вашего предложения. Возможно админы исправят ситуацию в ближайшее время.
2) У вас неправильные публичные ключи или есть ошибки в файлах с ними/
Команда для проверки, ключи должны совпадать:
near view <POOL_ID> get_staking_key '{}'
cat ~/.near/validator_key.json | grep public_keyОбновить ключ, если он не правильный:
near call <POOL_ID> update_staking_key '{"stake_public_key": "<PUBLIC_KEY>"}' --accountId <ACCOUNT_ID> --gas=3000000000000003) Ваш сервер имеет какие либо проблемы, из-за чего нода работает не корректно: не хватает оперативной памяти, низкая пропускная способность сети (скорость интернета).
Проверить можно с помощью следующих команд:
#проверка скорости интернета sudo pip install speedtest-cli #Проверяем скорость интернета speedtest #проверка загруженности ядер и RAM htop
4) В папке (./near-credentials/shardnet) отсутствует файл с ключами валидатора (xx.shardnet.near.json). Или же сама папка отсутствует. Вы можете создать папку вручную или с помощью утилиты (mkdir). Из-за отсутствия файла нода не будет корректно пинговаться.
5) Ваша нода не пунгуется. Если вам не хвататет монет для отправки пинга (37 на данный момент 10.08.2022), то вы можете вывести их из своего стейкинга или же попробовать создать кошелек, чтобы пополнить кошелек пула. После первого успешного пинга ваша нода будет пинговаться без подобной стоимости.
Я хочу перенести ноду на другой сервер
Если по какой либо причине вы захотели перенести свою ноду на другой сервер, тогда вам нужно сохранить два основных файла. В Termius вы можете воспользоваться менеджером файлов и перекинуть нужные на свой компьютер.
sudo systemctl stop neard
После сохраните файлы: node_key.json, validator_key.json, xx.shardnet.near.json
Затем вам нужно заново поставить ноду и заменить эти файлы перед запуском ноды.
Моя нода постоянно падает (перезагружается)
На данный момент (10.08.2022) существует серьезная проблема с утечкой оперативной памяти. Из-за чего 16гб оперативки может не хватать для нормальной работы ноды. Для решения этой проблемы можно прибегнуть к swap или файлы подкачки. Важно отметить, что это временное решение, до тех пор, пока не исправят ситуацию.
Для начала проверим, если ли файлы подкачки сейчас:
swapon --show
Если у вас уже есть файлы подкачки, то необходимо их отключить:
sudo swapoff -v /swapfile
sudo rm /swapfile
sudo fallocate -l 32G /swapfile
ls -lh /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
swapon --show
На этом у меня все. Эта статья будет со временем обновляться, дополнятся, а также изменяться. Если хотите поддержать автора, то можете подписаться на его группу. Это блог, в котором публикуются интересные темы из мира крипты и финансов.