Gap
Current code has a single Wallet struct (crates/sentrix-wallet/src/wallet.rs) used for both consensus signing AND general ops (transfers, governance, etc). A compromised operator key = compromised consensus key + full wallet drain.
Industry standard for L1 validators is multi-key:
- Consensus / signer key: signs BFT votes only. Hot, on validator host. Compromise = double-sign risk, mitigated by tombstone + rotation.
- Operator key: submits operational tx (Unjail, ClaimRewards, parameter updates). Warm.
- Stash / cold key: holds bonded SRX, signs Undelegate/Withdraw. Cold, ideally hardware wallet.
Decision was made 2026-04-21 to ship this, blocked behind mainnet stability work.
Acceptance criteria
Blocker
Multi-week scope (design + code + migration + testing). Not closeable in a single session — needs SIP first.
Gap
Current code has a single
Walletstruct (crates/sentrix-wallet/src/wallet.rs) used for both consensus signing AND general ops (transfers, governance, etc). A compromised operator key = compromised consensus key + full wallet drain.Industry standard for L1 validators is multi-key:
Decision was made 2026-04-21 to ship this, blocked behind mainnet stability work.
Acceptance criteria
Blocker
Multi-week scope (design + code + migration + testing). Not closeable in a single session — needs SIP first.