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.