In order to get rid of the constructor changes of the OptimismPortal contract, we can modify the storage directly with an intermediate Proxy implementation:
We use this contract to set storage during upgrades by swapping the implementation to this contract and then to the desired implementation atomically. This prevents complexity around coupling storage migrations with implementation code and would allow this diff to go away. This pattern will be required for contract upgrades since we need to zero out the _initialized slot to call initialize on a new implementation
In order to get rid of the constructor changes of the
OptimismPortal
contract, we can modify the storage directly with an intermediate Proxy implementation:_Originally posted by @tynes in https://github.com/celo-org/optimism/pull/174#discussion_r1681158745_