Skip to content

Keys for Network Deployment

Every network needs distinct key material for clients, peers, genesis signing, and, for NPoS or Nexus profiles, BLS validator identities.

Where Keys Are Used

  • Client signing keys are stored in client.toml under [account].
  • Peer identity keys are stored in each peer config.toml as public_key and private_key.
  • Peer discovery uses each peer's public key in trusted_peers.
  • BLS validator Proofs-of-Possession are stored in trusted_peers_pop for NPoS profiles.
  • Genesis signing uses the [genesis].public_key in peer config and the matching private key when signing the manifest.

For local or test deployments, let Kagami generate all of these files together:

bash
cargo run --bin kagami -- localnet --build-line iroha3 --peers 4 --out-dir ./localnet

For an existing network or profile, use the guided flow:

bash
cargo run --bin kagami -- wizard --profile nexus

Generate Individual Key Pairs

Use kagami keys for standalone key material:

bash
cargo run --bin kagami -- keys --algorithm ed25519 --json

For BLS validator material, include a Proof-of-Possession:

bash
cargo run --bin kagami -- keys --algorithm bls_normal --pop --json

Use --seed only for reproducible development fixtures. For production deployment, generate fresh keys and store private keys outside the repository.

Peer Consistency

All validators must agree on the same genesis transaction, topology, trusted peer public keys, and validator PoPs. A single missing or mismatched peer key can prevent the network from starting or reaching consensus.

For a minimum Byzantine-fault-tolerant deployment, use at least four peers. Each peer must have its own private key, but every peer configuration needs the same trusted peer set.

Client Accounts

The client account in client.toml must already exist on-chain. It can be registered by the genesis manifest or by a later transaction. Avoid using the genesis signing identity as a long-lived application account; genesis privileges only apply during the genesis round, and production clients should use their own accounts and roles.