Summary
Operator rotation (soroban/src/operator_rotation.rs) changes who controls sensitive operations. Instant rotations are risky — if a key is compromised, an attacker could rotate control away with no window to react. Adding a timelock and grace period gives observers time to detect and respond.
What we'd like
- A two-step rotation:
propose_rotation then execute_rotation after a configurable delay
- A cancel path so a pending (malicious) rotation can be aborted by an authorized role before execution
- An event emitted at propose and execute so watchers can monitor pending rotations
Where to look
soroban/src/operator_rotation.rs — the rotation logic
soroban/src/acl.rs — roles allowed to propose/execute/cancel
soroban/tests/operator_rotation.test.rs — extend these tests
soroban/src/threshold_window.rs — an existing time-window pattern to mirror
Acceptance criteria
Notes
Make the delay a configured parameter (with a sane default) rather than a hardcoded constant.
Summary
Operator rotation (
soroban/src/operator_rotation.rs) changes who controls sensitive operations. Instant rotations are risky — if a key is compromised, an attacker could rotate control away with no window to react. Adding a timelock and grace period gives observers time to detect and respond.What we'd like
propose_rotationthenexecute_rotationafter a configurable delayWhere to look
soroban/src/operator_rotation.rs— the rotation logicsoroban/src/acl.rs— roles allowed to propose/execute/cancelsoroban/tests/operator_rotation.test.rs— extend these testssoroban/src/threshold_window.rs— an existing time-window pattern to mirrorAcceptance criteria
Notes
Make the delay a configured parameter (with a sane default) rather than a hardcoded constant.