Commit 906a7a6f authored by clabby's avatar clabby Committed by GitHub

feat(ctb): `SystemConfig` updates for FPs (#10315)

Updates the system config with a major version bump for a
`DisputeGameFactory` in lieu of the deprecated `L2OutputOracle`.
parent 7e3e9af7
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 356410)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_1() (gas: 2954595)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 549197)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 4061173)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 450326)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 3496075)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_0() (gas: 356538)
GasBenchMark_L1CrossDomainMessenger:test_sendMessage_benchmark_1() (gas: 2954723)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_0() (gas: 549153)
GasBenchMark_L1StandardBridge_Deposit:test_depositERC20_benchmark_1() (gas: 4061129)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_0() (gas: 450282)
GasBenchMark_L1StandardBridge_Deposit:test_depositETH_benchmark_1() (gas: 3496031)
GasBenchMark_L1StandardBridge_Finalize:test_finalizeETHWithdrawal_benchmark() (gas: 59809)
GasBenchMark_L2OutputOracle:test_proposeL2Output_benchmark() (gas: 92950)
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark() (gas: 68398)
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark_1() (gas: 69062)
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark() (gas: 68354)
GasBenchMark_OptimismPortal:test_depositTransaction_benchmark_1() (gas: 69018)
GasBenchMark_OptimismPortal:test_proveWithdrawalTransaction_benchmark() (gas: 155567)
\ No newline at end of file
......@@ -92,7 +92,7 @@ library ChainAssertions {
require(config.l1CrossDomainMessenger() == _contracts.L1CrossDomainMessenger);
require(config.l1ERC721Bridge() == _contracts.L1ERC721Bridge);
require(config.l1StandardBridge() == _contracts.L1StandardBridge);
require(config.l2OutputOracle() == _contracts.L2OutputOracle);
require(config.disputeGameFactory() == _contracts.DisputeGameFactory);
require(config.optimismPortal() == _contracts.OptimismPortal);
require(config.optimismMintableERC20Factory() == _contracts.OptimismMintableERC20Factory);
} else {
......@@ -115,7 +115,7 @@ library ChainAssertions {
require(config.l1CrossDomainMessenger() == address(0));
require(config.l1ERC721Bridge() == address(0));
require(config.l1StandardBridge() == address(0));
require(config.l2OutputOracle() == address(0));
require(config.disputeGameFactory() == address(0));
require(config.optimismPortal() == address(0));
require(config.optimismMintableERC20Factory() == address(0));
}
......
......@@ -960,7 +960,7 @@ contract Deploy is Deployer {
l1CrossDomainMessenger: mustGetAddress("L1CrossDomainMessengerProxy"),
l1ERC721Bridge: mustGetAddress("L1ERC721BridgeProxy"),
l1StandardBridge: mustGetAddress("L1StandardBridgeProxy"),
l2OutputOracle: mustGetAddress("L2OutputOracleProxy"),
disputeGameFactory: mustGetAddress("DisputeGameFactoryProxy"),
optimismPortal: mustGetAddress("OptimismPortalProxy"),
optimismMintableERC20Factory: mustGetAddress("OptimismMintableERC20FactoryProxy")
})
......
......@@ -48,8 +48,8 @@
"sourceCodeHash": "0xd6a894e371c2c7182b5960c507491f81c3775dda0efedd29475f7c30ca07b004"
},
"src/L1/SystemConfig.sol": {
"initCodeHash": "0xa14bfe090e923acbacb361d9aa60e0d56fc1dff158ddbd1dc221a5380679f37f",
"sourceCodeHash": "0x58d078f2f352ccb9001afe8245f4655b47ed0227189ede9ef56523b2193059bd"
"initCodeHash": "0x94804d06c3cec9beb36a90ac1221b001e7bf116e1687e4b1e640d1d80403939d",
"sourceCodeHash": "0x516cfca572099866096f85139a3dc9904d72ab32b5ba5b703b37a4b8555c8387"
},
"src/L2/BaseFeeVault.sol": {
"initCodeHash": "0x2744d34573be83206d1b75d049d18a7bb37f9058e68c0803e5008c46b0dc2474",
......
......@@ -17,6 +17,19 @@
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DISPUTE_GAME_FACTORY_SLOT",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "L1_CROSS_DOMAIN_MESSENGER_SLOT",
......@@ -160,6 +173,19 @@
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "disputeGameFactory",
"outputs": [
{
"internalType": "address",
"name": "addr_",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "gasLimit",
......@@ -266,7 +292,7 @@
},
{
"internalType": "address",
"name": "l2OutputOracle",
"name": "disputeGameFactory",
"type": "address"
},
{
......@@ -329,19 +355,6 @@
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "l2OutputOracle",
"outputs": [
{
"internalType": "address",
"name": "addr_",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "minimumGasLimit",
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -31,7 +31,7 @@ contract SystemConfig is OwnableUpgradeable, ISemver {
address l1CrossDomainMessenger;
address l1ERC721Bridge;
address l1StandardBridge;
address l2OutputOracle;
address disputeGameFactory;
address optimismPortal;
address optimismMintableERC20Factory;
}
......@@ -60,6 +60,7 @@ contract SystemConfig is OwnableUpgradeable, ISemver {
bytes32 public constant L1_STANDARD_BRIDGE_SLOT = bytes32(uint256(keccak256("systemconfig.l1standardbridge")) - 1);
/// @notice Storage slot that the L2OutputOracle address is stored at.
/// @custom:deprecated
bytes32 public constant L2_OUTPUT_ORACLE_SLOT = bytes32(uint256(keccak256("systemconfig.l2outputoracle")) - 1);
/// @notice Storage slot that the OptimismPortal address is stored at.
......@@ -75,6 +76,10 @@ contract SystemConfig is OwnableUpgradeable, ISemver {
/// @notice Storage slot for block at which the op-node can start searching for logs from.
bytes32 public constant START_BLOCK_SLOT = bytes32(uint256(keccak256("systemconfig.startBlock")) - 1);
/// @notice Storage slot for the DisputeGameFactory address.
bytes32 public constant DISPUTE_GAME_FACTORY_SLOT =
bytes32(uint256(keccak256("systemconfig.disputegamefactory")) - 1);
/// @notice Fixed L2 gas overhead. Used as part of the L2 fee calculation.
uint256 public overhead;
......@@ -101,8 +106,8 @@ contract SystemConfig is OwnableUpgradeable, ISemver {
event ConfigUpdate(uint256 indexed version, UpdateType indexed updateType, bytes data);
/// @notice Semantic version.
/// @custom:semver 1.12.0
string public constant version = "1.12.0";
/// @custom:semver 2.0.0
string public constant version = "2.0.0";
/// @notice Constructs the SystemConfig contract. Cannot set
/// the owner to `address(0)` due to the Ownable contract's
......@@ -131,7 +136,7 @@ contract SystemConfig is OwnableUpgradeable, ISemver {
l1CrossDomainMessenger: address(0),
l1ERC721Bridge: address(0),
l1StandardBridge: address(0),
l2OutputOracle: address(0),
disputeGameFactory: address(0),
optimismPortal: address(0),
optimismMintableERC20Factory: address(0)
})
......@@ -177,7 +182,7 @@ contract SystemConfig is OwnableUpgradeable, ISemver {
Storage.setAddress(L1_CROSS_DOMAIN_MESSENGER_SLOT, _addresses.l1CrossDomainMessenger);
Storage.setAddress(L1_ERC_721_BRIDGE_SLOT, _addresses.l1ERC721Bridge);
Storage.setAddress(L1_STANDARD_BRIDGE_SLOT, _addresses.l1StandardBridge);
Storage.setAddress(L2_OUTPUT_ORACLE_SLOT, _addresses.l2OutputOracle);
Storage.setAddress(DISPUTE_GAME_FACTORY_SLOT, _addresses.disputeGameFactory);
Storage.setAddress(OPTIMISM_PORTAL_SLOT, _addresses.optimismPortal);
Storage.setAddress(OPTIMISM_MINTABLE_ERC20_FACTORY_SLOT, _addresses.optimismMintableERC20Factory);
......@@ -220,9 +225,9 @@ contract SystemConfig is OwnableUpgradeable, ISemver {
addr_ = Storage.getAddress(L1_STANDARD_BRIDGE_SLOT);
}
/// @notice Getter for the L2OutputOracle address.
function l2OutputOracle() external view returns (address addr_) {
addr_ = Storage.getAddress(L2_OUTPUT_ORACLE_SLOT);
/// @notice Getter for the DisputeGameFactory address.
function disputeGameFactory() external view returns (address addr_) {
addr_ = Storage.getAddress(DISPUTE_GAME_FACTORY_SLOT);
}
/// @notice Getter for the OptimismPortal address.
......
......@@ -65,7 +65,7 @@ contract SystemConfig_Initialize_Test is SystemConfig_Init {
assertEq(address(impl.l1CrossDomainMessenger()), address(0));
assertEq(address(impl.l1ERC721Bridge()), address(0));
assertEq(address(impl.l1StandardBridge()), address(0));
assertEq(address(impl.l2OutputOracle()), address(0));
assertEq(address(impl.disputeGameFactory()), address(0));
assertEq(address(impl.optimismPortal()), address(0));
assertEq(address(impl.optimismMintableERC20Factory()), address(0));
}
......@@ -95,7 +95,7 @@ contract SystemConfig_Initialize_Test is SystemConfig_Init {
assertEq(address(systemConfig.l1CrossDomainMessenger()), address(l1CrossDomainMessenger));
assertEq(address(systemConfig.l1ERC721Bridge()), address(l1ERC721Bridge));
assertEq(address(systemConfig.l1StandardBridge()), address(l1StandardBridge));
assertEq(address(systemConfig.l2OutputOracle()), address(l2OutputOracle));
assertEq(address(systemConfig.disputeGameFactory()), address(disputeGameFactory));
assertEq(address(systemConfig.optimismPortal()), address(optimismPortal));
assertEq(address(systemConfig.optimismMintableERC20Factory()), address(optimismMintableERC20Factory));
}
......@@ -126,7 +126,7 @@ contract SystemConfig_Initialize_TestFail is SystemConfig_Initialize_Test {
l1CrossDomainMessenger: address(0),
l1ERC721Bridge: address(0),
l1StandardBridge: address(0),
l2OutputOracle: address(0),
disputeGameFactory: address(0),
optimismPortal: address(0),
optimismMintableERC20Factory: address(0)
})
......@@ -155,7 +155,7 @@ contract SystemConfig_Initialize_TestFail is SystemConfig_Initialize_Test {
l1CrossDomainMessenger: address(0),
l1ERC721Bridge: address(0),
l1StandardBridge: address(0),
l2OutputOracle: address(0),
disputeGameFactory: address(0),
optimismPortal: address(0),
optimismMintableERC20Factory: address(0)
})
......@@ -185,7 +185,7 @@ contract SystemConfig_Initialize_TestFail is SystemConfig_Initialize_Test {
l1CrossDomainMessenger: address(0),
l1ERC721Bridge: address(0),
l1StandardBridge: address(0),
l2OutputOracle: address(0),
disputeGameFactory: address(0),
optimismPortal: address(0),
optimismMintableERC20Factory: address(0)
})
......
......@@ -31,7 +31,7 @@ contract SystemConfig_GasLimitLowerBound_Invariant is Test {
l1CrossDomainMessenger: address(0),
l1ERC721Bridge: address(0),
l1StandardBridge: address(0),
l2OutputOracle: address(0),
disputeGameFactory: address(0),
optimismPortal: address(0),
optimismMintableERC20Factory: address(0)
})
......
......@@ -30,7 +30,7 @@ contract DeploymentSummary is DeploymentSummaryCode {
address internal constant safeSingletonAddress = 0x90193C961A926261B756D1E5bb255e67ff9498A1;
address internal constant superchainConfigAddress = 0x068E44eB31e111028c41598E4535be7468674D0A;
address internal constant superchainConfigProxyAddress = 0xDEb1E9a6Be7Baf84208BB6E10aC9F9bbE1D70809;
address internal constant systemConfigAddress = 0xffbA8944650e26653823658d76A122946F27e2f2;
address internal constant systemConfigAddress = 0xD0D3Fd8cE0Ce980F6365c6bE1bfaD9892B979846;
address internal constant systemConfigProxyAddress = 0x1c23A6d89F95ef3148BCDA8E242cAb145bf9c0E4;
address internal constant systemOwnerSafeAddress = 0x2601573C28B77dea6C8B73385c25024A28a00C3F;
......@@ -281,7 +281,7 @@ contract DeploymentSummary is DeploymentSummaryCode {
value = hex"0000000000000000000000000000000000000000000000000000000000000003";
vm.store(systemOwnerSafeAddress, slot, value);
slot = hex"360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc";
value = hex"000000000000000000000000ffba8944650e26653823658d76a122946f27e2f2";
value = hex"000000000000000000000000d0d3fd8ce0ce980f6365c6be1bfad9892b979846";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"0000000000000000000000000000000000000000000000000000000000000000";
value = hex"0000000000000000000000000000000000000000000000000000000000000001";
......@@ -322,9 +322,6 @@ contract DeploymentSummary is DeploymentSummaryCode {
slot = hex"9904ba90dde5696cda05c9e0dab5cbaa0fea005ace4d11218a02ac668dad6376";
value = hex"0000000000000000000000000c8b5822b6e02cda722174f19a1439a7495a3fa6";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"e52a667f71ec761b9b381c7b76ca9b852adf7e8905da0e0ad49986a0a6871815";
value = hex"0000000000000000000000008b71b41d4dbeb2b6821d44692d3facaaf77480bb";
vm.store(systemConfigProxyAddress, slot, value);
slot = hex"4b6c74f9e688cb39801f2112c14a8c57232a3fc5202e1444126d4bce86eb19ac";
value = hex"000000000000000000000000978e3286eb805934215a88694d80b09aded68d90";
vm.store(systemConfigProxyAddress, slot, value);
......
......@@ -178,7 +178,7 @@ contract Initializer_Test is Bridge_Initializer {
l1CrossDomainMessenger: address(0),
l1ERC721Bridge: address(0),
l1StandardBridge: address(0),
l2OutputOracle: address(0),
disputeGameFactory: address(0),
optimismPortal: address(0),
optimismMintableERC20Factory: address(0)
})
......@@ -213,7 +213,7 @@ contract Initializer_Test is Bridge_Initializer {
l1CrossDomainMessenger: address(0),
l1ERC721Bridge: address(0),
l1StandardBridge: address(0),
l2OutputOracle: address(0),
disputeGameFactory: address(0),
optimismPortal: address(0),
optimismMintableERC20Factory: address(0)
})
......
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