Skip to content

Migrate treasury authority to multi-sig (Squads / Realms) pre-mainnet #266

@alrimarleskovar

Description

@alrimarleskovar

Problem

Today, the config.treasury authority and the program upgrade authority on all 4 deployed devnet programs are pinned to a single keypair (64XM177Vm6zirzQnjU1juQ9TLqDsZVsCcZzfgEgVCffm). For mainnet with real USDC, this is a single point of compromise.

What this blocks

MAINNET_READINESS.md §3.6 (upgrade authority) + §3.7 (treasury authority) — both marked 🔵⛔ hard mainnet blockers.

Proposed solution

Pre-mainnet:

  1. Select multi-sig platform — Squads Protocol (Solana-native, well-audited) is the primary candidate; Realms / Mean Finance are alternatives
  2. Configure a 3-of-5 multi-sig for treasury authority + upgrade authority — signers split across:
    • 1 founder
    • 1 technical lead
    • 1 security advisor / external
    • 2 board members or backup
  3. Migrate config.treasury — propose new treasury via existing 7-day timelock pattern from PR fix(roundfi-core): treasury rotation hardening — timelock + one-way lock (Option C) #122; commit via commit_new_treasury to the multi-sig PDA
  4. Migrate upgrade authoritysolana program set-upgrade-authority from current single key to the multi-sig PDA on all 4 deployed programs
  5. Refresh OtterSec verify-build attestation PDAs — same signer rotation
  6. Operational runbookdocs/operations/multisig-recovery.md (key-loss procedure, signer-rotation procedure, emergency-pause-via-multisig procedure)

Acceptance criteria

  • Squads/Realms multi-sig deployed on devnet first (smoke test)
  • config.treasury migrated via timelock → multi-sig PDA on devnet
  • Upgrade authority rotated on all 4 programs (devnet)
  • Repeat for mainnet on launch day
  • OtterSec attestation PDAs refreshed
  • docs/operations/multisig-recovery.md shipped
  • MAINNET_READINESS.md §3.6/§3.7 moved from 🔵⛔ to

Estimated scope

Medium — multi-sig setup is well-trodden but the authority rotation is one-way; needs careful staging on devnet first.

References

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions