Full Node
Guide to setting up a Story node for mainnet
This section will guide you through how to setup a Story node for mainnet. Story draws inspiration from ETH PoS in decoupling execution and consensus clients. The execution client story-geth
relays EVM blocks into the story
consensus client via Engine API, using an ABCI++ adapter to make EVM state compatible with that of CometBFT. With this architecture, consensus efficiency is no longer bottlenecked by execution transaction throughput.
The story
and geth
binaries, which make up the clients required for running Story nodes, are available from our latest release
pages:
story-geth
execution client:- Release Link: Click here
- Latest Stable Binary (v1.0.2): Click here
story
consensus client:- Releases link: Click here
- Latest Stable Binary (v1.1.1): Click here
Story Node Installation Guide
Pre-Installation Checklist
- Verify system meets hardware requirements
- Operating system: Ubuntu 22.04 LTS
- Required ports are available
- Sufficient disk space available
- Root or sudo access
Quick Reference
- Installation time: ~30 minutes
- Network: Story Mainnet or Story Aeneid Testnet
- Required versions:
- Check Latest Release
1. System Preparation
1.1 System Requirements
For optimal performance and reliability, we recommend running your node on either:
- A Virtual Private Server (VPS)
- A dedicated Linux-based machine
System Specs
Hardware | Minimal Requirement |
---|---|
CPU | Dedicated 8 Cores |
RAM | 32 GB |
Disk | 500 GB NVMe Drive |
Bandwidth | 25 MBit/s |
1.2 Required Ports
Ensure all ports needed for your node functionality are needed, described below
story-geth
- 8545
- Required if you want your node to interface via JSON-RPC API over HTTP
- 8546
- Required for websockets interaction
- 30303 (TCP + API)
- MUST be open for p2p communication
- 8545
story
- 26656
- MUST be open for consensus p2p communication
- 26657
- Required if you want your node interfacing for Tendermint RPC
- 26660
- Needed if you want to expose prometheus metrics
- 26656
1.3 Install Dependencies
1.4 Install Go
For Odyssey, we need to install Go 1.22.0
2. Story Node Installation
2.1 Install Story-Geth
- Download and setup binary
You will see the version of the geth binary.
(Mac OS X only) The OS X binaries have yet to be signed by our build process, so you may need to unquarantine them manually:
- Configure and start service
2.2 Install Story Consensus Client
Cosmovisor installation
For updating the story client, we recommend using Cosmovisor.
- Install Cosmovisor
- Configure Cosmovisor
Install Story Client
You should expect to see version 1.0.0-stable
(Mac OS X Only) The OS X binaries have yet to be signed by our build process, so you may need to unquarantine them manually:
Init Story with Cosmovisor
Custom Configuration
To override your own node settings, you can do the following:
${STORY_DATA_ROOT}/config/config.toml
can be modified to change network and consensus settings${STORY_DATA_ROOT}/config/story.toml
to update various client configs${STORY_DATA_ROOT}/priv_validator_key.json
is a sensitive file containing your validator key, but may be replaced with your own
Custom Automation
Below we list a sample Systemd
configuration you may use on Linux
Start the service
Debugging
If you would like to check the status of story
while it is running, it is helpful to query its internal JSONRPC/HTTP endpoint. Here are a few helpful commands to run:
curl localhost:26657/net_info | jq '.result.peers[].node_info.moniker'
- This will give you a list of consesus peers the node is sync’d with by moniker
curl localhost:26657/health
- This will let you know if the node is healthy -
{}
indicates it is
- This will let you know if the node is healthy -
3. Verify Installation
3.1 Check Geth Status
3.2 Check Consensus Client
Clean status
If you ever run into issues and would like to try joining the network from a cleared state, run the following:
Geth
Mac OS X: rm -rf ~/Library/Story/geth/* && ./geth --story --syncmode full
Linux: rm -rf ~/.story/geth/* && ./geth --story --syncmode full
Story
Mac OS X: rm -rf ~/Library/Story/story/* && ./story init --network story && ./story run
Linux: rm -rf ~/.story/story/* && ./story init --network story && ./story run