Genesis
Genesis is the initial state of the Sui blockchain. To launch a network, the initial committee of validators collaborate by providing their validator information (public keys, network addresses, and so on) to a shared workspace. After all of the initial validators have contributed their information, Sui generates the initial, unsigned genesis checkpoint (checkpoint with sequence number 0) and each validator provides their signature. Sui aggregates these signatures to form a certificate on the genesis checkpoint. Sui bundles this checkpoint, as well as the initial objects, together into a single genesis.blob file that the sui-node binary uses to initialize the state for both validators and full nodes.
How do I download genesis.blob?
Each Sui network (Mainnet, Testnet, Devnet) has its own genesis.blob file. To set it up:
-
Download the file for your target network:
# Replace <network> with mainnet, testnet, or devnet
$ curl -fLO https://github.com/MystenLabs/sui-genesis/raw/main/<network>/genesis.blob -
Place the file where your
fullnode.yamlconfiguration points. Thegenesis-file-locationkey infullnode.yamlsets this path. The default template uses:genesis-file-location: "/opt/sui/config/genesis.blob"Use an absolute path to avoid ambiguity. Relative paths resolve from the process working directory (the directory where you run
sui-node), not from the directory containingfullnode.yaml.
The sui-genesis repository hosts all genesis files. See Sui Full Node Configuration for the complete setup steps.
How does genesis.blob determine network identity?
The genesis.blob file determines the network identity. The node derives a chain identifier from the genesis checkpoint digest and uses it to verify that peers, snapshots, and archive data belong to the same network. If you use the wrong genesis.blob for your target network, the node or related tooling (such as snapshot restore) fails with a chain identifier mismatch error. For example, sui-tool reports:
Genesis file is for chain <X>, but formal snapshot download is configured for --network <Y>.
A normal sui-node startup with a mismatched genesis file causes the node to reject peer connections and checkpoint data from the actual network. If the node already initialized its database with the wrong genesis, the node asserts that the stored and configured checkpoint-0 digests match and refuses to start.
To fix a mismatch:
- Download the correct
genesis.blobfor your target network using the command above. - If the node initialized the database with the wrong genesis, delete the existing database and restore from a snapshot for the correct network before restarting.
What format is genesis.blob?
The genesis.blob file is a BCS-serialized (Binary Canonical Serialization) binary containing the genesis checkpoint, its certificate (aggregated validator signatures), and the initial onchain objects (system packages, the Sui framework, and validator staking objects). It is not human-readable. The node deserializes it at startup to initialize its state.