# Story (Mainnet) - Mandragora's infrastructure services Previous iterations: Iliad testnet, Odyssey testnet (round 1 and 2), and now Public Mainnet. Chain ID: (EVM: `1514` / Cosmos: `story-1`) ### RPC endpoint (archive) ``` https://story-rpc.mandragora.io ``` ### REST API endpoint (archive) ``` https://story-api.mandragora.io ``` ### JSON-RPC (EVM) endpoint (archive) ``` https://story-mainnet-evmrpc.mandragora.io ``` ### WSS (Cosmos) endpoint ``` wss://story-rpc.mandragora.io/websocket ``` ### WSS (EVM) endpoint ``` wss://story-mainnet-evmwss.mandragora.io ``` ### Seed node ``` tobeadded ``` ### Persistent peer/s ``` 9d56213f3e278ee8c0aae5aab4aee670ad833f03@story-peer.mandragora.io:26656 ``` ### Geth enode ``` enode://5436bddc7cdfc887ae3c629321b9a05edb6ace4720d05453921c72b8df0360e581502cf04e16cc5cb38c04c2689d3ee2a97487d582d2e6e1261be53ed2068b9c@story-geth.mandragora.io:30303 ``` ## Add peers ``` PEERS=$(curl -sS https://story-rpc.mandragora.io/net_info | jq -r '.result.peers[] | "\(.node_info.id)@\(.remote_ip):\(.node_info.listen_addr)"' | awk -F ':' '{print $1":"$(NF)}' | paste -sd, -) sed -i.bak -e "s/^persistent_peers *=.*/persistent_peers = \"$PEERS\"/" $HOME/.story/story/config/config.toml sudo systemctl restart story ``` ## Add seeds ``` SEEDS=tobeadded sed -i.bak -e "s/^seeds *=.*/seeds = \"$SEEDS\"/" $HOME/.story/story/config/config.toml sudo systemctl restart story ``` ## Add addrbook ``` sudo systemctl stop story wget -O $HOME/.story/story/config/addrbook.json https://snapshots.mandragora.io/addrbook.json sudo systemctl start story ``` ## Add Geth enode Is your Geth binary named `geth` or `story-geth`? Change it accordingly if that's the case. Meanwhile, `story-geth` will remain as default. ``` story-geth --exec 'admin.addPeer("enode://5436bddc7cdfc887ae3c629321b9a05edb6ace4720d05453921c72b8df0360e581502cf04e16cc5cb38c04c2689d3ee2a97487d582d2e6e1261be53ed2068b9c@story-geth.mandragora.io:30303")' attach ~/.story/geth/story/geth.ipc sudo systemctl restart story-geth ``` ## Apply Mandragora archival snapshot (geth+story) Check out the snapshot's timestamp (UTC), block height, geth and story sizes, and geth and story versions: https://snapshots.mandragora.io/info.json This is an archival snapshot with tx indexing on. Updated every 4h. ``` # Install required dependencies sudo apt-get install wget lz4 -y # Stop your story-geth and story nodes sudo systemctl stop story-geth sudo systemctl stop story # Back up your validator state sudo cp $HOME/.story/story/data/priv_validator_state.json $HOME/.story/priv_validator_state.json.backup # Delete previous geth chaindata and story data folders sudo rm -rf $HOME/.story/geth/story/geth/chaindata sudo rm -rf $HOME/.story/story/data # Download story-geth and story snapshots wget -O geth_snapshot.lz4 https://snapshots.mandragora.io/geth_snapshot.lz4 wget -O story_snapshot.lz4 https://snapshots.mandragora.io/story_snapshot.lz4 # Decompress story-geth and story snapshots lz4 -c -d geth_snapshot.lz4 | tar -xv -C $HOME/.story/geth/story/geth lz4 -c -d story_snapshot.lz4 | tar -xv -C $HOME/.story/story # Delete downloaded story-geth and story snapshots sudo rm -v geth_snapshot.lz4 sudo rm -v story_snapshot.lz4 # Restore your validator state sudo cp $HOME/.story/priv_validator_state.json.backup $HOME/.story/story/data/priv_validator_state.json # Start your story-geth and story nodes sudo systemctl start story-geth sudo systemctl start story ``` ## Apply Mandragora pruned snapshot (geth+story) Check out the snapshot's timestamp (UTC), block height, geth and story sizes, and geth and story versions: https://snapshots2.mandragora.io/story/info.json This is a pruned snapshot with tx indexing disabled. Updated every 4 hours. ``` # Install required dependencies sudo apt-get install wget lz4 -y # Stop your story-geth and story nodes sudo systemctl stop story-geth sudo systemctl stop story # Back up your validator state sudo cp $HOME/.story/story/data/priv_validator_state.json $HOME/.story/priv_validator_state.json.backup # Delete previous geth chaindata and story data folders sudo rm -rf $HOME/.story/geth/story/geth/chaindata sudo rm -rf $HOME/.story/story/data # Download story-geth and story snapshots wget -O geth_snapshot.lz4 https://snapshots2.mandragora.io/story/geth_snapshot.lz4 wget -O story_snapshot.lz4 https://snapshots2.mandragora.io/story/story_snapshot.lz4 # Decompress story-geth and story snapshots lz4 -c -d geth_snapshot.lz4 | tar -xv -C $HOME/.story/geth/story/geth lz4 -c -d story_snapshot.lz4 | tar -xv -C $HOME/.story/story # Delete downloaded story-geth and story snapshots sudo rm -v geth_snapshot.lz4 sudo rm -v story_snapshot.lz4 # Restore your validator state sudo cp $HOME/.story/priv_validator_state.json.backup $HOME/.story/story/data/priv_validator_state.json # Start your story-geth and story nodes sudo systemctl start story-geth sudo systemctl start story ``` # Other meaningful contributions ## GitHub issues opened by Mandragora - https://github.com/piplabs/story/issues/80 - this issue lead to unjail command addition on v0.11.0, PR merged: https://github.com/piplabs/story/pull/170 - https://github.com/piplabs/story/issues/90 - https://github.com/piplabs/story/issues/91 - https://github.com/piplabs/story/issues/138 - both issues stated in the report are now solved, refer to https://github.com/piplabs/story/issues/138#issuecomment-2686321501 ## Lost my validator (tool) :key: **Have you lost your `priv_validator_key.json` file and want to recover your validator?** We have created a tool so as to recreate the file. Fortunately, Story Protocol's design allows this to be done in case one keeps its validator account private key but not its `priv_validator_key.json` file. :bangbang: Note that you will need at least to identify your validator in an explorer to proceed and get success. :zap: **One-liner** ``` bash <(curl -s https://raw.githubusercontent.com/McDaan/general/refs/heads/main/story/lostmyvalidator.sh) ``` :eyes: You can check out bash code here https://github.com/McDaan/general/blob/main/story/lostmyvalidator.sh ![lostmyvalidator](https://hackmd.io/_uploads/H1qfO2EJJx.gif) ## Public JSON-RPC (EVM) available on Chainlist We have added our public JSON-RPC endpoint to Chainlist through this/these PR... `Iliad`: https://github.com/DefiLlama/chainlist/pull/1259 `Odyssey`: https://github.com/DefiLlama/chainlist/pull/1346 `Odyssey-migration-before-mainnet`: https://github.com/DefiLlama/chainlist/pull/1477 `Mainnet`: https://github.com/DefiLlama/chainlist/pull/1549 `Mainnet`: https://github.com/DefiLlama/chainlist/pull/1586 Feel free to use it ✌️ https://chainlist.org/?testnets=true&search=story ## Node distribution across different continents beyond Europe We wanted to contribute to nodes distribution across different regions at Odyssey testnet, and we have now peers available in three continents more: Africa, Asia and Oceana. - [**Africa (Johannesburg, South Africa)**] - [**Asia (Delhi, India)**] - [**Asia (Singapore)**] - [**Oceania (Sydney, Australia)**] We just opened a PR to add them into the OriginStake's repository so as to be displayed in their infrastructure dashboard: https://github.com/OriginStake/story-infrastructure/pull/3