diff --git a/op-deployer/pkg/deployer/bootstrap/validator.go b/op-deployer/pkg/deployer/bootstrap/validator.go index e3cb98b8e92..f068fa1ec12 100644 --- a/op-deployer/pkg/deployer/bootstrap/validator.go +++ b/op-deployer/pkg/deployer/bootstrap/validator.go @@ -39,7 +39,6 @@ type ValidatorConfig struct { type ValidatorInput struct { Release string `json:"release"` SuperchainConfig common.Address `json:"superchainConfig"` - ProtocolVersions common.Address `json:"protocolVersions"` L1PAOMultisig common.Address `json:"l1PAOMultisig"` MIPS common.Address `json:"mips" evm:"mips"` Challenger common.Address `json:"challenger"` diff --git a/op-deployer/pkg/deployer/bootstrap/validator_test.go b/op-deployer/pkg/deployer/bootstrap/validator_test.go index 30380698808..ff58e714867 100644 --- a/op-deployer/pkg/deployer/bootstrap/validator_test.go +++ b/op-deployer/pkg/deployer/bootstrap/validator_test.go @@ -55,7 +55,6 @@ func testValidator(t *testing.T, forkRPCURL string, loc *artifacts.Locator, rele input := ValidatorInput{ Release: release, SuperchainConfig: common.Address{'S'}, - ProtocolVersions: common.Address{'P'}, L1PAOMultisig: common.Address{'M'}, MIPS: common.Address{'I'}, Challenger: common.Address{'C'}, diff --git a/op-validator/pkg/validations/addresses.go b/op-validator/pkg/validations/addresses.go index cf80b7002ef..1b5cf5b9f93 100644 --- a/op-validator/pkg/validations/addresses.go +++ b/op-validator/pkg/validations/addresses.go @@ -13,8 +13,9 @@ const ( var addresses = map[uint64]map[string]common.Address{ 11155111: { - VersionV180: common.HexToAddress("0x2A788Bb1D32AD0dcEC1A51B7156015Aa90548d8C"), - VersionV200: common.HexToAddress("0x34FFEEF9D42E0EF0d999fBF01E006f745083Fd9b"), + // Both versions below bootstrapped on 02/23/2025 using OP Deployer. + VersionV180: common.HexToAddress("0x0a5bf8ebb4b177b2dcc6eba933db726a2e2e2b4d"), + VersionV200: common.HexToAddress("0xaf72eedb110f114a3b4e921c12755b4e47dbd63d"), }, } diff --git a/op-validator/pkg/validations/addresses_test.go b/op-validator/pkg/validations/addresses_test.go index f14370ba97b..c6bf0b3e533 100644 --- a/op-validator/pkg/validations/addresses_test.go +++ b/op-validator/pkg/validations/addresses_test.go @@ -19,14 +19,14 @@ func TestValidatorAddress(t *testing.T) { name: "Valid Sepolia v1.8.0", chainID: 11155111, version: VersionV180, - want: common.HexToAddress("0x2A788Bb1D32AD0dcEC1A51B7156015Aa90548d8C"), + want: common.HexToAddress("0x0a5bf8ebb4b177b2dcc6eba933db726a2e2e2b4d"), expectError: false, }, { name: "Valid Sepolia v2.0.0", chainID: 11155111, version: VersionV200, - want: common.HexToAddress("0x34FFEEF9D42E0EF0d999fBF01E006f745083Fd9b"), + want: common.HexToAddress("0xaf72eedb110f114a3b4e921c12755b4e47dbd63d"), expectError: false, }, { diff --git a/op-validator/pkg/validations/codes.go b/op-validator/pkg/validations/codes.go index 6845700d978..ca5d346b5eb 100644 --- a/op-validator/pkg/validations/codes.go +++ b/op-validator/pkg/validations/codes.go @@ -2,13 +2,7 @@ package validations var descriptions = map[string]string{ // SuperchainConfig validations - "SPRCFG-10": "SuperchainConfig version mismatch", - "SPRCFG-20": "SuperchainConfig implementation address mismatch", - "SPRCFG-30": "SuperchainConfig is paused", - - // Protocol Versions validations - "PVER-10": "ProtocolVersions version mismatch", - "PVER-20": "ProtocolVersions implementation address mismatch", + "SPRCFG-10": "SuperchainConfig is paused", // ProxyAdmin validations "PROXYA-10": "ProxyAdmin owner is not set to L1 PAO multisig", diff --git a/op-validator/pkg/validations/codes_test.go b/op-validator/pkg/validations/codes_test.go index c9517b5aa84..f1fd356faa0 100644 --- a/op-validator/pkg/validations/codes_test.go +++ b/op-validator/pkg/validations/codes_test.go @@ -15,7 +15,7 @@ func TestErrorDescription(t *testing.T) { { name: "known error code", code: "SPRCFG-10", - expected: "SuperchainConfig version mismatch", + expected: "SuperchainConfig is paused", }, { name: "another known error code", diff --git a/op-validator/pkg/validations/testdata/validations-v180.json b/op-validator/pkg/validations/testdata/validations-v180.json index d5a64878d06..aac0a8005af 100644 --- a/op-validator/pkg/validations/testdata/validations-v180.json +++ b/op-validator/pkg/validations/testdata/validations-v180.json @@ -7,7 +7,7 @@ "method": "eth_call", "params": [ { - "to": "0x2a788bb1d32ad0dcec1a51b7156015aa90548d8c", + "to": "0x0a5bf8ebb4b177b2dcc6eba933db726a2e2e2b4d", "data": "0x30d14888000000000000000000000000189abaaaa82dfc015a588a7dbad6f13b1d3485bc000000000000000000000000034edd2a225f7f429a63e0f1d2084b9e0a93b538038512e02c4c3f7bdaec27d00edf55b7155e0905301e1a88083e4e0a6764d54c0000000000000000000000000000000000000000000000000000000000aa37dc0000000000000000000000000000000000000000000000000000000000000001" }, "latest" diff --git a/op-validator/pkg/validations/testdata/validations-v200.json b/op-validator/pkg/validations/testdata/validations-v200.json index 0e1635e0444..56c24a4345b 100644 --- a/op-validator/pkg/validations/testdata/validations-v200.json +++ b/op-validator/pkg/validations/testdata/validations-v200.json @@ -7,7 +7,7 @@ "method": "eth_call", "params": [ { - "to": "0x34ffeef9d42e0ef0d999fbf01e006f745083fd9b", + "to": "0xaf72eedb110f114a3b4e921c12755b4e47dbd63d", "data": "0x30d14888000000000000000000000000189abaaaa82dfc015a588a7dbad6f13b1d3485bc000000000000000000000000034edd2a225f7f429a63e0f1d2084b9e0a93b538038512e02c4c3f7bdaec27d00edf55b7155e0905301e1a88083e4e0a6764d54c0000000000000000000000000000000000000000000000000000000000aa37dc0000000000000000000000000000000000000000000000000000000000000001" }, "latest" diff --git a/packages/contracts-bedrock/interfaces/L1/IStandardValidator.sol b/packages/contracts-bedrock/interfaces/L1/IStandardValidator.sol index acfed1b21c3..e1c5b8b44d7 100644 --- a/packages/contracts-bedrock/interfaces/L1/IStandardValidator.sol +++ b/packages/contracts-bedrock/interfaces/L1/IStandardValidator.sol @@ -3,12 +3,9 @@ pragma solidity ^0.8.0; // Interfaces import { ISuperchainConfig } from "interfaces/L1/ISuperchainConfig.sol"; -import { IProtocolVersions } from "interfaces/L1/IProtocolVersions.sol"; interface IStandardValidatorBase { struct ImplementationsBase { - address superchainConfigImpl; - address protocolVersionsImpl; address l1ERC721BridgeImpl; address optimismPortalImpl; address systemConfigImpl; @@ -67,7 +64,6 @@ interface IStandardValidatorV180 is IStandardValidatorBase { function __constructor__( IStandardValidatorBase.ImplementationsBase memory _implementations, ISuperchainConfig _superchainConfig, - IProtocolVersions _protocolVersions, address _l1PAOMultisig, address _mips, address _challenger @@ -87,7 +83,6 @@ interface IStandardValidatorV200 is IStandardValidatorBase { function __constructor__( IStandardValidatorBase.ImplementationsBase memory _implementations, ISuperchainConfig _superchainConfig, - IProtocolVersions _protocolVersions, address _l1PAOMultisig, address _mips, address _challenger diff --git a/packages/contracts-bedrock/scripts/deploy/DeployStandardValidator.s.sol b/packages/contracts-bedrock/scripts/deploy/DeployStandardValidator.s.sol index 4739c34bd89..3e955d10b36 100644 --- a/packages/contracts-bedrock/scripts/deploy/DeployStandardValidator.s.sol +++ b/packages/contracts-bedrock/scripts/deploy/DeployStandardValidator.s.sol @@ -10,7 +10,6 @@ import { DeployUtils } from "scripts/libraries/DeployUtils.sol"; // Interfaces import { ISuperchainConfig } from "interfaces/L1/ISuperchainConfig.sol"; -import { IProtocolVersions } from "interfaces/L1/IProtocolVersions.sol"; import { IStandardValidatorBase, IStandardValidatorV180, @@ -24,7 +23,6 @@ contract DeployStandardValidatorInput is BaseDeployIO { // Required inputs ISuperchainConfig internal _superchainConfig; - IProtocolVersions internal _protocolVersions; address internal _l1PAOMultisig; address internal _mips; address internal _challenger; @@ -47,9 +45,6 @@ contract DeployStandardValidatorInput is BaseDeployIO { if (_sel == this.superchainConfig.selector) { require(_value != address(0), "DeployStandardValidator: superchainConfig cannot be empty"); _superchainConfig = ISuperchainConfig(_value); - } else if (_sel == this.protocolVersions.selector) { - require(_value != address(0), "DeployStandardValidator: protocolVersions cannot be empty"); - _protocolVersions = IProtocolVersions(_value); } else if (_sel == this.l1PAOMultisig.selector) { require(_value != address(0), "DeployStandardValidator: l1PAOMultisig cannot be empty"); _l1PAOMultisig = _value; @@ -118,11 +113,6 @@ contract DeployStandardValidatorInput is BaseDeployIO { return _superchainConfig; } - function protocolVersions() public view returns (IProtocolVersions) { - require(address(_protocolVersions) != address(0), "DeployStandardValidator: protocolVersions not set"); - return _protocolVersions; - } - function l1PAOMultisig() public view returns (address) { require(_l1PAOMultisig != address(0), "DeployStandardValidator: l1PAOMultisig not set"); return _l1PAOMultisig; @@ -236,8 +226,6 @@ contract DeployStandardValidator is Script { returns (IStandardValidatorBase.ImplementationsBase memory) { return IStandardValidatorBase.ImplementationsBase({ - superchainConfigImpl: _si.superchainConfigImpl(), - protocolVersionsImpl: _si.protocolVersionsImpl(), l1ERC721BridgeImpl: _si.l1ERC721BridgeImpl(), optimismPortalImpl: _si.optimismPortalImpl(), systemConfigImpl: _si.systemConfigImpl(), @@ -270,14 +258,7 @@ contract DeployStandardValidator is Script { _args: DeployUtils.encodeConstructor( abi.encodeCall( IStandardValidatorV180.__constructor__, - ( - getImplementations(_si), - _si.superchainConfig(), - _si.protocolVersions(), - _si.l1PAOMultisig(), - _si.mips(), - _si.challenger() - ) + (getImplementations(_si), _si.superchainConfig(), _si.l1PAOMultisig(), _si.mips(), _si.challenger()) ) ), _salt: DeployUtils.DEFAULT_SALT @@ -293,14 +274,7 @@ contract DeployStandardValidator is Script { _args: DeployUtils.encodeConstructor( abi.encodeCall( IStandardValidatorV200.__constructor__, - ( - getImplementations(_si), - _si.superchainConfig(), - _si.protocolVersions(), - _si.l1PAOMultisig(), - _si.mips(), - _si.challenger() - ) + (getImplementations(_si), _si.superchainConfig(), _si.l1PAOMultisig(), _si.mips(), _si.challenger()) ) ), _salt: DeployUtils.DEFAULT_SALT @@ -328,18 +302,16 @@ contract DeployStandardValidator is Script { function assertValidValidatorV180(DeployStandardValidatorInput _si, address _validator) internal view { IStandardValidatorV180 v180 = IStandardValidatorV180(_validator); require(address(v180.superchainConfig()) == address(_si.superchainConfig()), "SV180-10"); - require(address(v180.protocolVersions()) == address(_si.protocolVersions()), "SV180-20"); - require(v180.l1PAOMultisig() == _si.l1PAOMultisig(), "SV180-30"); - require(v180.mips() == _si.mips(), "SV180-40"); - require(v180.challenger() == _si.challenger(), "SV180-50"); + require(v180.l1PAOMultisig() == _si.l1PAOMultisig(), "SV180-20"); + require(v180.mips() == _si.mips(), "SV180-30"); + require(v180.challenger() == _si.challenger(), "SV180-40"); } function assertValidValidatorV200(DeployStandardValidatorInput _si, address _validator) internal view { IStandardValidatorV200 v200 = IStandardValidatorV200(_validator); require(address(v200.superchainConfig()) == address(_si.superchainConfig()), "SV200-10"); - require(address(v200.protocolVersions()) == address(_si.protocolVersions()), "SV200-20"); - require(v200.l1PAOMultisig() == _si.l1PAOMultisig(), "SV200-30"); - require(v200.mips() == _si.mips(), "SV200-40"); - require(v200.challenger() == _si.challenger(), "SV200-50"); + require(v200.l1PAOMultisig() == _si.l1PAOMultisig(), "SV200-20"); + require(v200.mips() == _si.mips(), "SV200-30"); + require(v200.challenger() == _si.challenger(), "SV200-40"); } } diff --git a/packages/contracts-bedrock/snapshots/abi/StandardValidatorBase.json b/packages/contracts-bedrock/snapshots/abi/StandardValidatorBase.json index ebe3e41c20b..711daf48a3d 100644 --- a/packages/contracts-bedrock/snapshots/abi/StandardValidatorBase.json +++ b/packages/contracts-bedrock/snapshots/abi/StandardValidatorBase.json @@ -3,16 +3,6 @@ "inputs": [ { "components": [ - { - "internalType": "address", - "name": "superchainConfigImpl", - "type": "address" - }, - { - "internalType": "address", - "name": "protocolVersionsImpl", - "type": "address" - }, { "internalType": "address", "name": "l1ERC721BridgeImpl", @@ -73,11 +63,6 @@ "name": "_superchainConfig", "type": "address" }, - { - "internalType": "contract IProtocolVersions", - "name": "_protocolVersions", - "type": "address" - }, { "internalType": "address", "name": "_l1PAOMultisig", @@ -396,45 +381,6 @@ "stateMutability": "pure", "type": "function" }, - { - "inputs": [], - "name": "protocolVersions", - "outputs": [ - { - "internalType": "contract IProtocolVersions", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersionsImpl", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersionsVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, { "inputs": [], "name": "superchainConfig", @@ -448,32 +394,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "superchainConfigImpl", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "superchainConfigVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, { "inputs": [], "name": "systemConfigImpl", diff --git a/packages/contracts-bedrock/snapshots/abi/StandardValidatorV180.json b/packages/contracts-bedrock/snapshots/abi/StandardValidatorV180.json index 231bdf55773..8eab484c3cc 100644 --- a/packages/contracts-bedrock/snapshots/abi/StandardValidatorV180.json +++ b/packages/contracts-bedrock/snapshots/abi/StandardValidatorV180.json @@ -3,16 +3,6 @@ "inputs": [ { "components": [ - { - "internalType": "address", - "name": "superchainConfigImpl", - "type": "address" - }, - { - "internalType": "address", - "name": "protocolVersionsImpl", - "type": "address" - }, { "internalType": "address", "name": "l1ERC721BridgeImpl", @@ -73,11 +63,6 @@ "name": "_superchainConfig", "type": "address" }, - { - "internalType": "contract IProtocolVersions", - "name": "_protocolVersions", - "type": "address" - }, { "internalType": "address", "name": "_l1PAOMultisig", @@ -396,45 +381,6 @@ "stateMutability": "pure", "type": "function" }, - { - "inputs": [], - "name": "protocolVersions", - "outputs": [ - { - "internalType": "contract IProtocolVersions", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersionsImpl", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersionsVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, { "inputs": [], "name": "superchainConfig", @@ -448,32 +394,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "superchainConfigImpl", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "superchainConfigVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, { "inputs": [], "name": "systemConfigImpl", diff --git a/packages/contracts-bedrock/snapshots/abi/StandardValidatorV200.json b/packages/contracts-bedrock/snapshots/abi/StandardValidatorV200.json index 12adf25cc97..fbaf0558df3 100644 --- a/packages/contracts-bedrock/snapshots/abi/StandardValidatorV200.json +++ b/packages/contracts-bedrock/snapshots/abi/StandardValidatorV200.json @@ -3,16 +3,6 @@ "inputs": [ { "components": [ - { - "internalType": "address", - "name": "superchainConfigImpl", - "type": "address" - }, - { - "internalType": "address", - "name": "protocolVersionsImpl", - "type": "address" - }, { "internalType": "address", "name": "l1ERC721BridgeImpl", @@ -73,11 +63,6 @@ "name": "_superchainConfig", "type": "address" }, - { - "internalType": "contract IProtocolVersions", - "name": "_protocolVersions", - "type": "address" - }, { "internalType": "address", "name": "_l1PAOMultisig", @@ -396,45 +381,6 @@ "stateMutability": "pure", "type": "function" }, - { - "inputs": [], - "name": "protocolVersions", - "outputs": [ - { - "internalType": "contract IProtocolVersions", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersionsImpl", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "protocolVersionsVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, { "inputs": [], "name": "superchainConfig", @@ -448,32 +394,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "superchainConfigImpl", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "superchainConfigVersion", - "outputs": [ - { - "internalType": "string", - "name": "", - "type": "string" - } - ], - "stateMutability": "pure", - "type": "function" - }, { "inputs": [], "name": "systemConfigImpl", diff --git a/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorBase.json b/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorBase.json index b017ad76d00..e4ffb9ad9b9 100644 --- a/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorBase.json +++ b/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorBase.json @@ -6,116 +6,95 @@ "slot": "0", "type": "contract ISuperchainConfig" }, - { - "bytes": "20", - "label": "protocolVersions", - "offset": 0, - "slot": "1", - "type": "contract IProtocolVersions" - }, { "bytes": "20", "label": "l1PAOMultisig", "offset": 0, - "slot": "2", + "slot": "1", "type": "address" }, { "bytes": "20", "label": "mips", "offset": 0, - "slot": "3", + "slot": "2", "type": "address" }, { "bytes": "20", "label": "challenger", "offset": 0, - "slot": "4", - "type": "address" - }, - { - "bytes": "20", - "label": "superchainConfigImpl", - "offset": 0, - "slot": "5", - "type": "address" - }, - { - "bytes": "20", - "label": "protocolVersionsImpl", - "offset": 0, - "slot": "6", + "slot": "3", "type": "address" }, { "bytes": "20", "label": "l1ERC721BridgeImpl", "offset": 0, - "slot": "7", + "slot": "4", "type": "address" }, { "bytes": "20", "label": "optimismPortalImpl", "offset": 0, - "slot": "8", + "slot": "5", "type": "address" }, { "bytes": "20", "label": "systemConfigImpl", "offset": 0, - "slot": "9", + "slot": "6", "type": "address" }, { "bytes": "20", "label": "optimismMintableERC20FactoryImpl", "offset": 0, - "slot": "10", + "slot": "7", "type": "address" }, { "bytes": "20", "label": "l1CrossDomainMessengerImpl", "offset": 0, - "slot": "11", + "slot": "8", "type": "address" }, { "bytes": "20", "label": "l1StandardBridgeImpl", "offset": 0, - "slot": "12", + "slot": "9", "type": "address" }, { "bytes": "20", "label": "disputeGameFactoryImpl", "offset": 0, - "slot": "13", + "slot": "10", "type": "address" }, { "bytes": "20", "label": "anchorStateRegistryImpl", "offset": 0, - "slot": "14", + "slot": "11", "type": "address" }, { "bytes": "20", "label": "delayedWETHImpl", "offset": 0, - "slot": "15", + "slot": "12", "type": "address" }, { "bytes": "20", "label": "mipsImpl", "offset": 0, - "slot": "16", + "slot": "13", "type": "address" } ] \ No newline at end of file diff --git a/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorV180.json b/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorV180.json index b017ad76d00..e4ffb9ad9b9 100644 --- a/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorV180.json +++ b/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorV180.json @@ -6,116 +6,95 @@ "slot": "0", "type": "contract ISuperchainConfig" }, - { - "bytes": "20", - "label": "protocolVersions", - "offset": 0, - "slot": "1", - "type": "contract IProtocolVersions" - }, { "bytes": "20", "label": "l1PAOMultisig", "offset": 0, - "slot": "2", + "slot": "1", "type": "address" }, { "bytes": "20", "label": "mips", "offset": 0, - "slot": "3", + "slot": "2", "type": "address" }, { "bytes": "20", "label": "challenger", "offset": 0, - "slot": "4", - "type": "address" - }, - { - "bytes": "20", - "label": "superchainConfigImpl", - "offset": 0, - "slot": "5", - "type": "address" - }, - { - "bytes": "20", - "label": "protocolVersionsImpl", - "offset": 0, - "slot": "6", + "slot": "3", "type": "address" }, { "bytes": "20", "label": "l1ERC721BridgeImpl", "offset": 0, - "slot": "7", + "slot": "4", "type": "address" }, { "bytes": "20", "label": "optimismPortalImpl", "offset": 0, - "slot": "8", + "slot": "5", "type": "address" }, { "bytes": "20", "label": "systemConfigImpl", "offset": 0, - "slot": "9", + "slot": "6", "type": "address" }, { "bytes": "20", "label": "optimismMintableERC20FactoryImpl", "offset": 0, - "slot": "10", + "slot": "7", "type": "address" }, { "bytes": "20", "label": "l1CrossDomainMessengerImpl", "offset": 0, - "slot": "11", + "slot": "8", "type": "address" }, { "bytes": "20", "label": "l1StandardBridgeImpl", "offset": 0, - "slot": "12", + "slot": "9", "type": "address" }, { "bytes": "20", "label": "disputeGameFactoryImpl", "offset": 0, - "slot": "13", + "slot": "10", "type": "address" }, { "bytes": "20", "label": "anchorStateRegistryImpl", "offset": 0, - "slot": "14", + "slot": "11", "type": "address" }, { "bytes": "20", "label": "delayedWETHImpl", "offset": 0, - "slot": "15", + "slot": "12", "type": "address" }, { "bytes": "20", "label": "mipsImpl", "offset": 0, - "slot": "16", + "slot": "13", "type": "address" } ] \ No newline at end of file diff --git a/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorV200.json b/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorV200.json index b017ad76d00..e4ffb9ad9b9 100644 --- a/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorV200.json +++ b/packages/contracts-bedrock/snapshots/storageLayout/StandardValidatorV200.json @@ -6,116 +6,95 @@ "slot": "0", "type": "contract ISuperchainConfig" }, - { - "bytes": "20", - "label": "protocolVersions", - "offset": 0, - "slot": "1", - "type": "contract IProtocolVersions" - }, { "bytes": "20", "label": "l1PAOMultisig", "offset": 0, - "slot": "2", + "slot": "1", "type": "address" }, { "bytes": "20", "label": "mips", "offset": 0, - "slot": "3", + "slot": "2", "type": "address" }, { "bytes": "20", "label": "challenger", "offset": 0, - "slot": "4", - "type": "address" - }, - { - "bytes": "20", - "label": "superchainConfigImpl", - "offset": 0, - "slot": "5", - "type": "address" - }, - { - "bytes": "20", - "label": "protocolVersionsImpl", - "offset": 0, - "slot": "6", + "slot": "3", "type": "address" }, { "bytes": "20", "label": "l1ERC721BridgeImpl", "offset": 0, - "slot": "7", + "slot": "4", "type": "address" }, { "bytes": "20", "label": "optimismPortalImpl", "offset": 0, - "slot": "8", + "slot": "5", "type": "address" }, { "bytes": "20", "label": "systemConfigImpl", "offset": 0, - "slot": "9", + "slot": "6", "type": "address" }, { "bytes": "20", "label": "optimismMintableERC20FactoryImpl", "offset": 0, - "slot": "10", + "slot": "7", "type": "address" }, { "bytes": "20", "label": "l1CrossDomainMessengerImpl", "offset": 0, - "slot": "11", + "slot": "8", "type": "address" }, { "bytes": "20", "label": "l1StandardBridgeImpl", "offset": 0, - "slot": "12", + "slot": "9", "type": "address" }, { "bytes": "20", "label": "disputeGameFactoryImpl", "offset": 0, - "slot": "13", + "slot": "10", "type": "address" }, { "bytes": "20", "label": "anchorStateRegistryImpl", "offset": 0, - "slot": "14", + "slot": "11", "type": "address" }, { "bytes": "20", "label": "delayedWETHImpl", "offset": 0, - "slot": "15", + "slot": "12", "type": "address" }, { "bytes": "20", "label": "mipsImpl", "offset": 0, - "slot": "16", + "slot": "13", "type": "address" } ] \ No newline at end of file diff --git a/packages/contracts-bedrock/src/L1/StandardValidator.sol b/packages/contracts-bedrock/src/L1/StandardValidator.sol index 07a010013f7..cb54e935c1a 100644 --- a/packages/contracts-bedrock/src/L1/StandardValidator.sol +++ b/packages/contracts-bedrock/src/L1/StandardValidator.sol @@ -23,18 +23,14 @@ import { ISemver } from "interfaces/universal/ISemver.sol"; import { IResourceMetering } from "interfaces/L1/IResourceMetering.sol"; import { IOptimismPortal2 } from "interfaces/L1/IOptimismPortal2.sol"; import { IPreimageOracle } from "interfaces/cannon/IPreimageOracle.sol"; -import { IProtocolVersions } from "interfaces/L1/IProtocolVersions.sol"; contract StandardValidatorBase { ISuperchainConfig public superchainConfig; - IProtocolVersions public protocolVersions; address public l1PAOMultisig; address public mips; address public challenger; // Implementation addresses as state variables - address public superchainConfigImpl; - address public protocolVersionsImpl; address public l1ERC721BridgeImpl; address public optimismPortalImpl; address public systemConfigImpl; @@ -47,8 +43,6 @@ contract StandardValidatorBase { address public mipsImpl; struct ImplementationsBase { - address superchainConfigImpl; - address protocolVersionsImpl; address l1ERC721BridgeImpl; address optimismPortalImpl; address systemConfigImpl; @@ -64,20 +58,16 @@ contract StandardValidatorBase { constructor( ImplementationsBase memory _implementations, ISuperchainConfig _superchainConfig, - IProtocolVersions _protocolVersions, address _l1PAOMultisig, address _mips, address _challenger ) { superchainConfig = _superchainConfig; - protocolVersions = _protocolVersions; l1PAOMultisig = _l1PAOMultisig; mips = _mips; challenger = _challenger; // Set implementation addresses from struct - superchainConfigImpl = _implementations.superchainConfigImpl; - protocolVersionsImpl = _implementations.protocolVersionsImpl; l1ERC721BridgeImpl = _implementations.l1ERC721BridgeImpl; optimismPortalImpl = _implementations.optimismPortalImpl; systemConfigImpl = _implementations.systemConfigImpl; @@ -101,8 +91,7 @@ contract StandardValidatorBase { view returns (string memory) { - _errors = assertValidSuperchainConfig(_errors, _admin); - _errors = assertValidProtocolVersions(_errors, _admin); + _errors = assertValidSuperchainConfig(_errors); _errors = assertValidProxyAdmin(_errors, _admin); _errors = assertValidSystemConfig(_errors, _sysCfg, _admin); _errors = assertValidL1CrossDomainMessenger(_errors, _sysCfg, _admin); @@ -116,14 +105,6 @@ contract StandardValidatorBase { return _errors; } - function superchainConfigVersion() public pure virtual returns (string memory) { - return "1.1.0"; - } - - function protocolVersionsVersion() public pure virtual returns (string memory) { - return "1.0.0"; - } - function l1ERC721BridgeVersion() public pure virtual returns (string memory) { return "2.1.0"; } @@ -172,35 +153,8 @@ contract StandardValidatorBase { return "1.1.2"; } - function assertValidSuperchainConfig( - string memory _errors, - IProxyAdmin _admin - ) - internal - view - returns (string memory) - { - _errors = internalRequire(stringEq(superchainConfig.version(), superchainConfigVersion()), "SPRCFG-10", _errors); - _errors = internalRequire( - _admin.getProxyImplementation(address(superchainConfig)) == superchainConfigImpl, "SPRCFG-20", _errors - ); - _errors = internalRequire(!superchainConfig.paused(), "SPRCFG-30", _errors); - return _errors; - } - - function assertValidProtocolVersions( - string memory _errors, - IProxyAdmin _admin - ) - internal - view - returns (string memory) - { - _errors = internalRequire(stringEq(protocolVersions.version(), protocolVersionsVersion()), "PVER-10", _errors); - _errors = internalRequire( - _admin.getProxyImplementation(address(protocolVersions)) == protocolVersionsImpl, "PVER-20", _errors - ); - + function assertValidSuperchainConfig(string memory _errors) internal view returns (string memory) { + _errors = internalRequire(!superchainConfig.paused(), "SPRCFG-10", _errors); return _errors; } @@ -594,12 +548,11 @@ contract StandardValidatorV180 is StandardValidatorBase { constructor( ImplementationsBase memory _implementations, ISuperchainConfig _superchainConfig, - IProtocolVersions _protocolVersions, address _l1PAOMultisig, address _mips, address _challenger ) - StandardValidatorBase(_implementations, _superchainConfig, _protocolVersions, _l1PAOMultisig, _mips, _challenger) + StandardValidatorBase(_implementations, _superchainConfig, _l1PAOMultisig, _mips, _challenger) { } function validate(InputV180 memory _input, bool _allowFailure) public view returns (string memory) { @@ -626,12 +579,11 @@ contract StandardValidatorV200 is StandardValidatorBase { constructor( ImplementationsBase memory _implementations, ISuperchainConfig _superchainConfig, - IProtocolVersions _protocolVersions, address _l1PAOMultisig, address _mips, address _challenger ) - StandardValidatorBase(_implementations, _superchainConfig, _protocolVersions, _l1PAOMultisig, _mips, _challenger) + StandardValidatorBase(_implementations, _superchainConfig, _l1PAOMultisig, _mips, _challenger) { } function validate(InputV200 memory _input, bool _allowFailure) public view returns (string memory) { @@ -668,14 +620,6 @@ contract StandardValidatorV200 is StandardValidatorBase { return _errors; } - function superchainConfigVersion() public pure override returns (string memory) { - return "1.2.0"; - } - - function protocolVersionsVersion() public pure override returns (string memory) { - return "1.1.0"; - } - function l1ERC721BridgeVersion() public pure override returns (string memory) { return "2.3.0"; } diff --git a/packages/contracts-bedrock/test/L1/StandardValidator.t.sol b/packages/contracts-bedrock/test/L1/StandardValidator.t.sol index 2f02ac3b46c..9e6062bc9f2 100644 --- a/packages/contracts-bedrock/test/L1/StandardValidator.t.sol +++ b/packages/contracts-bedrock/test/L1/StandardValidator.t.sol @@ -33,12 +33,10 @@ import { IDisputeGame } from "interfaces/dispute/IDisputeGame.sol"; import { IMIPS } from "interfaces/cannon/IMIPS.sol"; import { IL1StandardBridge } from "interfaces/L1/IL1StandardBridge.sol"; import { IStandardBridge } from "interfaces/universal/IStandardBridge.sol"; -import { IProtocolVersions } from "interfaces/L1/IProtocolVersions.sol"; abstract contract StandardValidatorTest is Test { // Common state variables used across all validator versions ISuperchainConfig superchainConfig; - IProtocolVersions protocolVersions; address l1PAOMultisig; address mips; address guardian; @@ -74,7 +72,6 @@ abstract contract StandardValidatorTest is Test { function setUp() public virtual { // Setup test addresses superchainConfig = ISuperchainConfig(makeAddr("superchainConfig")); - protocolVersions = IProtocolVersions(makeAddr("protocolVersions")); l1PAOMultisig = makeAddr("l1PAOMultisig"); mips = makeAddr("mips"); guardian = makeAddr("guardian"); @@ -121,41 +118,10 @@ abstract contract StandardValidatorTest is Test { /// @notice Tests validation of SuperchainConfig function test_validate_superchainConfig_succeeds() public { - // Test invalid version - _mockValidationCalls(); - vm.mockCall(address(superchainConfig), abi.encodeCall(ISemver.version, ()), abi.encode("99.0.0")); - assertEq("SPRCFG-10", validate(true)); - - // Test invalid implementation - _mockValidationCalls(); - vm.mockCall( - address(proxyAdmin), - abi.encodeCall(IProxyAdmin.getProxyImplementation, (address(superchainConfig))), - abi.encode(address(0xbad)) - ); - assertEq("SPRCFG-20", validate(true)); - // Test invalid paused _mockValidationCalls(); vm.mockCall(address(superchainConfig), abi.encodeCall(ISuperchainConfig.paused, ()), abi.encode(true)); - assertEq("SPRCFG-30,PORTAL-70", validate(true)); - } - - /// @notice Tests validation of ProtocolVersions - function test_validate_protocolVersions_succeeds() public { - // Test invalid version - _mockValidationCalls(); - vm.mockCall(address(protocolVersions), abi.encodeCall(ISemver.version, ()), abi.encode("99.0.0")); - assertEq("PVER-10", validate(true)); - - // Test invalid implementation - _mockValidationCalls(); - vm.mockCall( - address(proxyAdmin), - abi.encodeCall(IProxyAdmin.getProxyImplementation, (address(protocolVersions))), - abi.encode(address(0xbad)) - ); - assertEq("PVER-20", validate(true)); + assertEq("SPRCFG-10,PORTAL-70", validate(true)); } /// @notice Tests that validation fails with invalid proxy admin owner @@ -642,22 +608,6 @@ abstract contract StandardValidatorTest is Test { function _mockValidationCalls() internal virtual { StandardValidatorBase validator = getValidator(); - // Mock SuperchainConfig version and implementation - vm.mockCall(address(superchainConfig), abi.encodeCall(ISemver.version, ()), abi.encode("1.1.0")); - vm.mockCall( - address(proxyAdmin), - abi.encodeCall(IProxyAdmin.getProxyImplementation, (address(superchainConfig))), - abi.encode(validator.superchainConfigImpl()) - ); - - // Mock ProtocolVersions version and implementation - vm.mockCall(address(protocolVersions), abi.encodeCall(ISemver.version, ()), abi.encode("1.0.0")); - vm.mockCall( - address(proxyAdmin), - abi.encodeCall(IProxyAdmin.getProxyImplementation, (address(protocolVersions))), - abi.encode(validator.protocolVersionsImpl()) - ); - // Mock OptimismPortal superchainConfig call vm.mockCall( address(optimismPortal), abi.encodeCall(IOptimismPortal2.superchainConfig, ()), abi.encode(superchainConfig) @@ -1025,8 +975,6 @@ contract StandardValidatorV180_Test is StandardValidatorTest { // Deploy validator with all required constructor args validator = new StandardValidatorV180( StandardValidatorBase.ImplementationsBase({ - superchainConfigImpl: makeAddr("superchainConfigImpl"), - protocolVersionsImpl: makeAddr("protocolVersionsImpl"), systemConfigImpl: makeAddr("systemConfigImpl"), optimismPortalImpl: makeAddr("optimismPortalImpl"), l1CrossDomainMessengerImpl: makeAddr("l1CrossDomainMessengerImpl"), @@ -1039,7 +987,6 @@ contract StandardValidatorV180_Test is StandardValidatorTest { delayedWETHImpl: makeAddr("delayedWETHImpl") }), superchainConfig, - protocolVersions, l1PAOMultisig, mips, challenger @@ -1056,8 +1003,6 @@ contract StandardValidatorV180_Test is StandardValidatorTest { StandardValidatorV180 mainnetValidator = new StandardValidatorV180( StandardValidatorBase.ImplementationsBase({ - superchainConfigImpl: address(0x53c165169401764778F780a69701385eb0FF19B7), - protocolVersionsImpl: address(0x42F0bD8313ad456A38061308857b2383fe2c72a0), systemConfigImpl: address(0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375), optimismPortalImpl: address(0xe2F826324b2faf99E513D16D266c3F80aE87832B), l1CrossDomainMessengerImpl: address(0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65), @@ -1070,7 +1015,6 @@ contract StandardValidatorV180_Test is StandardValidatorTest { delayedWETHImpl: address(0x71e966Ae981d1ce531a7b6d23DC0f27B38409087) }), ISuperchainConfig(address(0x95703e0982140D16f8ebA6d158FccEde42f04a4C)), - IProtocolVersions(address(0x8062AbC286f5e7D9428a0Ccb9AbD71e50d93b935)), address(0x5a0Aae59D09fccBdDb6C6CcEB07B7279367C3d2A), // l1PAOMultisig address(0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C), // mips address(0x9BA6e03D8B90dE867373Db8cF1A58d2F7F006b3A) // challenger @@ -1131,8 +1075,6 @@ contract StandardValidatorV200_Test is StandardValidatorTest { // Deploy validator with all required constructor args validator = new StandardValidatorV200( StandardValidatorBase.ImplementationsBase({ - superchainConfigImpl: makeAddr("superchainConfigImpl"), - protocolVersionsImpl: makeAddr("protocolVersionsImpl"), systemConfigImpl: makeAddr("systemConfigImpl"), optimismPortalImpl: makeAddr("optimismPortalImpl"), l1CrossDomainMessengerImpl: makeAddr("l1CrossDomainMessengerImpl"), @@ -1145,7 +1087,6 @@ contract StandardValidatorV200_Test is StandardValidatorTest { delayedWETHImpl: makeAddr("delayedWETHImpl") }), superchainConfig, - protocolVersions, l1PAOMultisig, mips, challenger @@ -1194,8 +1135,6 @@ contract StandardValidatorV200_Test is StandardValidatorTest { super._mockValidationCalls(); // Override version numbers for V200 - vm.mockCall(address(superchainConfig), abi.encodeCall(ISemver.version, ()), abi.encode("1.2.0")); - vm.mockCall(address(protocolVersions), abi.encodeCall(ISemver.version, ()), abi.encode("1.1.0")); vm.mockCall(address(l1ERC721Bridge), abi.encodeCall(ISemver.version, ()), abi.encode("2.3.0")); vm.mockCall(address(optimismPortal), abi.encodeCall(ISemver.version, ()), abi.encode("3.12.0")); vm.mockCall(address(systemConfig), abi.encodeCall(ISemver.version, ()), abi.encode("2.4.0")); diff --git a/packages/contracts-bedrock/test/universal/Specs.t.sol b/packages/contracts-bedrock/test/universal/Specs.t.sol index 9440d7c66f3..dfc902db05a 100644 --- a/packages/contracts-bedrock/test/universal/Specs.t.sol +++ b/packages/contracts-bedrock/test/universal/Specs.t.sol @@ -1023,12 +1023,9 @@ contract Specification_Test is CommonTest { _addSpec({ _name: "LivenessModule", _sel: _getSel("version()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("superchainConfig()") }); - _addSpec({ _name: "StandardValidator", _sel: _getSel("protocolVersions()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("l1PAOMultisig()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("mips()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("challenger()") }); - _addSpec({ _name: "StandardValidator", _sel: _getSel("superchainConfigImpl()") }); - _addSpec({ _name: "StandardValidator", _sel: _getSel("protocolVersionsImpl()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("l1ERC721BridgeImpl()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("optimismPortalImpl()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("systemConfigImpl()") }); @@ -1039,8 +1036,6 @@ contract Specification_Test is CommonTest { _addSpec({ _name: "StandardValidator", _sel: _getSel("anchorStateRegistryImpl()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("delayedWETHImpl()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("mipsImpl()") }); - _addSpec({ _name: "StandardValidator", _sel: _getSel("superchainConfigVersion()") }); - _addSpec({ _name: "StandardValidator", _sel: _getSel("protocolVersionsVersion()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("systemConfigVersion()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("permissionedDisputeGameVersion()") }); _addSpec({ _name: "StandardValidator", _sel: _getSel("mipsVersion()") });