diff --git a/packages/contracts-bedrock/interfaces/cannon/IMIPS.sol b/packages/contracts-bedrock/interfaces/cannon/IMIPS.sol deleted file mode 100644 index 8ad7ccdc21a3b..0000000000000 --- a/packages/contracts-bedrock/interfaces/cannon/IMIPS.sol +++ /dev/null @@ -1,32 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import { ISemver } from "interfaces/universal/ISemver.sol"; -import { IPreimageOracle } from "interfaces/cannon/IPreimageOracle.sol"; - -/// @title IMIPS -/// @notice Interface for the MIPS contract. -interface IMIPS is ISemver { - struct State { - bytes32 memRoot; - bytes32 preimageKey; - uint32 preimageOffset; - uint32 pc; - uint32 nextPC; - uint32 lo; - uint32 hi; - uint32 heap; - uint8 exitCode; - bool exited; - uint64 step; - uint32[32] registers; - } - - error InvalidMemoryProof(); - error InvalidRMWInstruction(); - - function oracle() external view returns (IPreimageOracle oracle_); - function step(bytes memory _stateData, bytes memory _proof, bytes32 _localContext) external returns (bytes32); - - function __constructor__(IPreimageOracle _oracle) external; -} diff --git a/packages/contracts-bedrock/interfaces/cannon/IMIPS2.sol b/packages/contracts-bedrock/interfaces/cannon/IMIPS2.sol deleted file mode 100644 index 8ce918e87be33..0000000000000 --- a/packages/contracts-bedrock/interfaces/cannon/IMIPS2.sol +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.0; - -import { ISemver } from "interfaces/universal/ISemver.sol"; -import { IPreimageOracle } from "interfaces/cannon/IPreimageOracle.sol"; - -/// @title IMIPS2 -/// @notice Interface for the MIPS2 contract. -interface IMIPS2 is ISemver { - struct ThreadState { - uint32 threadID; - uint8 exitCode; - bool exited; - uint32 pc; - uint32 nextPC; - uint32 lo; - uint32 hi; - uint32[32] registers; - } - - struct State { - bytes32 memRoot; - bytes32 preimageKey; - uint32 preimageOffset; - uint32 heap; - uint8 llReservationStatus; - uint32 llAddress; - uint32 llOwnerThread; - uint8 exitCode; - bool exited; - uint64 step; - uint64 stepsSinceLastContextSwitch; - bool traverseRight; - bytes32 leftThreadStack; - bytes32 rightThreadStack; - uint32 nextThreadID; - } - - error InvalidExitedValue(); - error InvalidMemoryProof(); - error InvalidSecondMemoryProof(); - error InvalidRMWInstruction(); - - function oracle() external view returns (IPreimageOracle oracle_); - function step( - bytes memory _stateData, - bytes memory _proof, - bytes32 _localContext - ) - external - returns (bytes32 postState_); - - function __constructor__(IPreimageOracle _oracle, uint256 /*_stateVersion*/) external; -} diff --git a/packages/contracts-bedrock/scripts/deploy/ChainAssertions.sol b/packages/contracts-bedrock/scripts/deploy/ChainAssertions.sol index ebcf310517235..9a3441e54ee19 100644 --- a/packages/contracts-bedrock/scripts/deploy/ChainAssertions.sol +++ b/packages/contracts-bedrock/scripts/deploy/ChainAssertions.sol @@ -32,7 +32,7 @@ import { IDisputeGameFactory } from "interfaces/dispute/IDisputeGameFactory.sol" import { IDelayedWETH } from "interfaces/dispute/IDelayedWETH.sol"; import { IOptimismMintableERC20Factory } from "interfaces/universal/IOptimismMintableERC20Factory.sol"; import { IPreimageOracle } from "interfaces/cannon/IPreimageOracle.sol"; -import { IMIPS } from "interfaces/cannon/IMIPS.sol"; +import { IMIPS64 } from "interfaces/cannon/IMIPS64.sol"; import { IProxyAdmin } from "interfaces/universal/IProxyAdmin.sol"; import { IETHLockbox } from "interfaces/L1/IETHLockbox.sol"; import { IProxyAdminOwnedBase } from "interfaces/L1/IProxyAdminOwnedBase.sol"; @@ -200,7 +200,7 @@ library ChainAssertions { } /// @notice Asserts that the MIPs contract is setup correctly - function checkMIPS(IMIPS _mips, IPreimageOracle _oracle) internal view { + function checkMIPS(IMIPS64 _mips, IPreimageOracle _oracle) internal view { console.log("Running chain assertions on the MIPS at %s", address(_mips)); require(address(_mips) != address(0), "CHECK-MIPS-10"); @@ -370,7 +370,7 @@ library ChainAssertions { Types.ContractSet memory _impls, Types.ContractSet memory _proxies, IOPContractsManager _opcm, - IMIPS _mips, + IMIPS64 _mips, IProxyAdmin _superchainProxyAdmin ) internal diff --git a/packages/contracts-bedrock/scripts/deploy/Deploy.s.sol b/packages/contracts-bedrock/scripts/deploy/Deploy.s.sol index 841878845bb3d..99a1e75076b14 100644 --- a/packages/contracts-bedrock/scripts/deploy/Deploy.s.sol +++ b/packages/contracts-bedrock/scripts/deploy/Deploy.s.sol @@ -33,7 +33,7 @@ import { ISuperchainConfig } from "interfaces/L1/ISuperchainConfig.sol"; import { IDisputeGameFactory } from "interfaces/dispute/IDisputeGameFactory.sol"; import { IDelayedWETH } from "interfaces/dispute/IDelayedWETH.sol"; import { IAnchorStateRegistry } from "interfaces/dispute/IAnchorStateRegistry.sol"; -import { IMIPS } from "interfaces/cannon/IMIPS.sol"; +import { IMIPS64 } from "interfaces/cannon/IMIPS64.sol"; import { IPreimageOracle } from "interfaces/cannon/IPreimageOracle.sol"; import { IProtocolVersions } from "interfaces/L1/IProtocolVersions.sol"; import { IL1CrossDomainMessenger } from "interfaces/L1/IL1CrossDomainMessenger.sol"; @@ -313,14 +313,14 @@ contract Deploy is Deployer { ); ChainAssertions.checkDelayedWETHImpl(IDelayedWETH(payable(impls.DelayedWETH)), cfg.faultGameWithdrawalDelay()); ChainAssertions.checkMIPS({ - _mips: IMIPS(address(dio.mipsSingleton)), + _mips: IMIPS64(address(dio.mipsSingleton)), _oracle: IPreimageOracle(address(dio.preimageOracleSingleton)) }); ChainAssertions.checkOPContractsManager({ _impls: impls, _proxies: _proxies(), _opcm: IOPContractsManager(address(dio.opcm)), - _mips: IMIPS(address(dio.mipsSingleton)), + _mips: IMIPS64(address(dio.mipsSingleton)), _superchainProxyAdmin: superchainProxyAdmin }); ChainAssertions.checkSystemConfig({ _doi: DeployOPChainInput(address(0)), _contracts: impls, _isProxy: false }); diff --git a/packages/contracts-bedrock/scripts/deploy/DeployImplementations.s.sol b/packages/contracts-bedrock/scripts/deploy/DeployImplementations.s.sol index 561426c5bfe23..a84899ce85095 100644 --- a/packages/contracts-bedrock/scripts/deploy/DeployImplementations.s.sol +++ b/packages/contracts-bedrock/scripts/deploy/DeployImplementations.s.sol @@ -13,8 +13,7 @@ import { ISuperchainConfig } from "interfaces/L1/ISuperchainConfig.sol"; import { IProtocolVersions } from "interfaces/L1/IProtocolVersions.sol"; import { IDelayedWETH } from "interfaces/dispute/IDelayedWETH.sol"; import { IPreimageOracle } from "interfaces/cannon/IPreimageOracle.sol"; -import { IMIPS } from "interfaces/cannon/IMIPS.sol"; -import { IMIPS2 } from "interfaces/cannon/IMIPS2.sol"; +import { IMIPS64 } from "interfaces/cannon/IMIPS64.sol"; import { IDisputeGameFactory } from "interfaces/dispute/IDisputeGameFactory.sol"; import { IAnchorStateRegistry } from "interfaces/dispute/IAnchorStateRegistry.sol"; import { @@ -71,7 +70,7 @@ contract DeployImplementations is Script { IOptimismPortal optimismPortalImpl; IETHLockbox ethLockboxImpl; IPreimageOracle preimageOracleSingleton; - IMIPS mipsSingleton; + IMIPS64 mipsSingleton; ISystemConfig systemConfigImpl; IL1CrossDomainMessenger l1CrossDomainMessengerImpl; IL1ERC721Bridge l1ERC721BridgeImpl; @@ -419,10 +418,10 @@ contract DeployImplementations is Script { } } - IMIPS singleton = IMIPS( + IMIPS64 singleton = IMIPS64( DeployUtils.createDeterministic({ _name: "MIPS64", - _args: DeployUtils.encodeConstructor(abi.encodeCall(IMIPS2.__constructor__, (preimageOracle, mipsVersion))), + _args: DeployUtils.encodeConstructor(abi.encodeCall(IMIPS64.__constructor__, (preimageOracle, mipsVersion))), _salt: DeployUtils.DEFAULT_SALT }) ); @@ -649,7 +648,7 @@ contract DeployImplementations is Script { _impls: impls, _proxies: proxies, _opcm: IOPContractsManager(address(_output.opcm)), - _mips: IMIPS(address(_output.mipsSingleton)), + _mips: IMIPS64(address(_output.mipsSingleton)), _superchainProxyAdmin: _input.superchainProxyAdmin }); diff --git a/packages/contracts-bedrock/scripts/deploy/DeployMIPS.s.sol b/packages/contracts-bedrock/scripts/deploy/DeployMIPS.s.sol index 4f2c47ab579b6..190dbd8e44d9a 100644 --- a/packages/contracts-bedrock/scripts/deploy/DeployMIPS.s.sol +++ b/packages/contracts-bedrock/scripts/deploy/DeployMIPS.s.sol @@ -10,8 +10,7 @@ import { DeployUtils } from "scripts/libraries/DeployUtils.sol"; // Interfaces import { IPreimageOracle } from "interfaces/cannon/IPreimageOracle.sol"; -import { IMIPS } from "interfaces/cannon/IMIPS.sol"; -import { IMIPS2 } from "interfaces/cannon/IMIPS2.sol"; +import { IMIPS64 } from "interfaces/cannon/IMIPS64.sol"; import { StandardConstants } from "scripts/deploy/StandardConstants.sol"; /// @title DeployMIPSInput @@ -54,18 +53,18 @@ contract DeployMIPSInput is BaseDeployIO { /// @title DeployMIPSOutput contract DeployMIPSOutput is BaseDeployIO { - IMIPS internal _mipsSingleton; + IMIPS64 internal _mipsSingleton; function set(bytes4 _sel, address _value) public { if (_sel == this.mipsSingleton.selector) { require(_value != address(0), "DeployMIPS: mipsSingleton cannot be zero address"); - _mipsSingleton = IMIPS(_value); + _mipsSingleton = IMIPS64(_value); } else { revert("DeployMIPS: unknown selector"); } } - function mipsSingleton() public view returns (IMIPS) { + function mipsSingleton() public view returns (IMIPS64) { DeployUtils.assertValidContractAddress(address(_mipsSingleton)); return _mipsSingleton; } @@ -82,10 +81,10 @@ contract DeployMIPS is Script { uint256 mipsVersion = _mi.mipsVersion(); IPreimageOracle preimageOracle = IPreimageOracle(_mi.preimageOracle()); - IMIPS singleton = IMIPS( + IMIPS64 singleton = IMIPS64( DeployUtils.createDeterministic({ _name: "MIPS64", - _args: DeployUtils.encodeConstructor(abi.encodeCall(IMIPS2.__constructor__, (preimageOracle, mipsVersion))), + _args: DeployUtils.encodeConstructor(abi.encodeCall(IMIPS64.__constructor__, (preimageOracle, mipsVersion))), _salt: DeployUtils.DEFAULT_SALT }) ); @@ -100,7 +99,7 @@ contract DeployMIPS is Script { } function assertValidMipsSingleton(DeployMIPSInput _mi, DeployMIPSOutput _mo) internal view { - IMIPS mips = _mo.mipsSingleton(); + IMIPS64 mips = _mo.mipsSingleton(); require(address(mips.oracle()) == address(_mi.preimageOracle()), "MIPS-10"); } } diff --git a/packages/contracts-bedrock/scripts/deploy/DeployMIPS2.s.sol b/packages/contracts-bedrock/scripts/deploy/DeployMIPS2.s.sol index 64be5028ee13e..59344e2fc5ba0 100644 --- a/packages/contracts-bedrock/scripts/deploy/DeployMIPS2.s.sol +++ b/packages/contracts-bedrock/scripts/deploy/DeployMIPS2.s.sol @@ -9,8 +9,7 @@ import { DeployUtils } from "scripts/libraries/DeployUtils.sol"; // Interfaces import { IPreimageOracle } from "interfaces/cannon/IPreimageOracle.sol"; -import { IMIPS } from "interfaces/cannon/IMIPS.sol"; -import { IMIPS2 } from "interfaces/cannon/IMIPS2.sol"; +import { IMIPS64 } from "interfaces/cannon/IMIPS64.sol"; import { StandardConstants } from "scripts/deploy/StandardConstants.sol"; /// @title DeployMIPS @@ -23,7 +22,7 @@ contract DeployMIPS2 is Script { } struct Output { - IMIPS mipsSingleton; + IMIPS64 mipsSingleton; } function run(Input memory _input) public returns (Output memory output_) { @@ -37,11 +36,11 @@ contract DeployMIPS2 is Script { function deployMipsSingleton(Input memory _input, Output memory _output) internal { uint256 mipsVersion = _input.mipsVersion; - IMIPS singleton = IMIPS( + IMIPS64 singleton = IMIPS64( DeployUtils.createDeterministic({ _name: "MIPS64", _args: DeployUtils.encodeConstructor( - abi.encodeCall(IMIPS2.__constructor__, (_input.preimageOracle, mipsVersion)) + abi.encodeCall(IMIPS64.__constructor__, (_input.preimageOracle, mipsVersion)) ), _salt: DeployUtils.DEFAULT_SALT }) diff --git a/packages/contracts-bedrock/scripts/deploy/ReadImplementationAddresses.s.sol b/packages/contracts-bedrock/scripts/deploy/ReadImplementationAddresses.s.sol index e7b7f76edfd7c..e51847a27028f 100644 --- a/packages/contracts-bedrock/scripts/deploy/ReadImplementationAddresses.s.sol +++ b/packages/contracts-bedrock/scripts/deploy/ReadImplementationAddresses.s.sol @@ -6,7 +6,7 @@ import { IProxy } from "interfaces/universal/IProxy.sol"; import { Script } from "forge-std/Script.sol"; import { DeployUtils } from "scripts/libraries/DeployUtils.sol"; import { DeployOPChainOutput } from "scripts/deploy/DeployOPChain.s.sol"; -import { IMIPS } from "interfaces/cannon/IMIPS.sol"; +import { IMIPS64 } from "interfaces/cannon/IMIPS64.sol"; import { IOPContractsManager } from "interfaces/L1/IOPContractsManager.sol"; import { IAddressManager } from "interfaces/legacy/IAddressManager.sol"; import { IStaticL1ChugSplashProxy } from "interfaces/legacy/IL1ChugSplashProxy.sol"; @@ -159,7 +159,7 @@ contract ReadImplementationAddresses is Script { IAddressManager am = _rii.addressManager(); _rio.set(_rio.l1CrossDomainMessenger.selector, am.getAddress("OVM_L1CrossDomainMessenger")); - address preimageOracle = address(IMIPS(mipsLogic).oracle()); + address preimageOracle = address(IMIPS64(mipsLogic).oracle()); _rio.set(_rio.preimageOracleSingleton.selector, preimageOracle); address ethLockbox = _rii.opcm().implementations().ethLockboxImpl; diff --git a/packages/contracts-bedrock/test/L1/OPContractsManager.t.sol b/packages/contracts-bedrock/test/L1/OPContractsManager.t.sol index 2cb2ae4786cc4..feec6f2462996 100644 --- a/packages/contracts-bedrock/test/L1/OPContractsManager.t.sol +++ b/packages/contracts-bedrock/test/L1/OPContractsManager.t.sol @@ -30,7 +30,7 @@ import { IL1ERC721Bridge } from "interfaces/L1/IL1ERC721Bridge.sol"; import { IL1StandardBridge } from "interfaces/L1/IL1StandardBridge.sol"; import { IOptimismMintableERC20Factory } from "interfaces/universal/IOptimismMintableERC20Factory.sol"; import { IL1CrossDomainMessenger } from "interfaces/L1/IL1CrossDomainMessenger.sol"; -import { IMIPS2 } from "interfaces/cannon/IMIPS2.sol"; +import { IMIPS64 } from "interfaces/cannon/IMIPS64.sol"; import { IOptimismPortal2 } from "interfaces/L1/IOptimismPortal2.sol"; import { IProxy } from "interfaces/universal/IProxy.sol"; import { IProxyAdmin } from "interfaces/universal/IProxyAdmin.sol"; @@ -601,7 +601,7 @@ contract OPContractsManager_TestInit is Test { mipsImpl: DeployUtils.create1({ _name: "MIPS64", _args: DeployUtils.encodeConstructor( - abi.encodeCall(IMIPS2.__constructor__, (oracle, StandardConstants.MIPS_VERSION)) + abi.encodeCall(IMIPS64.__constructor__, (oracle, StandardConstants.MIPS_VERSION)) ) }) }); diff --git a/packages/contracts-bedrock/test/cannon/MIPS64.t.sol b/packages/contracts-bedrock/test/cannon/MIPS64.t.sol index 043363dae8f1b..fed85457bd350 100644 --- a/packages/contracts-bedrock/test/cannon/MIPS64.t.sol +++ b/packages/contracts-bedrock/test/cannon/MIPS64.t.sol @@ -6,7 +6,7 @@ import { Test } from "forge-std/Test.sol"; import { DeployUtils } from "scripts/libraries/DeployUtils.sol"; import { UnsupportedStateVersion } from "src/cannon/libraries/CannonErrors.sol"; import { IPreimageOracle } from "interfaces/cannon/IPreimageOracle.sol"; -import { IMIPS2 } from "interfaces/cannon/IMIPS2.sol"; +import { IMIPS64 } from "interfaces/cannon/IMIPS64.sol"; /// @title MIPS64_TestInit /// @notice Reusable test initialization for `MIPS64` tests. @@ -39,11 +39,11 @@ contract MIPS64_TestInit is Test { } /// @notice Deploys new MIPS64 contract with the given version parameter. - function deployVm(uint256 version) internal returns (IMIPS2) { - return IMIPS2( + function deployVm(uint256 version) internal returns (IMIPS64) { + return IMIPS64( DeployUtils.create1({ _name: "MIPS64", - _args: DeployUtils.encodeConstructor(abi.encodeCall(IMIPS2.__constructor__, (oracle, version))) + _args: DeployUtils.encodeConstructor(abi.encodeCall(IMIPS64.__constructor__, (oracle, version))) }) ); } @@ -57,7 +57,7 @@ contract MIPS64_Unclassified_Test is MIPS64_TestInit { function test_deploy_supportedVersions_succeeds() external { for (uint256 i = 0; i < validVersions.length; i++) { uint256 version = validVersions[i]; - IMIPS2 mips = deployVm(version); + IMIPS64 mips = deployVm(version); assertNotEq(address(mips), address(0)); } }