Ноды / Nodes
August 30

Установка ноды Story Protocol / Story Protocol Node Guide

Интеллектуальная собственность — это класс активов стоимостью в несколько триллионов долларов, застрявший в устаревшей системе. Story внедряет IP (intellectual property) в блокчейн и делает ее программируемой с помощью инноваций.

Содержание


Требования к серверу


4 CPU, 8 RAM, 200 GB SSD

Аренда серверов


Оплата российскими картами
play2go

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


sudo apt-get update -y && sudo apt upgrade -y && sudo apt-get install make build-essential pkg-config libssl-dev unzip tar lz4 gcc git jq -y

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


Установка и запуск Geth

Скачай и распакуй архив с geth

wget -q --show-progress https://story-geth-binaries.s3.us-west-1.amazonaws.com/geth-public/geth-linux-amd64-0.9.2-ea9f0d2.tar.gz
tar -xzvf geth-linux-amd64-0.9.2-ea9f0d2.tar.gz

Перемести файлик для удобного запуска

mv geth-linux-amd64-0.9.2-ea9f0d2/geth /usr/local/bin/

Проверь версию geth

geth version
#Ответ
Geth
Version: 0.9.2-stable
Git Commit: ea9f0d293f5800e9e0300dfaafc02256de6160ef
Git Commit Date: 20240826
Architecture: amd64
Go Version: go1.21.13
Operating System: linux
GOPATH=
GOROOT=/opt/hostedtoolcache/go/1.21.13/x64

Создай сервисный файл

nano /etc/systemd/system/geth.service

Вставь в него следующее содержимое, сохрани CTRL+S и выйди из редактора CTRL+X

[Unit]
Description=Geth Node
After=network.target

[Service]
ExecStart=/usr/local/bin/geth --iliad --syncmode full
Restart=always
User=root

[Install]
WantedBy=multi-user.target

Активируй и запусти сервис

sudo systemctl enable geth
sudo systemctl start geth

Установка и запуск ноды


Скачай и распакуй архив с нодой

wget -q --show-progress https://story-geth-binaries.s3.us-west-1.amazonaws.com/story-public/story-linux-amd64-0.9.11-2a25df1.tar.gz
tar -xzvf story-linux-amd64-0.9.11-2a25df1.tar.gz

Перемести файлик для удобного запуска

mv story-linux-amd64-0.9.11-2a25df1/story /usr/local/bin/

Создай еще один сервисный файл

nano /etc/systemd/system/story.service

Вставь в него следующее содержимое, сохрани CTRL+S и выйди из редактора CTRL+X

[Unit]
Description=Story Client
After=network.target

[Service]
ExecStart=/usr/local/bin/story run
WorkingDirectory=/root/.story/story
Restart=always
User=root

[Install]
WantedBy=multi-user.target

Придумай имя своей ноде и в следующей команде замени <Your_Node_Name> на то что ты придумал

story init --network iliad --moniker <Your_Node_Name>
#пример
story init --network iliad --moniker Nodateka

Активируй и запусти сервис

sudo systemctl enable story
sudo systemctl start story

Экспорт ключа валидатора


Нода сама создает кошелек для тебя, введи эти две команды и сохрани адрес своего нового кошелька (1), публичный ключ в кодировке base64 (2) надежное место.

story validator export --export-evm-key --evm-key-path ~/.story/story/.env
cat ~/.story/story/.env

После ввода последней команды на экране появится приватный ключ (3) от твоего нового кошелька, скопируй и сохрани его в надежное место.

Теперь тебе нужно пополнить свой новый кошелек токенами IP, минимум нужен 1,1 IP. Дальше продолжай только после пополнения!

Создание валидатора


В следующей команде замени <YOUR PRIVATE KEY> на приватный ключ от твоего нового кошелька (3 на скриншоте выше)

story validator create --stake 1000000000000000000 --private-key <YOUR PRIVATE KEY>

После ввода команды ты увидишь примерно тоже что и на скрине. Поздравляю теперь ты один из первых валидаторов в Story!

Скопируй URL адрес и вставь его в адресной строке браузера, ты увидишь хеш своей транзакции.

Стейкинг в валидатора


Теперь ты можешь стейкать в своего нового валидатора.
В команде ниже замени <YOUR PUBLIC KEY (base64)> на свой публичный ключ в кодировке base64 (2 на скриншоте), а <YOUR PRIVATE KEY> снова замени на свои приватный ключ (3 на скриншоте)

story validator stake    --validator-pubkey <YOUR PUBLIC KEY (base64)>    --stake 1000000000000000000    --private-key <YOUR PRIVATE KEY>

Также ты можешь отблагодарить меня за гайд) и стейкнуть в моего валидатора, в команде ниже уже указан мой публичный ключ, тебе остается только заменить <YOUR PRIVATE KEY>. Спасибо!

story validator stake    --validator-pubkey AqpEOp3bFm8ED0d8FdSEVagGKtLxZNkHv5ku65gNHvR3    --stake 1000000000000000000    --private-key <YOUR PRIVATE KEY>

Бэкап файлов конфигураций


Подключись к серверу по SFTP и скопируй файлы конфигураций к себе на компьютер, файлы на сервере находятся по пути /root/.story/story/config

Особенно важен приватный ключ priv_validator_key.json, храни его в надежном месте.

Мониторинг состояния ноды


Открой журналы системных сообщений служб которые ты запустил, для выхода из логов нажми CTRL+C

sudo journalctl -u geth -f
sudo journalctl -u story -f
логи geth
логи ноды

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


Проверь статус синхронизации следующей командой, если в строке "catching_up": значение false, то твоя нода полностью синхронизирована.

curl localhost:26657/status | jq

Проверка статуса валидатора в эксплорере


Введи команду, скопируй HEX валидатор адрес (1) из ответа команды

curl -s localhost:26657/status | jq -r '.result.validator_info' 

Перейди в эксплорер сети и в поле поиска вставь свой HEX адрес (1), скорее всего ты увидишь что твой валидатор не активен и находится в "тюрьме"

Обновление ноды до версии 0.10.0


Если у тебя в логах журнала службы story, примерно такая ситуация

Проверь еще вот этим скриптом высоту блоков которую успела набрать твоя нода

while true; do 
  local_height=$(curl -s localhost:26657/status | jq -r '.result.sync_info.latest_block_height');
  network_height=$(curl -s https://rpc-story.josephtran.xyz/status | jq -r '.result.sync_info.latest_block_height');
  blocks_left=$((network_height - local_height));
  echo -e "\033[1;38mYour node height:\033[0m \033[1;34m$local_height\033[0m | \033[1;35mNetwork height:\033[0m \033[1;36m$network_height\033[0m | \033[1;29mBlocks left:\033[0m \033[1;31m$blocks_left\033[0m";
  sleep 5;
done

Если твоя нода застряла на блоке 626575, то выполни обновление до версии 0.10.0, если у тебя в ответе этой команды высота ниже чем 626575 сообщи в Нодатеку.

cd
wget https://story-geth-binaries.s3.us-west-1.amazonaws.com/story-public/story-linux-amd64-0.10.0-9603826.tar.gz
tar -xzvf story-linux-amd64-0.10.0-9603826.tar.gz
sudo systemctl stop story
cp $HOME/story-linux-amd64-0.10.0-9603826/story /usr/local/bin/
source $HOME/.bash_profile
story version
# ответ
#Version v0.10.0-stable

Запусти службу и проверь логи

sudo systemctl daemon-reload
sudo systemctl start story
sudo journalctl -u story -f

Веррсия обновилась и высота начала подниматься!

Удаление ноды


Останови и удали созданные службы

sudo systemctl stop story
sudo rm /etc/systemd/system/story.service
sudo systemctl stop geth
sudo rm /etc/systemd/system/geth.service
sudo systemctl daemon-reload

Удали ненужные файлы и дериктории

rm story-linux-amd64-0.9.11-2a25df1.tar.gz
rm geth-linux-amd64-0.9.2-ea9f0d2.tar.gz
rm geth-linux-amd64-0.9.2-ea9f0d2
rm story-linux-amd64-0.9.11-2a25df1



Еще раз поздравляю! Теперь ты один из первых валидаторов в Story! Присоединяйся к Nodateke, устанавливай ноды вместе с нашей командой! Обнял!