Updated 2019-10-30
Starting Hyperledger Besu
Besu nodes can be used for varying purposes as described in the Overview. Nodes can connect to the Ethereum mainnet, public testnets such as Ropsten, or private networks.
Prerequisites
Local Block Data
When connecting to a network other than the network previously connected to, you must either delete the local block data
or use the --data-path
option to specify a different data directory.
To delete the local block data, delete the database
directory in the besu/build/distribution/besu-<version>
directory.
Genesis Configuration
Besu specifies the genesis configuration, and sets the network ID and bootnodes when connecting to Mainnet, Goerli, Rinkeby, and Ropsten.
When --network=dev
is specified, Besu uses the
development mode genesis configuration with a fixed low difficulty.
A node started with --network=dev
has an empty bootnodes list by default.
The genesis files defining the genesis configurations are in the Besu source files.
To define a genesis configuration, create a genesis file (for example, genesis.json
) and specify the file
using the --genesis-file
option.
Confirm Node is Running
If you have started Besu with the --rpc-http-enabled
option, use cURL to
call JSON-RPC API methods to confirm the node is running.
Example
-
eth_chainId
returns the chain ID of the network.curl -X POST --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' localhost:8545
-
eth_syncing
returns the starting, current, and highest block.curl -X POST --data '{"jsonrpc":"2.0","method":"eth_syncing","params":[],"id":1}' localhost:8545
For example, after connecting to mainnet
eth_syncing
will return something similar to:{ "jsonrpc" : "2.0", "id" : 1, "result" : { "startingBlock" : "0x0", "currentBlock" : "0x2d0", "highestBlock" : "0x66c0" } }
Run a Node for Testing
To run a node that mines blocks at a rate suitable for testing purposes:
besu --network=dev --miner-enabled --miner-coinbase=0xfe3b557e8fb62b89f4916b721be55ceb828dbd73 --rpc-http-cors-origins="all" --host-whitelist="*" --rpc-ws-enabled --rpc-http-enabled --data-path=/tmp/tmpDatdir
Alternatively, use the following configuration file on the command line to start a node with the same options as above:
network="dev" miner-enabled=true miner-coinbase="0xfe3b557e8fb62b89f4916b721be55ceb828dbd73" rpc-http-cors-origins=["all"] host-whitelist=["*"] rpc-ws-enabled=true rpc-http-enabled=true data-path="/tmp/tmpdata-path"
Run a Node on Ropsten Testnet
To run a node on Ropsten:
besu --network=ropsten
To run a node on Ropsten with the HTTP JSON-RPC service enabled and allow Remix to access the node:
besu --network=ropsten --rpc-http-enabled --rpc-http-cors-origins "http://remix.ethereum.org"
Run a Node on Rinkeby Testnet
To run a node on Rinkeby specifying a data directory:
besu --network=rinkeby --data-path=<path>/<rinkebydata-path>
<path>
and <rinkebydata-path>
are the path and directory where the Rinkeby chain data is to be saved.
Run a Node on Goerli Testnet
To run a node on Goerli specifying a data directory:
besu --network=goerli --data-path=<path>/<goerlidata-path>
Where <path>
and <goerlidata-path>
are the path and directory where the Goerli chain data is to be saved.
Run a Node on Ethereum Mainnet
To run a node on the Ethereum mainnet:
besu
To run a node on mainnet with the HTTP JSON-RPC service enabled and available for localhost only:
besu --rpc-http-enabled