The Genesis package converts formatted JSON files into the genesis of the Primary Network. For the simplest example, see the Local Genesis JSON file.
The genesis JSON file contains the following properties:
networkID
: A unique identifier for the blockchain, must be a number in the range [0, 2^32).allocations
: The list of initial addresses, their initial balances and the unlock schedule for each.startTime
: The time of the beginning of the blockchain, it must be a Unix timestamp and it can't be a time in the future.initialStakeDuration
: The stake duration, in seconds, of the validators that exist at network genesis.initialStakeDurationOffset
: The offset, in seconds, between the end times of the validators that exist at genesis.initialStakedFunds
: A list of addresses that own the funds staked at genesis (each address must be present inallocations
as well)initialStakers
: The validators that exist at genesis. Each element contains therewardAddress
, NodeID and thedelegationFee
of the validator.cChainGenesis
: The genesis info to be passed to the C-Chain.message
: A message to include in the genesis. Not required.
Each allocation contains the following fields:
ethAddr
: Annotation of corresponding Ethereum address holding an ERC-20 tokenavaxAddr
: X/P Chain address to receive the allocationinitialAmount
: Initial unlocked amount minted to theavaxAddr
on the X-ChainunlockSchedule
: List of locked, stakeable UTXOs minted toavaxAddr
on the P-Chain
Note: if an avaxAddr
from allocations is included in initialStakers
, the genesis includes
all the UTXOs specified in the unlockSchedule
as part of the locked stake of the corresponding
genesis validator. Otherwise, the locked UTXO is created directly on the P-Chain.