Genesis & lifecycle
A validator network doesn’t materialize fully-formed. It has to be bootstrapped: chains have to come online, the network’s own accounts have to be created with DKG, rules have to be published on chain, and new members have to be admitted later — all without ever letting a single validator sign alone. This page is the choreography of that ritual.
The shape of genesis: BFT, zero single-sig
Section titled “The shape of genesis: BFT, zero single-sig”Genesis runs across the genesis validators, which coordinate with Byzantine-fault-tolerant consensus. Every account the network creates at genesis is a native multisig whose keys come from DKG ceremonies across those validators, and every account users create afterwards runs its own DKG too — so after genesis, no single validator can sign anything alone. No single key controls any entity, and that is the whole point: decentralization is enforced cryptographically, not promised in a policy doc. The one bootstrap exception is the wallet that funds genesis once: it controls no entity, and the step that deletes it is built but not yet enabled.
On the testnet, the genesis validators are three clusters run by HSuite. Three clusters is where the network starts, not a limit of the design.
The five phases
Section titled “The five phases”stateDiagram-v2
[*] --> ChainReadiness
ChainReadiness: Phase 1 — Chain readiness
ChainReadiness: each chain connects and reports ready
GenesisInit: Phase 2 — Genesis initialization
GenesisInit: per-chain genesis, in order
ClusterDKG: Phase 3 — Cluster key DKG
ClusterDKG: validator keys + DKG for every genesis account
GovPublish: Phase 4 — Governance publish
GovPublish: rules and validator registry on Hedera topics
MembershipOpen: Phase 5 — Membership open
MembershipOpen: membership API accepts applications
ChainReadiness --> GenesisInit
GenesisInit --> ClusterDKG
ClusterDKG --> GovPublish
GovPublish --> MembershipOpen
MembershipOpen --> SteadyState
SteadyState: Steady state — serving requests
SteadyState --> Resharing: member joins / leaves
Resharing: Resharing ceremony
Resharing: re-split every key for the new membership
Resharing --> SteadyState
SteadyState --> [*]
The phases overlap in practice (keys are generated as each account is created), but each has a clear job. Let’s walk them.
Phase 1 — Chain readiness
Section titled “Phase 1 — Chain readiness”Each chain the network uses connects and reports when it is ready. Genesis runs per chain, and it is complete only when every chain the network requires has finished. Today those chains are Hedera and XRPL.
Phase 2 — Genesis initialization
Section titled “Phase 2 — Genesis initialization”Genesis creates the network’s own accounts in a fixed order:
- The rules topic on Hedera, first, so every account created after it can point at its rule.
- A protocol treasury on each chain, which pays for the accounts created after it.
- The node-runner reward pool.
- A cluster-operator account per validator per chain. These hold the membership NFTs.
- The network’s Hedera topics, then the XRPL accounts.
Every one of these is a native multisig controlled by DKG keys, not a single key. Genesis runs once: a network that has completed it refuses to start it again.
Phase 3 — Cluster key DKG
Section titled “Phase 3 — Cluster key DKG”Each validator generates its own chain keypair, and every genesis account’s keys are created by DKG across the validators. Each validator ends up with only its own share of each key, and the shares are stored encrypted. The public keys are registered so the rest of the system can look them up.
Phase 4 — Governance publish
Section titled “Phase 4 — Governance publish”The network publishes what it runs by on Hedera Consensus Service topics: the rules every account is bound to, and the validator registry. Each topic’s submit key is itself a threshold key, so no single validator can write to it. Anyone can read these topics and check an account’s rule for themselves.
Phase 5 — Membership open
Section titled “Phase 5 — Membership open”Once genesis is complete, the membership API is up, for three roles: validator,
host and gateway. An applicant calls POST /api/v3/membership/apply with the roles
they want, stakes the HSUITE for them, and is admitted by the existing validators. Joining
is not open to outside node runners yet: HSuite runs the genesis validators until the
network opens after mainnet. See Run a node.
Creating entities after genesis — any cluster, no bottleneck
Section titled “Creating entities after genesis — any cluster, no bottleneck”Once the network is live, the accounts users create aren’t pinned to the cluster that happened to receive the request. The rule that governs a creation is published on a Hedera topic, which every cluster can read, so whichever cluster fields the request can look up the rule, run the per-account DKG and native multisig, and create the account on chain. The result then replicates to the other clusters. No single cluster is a creation chokepoint.
Steady state and membership changes
Section titled “Steady state and membership changes”The hardest case is a new validator joining a live network: it needs a share of every existing key. The existing validators first approve the join with a quorum of signed approvals, then run a resharing ceremony for every key: each existing holder deals a verifiable piece to the new member set, and each member combines the pieces into its new share. The key itself is never rebuilt, and the public key does not change, so the accounts on chain keep their keys.
Leaving is the reverse: the remaining validators reshare without the departing one. The old shares are not automatically useless after a reshare: enough old holders together could still sign with them. That is why old shares have to be deleted, and why a departing validator’s share alone is never enough to sign.
%%{init: {'sequence':{'showSequenceNumbers':false}}}%%
sequenceDiagram
autonumber
participant New as Joining validator
participant Cluster as Existing validators
participant Chain as XRPL
New->>Cluster: POST /api/v3/membership/apply (roles, identity)
New->>Chain: stake HSUITE into the deposit account
Cluster->>Chain: deposit confirmed, mint the membership NFT
Cluster->>Cluster: quorum of signed approvals
Cluster->>Cluster: reshare EVERY existing key (incl. new member)
Cluster-->>New: verifiable pieces (one per existing holder)
New->>New: verify + combine into its own share
Note over Cluster,New: same public keys, new shares for the new member set
Snapshots — deterministic votes
Section titled “Snapshots — deterministic votes”The network takes snapshots of token holdings and publishes them on IPFS as plain JSON, so anyone can open them. Each governance proposal fixes the snapshot time that every voter’s weight is taken from, and that time is part of what the proposal signs, so the result can’t be changed by moving tokens afterwards.
- Genesis runs across the genesis validators with BFT coordination; on the testnet that is three HSuite-run clusters.
- Every genesis account is a native multisig with DKG keys, and every account created later runs its own DKG, so no single key controls any entity.
- Five phases: chain readiness → genesis init → cluster DKG → governance publish → membership open.
- Rules and the validator registry are published on Hedera so anyone can check them.
- Joining or leaving triggers a resharing ceremony across every key; the keys are never rebuilt, and old shares must be deleted.
- Snapshots make votes deterministic.