Story Validator
This guide walks you through setting up a Story Validator on the Oddysey Network using a Virtual Private Server (VPS).
System Requirements
- RAM: 16 GB
- CPU: 4 cores
- Disk Space: 500 GB
Auto Install
wget https://raw.githubusercontent.com/hidayahhtaufik/Testnet-Guides/master/Story%20Protocol/auto-install.shchmod +x auto-install.sh./auto-install.sh
Manual Install
- Install Dependencies:
sudo apt updatesudo apt-get updatesudo apt install curl git make jq build-essential gcc unzip wget pv lz4 aria2 -y
- Download Story-Geth binary v0.11.0:
cd $HOMEwget https://github.com/piplabs/story-geth/releases/download/v0.11.0/geth-linux-amd64[ ! -d "$HOME/go/bin" ] && mkdir -p $HOME/go/binif ! grep -q "$HOME/go/bin" $HOME/.bash_profile; then echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profilefichmod +x geth-linux-amd64mv $HOME/geth-linux-amd64 $HOME/go/bin/story-gethsource $HOME/.bash_profilestory-geth version
- Download Story binary v0.13.0:
cd $HOMErm -rf story-linux-amd64wget https://github.com/piplabs/story/releases/download/v0.13.0/story-linux-amd64[ ! -d "$HOME/go/bin" ] && mkdir -p $HOME/go/binif ! grep -q "$HOME/go/bin" $HOME/.bash_profile; then echo "export PATH=$PATH:/usr/local/go/bin:~/go/bin" >> ~/.bash_profilefichmod +x story-linux-amd64sudo cp $HOME/story-linux-amd64 $HOME/go/bin/storysource $HOME/.bash_profilestory version
- Init Odyssey node:
story init --network odyssey --moniker "Your_moniker_name"
- Create Story-Geth service file:
sudo tee /etc/systemd/system/story-geth.service > /dev/null <<EOF[Unit]Description=Story Geth ClientAfter=network.target
[Service]User=rootExecStart=/root/go/bin/story-geth --odyssey --syncmode fullRestart=on-failureRestartSec=3LimitNOFILE=4096
[Install]WantedBy=multi-user.targetEOF
- Create Story Service file:
sudo tee /etc/systemd/system/story.service > /dev/null <<EOF[Unit]Description=Story Consensus ClientAfter=network.target
[Service]User=rootExecStart=/root/go/bin/story runRestart=on-failureRestartSec=3LimitNOFILE=4096
[Install]WantedBy=multi-user.targetEOF
- Download Story Snapshot:
cd $HOMErm -f Story_snapshot.lz4aria2c -x 16 -s 16 -k 1M http://filex.auranode.xyz/snapshot/story/story-latest.tar.lz4
can use below too:
cd $HOMErm -f Story_snapshot.lz4aria2c -x 16 -s 16 -k 1M https://story.josephtran.co/Story_snapshot.lz4
- Download Story-Geth Snapshot:
cd $HOMErm -f Story_snapshot.lz4aria2c -x 16 -s 16 -k 1M http://filex.auranode.xyz/snapshot/story/Geth_snapshot.tar.lz4
can use below too:
cd $HOMErm -f Story_snapshot.lz4aria2c -x 16 -s 16 -k 1M https://story.josephtran.co/Geth_snapshot.lz4
- Backup priv_validator_state.json:
cp $HOME/.story/story/data/priv_validator_state.json $HOME/.story/priv_validator_state.json.backup
- Decompress Story snapshot:
sudo mkdir -p $HOME/.story/story/datalz4 -d -c Story_snapshot.lz4 | pv | sudo tar xv -C $HOME/.story/story/ > /dev/null
- Decompress Story-Geth snapshot:
sudo mkdir -p $HOME/.story/geth/odyssey/geth/chaindatalz4 -d -c Geth_snapshot.lz4 | pv | sudo tar xv -C $HOME/.story/geth/odyssey/geth/ > /dev/null
- Restore priv_validator_state.json:
cp $HOME/.story/priv_validator_state.json.backup $HOME/.story/story/data/priv_validator_state.json
- Reload and start story-geth:
sudo systemctl daemon-reload && \sudo systemctl start story-geth && \sudo systemctl enable story-geth && \sudo systemctl status story-geth
- Reload and start story:
sudo systemctl daemon-reload && \sudo systemctl start story && \sudo systemctl enable story && \sudo systemctl status story
- Check logs story-geth:
sudo journalctl -u story-geth -f -o cat
- Check logs story:
sudo journalctl -u story -f -o cat
- Check sync status:
curl localhost:26657/status | jq
- Check block sync left::
while true; do local_height=$(curl -s localhost:26657/status | jq -r '.result.sync_info.latest_block_height'); network_height=$(curl -s https://odyssey.storyrpc.io/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
- Export Validator::
story validator export
story validator export --export-evm-key
- Create Validator::
story validator create --stake 1024000000000000000000 --private-key "your_private_key" --moniker "your_moniker_name"
- Validator Staking::
story validator stake \ --validator-pubkey "VALIDATOR_PUB_KEY_IN_HEX" \ --stake 1024000000000000000000 \ --private-key xxxxxxxxxxxxxx
- Check your Validator on Explorer::
curl -s localhost:26657/status | jq -r '.result.validator_info'
- Delete Node::
sudo systemctl stop story-gethsudo systemctl stop storysudo systemctl disable story-gethsudo systemctl disable storysudo rm /etc/systemd/system/story-geth.servicesudo rm /etc/systemd/system/story.servicesudo systemctl daemon-reloadsudo rm -rf $HOME/.storysudo rm $HOME/go/bin/story-gethsudo rm $HOME/go/bin/story