You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(events): require acceptance for manager delegation (#70) (#88)
Manager delegation previously granted privileged authority (select_winners,
cancel, manager rotation) to an address that never authorized. A typo,
wrong-network address, or a swapped params.manager at signing could lock the
owner out permanently, or hand escrow-draining select_winners authority to an
attacker with no further owner sign-off.
Replace the immediate assignment with a two-step propose/accept flow mirroring
the existing admin rotation:
- propose_manager: current authority (manager, else owner) records a pending
proposal with a short expiry; no authority transfers.
- accept_manager: the proposed address must require_auth to accept before the
role transfers.
- cancel_pending_manager: current authority vetoes a pending proposal.
- create_event now only proposes params.manager; the owner stays in control
until acceptance.
Emit ManagerProposed and ManagerChanged (the latter also closes the missing
set_manager storage-change event). Remove set_manager.
Storage layout extended append-only (DataKey::PendingManager, PendingManager).
Co-authored-by: Collins Ikechukwu <collinschristroa@gmail.com>
0 commit comments