Splits wpi-token's single admin key - #61
Conversation
|
Warning Review limit reached
Next review available in: 58 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (5)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
Splits wpi-token's single admin key into four independent, purpose-scoped roles so no one
compromised key can mint, pause, and transfer admin all at once, and documents that any of these
roles can already be a Soroban multisig/policy contract instead of a plain account.
(set_minter).
longer mints, burns, or pauses directly.
configure_volume_limits/override_volume_limit.
set_minter/set_pauser are self-rotating (like the existing set_volume_limit_admin), not
admin-controlled: if Admin could reassign them at will it would still be a single point of
failure. Existing deployments that predate this change fall back to the live Admin address for
Minter/Pauser until they explicitly rotate (same pattern already used for VolumeLimitAdmin), so
no on-chain migration step is required before upgrading.
Also verified and documented that no contract address handling changes were needed for a
multisig/policy-contract admin — Address/require_auth() already treats accounts and contracts
uniformly, so a Soroban multisig or a Protocol 27 (CAP-0071 / SOROBAN_CREDENTIALS_ADDRESS_V2)
delegated account can already be set as any of these roles. Per the issue's own recommendation,
no new custom multisig contract was added to the repo.
What changed
minter()/pauser()/set_minter()/set_pauser(), re-gated mint/mint_from_deposit/burn/set_paused.
self-custody, the pre-existing-deployment migration fallback, and a contract-address-as-admin
regression test; one pre-existing test updated to reflect that set_paused is no longer
admin-gated.
step-by-step migration plan for existing testnet deployments.
Testing
Resolved / acceptance criteria (Issue #5)
Closes #5