Updated 2019-10-03

Bootnodes

Bootnodes are used to initially discover peers. A bootnode is a regular node to which nodes connect on startup.

Mainnet and Public Testnets

For mainnet, Rinkeby, Ropsten, and Görli, Hyperledger Besu predefines a list of enode URLs.

Private Networks

In private networks for development or testing purposes, specify one bootnode as described below.

In production networks, configure two or more nodes as bootnodes.

Start node to be specified as bootnode

To start a node to be specified as a bootnode:

  1. Export the public key to a file:

    Example

    besu --genesis-file=privateNetworkGenesis.json --data-path=nodeDataPath public-key export --to=bootnodePubKey
    
    Where privateNetworkGenesis.json and nodeDataPath are changed to the relevant values for your private network.

    The node public key is exported to the bootnodePubKey file.

  2. Start the node specifying the genesis file and data directory.

    Example

    besu --genesis-file=privateNetworkGenesis.json --data-path=nodeDataPath
    

To specify this bootnode for another node, specify the enode URL using the --bootnodes option.

Start subsequent nodes pointing to the bootnode

To start a node specifying the bootnode for P2P discovery:

Example

besu --genesis-file=privateNetworkGenesis.json --data-path=nodeDataPath --bootnodes=enode://c35c3ec90a8a51fd5703594c6303382f3ae6b2ecb99bab2c04b3794f2bc3fc2[email protected]127.0.0.1:30303

The default host and port for P2P peer discovery is 127.0.0.1:30303. Use the --p2p-host and --p2p-port option to specify a host and port.

By default, peer discovery listens on all available network interfaces. If the device that Besu runs on must bind to a specific interface, use the --p2p-interface option to specify the network interface to use.