Updated 2019-12-20



Provides blocks related actions.


besu blocks import --from=<block-file>
besu blocks import --from=/home/me/me_project/mainnet.blocks

Imports blocks from the specified file into the blockchain database.


besu blocks export [--start-block=<LONG>] [--end-block=<LONG>] --to=<block-file>
besu --network=rinkeby --data-path=/home/data/ blocks export --start-block=100 --end-block=300 --to=/home/exportblock.bin

Exports a block, or list of blocks from storage to a file in RLP format.

If --start-block is omitted, the start block defaults to 0 (beginning of the chain), and if --end-block is omitted, the end block defaults to the end of the chain.

If you are not running the command against the default network (MainNet), specify the --network or --genesis-file parameter.


This command provides node public key related actions.


To obtain the public key or address of an existing node, ensure the --data-path or --node-private-key-file option is used with the public-key command. Otherwise, a new node key is silently generated when starting Besu.


besu public-key export [--to=<key-file>]
besu --data-path=<node data path> public-key export
besu --data-path=<node data path> public-key export --to=/home/me/me_project/not_precious_pub_key

Outputs the node public key to standard output or writes it to the specified file if --to=<key-file> is specified.


besu public-key export-address [--to=<address-file>]
besu --data-path=<node data path> public-key export-address
besu --data-path=<node data path> public-key export-address --to=/home/me/me_project/me_node_address

Outputs the node public key address to standard output or writes it to the specified file if
--to=<key-file> is specified.


Provides password related actions.


This command generates the hash of a given password. Include the hash in the credentials file for JSON-RPC API authentication.

besu password hash --password=<my-password>
besu password hash --password=myPassword123


Provides operator actions.


This command generates IBFT 2.0 configuration files.

besu operator generate-blockchain-config --config-file=<FILE> --to=<DIRECTORY> [--genesis-file-name=<FILE>] [--private-key-file-name=<FILE>] [--public-key-file-name=<FILE>]
besu operator generate-blockchain-config --config-file=config.json --to=myNetworkFiles

The configuration file has 2 subnested JSON nodes. The first is the genesis property defining the IBFT 2.0 genesis file except for the extraData string. The second is the blockchain property defining the number of key pairs to generate.


Generates cached log bloom indexes for blocks. APIs use the cached indexes for improved log query performance.


Each index file contains 100000 blocks. The last fragment of blocks less that 100000 are not indexed.

Must be manually executed to add new blocks to the indexes.

The admin_generateLogBloomCache API can be used to generate cached log bloom indexes while the node is running.

besu operator generate-log-bloom-cache [--start-block=<BLOCK_NUMBER>] [--end-block=<BLOCK_NUMBER>]
besu --network=goerli --data-path=/project/goerli operator generate-log-bloom-cache --start-block=0 --end-block=100000


Provides RLP related actions.


This command encodes a typed JSON value from a file or from the standard input into an RLP hexadecimal string.

besu rlp encode [--from=<FILE>] [--to=<FILE>] [--type=<type>]
besu rlp encode --from=ibft_extra_data.json --to=extra_data_for_ibft_genesis.txt --type=IBFT_EXTRA_DATA
cat extra_data.json | besu rlp encode > rlp.txt

The IBFT_EXTRA_DATA type is the only type supported for RLP encoding. This data is included in the IBFT 2.0 genesis file.

IBFT 2.0 Extra Data

To generate the RLP encoded extraData string, specify a JSON input that is array of validator addresses in ascending order.


The following JSON Schema can be used to validate that your JSON data is well formed. You can use an online validation tool such as https://www.jsonschemavalidator.net/ to validate your JSON content.

  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "http://org.hyperledger.besu/cli_rlp_ibft_extra_data.json",
  "type": "array",
  "definitions": {},
  "title": "IBFT extra data",
  "description":"JSON format used as input to generate an IBFT extra data RLP string",
  "items": {
    "$id": "#/address",
    "type": "string",
    "title": "Validator address",
    "description":"The validator node address",
    "default": "",
    "examples": [

Example IBFT_EXTRA_DATA encoding



Runs a Retesteth-compatible server. Retesteth is a developer tool that can generate and run consensus tests against any Ethereum client running such a server.

The command accepts the following command line options:

besu retesteth [--data-path=<PATH>] [--rpc-http-host=<HOST>] [--rpc-http-port=<PORT>] [-l=<LOG VERBOSITY LEVEL>] [--host-whitelist=<hostname>[,<hostname>…]… or * or all]
besu retesteth --data-path=/home/me/me_node --rpc-http-port=8590 --host-whitelist=*