Fei Guardian

The guardian to halt Fei Protocol functionality in a crisis🛡

The Fei Guardian is the single address to be granted the Guardian🛡role at Genesis. Initially held by the Fei 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 Fei 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 would step in and revoke the Minter💰role from the UniswapIncentive contract.

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

Responsibilities

  • revoke any role from any contract, except Governor⚖️

  • pause and unpause contracts

  • force a reweight

Pausability

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 FEI and allocating PCV from the bonding curve

  • deposit(uint256 ethAmount)

  • withdraw(uint256 ethAmount)

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

Fei

  • burnFrom()

  • mint()

Pause would render all Minter💰and Burner🔥contracts unable to mint and burn FEI, respectively

  • read()

  • update()

Pause would render all Fei Protocol contracts which rely on this oracle unable to successfully execute function calls

  • drip()

Pause would stop any future TRIBE reward distributions to FeiStakingRewards but leave the current reward cycle unchanged.