35. Genesis Configuration
The Genesis configuration defines the initial state of the blockchain, hardcoding initial token balances, validator sets, and governance parameters.
35.1 Creating a Genesis File
The official Python utility ops/make-genesis.py generates deterministic genesis JSON files:
python3 ops/make-genesis.py \ --chain-id 72511 \ --initial-supply 10000000000 \ --validators validators.json \ --out genesis.json
35.2 Allocations & Initial Balances
The genesis configuration deterministic JSON document establishes the initial token distribution of the 10 Billion native DNR supply across the network's foundational accounts. Allocations are segregated into four defined buckets: Ecosystem & Community Reserve (40%, 4,000,000,000 DNR), Governance Treasury (25%, 2,500,000,000 DNR), Foundation Reserve (20%, 2,000,000,000 DNR), and Core Development & Contributors (15%, 1,500,000,000 DNR).
Each account entry in the genesis allocations array declares its 20-byte address, initial liquid balance in wei (10^18 wei = 1 DNR), and optional timelocked vesting contract parameters referencing KortanaVesting.sol. During genesis initialization, the state engine computes the initial Merkle-Patricia Trie root hash by inserting each account record sequentially, validating that the mathematical sum of all account balances strictly matches the 10B DNR supply conservation invariant.
35.3 Validator Set Specification
The genesis specification hardcodes the initial bootstrap validator set required to start block production and Byzantine Fault Tolerant consensus. Each genesis validator entry specifies the operator's account address, bonded self-stake amount, commission rate (in basis points), and uncompressed 48-byte BLS12-381 consensus public key.
The genesis builder calculates initial voting weights proportional to bonded stake, assigns the starting slot leader rotation schedule, and embeds the validator set directly into the validators column family. To maintain fault tolerance from the very first block, the validator set configuration enforces the rule that no single entity may control more than 33% of initial voting weight.
35.4 ParamStore Genesis Initialization
Genesis state initialization establishes the baseline network constants committed to the on-chain ParamStore system contract (0x0000000000000000000000000000000000000102). These initial parameters govern the core economic and consensus rules for the network prior to any subsequent governance adjustments.
The default genesis parameter table sets min_gas_price = 1000000000 (1 gwei), block_gas_limit = 30000000 (30M gas), target_gas_used = 15000000 (15M gas), base_fee_max_change_bps = 1250 (12.5%), unbonding_delay_epochs = 168 (168 epochs / ~7 days), and slashing_fraction_double_sign = 10000 (100% burn). These parameters are serialized into the state trie during block 0 construction and can only be altered through formal on-chain governance proposals.
35.5 Allocation Guards
Genesis creation scripts enforce automated validation guards, rejecting placeholder addresses, invalid public keys, or balance assignments to reserved precompile address ranges (0x00...00 through 0x00...FF).
35.6 Minimum Validators
A minimum of 4 active validators is strictly required at genesis to satisfy the N >= 3f + 1 Byzantine Fault Tolerance consensus invariant.