Implements upgrade logic while enforcing governance constraints
The Governance contract manages the upgrade process. It contains the logic and constraints for changing the Exchange and Governance contract addresses within the Custodian. This allows for changes to both the exchange features and governance process without requiring users to migrate funds from the Custodian contract.
Owner: The Governance contract has a single owner, which is the address the launched the contract. The owner of the contract cannot be changed.
Admin: The Governance contract has a single admin. The admin address can be changed by the owner of the contract with no delay.
The admin is the only address permitted to change the Exchange or Governance contract addresses in the Custodian. Changes to the contract addresses have a 1 week time delay before taking effect. This delay gives users time to withdraw their funds in the event that they disagree with the Exchange contract upgrade.