Links

Genesis JSON

This page describes the details of genesis.json file.

Genesis JSON File Structure

The genesis.json file structure is described in the following table.
Field Name
Description
config
The blokchain configuration. See the section Config.
nonce
(deprecated) This field is derived from the Ethereum, but not used in Klaytn.
timestamp
The unix time when a block is created.
extraData
The data combined field for signer vanity and RLP-encoded istanbul extra data that contains validator list, proposer seal, and commit seals.
gasLimit
The maximum gas amount that used in a block.
difficulty
(deprecated) This field is derived from the Ethereum, but not used in Klaytn.
mixhash
(deprecated) This field is derived from the Ethereum, but not used in Klaytn.
coinbase
An address to which miner receives the reward. This field is only used for Clique consensus engine.
alloc
The predefined accounts.
number
The block number field.
gasUsed
The amount of the gas which used for a block.
parentHash
The hash value of the previous block.

Config

The config field stores the information related to the chain.
Field Name
Description
chainId
It identifies the current chain and is used for prevention from the replay attack.
istanbulCompatibleBlock
A block number to which istanbul change is applied.
istanbul, clique
The type of consensus engine.
unitPrice
Unit price.
deriveShaImpl
Defines a method to generate transaction hash and receipt hash.
governance
Governance information of the network. See the section Governance

extraData

The field extraData is a concatenation of the proposer vanity and the RLP-encoded istanbul extra data:
  • The proposer vanity is 32-byte data which contains arbitrary proposer vanity data.
  • The rest of the data is RLP-encoded istanbul extra data containing:
    • Validators: the list of validators in ascending order.
    • Seal: the proposer signature of the header. For genesis.json, it is a byte array initialized with 65 0x0.
    • CommittedSeal: the list of commitment signature seals as consensus proof. For genesis.json, it is an empty array.
Example
Field
Type
Value
Vanity
32-byte hex string
0x0000000000000000000000000000000000000000000000000000000000000000
Validators
[]address
[0x48009b4e20ec72aadf306577cbe2eaf54b0ebb16,0x089fcc42fd83baeee4831319375413b8bae3aceb]
Seal
byte array of 65 elements
[0x0,...,0x0]
CommittedSeal
[][]byte
[]
extraData with the above data is created by
concat('0x',Vanity,RLPEncode({Validators,Seal,CommittedSeal}))
where concat is a string concatenation function, and RLPEncode is a function to convert a given structure to an RLP-encoded string.
With this function, the output extraData for this example is 0x0000000000000000000000000000000000000000000000000000000000000000f86fea9448009b4e20ec72aadf306577cbe2eaf54b0ebb1694089fcc42fd83baeee4831319375413b8bae3acebb8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0.

Consensus Engine

The available consensus engines for Klaytn network are Clique and Istanbul. Each engine is explained as follows.

Clique

The clique field stores the configuration for Proof-Of-Authority (POA) based sealing.
Fields
Description
period
The minimum time interval between the consecutive blocks (unit: second).
epoch
The number of blocks to reset votes and marked as a checkpoint.

Istanbul

The istanbul field stores the configuration for Istanbul based sealing.
Fields
Description
epoch
The number of blocks to reset votes to be a checkpoint.
policy
The block proposer selection policy. [0: Round Robin, 1: Sticky, 2: Weighted Random]
sub
Committee size.

Governance

The governance field stores governance information for a network.
Fields
Description
governanceMode
One of three governance modes. [none, single, ballot]
governingNode
Designated governing node's address. It only works if the governance mode is single.
reward
It stores the reward configuration. See the section Reward.

Reward

The reward field stores the information about the network's token economy.
Fields
Description
mintingAmount
Amount of peb minted when a block is generated. Double quotation marks are needed for a value.
ratio
Distribution rate for a CN/KIR/PoC separated by /. The sum of all values has to be 100.
useGiniCoeff
Use GINI coefficient or not.
deferredTxFee
A way to distribute TX fee for a block.
stakingUpdateInterval
Time interval in block height to update staking information.
proposerUpdateInterval
Time interval in block height to update proposer information.
minimumStake
Minimum amount of peb to join Core Cell Operators.

Example

{
"config": {
"chainId": 2019,
"istanbulCompatibleBlock": 0,
"istanbul": {
"epoch": 604800,
"policy": 2,
"sub": 13
},
"unitPrice": 25000000000,
"deriveShaImpl": 2,
"governance": {
"governingNode": "0x46b0bd6380005952759f605d02a6365552c776f3",
"governanceMode": "single",
"reward": {
"mintingAmount": 6400000000000000000,
"ratio": "50/40/10",
"useGiniCoeff": true,
"deferredTxFee": true,
"stakingUpdateInterval": 86400,
"proposerUpdateInterval": 3600,
"minimumStake": 5000000
}
}
},
"nonce": "0x0",
"timestamp": "0x5c9af60e",
"extraData": "0x0000000000000000000000000000000000000000000000000000000000000000f89af85494aeae0ab623d4118ac62a2decc386949b5ce67ce29446b0bd6380005952759f605d02a6365552c776f394699b607851c878e29499672f42a769b71f74be8e94e67598eb5831164574c876994d53f63eab4f36d7b8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0",
"gasLimit": "0xe8d4a50fff",
"difficulty": "0x1",
"mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"0000000000000000000000000000000000000400": {
"code": "0x6080604052600436106101505763ffffffff60e00a165627a7a7230582093756fe617053766b158f7c64998c746eb38f0d5431cc50231cc9fb2cd1fd9950029",
"balance": "0x0"
},
"46b0bd6380005952759f605d02a6365552c776f3": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
},
"699b607851c878e29499672f42a769b71f74be8e": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
},
"aeae0ab623d4118ac62a2decc386949b5ce67ce2": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
},
"e67598eb5831164574c876994d53f63eab4f36d7": {
"balance": "0x446c3b15f9926687d2c40534fdb564000000000000"
}
},
"number": "0x0",
"gasUsed": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
}