Skip to main content

Genesis File

The genesis file defines the initial state and configuration of a blockchain network. It's the starting point for all nodes and must be identical across the network.

Overview

Every KalyChain node requires access to the genesis file to:

  • Initialize the blockchain with the correct chain ID and configuration.
  • Configure the consensus mechanism (QBFT) parameters.
  • Set initial account balances and contract deployments.
  • Ensure compatibility with other nodes on the network.
Store Under Version Control

We recommend storing the genesis file in source control to ensure all nodes use the identical configuration and to track any network upgrades.

KalyChain Genesis

The official KalyChain genesis file (chain ID 3890, native token KMT):

{
"config": {
"chainId": 3890,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"londonBlock": 0,
"shanghaiBlock": 0,
"cancunBlock": 0,
"pragueBlock": 0,
"qbft": {
"blockperiodseconds": 2,
"epochlength": 28800,
"requesttimeoutseconds": 4,
"blockreward": "30000000000000000",
"miningbeneficiary": "0xaE51f2EfE70e57b994BE8F7f97C4dC824c51802a",
"baseFeePerGas": "0x834"
},
"transitions": {
"qbft": [
{
"block": 5100,
"miningbeneficiary": "0x82eeCEcF8C3bbD94A3A11Abe04Ce3F49BbA35E52"
}
]
}
},
"nonce": "0x0",
"timestamp": "0x0",
"gasLimit": "0x1fffffffffffff",
"difficulty": "0x1",
"mixHash": "0x63746963616c2062797a616e74696e65206661756c7420746f6c6572616e6365",
"coinbase": "0x0000000000000000000000000000000000000000",
"alloc": {
"0xaE51f2EfE70e57b994BE8F7f97C4dC824c51802a": {
"balance": "36000000000000000000000000"
}
},
"extraData": "0xf87aa00000000000000000000000000000000000000000000000000000000000000000f854947fa47fed34dd63bd76060a5dd63ef3c2b5b23de0942f5e068935deb3eb2c8210b7dfc8d9c96806c68f942aac52c8405a80b20944ae92c85c477412b4a6ed94c5d01f2fa32d12f5b25cb395a557cd74c86241a5c080c0"
}

Genesis State

ParameterValueDescription
nonce0x0Arbitrary value (0 for PoA)
timestamp0x0Unix timestamp of block 0
gasLimit0x1fffffffffffffMaximum gas per block
difficulty0x1Mining difficulty (minimal for PoA)

Genesis Allocation

The genesis allocates the full 36,000,000 KMT supply to a single deployer address, from which it is distributed per the network's token allocation. No other account holds a genesis balance.

Block Reward

KalyChain pays a flat block reward with no halving schedule.

ParameterValue
Block reward30000000000000000 wei (0.03 KMT)
ScheduleFlat — the reward does not decay
Block period2 seconds

Reward beneficiary transition

The genesis contains one QBFT transition, at block 5,100. It does not change the reward — it redirects where the reward is paid:

BlockMining beneficiaryMeaning
00xaE51f2EfE70e57b994BE8F7f97C4dC824c51802aDeployer, during network bring-up
5,1000x82eeCEcF8C3bbD94A3A11Abe04Ce3F49BbA35E52Vault RewardsPool contract

From block 5,100 onward every block reward accrues to the RewardsPool, which distributes it to vault holders. No reward is paid to individual validators.

Extra Data

The extraData field encodes the initial validator set:

  • 32 bytes vanity data — Arbitrary identifier
  • Validator addresses — Initial block producers
  • Round information — Set to 0 for genesis
  • Seal list — Empty for genesis block

Using the Genesis File

Specify the genesis file when starting a node:

kaly --genesis-file=/path/to/genesis.json --data-path=/var/kaly/data
Network Consistency

All nodes on the same network must use identical genesis files. Mismatched genesis configurations will prevent nodes from syncing with the network.

Download

The node-install repository still serves the retired chain

raw.githubusercontent.com/KalyCoinProject/node-install/.../genesis.json still returns the old chain ID 3888 genesis. Do not use it — a node started with it will not join KalyChain. Copy the JSON from KalyChain Genesis above until that repository is updated.

Further Reading