Description:
Replace single admin with a multi-signature requirement for critical operations (fee changes, treasury updates, upgrades, dispute resolutions). This prevents a single compromised key from taking over the contract.
Acceptance Criteria:
set_admins(admins: Vec
, threshold: u32) initialization function.
submit_admin_proposal(proposal_id: Bytes32, payload: Bytes) — any admin can propose.
sign_proposal(proposal_id: Bytes32) — other admins sign.
execute_proposal(proposal_id: Bytes32) — executes when signature count ≥ threshold.
Proposal types: SetFee, SetTreasury, Upgrade, ResolveDispute.
Emits ProposalCreated, ProposalSigned, ProposalExecuted events.
Pending proposals expire after 10,000 ledgers.
Labels: security, multi-sig, admin
Description:
Replace single admin with a multi-signature requirement for critical operations (fee changes, treasury updates, upgrades, dispute resolutions). This prevents a single compromised key from taking over the contract.
Acceptance Criteria:
set_admins(admins: Vec
, threshold: u32) initialization function.submit_admin_proposal(proposal_id: Bytes32, payload: Bytes) — any admin can propose.
sign_proposal(proposal_id: Bytes32) — other admins sign.
execute_proposal(proposal_id: Bytes32) — executes when signature count ≥ threshold.
Proposal types: SetFee, SetTreasury, Upgrade, ResolveDispute.
Emits ProposalCreated, ProposalSigned, ProposalExecuted events.
Pending proposals expire after 10,000 ledgers.
Labels: security, multi-sig, admin