Running a Neo X Node
This document contains step-by-step instructions for running a geth node in Neo X.
Hardware Requirements
The following are the minimum hardware requirements:
CPU with 2+ cores
4GB RAM
200GB free storage space to sync the Testnet
8 MBit/sec download Internet service
1. Building or Downloading Geth Binary
Build the source
Building geth
requires both a Go (version 1.19 or later) and a C compiler. Feel free to install them with the package manager of your choice.
Once the dependencies are installed, run
or, build the full suite of utilities:
Download the geth binary for linux
You can download the latest geth-linux-amd64
binary from https://github.com/bane-labs/go-ethereum/releases
2. Initializing Geth Database
Download the latest .json configuration file from https://github.com/bane-labs/go-ethereum/tree/bane-main/config.
To create a blockchain node that uses this genesis block, first use geth init to import and set the canonical genesis block for the new chain. This requires the path to the configuration file to be passed as an argument.
--datadir
is the target destination for the node database. Here we use ./nodes/node1
:
Testnet
Mainnet
3. Initializing Node Account
You can create a new account or import an existing account for your node operation. Seed nodes don't need node account.
Create a new account
Create your node account with the following command. A password is required to be entered during the process. The resulting account is placed in the specified --datadir
under the keystore
path.
Import your existing account
Import your existing account with the private key and remember to replace the ./your/privateKey.txt
parameter.
4. Running Seed Node
A seed node is a network member that does not participate in the consensus process. This node can be used to interact with the Neo X network, including: creating accounts, transferring funds, deploying and interacting with contracts, and querying node APIs.
Create the startSeed.sh
file in the same folder of geth
. You may need to change the P2P/HTTP/RPC/WS
ports to avoid conflicts. Please note that the port configuration for the JSON-RPC interface should be set to httpport, not rpcport. Additionally, remember to change extip
to your own IP address if you want other nodes to be able to find yours. You can refer to https://geth.ethereum.org/docs/fundamentals/command-line-options for more details about start options.
This script expects node DB directory to be ./node/node1
.
Testnet:
Mainnet:
Then run
5. Running Miner Node
A miner node participates in the consensus process. If you want to register as a candidate for the consensus list, you need to run a miner node.
Create the startMiner.sh
file in the same folder of geth
. You may need to change the P2P/RPC
ports to avoid conflicts. Additionally, remember to change extip
if you want other nodes to be able to find yours. You can refer to https://geth.ethereum.org/docs/fundamentals/command-line-options for more details about start options.
When the inputing node index is set to 1, this script requires the node address to be placed at nodes/node1/node_address.txt
, the node password to be placed at nodes/node1/password.txt
and the node DB directory to be placed at ./node/node1
.
Testnet:
Mainnet:
Then run
6. Registering as a Candidate
After running a miner node, you can stake 1000 GAS to register as a candidate for the consensus list. If your node receives enough votes (top 7 in GAS), it will become a consensus node, which will mint blocks and share the transaction fee rewards.
Attach the node
Call the Governance contract
Last updated