Ring Protocol

Ring Guardian

The guardian to halt Ring Protocol functionality in a crisis🛡
The Ring Guardian is the single address to be granted the Guardian🛡role at Genesis. Initially held by the Ring Core Team in a multi-sig, with the intention of either renouncing the role or transitioning to a community held multi-sig within a few months of launch.
The rationale for a Guardian is that there could be issues in the protocol which are time sensitive. The minimum 3 day window between a proposal and execution for a fix coming through the Ring DAO could be too long. For instance, if there is a bug in the incentive calculation where an attacker can systematically make a profit, this functionality should be shut down as quickly as possible.
The Guardian can only revoke or pause functionality, with the additional ability to force a reweight.
The Governor⚖️ can revoke the Guardian🛡ability at any time


  • revoke any role from any contract, except Governor⚖️
  • pause and unpause contracts
  • force a reweight


Any contract implementing CoreRef has the ability to be pausable. Any external method marked as pausable would revert when the contract is in the paused state.
List of pausable methods by contract:
  • allocate()
  • purchase(address to, uint256 amountIn)
Pause would prevent both purchasing RUSD and allocating PCV from the bonding curve
  • deposit(uint256 ethAmount)
  • withdraw(uint256 ethAmount)
  • collect()
Pause would prevent new PCV from being provided as liquidity to Uniswap or withdrawn
  • reweight()
Pause would prevent external actors from triggering reweights when the criteria are met.
The forceReweight() function would still be available for the Guardian to manually support the peg


  • burnFrom()
  • mint()
Pause would render all Minter💰and Burner🔥contracts unable to mint and burn RUSD, respectively
  • read()
Pause would render all Ring Protocol contracts which rely on this oracle unable to successfully execute function calls
  • drip()
Pause would stop any future RING reward distributions to RingStakingRewards but leave the current reward cycle unchanged.