EOSIO Node
We are going to use what's known as a SHIP
node. This node will expose the state history web socket to monitor on chain activity and it will not produce blocks.
For nodeos's documentation head over to b1's dev docs here
If you prefer Kubernetes, checkout our dapp dsp k8s repo: https://github.com/liquidapps-io/dapp-dsp-k8s
Minimum requirements for nodeos:
7GB of RAM - Github Link
5GB of DISK - Github Link
Though you will want more than this to run a testnet nodeos instance, and significantly more to handle the EOS mainnet or other mainnets.
Chain resource analysis for Mainnet/Kylin: https://docs.dfuse.io/eosio/admin-guide/system-requirements/
This may also provide some context for resource requirements: https://github.com/EOSChronicleProject/chronicle-tutorial/blob/master/01_nodeos_server_setup.md
Prerequisites
jq
wget
curl
Get EOSIO binary
Ubuntu 22.04
Ubuntu 20.04
Ubuntu 18.04
Nodeos is now only available for Ubuntu, if you want to run docker you can build the Dockerfile here or use natpdev/cdt-leap
Install
Prepare Directories
Snapshots
If you would like an up to date snapshot, please visit: snapshots.eosnation.io and find the latest snapshot for the chain you are using. You will want to unpack the file and store it here with the following file name: $HOME/.local/share/eosio/nodeos/data/snapshots/boot.bin
.
To unzip
Kylin
Jungle
You can find more Jungle peers here: https://monitor.jungletestnet.io/#p2p
Mainnet
Configuration
Please note that it is crucial that all of the following configuration flags are set. If any are missing, it will likely cause issues with running the DSP software.
If you would like to run Firehose be sure to comment in the flag below
Firehose is a service provided through the deep mind option that enables the DSP to listen for very specific information from the blockchain. This service also requires running a few more services detailed in the Firehose Setup section.
The state history plugin provides the entire current state of the blockchain through a web socket connection which is not ideal as the DSP does not care about the overwhelming majority of the information it is being fed.
If your node isn't syncing, comment out the other peers and just put p2p-peer-address = kylin.seed.eosnation.io:9876 assuming a kylin install
Please note the following about some config.ini
settings:
read-mode = head
(default is:read-more = speculative
and does not need to be specified in theconfig.ini
) must not be used to prevent duplicatexwarmup
actions | read more about read modes hereif supporting the Hyperion API https://github.com/eosrio/Hyperion-History-API, must add the
chain-state-history = true
, note this will significantly increase storage requirementsit is recommended to whitelist all staked contracts for subjective CPU billing so that assertion errors from services do not consumer CPU time, add for each contract
or add
disable-subjective-billing = true
to disable all subjective billingregarding
http-threads
,net-threads
,chain-threads
andeos-vm-oc-compile-threads
read Kevin's thoughts here https://t.me/c/1139062279/312621
Run
First run (from snapshot)
You will know that the node is fully synced once you see blocks being produced every half second at the head block. You can match the block number you are seeing in the nodeos logs to what bloks.io is indicating as the head block on the chain you are syncing (mainnet, Kylin etc). Once you have confirmed that it is synced press CTRL+C
once, wait for the node to shutdown and proceed to the next step.
systemd
Firehose
If you would like to run Firehose, continue to this section.
Optimizations
Last updated