Problem
All 4 contracts have a single-admin model (require_admin()). If the admin key is compromised or lost, the entire protocol is at risk. There is no recovery path.
Expected Behavior
Admin operations should require M-of-N multi-signature approval for sensitive operations (upgrade, pause, transfer limits, dividend distribution).
Proposed Solution
Replace the single Address admin with a SorobanMultiSig or a custom multi-sig contract pattern:
- Add an
AdminManager contract (or embed the logic) that tracks signers and threshold
- Propose operations via
submit_proposal(operation_hash)
- Execute after M signers approve via
approve(proposal_id)
- The existing
set_admin could become set_admin_manager
This could use the Soroban multi-sig pattern or a custom implementation specific to this protocol.
Affected Files
- All 4 contracts (
require_admin pattern)
- Potentially a new
admin-manager contract
Problem
All 4 contracts have a single-admin model (
require_admin()). If the admin key is compromised or lost, the entire protocol is at risk. There is no recovery path.Expected Behavior
Admin operations should require M-of-N multi-signature approval for sensitive operations (upgrade, pause, transfer limits, dividend distribution).
Proposed Solution
Replace the single
Addressadmin with aSorobanMultiSigor a custom multi-sig contract pattern:AdminManagercontract (or embed the logic) that tracks signers and thresholdsubmit_proposal(operation_hash)approve(proposal_id)set_admincould becomeset_admin_managerThis could use the Soroban multi-sig pattern or a custom implementation specific to this protocol.
Affected Files
require_adminpattern)admin-managercontract