Open hiddentao opened 1 year ago
Current architectural thoughts:
safeOwner
which points to an existing SAFE multisig walletdiamondCut()
on the Diamond.New proposed idea based on feedback from @kevin-fruitful @amarinkovic @tgeorgas. This proposal removes the need for a separate Upgrades contract, a new signing UI, and caters for all types of multisig wallets.
safeOwner
value which should be a wallet address that is ideally a multisig, though this is not enforced.safeOwner
as the actual owner once initial deployment of the Diamond is complete.Upgrades
facet which overwrites the default diamondCut()
method with a new one that will store the arguments as the latest pending upgrade. This method can be called by any wallet, not just the owner.safeOwner
will need to send a tiny amount of ETH to the diamond after Gemforge has called diamondCut()
. This amount is calculated by the Upgrades facet based on the upgrade data, enabling the approval transfer to be uniquely matched to a given upgrade. Risk:
The solidity receive()
method has a fixed gas stipend of 2300 so it won't be enough for doing an upgrade. Thus, we will have to make the safeOwner call a method on the contract.
Multisig upgrade support should be added to enable protected upgrades.
A possible proposal:
Ownership
facet).Alternative proposal: