Updated 2019-12-02

Static Nodes

Static nodes are a configured set of trusted nodes. Static nodes are exempt from maximum peer and remote connection limits.

Besu attempts to maintain connections with static nodes by periodically initiating a connection to any static node that is not connected.

Tip

Bootnodes and static nodes are parallel methods for finding peers. Depending on your use case, you can use only bootnodes, only static nodes, or both bootnodes and statics nodes. For example, you run multiple nodes on MainNet (discovery via bootnode) but want to ensure your nodes are always connected (using static nodes).

To find peers, configure one or more bootnodes. To configure a specific set of peer connections, use static nodes as described below.

Configure static nodes

To configure a network of static nodes:

  1. List enode URLs of the nodes in the static-nodes.json file.

  2. Save the static-nodes.json file in the data directory of each node.

  3. Start Besu with discovery disabled using --discovery-enabled=false.

To modify the static peers at run time, use the admin_addPeer and admin_removePeer JSON-RPC API methods.

Note

Runtime modifications of static nodes are not persisted between runs. The static-nodes.json file is not updated by admin_addPeer and admin_removePeer methods.

Nodes outside of the static nodes are not prevented from connecting. To prevent nodes from connecting, use Permissioning.

Tip

If the added peer does not appear in the peer list (returned by admin_peers), check the supplied enode URL is correct, the node is running, and the node is listening for TCP connections on the endpoint.

static-nodes.json File

The static-nodes.json file must be located in the data directory (specified by --data-path) and contain a JSON array of enode URLs.

Example

[
"enode://cea71cb65a471037e01508cebcc178f176f9d5267bf29507ea1f6431eb6a5dc67[email protected]127.0.0.1:30303",
"enode://ca05e940488614402705a6b6836288ea902169ecc67a89e1bd5ef94bc0d1933f2[email protected]127.0.0.1:30304"    
]

Note

Each node has a static-nodes.json file. We recommend each node in the network has the same static-nodes.json file.