======================= 👁👁 STORAGE LAYOUT snapshot 👁👁 ======================= ======================= ➡ src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger ======================= | Name | Type | Slot | Offset | Bytes | Contract | |--------------------|--------------------------|------|--------|-------|----------------------------------------------------------| | spacer_0_0_20 | address | 0 | 0 | 20 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | _initialized | uint8 | 0 | 20 | 1 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | _initializing | bool | 0 | 21 | 1 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | spacer_1_0_1600 | uint256[50] | 1 | 0 | 1600 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | spacer_51_0_20 | address | 51 | 0 | 20 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | spacer_52_0_1568 | uint256[49] | 52 | 0 | 1568 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | spacer_101_0_1 | bool | 101 | 0 | 1 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | spacer_102_0_1568 | uint256[49] | 102 | 0 | 1568 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | spacer_151_0_32 | uint256 | 151 | 0 | 32 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | spacer_152_0_1568 | uint256[49] | 152 | 0 | 1568 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | spacer_201_0_32 | mapping(bytes32 => bool) | 201 | 0 | 32 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | spacer_202_0_32 | mapping(bytes32 => bool) | 202 | 0 | 32 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | successfulMessages | mapping(bytes32 => bool) | 203 | 0 | 32 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | xDomainMsgSender | address | 204 | 0 | 20 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | msgNonce | uint240 | 205 | 0 | 30 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | failedMessages | mapping(bytes32 => bool) | 206 | 0 | 32 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | __gap | uint256[42] | 207 | 0 | 1344 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | | PORTAL | contract OptimismPortal | 249 | 0 | 20 | src/L1/L1CrossDomainMessenger.sol:L1CrossDomainMessenger | ======================= ➡ src/L1/L1StandardBridge.sol:L1StandardBridge ======================= | Name | Type | Slot | Offset | Bytes | Contract | |---------------|-------------------------------------------------|------|--------|-------|----------------------------------------------| | _initialized | uint8 | 0 | 0 | 1 | src/L1/L1StandardBridge.sol:L1StandardBridge | | _initializing | bool | 0 | 1 | 1 | src/L1/L1StandardBridge.sol:L1StandardBridge | | spacer_0_2_20 | address | 0 | 2 | 20 | src/L1/L1StandardBridge.sol:L1StandardBridge | | spacer_1_0_20 | address | 1 | 0 | 20 | src/L1/L1StandardBridge.sol:L1StandardBridge | | deposits | mapping(address => mapping(address => uint256)) | 2 | 0 | 32 | src/L1/L1StandardBridge.sol:L1StandardBridge | | messenger | contract CrossDomainMessenger | 3 | 0 | 20 | src/L1/L1StandardBridge.sol:L1StandardBridge | | __gap | uint256[46] | 4 | 0 | 1472 | src/L1/L1StandardBridge.sol:L1StandardBridge | ======================= ➡ src/L1/L2OutputOracle.sol:L2OutputOracle ======================= | Name | Type | Slot | Offset | Bytes | Contract | |---------------------|-------------------------------|------|--------|-------|------------------------------------------| | _initialized | uint8 | 0 | 0 | 1 | src/L1/L2OutputOracle.sol:L2OutputOracle | | _initializing | bool | 0 | 1 | 1 | src/L1/L2OutputOracle.sol:L2OutputOracle | | startingBlockNumber | uint256 | 1 | 0 | 32 | src/L1/L2OutputOracle.sol:L2OutputOracle | | startingTimestamp | uint256 | 2 | 0 | 32 | src/L1/L2OutputOracle.sol:L2OutputOracle | | l2Outputs | struct Types.OutputProposal[] | 3 | 0 | 32 | src/L1/L2OutputOracle.sol:L2OutputOracle | | challenger | address | 4 | 0 | 20 | src/L1/L2OutputOracle.sol:L2OutputOracle | | proposer | address | 5 | 0 | 20 | src/L1/L2OutputOracle.sol:L2OutputOracle | ======================= ➡ src/L1/OptimismPortal.sol:OptimismPortal ======================= | Name | Type | Slot | Offset | Bytes | Contract | |----------------------|------------------------------------------------------------|------|--------|-------|------------------------------------------| | _initialized | uint8 | 0 | 0 | 1 | src/L1/OptimismPortal.sol:OptimismPortal | | _initializing | bool | 0 | 1 | 1 | src/L1/OptimismPortal.sol:OptimismPortal | | params | struct ResourceMetering.ResourceParams | 1 | 0 | 32 | src/L1/OptimismPortal.sol:OptimismPortal | | __gap | uint256[48] | 2 | 0 | 1536 | src/L1/OptimismPortal.sol:OptimismPortal | | l2Sender | address | 50 | 0 | 20 | src/L1/OptimismPortal.sol:OptimismPortal | | finalizedWithdrawals | mapping(bytes32 => bool) | 51 | 0 | 32 | src/L1/OptimismPortal.sol:OptimismPortal | | provenWithdrawals | mapping(bytes32 => struct OptimismPortal.ProvenWithdrawal) | 52 | 0 | 32 | src/L1/OptimismPortal.sol:OptimismPortal | | paused | bool | 53 | 0 | 1 | src/L1/OptimismPortal.sol:OptimismPortal | | l2Oracle | contract L2OutputOracle | 53 | 1 | 20 | src/L1/OptimismPortal.sol:OptimismPortal | | systemConfig | contract SystemConfig | 54 | 0 | 20 | src/L1/OptimismPortal.sol:OptimismPortal | | guardian | address | 55 | 0 | 20 | src/L1/OptimismPortal.sol:OptimismPortal | ======================= ➡ src/L1/SystemConfig.sol:SystemConfig ======================= | Name | Type | Slot | Offset | Bytes | Contract | |-----------------|----------------------------------------|------|--------|-------|--------------------------------------| | _initialized | uint8 | 0 | 0 | 1 | src/L1/SystemConfig.sol:SystemConfig | | _initializing | bool | 0 | 1 | 1 | src/L1/SystemConfig.sol:SystemConfig | | __gap | uint256[50] | 1 | 0 | 1600 | src/L1/SystemConfig.sol:SystemConfig | | _owner | address | 51 | 0 | 20 | src/L1/SystemConfig.sol:SystemConfig | | __gap | uint256[49] | 52 | 0 | 1568 | src/L1/SystemConfig.sol:SystemConfig | | overhead | uint256 | 101 | 0 | 32 | src/L1/SystemConfig.sol:SystemConfig | | scalar | uint256 | 102 | 0 | 32 | src/L1/SystemConfig.sol:SystemConfig | | batcherHash | bytes32 | 103 | 0 | 32 | src/L1/SystemConfig.sol:SystemConfig | | gasLimit | uint64 | 104 | 0 | 8 | src/L1/SystemConfig.sol:SystemConfig | | _resourceConfig | struct ResourceMetering.ResourceConfig | 105 | 0 | 32 | src/L1/SystemConfig.sol:SystemConfig | | startBlock | uint256 | 106 | 0 | 32 | src/L1/SystemConfig.sol:SystemConfig | ======================= ➡ src/L1/L1ERC721Bridge.sol:L1ERC721Bridge ======================= | Name | Type | Slot | Offset | Bytes | Contract | |---------------|------------------------------------------------------------------|------|--------|-------|------------------------------------------| | _initialized | uint8 | 0 | 0 | 1 | src/L1/L1ERC721Bridge.sol:L1ERC721Bridge | | _initializing | bool | 0 | 1 | 1 | src/L1/L1ERC721Bridge.sol:L1ERC721Bridge | | messenger | contract CrossDomainMessenger | 0 | 2 | 20 | src/L1/L1ERC721Bridge.sol:L1ERC721Bridge | | __gap | uint256[48] | 1 | 0 | 1536 | src/L1/L1ERC721Bridge.sol:L1ERC721Bridge | | deposits | mapping(address => mapping(address => mapping(uint256 => bool))) | 49 | 0 | 32 | src/L1/L1ERC721Bridge.sol:L1ERC721Bridge | ======================= ➡ src/legacy/DeployerWhitelist.sol:DeployerWhitelist ======================= | Name | Type | Slot | Offset | Bytes | Contract | |-----------|--------------------------|------|--------|-------|----------------------------------------------------| | owner | address | 0 | 0 | 20 | src/legacy/DeployerWhitelist.sol:DeployerWhitelist | | whitelist | mapping(address => bool) | 1 | 0 | 32 | src/legacy/DeployerWhitelist.sol:DeployerWhitelist | ======================= ➡ src/L2/L1Block.sol:L1Block ======================= | Name | Type | Slot | Offset | Bytes | Contract | |----------------|---------|------|--------|-------|----------------------------| | number | uint64 | 0 | 0 | 8 | src/L2/L1Block.sol:L1Block | | timestamp | uint64 | 0 | 8 | 8 | src/L2/L1Block.sol:L1Block | | basefee | uint256 | 1 | 0 | 32 | src/L2/L1Block.sol:L1Block | | hash | bytes32 | 2 | 0 | 32 | src/L2/L1Block.sol:L1Block | | sequenceNumber | uint64 | 3 | 0 | 8 | src/L2/L1Block.sol:L1Block | | batcherHash | bytes32 | 4 | 0 | 32 | src/L2/L1Block.sol:L1Block | | l1FeeOverhead | uint256 | 5 | 0 | 32 | src/L2/L1Block.sol:L1Block | | l1FeeScalar | uint256 | 6 | 0 | 32 | src/L2/L1Block.sol:L1Block | ======================= ➡ src/legacy/L1BlockNumber.sol:L1BlockNumber ======================= | Name | Type | Slot | Offset | Bytes | Contract | |------|------|------|--------|-------|----------| ======================= ➡ src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger ======================= | Name | Type | Slot | Offset | Bytes | Contract | |--------------------|--------------------------|------|--------|-------|----------------------------------------------------------| | spacer_0_0_20 | address | 0 | 0 | 20 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | _initialized | uint8 | 0 | 20 | 1 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | _initializing | bool | 0 | 21 | 1 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | spacer_1_0_1600 | uint256[50] | 1 | 0 | 1600 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | spacer_51_0_20 | address | 51 | 0 | 20 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | spacer_52_0_1568 | uint256[49] | 52 | 0 | 1568 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | spacer_101_0_1 | bool | 101 | 0 | 1 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | spacer_102_0_1568 | uint256[49] | 102 | 0 | 1568 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | spacer_151_0_32 | uint256 | 151 | 0 | 32 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | spacer_152_0_1568 | uint256[49] | 152 | 0 | 1568 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | spacer_201_0_32 | mapping(bytes32 => bool) | 201 | 0 | 32 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | spacer_202_0_32 | mapping(bytes32 => bool) | 202 | 0 | 32 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | successfulMessages | mapping(bytes32 => bool) | 203 | 0 | 32 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | xDomainMsgSender | address | 204 | 0 | 20 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | msgNonce | uint240 | 205 | 0 | 30 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | failedMessages | mapping(bytes32 => bool) | 206 | 0 | 32 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | | __gap | uint256[42] | 207 | 0 | 1344 | src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger | ======================= ➡ src/L2/L2StandardBridge.sol:L2StandardBridge ======================= | Name | Type | Slot | Offset | Bytes | Contract | |---------------|-------------------------------------------------|------|--------|-------|----------------------------------------------| | _initialized | uint8 | 0 | 0 | 1 | src/L2/L2StandardBridge.sol:L2StandardBridge | | _initializing | bool | 0 | 1 | 1 | src/L2/L2StandardBridge.sol:L2StandardBridge | | spacer_0_2_20 | address | 0 | 2 | 20 | src/L2/L2StandardBridge.sol:L2StandardBridge | | spacer_1_0_20 | address | 1 | 0 | 20 | src/L2/L2StandardBridge.sol:L2StandardBridge | | deposits | mapping(address => mapping(address => uint256)) | 2 | 0 | 32 | src/L2/L2StandardBridge.sol:L2StandardBridge | | messenger | contract CrossDomainMessenger | 3 | 0 | 20 | src/L2/L2StandardBridge.sol:L2StandardBridge | | __gap | uint256[46] | 4 | 0 | 1472 | src/L2/L2StandardBridge.sol:L2StandardBridge | ======================= ➡ src/L2/L2ToL1MessagePasser.sol:L2ToL1MessagePasser ======================= | Name | Type | Slot | Offset | Bytes | Contract | |--------------|--------------------------|------|--------|-------|----------------------------------------------------| | sentMessages | mapping(bytes32 => bool) | 0 | 0 | 32 | src/L2/L2ToL1MessagePasser.sol:L2ToL1MessagePasser | | msgNonce | uint240 | 1 | 0 | 30 | src/L2/L2ToL1MessagePasser.sol:L2ToL1MessagePasser | ======================= ➡ src/legacy/LegacyERC20ETH.sol:LegacyERC20ETH ======================= | Name | Type | Slot | Offset | Bytes | Contract | |--------------|-------------------------------------------------|------|--------|-------|----------------------------------------------| | _balances | mapping(address => uint256) | 0 | 0 | 32 | src/legacy/LegacyERC20ETH.sol:LegacyERC20ETH | | _allowances | mapping(address => mapping(address => uint256)) | 1 | 0 | 32 | src/legacy/LegacyERC20ETH.sol:LegacyERC20ETH | | _totalSupply | uint256 | 2 | 0 | 32 | src/legacy/LegacyERC20ETH.sol:LegacyERC20ETH | | _name | string | 3 | 0 | 32 | src/legacy/LegacyERC20ETH.sol:LegacyERC20ETH | | _symbol | string | 4 | 0 | 32 | src/legacy/LegacyERC20ETH.sol:LegacyERC20ETH | ======================= ➡ src/L2/SequencerFeeVault.sol:SequencerFeeVault ======================= | Name | Type | Slot | Offset | Bytes | Contract | |----------------|---------|------|--------|-------|------------------------------------------------| | totalProcessed | uint256 | 0 | 0 | 32 | src/L2/SequencerFeeVault.sol:SequencerFeeVault | ======================= ➡ src/L2/BaseFeeVault.sol:BaseFeeVault ======================= | Name | Type | Slot | Offset | Bytes | Contract | |----------------|---------|------|--------|-------|--------------------------------------| | totalProcessed | uint256 | 0 | 0 | 32 | src/L2/BaseFeeVault.sol:BaseFeeVault | ======================= ➡ src/L2/L1FeeVault.sol:L1FeeVault ======================= | Name | Type | Slot | Offset | Bytes | Contract | |----------------|---------|------|--------|-------|----------------------------------| | totalProcessed | uint256 | 0 | 0 | 32 | src/L2/L1FeeVault.sol:L1FeeVault | ======================= ➡ src/L2/L2ERC721Bridge.sol:L2ERC721Bridge ======================= | Name | Type | Slot | Offset | Bytes | Contract | |---------------|-------------------------------|------|--------|-------|------------------------------------------| | _initialized | uint8 | 0 | 0 | 1 | src/L2/L2ERC721Bridge.sol:L2ERC721Bridge | | _initializing | bool | 0 | 1 | 1 | src/L2/L2ERC721Bridge.sol:L2ERC721Bridge | | messenger | contract CrossDomainMessenger | 0 | 2 | 20 | src/L2/L2ERC721Bridge.sol:L2ERC721Bridge | | __gap | uint256[48] | 1 | 0 | 1536 | src/L2/L2ERC721Bridge.sol:L2ERC721Bridge | ======================= ➡ src/vendor/WETH9.sol:WETH9 ======================= | Name | Type | Slot | Offset | Bytes | Contract | |-----------|-------------------------------------------------|------|--------|-------|----------------------------| | name | string | 0 | 0 | 32 | src/vendor/WETH9.sol:WETH9 | | symbol | string | 1 | 0 | 32 | src/vendor/WETH9.sol:WETH9 | | decimals | uint8 | 2 | 0 | 1 | src/vendor/WETH9.sol:WETH9 | | balanceOf | mapping(address => uint256) | 3 | 0 | 32 | src/vendor/WETH9.sol:WETH9 | | allowance | mapping(address => mapping(address => uint256)) | 4 | 0 | 32 | src/vendor/WETH9.sol:WETH9 | ======================= ➡ src/universal/ProxyAdmin.sol:ProxyAdmin ======================= | Name | Type | Slot | Offset | Bytes | Contract | |--------------------|-----------------------------------------------|------|--------|-------|-----------------------------------------| | _owner | address | 0 | 0 | 20 | src/universal/ProxyAdmin.sol:ProxyAdmin | | proxyType | mapping(address => enum ProxyAdmin.ProxyType) | 1 | 0 | 32 | src/universal/ProxyAdmin.sol:ProxyAdmin | | implementationName | mapping(address => string) | 2 | 0 | 32 | src/universal/ProxyAdmin.sol:ProxyAdmin | | addressManager | contract AddressManager | 3 | 0 | 20 | src/universal/ProxyAdmin.sol:ProxyAdmin | | upgrading | bool | 3 | 20 | 1 | src/universal/ProxyAdmin.sol:ProxyAdmin | ======================= ➡ src/universal/Proxy.sol:Proxy ======================= | Name | Type | Slot | Offset | Bytes | Contract | |------|------|------|--------|-------|----------| ======================= ➡ src/legacy/L1ChugSplashProxy.sol:L1ChugSplashProxy ======================= | Name | Type | Slot | Offset | Bytes | Contract | |------|------|------|--------|-------|----------| ======================= ➡ src/universal/OptimismMintableERC20.sol:OptimismMintableERC20 ======================= | Name | Type | Slot | Offset | Bytes | Contract | |--------------|-------------------------------------------------|------|--------|-------|---------------------------------------------------------------| | _balances | mapping(address => uint256) | 0 | 0 | 32 | src/universal/OptimismMintableERC20.sol:OptimismMintableERC20 | | _allowances | mapping(address => mapping(address => uint256)) | 1 | 0 | 32 | src/universal/OptimismMintableERC20.sol:OptimismMintableERC20 | | _totalSupply | uint256 | 2 | 0 | 32 | src/universal/OptimismMintableERC20.sol:OptimismMintableERC20 | | _name | string | 3 | 0 | 32 | src/universal/OptimismMintableERC20.sol:OptimismMintableERC20 | | _symbol | string | 4 | 0 | 32 | src/universal/OptimismMintableERC20.sol:OptimismMintableERC20 | ======================= ➡ src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory ======================= | Name | Type | Slot | Offset | Bytes | Contract | |---------------|---------|------|--------|-------|-----------------------------------------------------------------------------| | _initialized | uint8 | 0 | 0 | 1 | src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory | | _initializing | bool | 0 | 1 | 1 | src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory | | bridge | address | 0 | 2 | 20 | src/universal/OptimismMintableERC20Factory.sol:OptimismMintableERC20Factory | ======================= ➡ src/dispute/DisputeGameFactory.sol:DisputeGameFactory ======================= | Name | Type | Slot | Offset | Bytes | Contract | |------------------|--------------------------------------------|------|--------|-------|-------------------------------------------------------| | _initialized | uint8 | 0 | 0 | 1 | src/dispute/DisputeGameFactory.sol:DisputeGameFactory | | _initializing | bool | 0 | 1 | 1 | src/dispute/DisputeGameFactory.sol:DisputeGameFactory | | __gap | uint256[50] | 1 | 0 | 1600 | src/dispute/DisputeGameFactory.sol:DisputeGameFactory | | _owner | address | 51 | 0 | 20 | src/dispute/DisputeGameFactory.sol:DisputeGameFactory | | __gap | uint256[49] | 52 | 0 | 1568 | src/dispute/DisputeGameFactory.sol:DisputeGameFactory | | gameImpls | mapping(GameType => contract IDisputeGame) | 101 | 0 | 32 | src/dispute/DisputeGameFactory.sol:DisputeGameFactory | | _disputeGames | mapping(Hash => GameId) | 102 | 0 | 32 | src/dispute/DisputeGameFactory.sol:DisputeGameFactory | | _disputeGameList | GameId[] | 103 | 0 | 32 | src/dispute/DisputeGameFactory.sol:DisputeGameFactory |