Commit 6ba2ac0d authored by Maurelian's avatar Maurelian Committed by GitHub

Interfaces in OPCM and OPCMInterop (#12188)

* Updates to OPCM and OPCMInterop

* Update DeployImpls and OPCM Tests

* remove some unused imports

* Undo mapping type change

* Undo DeployOutput type change

* Semver and snapshots
parent 5eaac1de
...@@ -7,6 +7,7 @@ import { LibString } from "@solady/utils/LibString.sol"; ...@@ -7,6 +7,7 @@ import { LibString } from "@solady/utils/LibString.sol";
import { IResourceMetering } from "src/L1/interfaces/IResourceMetering.sol"; import { IResourceMetering } from "src/L1/interfaces/IResourceMetering.sol";
import { ISuperchainConfig } from "src/L1/interfaces/ISuperchainConfig.sol"; import { ISuperchainConfig } from "src/L1/interfaces/ISuperchainConfig.sol";
import { IProtocolVersions } from "src/L1/interfaces/IProtocolVersions.sol";
import { ISystemConfigV160 } from "src/L1/interfaces/ISystemConfigV160.sol"; import { ISystemConfigV160 } from "src/L1/interfaces/ISystemConfigV160.sol";
import { IL1CrossDomainMessengerV160 } from "src/L1/interfaces/IL1CrossDomainMessengerV160.sol"; import { IL1CrossDomainMessengerV160 } from "src/L1/interfaces/IL1CrossDomainMessengerV160.sol";
import { IL1StandardBridgeV160 } from "src/L1/interfaces/IL1StandardBridgeV160.sol"; import { IL1StandardBridgeV160 } from "src/L1/interfaces/IL1StandardBridgeV160.sol";
...@@ -29,8 +30,6 @@ import { DisputeGameFactory } from "src/dispute/DisputeGameFactory.sol"; ...@@ -29,8 +30,6 @@ import { DisputeGameFactory } from "src/dispute/DisputeGameFactory.sol";
import { AnchorStateRegistry } from "src/dispute/AnchorStateRegistry.sol"; import { AnchorStateRegistry } from "src/dispute/AnchorStateRegistry.sol";
import { PermissionedDisputeGame } from "src/dispute/PermissionedDisputeGame.sol"; import { PermissionedDisputeGame } from "src/dispute/PermissionedDisputeGame.sol";
import { SuperchainConfig } from "src/L1/SuperchainConfig.sol";
import { ProtocolVersions } from "src/L1/ProtocolVersions.sol";
import { OPContractsManager } from "src/L1/OPContractsManager.sol"; import { OPContractsManager } from "src/L1/OPContractsManager.sol";
import { OptimismPortal2 } from "src/L1/OptimismPortal2.sol"; import { OptimismPortal2 } from "src/L1/OptimismPortal2.sol";
import { SystemConfig } from "src/L1/SystemConfig.sol"; import { SystemConfig } from "src/L1/SystemConfig.sol";
...@@ -62,8 +61,8 @@ contract DeployImplementationsInput is BaseDeployIO { ...@@ -62,8 +61,8 @@ contract DeployImplementationsInput is BaseDeployIO {
string internal _release; string internal _release;
// Outputs from DeploySuperchain.s.sol. // Outputs from DeploySuperchain.s.sol.
SuperchainConfig internal _superchainConfigProxy; ISuperchainConfig internal _superchainConfigProxy;
ProtocolVersions internal _protocolVersionsProxy; IProtocolVersions internal _protocolVersionsProxy;
string internal _standardVersionsToml; string internal _standardVersionsToml;
...@@ -97,8 +96,8 @@ contract DeployImplementationsInput is BaseDeployIO { ...@@ -97,8 +96,8 @@ contract DeployImplementationsInput is BaseDeployIO {
function set(bytes4 _sel, address _addr) public { function set(bytes4 _sel, address _addr) public {
require(_addr != address(0), "DeployImplementationsInput: cannot set zero address"); require(_addr != address(0), "DeployImplementationsInput: cannot set zero address");
if (_sel == this.superchainConfigProxy.selector) _superchainConfigProxy = SuperchainConfig(_addr); if (_sel == this.superchainConfigProxy.selector) _superchainConfigProxy = ISuperchainConfig(_addr);
else if (_sel == this.protocolVersionsProxy.selector) _protocolVersionsProxy = ProtocolVersions(_addr); else if (_sel == this.protocolVersionsProxy.selector) _protocolVersionsProxy = IProtocolVersions(_addr);
else if (_sel == this.opcmProxyOwner.selector) _opcmProxyOwner = _addr; else if (_sel == this.opcmProxyOwner.selector) _opcmProxyOwner = _addr;
else revert("DeployImplementationsInput: unknown selector"); else revert("DeployImplementationsInput: unknown selector");
} }
...@@ -151,12 +150,12 @@ contract DeployImplementationsInput is BaseDeployIO { ...@@ -151,12 +150,12 @@ contract DeployImplementationsInput is BaseDeployIO {
return _standardVersionsToml; return _standardVersionsToml;
} }
function superchainConfigProxy() public view returns (SuperchainConfig) { function superchainConfigProxy() public view returns (ISuperchainConfig) {
require(address(_superchainConfigProxy) != address(0), "DeployImplementationsInput: not set"); require(address(_superchainConfigProxy) != address(0), "DeployImplementationsInput: not set");
return _superchainConfigProxy; return _superchainConfigProxy;
} }
function protocolVersionsProxy() public view returns (ProtocolVersions) { function protocolVersionsProxy() public view returns (IProtocolVersions) {
require(address(_protocolVersionsProxy) != address(0), "DeployImplementationsInput: not set"); require(address(_protocolVersionsProxy) != address(0), "DeployImplementationsInput: not set");
return _protocolVersionsProxy; return _protocolVersionsProxy;
} }
...@@ -777,8 +776,8 @@ contract DeployImplementations is Script { ...@@ -777,8 +776,8 @@ contract DeployImplementations is Script {
public public
virtual virtual
{ {
SuperchainConfig superchainConfigProxy = _dii.superchainConfigProxy(); ISuperchainConfig superchainConfigProxy = _dii.superchainConfigProxy();
ProtocolVersions protocolVersionsProxy = _dii.protocolVersionsProxy(); IProtocolVersions protocolVersionsProxy = _dii.protocolVersionsProxy();
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
// TODO: Eventually we will want to select the correct implementation based on the release. // TODO: Eventually we will want to select the correct implementation based on the release.
...@@ -1147,8 +1146,8 @@ contract DeployImplementationsInterop is DeployImplementations { ...@@ -1147,8 +1146,8 @@ contract DeployImplementationsInterop is DeployImplementations {
public public
override override
{ {
SuperchainConfig superchainConfigProxy = _dii.superchainConfigProxy(); ISuperchainConfig superchainConfigProxy = _dii.superchainConfigProxy();
ProtocolVersions protocolVersionsProxy = _dii.protocolVersionsProxy(); IProtocolVersions protocolVersionsProxy = _dii.protocolVersionsProxy();
vm.broadcast(msg.sender); vm.broadcast(msg.sender);
// TODO: Eventually we will want to select the correct implementation based on the release. // TODO: Eventually we will want to select the correct implementation based on the release.
......
...@@ -32,8 +32,8 @@ ...@@ -32,8 +32,8 @@
"sourceCodeHash": "0xde4df0f9633dc0cdb1c9f634003ea5b0f7c5c1aebc407bc1b2f44c0ecf938649" "sourceCodeHash": "0xde4df0f9633dc0cdb1c9f634003ea5b0f7c5c1aebc407bc1b2f44c0ecf938649"
}, },
"src/L1/OPContractsManager.sol": { "src/L1/OPContractsManager.sol": {
"initCodeHash": "0xf64b41f5ec9a94ddbac484f2bdcb5792bf71e66ed6197d172cfd4592311f9b85", "initCodeHash": "0xa0c1139a01cef2445266c71175eff2d36e4b3a7584b198835ed8cba4f7143704",
"sourceCodeHash": "0x0ac3668c5f1ccbd49713a4e079f0dafb5cc45eca8de33e0faf0f01b1b989da89" "sourceCodeHash": "0x67f9846a215d0817a75b4beee50925861d14da2cab1b699bb4e8ae89fa12d01b"
}, },
"src/L1/OptimismPortal.sol": { "src/L1/OptimismPortal.sol": {
"initCodeHash": "0xbe2c0c81b3459014f287d8c89cdc0d27dde5d1f44e5d024fa1e4773ddc47c190", "initCodeHash": "0xbe2c0c81b3459014f287d8c89cdc0d27dde5d1f44e5d024fa1e4773ddc47c190",
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
{ {
"inputs": [ "inputs": [
{ {
"internalType": "contract SuperchainConfig", "internalType": "contract ISuperchainConfig",
"name": "_superchainConfig", "name": "_superchainConfig",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract ProtocolVersions", "internalType": "contract IProtocolVersions",
"name": "_protocolVersions", "name": "_protocolVersions",
"type": "address" "type": "address"
} }
...@@ -184,17 +184,17 @@ ...@@ -184,17 +184,17 @@
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract AddressManager", "internalType": "contract IAddressManager",
"name": "addressManager", "name": "addressManager",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract L1ERC721Bridge", "internalType": "contract IL1ERC721Bridge",
"name": "l1ERC721BridgeProxy", "name": "l1ERC721BridgeProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract SystemConfig", "internalType": "contract ISystemConfig",
"name": "systemConfigProxy", "name": "systemConfigProxy",
"type": "address" "type": "address"
}, },
...@@ -204,52 +204,52 @@ ...@@ -204,52 +204,52 @@
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract L1StandardBridge", "internalType": "contract IL1StandardBridge",
"name": "l1StandardBridgeProxy", "name": "l1StandardBridgeProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract L1CrossDomainMessenger", "internalType": "contract IL1CrossDomainMessenger",
"name": "l1CrossDomainMessengerProxy", "name": "l1CrossDomainMessengerProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract OptimismPortal2", "internalType": "contract IOptimismPortal2",
"name": "optimismPortalProxy", "name": "optimismPortalProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract DisputeGameFactory", "internalType": "contract IDisputeGameFactory",
"name": "disputeGameFactoryProxy", "name": "disputeGameFactoryProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract AnchorStateRegistry", "internalType": "contract IAnchorStateRegistry",
"name": "anchorStateRegistryProxy", "name": "anchorStateRegistryProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract AnchorStateRegistry", "internalType": "contract IAnchorStateRegistry",
"name": "anchorStateRegistryImpl", "name": "anchorStateRegistryImpl",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract FaultDisputeGame", "internalType": "contract IFaultDisputeGame",
"name": "faultDisputeGame", "name": "faultDisputeGame",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract PermissionedDisputeGame", "internalType": "contract IPermissionedDisputeGame",
"name": "permissionedDisputeGame", "name": "permissionedDisputeGame",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract DelayedWETH", "internalType": "contract IDelayedWETH",
"name": "delayedWETHPermissionedGameProxy", "name": "delayedWETHPermissionedGameProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract DelayedWETH", "internalType": "contract IDelayedWETH",
"name": "delayedWETHPermissionlessGameProxy", "name": "delayedWETHPermissionlessGameProxy",
"type": "address" "type": "address"
} }
...@@ -410,7 +410,7 @@ ...@@ -410,7 +410,7 @@
"name": "protocolVersions", "name": "protocolVersions",
"outputs": [ "outputs": [
{ {
"internalType": "contract ProtocolVersions", "internalType": "contract IProtocolVersions",
"name": "", "name": "",
"type": "address" "type": "address"
} }
...@@ -423,7 +423,7 @@ ...@@ -423,7 +423,7 @@
"name": "superchainConfig", "name": "superchainConfig",
"outputs": [ "outputs": [
{ {
"internalType": "contract SuperchainConfig", "internalType": "contract ISuperchainConfig",
"name": "", "name": "",
"type": "address" "type": "address"
} }
...@@ -442,7 +442,7 @@ ...@@ -442,7 +442,7 @@
"name": "systemConfigs", "name": "systemConfigs",
"outputs": [ "outputs": [
{ {
"internalType": "contract SystemConfig", "internalType": "contract ISystemConfig",
"name": "", "name": "",
"type": "address" "type": "address"
} }
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
{ {
"inputs": [ "inputs": [
{ {
"internalType": "contract SuperchainConfig", "internalType": "contract ISuperchainConfig",
"name": "_superchainConfig", "name": "_superchainConfig",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract ProtocolVersions", "internalType": "contract IProtocolVersions",
"name": "_protocolVersions", "name": "_protocolVersions",
"type": "address" "type": "address"
} }
...@@ -184,17 +184,17 @@ ...@@ -184,17 +184,17 @@
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract AddressManager", "internalType": "contract IAddressManager",
"name": "addressManager", "name": "addressManager",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract L1ERC721Bridge", "internalType": "contract IL1ERC721Bridge",
"name": "l1ERC721BridgeProxy", "name": "l1ERC721BridgeProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract SystemConfig", "internalType": "contract ISystemConfig",
"name": "systemConfigProxy", "name": "systemConfigProxy",
"type": "address" "type": "address"
}, },
...@@ -204,52 +204,52 @@ ...@@ -204,52 +204,52 @@
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract L1StandardBridge", "internalType": "contract IL1StandardBridge",
"name": "l1StandardBridgeProxy", "name": "l1StandardBridgeProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract L1CrossDomainMessenger", "internalType": "contract IL1CrossDomainMessenger",
"name": "l1CrossDomainMessengerProxy", "name": "l1CrossDomainMessengerProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract OptimismPortal2", "internalType": "contract IOptimismPortal2",
"name": "optimismPortalProxy", "name": "optimismPortalProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract DisputeGameFactory", "internalType": "contract IDisputeGameFactory",
"name": "disputeGameFactoryProxy", "name": "disputeGameFactoryProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract AnchorStateRegistry", "internalType": "contract IAnchorStateRegistry",
"name": "anchorStateRegistryProxy", "name": "anchorStateRegistryProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract AnchorStateRegistry", "internalType": "contract IAnchorStateRegistry",
"name": "anchorStateRegistryImpl", "name": "anchorStateRegistryImpl",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract FaultDisputeGame", "internalType": "contract IFaultDisputeGame",
"name": "faultDisputeGame", "name": "faultDisputeGame",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract PermissionedDisputeGame", "internalType": "contract IPermissionedDisputeGame",
"name": "permissionedDisputeGame", "name": "permissionedDisputeGame",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract DelayedWETH", "internalType": "contract IDelayedWETH",
"name": "delayedWETHPermissionedGameProxy", "name": "delayedWETHPermissionedGameProxy",
"type": "address" "type": "address"
}, },
{ {
"internalType": "contract DelayedWETH", "internalType": "contract IDelayedWETH",
"name": "delayedWETHPermissionlessGameProxy", "name": "delayedWETHPermissionlessGameProxy",
"type": "address" "type": "address"
} }
...@@ -410,7 +410,7 @@ ...@@ -410,7 +410,7 @@
"name": "protocolVersions", "name": "protocolVersions",
"outputs": [ "outputs": [
{ {
"internalType": "contract ProtocolVersions", "internalType": "contract IProtocolVersions",
"name": "", "name": "",
"type": "address" "type": "address"
} }
...@@ -423,7 +423,7 @@ ...@@ -423,7 +423,7 @@
"name": "superchainConfig", "name": "superchainConfig",
"outputs": [ "outputs": [
{ {
"internalType": "contract SuperchainConfig", "internalType": "contract ISuperchainConfig",
"name": "", "name": "",
"type": "address" "type": "address"
} }
...@@ -442,7 +442,7 @@ ...@@ -442,7 +442,7 @@
"name": "systemConfigs", "name": "systemConfigs",
"outputs": [ "outputs": [
{ {
"internalType": "contract SystemConfig", "internalType": "contract ISystemConfig",
"name": "", "name": "",
"type": "address" "type": "address"
} }
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
"label": "systemConfigs", "label": "systemConfigs",
"offset": 0, "offset": 0,
"slot": "3", "slot": "3",
"type": "mapping(uint256 => contract SystemConfig)" "type": "mapping(uint256 => contract ISystemConfig)"
}, },
{ {
"bytes": "256", "bytes": "256",
......
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
"label": "systemConfigs", "label": "systemConfigs",
"offset": 0, "offset": 0,
"slot": "3", "slot": "3",
"type": "mapping(uint256 => contract SystemConfig)" "type": "mapping(uint256 => contract ISystemConfig)"
}, },
{ {
"bytes": "256", "bytes": "256",
......
...@@ -2,17 +2,17 @@ ...@@ -2,17 +2,17 @@
pragma solidity 0.8.15; pragma solidity 0.8.15;
import { OPContractsManager } from "src/L1/OPContractsManager.sol"; import { OPContractsManager } from "src/L1/OPContractsManager.sol";
import { SuperchainConfig } from "src/L1/SuperchainConfig.sol"; import { ISuperchainConfig } from "src/L1/interfaces/ISuperchainConfig.sol";
import { ProtocolVersions } from "src/L1/ProtocolVersions.sol"; import { IProtocolVersions } from "src/L1/interfaces/IProtocolVersions.sol";
import { ResourceMetering } from "src/L1/ResourceMetering.sol"; import { IResourceMetering } from "src/L1/interfaces/IResourceMetering.sol";
import { SystemConfig } from "src/L1/SystemConfig.sol"; import { ISystemConfig } from "src/L1/interfaces/ISystemConfig.sol";
import { SystemConfigInterop } from "src/L1/SystemConfigInterop.sol"; import { ISystemConfigInterop } from "src/L1/interfaces/ISystemConfigInterop.sol";
/// @custom:proxied true /// @custom:proxied true
contract OPContractsManagerInterop is OPContractsManager { contract OPContractsManagerInterop is OPContractsManager {
constructor( constructor(
SuperchainConfig _superchainConfig, ISuperchainConfig _superchainConfig,
ProtocolVersions _protocolVersions IProtocolVersions _protocolVersions
) )
OPContractsManager(_superchainConfig, _protocolVersions) OPContractsManager(_superchainConfig, _protocolVersions)
{ } { }
...@@ -30,7 +30,7 @@ contract OPContractsManagerInterop is OPContractsManager { ...@@ -30,7 +30,7 @@ contract OPContractsManagerInterop is OPContractsManager {
override override
returns (bytes memory) returns (bytes memory)
{ {
(ResourceMetering.ResourceConfig memory referenceResourceConfig, SystemConfig.Addresses memory opChainAddrs) = (IResourceMetering.ResourceConfig memory referenceResourceConfig, ISystemConfig.Addresses memory opChainAddrs) =
defaultSystemConfigParams(_selector, _input, _output); defaultSystemConfigParams(_selector, _input, _output);
// TODO For now we assume that the dependency manager is the same as the proxy admin owner. // TODO For now we assume that the dependency manager is the same as the proxy admin owner.
......
...@@ -9,13 +9,15 @@ import { DeployOPChain_TestBase } from "test/opcm/DeployOPChain.t.sol"; ...@@ -9,13 +9,15 @@ import { DeployOPChain_TestBase } from "test/opcm/DeployOPChain.t.sol";
import { OPContractsManager } from "src/L1/OPContractsManager.sol"; import { OPContractsManager } from "src/L1/OPContractsManager.sol";
import { SuperchainConfig } from "src/L1/SuperchainConfig.sol"; import { SuperchainConfig } from "src/L1/SuperchainConfig.sol";
import { ProtocolVersions } from "src/L1/ProtocolVersions.sol"; import { ProtocolVersions } from "src/L1/ProtocolVersions.sol";
import { ISuperchainConfig } from "src/L1/interfaces/ISuperchainConfig.sol";
import { IProtocolVersions } from "src/L1/interfaces/IProtocolVersions.sol";
import { SystemConfig } from "src/L1/SystemConfig.sol"; import { SystemConfig } from "src/L1/SystemConfig.sol";
// Exposes internal functions for testing. // Exposes internal functions for testing.
contract OPContractsManager_Harness is OPContractsManager { contract OPContractsManager_Harness is OPContractsManager {
constructor( constructor(
SuperchainConfig _superchainConfig, ISuperchainConfig _superchainConfig,
ProtocolVersions _protocolVersions IProtocolVersions _protocolVersions
) )
OPContractsManager(_superchainConfig, _protocolVersions) OPContractsManager(_superchainConfig, _protocolVersions)
{ } { }
...@@ -100,8 +102,8 @@ contract OPContractsManager_InternalMethods_Test is Test { ...@@ -100,8 +102,8 @@ contract OPContractsManager_InternalMethods_Test is Test {
OPContractsManager_Harness opcmHarness; OPContractsManager_Harness opcmHarness;
function setUp() public { function setUp() public {
SuperchainConfig superchainConfigProxy = SuperchainConfig(makeAddr("superchainConfig")); ISuperchainConfig superchainConfigProxy = ISuperchainConfig(makeAddr("superchainConfig"));
ProtocolVersions protocolVersionsProxy = ProtocolVersions(makeAddr("protocolVersions")); IProtocolVersions protocolVersionsProxy = IProtocolVersions(makeAddr("protocolVersions"));
vm.etch(address(superchainConfigProxy), hex"01"); vm.etch(address(superchainConfigProxy), hex"01");
vm.etch(address(protocolVersionsProxy), hex"01"); vm.etch(address(protocolVersionsProxy), hex"01");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment