UpgradeBeaconpattern to implement three upgradable contract types:
delegatecallto forward contract calls from
Implementationaddresses from its
Controller(thereby performing upgrades for all
UpgradeBeaconcontracts will share a the same
Controller— the contract with the power to perform upgrades.
GovernanceRouter Proxy, so that the Governance xApp ultimately controls the upgrades of the entire system. Note that this creates a circular dependency which makes upgrades of the
GovernanceRouter Implementationparticularly sensitive.
saverwill be subject to a timelock enforced by the Controller contract.
savermultisig be the same on every chain