How to Run a Core Fullnode
A Core fullnode stores the full blockchain history on a hard disk. Everyone can verify the state of every account using a fullnode. A Core fullnode can be a normal fullnode for private use. Or it can be a validator on the CORE blockchain or a node to provide RPC service to others. A validator validates new blocks and transactions in Core's Satoshi Plus consensus, and an RPC node can answer requests from the network.
At the moment, a Core fullnode can run on
Mac OS X
and Linux
.A CORE fullnode needs to store blockchain data, verify blocks/transactions, communicate with peer nodes, and answer network requests.
Based on their specific usage, we roughly divide Core fullnode into the following three types, each of which has specific hardware requirements.
For TestNet, we recommend below as the minimal hardware specs for each type of nodes
Normal node
- 1 TB of free disk space
- 4 cores of CPU and 8 gigabytes of memory (RAM)
- A broadband Internet connection with upload/download speeds of 5 megabytes per second
Validator node
- 1 TB of free disk space, solid-state drive(SSD), gp3, 8k IOPS, 250MB/S throughput, read latency <1ms
- 4 cores of CPU and 8 gigabytes of memory (RAM)
- A broadband Internet connection with upload/download speeds of 10 megabytes per second
RPC Node
- 1 TB of free disk space, solid-state drive(SSD), gp3, 8k IOPS, 250MB/S throughput, read latency <1ms
- 8 cores of CPU and 16 gigabytes of memory (RAM)
- A broadband Internet connection with upload/download speeds of 50 megabytes per second
And for MainNet, we recommend below as the minimal hardware specs for each type of nodes
Normal node
- 1 TB of free disk space
- 4 cores of CPU and 16 gigabytes of memory (RAM)
- A broadband Internet connection with upload/download speeds of 5 megabytes per second
Validator node
- 1 TB of free disk space, solid-state drive(SSD), gp3, 8k IOPS, 250MB/S throughput, read latency <1ms
- 4 cores of CPU and 16 gigabytes of memory (RAM)
- A broadband Internet connection with upload/download speeds of 10 megabytes per second
RPC Node
- 1 TB of free disk space, solid-state drive(SSD), gp3, 8k IOPS, 250MB/S throughput, read latency <1ms
- 8 cores of CPU and 32 gigabytes of memory (RAM)
- A broadband Internet connection with upload/download speeds of 50 megabytes per second
If you are running an RPC node, you need to enable inbound rules
HTTP on port 8575
in the firewall settings. Port 8575 is set to default. You can change the configurations in config.toml
.1. The most recommended way is to build and run a fullnode from our blockchain codebase directly. You can see full instructions in the chain code repository: https://github.com/coredao-org/core-chain.
2. You can download node binary files with config files for both MainNet and TestNet at the release folder of the chain repository. The latest version is v1.0.1.
3. Write genesis state locally
geth --datadir node init genesis.json
You could see the following output:
INFO [07-18|14:57:20.715] Maximum peer count ETH=25 LES=0 total=25
INFO [07-18|14:57:20.721] Allocated cache and file handles database=/Users/jackcrypto/go/core-chain/node/geth/chaindata cache=16 handles=16
INFO [07-18|14:57:20.724] Writing custom genesis block
INFO [07-18|14:57:20.725] Persisted trie from memory database nodes=25 size=87.18kB time=226.129µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [07-18|14:57:20.725] Successfully wrote genesis state database=chaindata hash=d90508…5c034a
INFO [07-18|14:57:20.725] Allocated cache and file handles database=/Users/jackcrypto/go/core-chain/node/geth/lightchaindata cache=16 handles=16
INFO [07-18|14:57:20.729] Writing custom genesis block
INFO [07-18|14:57:20.729] Persisted trie from memory database nodes=25 size=87.18kB time=178.332µs gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B
INFO [07-18|14:57:20.730] Successfully wrote genesis state database=lightchaindata hash=d90508 …5c034a
4. Run the fullnode
If you are running a validator node, you need to setup the consensus key before running the node. Make sure to keep your keystore save!
## generate the consensus key and input the password
geth account new --datadir ./node
echo {your-password} > password.txt
## start a validator node
geth --config ./config.toml --datadir ./node -unlock {your-validator-address} --password password.txt --mine --allow-insecure-unlock --cache 8000
If you are running a normal/RPC node, run the following geth command directly.
## start a full node
geth --config ./config.toml --datadir ./node --cache 8000
4. Monitor node status
you can monitor the log from
/node/logs/core.log
by default.