github.com/ethereum-optimism/optimism@v1.7.2/packages/contracts-bedrock/src/libraries/Predeploys.sol (about) 1 // SPDX-License-Identifier: MIT 2 pragma solidity ^0.8.0; 3 4 /// @title Predeploys 5 /// @notice Contains constant addresses for contracts that are pre-deployed to the L2 system. 6 library Predeploys { 7 /// @notice Address of the L2ToL1MessagePasser predeploy. 8 address internal constant L2_TO_L1_MESSAGE_PASSER = 0x4200000000000000000000000000000000000016; 9 10 /// @notice Address of the L2CrossDomainMessenger predeploy. 11 address internal constant L2_CROSS_DOMAIN_MESSENGER = 0x4200000000000000000000000000000000000007; 12 13 /// @notice Address of the L2StandardBridge predeploy. 14 address internal constant L2_STANDARD_BRIDGE = 0x4200000000000000000000000000000000000010; 15 16 /// @notice Address of the L2ERC721Bridge predeploy. 17 address internal constant L2_ERC721_BRIDGE = 0x4200000000000000000000000000000000000014; 18 19 //// @notice Address of the SequencerFeeWallet predeploy. 20 address internal constant SEQUENCER_FEE_WALLET = 0x4200000000000000000000000000000000000011; 21 22 /// @notice Address of the OptimismMintableERC20Factory predeploy. 23 address internal constant OPTIMISM_MINTABLE_ERC20_FACTORY = 0x4200000000000000000000000000000000000012; 24 25 /// @notice Address of the OptimismMintableERC721Factory predeploy. 26 address internal constant OPTIMISM_MINTABLE_ERC721_FACTORY = 0x4200000000000000000000000000000000000017; 27 28 /// @notice Address of the L1Block predeploy. 29 address internal constant L1_BLOCK_ATTRIBUTES = 0x4200000000000000000000000000000000000015; 30 31 /// @notice Address of the GasPriceOracle predeploy. Includes fee information 32 /// and helpers for computing the L1 portion of the transaction fee. 33 address internal constant GAS_PRICE_ORACLE = 0x420000000000000000000000000000000000000F; 34 35 /// @custom:legacy 36 /// @notice Address of the L1MessageSender predeploy. Deprecated. Use L2CrossDomainMessenger 37 /// or access tx.origin (or msg.sender) in a L1 to L2 transaction instead. 38 address internal constant L1_MESSAGE_SENDER = 0x4200000000000000000000000000000000000001; 39 40 /// @custom:legacy 41 /// @notice Address of the DeployerWhitelist predeploy. No longer active. 42 address internal constant DEPLOYER_WHITELIST = 0x4200000000000000000000000000000000000002; 43 44 /// @notice Address of the canonical WETH9 contract. 45 address internal constant WETH9 = 0x4200000000000000000000000000000000000006; 46 47 /// @custom:legacy 48 /// @notice Address of the LegacyERC20ETH predeploy. Deprecated. Balances are migrated to the 49 /// state trie as of the Bedrock upgrade. Contract has been locked and write functions 50 /// can no longer be accessed. 51 address internal constant LEGACY_ERC20_ETH = 0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000; 52 53 /// @custom:legacy 54 /// @notice Address of the L1BlockNumber predeploy. Deprecated. Use the L1Block predeploy 55 /// instead, which exposes more information about the L1 state. 56 address internal constant L1_BLOCK_NUMBER = 0x4200000000000000000000000000000000000013; 57 58 /// @custom:legacy 59 /// @notice Address of the LegacyMessagePasser predeploy. Deprecate. Use the updated 60 /// L2ToL1MessagePasser contract instead. 61 address internal constant LEGACY_MESSAGE_PASSER = 0x4200000000000000000000000000000000000000; 62 63 /// @notice Address of the ProxyAdmin predeploy. 64 address internal constant PROXY_ADMIN = 0x4200000000000000000000000000000000000018; 65 66 /// @notice Address of the BaseFeeVault predeploy. 67 address internal constant BASE_FEE_VAULT = 0x4200000000000000000000000000000000000019; 68 69 /// @notice Address of the L1FeeVault predeploy. 70 address internal constant L1_FEE_VAULT = 0x420000000000000000000000000000000000001A; 71 72 /// @notice Address of the GovernanceToken predeploy. 73 address internal constant GOVERNANCE_TOKEN = 0x4200000000000000000000000000000000000042; 74 75 /// @notice Address of the SchemaRegistry predeploy. 76 address internal constant SCHEMA_REGISTRY = 0x4200000000000000000000000000000000000020; 77 78 /// @notice Address of the EAS predeploy. 79 address internal constant EAS = 0x4200000000000000000000000000000000000021; 80 81 /// @notice Address of the MultiCall3 predeploy. 82 address internal constant MultiCall3 = 0xcA11bde05977b3631167028862bE2a173976CA11; 83 84 /// @notice Address of the Create2Deployer predeploy. 85 address internal constant Create2Deployer = 0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2; 86 87 /// @notice Address of the Safe_v130 predeploy. 88 address internal constant Safe_v130 = 0x69f4D1788e39c87893C980c06EdF4b7f686e2938; 89 90 /// @notice Address of the SafeL2_v130 predeploy. 91 address internal constant SafeL2_v130 = 0xfb1bffC9d739B8D520DaF37dF666da4C687191EA; 92 93 /// @notice Address of the MultiSendCallOnly_v130 predeploy. 94 address internal constant MultiSendCallOnly_v130 = 0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B; 95 96 /// @notice Address of the SafeSingletonFactory predeploy. 97 address internal constant SafeSingletonFactory = 0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7; 98 99 /// @notice Address of the DeterministicDeploymentProxy predeploy. 100 address internal constant DeterministicDeploymentProxy = 0x4e59b44847b379578588920cA78FbF26c0B4956C; 101 102 /// @notice Address of the MultiSend_v130 predeploy. 103 address internal constant MultiSend_v130 = 0x998739BFdAAdde7C933B942a68053933098f9EDa; 104 105 /// @notice Address of the Permit2 predeploy. 106 address internal constant Permit2 = 0x000000000022D473030F116dDEE9F6B43aC78BA3; 107 108 /// @notice Address of the SenderCreator predeploy. 109 address internal constant SenderCreator = 0x7fc98430eAEdbb6070B35B39D798725049088348; 110 111 /// @notice Address of the EntryPoint predeploy. 112 address internal constant EntryPoint = 0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789; 113 }