FIP-84: Migrate upgrade mechanism owner

Status: Last call
Authors @tom


This FIP is a minor infrastructure upgrade to primarily change the owner of an upgrade mechanism contract (ProxyAdmin) from an old, deprecated timelock to the new active DAO timelock.

This will allow us to upgrade our Aave incentives controller contract, so that the protocol can participate in future rounds of stkAAVE rewards. It also reduces technical debt - the old timelock is deprecated and should not be the owner of the upgrade mechanism.

This FIP is going straight to on-chain voting as a technical upgrade.

Context and motivation

Aave has started a new round of stkAAVE liquidity mining incentives, which we would like the protocol to benefit from.

However, at the moment this is not possible. The Fei Protocol incentives controller contract which supports these rewards is not compatible and instead we need to upgrade it to a compatible standard implementation.

Fei has an upgrade mechanism built in to allow this incentives controller contract to be upgraded. However, currently the upgrade can only be performed by the old (deprecated) timelock - it is the owner - which the FEI DAO used to be pointed to. As of FIP-31, the FEI DAO is pointed to a new timelock.

Therefore, this FIP changes the owner of the upgrade mechanism contract (ProxyAdmin) from the deprecated to the new active timelock. This will allow the incentives contract to be upgraded and the protocol to benefit from future rounds of Aave stkAAVE liquidity mining.


Due to the technicalities of ensuring that the correct timelock is set on the FEI DAO for permissioned calls, three DAO votes are required:

  1. fip_84a
    • Change the timelock the DAO points to from the new to the old
    • Add redundancy onto the the live sister Rari DAO and grant it’s timelock the governor role. Also, revoke the governor role from the old, deprecated timelock
  2. fip_84b
    • Transfer ownership of the ProxyAdmin, the contract controlling the upgrade mechanism, from the deprecated timelock to the new timelock
    • Set the admin of the deprecated timelock to be the new timelock, and return the FEI DAO timelock to being the new timelock
  3. fip_84c
    • Have the deprecated timelock accept the new timelock as admin


  • fip_84a and fip_84c will be proposed at the same time, t
  • Voting will occur for 48hrs, and then fip_84a will be executed 24hrs after that at t+72hrs
  • fip_84b will be proposed 48hrs after fip_84a and fip_84c at t+48hrs. Voting will occur for 48hrs and end at t+96hrs. At this point fip_84a will have already executed, meaning that the correct (old, deprecated) timelock can be queued on.
    • It is necessary for this timelock to be queued upon in order for the ProxyAdmin permissioned ownership transfer to succeed
  • fip_84b is then executed 24hrs later at t+120hrs. fip_84c is also executed at this time.


This vote is going straight to on-chain voting as a technical upgrade.


@tom can you link the pull requests here?

Yep. The code is here: Migrate proxies from oldTimelock to newTimelock by thomas-waite · Pull Request #543 · fei-protocol/fei-protocol-core · GitHub