Story Protocol. Устанавливаем ноду
CryptoFortochka — гайды, ноды, новости, тестнеты
StoryProtocol — это протокол для создания, управления и лицензирования новой интеллектуальной собственности на чейне
- Инвестировали: $134 300 000
- Инвесторы: a16z, Polychain Capital, Samsung Next и другие
- Характеристики: 4CPU/8RAM/200SSD — рекомендованные
- Арендовать сервер: PqHosting, XorekCloud
- Чат и канал с поддержкой: https://t.me/fortochat / https://t.me/cryptoforto
- Операционная сеть: Ubuntu 22.04
Очередная годная активность, от нашумевшего проекта, который собрал более $130M о тир1 фондов
Сейчас, есть возможность установить валидаторскую ноду в новой тестовой сети Story, который вот запустилась на днях. Если вы хотели углубится в сферу нод, то этот проект для вас
Расписал для вас понятный гайд с установкой ноды, ставиться достаточно, советую сервак брать (минимум как требуется в рекомендации), чтобы избежать дальнейшие траблы с синхронизацией
На XorekCloud арендовать подходящий сервер за 749 рублей в месяц + написать в поддержку, чтобы вам повысили Disk space до 200 GiB за доп. оплату
Обновление 21.09
Данную обнову лучше устанавливать, если вы ранее уже устанавливали ноду по моему гайду до 03.10. Если вы ставите ноду с нуля, пропустите этот пункт и начнет с пункта "Устанавливаем ноду"
Не обновляйте до высоты блока 626 575
sudo systemctl stop story cd $HOME wget https://story-geth-binaries.s3.us-west-1.amazonaws.com/story-public/story-linux-amd64-0.10.1-57567e5.tar.gz tar -xzvf story-linux-amd64-0.10.1-57567e5.tar.gz cp $HOME/story-linux-amd64-0.10.1-57567e5/story $HOME/go/bin source $HOME/.bash_profile story version
source $HOME/.bash_profile #requirement go version above v.1.22 go version
go install cosmossdk.io/tools/cosmovisor/cmd/cosmovisor@latest
cd $HOME 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
mkdir -p $HOME/.story/story/cosmovisor/genesis/bin mkdir -p $HOME/.story/story/cosmovisor/upgrades/v0.10.0/bin
cp $HOME/story-linux-amd64-0.10.1-57567e5/story $HOME/.story/story/cosmovisor/upgrades/v0.10.1/bin
echo '{"name":"v0.10.1","time":"0001-01-01T00:00:00Z","height":626575}' > /root/.story/story/cosmovisor/upgrades/v0.10.1/upgrade-info.json
export DAEMON_NAME=story >> $HOME/.bash_profile export DAEMON_HOME=/root/.story/story >> $HOME/.bash_profile export DAEMON_DATA_BACKUP_DIR=/root/.story/story/data >> $HOME/.bash_profile source $HOME/.bash_profile echo $DAEMON_NAME echo $DAEMON_HOME echo $DAEMON_DATA_BACKUP_DIR
rm /root/.story/story/cosmovisor/current ln -s /root/.story/story/cosmovisor/upgrades/v0.10.1 /root/.story/story/cosmovisor/current
nano /etc/systemd/system/story.service
[Unit] Description=Story Consensus Client After=network.target [Service] User=root Environment="DAEMON_NAME=story" Environment="DAEMON_HOME=/root/.story/story" Environment="DAEMON_ALLOW_DOWNLOAD_BINARIES=false" Environment="DAEMON_RESTART_AFTER_UPGRADE=true" Environment="DAEMON_DATA_BACKUP_DIR=/root/.story/story/data" Environment="UNSAFE_SKIP_BACKUP=true" ExecStart=/root/go/bin/cosmovisor run run Restart=always RestartSec=3 LimitNOFILE=4096 [Install] WantedBy=multi-user.target
sudo systemctl daemon-reload sudo systemctl restart story && sudo systemctl status story
sudo journalctl -u story -f -o cat
Устанавливаем ноду
- Устанавливаем MobaXterm
- Подключаемся на арендованный сервер через root
- Выполняем команды по списку
- Обновляем и устанавливаем необходимые пакеты
sudo apt update sudo apt-get update sudo apt install curl git make jq build-essential gcc unzip wget lz4 aria2 -y
wget 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 [ ! -d "$HOME/go/bin" ] && mkdir -p $HOME/go/bin if ! grep -q "$HOME/go/bin" $HOME/.bash_profile; then echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile fi sudo cp geth-linux-amd64-0.9.2-ea9f0d2/geth $HOME/go/bin/story-geth source $HOME/.bash_profile story-geth version
wget https://story-geth-binaries.s3.us-west-1.amazonaws.com/story-public/story-linux-amd64-0.9.13-b4c7db1.tar.gz tar -xzvf story-linux-amd64-0.9.13-b4c7db1.tar.gz [ ! -d "$HOME/go/bin" ] && mkdir -p $HOME/go/bin if ! grep -q "$HOME/go/bin" $HOME/.bash_profile; then echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profile fi sudo cp story-linux-amd64-0.9.13-b4c7db1/story $HOME/go/bin source $HOME/.bash_profile story version
story init --network iliad --moniker MONIKER
sudo tee /etc/systemd/system/story-geth.service > /dev/null <<EOF [Unit] Description=Story Geth Client After=network.target [Service] User=root ExecStart=/root/go/bin/story-geth --iliad --syncmode full Restart=on-failure RestartSec=3 LimitNOFILE=4096 [Install] WantedBy=multi-user.target EOF
sudo tee /etc/systemd/system/story.service > /dev/null <<EOF [Unit] Description=Story Consensus Client After=network.target [Service] User=root ExecStart=/root/go/bin/story run Restart=on-failure RestartSec=3 LimitNOFILE=4096 [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reload && \ sudo systemctl start story-geth && \ sudo systemctl enable story-geth && \ sudo systemctl status story-geth
sudo systemctl daemon-reload && \ sudo systemctl start story && \ sudo systemctl enable story && \ sudo systemctl status story
curl localhost:26657/status | jq
Далее мы просто ждём несколько часов, пока не отобразиться статус: false
Устанавливаем снепшот (по желанию)
Снепшот поможет вам сократит время ожидание синхронизации
Внимание! Снепшот стоит устанавливать, когда только начали расти “latest_block_height”:, если пишет 0, то стоит дождаться первого блока
sudo apt-get install wget lz4 aria2 pv -y
sudo systemctl stop story sudo systemctl stop story-geth
cd $HOME rm -f Story_snapshot.lz4 wget --show-progress https://josephtran.co/Story_snapshot.lz4
cd $HOME rm -f Geth_snapshot.lz4 wget --show-progress https://josephtran.co/Geth_snapshot.lz4
cp ~/.story/story/data/priv_validator_state.json ~/.story/priv_validator_state.json.backup
rm -rf ~/.story/story/data rm -rf ~/.story/geth/iliad/geth/chaindata
sudo mkdir -p /root/.story/story/data lz4 -d Story_snapshot.lz4 | pv | sudo tar xv -C /root/.story/story/
sudo mkdir -p /root/.story/geth/iliad/geth/chaindata lz4 -d Geth_snapshot.lz4 | pv | sudo tar xv -C /root/.story/geth/iliad/geth/
cp ~/.story/priv_validator_state.json.backup ~/.story/story/data/priv_validator_state.json
sudo systemctl start story sudo systemctl start story-geth
curl localhost:26657/status | jq
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
Создаем валидатора. Детальная инструкция
Если у вас статус false, то вы можете приступить к созданию валидатора
story validator export
sudo cat /root/.story/story/config/private_key.txt story validator export --export-evm-key
- Запрашиваем c крана на этот аккаунт тестовые токены $IP
Для валидатора, нам понадобиться более 1 $IP (1 токена для создание валидатора + отдельно на комиссию), то есть, вам нужно будет 2 раза запросить токены с крана или отправить с другого аккаунта немного $IP на ваш валидатор
- Стекаем в своего валидатора your_private_key замените на приваткей вашего EVM аккаунта, который вам выдали (кавычки оставляем)
story validator create --stake 1000000000000000000 --private-key "your_private_key"
sudo cat /root/.story/story/config/priv_validator_key.json
Команды для стейкинга в валидатора
- Вписываем команду, заменив VALIDATOR_PUB_KEY на ваш пабкейвалидатора, который находится в логах статусной строке (прикреплю скрин)
- Также замените private-key на ваш приватник от EVM, который мы ранее импортировали
1000000000000000000 = 1 токен $IP, прежде чем стейкать, у вас должно быть минимум 1,01 токенов $IP для успешного стейкинга
story validator stake \ --validator-pubkey "VALIDATOR_PUB_KEY_IN_BASE64" \ --stake 1000000000000000000 \ --private-key xxxxxxxxxxxxxx
curl localhost:26657/status | jq
В Explorer наблюдаем за своим валидатором
sudo cat /root/.story/story/config/priv_validator_key.json
Дополнительный команды
sudo systemctl stop story sudo systemctl stop story-geth
sudo systemctl start story sudo systemctl start story-geth
curl localhost:26657/status | jq
sudo journalctl -u story-geth -f -o cat
sudo journalctl -u story -f -o cat
PEERS=$(curl -s -X POST https://rpc-story.josephtran.xyz -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"net_info","params":[],"id":1}' | jq -r '.result.peers[] | select(.connection_status.SendMonitor.Active == true) | "\(.node_info.id)@\(if .node_info.listen_addr | contains("0.0.0.0") then .remote_ip + ":" + (.node_info.listen_addr | sub("tcp://0.0.0.0:"; "")) else .node_info.listen_addr | sub("tcp://"; "") end)"' | tr '\n' ',' | sed 's/,$//' | awk '{print "\"" $0 "\""}') sed -i "s/^persistent_peers *=.*/persistent_peers = $PEERS/" "$HOME/.story/story/config/config.toml" if [ $? -eq 0 ]; then echo -e "Configuration file updated successfully with new peers" else echo "Failed to update configuration file." fi
sudo systemctl stop story-geth sudo systemctl stop story sudo systemctl disable story-geth sudo systemctl disable story sudo rm /etc/systemd/system/story-geth.service sudo rm /etc/systemd/system/story.service sudo systemctl daemon-reload sudo rm -rf $HOME/.story sudo rm $HOME/go/bin/story-geth sudo rm $HOME/go/bin/story