Skip to main content

Private network subcommands

This reference describes the syntax of the Hyperledger Besu private network command line interface (CLI) subcommands.

danger

This reference contains subcommands that apply to only private networks. For subcommands that apply to both private and public networks, see the public network subcommands reference.

To start a Besu node using subcommands, run:

besu [OPTIONS] [SUBCOMMAND] [SUBCOMMAND OPTIONS]

If using Bash or Z shell, you can view subcommand suggestions by pressing the Tab key twice.

besu Tab+Tab

operator

Provides operator actions.

generate-blockchain-config

Syntax

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

Example

besu operator generate-blockchain-config --config-file=config.json --to=myNetworkFiles

Generates an IBFT 2.0 or QBFT genesis file.

The configuration file has two nested JSON nodes. The first is the genesis property defining the IBFT 2.0 or QBFT genesis file, except for the extraData string. The second is the blockchain property defining the number of key pairs to generate.

rlp

Provides RLP related actions.

encode

Syntax

besu rlp encode [--from=<FILE>] [--to=<FILE>] [--type=<type>]

File example

besu rlp encode --from=ibft_extra_data.json --to=extra_data_for_ibft_genesis.txt --type=IBFT_EXTRA_DATA

Standard input/output example

cat extra_data.json | besu rlp encode > rlp.txt

Encodes the RLP hexadecimal string for use in an IBFT 2.0 or QBFT genesis file. The default type is IBFT_EXTRA_DATA.

Supported types are:

  • IBFT_EXTRA_DATA - The IBFT 2.0 genesis file includes the IBFT_EXTRA_DATA type in the extraData property.

  • QBFT_EXTRA_DATA - The QBFT genesis file includes the QBFT_EXTRA_DATA type in the extraData property.

IBFT 2.0 extra data

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

JSON Schema for IBFT_EXTRA_DATA

Use the following JSON Schema to validate that your JSON data is well formed. To validate your JSON content, use an online validation tool, such as JSON Schema Validator.

{
"$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": [
"be068f726a13c8d46c44be6ce9d275600e1735a4",
"5ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193"
],
"pattern": "^([0-9a-f]{40})$"
}
}

Example IBFT_EXTRA_DATA encoding

JSON input

[
"be068f726a13c8d46c44be6ce9d275600e1735a4",
"5ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193"
]

RLP output

0xf853a00000000000000000000000000000000000000000000000000000000000000000ea94be068f726a13c8d46c44be6ce9d275600e1735a4945ff6f4b66a46a2b2310a6f3a93aaddc0d9a1c193808400000000c0