Skip to main content

Genesis file items

The GoQuorum genesis file contains network configuration items and genesis block parameters.

Configuration items

Network configuration items are specified in the genesis file in the config object.

ItemDescription
Milestone blocksMilestone blocks for the network.
chainIdChain ID for the network.
istanbulNetwork uses IBFT or QBFT. This option is being deprecated and will be removed in a future release. Use ibft or qbft instead.
ibftNetwork uses IBFT and contains IBFT configuration items.
qbftNetwork uses QBFT and contains QBFT configuration items.
cliqueNetwork uses Clique and contains Clique configuration items.
txnSizeLimitMaximum transaction size. The default is 64 (kilobytes), increased from Ethereum's default 32. This is configurable up to 128.
maxCodeSizeMaximum smart contract code size. The default is 32 (kilobytes), increased from Ethereum's default 24. This is configurable up to 128.
isQuorumSet to true to enable geth to work as GoQuorum and make additional checks, for example, ensure the gas fee is zero.
note

Using the Raft consensus protocol doesn't require a specific item in the config object.

Genesis block parameters

The purpose of some genesis block parameters varies depending on the consensus protocol (IBFT, QBFT, Raft, or Clique). These parameters include:

  • difficulty.
  • extraData.
  • mixHash.

The following table describes the genesis block parameters with the same purpose across all consensus protocols.

ItemDescription
coinbaseAddress to pay mining rewards to. Can be any value in the genesis block (commonly set to 0x0000000000000000000000000000000000000000).
gasLimitBlock gas limit. Total gas limit for all transactions in a block.
nonceUsed in block computation. Can be any value in the genesis block (commonly set to 0x0).
timestampCreation date and time of the block. Must be before the next block so we recommend specifying 0x0 in the genesis file.
allocDefines accounts with balances or contracts.

Milestone blocks

In public networks, the milestone blocks specify the blocks at which the network changed protocol.

Ethereum Mainnet milestone blocks
{
"config": {
...
"homesteadBlock": 1150000,
"daoForkBlock": 1920000,
"daoForkSupport": true,
"eip150Block": 2463000,
"eip150Hash": "0x2086799aeebeae135c246c65021c82b4e15a2c451340993aacfd2751886514f0",
"eip155Block": 2675000,
"eip158Block": 2675000,
"byzantiumBlock": 4370000,
"constantinopleBlock": 7280000,
"constantinopleFixBlock": 7280000,
...
},
}

In private networks, the milestone block defines the protocol version for the network.

Private network milestone blocks
{
"config": {
...
"constantinopleFixBlock": 0,
...
},
}
note

When specifying the milestone block for private networks, you only need to specify the latest milestone. It is implied this includes the preceding milestones.