Genesis Reference
In the current Iroha 3 workflow, a genesis.json manifest describes the first transactions and parameters that will be applied when the network starts.
The signed artifact distributed to peers is a Norito-encoded .nrt file produced by kagami genesis sign.
Main Fields
A genesis manifest can define:
chainfor the chain identifierexecutorfor an optional executor upgrade bytecode pathivm_dirfor IVM libraries used by triggers and upgradesconsensus_modefor the initial mode advertised by the manifesttransactionsfor ordered parameter updates, instructions, triggers, and topologycryptofor the initial crypto snapshot
Within transactions, topology entries pair peer ids and PoPs together:
{
"peer": "ea0130...",
"pop_hex": "0xabcd..."
}Generate a Manifest
Use Kagami to generate a template:
cargo run -p iroha_kagami -- genesis generate \
--consensus-mode npos \
--ivm-dir defaults \
--genesis-public-key <PUBLIC_KEY> > genesis.jsonFor the public SORA Nexus dataspace, npos is the expected consensus mode. Other Iroha 3 deployments may use permissioned or NPoS depending on the target profile.
Sign the Manifest
After editing and validating the JSON, sign it into a deployable .nrt block:
cargo run -p iroha_kagami -- genesis sign genesis.json \
--private-key <PRIVATE_KEY> \
--out-file genesis.signed.nrtkagami genesis sign reads the genesis public key from the manifest and uses the supplied private key, seed, and algorithm to produce the deployable signed block. The result is the file that peers should reference from their config.
Configure irohad
Point the daemon at the signed genesis block:
[genesis]
file = "genesis.signed.nrt"
public_key = "<PUBLIC_KEY>"Related Tools
kagami genesis validatekagami genesis normalizekagami genesis embed-popkagami localnetcargo xtask kagami-profiles
For the full upstream details, see: