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.
| Item | Description |
|---|---|
| Milestone blocks | Milestone blocks for the network. |
chainId | Chain ID for the network. |
istanbul | Network uses IBFT or QBFT. This option is being deprecated and will be removed in a future release. Use ibft or qbft instead. |
ibft | Network uses IBFT and contains IBFT configuration items. |
qbft | Network uses QBFT and contains QBFT configuration items. |
clique | Network uses Clique and contains Clique configuration items. |
txnSizeLimit | Maximum transaction size. The default is 64 (kilobytes), increased from Ethereum's default 32. This is configurable up to 128. |
maxCodeSize | Maximum smart contract code size. The default is 32 (kilobytes), increased from Ethereum's default 24. This is configurable up to 128. |
isQuorum | Set to true to enable geth to work as GoQuorum and make additional checks, for example, ensure the gas fee is zero. |
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.
| Item | Description |
|---|---|
coinbase | Address to pay mining rewards to. Can be any value in the genesis block (commonly set to 0x0000000000000000000000000000000000000000). |
gasLimit | Block gas limit. Total gas limit for all transactions in a block. |
nonce | Used in block computation. Can be any value in the genesis block (commonly set to 0x0). |
timestamp | Creation date and time of the block. Must be before the next block so we recommend specifying 0x0 in the genesis file. |
alloc | Defines accounts with balances or contracts. |
Milestone blocks
In public networks, the milestone blocks specify the blocks at which the network changed protocol.
{
"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.
{
"config": {
...
"constantinopleFixBlock": 0,
...
},
}
When specifying the milestone block for private networks, you only need to specify the latest milestone. It is implied this includes the preceding milestones.