Governance
Bootstrap small. Hand off quickly.
krewe is launched with a minimal, transparent role structure designed to be lifted toward community ownership as the network matures.
On-chain roles
Three actors, clearly scoped
Admin — holds DEFAULT_ADMIN_ROLE on KreweRegistry. Sets stake bounds, rotates the orator wallet, can pause the contract in an emergency, and may withdraw from the reward pool (but never from worker stake).
Orator — holds ORATOR_ROLE. Sole caller of batchDistributeRewards. The orchestrator backend signs settlement batches with this wallet. Rotatable by the admin.
Treasury — recipient of the genesis $KREW mint and funder of the reward pool. Today the treasury is a hot wallet for testnet operations; on mainnet it becomes a Safe multisig.
Off-chain controls
What the orchestrator decides
The orchestrator backend selects worker replicas, evaluates consensus, and submits batches. It cannot mint $KREW, change stake bounds, or pause the network — those powers belong on-chain to the admin role.
Its only privileged action is calling batchDistributeRewardswith the credits it has accumulated in its in-process ledger. The on-chain replay-nonce check prevents the same batch being submitted twice; the segregated reward pool prevents the orator from ever touching staked collateral.
Path to community governance
Where this is headed
The bootstrap admin is the deploying wallet. The next step is transferring the admin role to a 2-of-3 (or 3-of-5) Safe held by a rotating set of trusted operators and community delegates.
A token-weighted governance module is on the roadmap but deliberately not at launch. We want the network to have real usage data before deciding how to apportion votes — staking weight, age-weighted balance, conviction voting are all on the table.