The OP Stack predeploys are a set of smart contracts deployed at deterministic addresses during the chain's genesis. These are not merely convenience contracts; they are the canonical interfaces for core protocol functions including cross-chain messaging (L2ToL1MessagePasser at 0x4200000000000000000000000000000000000016), gas fee calculation (GasPriceOracle at 0x420000000000000000000000000000000000000F), and the wrapped native token (WETH9 at 0x4200000000000000000000000000000000000006). Unlike contracts deployed post-genesis, these addresses are invariant and must be used directly by all system participants—wallets, bridges, indexers, and applications—to interact correctly with the protocol.

Using the Predeploys Address Set
Why the Predeploy Address Set Matters
The predeploy address set defines the fixed, protocol-level contracts that form the operational backbone of every OP Stack chain.
Hardcoding these addresses in application logic, bridge contracts, or off-chain services is a critical integration risk. While the addresses are fixed for a given chain, the Superchain's evolution through upgrades and new chain deployments means that a hardcoded address from one OP Stack chain may be incorrect on another. Furthermore, protocol upgrades can change the internal logic of a predeploy while preserving its address and interface, making direct address usage the only future-proof integration pattern. For example, the fault-proof system upgrade fundamentally altered the withdrawal proving flow, but the OptimismPortal address remained the single entry point. Integrators who used the canonical address required no migration; those who bypassed it faced broken withdrawal flows.
For operators, builders, and risk teams, the predeploy address set is the authoritative map for security review and monitoring. A bridge operator must verify that their off-chain relay service monitors the correct L2ToL1MessagePasser for withdrawal initiations. An exchange must confirm that its deposit detection logic queries the correct OptimismPortal for L1-to-L2 transactions. Chainscore Labs can audit integration codebases to ensure correct predeploy address usage, assess upgrade safety by verifying that all protocol interactions flow through canonical addresses, and build monitoring systems that track state changes on these critical contracts to provide early warning of anomalous protocol behavior.
Essential Predeploy Addresses
Core protocol contracts that must be referenced by address rather than interface to ensure future compatibility and correct system behavior
| Contract | Address | Critical dependency | Integration risk | Validation step |
|---|---|---|---|---|
L2ToL1MessagePasser | 0x4200000000000000000000000000000000000016 | Withdrawal initiation and proving flow | Hardcoding this address in bridge contracts breaks upgradeability | Verify withdrawal contracts use predeploy address, not hardcoded literal |
GasPriceOracle | 0x420000000000000000000000000000000000000F | L1 data fee calculation for every transaction | Incorrect fee estimation causes transaction rejection or overpayment | Confirm wallets and RPC providers query this address for fee estimation |
WETH9 | 0x4200000000000000000000000000000000000006 | Native ETH wrapping on L2 | Using a different WETH address fragments liquidity and breaks composability | Audit DeFi integrations to ensure they reference canonical WETH predeploy |
L1Block | 0x4200000000000000000000000000000000000015 | L1 state availability to L2 contracts | Stale or incorrect L1 data if contracts query wrong address | Review contracts reading L1 block info for correct predeploy reference |
L2CrossDomainMessenger | 0x4200000000000000000000000000000000000007 | Cross-chain message relay from L1 | Message delivery failure if messenger address is hardcoded | Verify message sender checks use canonical messenger address |
L1StandardBridge | 0x4200000000000000000000000000000000000010 | Standard ETH and ERC-20 bridging | Loss of bridged assets if bridge address is incorrect | Validate bridge integrations reference predeploy, not deployment address |
OptimismMintableERC20Factory | 0x4200000000000000000000000000000000000012 | Canonical bridged token creation | Unofficial token deployments bypass security model | Ensure token list generation uses factory address for authenticity verification |
SequencerFeeVault | 0x4200000000000000000000000000000000000011 | Sequencer fee collection and distribution | Fee misdirection if vault address is overridden | Monitor fee vault address for unauthorized changes during upgrades |
Predeploy Architecture and Upgrade Safety
Understanding the dual-layer architecture of OP Stack predeploys is essential for writing future-proof contracts and avoiding breakage during network upgrades.
The OP Stack predeploy system provides a canonical set of smart contracts at fixed addresses on every OP Stack chain, including L2ToL1MessagePasser (0x4200000000000000000000000000000000000016), GasPriceOracle (0x420000000000000000000000000000000000000F), and WETH (0x4200000000000000000000000000000000000006). These addresses are guaranteed to remain constant across all OP Stack chains and future upgrades, forming a stable interface layer that builders can rely on. However, the internal logic deployed at these addresses is not guaranteed to remain static. The OP Stack uses a proxy-like architecture where the predeploy address is permanent, but the contract implementation can be upgraded through network hard forks or Superchain-wide upgrades.
This dual-layer design creates a critical safety rule for builders: always reference predeploys by their canonical address, never by their bytecode or internal storage layout. A contract that hardcodes the storage slot of a predeploy's internal variable, or that copies a predeploy's bytecode into its own constructor, will silently break when the predeploy implementation is upgraded. The L1Block predeploy (0x4200000000000000000000000000000000000015) is a concrete example: its interface for reading L1 block attributes is stable, but the internal mechanism for how those values are set has changed across protocol upgrades. Contracts that interact with predeploys through their public interfaces remain compatible; contracts that reach into internal state do not.
For chain deployers, modifying predeploys requires understanding that these contracts are embedded in the genesis state and validated by the op-program fault proof. Any change to a predeploy's bytecode alters the state root and must be coordinated with the derivation pipeline and all downstream tooling. Block explorers, indexers, and wallets often hardcode assumptions about predeploy interfaces—a modified GasPriceOracle that changes the fee calculation signature will break every wallet's fee estimation. Chainscore Labs can audit predeploy modifications for downstream compatibility risks and review integration code to ensure it uses only the stable address layer, not the mutable implementation layer.
Who Needs to Use the Predeploy Address Set
Contract Developers
Any contract deployed on an OP Stack chain that interacts with core protocol functions must reference the canonical predeploy addresses. Hardcoding assumptions about addresses like the L2ToL1MessagePasser or GasPriceOracle creates immediate breakage risk during network upgrades or when deploying across multiple OP Stack chains.
Critical predeploys to reference:
L2ToL1MessagePasser(0x4200000000000000000000000000000000000016) for initiating withdrawalsGasPriceOracle(0x420000000000000000000000000000000000000F) for reading L1 data fee componentsL1Block(0x4200000000000000000000000000000000000015) for accessing L1 state like block numbers and timestamps
Action: Use the Predeploys library from @eth-optimism/contracts instead of hardcoding addresses. Chainscore can audit your contract's predeploy interactions to verify correct address usage and upgrade safety.
Integration Patterns and Impact Areas
Using the canonical predeploy address set is the single most important compatibility decision for OP Stack builders. Hardcoding addresses creates upgrade fragility; referencing the predeploy registry ensures contracts survive network upgrades, governance actions, and Superchain evolution.
Contract Upgrade Safety
Contracts that hardcode predeploy addresses like the L2ToL1MessagePasser or GasPriceOracle will break if those addresses change during a network upgrade. Always resolve predeploy addresses dynamically from the canonical registry or the system config proxy. Chainscore can audit your codebase for hardcoded address assumptions and verify upgrade-safe patterns before your next deployment.
Cross-Chain Message Integrity
The L2ToL1MessagePasser at 0x4200000000000000000000000000000000000016 is the single required path for initiating withdrawals. Using any other address or a direct storage write will produce messages that the OptimismPortal cannot prove. Bridge operators and wallet integrations must validate that every withdrawal path resolves to this exact predeploy. Chainscore can review your message-passing architecture for compliance.
Fee Estimation Accuracy
Wallets and exchanges that estimate gas without querying the GasPriceOracle predeploy at 0x420000000000000000000000000000000000000F will produce incorrect fee quotes. The L1 data fee component is dynamic and depends on the oracle's l1BaseFee and overhead/scalar parameters. Chainscore can validate your fee estimation logic against the canonical predeploy interface and test edge cases under blob and calldata fee regimes.
Indexer and Explorer Compatibility
Indexers that fail to recognize predeploy addresses as system contracts will misclassify their activity as user transactions, corrupting analytics and accounting. The WETH predeploy at 0x4200000000000000000000000000000000000006 and the L1Block contract at 0x4200000000000000000000000000000000000015 require special handling in trace reconstruction and balance tracking. Chainscore can help indexer teams build predeploy-aware ingestion pipelines.
Governance and Parameter Change Monitoring
Predeploy addresses are governed by the Optimism Collective and can be modified through protocol upgrades. The SystemConfig proxy controls critical parameters like the gas oracle overhead and scalar values. Teams that depend on predeploy behavior must monitor governance proposals that could alter these contracts. Chainscore provides governance monitoring services to alert you before parameter changes affect your integration.
Chain Deployment Genesis Validation
When deploying a new OP Stack chain from genesis, the predeploy address set must be initialized with correct bytecode and storage. A single misconfigured predeploy—such as an incorrect chain ID in WETH or a missing L2ToL1MessagePasser—will cause immediate chain failure. Chainscore can perform genesis state validation to verify every predeploy matches the canonical specification before you launch.
Hardcoding Risks and Failure Modes
Operational risks and failure modes introduced by hardcoding predeploy addresses instead of using the canonical address set, and the impact on future protocol upgrades.
| Area | Failure Mode | Who is affected | Action |
|---|---|---|---|
L2ToL1MessagePasser | Contract hardcodes 0x4200000000000000000000000000000000000016. A future upgrade changes the address, breaking all withdrawal initiation logic. | Bridges, CEXs, DeFi protocols | Replace hardcoded address with a call to the address manager or an immutable variable set during construction. |
GasPriceOracle | Wallets or gas estimators hardcode 0x420000000000000000000000000000000000000F. A protocol upgrade changes the precompile, causing incorrect fee estimation and transaction failures. | Wallets, indexers, RPC providers | Query the address dynamically from the L2 system config or canonical address list. Audit fee estimation logic for hardcoded assumptions. |
WETH9 | DEX or lending protocol hardcodes 0x4200000000000000000000000000000000000006. A future chain upgrade changes the canonical WETH address, breaking all liquidity integrations. | DEXs, lending protocols, aggregators | Use the WETH address from the token list or bridge logic. Implement a governance-controlled variable for the canonical WETH address. |
L1Block | Oracle or derivative contract hardcodes 0x4200000000000000000000000000000000000015. The predeploy is deprecated or moved, causing incorrect L1 state reads and potential manipulation. | Derivative protocols, oracles | Read the address from the system config proxy. Implement a fallback oracle and monitor the L1Block address for changes. |
ProtocolVersions | Monitoring tool hardcodes 0x4200000000000000000000000000000000000019. A Superchain upgrade changes the versioning scheme, breaking all alerting and compatibility checks. | Chain operators, monitoring tools | Query the address dynamically. Subscribe to governance announcements for changes to the versioning contract. |
CrossDomainMessenger | Bridge UI hardcodes the L2CrossDomainMessenger address. A future upgrade changes the messenger contract, causing all user-initiated withdrawals to fail silently. | Bridge UIs, CEXs, custodians | Resolve the address from the L2ToL1MessagePasser or canonical deployment list. Implement integration tests that verify the messenger address against the canonical source. |
SystemConfig | Chain operator hardcodes the SystemConfig address in deployment scripts. A network upgrade changes the proxy, causing all configuration updates to fail. | Chain operators, devops teams | Use the address from the genesis file or the L1 SystemConfig proxy. Validate the address against the canonical source during each upgrade cycle. |
Integration Audit Checklist
A technical checklist for teams integrating with OP Stack predeployed contracts. Each item identifies a critical integration point, explains the operational risk of getting it wrong, and specifies the signal or artifact that confirms readiness for production.
What to check: Every reference to a predeploy address in your codebase, configuration, and deployment scripts must be sourced from the Predeploys contract or the canonical predeploys package for your language, not hardcoded as a hex literal.
Why it matters: Predeploy addresses are constant within a chain but can differ across OP Stack chains and future Superchain upgrades. Hardcoding an address like 0x4200000000000000000000000000000000000016 for the L2ToL1MessagePasser creates a silent failure risk if a future network upgrade reassigns addresses or if your code is deployed to a new OP Stack chain with a different address set.
Readiness signal: A grep or static analysis scan of your repository shows zero hardcoded predeploy addresses. All references resolve through a single, versioned source of truth that matches the target chain's op-node predeploy set.
Canonical Resources
Use these canonical resources to validate OP Stack predeploy addresses, contract behavior, and integration assumptions before shipping contracts, wallets, bridges, or indexers.
On-Chain Verification Runbook
For production readiness, supplement canonical documents with direct on-chain checks. Query code at each required predeploy address on the target L2, verify expected interfaces, and assert behavior in integration tests for withdrawals, fee reads, WETH flows, and cross-domain messages. This is especially important for custom OP Stack chains that may modify predeploys or launch from non-standard genesis configuration. Chainscore recommends treating predeploy validation as a CI gate before contract deployment, bridge enablement, exchange listing, or wallet support.
Looking to build on a specific blockchain?
We build smart contracts, DeFi applications, wallets, tokenization platforms, and blockchain infrastructure across the major ecosystems teams choose today. That includes Ethereum, Arbitrum, Optimism, Polygon, Avalanche, Solana, Sui, Aptos, Hedera, Stellar, and NEAR, with support for additional EVM and non-EVM networks based on your product requirements.
EVM ecosystems
- Ethereum
- Arbitrum
- Optimism
- Polygon
- Avalanche
- Cronos

Non-EVM ecosystems
- Solana
- Sui
- Aptos
- Hedera
- Stellar
- NEAR
Additional ecosystems
- Polkadot
- Cosmos
- TON
- Cardano
- Algorand
- Tempo
Also available for Base, appchains, custom EVM networks, and cross-chain product architecture.
Frequently Asked Questions
Common questions from protocol architects and developers integrating with the OP Stack predeploy address set.
Hardcoding addresses creates a brittle integration that breaks across chain upgrades, Superchain forks, or when deploying to a new OP Stack chain. The predeploy address set is a canonical registry that resolves contracts by name, allowing your integration to remain compatible with future versions of the protocol.
What to check:
- Audit your codebase for any hardcoded addresses matching known predeploys (L2ToL1MessagePasser, GasPriceOracle, WETH, etc.)
- Replace them with lookups against the predeploy address set
- Verify that your deployment scripts resolve addresses dynamically rather than using constants
Why it matters: The Superchain upgrade path may introduce new predeploy versions or modify existing ones. Hardcoded addresses will silently break when the underlying contract changes, while dynamic resolution ensures your integration follows the canonical address.
Delivering blockchain solutions for 5+ years.
We have partnered with 50+ leading DeFi protocols, NFT ecosystems, and fintech innovators to build secure, scalable, and capital-efficient blockchain products.
Selected Partners & Clients
“I've been working with Chainscore Labs for last 3+ years, they've consistently delivered with strong ownership across multiple projects. The team is reliable and detail-oriented.”
How to get started?
If you're looking for blockchain integration, ChainScore Labs has 5+ years of experience helping teams build and integrate exchanges, wallets, smart contracts, tokenization solutions, and protocol-connected products, we can help you choose the right path, integrate securely, and get to production faster. Our team consists of experienced blockchain developers and architects who can help you with your blockchain integration needs.
Exploration & Strategy
Define your product goals and choose the right blockchain architecture for your use case.
Architecture & Design
Design the smart contracts, tokenomics, and security parameters of your system.
Development & Integration
Build and integrate with wallets, oracles, and front-end dApps for a seamless experience.
Security & Launch
Comprehensive audits followed by a risk-managed mainnet deployment to protect your users.
Discover our
blockchain development services.
We build production-grade blockchain solutions for top-tier projects across DeFi and Web3.
Need a blockchain engineering team?
Send the project context and we will respond with next steps, scope questions, and a practical path to delivery.


