{
"architectureImage": "zircuit",
"dataAvailability": [
{
"name": "All data required for proofs is published on chain",
"description": "All the data that is used to construct the system state is published on chain in the form of cheap blobs or calldata. This ensures that it will be available for enough time.",
"risks": [],
"references": [
{
"title": "Derivation: Batch submission - OP Mainnet specs",
"url": "https://github.com/ethereum-optimism/specs/blob/main/specs/protocol/derivation.md#batch-submission"
},
{
"title": "BatchInbox - address",
"url": "https://explorer.zircuit.com/address/0xFF00000000000000000000000000000000048900#code"
},
{
"title": "OptimismPortal2.sol - source code, depositTransaction function",
"url": "https://explorer.zircuit.com/address/0x7Cf803296662e8C72A6C1d6450572209aCF7f202#code"
"url": "https://explorer.zircuit.com/address/0xe89F13c5ee4033B2D3cD76C9d6958eFBfe26D3C2#code"
}
]
}
],
"exitMechanisms": [
{
"name": "Regular exits",
"description": "The user initiates the withdrawal by submitting a regular transaction on this chain. When a state root containing such transaction is settled, the funds become available for withdrawal on L1 after 3d 12h. Withdrawal inclusion can be proven before state root settlement, but a 7d period has to pass before it becomes actionable. The process of state root settlement takes a challenge period of at least 3d 12h to complete. Finally the user submits an L1 transaction to claim the funds. This transaction requires a merkle proof.",
"risks": [],
"references": [
{
"title": "OptimismPortal2.sol - Etherscan source code, proveWithdrawalTransaction function",
"url": "https://etherscan.io/address/0x7Cf803296662e8C72A6C1d6450572209aCF7f202#code"
"url": "https://etherscan.io/address/0xe89F13c5ee4033B2D3cD76C9d6958eFBfe26D3C2#code"
},
{
"title": "OptimismPortal2.sol - Etherscan source code, finalizeWithdrawalTransaction function",
"url": "https://etherscan.io/address/0x7Cf803296662e8C72A6C1d6450572209aCF7f202#code"
"url": "https://etherscan.io/address/0xe89F13c5ee4033B2D3cD76C9d6958eFBfe26D3C2#code"
}
]
},
{
"name": "Forced messaging",
"description": "If the user experiences censorship from the operator with regular L2->L1 messaging they can submit their messages directly on L1. The system is then obliged to service this request or halt all messages, including forced withdrawals from L1 and regular messages initiated on L2. Once the force operation is submitted and if the request is serviced, the operation follows the flow of a regular message.",
"risks": [],
"references": [
{
"title": "Forced withdrawal from an OP Stack blockchain",
"url": "https://docs.optimism.io/stack/transactions/forced-transaction"
}
]
}
],
"forceTransactions": {
"name": "Users can force any transaction",
"description": "Because the state of the system is based on transactions submitted on the underlying host chain and anyone can submit their transactions there it allows the users to circumvent censorship by interacting with the smart contract on the host chain directly.",
"risks": [],
"references": [
{
"title": "Sequencing Window - OP Mainnet Specs",
"url": "https://github.com/ethereum-optimism/optimism/blob/51eeb76efeb32b3df3e978f311188aa29f5e3e94/specs/glossary.md#sequencing-window"
},
{
"title": "OptimismPortal2.sol - source code, depositTransaction function",
"url": "https://explorer.zircuit.com/address/0x7Cf803296662e8C72A6C1d6450572209aCF7f202#code"
"url": "https://explorer.zircuit.com/address/0xe89F13c5ee4033B2D3cD76C9d6958eFBfe26D3C2#code"
}
]
},
"operator": {
"name": "The system has a centralized operator",
"description": "The operator is the only entity that can propose blocks. A live and trustworthy operator is vital to the health of the system.",
"risks": [
{
"category": "MEV can be extracted if",
"text": "the operator exploits their centralized position and frontruns user transactions."
}
],
"references": []
},
"otherConsiderations": [
{
"name": "EVM compatible smart contracts are supported",
"description": "OP stack chains are pursuing the EVM Equivalence model. No changes to smart contracts are required regardless of the language they are written in, i.e. anything deployed on L1 can be deployed on L2.",
"risks": [],
"references": [
{
"title": "Introducing EVM Equivalence",
"url": "https://medium.com/ethereum-optimism/introducing-evm-equivalence-5c2021deb306"
}
]
}
],
"stateValidation": {
"description": "Updates to the system state can be proposed and challenged by permissioned operators only. If a state root passes the challenge period, it is optimistically considered correct and made actionable for withdrawals.",
"categories": [
{
"title": "State root proposals",
"description": "Proposers submit state roots as children of the latest confirmed state root (called anchor state), by calling the `create` function in the DisputeGameFactory. A state root can have multiple conflicting children. Each proposal requires a stake, currently set to 0.0 ETH, that can be slashed if the proposal is proven incorrect via a fraud proof. Stakes can be withdrawn only after the proposal has been confirmed. A state root gets confirmed if the challenge period has passed and it is not countered.",
"references": [
{
"title": "OP stack specification: Fault Dispute Game",
"url": "https://specs.optimism.io/fault-proof/stage-one/fault-dispute-game.html#fault-dispute-game"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "no whitelisted challenger disputes an invalid state root before the challenge window expires.",
"isCritical": true
}
]
},
{
"title": "Challenges",
"description": "Challenges are opened to disprove invalid state roots using bisection games. Each bisection move requires a stake that increases expontentially with the depth of the bisection, with a factor of 1.09493. The maximum depth is 73, and reaching it therefore requires a cumulative stake of 0.00 ETH from depth 0. Actors can participate in any challenge by calling the `defend` or `attack` functions, depending whether they agree or disagree with the latest claim and want to move the bisection game forward. Actors that disagree with the top-level claim are called challengers, and actors that agree are called defenders. Each actor might be involved in multiple (sub-)challenges at the same time, meaning that the protocol operates with [full concurrency](https://medium.com/l2beat/fraud-proof-wars-b0cb4d0f452a). Challengers and defenders alternate in the bisection game, and they pass each other a clock that starts with 3d 12h. If a clock expires, the claim is considered defeated if it was countered, or it gets confirmed if uncountered. Since honest parties can inherit clocks from malicious parties that play both as challengers and defenders (see [freeloader claims](https://specs.optimism.io/fault-proof/stage-one/fault-dispute-game.html#freeloader-claims)), an inherited clock with too little time remaining is generally extended by 3h. The extension is 6h when the next claim is immediately before split depth 30, and 1d 3h (the standard extension plus the 1d oracle challenge period) immediately before the last depth. Along a full-depth path, cumulative extensions can therefore add up to 10d 3h. Since unconfirmed state roots are independent of one another, users can decide to exit with a subsequent confirmed state root if the previous one is delayed. Winners get the entire losers' stake, meaning that sybils can potentially play against each other at no cost. The final instruction found via the bisection game is then executed onchain in the MIPS one step prover contract who determines the winner. The protocol does not enforce valid bisections, meaning that actors can propose correct initial claims and then provide incorrect midpoints. The protocol can be subject to resource exhaustion attacks ([Spearbit 5.1.3](https://github.com/ethereum-optimism/optimism/blob/develop/docs/security-reviews/2024_08_Fault-Proofs-No-MIPS_Spearbit.pdf)).",
"references": [
{
"title": "Fraud Proof Wars: OPFP",
"url": "https://medium.com/l2beat/fraud-proof-wars-b0cb4d0f452a"
}
]
}
]
},
"warning": "The fault proof system is deployed but is not functional. The chain ID is not included in the superchain registry snapshot embedded in the op-program release that the dispute games commit to, causing the dispute game to panic during execution. Security relies entirely on the permissioned proposer and challengers."
}
permissions+10-10
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "Conduit Multisig 1",
"name": "Conduit Multisig 1",
"description": "A Multisig with 4/11 threshold. \n* Can upgrade **with no delay**\n * SuperchainConfig [via: ProxyAdmin]\n * OptimismPortal2 [via: ProxyAdmin]\n * AnchorStateRegistry [via: ProxyAdmin]\n * L1CrossDomainMessenger [via: ProxyAdmin]\n * SystemConfig [via: ProxyAdmin]\n * L1StandardBridge [via: ProxyAdmin]\n * DisputeGameFactory [via: ProxyAdmin]\n * DelayedWETH [via: ProxyAdmin]\n * L1ERC721Bridge [via: ProxyAdmin]\n * OptimismMintableERC20Factory [via: ProxyAdmin]\n* Can interact with SuperchainConfig\n * Allowed to pause withdrawals. In op stack systems with a proof system, the Guardian can also blacklist dispute games and set the respected game type (permissioned / permissionless) \n* Can interact with SystemConfig\n * it can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system \n* Can interact with PermissionedDisputeGame\n * Allowed to challenge or delete state roots proposed by a Proposer \n* Can interact with DisputeGameFactory\n * set the dispute game implementation and initial bond for any game type ",
"description": "A Multisig with 4/11 threshold. \n* Can upgrade **with no delay**\n * SuperchainConfig [via: ProxyAdmin]\n * OptimismPortal2 [via: ProxyAdmin]\n * AnchorStateRegistry [via: ProxyAdmin]\n * L1CrossDomainMessenger [via: ProxyAdmin]\n * SystemConfig [via: ProxyAdmin]\n * L1StandardBridge [via: ProxyAdmin]\n * DelayedWETH [via: ProxyAdmin]\n * DisputeGameFactory [via: ProxyAdmin]\n * L1ERC721Bridge [via: ProxyAdmin]\n * OptimismMintableERC20Factory [via: ProxyAdmin]\n* Can interact with SuperchainConfig\n * Allowed to pause withdrawals. In op stack systems with a proof system, the Guardian can also blacklist dispute games and set the respected game type (permissioned / permissionless) \n* Can interact with SystemConfig\n * it can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system \n* Can interact with DisputeGameFactory\n * Allowed to challenge or delete state roots proposed by a Proposer \n * set the dispute game implementation and initial bond for any game type \n* Can interact with AddressManager\n * set and change address mappings [via: ProxyAdmin]",
"accounts": [
{
"address": "eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746",
"type": "Contract",
"isVerified": true,
"name": "0x4a49…A746",
"url": "https://etherscan.io/address/0x4a4962275DF8C60a80d3a25faEc5AA7De116A746"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x9402c42dB162d5a0927c032136f40Cc9C71853F2",
"type": "EOA",
"isVerified": true,
"name": "0x9402…53F2",
"url": "https://etherscan.io/address/0x9402c42dB162d5a0927c032136f40Cc9C71853F2"
},
{
"address": "eth:0xcdC931935768c0562AfE989A366a3Dc4d52F4853",
"type": "EOA",
"isVerified": true,
"name": "0xcdC9…4853",
"url": "https://etherscan.io/address/0xcdC931935768c0562AfE989A366a3Dc4d52F4853"
},
{
"address": "eth:0xA9FCCc53F1c9095DA867Bd648683F8bdCcc78d09",
"type": "EOA",
"isVerified": true,
"name": "0xA9FC…8d09",
"url": "https://etherscan.io/address/0xA9FCCc53F1c9095DA867Bd648683F8bdCcc78d09"
},
{
"address": "eth:0x6BB4249858Ee19b6ABC071AD26bEe690baa783A6",
"type": "EOA",
"isVerified": true,
"name": "0x6BB4…83A6",
"url": "https://etherscan.io/address/0x6BB4249858Ee19b6ABC071AD26bEe690baa783A6"
},
{
"address": "eth:0x2103c69696CB2D3779f5445393808239034E911c",
"type": "EOA",
"isVerified": true,
"name": "0x2103…911c",
"url": "https://etherscan.io/address/0x2103c69696CB2D3779f5445393808239034E911c"
},
{
"address": "eth:0x81175155D85377C337d92f1FA52Da166C3A4E7Ac",
"type": "EOA",
"isVerified": true,
"name": "0x8117…E7Ac",
"url": "https://etherscan.io/address/0x81175155D85377C337d92f1FA52Da166C3A4E7Ac"
},
{
"address": "eth:0xA0737fea60F0601A192E3d2c98865A883ab0bda2",
"type": "EOA",
"isVerified": true,
"name": "0xA073…bda2",
"url": "https://etherscan.io/address/0xA0737fea60F0601A192E3d2c98865A883ab0bda2"
},
{
"address": "eth:0xF3313C48BD8E17b823d5498D62F37019dFEA647D",
"type": "EOA",
"isVerified": true,
"name": "0xF331…647D",
"url": "https://etherscan.io/address/0xF3313C48BD8E17b823d5498D62F37019dFEA647D"
},
{
"address": "eth:0xa0C600a6e85bf225958FFAcC70B5FDDF9A059038",
"type": "EOA",
"isVerified": true,
"name": "0xa0C6…9038",
"url": "https://etherscan.io/address/0xa0C600a6e85bf225958FFAcC70B5FDDF9A059038"
},
{
"address": "eth:0xefCf0c8faFB425997870f845e26fC6cA6EE6dD5C",
"type": "EOA",
"isVerified": true,
"name": "0xefCf…dD5C",
"url": "https://etherscan.io/address/0xefCf0c8faFB425997870f845e26fC6cA6EE6dD5C"
},
{
"address": "eth:0x4D8007a0E9f293e62E2b0F43C6Cf4C4B9e135BAe",
"type": "EOA",
"isVerified": true,
"name": "0x4D80…5BAe",
"url": "https://etherscan.io/address/0x4D8007a0E9f293e62E2b0F43C6Cf4C4B9e135BAe"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xCf8225801DF6Ef90aD3bc86808F574403A309de8",
"address": "eth:0x2d14057c3ad6b04a480b06Da2356AdcdF5Ed97eE",
"type": "EOA",
"isVerified": true,
"name": "0xCf82…9de8",
"url": "https://etherscan.io/address/0xCf8225801DF6Ef90aD3bc86808F574403A309de8",
"name": "0x2d14…97eE",
"url": "https://etherscan.io/address/0x2d14057c3ad6b04a480b06Da2356AdcdF5Ed97eE",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with SystemConfig\n * Allowed to commit transactions from the current layer to the host chain ",
"description": "* Can interact with DisputeGameFactory\n * Allowed to post new state roots of the current layer to the host chain ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x2d14057c3ad6b04a480b06Da2356AdcdF5Ed97eE",
"address": "eth:0xCf8225801DF6Ef90aD3bc86808F574403A309de8",
"type": "EOA",
"isVerified": true,
"name": "0x2d14…97eE",
"url": "https://etherscan.io/address/0x2d14057c3ad6b04a480b06Da2356AdcdF5Ed97eE",
"name": "0xCf82…9de8",
"url": "https://etherscan.io/address/0xCf8225801DF6Ef90aD3bc86808F574403A309de8",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with PermissionedDisputeGame\n * Allowed to post new state roots of the current layer to the host chain ",
"description": "* Can interact with SystemConfig\n * Allowed to commit transactions from the current layer to the host chain ",
"discoveryDrivenData": true
}
]
},
"zircuit": {
"roles": [],
"actors": [
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "zircuit:0x5b5A62275DF8c60A80D3a25FAeC5aA7De116b857",
"type": "EOA",
"isVerified": true,
"name": "0x5b5A…b857",
"url": "https://explorer.zircuit.com/address/0x5b5A62275DF8c60A80D3a25FAeC5aA7De116b857",
"displayName": "EOA 3"
}
],
"chain": "zircuit",
"description": "* Can upgrade **with no delay**\n * L1Block [via: ProxyAdmin]\n * ProxyAdmin [via: ProxyAdmin]",
"description": "* Can upgrade **with no delay**\n * L1Block [via: L2ProxyAdmin]\n * L2ProxyAdmin [via: L2ProxyAdmin]",
"discoveryDrivenData": true
}
]
}
}
[
{
"id": "3d616d5d",
"date": "Wed, 30 Sep 2026 14:36:30 GMT",
"timestamp": 1790778923,
"description": "Upgrade 19b \"Karst\" (op-contracts/v7.0.0): core L1 contracts upgraded to their v7 implementations (OptimismPortal2, SystemConfig, DisputeGameFactory, AnchorStateRegistry, bridges, etc.), executed via a Conduit-deployed OPContractsManagerV2 (v7.1.17). The chain remains on permissioned fault proofs (respected game type 1); it did not move to CANNON_KONA.\n\nProxyAdmin replaced, owner unchanged (Conduit Multisig 1). AddressManager added. New DelayedWETH. PermissionedDisputeGame, MIPS (v1.9.0 to v1.10.1) and PreimageOracle (v1.1.4 to v1.1.5) replaced. Proposer, challenger and absolute prestate unchanged. SystemConfig `batchInbox` changed.\n\nL1Block upgraded from v1.6.1 to v1.7.0 (Jovian network upgrade): adds `setL1BlockValuesJovian()` and `daFootprintGasScalar` (`400`).\n\nL2ProxyAdmin upgraded to v1.0.0 (Karst L2 network upgrade), owner unchanged.",
"isHighSeverity": true,
"changeCount": 212,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract OptimismPortal2 (eth:0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1) [opstack/OptimismPortal2] {\n +++ description: The OptimismPortal contract is the main entry point to deposit funds from L1 to L2. It also allows to prove and finalize withdrawals. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame.\n sourceHashes.1:\n- \"0x3e7e2cb08ba995795937c9c2e8ea9d0e4d2e2de852f389055073384d5f79c59d\"\n+ \"0xe1df4caf26d9a0735bd53eeb020546840bd2f2fd4d0d9e2519f873306b5e19b1\"\n values.$admin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.$implementation:\n- \"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202\"\n+ \"eth:0xe89F13c5ee4033B2D3cD76C9d6958eFBfe26D3C2\"\n values.$pastUpgrades.16:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x97cEbbf8959e2A5476fbe9B98A21806Ec234609B\"]]\n values.$pastUpgrades.17:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.18:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0xe89F13c5ee4033B2D3cD76C9d6958eFBfe26D3C2\"]]\n values.$upgradeCount:\n- 16\n+ 19\n values.proxyAdmin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.version:\n- \"5.1.1\"\n+ \"5.6.1\"\n implementationNames.eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202:\n- \"OptimismPortal2\"\n implementationNames.eth:0xe89F13c5ee4033B2D3cD76C9d6958eFBfe26D3C2:\n+ \"OptimismPortal2\"\n }\n```\n\n```diff\n- Status: DELETED\n contract PreimageOracle (eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3) [opstack/PreimageOracle]\n +++ description: The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n```\n\n```diff\n contract AnchorStateRegistry (eth:0x2613d77fFBE105CA861D526061dC3ef191E17051) [opstack/AnchorStateRegistry_post20] {\n +++ description: Contains the latest confirmed state root that can be used as a starting point in a dispute game. This variant stores respectedGameType, retirementTimestamp, and disputeGameFinalityDelaySeconds locally and drops the legacy *FromGame fields, since the AggregateVerifier model does not expose vm()/weth()/absolutePrestate() on its game implementation.\n template:\n- \"opstack/AnchorStateRegistry_post13\"\n+ \"opstack/AnchorStateRegistry_post20\"\n sourceHashes.1:\n- \"0xf808a203af41f7932eb8e39985e56a7c75c940a260fb17d76d1003a3793281b5\"\n+ \"0x10f64124093daab87c84d97148854054f9622bf86e09e98d496f123be3368122\"\n description:\n- \"Contains the latest confirmed state root that can be used as a starting point in a dispute game. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame.\"\n+ \"Contains the latest confirmed state root that can be used as a starting point in a dispute game. This variant stores respectedGameType, retirementTimestamp, and disputeGameFinalityDelaySeconds locally and drops the legacy *FromGame fields, since the AggregateVerifier model does not expose vm()/weth()/absolutePrestate() on its game implementation.\"\n values.$admin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.$implementation:\n- \"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E\"\n+ \"eth:0x8F40Cc98D694AB986F026C5383A181FCc9B6B281\"\n values.$pastUpgrades.1:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x36398155Cd17cfe804F69b233eDDA800DD4D5aA5\"]]\n values.$pastUpgrades.2:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.3:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x8F40Cc98D694AB986F026C5383A181FCc9B6B281\"]]\n values.$upgradeCount:\n- 1\n+ 4\n values.absolutePrestateFromGame:\n- \"0x03682932cec7ce0a3874b19675a6bbc923054a7b321efc7d3835187b172494b6\"\n values.challengePeriodFromOracle:\n- 86400\n values.oracleFromVm:\n- \"eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3\"\n values.proxyAdmin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.version:\n- \"3.5.0\"\n+ \"3.9.0\"\n values.vmFromGame:\n- \"eth:0x6463dEE3828677F6270d83d45408044fc5eDB908\"\n values.wethFromGame:\n- \"eth:0x798d82222eC87C6B76aeF659A490e1ab9f7f9162\"\n+++ severity: HIGH\n values.blacklistedGames:\n+ []\n values.getStartingAnchorRoot:\n+ {\"root\":\"0xdead000000000000000000000000000000000000000000000000000000000000\",\"l2SequenceNumber\":0}\n fieldMeta.$admin:\n- {\"severity\":\"HIGH\"}\n fieldMeta.disputeGameFactory:\n- {\"severity\":\"HIGH\"}\n fieldMeta.systemConfig:\n- {\"severity\":\"HIGH\"}\n fieldMeta.blacklistedGames:\n+ {\"severity\":\"HIGH\"}\n implementationNames.eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E:\n- \"AnchorStateRegistry\"\n implementationNames.eth:0x8F40Cc98D694AB986F026C5383A181FCc9B6B281:\n+ \"AnchorStateRegistry\"\n usedTypes.0.arg.621:\n+ \"AggregateVerifier\"\n usedTypes.0.arg.8:\n+ \"FaultDisputeGame\"\n }\n```\n\n```diff\n contract L1CrossDomainMessenger (eth:0x2a721cBE81a128be0F01040e3353c3805A5EA091) [opstack/L1CrossDomainMessenger] {\n +++ description: Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n sourceHashes.1:\n- \"0x1f2c13ad1144ce6548e578b834c33b0d65b1564aeb0d5c708ed4e7fb50535cc6\"\n+ \"0x694050f95b40e6d92ee91ca0f60acb9c4a74d1b0325c33fd4bd7445fde90e806\"\n values.$admin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.$implementation:\n- \"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0\"\n+ \"eth:0x59D497530b00062f40950ba8EaB88868bf7F86f0\"\n values.$pastUpgrades.10:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0\"]]\n values.$pastUpgrades.11:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.12:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x59D497530b00062f40950ba8EaB88868bf7F86f0\"]]\n values.$upgradeCount:\n- 10\n+ 13\n values.proxyAdmin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.version:\n- \"2.11.0\"\n+ \"2.11.1\"\n implementationNames.eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0:\n- \"L1CrossDomainMessenger\"\n implementationNames.eth:0x59D497530b00062f40950ba8EaB88868bf7F86f0:\n+ \"L1CrossDomainMessenger\"\n }\n```\n\n```diff\n EOA (eth:0x2d14057c3ad6b04a480b06Da2356AdcdF5Ed97eE) {\n +++ description: None\n receivedPermissions:\n+ [{\"permission\":\"interact\",\"from\":\"eth:0x6b9e81504e961a9CDf81A06e916720fb4c273e90\",\"description\":\"Allowed to post new state roots of the current layer to the host chain.\",\"role\":\".proposerFromDGF\"}]\n }\n```\n\n```diff\n contract SystemConfig (eth:0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff) [opstack/SystemConfig] {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n sourceHashes.1:\n- \"0xaa1b3bedab4e63198240e9dea4503f0e615e4d18a545961c9f11b72143279fbc\"\n+ \"0x3d8e7cdbbdbf274bba0a11a060b01d5a50e3a478683af9ec079874d1758576d6\"\n values.$admin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.$implementation:\n- \"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED\"\n+ \"eth:0x42Ad0173051225Ac784100e9acD43349707F4db9\"\n values.$pastUpgrades.13:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0xd392c27B84b1cA776528F2704BC67B82a62132d2\"]]\n values.$pastUpgrades.14:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.15:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x42Ad0173051225Ac784100e9acD43349707F4db9\"]]\n values.$upgradeCount:\n- 13\n+ 16\n values.batchInbox:\n- \"eth:0xFF00000000000000000000000000000000048900\"\n+ \"eth:0x00Ee01f01C731c3bED2736E298A3d86C71fD3329\"\n values.getAddresses.delayedWETH:\n+ \"eth:0x64555e021B913963e2D17de97efCc2723D3ec037\"\n values.getAddresses.opcm:\n+ \"eth:0xbfb9219d933ec96Ac99C4f3D7231eFE43757811F\"\n values.proxyAdmin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.version:\n- \"3.11.0\"\n+ \"3.14.2\"\n values.DELAYED_WETH_SLOT:\n+ \"0x51547f31a231e1007dca33017faa3da20d959b95087c588a7768bfb922fd58ff\"\n values.delayedWETH:\n+ \"eth:0x64555e021B913963e2D17de97efCc2723D3ec037\"\n values.isCustomGasToken:\n+ false\n values.lastUsedOPCM:\n+ \"eth:0xbfb9219d933ec96Ac99C4f3D7231eFE43757811F\"\n values.lastUsedOPCMVersion:\n+ \"7.1.17\"\n values.OPCM_SLOT:\n+ \"0x99f45962df4bc30de8d4c3c6d1ffc0f100edce16e80c7a5768b6d55ca463ff42\"\n implementationNames.eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED:\n- \"SystemConfig\"\n implementationNames.eth:0x42Ad0173051225Ac784100e9acD43349707F4db9:\n+ \"SystemConfig\"\n }\n```\n\n```diff\n contract L1StandardBridge (eth:0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8) [opstack/L1StandardBridge] {\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n sourceHashes.1:\n- \"0xcacd38e7b52353ad3463da40b7e7a29b028f95500a82590d2b8f8ffd26b83f6d\"\n+ \"0x6469155800e1489607c8fa062550a362dfa8978885df4714ca4653e5f3d25b0c\"\n values.$admin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.$implementation:\n- \"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A\"\n+ \"eth:0xB37a11AadF167B2F0b8dD85372De4bC66CD4A891\"\n values.$pastUpgrades.18:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A\"]]\n values.$pastUpgrades.19:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.20:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0xB37a11AadF167B2F0b8dD85372De4bC66CD4A891\"]]\n values.$upgradeCount:\n- 18\n+ 21\n values.proxyAdmin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.version:\n- \"2.8.0\"\n+ \"2.8.2\"\n implementationNames.eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A:\n- \"L1StandardBridge\"\n implementationNames.eth:0xB37a11AadF167B2F0b8dD85372De4bC66CD4A891:\n+ \"L1StandardBridge\"\n }\n```\n\n```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) [GnosisSafe] {\n +++ description: None\n receivedPermissions.2:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x6b9e81504e961a9CDf81A06e916720fb4c273e90\",\"description\":\"Allowed to challenge or delete state roots proposed by a Proposer.\",\"role\":\".challengerFromDGF\"}\n receivedPermissions.4:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x9D3acbf448541738cB45661905AE26233FBe65e5\",\"description\":\"set and change address mappings.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"}]}\n receivedPermissions.4.via.0.address:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n receivedPermissions.5.via.0.address:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n receivedPermissions.6.via.0.address:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n receivedPermissions.7.via.0.address:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n receivedPermissions.8.via.0.address:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n receivedPermissions.9.via.0.address:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n receivedPermissions.9.from:\n- \"eth:0x6b9e81504e961a9CDf81A06e916720fb4c273e90\"\n+ \"eth:0x64555e021B913963e2D17de97efCc2723D3ec037\"\n receivedPermissions.10.via.0.address:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n receivedPermissions.10.from:\n- \"eth:0x798d82222eC87C6B76aeF659A490e1ab9f7f9162\"\n+ \"eth:0x6b9e81504e961a9CDf81A06e916720fb4c273e90\"\n receivedPermissions.11.via.0.address:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n receivedPermissions.12.via.0.address:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n directlyReceivedPermissions.0.from:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n }\n```\n\n```diff\n- Status: DELETED\n contract PermissionedDisputeGame (eth:0x4F80B390aF3b49dda96134DA1ac905b05e816496) [opstack/PermissionedDisputeGame]\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n```\n\n```diff\n- Status: DELETED\n contract ProxyAdmin (eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257) [global/ProxyAdmin]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract MIPS (eth:0x6463dEE3828677F6270d83d45408044fc5eDB908) [opstack/MIPS]\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```\n\n```diff\n contract DisputeGameFactory (eth:0x6b9e81504e961a9CDf81A06e916720fb4c273e90) [opstack/DisputeGameFactory_v2] {\n +++ description: The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them. This variant exposes per-type reads only; the legacy array views (gameImpls[], initBonds[]) were removed in the new implementation.\n template:\n- \"opstack/DisputeGameFactory\"\n+ \"opstack/DisputeGameFactory_v2\"\n sourceHashes.1:\n- \"0x7daf6049672fd2ab7dc8dd3b6287e1d0a40958346c5e2857c4616a73dcac4da6\"\n+ \"0x8912e655e26f51d4384fc950df847ae65bccf1f5ec5458642402f385c3dadf78\"\n description:\n- \"The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\"\n+ \"The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them. This variant exposes per-type reads only; the legacy array views (gameImpls[], initBonds[]) were removed in the new implementation.\"\n values.$admin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.$implementation:\n- \"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50\"\n+ \"eth:0x72B971717E088B59F26d4236BE222ADB6ACD393b\"\n values.$pastUpgrades.4:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0xc040F392E52Cb6970CA8E110c280fE24E07C5e2c\"]]\n values.$pastUpgrades.5:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.6:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x72B971717E088B59F26d4236BE222ADB6ACD393b\"]]\n values.$upgradeCount:\n- 4\n+ 7\n values.challengerFromDGF:\n- \"UNRESOLVED\"\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n values.game2000:\n- \"eth:0x0000000000000000000000000000000000000000\"\n values.gameImpls:\n- [\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x4F80B390aF3b49dda96134DA1ac905b05e816496\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\"]\n values.initBonds:\n- [0,0,0,0,0]\n values.permissionedGameArgs:\n- \"0x\"\n+ \"0x03682932cec7ce0a3874b19675a6bbc923054a7b321efc7d3835187b172494b6acc005dcd857b401e4732e6f7837135a22825cfa2613d77ffbe105ca861d526061dc3ef191e1705164555e021b913963e2d17de97efcc2723d3ec037000000000000000000000000000000000000000000000000000000000000bf042d14057c3ad6b04a480b06da2356adcdf5ed97ee4a4962275df8c60a80d3a25faec5aa7de116a746\"\n values.proposerFromDGF:\n- \"UNRESOLVED\"\n+ \"eth:0x2d14057c3ad6b04a480b06Da2356AdcdF5Ed97eE\"\n values.proxyAdmin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.version:\n- \"1.3.0\"\n+ \"1.6.1\"\n+++ severity: HIGH\n values.wethFromDGF:\n- \"UNRESOLVED\"\n+ \"eth:0x64555e021B913963e2D17de97efCc2723D3ec037\"\n+++ severity: HIGH\n values.absolutePrestateFromDGF:\n+ \"0x03682932cec7ce0a3874b19675a6bbc923054a7b321efc7d3835187b172494b6\"\n+++ severity: HIGH\n values.anchorStateRegistryFromDGF:\n+ \"eth:0x2613d77fFBE105CA861D526061dC3ef191E17051\"\n+++ severity: HIGH\n values.chainIdFromDGF:\n+ 48900\n+++ severity: HIGH\n values.game0:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n+++ severity: HIGH\n values.game1:\n+ \"eth:0xe1dFFCBE4e22B813F26d2106D943C102e7cAb87e\"\n+++ severity: HIGH\n values.game621:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n+++ severity: HIGH\n values.game8:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n+++ severity: HIGH\n values.game8AbsolutePrestate:\n+ \"UNRESOLVED\"\n+++ severity: HIGH\n values.game8AnchorStateRegistry:\n+ \"UNRESOLVED\"\n values.game8Args:\n+ \"0x\"\n+++ severity: HIGH\n values.game8ChainId:\n+ \"UNRESOLVED\"\n+++ severity: HIGH\n values.game8Vm:\n+ \"UNRESOLVED\"\n+++ severity: HIGH\n values.game8Weth:\n+ \"UNRESOLVED\"\n values.initBondGame0:\n+ 0\n values.initBondGame1:\n+ 0\n values.initBondGame621:\n+ 0\n values.initBondGame8:\n+ 0\n+++ severity: HIGH\n values.vmFromDGF:\n+ \"eth:0xaCc005DCd857B401e4732E6F7837135A22825cfA\"\n fieldMeta.$admin:\n- {\"severity\":\"HIGH\"}\n fieldMeta.owner:\n- {\"severity\":\"HIGH\"}\n fieldMeta.gameImpls:\n- {\"severity\":\"HIGH\"}\n fieldMeta.game2000:\n- {\"severity\":\"HIGH\"}\n fieldMeta.game621:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game0:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game1:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game8:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.absolutePrestateFromDGF:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.vmFromDGF:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game8AbsolutePrestate:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game8Vm:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game8AnchorStateRegistry:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game8Weth:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game8ChainId:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.anchorStateRegistryFromDGF:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.chainIdFromDGF:\n+ {\"severity\":\"HIGH\"}\n implementationNames.eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50:\n- \"DisputeGameFactory\"\n implementationNames.eth:0x72B971717E088B59F26d4236BE222ADB6ACD393b:\n+ \"DisputeGameFactory\"\n usedTypes.0:\n+ {\"typeCaster\":\"SliceBytes32\",\"arg\":{\"offset\":0}}\n usedTypes.1:\n+ {\"typeCaster\":\"SliceAddress\",\"arg\":{\"offset\":32}}\n usedTypes.2:\n+ {\"typeCaster\":\"SliceAddress\",\"arg\":{\"offset\":32}}\n usedTypes.3:\n+ {\"typeCaster\":\"SliceAddress\",\"arg\":{\"offset\":52}}\n usedTypes.4:\n+ {\"typeCaster\":\"SliceAddress\",\"arg\":{\"offset\":72}}\n usedTypes.5:\n+ {\"typeCaster\":\"SliceUint256\",\"arg\":{\"offset\":92}}\n usedTypes.2:\n- {\"typeCaster\":\"SliceAddress\",\"arg\":{\"offset\":72}}\n }\n```\n\n```diff\n- Status: DELETED\n contract DelayedWETH (eth:0x798d82222eC87C6B76aeF659A490e1ab9f7f9162) [opstack/DelayedWETH]\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n```\n\n```diff\n contract L1ERC721Bridge (eth:0x994eEb321F9cD79B077a5455fC248c77f30Dd244) [opstack/L1ERC721Bridge] {\n +++ description: Used to bridge ERC-721 tokens from host chain to this chain.\n sourceHashes.1:\n- \"0x1f65fda230b6d0df44e466b06418b2e12a401ef82c07521ad18d2f4ae6c70fb2\"\n+ \"0xc5ed62b03fb7c1340609ace7ebb0c5bf8d43b1814b1ab4f10863bfa21d13b90b\"\n values.$admin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.$implementation:\n- \"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9\"\n+ \"eth:0x9F164f1d02A81e06D639E55F65a87f0070E3Cb2e\"\n values.$pastUpgrades.10:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9\"]]\n values.$pastUpgrades.11:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.12:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x9F164f1d02A81e06D639E55F65a87f0070E3Cb2e\"]]\n values.$upgradeCount:\n- 10\n+ 13\n values.proxyAdmin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.version:\n- \"2.9.0\"\n+ \"2.9.1\"\n implementationNames.eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9:\n- \"L1ERC721Bridge\"\n implementationNames.eth:0x9F164f1d02A81e06D639E55F65a87f0070E3Cb2e:\n+ \"L1ERC721Bridge\"\n }\n```\n\n```diff\n contract OptimismMintableERC20Factory (eth:0xc77ece87C91C44AFb5f19638f9a0F75b5d90E932) [opstack/OptimismMintableERC20Factory] {\n +++ description: A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintableERC20 as this chain's representation of a token on the host chain, or vice-versa.\n sourceHashes.1:\n- \"0x307d4cb83e682629880fe9bb874a188805e3b93cb11a2cbf80095975f1e5b04e\"\n+ \"0x11b0ed6f15cabf613492a8d54c55304a17cf60f4fd94a655d7e720d4556906d0\"\n values.$admin:\n- \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.$implementation:\n- \"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB\"\n+ \"eth:0xaAbEA75Da509fA518Fd8a91Eae4BE5813B829b12\"\n values.$pastUpgrades.6:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB\"]]\n values.$pastUpgrades.7:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.8:\n+ [\"2026-09-17T09:31:11.000Z\",\"0x4f58067dd453c8a1bcf79ecca906ec4148586a00bab8b68621c88ad97fea3dbc\",[\"eth:0xaAbEA75Da509fA518Fd8a91Eae4BE5813B829b12\"]]\n values.$upgradeCount:\n- 6\n+ 9\n values.version:\n- \"1.10.2\"\n+ \"1.11.0\"\n values.proxyAdmin:\n+ \"eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d\"\n values.proxyAdminOwner:\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n implementationNames.eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB:\n- \"OptimismMintableERC20Factory\"\n implementationNames.eth:0xaAbEA75Da509fA518Fd8a91Eae4BE5813B829b12:\n+ \"OptimismMintableERC20Factory\"\n }\n```\n\n```diff\n contract L1Block (zircuit:0x4200000000000000000000000000000000000015) [N/A] {\n +++ description: Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain.\n template:\n- \"opstack/Layer2/L1Block\"\n sourceHashes.1:\n- \"0xba1197cf8ad03c23a68877c7bad92c7d43c0348aa7b03d38f36a17acb35a942e\"\n+ \"0xd9798824e7bda5321f6d983a265feb6c701d8d6fb6a009646c744ea5f90d7077\"\n values.$implementation:\n- \"zircuit:0xe95F7EdfB4cbf87eD14d94913448d89282513d66\"\n+ \"zircuit:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C\"\n values.$pastUpgrades.2:\n+ [\"2026-09-15T16:30:01.000Z\",\"0xcd60191626fa3124e7031235c52f0adf6be545ebbd7cf55641bd9dabcbedaf6a\",[\"zircuit:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.version:\n- \"1.6.1\"\n+ \"1.7.0\"\n values.daFootprintGasScalar:\n+ 400\n errors:\n- {\"daFootprintGasScalar\":\"Processing error occurred.\"}\n implementationNames.zircuit:0xe95F7EdfB4cbf87eD14d94913448d89282513d66:\n- \"L1Block\"\n implementationNames.zircuit:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C:\n+ \"L2ToL1MessagePasser\"\n }\n```\n\n```diff\n contract L2ProxyAdmin (zircuit:0x4200000000000000000000000000000000000018) [N/A] {\n +++ description: Administration contract for the L2 predeploy proxies. Adds upgradePredeploys(address), which can only be called by the system depositor account and delegatecalls an L2ContractsManager to upgrade every predeploy in a single network upgrade transaction.\n template:\n- \"global/ProxyAdmin\"\n sourceHashes.1:\n- \"0x9097b28161923c9e2353a796f1580ecf8bf3415bae9a69f49102bdf7a1b94da8\"\n+ \"0xcea31b58ff65b06189e9917b722bbf62c64be3d73b484e1bc79bc4be1c972b3e\"\n values.$implementation:\n- \"zircuit:0xC0d3C0D3c0d3C0d3c0d3c0D3C0D3C0d3C0D30018\"\n+ \"zircuit:0x893c2CEEb71D38514daF67728d3Ff1b213FC4B5F\"\n values.$pastUpgrades.0:\n+ [\"2026-09-23T16:00:01.000Z\",\"0x48aa8d6a9d281bf0eaa204e895acdfe0ba38640c34f6d133b2f4ecb879f5c72c\",[\"zircuit:0x893c2CEEb71D38514daF67728d3Ff1b213FC4B5F\"]]\n values.$upgradeCount:\n- 0\n+ 1\n+++ severity: HIGH\n values.addressManager:\n+ \"zircuit:0x0000000000000000000000000000000000000000\"\n values.isUpgrading:\n+ false\n values.version:\n+ \"1.0.0\"\n errors:\n- {\"addressManager\":\"Processing error occurred.\",\"isUpgrading\":\"Processing error occurred.\",\"version\":\"Processing error occurred.\"}\n implementationNames.zircuit:0xC0d3C0D3c0d3C0d3c0d3c0D3C0D3C0d3C0D30018:\n- \"ProxyAdmin\"\n implementationNames.zircuit:0x893c2CEEb71D38514daF67728d3Ff1b213FC4B5F:\n+ \"\"\n references:\n+ [{\"text\":\"Source Code\",\"href\":\"https://github.com/ethereum-optimism/optimism/blob/op-contracts/v7.0.0/packages/contracts-bedrock/src/L2/L2ProxyAdmin.sol\"}]\n }\n```\n\n```diff\n+ Status: CREATED\n contract PreimageOracle (eth:0x1E1d73536A081Ef2F355d29794547a9770Aeb1E0) [opstack/PreimageOracle]\n +++ description: The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (eth:0x3A317fCEE068868BE7628eFb233170df2DD5B71d) [global/ProxyAdmin]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DelayedWETH (eth:0x64555e021B913963e2D17de97efCc2723D3ec037) [opstack/DelayedWETH]\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n```\n\n```diff\n+ Status: CREATED\n contract AddressManager (eth:0x9D3acbf448541738cB45661905AE26233FBe65e5) [opstack/AddressManager]\n +++ description: Legacy contract used to manage a mapping of string names to addresses. Modern OP stack uses a different standard proxy system instead, but this contract is still necessary for backwards compatibility with several older contracts.\n```\n\n```diff\n+ Status: CREATED\n contract MIPS (eth:0xaCc005DCd857B401e4732E6F7837135A22825cfA) [opstack/MIPS]\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```\n\n```diff\n+ Status: CREATED\n contract PermissionedDisputeGame (eth:0xe1dFFCBE4e22B813F26d2106D943C102e7cAb87e) [opstack/PermissionedDisputeGame]\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n```"
}
]
},
{
"id": "51c18243",
"date": "Wed, 26 Aug 2026 12:30:17 GMT",
"timestamp": 1787747199,
"description": "OP-stack storage surgery performed on L1StandardBridge: https://tools.l2beat.com/decoder-new/?hash=0xa2c6d7a895f7793beb83cd3f0734b427fea4982e2ed35044555c52bf3a8a8a23&data=AwA that manually overwritten bridge storage slots.\n\nUntil Aug 4, 2026, Zircuit ran a modified bridge implementation that never maintained the OP-stack deposits accounting, after the migration to standard OP-stack contracts correct escrow balances had to be set for the following 12 tokens: ZRC, WETH, WBTC, USDT, USDC, weETH, weETHs, mETH, LsETH, FBTC, LBTC, GUD. This was verifeid by reproducing corresponding storage slots and comparing with the values in the transaction above.\n\nAlso, updated conduit ms and verified sources for L1Block contract on zircuit.",
"isHighSeverity": false,
"changeCount": 22,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1StandardBridge (eth:0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8) [opstack/L1StandardBridge] {\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n values.$pastUpgrades.16:\n+ [\"2026-08-22T11:12:35.000Z\",\"0xa2c6d7a895f7793beb83cd3f0734b427fea4982e2ed35044555c52bf3a8a8a23\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.17:\n+ [\"2026-08-22T11:12:35.000Z\",\"0xa2c6d7a895f7793beb83cd3f0734b427fea4982e2ed35044555c52bf3a8a8a23\",[\"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A\"]]\n values.$upgradeCount:\n- 16\n+ 18\n }\n```\n\n```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x9402c42dB162d5a0927c032136f40Cc9C71853F2\"\n values.multisigThreshold:\n- \"4 of 10 (40%)\"\n+ \"4 of 11 (36%)\"\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n contract L1Block (zircuit:0x4200000000000000000000000000000000000015) [opstack/Layer2/L1Block] {\n +++ description: Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain.\n unverified:\n- true\n values.$pastUpgrades.0:\n- [\"2025-05-12T16:00:01.000Z\",\"0xe992e00998b34075506d2726a274db07a62af6cdd9d527bfda9128114603cfbd\",[\"zircuit:0xFf256497D61dcd71a9e9Ff43967C13fdE1F72D12\"]]\n values.$upgradeCount:\n- 2\n+ 1\n values.baseFeeScalar:\n+ 7600\n values.batcherHash:\n+ \"0x000000000000000000000000cf8225801df6ef90ad3bc86808f574403a309de8\"\n values.DEPOSITOR_ACCOUNT:\n+ \"zircuit:0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001\"\n values.gasPayingToken:\n+ {\"addr_\":\"zircuit:0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\"decimals_\":18}\n values.gasPayingTokenName:\n+ \"Ether\"\n values.gasPayingTokenSymbol:\n+ \"ETH\"\n values.isCustomGasToken:\n+ false\n values.l1FeeOverhead:\n+ 0\n values.l1FeeScalar:\n+ 0\n values.version:\n+ \"1.6.1\"\n implementationNames.zircuit:0xe95F7EdfB4cbf87eD14d94913448d89282513d66:\n- \"\"\n+ \"L1Block\"\n template:\n+ \"opstack/Layer2/L1Block\"\n sourceHashes:\n+ [\"0x58e0fa3818df29fbb7de4e09a8c62f8952335a4ac32e30256ae72fd9681d7b50\",\"0xba1197cf8ad03c23a68877c7bad92c7d43c0348aa7b03d38f36a17acb35a942e\"]\n description:\n+ \"Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain.\"\n }\n```"
}
]
},
{
"id": "ad8ff8f2",
"date": "Wed, 19 Aug 2026 12:45:21 GMT",
"timestamp": 1787133501,
"description": "SuperchainConfig implementation upgraded v2.4.0 → v2.4.2 ([diff](https://disco.l2beat.com/diff/eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957/eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550)) via a StorageSetter step in one transaction. Guardian unchanged (Conduit Multisig 1).",
"isHighSeverity": true,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SuperchainConfig (eth:0x097f99768A0a4a0A81bAbbCB1ea18193bA9D53cC) [opstack/SuperchainConfigFake_expiry] {\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages pause states for each chain connected to it, as well as a global pause state for all chains. The guardian role can pause either separately, but each pause expires after 3mo 1d if left untouched.\n sourceHashes.1:\n- \"0x5fb525d1572fb90d060d122143b915059cbff39e0298b345857fd4267d7f6b28\"\n+ \"0x2cd597b7305a446a1df355e6909cbd75fe38aa045faf4876a8e5496eebc1734f\"\n values.$implementation:\n- \"eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957\"\n+ \"eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550\"\n values.$pastUpgrades.8:\n+ [\"2026-08-13T13:32:47.000Z\",\"0x2c62c31e4108c24123b9f5b3c26a87e5ec6b4fc3b85163c7257edb523316f9db\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.9:\n+ [\"2026-08-13T13:32:47.000Z\",\"0x2c62c31e4108c24123b9f5b3c26a87e5ec6b4fc3b85163c7257edb523316f9db\",[\"eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550\"]]\n values.$upgradeCount:\n- 8\n+ 10\n values.version:\n- \"2.4.0\"\n+ \"2.4.2\"\n implementationNames.eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957:\n- \"SuperchainConfig\"\n implementationNames.eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550:\n+ \"SuperchainConfig\"\n }\n```"
}
]
},
{
"id": "6dd5a1f4",
"date": "Wed, 12 Aug 2026 10:31:09 GMT",
"timestamp": 1786530598,
"description": "HIGH SEVERITY. Full migration off Zircuit's custom OP-stack fork onto a standard OP-stack fault-proof deployment, via 6 batched upgrade txs 2026-08-04 13:31-14:16 UTC. Matches Zircuit's public Conduit RaaS migration announced 2026-07-02. Checked $pastUpgrades for a bounce/rollback pattern: none found, intermediate hops are Optimism's shared StorageSetter contract used transiently within each batch tx.\n\nAdmin control moved from Zircuit's own two multisigs (both deleted) to Conduit's shared multisig (4-of-10): zero signer overlap with the old multisigs, and already admin on ~25 other Conduit-hosted L2Beat projects. Now owner of SystemConfig, guardian of OptimismPortal2, owner of ProxyAdmin. superchainConfig now points to Conduit's shared SuperchainConfigFake_expiry (used by 11 other tracked projects).\n\nOld escape hatch removed entirely: L2OutputOracle, ResolverRegistry, local SuperchainConfig fork, and both SP1 verifiers are gone (permissionless exit via merkle proof/resolver after 1mo of no state updates no longer exists). Replaced by standard fault-proof stack: DisputeGameFactory, PermissionedDisputeGame (proposer+challenger permissioned, not yet open), AnchorStateRegistry, MIPS, PreimageOracle, DelayedWETH. proofMaturityDelaySeconds 604800 (7d), disputeGameFinalityDelaySeconds 302400 (3.5d).\n\nVersion jumps: OptimismPortal2 2.2.0 -> 5.1.1, SystemConfig 1.12.0 -> 3.11.0, L1CrossDomainMessenger 2.4.0 -> 2.11.0, L1StandardBridge 2.3.0 -> 2.8.0, L1ERC721Bridge 2.2.0 -> 2.9.0.\n\nL1Block predeploy on L2 shows unverified: Zircuit's block explorer switched from Blockscout to Conduit's native explorer (explorer.zircuit.com). Confirmed via Conduit's own contract-verification API that this predeploy has no source match there yet - a real gap on the new explorer, not an L2Beat-side flake.\n\nDiff (OptimismPortal2): https://disco.l2beat.com/diff/eth:0xF7209f5471628aC5f68FE4ae98Feb7f02E0f40Be/eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202\nDiff (SystemConfig): https://disco.l2beat.com/diff/eth:0xaFD10586f3F2cB2aD34E8196563424a3a93EbE9F/eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED",
"isHighSeverity": true,
"changeCount": 198,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract SP1Verifier (eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459) [succinct/SP1Verifier]\n +++ description: Verifier contract for SP1 proofs (v5.0.0).\n```\n\n```diff\n contract OptimismPortal2 (eth:0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1) [opstack/OptimismPortal2] {\n +++ description: The OptimismPortal contract is the main entry point to deposit funds from L1 to L2. It also allows to prove and finalize withdrawals. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame.\n name:\n- \"OptimismPortal\"\n+ \"OptimismPortal2\"\n template:\n- \"opstack/zircuit/OptimismPortal\"\n+ \"opstack/OptimismPortal2\"\n sourceHashes.1:\n- \"0x75b3a40d24df23769d05a5f3bb0461a19038ca999e7d7a3bb9e1ea2579b405d6\"\n+ \"0x3e7e2cb08ba995795937c9c2e8ea9d0e4d2e2de852f389055073384d5f79c59d\"\n description:\n- \"The main entry point to deposit funds from the host chain to this chain. It also allows to prove and finalize withdrawals. This fork of the standard OP stack contract allows for permissionless 'escaping' of assets with merkle proofs or a resolver if there were no state updates for a time defined by the eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4.\"\n+ \"The OptimismPortal contract is the main entry point to deposit funds from L1 to L2. It also allows to prove and finalize withdrawals. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame.\"\n values.$implementation:\n- \"eth:0xF7209f5471628aC5f68FE4ae98Feb7f02E0f40Be\"\n+ \"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202\"\n values.$pastUpgrades.8:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.9:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0x2D778797049FE9259d947D1ED8e5442226dFB589\"]]\n values.$pastUpgrades.10:\n+ [\"2026-08-04T13:48:35.000Z\",\"0x3fb4739c3ce4edcab46b84c2438e7d1f86b85e7e57970a7eaf6b6de11dda6080\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.11:\n+ [\"2026-08-04T13:48:35.000Z\",\"0x3fb4739c3ce4edcab46b84c2438e7d1f86b85e7e57970a7eaf6b6de11dda6080\",[\"eth:0xe2F826324b2faf99E513D16D266c3F80aE87832B\"]]\n values.$pastUpgrades.12:\n+ [\"2026-08-04T13:59:35.000Z\",\"0xfb6124f237aaaccedd1f8d1298ae5f3b19871f7af18bd4c791a818487cc199de\",[\"eth:0x2D7e764a0D9919e16983a46595CfA81fc34fa7Cd\"]]\n values.$pastUpgrades.13:\n+ [\"2026-08-04T14:04:47.000Z\",\"0xf7628d3121b7e3f4dcd11e06791a07e8ffa71753962baadc04c62944d412a006\",[\"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4\"]]\n values.$pastUpgrades.14:\n+ [\"2026-08-04T14:11:35.000Z\",\"0xf7dd2207111f0f269b7cdfa8a7fa703b664585513bc113e0d2c8bc7ce9eb355f\",[\"eth:0x381E729FF983FA4BCEd820e7b922d79bF653B999\"]]\n values.$pastUpgrades.15:\n+ [\"2026-08-04T14:16:11.000Z\",\"0xeb6b35d861c5b232c47bc0e604f0834975876f80181776e46cb486f7a398cf03\",[\"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202\"]]\n values.$upgradeCount:\n- 8\n+ 16\n values.guardian:\n- \"eth:0x2c0B27F7C8F083B539557a0bA787041BF22DB276\"\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n values.l2Oracle:\n- \"eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4\"\n values.resolverRegistry:\n- \"eth:0x6c89104690452AD7e209f0ab72287C2561d5cF0E\"\n values.superchainConfig:\n- \"eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0\"\n+ \"eth:0x097f99768A0a4a0A81bAbbCB1ea18193bA9D53cC\"\n values.version:\n- \"2.2.0\"\n+ \"5.1.1\"\n values.anchorStateRegistry:\n+ \"eth:0x2613d77fFBE105CA861D526061dC3ef191E17051\"\n values.disputeGameFactory:\n+ \"eth:0x6b9e81504e961a9CDf81A06e916720fb4c273e90\"\n values.disputeGameFinalityDelaySeconds:\n+ 302400\n values.ethLockbox:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.initVersion:\n+ 3\n values.proofMaturityDelaySeconds:\n+ 604800\n values.proxyAdmin:\n+ \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n values.proxyAdminOwner:\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n values.RespectedGameString:\n+ \"PermissionedDisputeGame\"\n+++ severity: HIGH\n values.respectedGameType:\n+ 1\n values.respectedGameTypeUpdatedAt:\n+ 1785852695\n implementationNames.eth:0xF7209f5471628aC5f68FE4ae98Feb7f02E0f40Be:\n- \"OptimismPortal\"\n implementationNames.eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202:\n+ \"OptimismPortal2\"\n fieldMeta:\n+ {\"respectedGameType\":{\"severity\":\"HIGH\"},\"paused\":{\"severity\":\"HIGH\",\"description\":\"Whether the contract is paused or not. Determined by the SuperchainConfig contract PAUSED_SLOT. Here it pauses withdrawals. If this is paused, also the L1CrossDomainMessenger and ERC-20, ERC-721 deposits are paused.\"}}\n usedTypes:\n+ [{\"typeCaster\":\"Mapping\",\"arg\":{\"0\":\"FaultDisputeGame\",\"1\":\"PermissionedDisputeGame\",\"8\":\"FaultDisputeGame\",\"621\":\"AggregateVerifier\",\"1337\":\"KailuaGame\"}}]\n }\n```\n\n```diff\n contract L1CrossDomainMessenger (eth:0x2a721cBE81a128be0F01040e3353c3805A5EA091) [opstack/L1CrossDomainMessenger] {\n +++ description: Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n sourceHashes.1:\n- \"0xe784f0244cc07b370089b601090cc4c3c7469c9fdd2a281bfa13b438c1b88e0d\"\n+ \"0x1f2c13ad1144ce6548e578b834c33b0d65b1564aeb0d5c708ed4e7fb50535cc6\"\n values.$implementation:\n- \"eth:0xA5B66A9FBCE3d57dA2b3Bd764d0a05B95052f73F\"\n+ \"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0\"\n values.$pastUpgrades.2:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.3:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65\"]]\n values.$pastUpgrades.4:\n+ [\"2026-08-04T13:40:47.000Z\",\"0x2b72943b3cf73e5f4dade0cc6edd2f78bc2cb3f518df2872cf6fd69aea924cc0\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.5:\n+ [\"2026-08-04T13:40:47.000Z\",\"0x2b72943b3cf73e5f4dade0cc6edd2f78bc2cb3f518df2872cf6fd69aea924cc0\",[\"eth:0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65\"]]\n values.$pastUpgrades.6:\n+ [\"2026-08-04T13:59:35.000Z\",\"0xfb6124f237aaaccedd1f8d1298ae5f3b19871f7af18bd4c791a818487cc199de\",[\"eth:0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231\"]]\n values.$pastUpgrades.7:\n+ [\"2026-08-04T14:04:47.000Z\",\"0xf7628d3121b7e3f4dcd11e06791a07e8ffa71753962baadc04c62944d412a006\",[\"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B\"]]\n values.$pastUpgrades.8:\n+ [\"2026-08-04T14:11:35.000Z\",\"0xf7dd2207111f0f269b7cdfa8a7fa703b664585513bc113e0d2c8bc7ce9eb355f\",[\"eth:0x22D12E0FAebD62d429514A65EBAe32dd316c12D6\"]]\n values.$pastUpgrades.9:\n+ [\"2026-08-04T14:16:11.000Z\",\"0xeb6b35d861c5b232c47bc0e604f0834975876f80181776e46cb486f7a398cf03\",[\"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0\"]]\n values.$upgradeCount:\n- 2\n+ 10\n values.superchainConfig:\n- \"eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0\"\n+ \"eth:0x097f99768A0a4a0A81bAbbCB1ea18193bA9D53cC\"\n values.version:\n- \"2.4.0\"\n+ \"2.11.0\"\n values.initVersion:\n+ 3\n values.proxyAdmin:\n+ \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n values.proxyAdminOwner:\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n values.systemConfig:\n+ \"eth:0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff\"\n implementationNames.eth:0xA5B66A9FBCE3d57dA2b3Bd764d0a05B95052f73F:\n- \"L1CrossDomainMessenger\"\n implementationNames.eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0:\n+ \"L1CrossDomainMessenger\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Zircuit Multisig 2 (eth:0x2c0B27F7C8F083B539557a0bA787041BF22DB276) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n contract SystemConfig (eth:0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff) [opstack/SystemConfig] {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n sourceHashes.1:\n- \"0x3773dd699ed2a94c92b617c9e76c0191f58b9de68e2605999d076e287869e165\"\n+ \"0xaa1b3bedab4e63198240e9dea4503f0e615e4d18a545961c9f11b72143279fbc\"\n values.$implementation:\n- \"eth:0xaFD10586f3F2cB2aD34E8196563424a3a93EbE9F\"\n+ \"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED\"\n values.$pastUpgrades.4:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.5:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0xba2492e52F45651B60B8B38d4Ea5E2390C64Ffb1\"]]\n values.$pastUpgrades.6:\n+ [\"2026-08-04T13:40:47.000Z\",\"0x2b72943b3cf73e5f4dade0cc6edd2f78bc2cb3f518df2872cf6fd69aea924cc0\",[\"eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375\"]]\n values.$pastUpgrades.7:\n+ [\"2026-08-04T13:48:35.000Z\",\"0x3fb4739c3ce4edcab46b84c2438e7d1f86b85e7e57970a7eaf6b6de11dda6080\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.8:\n+ [\"2026-08-04T13:48:35.000Z\",\"0x3fb4739c3ce4edcab46b84c2438e7d1f86b85e7e57970a7eaf6b6de11dda6080\",[\"eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375\"]]\n values.$pastUpgrades.9:\n+ [\"2026-08-04T13:59:35.000Z\",\"0xfb6124f237aaaccedd1f8d1298ae5f3b19871f7af18bd4c791a818487cc199de\",[\"eth:0x760C48C62A85045A6B69f07F4a9f22868659CbCc\"]]\n values.$pastUpgrades.10:\n+ [\"2026-08-04T14:04:47.000Z\",\"0xf7628d3121b7e3f4dcd11e06791a07e8ffa71753962baadc04c62944d412a006\",[\"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647\"]]\n values.$pastUpgrades.11:\n+ [\"2026-08-04T14:11:35.000Z\",\"0xf7dd2207111f0f269b7cdfa8a7fa703b664585513bc113e0d2c8bc7ce9eb355f\",[\"eth:0x2bFE4A5Bd5A41e9d848d843ebCDFa15954e9A557\"]]\n values.$pastUpgrades.12:\n+ [\"2026-08-04T14:16:11.000Z\",\"0xeb6b35d861c5b232c47bc0e604f0834975876f80181776e46cb486f7a398cf03\",[\"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED\"]]\n values.$upgradeCount:\n- 4\n+ 13\n values.basefeeScalar:\n- 1368\n+ 7600\n values.batcherHash:\n- \"eth:0xAF1E4f6a47af647F87C0Ec814d8032C4a4bFF145\"\n+ \"eth:0xCf8225801DF6Ef90aD3bc86808F574403A309de8\"\n values.blobbasefeeScalar:\n- 810949\n+ 862000\n+++ description: volatility param: lower denominator -> quicker fee changes on L2\n values.eip1559Denominator:\n- 0\n+ 50\n values.eip1559Elasticity:\n- 0\n+ 6\n values.L2_OUTPUT_ORACLE_SLOT:\n- \"0xe52a667f71ec761b9b381c7b76ca9b852adf7e8905da0e0ad49986a0a6871815\"\n values.l2OutputOracle:\n- \"eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4\"\n values.minimumGasLimit:\n- 7000000\n+ 21000000\n values.operatorFeeConstant:\n- 360000000000\n+ 0\n values.operatorFeeScalar:\n- 4200000000\n+ 0\n values.OSAKA_TX_MAX_GAS:\n- 16777216\n values.owner:\n- \"eth:0xC463EaC02572CC964D43D2414023E2c6B62bAF38\"\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n values.resourceConfig.maxResourceLimit:\n- 6000000\n+ 20000000\n values.resourceConfig._spacer:\n- 8\n values.unsafeBlockSigner:\n- \"eth:0xAE8f771E297AAbfDE7ff35a33FB6D558f4E0a679\"\n+ \"eth:0x0037e8264020bF2B3e6f57B529e07347f76F2D55\"\n values.version:\n- \"1.12.0\"\n+ \"3.11.0\"\n values.daFootprintGasScalar:\n+ 0\n values.disputeGameFactory:\n+ \"eth:0x6b9e81504e961a9CDf81A06e916720fb4c273e90\"\n values.getAddresses:\n+ {\"l1CrossDomainMessenger\":\"eth:0x2a721cBE81a128be0F01040e3353c3805A5EA091\",\"l1ERC721Bridge\":\"eth:0x994eEb321F9cD79B077a5455fC248c77f30Dd244\",\"l1StandardBridge\":\"eth:0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8\",\"optimismPortal\":\"eth:0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1\",\"optimismMintableERC20Factory\":\"eth:0xc77ece87C91C44AFb5f19638f9a0F75b5d90E932\"}\n values.guardian:\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n values.initVersion:\n+ 3\n values.l2ChainId:\n+ 48900\n values.maximumGasLimit:\n+ 500000000\n values.minBaseFee:\n+ 0\n values.paused:\n+ false\n values.proxyAdmin:\n+ \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n values.proxyAdminOwner:\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n values.superchainConfig:\n+ \"eth:0x097f99768A0a4a0A81bAbbCB1ea18193bA9D53cC\"\n implementationNames.eth:0xaFD10586f3F2cB2aD34E8196563424a3a93EbE9F:\n- \"SystemConfig\"\n implementationNames.eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED:\n+ \"SystemConfig\"\n }\n```\n\n```diff\n contract L1StandardBridge (eth:0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8) [opstack/L1StandardBridge] {\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n template:\n- \"opstack/zircuit/L1StandardBridge\"\n+ \"opstack/L1StandardBridge\"\n sourceHashes.1:\n- \"0x2324f7b9f352cb131178a3853eb2383e5c82923461c55e76d14c23fd231664f9\"\n+ \"0xcacd38e7b52353ad3463da40b7e7a29b028f95500a82590d2b8f8ffd26b83f6d\"\n description:\n- \"The main entry point to deposit ERC20 tokens from the host chain to this chain. This fork of the standard OP stack contract allows for permissionless 'escaping' of assets with merkle proofs or a resolver if there were no state updates for a configurable time.\"\n+ \"The main entry point to deposit ERC20 tokens from host chain to this chain.\"\n values.$implementation:\n- \"eth:0x25DF2d6DDCa09C0f9Fce19373896be075F4f7d98\"\n+ \"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A\"\n values.$pastUpgrades.8:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.9:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF\"]]\n values.$pastUpgrades.10:\n+ [\"2026-08-04T13:40:47.000Z\",\"0x2b72943b3cf73e5f4dade0cc6edd2f78bc2cb3f518df2872cf6fd69aea924cc0\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.11:\n+ [\"2026-08-04T13:40:47.000Z\",\"0x2b72943b3cf73e5f4dade0cc6edd2f78bc2cb3f518df2872cf6fd69aea924cc0\",[\"eth:0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF\"]]\n values.$pastUpgrades.12:\n+ [\"2026-08-04T13:59:35.000Z\",\"0xfb6124f237aaaccedd1f8d1298ae5f3b19871f7af18bd4c791a818487cc199de\",[\"eth:0x78972E88Ab8BBB517a36cAea23b931BAB58AD3c6\"]]\n values.$pastUpgrades.13:\n+ [\"2026-08-04T14:04:47.000Z\",\"0xf7628d3121b7e3f4dcd11e06791a07e8ffa71753962baadc04c62944d412a006\",[\"eth:0x0b09ba359A106C9ea3b181CBc5F394570c7d2a7A\"]]\n values.$pastUpgrades.14:\n+ [\"2026-08-04T14:11:35.000Z\",\"0xf7dd2207111f0f269b7cdfa8a7fa703b664585513bc113e0d2c8bc7ce9eb355f\",[\"eth:0xe32B192fb1DcA88fCB1C56B3ACb429e32238aDCb\"]]\n values.$pastUpgrades.15:\n+ [\"2026-08-04T14:16:11.000Z\",\"0xeb6b35d861c5b232c47bc0e604f0834975876f80181776e46cb486f7a398cf03\",[\"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A\"]]\n values.$upgradeCount:\n- 8\n+ 16\n values.accessController:\n- \"eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0\"\n values.superchainConfig:\n- \"eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0\"\n+ \"eth:0x097f99768A0a4a0A81bAbbCB1ea18193bA9D53cC\"\n values.version:\n- \"2.3.0\"\n+ \"2.8.0\"\n values.initVersion:\n+ 3\n values.l2TokenBridge:\n+ \"eth:0x4200000000000000000000000000000000000010\"\n values.proxyAdmin:\n+ \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n values.proxyAdminOwner:\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n values.systemConfig:\n+ \"eth:0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff\"\n implementationNames.eth:0x25DF2d6DDCa09C0f9Fce19373896be075F4f7d98:\n- \"L1StandardBridge\"\n implementationNames.eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A:\n+ \"L1StandardBridge\"\n }\n```\n\n```diff\n- Status: DELETED\n contract SP1Verifier (eth:0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5) [succinct/SP1Verifier]\n +++ description: Verifier contract for SP1 proofs (v5.0.0).\n```\n\n```diff\n contract ProxyAdmin (eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257) [global/ProxyAdmin] {\n +++ description: None\n values.owner:\n- \"eth:0xC463EaC02572CC964D43D2414023E2c6B62bAF38\"\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n directlyReceivedPermissions.1:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x2613d77fFBE105CA861D526061dC3ef191E17051\",\"role\":\"admin\"}\n directlyReceivedPermissions.4:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x6c89104690452AD7e209f0ab72287C2561d5cF0E\",\"role\":\"admin\"}\n directlyReceivedPermissions.5.from:\n- \"eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0\"\n+ \"eth:0x6b9e81504e961a9CDf81A06e916720fb4c273e90\"\n directlyReceivedPermissions.6.from:\n- \"eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4\"\n+ \"eth:0x798d82222eC87C6B76aeF659A490e1ab9f7f9162\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ResolverRegistry (eth:0x6c89104690452AD7e209f0ab72287C2561d5cF0E) [opstack/zircuit/ResolverRegistry]\n +++ description: Registers 'resolvers' which are allowed to supply authoritative data for blockchain balances to support escapes without merkle proofs from e.g. DeFi smart contracts on L2. A resolver can either be registered directly by the respective contract on L2 or by its deployer from L1, using deterministic deployment derivation.\n```\n\n```diff\n- Status: DELETED\n contract ZircuitSuperchainConfig (eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0) [opstack/zircuit/SuperchainConfig]\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and access control for configuring actors who can pause and unpause the system.\n```\n\n```diff\n- Status: DELETED\n contract L2OutputOracle (eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4) [opstack/zircuit/L2OutputOracle_SP1_nokeepalive]\n +++ description: Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition. Users can 'escape' their funds after 1mo of no state updates by supplying merkle proofs or using a resolver.\n```\n\n```diff\n contract L1ERC721Bridge (eth:0x994eEb321F9cD79B077a5455fC248c77f30Dd244) [opstack/L1ERC721Bridge] {\n +++ description: Used to bridge ERC-721 tokens from host chain to this chain.\n sourceHashes.1:\n- \"0xeebc391f228960e573a84b61884f39e3f4d64ad3a105cb7974f641c4a737954e\"\n+ \"0x1f65fda230b6d0df44e466b06418b2e12a401ef82c07521ad18d2f4ae6c70fb2\"\n values.$implementation:\n- \"eth:0xDF129ECFc63Af454F62b69d03C0f0E21e69bcDAb\"\n+ \"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9\"\n values.$pastUpgrades.2:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.3:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d\"]]\n values.$pastUpgrades.4:\n+ [\"2026-08-04T13:40:47.000Z\",\"0x2b72943b3cf73e5f4dade0cc6edd2f78bc2cb3f518df2872cf6fd69aea924cc0\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.5:\n+ [\"2026-08-04T13:40:47.000Z\",\"0x2b72943b3cf73e5f4dade0cc6edd2f78bc2cb3f518df2872cf6fd69aea924cc0\",[\"eth:0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d\"]]\n values.$pastUpgrades.6:\n+ [\"2026-08-04T13:59:35.000Z\",\"0xfb6124f237aaaccedd1f8d1298ae5f3b19871f7af18bd4c791a818487cc199de\",[\"eth:0x276d3730f219f7ec22274f7263180b8452B46d47\"]]\n values.$pastUpgrades.7:\n+ [\"2026-08-04T14:04:47.000Z\",\"0xf7628d3121b7e3f4dcd11e06791a07e8ffa71753962baadc04c62944d412a006\",[\"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013\"]]\n values.$pastUpgrades.8:\n+ [\"2026-08-04T14:11:35.000Z\",\"0xf7dd2207111f0f269b7cdfa8a7fa703b664585513bc113e0d2c8bc7ce9eb355f\",[\"eth:0x7f1d12fB2911EB095278085f721e644C1f675696\"]]\n values.$pastUpgrades.9:\n+ [\"2026-08-04T14:16:11.000Z\",\"0xeb6b35d861c5b232c47bc0e604f0834975876f80181776e46cb486f7a398cf03\",[\"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9\"]]\n values.$upgradeCount:\n- 2\n+ 10\n values.superchainConfig:\n- \"eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0\"\n+ \"eth:0x097f99768A0a4a0A81bAbbCB1ea18193bA9D53cC\"\n values.version:\n- \"2.2.0\"\n+ \"2.9.0\"\n values.initVersion:\n+ 3\n values.proxyAdmin:\n+ \"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"\n values.proxyAdminOwner:\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n values.systemConfig:\n+ \"eth:0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff\"\n implementationNames.eth:0xDF129ECFc63Af454F62b69d03C0f0E21e69bcDAb:\n- \"L1ERC721Bridge\"\n implementationNames.eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9:\n+ \"L1ERC721Bridge\"\n }\n```\n\n```diff\n- Status: DELETED\n contract SP1MockVerifierWithHash (eth:0xb4bd9A37998576C2FfD863b6dc9E0124021B8739) [N/A]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract Zircuit Multisig 1 (eth:0xC463EaC02572CC964D43D2414023E2c6B62bAF38) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n contract OptimismMintableERC20Factory (eth:0xc77ece87C91C44AFb5f19638f9a0F75b5d90E932) [opstack/OptimismMintableERC20Factory] {\n +++ description: A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintableERC20 as this chain's representation of a token on the host chain, or vice-versa.\n sourceHashes.1:\n- \"0x8fa0103a7f0708fce3badff106e2d615501b3405658422802ee59b7d9f9e5472\"\n+ \"0x307d4cb83e682629880fe9bb874a188805e3b93cb11a2cbf80095975f1e5b04e\"\n values.$implementation:\n- \"eth:0xf885DA6A3B4c93905b02f36f9a13680922A554b0\"\n+ \"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB\"\n values.$pastUpgrades.1:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.2:\n+ [\"2026-08-04T13:31:59.000Z\",\"0xe697fe2a042f60a3fb3f835e122e209bab529a36fe66bfc77af79dbb1bebdfa4\",[\"eth:0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846\"]]\n values.$pastUpgrades.3:\n+ [\"2026-08-04T13:40:47.000Z\",\"0x2b72943b3cf73e5f4dade0cc6edd2f78bc2cb3f518df2872cf6fd69aea924cc0\",[\"eth:0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846\"]]\n values.$pastUpgrades.4:\n+ [\"2026-08-04T13:59:35.000Z\",\"0xfb6124f237aaaccedd1f8d1298ae5f3b19871f7af18bd4c791a818487cc199de\",[\"eth:0x5493f4677A186f64805fe7317D6993ba4863988F\"]]\n values.$pastUpgrades.5:\n+ [\"2026-08-04T14:16:11.000Z\",\"0xeb6b35d861c5b232c47bc0e604f0834975876f80181776e46cb486f7a398cf03\",[\"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB\"]]\n values.$upgradeCount:\n- 1\n+ 6\n values.version:\n- \"1.9.0\"\n+ \"1.10.2\"\n implementationNames.eth:0xf885DA6A3B4c93905b02f36f9a13680922A554b0:\n- \"OptimismMintableERC20Factory\"\n implementationNames.eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB:\n+ \"OptimismMintableERC20Factory\"\n }\n```\n\n```diff\n- Status: DELETED\n contract SP1VerifierGateway (eth:0xf35A4088eA0231C44B9DB52D25c0E9E2fEe31f67) [succinct/SP1VerifierGateway]\n +++ description: This contract is the router for zk proof verification. It stores the mapping between identifiers and the address of onchain verifier contracts, routing each identifier to the corresponding verifier contract.\n```\n\n```diff\n contract L1Block (zircuit:0x4200000000000000000000000000000000000015) [N/A] {\n +++ description: None\n template:\n- \"opstack/Layer2/L1Block_depositExclusions\"\n sourceHashes:\n- [\"0x58e0fa3818df29fbb7de4e09a8c62f8952335a4ac32e30256ae72fd9681d7b50\",\"0xbb69c5830d6e822e4bf9c51ad08b5ade53450cf808a5cabc8665f40e5c6d7c1a\"]\n description:\n- \"Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain. This version though also contains a storage slot for `depositExclusions`.\"\n values.$implementation:\n- \"zircuit:0xFf256497D61dcd71a9e9Ff43967C13fdE1F72D12\"\n+ \"zircuit:0xe95F7EdfB4cbf87eD14d94913448d89282513d66\"\n values.$pastUpgrades.1:\n+ [\"2026-08-04T14:50:01.000Z\",\"0xd89e381f4e17d7226144ae90c4efef010f4f085afb76b191add65dcf51aef089\",[\"zircuit:0xe95F7EdfB4cbf87eD14d94913448d89282513d66\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.basefee:\n- 129016686\n values.baseFeeScalar:\n- 1368\n values.batcherHash:\n- \"0x000000000000000000000000af1e4f6a47af647f87c0ec814d8032c4a4bff145\"\n values.blobBaseFee:\n- 6234620\n values.blobBaseFeeScalar:\n- 810949\n values.depositExclusions:\n- \"0x\"\n values.DEPOSITOR_ACCOUNT:\n- \"zircuit:0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001\"\n values.hash:\n- \"0x1cfd2189d2e946c9d3da809f0e22666602b7d2b84dcf08793f293371c9ad5f6a\"\n values.l1FeeOverhead:\n- 0\n values.l1FeeScalar:\n- 0\n values.number:\n- 25645265\n values.operatorFeeConstant:\n- 360000000000\n values.operatorFeeScalar:\n- 4200000000\n values.sequenceNumber:\n- 5\n values.timestamp:\n- 1785409595\n values.version:\n- \"1.3.0\"\n implementationNames.zircuit:0xFf256497D61dcd71a9e9Ff43967C13fdE1F72D12:\n- \"L1Block\"\n implementationNames.zircuit:0xe95F7EdfB4cbf87eD14d94913448d89282513d66:\n+ \"\"\n unverified:\n+ true\n }\n```\n\n```diff\n contract ProxyAdmin (zircuit:0x4200000000000000000000000000000000000018) [global/ProxyAdmin] {\n +++ description: None\n values.owner:\n- \"zircuit:0xC463EaC02572CC964D43D2414023E2c6B62bAF38\"\n+ \"zircuit:0x5b5A62275DF8c60A80D3a25FAeC5aA7De116b857\"\n }\n```\n\n```diff\n- Status: DELETED\n contract GnosisSafe (zircuit:0xC463EaC02572CC964D43D2414023E2c6B62bAF38) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SuperchainConfig (eth:0x097f99768A0a4a0A81bAbbCB1ea18193bA9D53cC) [opstack/SuperchainConfigFake_expiry]\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages pause states for each chain connected to it, as well as a global pause state for all chains. The guardian role can pause either separately, but each pause expires after 3mo 1d if left untouched.\n```\n\n```diff\n+ Status: CREATED\n contract PreimageOracle (eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3) [opstack/PreimageOracle]\n +++ description: The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n```\n\n```diff\n+ Status: CREATED\n contract AnchorStateRegistry (eth:0x2613d77fFBE105CA861D526061dC3ef191E17051) [opstack/AnchorStateRegistry_post13]\n +++ description: Contains the latest confirmed state root that can be used as a starting point in a dispute game. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame.\n```\n\n```diff\n+ Status: CREATED\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PermissionedDisputeGame (eth:0x4F80B390aF3b49dda96134DA1ac905b05e816496) [opstack/PermissionedDisputeGame]\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n```\n\n```diff\n+ Status: CREATED\n contract MIPS (eth:0x6463dEE3828677F6270d83d45408044fc5eDB908) [opstack/MIPS]\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```\n\n```diff\n+ Status: CREATED\n contract DisputeGameFactory (eth:0x6b9e81504e961a9CDf81A06e916720fb4c273e90) [opstack/DisputeGameFactory]\n +++ description: The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\n```\n\n```diff\n+ Status: CREATED\n contract DelayedWETH (eth:0x798d82222eC87C6B76aeF659A490e1ab9f7f9162) [opstack/DelayedWETH]\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (eth:0xb4899FF43Ae727B1E9CB19AC44660e4A43Fad0b5) [global/ProxyAdmin]\n +++ description: None\n```"
}
]
},
{
"id": "f96252b2",
"date": "Thu, 30 Jul 2026 11:09:17 GMT",
"timestamp": 1785409633,
"description": "Zircuit Multisig 2 rotated one signer (`0x3880...8679` -> `0xf5B2...c1ae`); threshold remains 2/5.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Zircuit Multisig 2 (eth:0x2c0B27F7C8F083B539557a0bA787041BF22DB276) [GnosisSafe] {\n +++ description: None\n values.$members.4:\n- \"eth:0x38809210f69ed6204E276d2Be6b15cd530698679\"\n+ \"eth:0xf5B2C0bfA18561d5374EAcc5FFfA3E39B049c1ae\"\n }\n```"
}
]
},
{
"id": "935c8aa9",
"date": "Tue, 02 Jun 2026 11:17:40 GMT",
"timestamp": 1780398934,
"description": "Zircuit Multisig 1 rotated two signers (`$members[0]` and `$members[5]`).",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Zircuit Multisig 1 (eth:0xC463EaC02572CC964D43D2414023E2c6B62bAF38) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0xaAf347c2381369cA0bE97320413E3C04f8561f7e\"\n+ \"eth:0xf1829C83C227d3cc30a4204B091A7865AbCD0419\"\n values.$members.5:\n- \"eth:0x38809210f69ed6204E276d2Be6b15cd530698679\"\n+ \"eth:0xf5B2C0bfA18561d5374EAcc5FFfA3E39B049c1ae\"\n }\n```\n\n```diff\n contract GnosisSafe (zircuit:0xC463EaC02572CC964D43D2414023E2c6B62bAF38) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"zircuit:0xaAf347c2381369cA0bE97320413E3C04f8561f7e\"\n+ \"zircuit:0xf1829C83C227d3cc30a4204B091A7865AbCD0419\"\n values.$members.5:\n- \"zircuit:0x38809210f69ed6204E276d2Be6b15cd530698679\"\n+ \"zircuit:0xf5B2C0bfA18561d5374EAcc5FFfA3E39B049c1ae\"\n }\n```"
}
]
},
{
"id": "09fd5612",
"date": "Wed, 25 Mar 2026 10:06:05 GMT",
"timestamp": 1774433075,
"description": "L2OutputOracle was upgraded twice in the same transaction. The proposer address was changed from 0xE8C20EA8eF100d7aa3846616E5D07A5aBb067C65 to 0x691b3588eB87E6163260650D3BB465883EB6A575.",
"isHighSeverity": true,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L2OutputOracle (eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4) {\n +++ description: Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition. Users can 'escape' their funds after 1mo of no state updates by supplying merkle proofs or using a resolver.\n values.$pastUpgrades.9:\n+ [\"2026-03-19T11:32:11.000Z\",\"0xde1731a6499e91bf3c8d7b575fc6b5e8b92966625ed4f890142c94d8de15ab5a\",[\"eth:0xB0790b9d22F92131e9E8D46F5b0f99ab88C3a21d\"]]\n values.$pastUpgrades.10:\n+ [\"2026-03-19T11:32:11.000Z\",\"0xde1731a6499e91bf3c8d7b575fc6b5e8b92966625ed4f890142c94d8de15ab5a\",[\"eth:0x5E66C2820666f4Fb490d2D2edE4dCB0E46CD03C6\"]]\n values.$upgradeCount:\n- 9\n+ 11\n+++ severity: HIGH\n values.proposer:\n- \"eth:0xE8C20EA8eF100d7aa3846616E5D07A5aBb067C65\"\n+ \"eth:0x691b3588eB87E6163260650D3BB465883EB6A575\"\n values.PROPOSER:\n- \"eth:0xE8C20EA8eF100d7aa3846616E5D07A5aBb067C65\"\n+ \"eth:0x691b3588eB87E6163260650D3BB465883EB6A575\"\n }\n```"
}
]
},
{
"id": "704727cd",
"date": "Fri, 27 Feb 2026 14:17:19 GMT",
"timestamp": 1772198396,
"description": "SP1MockVerifierWithHash (a no-op verifier that accepts all proofs) was added to the SP1VerifierGateway with selector 0xffffffff. Proof verification can be bypassed by the proposer via this selector; safety then depends on challenger intervention before finalization. The mock verifier's `verifyProof` function has an empty body with comment `// accept everything`. Diff with a real verifier: https://disco.l2beat.com/diff/eth:0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5/eth:0xb4bd9A37998576C2FfD863b6dc9E0124021B8739",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SP1VerifierGateway (eth:0xf35A4088eA0231C44B9DB52D25c0E9E2fEe31f67) {\n +++ description: This contract is the router for zk proof verification. It stores the mapping between identifiers and the address of onchain verifier contracts, routing each identifier to the corresponding verifier contract.\n+++ description: Verifiers that are routed to by their selector and not frozen.\n values.activeVerifiers.2:\n+ {\"selector\":\"0xffffffff\",\"verifier\":\"eth:0xb4bd9A37998576C2FfD863b6dc9E0124021B8739\"}\n+++ description: All verifiers that were ever routed to by this gateway.\n values.allVerifiers.2:\n+ {\"selector\":\"0xffffffff\",\"verifier\":\"eth:0xb4bd9A37998576C2FfD863b6dc9E0124021B8739\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract SP1MockVerifierWithHash (eth:0xb4bd9A37998576C2FfD863b6dc9E0124021B8739)\n +++ description: None\n```"
}
]
},
{
"id": "38dbe903",
"date": "Fri, 13 Feb 2026 15:26:02 GMT",
"timestamp": 1770993167,
"description": "Zircuit Multisig 1 signer rotation: 3 signers removed, 3 replaced. Threshold reduced from 6/8 (75%) to 4/6 (67%). Same change reflected on both Ethereum and Zircuit chain instances of the multisig.",
"isHighSeverity": false,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Zircuit Multisig 1 (eth:0xC463EaC02572CC964D43D2414023E2c6B62bAF38) {\n +++ description: None\n values.$members.0:\n- \"eth:0xD8399320cF3a6C7068DaC0C35ea5e74ddd650BD4\"\n values.$members.1:\n- \"eth:0xf5B2C0bfA18561d5374EAcc5FFfA3E39B049c1ae\"\n values.$members.2:\n- \"eth:0x63cbB9fA540F6249AE4A3576f48BF07609b3a355\"\n+ \"eth:0xaAf347c2381369cA0bE97320413E3C04f8561f7e\"\n values.$members.3:\n- \"eth:0x5E2a81d611e973C2ab1A4cAa71DD4E4Cdb2617d4\"\n+ \"eth:0xa65e20D8CB0598A1060e8359B07Ef846C3E12750\"\n values.$members.4:\n- \"eth:0x2F9072d5A8118a60ce41611AEe3e393D107f8Cec\"\n+ \"eth:0xf715F6E706dB2765DdD6140a4C654EBa13be1382\"\n values.$threshold:\n- 6\n+ 4\n values.multisigThreshold:\n- \"6 of 8 (75%)\"\n+ \"4 of 6 (67%)\"\n }\n```\n\n```diff\n contract GnosisSafe (zircuit:0xC463EaC02572CC964D43D2414023E2c6B62bAF38) {\n +++ description: None\n values.$members.0:\n- \"zircuit:0xD8399320cF3a6C7068DaC0C35ea5e74ddd650BD4\"\n values.$members.1:\n- \"zircuit:0xf5B2C0bfA18561d5374EAcc5FFfA3E39B049c1ae\"\n values.$members.2:\n- \"zircuit:0x63cbB9fA540F6249AE4A3576f48BF07609b3a355\"\n+ \"zircuit:0xaAf347c2381369cA0bE97320413E3C04f8561f7e\"\n values.$members.3:\n- \"zircuit:0x5E2a81d611e973C2ab1A4cAa71DD4E4Cdb2617d4\"\n+ \"zircuit:0xa65e20D8CB0598A1060e8359B07Ef846C3E12750\"\n values.$members.4:\n- \"zircuit:0x2F9072d5A8118a60ce41611AEe3e393D107f8Cec\"\n+ \"zircuit:0xf715F6E706dB2765DdD6140a4C654EBa13be1382\"\n values.$threshold:\n- 6\n+ 4\n values.multisigThreshold:\n- \"6 of 8 (75%)\"\n+ \"4 of 6 (67%)\"\n }\n```"
}
]
},
{
"id": "4907857a",
"date": "Fri, 05 Dec 2025 11:41:25 GMT",
"timestamp": 1764934764,
"description": "Increased operator fee.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SystemConfig (eth:0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n values.operatorFeeConstant:\n- 23225000000\n+ 360000000000\n }\n```\n\n```diff\n contract L1Block (zircuit:0x4200000000000000000000000000000000000015) {\n +++ description: Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain. This version though also contains a storage slot for `depositExclusions`.\n values.operatorFeeConstant:\n- 23225000000\n+ 360000000000\n }\n```"
}
]
},
{
"id": "7ea99626",
"date": "Tue, 25 Nov 2025 08:34:20 GMT",
"timestamp": 1764059552,
"description": "minor upgrade for fusaka changes and cleanup of the bootstrapv2 functions + removal of the 'keepalive' proof circumvention:\n\nSystemConfig: https://disco.l2beat.com/diff/eth:0x83085450544c3F360a40720859EbB1bfd311584D/eth:0xaFD10586f3F2cB2aD34E8196563424a3a93EbE9F\n\nL1StandardBridge: https://disco.l2beat.com/diff/eth:0xFF30d6E9acecc919e4E9e1A2e67980ee44Df6Ebb/eth:0x25DF2d6DDCa09C0f9Fce19373896be075F4f7d98\n\nL2OutputOracle: https://disco.l2beat.com/diff/eth:0x6AB82bb139383BB758348fBb81EdA57458e59f65/eth:0x5E66C2820666f4Fb490d2D2edE4dCB0E46CD03C6\n- keepalive removed\n- aggregationvkey changed to `0x0050b72e60cf8aef095d5718413fd32e1c18d0e54ebc4b9f560cf1cd93dd2605`",
"isHighSeverity": true,
"changeCount": 36,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SystemConfig (eth:0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n sourceHashes.1:\n- \"0x55baff01a4d31b7dd4257fdb3509fffb44fb2fcc634cb987ae812f322bde0fcf\"\n+ \"0xe99a7b3921e19ba67802b943b31b611bea7fa413649085f55e087689879522d5\"\n values.$implementation:\n- \"eth:0x83085450544c3F360a40720859EbB1bfd311584D\"\n+ \"eth:0xaFD10586f3F2cB2aD34E8196563424a3a93EbE9F\"\n values.$pastUpgrades.3:\n+ [\"2025-11-24T20:55:47.000Z\",\"0x7e05b5e49355a8b5e46139a79cae4374dc441b3f53adabd248a2851997e45323\",[\"eth:0xaFD10586f3F2cB2aD34E8196563424a3a93EbE9F\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.OSAKA_TX_MAX_GAS:\n+ 16777216\n implementationNames.eth:0x83085450544c3F360a40720859EbB1bfd311584D:\n- \"SystemConfig\"\n implementationNames.eth:0xaFD10586f3F2cB2aD34E8196563424a3a93EbE9F:\n+ \"SystemConfig\"\n }\n```\n\n```diff\n contract L1StandardBridge (eth:0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8) {\n +++ description: The main entry point to deposit ERC20 tokens from the host chain to this chain. This fork of the standard OP stack contract allows for permissionless 'escaping' of assets with merkle proofs or a resolver if there were no state updates for a configurable time.\n sourceHashes.1:\n- \"0x2ffe3729df0a4fa39ab88f1451d7d0023e7f6d680f4a8d025a68111673392470\"\n+ \"0x9733115edac1c0966aa238bb30a01bdd75f6a36d3a16307293cbcae2925923d0\"\n values.$implementation:\n- \"eth:0xFF30d6E9acecc919e4E9e1A2e67980ee44Df6Ebb\"\n+ \"eth:0x25DF2d6DDCa09C0f9Fce19373896be075F4f7d98\"\n values.$pastUpgrades.7:\n+ [\"2025-11-24T20:55:47.000Z\",\"0x7e05b5e49355a8b5e46139a79cae4374dc441b3f53adabd248a2851997e45323\",[\"eth:0x25DF2d6DDCa09C0f9Fce19373896be075F4f7d98\"]]\n values.$upgradeCount:\n- 7\n+ 8\n implementationNames.eth:0xFF30d6E9acecc919e4E9e1A2e67980ee44Df6Ebb:\n- \"L1StandardBridge\"\n implementationNames.eth:0x25DF2d6DDCa09C0f9Fce19373896be075F4f7d98:\n+ \"L1StandardBridge\"\n }\n```\n\n```diff\n contract ProxyAdmin (eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257) {\n +++ description: None\n directlyReceivedPermissions.8:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0xC25D093D3A3f58952252D2e763BEAF2559dc9737\",\"role\":\"admin\"}\n }\n```\n\n```diff\n contract L2OutputOracle (eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4) {\n +++ description: Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition. Users can 'escape' their funds after 1mo of no state updates by supplying merkle proofs or using a resolver.\n template:\n- \"opstack/zircuit/L2OutputOracle_SP1\"\n+ \"opstack/zircuit/L2OutputOracle_SP1_nokeepalive\"\n sourceHashes.1:\n- \"0x409b9567c50661b673c0f84e9b8ed470f1ca48bc04fb1c8d09f8cac545e82cf8\"\n+ \"0x84bf4755b102b4cd8d19384ef5bfaddf44ffd1503ed4c898b67a9911fefea750\"\n description:\n- \"Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition. If allowBootstrapKeepalive is set to true (currently false), then this contract accepts a state root without proof if the operator has not updated the state in 4h. Users can 'escape' their funds after 1mo of no state updates by supplying merkle proofs or using a resolver.\"\n+ \"Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition. Users can 'escape' their funds after 1mo of no state updates by supplying merkle proofs or using a resolver.\"\n values.$implementation:\n- \"eth:0x6AB82bb139383BB758348fBb81EdA57458e59f65\"\n+ \"eth:0x5E66C2820666f4Fb490d2D2edE4dCB0E46CD03C6\"\n values.$pastUpgrades.7:\n+ [\"2025-11-24T20:55:47.000Z\",\"0x7e05b5e49355a8b5e46139a79cae4374dc441b3f53adabd248a2851997e45323\",[\"eth:0x3311fee5e49F6c6549d58e266338E46e777b4872\"]]\n values.$pastUpgrades.8:\n+ [\"2025-11-24T23:38:35.000Z\",\"0x284701d1524b8a7166ba82ea47dc77604122182f0a94ff1f24f85d8eb41b7016\",[\"eth:0x5E66C2820666f4Fb490d2D2edE4dCB0E46CD03C6\"]]\n values.$upgradeCount:\n- 7\n+ 9\n values.aggregationVkey:\n- \"0x008adbf6e7ba087ac0b05572c938b7707400d7b41318efcbc1d7ffbbbed50452\"\n+ \"0x0050b72e60cf8aef095d5718413fd32e1c18d0e54ebc4b9f560cf1cd93dd2605\"\n+++ severity: HIGH\n values.allowBootstrapKeepalive:\n- false\n values.rangeVkeyCommitment:\n- \"0x40bc0563112dcc6868037ea0445916342df200ec0152bf7b4c2cca1d640fdaa3\"\n+ \"0x04415a0d46de8b145eb5056969fa3b5900c3c23a21cb3feb2bdcb8da752de7a1\"\n values.rollupConfigHash:\n- \"0x4443cede364fd50e63d976126c720d4b12b9a608e1005e42f95d619b552a913c\"\n+ \"0x276a52b0a54d364177f8ad6dc069bd5801791dcd5cf5c5d237edbe2541e1bac4\"\n values.verifierV2:\n- \"eth:0xC25D093D3A3f58952252D2e763BEAF2559dc9737\"\n values.version:\n- \"3.0.0\"\n+ \"3.1.0\"\n values.withdrawalKeepalivePeriodSeconds:\n- 14400\n values.withdrawalKeepalivePeriodSecondsFmt:\n- \"4h\"\n implementationNames.eth:0x6AB82bb139383BB758348fBb81EdA57458e59f65:\n- \"L2OutputOracle\"\n implementationNames.eth:0x5E66C2820666f4Fb490d2D2edE4dCB0E46CD03C6:\n+ \"L2OutputOracle\"\n }\n```\n\n```diff\n- Status: DELETED\n contract VerifierV2 (eth:0xC25D093D3A3f58952252D2e763BEAF2559dc9737)\n +++ description: ZK verifier that verifies zk-SNARKs using the PLONK proving system to prove correct EVM state transitions. The verifier is now unused as the project migrated to SP1.\n```\n\n```diff\n contract Zircuit Multisig 1 (eth:0xC463EaC02572CC964D43D2414023E2c6B62bAF38) {\n +++ description: None\n receivedPermissions.11:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0xC25D093D3A3f58952252D2e763BEAF2559dc9737\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"}]}\n }\n```\n\n```diff\n contract SP1VerifierGateway (eth:0xf35A4088eA0231C44B9DB52D25c0E9E2fEe31f67) {\n +++ description: This contract is the router for zk proof verification. It stores the mapping between identifiers and the address of onchain verifier contracts, routing each identifier to the corresponding verifier contract.\n+++ description: Verifiers that are routed to by their selector and not frozen.\n values.activeVerifiers.1:\n+ {\"selector\":\"0xd4e8ecd2\",\"verifier\":\"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459\"}\n+++ description: All verifiers that were ever routed to by this gateway.\n values.allVerifiers.1:\n+ {\"selector\":\"0xd4e8ecd2\",\"verifier\":\"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract SP1Verifier (eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459)\n +++ description: Verifier contract for SP1 proofs (v5.0.0).\n```"
}
]
},
{
"id": "87c7157b",
"date": "Tue, 04 Nov 2025 17:14:37 GMT",
"timestamp": 1762276375,
"description": "msig changes.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Zircuit Multisig 1 (eth:0xC463EaC02572CC964D43D2414023E2c6B62bAF38) {\n +++ description: None\n values.$members.1:\n- \"eth:0xC1Ea584f696ABF39044c18D510067f0Ce2cC8966\"\n+ \"eth:0xf5B2C0bfA18561d5374EAcc5FFfA3E39B049c1ae\"\n }\n```\n\n```diff\n contract GnosisSafe (zircuit:0xC463EaC02572CC964D43D2414023E2c6B62bAF38) {\n +++ description: None\n values.$members.1:\n- \"zircuit:0xC1Ea584f696ABF39044c18D510067f0Ce2cC8966\"\n+ \"zircuit:0xf5B2C0bfA18561d5374EAcc5FFfA3E39B049c1ae\"\n }\n```"
}
]
},
{
"id": "e61ef693",
"date": "Fri, 31 Oct 2025 11:50:25 GMT",
"timestamp": 1761757805,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract StateVerifier (eth:0xB60F4a5964A6d332D1780FEDEfd339cF6B021bb7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StateVerifier (eth:0xdE12436E4eA89262D7daB924c30CB4E2fD6Ac46F)\n +++ description: None\n```"
}
]
},
{
"id": "0bc95f09",
"date": "Wed, 29 Oct 2025 17:11:43 GMT",
"timestamp": 1761757805,
"description": "removed the actor that can pause withdrawals (but not unpause them). the admin msig can still pause.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZircuitSuperchainConfig (eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0) {\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and access control for configuring actors who can pause and unpause the system.\n values.accessControl.MONITOR_ROLE.members.0:\n- \"eth:0xf9Fda17D91383120D59a7c60eAEA8Bd7319B5AE5\"\n values.monitorAC.0:\n- \"eth:0xf9Fda17D91383120D59a7c60eAEA8Bd7319B5AE5\"\n }\n```"
}
]
},
{
"id": "0847e00f",
"date": "Fri, 29 Aug 2025 07:19:13 GMT",
"timestamp": 1756451851,
"description": "Increased L2 fees by adding a constant and a scalar.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1Block (0x4200000000000000000000000000000000000015) {\n +++ description: Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain. This version though also contains a storage slot for `depositExclusions`.\n values.operatorFeeConstant:\n- 0\n+ 23225000000\n values.operatorFeeScalar:\n- 0\n+ 4200000000\n }\n```"
}
]
},
{
"id": "f2d3a101",
"date": "Fri, 29 Aug 2025 07:19:10 GMT",
"timestamp": 1756451851,
"description": "Updated fee parameters.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SystemConfig (0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n values.operatorFeeConstant:\n- 0\n+ 23225000000\n values.operatorFeeScalar:\n- 0\n+ 4200000000\n }\n```"
}
]
},
{
"id": "fde733e2",
"date": "Mon, 25 Aug 2025 13:11:34 GMT",
"timestamp": 1756120933,
"description": "- [SystemConfig](https://disco.l2beat.com/diff/eth:0x795277B6aD8778E27aa70813157134cfC4a4D446/eth:0x83085450544c3F360a40720859EbB1bfd311584D): added a `setEIP1559Params` function to update denominator and elasticity params.\n- [OptimismPortal](https://disco.l2beat.com/diff/eth:0xA0A36095A2258568759fb41CAE4934BBd2d04E26/eth:0xF7209f5471628aC5f68FE4ae98Feb7f02E0f40Be): additional check in `proveWithdrawalTransaction`, nothing significant. Ignore changes related to interfaces.\n- [L2OutputOracle](https://disco.l2beat.com/diff/eth:0xb82E8B7B3a93290EE38dB201686AbDc9FDF6A315/eth:0x6AB82bb139383BB758348fBb81EdA57458e59f65): biggest change as it now supports SP1, but it is currently not used. A check has been added to the .ts file to detect when it gets used.",
"isHighSeverity": true,
"changeCount": 41,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract OptimismPortal (0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1) {\n +++ description: The main entry point to deposit funds from the host chain to this chain. It also allows to prove and finalize withdrawals. This fork of the standard OP stack contract allows for permissionless 'escaping' of assets with merkle proofs or a resolver if there were no state updates for a time defined by the eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4.\n sourceHashes.1:\n- \"0xb800094cbe5da9b7c7fb14d9f851fabc0adb88151044c80334d6c6f9cc27cc4b\"\n+ \"0xc4abdb5610f10d943d33cff714f0c98807bd0f37828f9b5b32a0874a2f192ce6\"\n values.$implementation:\n- \"eth:0xA0A36095A2258568759fb41CAE4934BBd2d04E26\"\n+ \"eth:0xF7209f5471628aC5f68FE4ae98Feb7f02E0f40Be\"\n values.$pastUpgrades.7:\n+ [\"2025-08-22T22:25:59.000Z\",\"0x1d729201879e9035259d12fc58020a8f4dd1cb7c6972f915a6fcef15f89756d6\",[\"eth:0xF7209f5471628aC5f68FE4ae98Feb7f02E0f40Be\"]]\n values.$upgradeCount:\n- 7\n+ 8\n implementationNames.eth:0xA0A36095A2258568759fb41CAE4934BBd2d04E26:\n- \"OptimismPortal\"\n implementationNames.eth:0xF7209f5471628aC5f68FE4ae98Feb7f02E0f40Be:\n+ \"OptimismPortal\"\n }\n```\n\n```diff\n contract SystemConfig (0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n sourceHashes.1:\n- \"0x889638b8fe1fe5acdc9fc63605747e530d07ef7a0e81c151b0e3f546c24adef9\"\n+ \"0x55baff01a4d31b7dd4257fdb3509fffb44fb2fcc634cb987ae812f322bde0fcf\"\n values.$implementation:\n- \"eth:0x795277B6aD8778E27aa70813157134cfC4a4D446\"\n+ \"eth:0x83085450544c3F360a40720859EbB1bfd311584D\"\n values.$pastUpgrades.2:\n+ [\"2025-08-22T22:25:59.000Z\",\"0x1d729201879e9035259d12fc58020a8f4dd1cb7c6972f915a6fcef15f89756d6\",[\"eth:0x83085450544c3F360a40720859EbB1bfd311584D\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.resourceConfig.maxTransactionLimit:\n- 8\n values.resourceConfig._spacer:\n+ 8\n+++ description: volatility param: lower denominator -> quicker fee changes on L2\n values.eip1559Denominator:\n+ 0\n values.eip1559Elasticity:\n+ 0\n implementationNames.eth:0x795277B6aD8778E27aa70813157134cfC4a4D446:\n- \"SystemConfig\"\n implementationNames.eth:0x83085450544c3F360a40720859EbB1bfd311584D:\n+ \"SystemConfig\"\n }\n```\n\n```diff\n contract ProxyAdmin (0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257) {\n +++ description: None\n directlyReceivedPermissions.4:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x6BCe7408c0781dcE7b71494274302D4b75a1447c\",\"role\":\"admin\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0x6BCe7408c0781dcE7b71494274302D4b75a1447c)\n +++ description: This contract verifies ZK proofs (if provided). There is an intentional dummy backdoor allowing to call this contract without a proof.\n```\n\n```diff\n contract L2OutputOracle (0x92Ef6Af472b39F1b363da45E35530c24619245A4) {\n +++ description: Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition, but there currently is a backdoor that lets this contract accept a state root without proof if the operator has not updated the state in 4h. Additionally, users can 'escape' their funds after 30d of no state updates by supplying merkle proofs or using a resolver.\n template:\n- \"opstack/zircuit/L2OutputOracle\"\n+ \"opstack/zircuit/L2OutputOracle_SP1\"\n sourceHashes.1:\n- \"0x5c9c6bf3e729a43f2616db0dda98893b4011faf62a7ce137ee88e758028f8047\"\n+ \"0x409b9567c50661b673c0f84e9b8ed470f1ca48bc04fb1c8d09f8cac545e82cf8\"\n values.$implementation:\n- \"eth:0xb82E8B7B3a93290EE38dB201686AbDc9FDF6A315\"\n+ \"eth:0x6AB82bb139383BB758348fBb81EdA57458e59f65\"\n values.$pastUpgrades.6:\n+ [\"2025-08-22T22:25:59.000Z\",\"0x1d729201879e9035259d12fc58020a8f4dd1cb7c6972f915a6fcef15f89756d6\",[\"eth:0x6AB82bb139383BB758348fBb81EdA57458e59f65\"]]\n values.$upgradeCount:\n- 6\n+ 7\n values.systemOwner:\n- \"eth:0xC463EaC02572CC964D43D2414023E2c6B62bAF38\"\n values.verifier:\n- \"eth:0x6BCe7408c0781dcE7b71494274302D4b75a1447c\"\n values.VERIFIER:\n- \"eth:0x6BCe7408c0781dcE7b71494274302D4b75a1447c\"\n values.version:\n- \"2.1.0\"\n+ \"3.0.0\"\n values.aggregationVkey:\n+ \"0x008adbf6e7ba087ac0b05572c938b7707400d7b41318efcbc1d7ffbbbed50452\"\n values.allowBootstrapKeepalive:\n+ false\n values.initializerVersion:\n+ 2\n values.owner:\n+ \"eth:0xC463EaC02572CC964D43D2414023E2c6B62bAF38\"\n values.pendingOwner:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.rangeVkeyCommitment:\n+ \"0x40bc0563112dcc6868037ea0445916342df200ec0152bf7b4c2cca1d640fdaa3\"\n values.rollupConfigHash:\n+ \"0x4443cede364fd50e63d976126c720d4b12b9a608e1005e42f95d619b552a913c\"\n values.verifierV3:\n+ \"eth:0xf35A4088eA0231C44B9DB52D25c0E9E2fEe31f67\"\n implementationNames.eth:0xb82E8B7B3a93290EE38dB201686AbDc9FDF6A315:\n- \"L2OutputOracle\"\n implementationNames.eth:0x6AB82bb139383BB758348fBb81EdA57458e59f65:\n+ \"L2OutputOracle\"\n }\n```\n\n```diff\n contract Zircuit Multisig 1 (0xC463EaC02572CC964D43D2414023E2c6B62bAF38) {\n +++ description: None\n receivedPermissions.2:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xf35A4088eA0231C44B9DB52D25c0E9E2fEe31f67\",\"description\":\"affect the liveness and safety of the gateway - can transfer ownership, add and freeze verifier routes.\",\"role\":\".owner\"}\n receivedPermissions.6:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x6BCe7408c0781dcE7b71494274302D4b75a1447c\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"}]}\n }\n```\n\n```diff\n+ Status: CREATED\n contract SP1Verifier (0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5)\n +++ description: Verifier contract for SP1 proofs (v5.0.0).\n```\n\n```diff\n+ Status: CREATED\n contract SP1VerifierGateway (0xf35A4088eA0231C44B9DB52D25c0E9E2fEe31f67)\n +++ description: This contract is the router for zk proof verification. It stores the mapping between identifiers and the address of onchain verifier contracts, routing each identifier to the corresponding verifier contract.\n```"
}
]
},
{
"id": "fd143872",
"date": "Thu, 07 Aug 2025 11:45:55 GMT",
"timestamp": 1754567136,
"description": "Major upgrade. New escape hatch in case there are no state updates for 30d. Unverified state roots by the operator are allowed after 4h of no new proposed state roots.\n\nEscapes for ETH and ERC20s can be done with state / storage merkle proofs for each account / erc20 balanceOf. DeFi contracts can register 'Resolvers' directly from L2 or by their deployer on L1 who are permissioned to partition a pooled balance of a single L2 contract between multiple users.\n\n[OptimismPortal](https://disco.l2beat.com/diff/eth:0x6335a030fdCBa6c5704a74EF3BeDdd6550c0375a/eth:0xA0A36095A2258568759fb41CAE4934BBd2d04E26)\n- deposit Exclusions in `encodeSetL1BlockValuesEcotoneExclusions()`\n- `escapeETH()` and -WETH added: allows withdrawing full balance after 30 day state update liveness failure (`timeLimitOutputRootSubmissionSeconds`) with state and storage (merkle-) proofs.\n\n[L1StandardBridge](https://disco.l2beat.com/diff/eth:0x506aadcb7bF93E892a43208d879BAc076eBC97Ef/eth:0xFF30d6E9acecc919e4E9e1A2e67980ee44Df6Ebb)\n- escapeERC20: escape function after 30d liveness fail for ERC20 tokens\n\n[L2OutputOracle](https://disco.l2beat.com/diff/eth:0xeE646fEA9b1D7f89ae92266c5d7E799158416ca4/eth:0xb82E8B7B3a93290EE38dB201686AbDc9FDF6A315)\n- `setTimeLimitOutputRootSubmissionSeconds()` onlyOwner, set escape threshold\n- bootstrapV2() still exists (allowing permissioned state proposal without proof after short liveness fail)\n- new output root proposal disallowed after `timeLimitOutputRootSubmissionSeconds` has passed\n- finality logic for deleting outputs is now `block.timestamp >= finalizationTimestamp && (pausedTimestamp == 0 || pausedTimestamp >= finalizationTimestamp)`\n\n[SuperchainConfig](https://disco.l2beat.com/diff/eth:0xA47314C96ab9572af656788e15143B459F99AE0f/eth:0x70D688D4Bd6B1b195aE51040b54ab501278D1d31)\n- support paused timeslot and pausedSince()",
"isHighSeverity": true,
"changeCount": 64,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract OptimismPortal (0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1) {\n +++ description: The main entry point to deposit funds from the host chain to this chain. It also allows to prove and finalize withdrawals. This fork of the standard OP stack contract allows for permissionless 'escaping' of assets with merkle proofs or a resolver if there were no state updates for a time defined by the eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4.\n template:\n- \"opstack/OptimismPortal\"\n+ \"opstack/zircuit/OptimismPortal\"\n sourceHashes.1:\n- \"0x67780cfd4e258f37c824b516a488799359ec5e535fb56f62fbd71765730fa32b\"\n+ \"0xb800094cbe5da9b7c7fb14d9f851fabc0adb88151044c80334d6c6f9cc27cc4b\"\n description:\n- \"The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals.\"\n+ \"The main entry point to deposit funds from the host chain to this chain. It also allows to prove and finalize withdrawals. This fork of the standard OP stack contract allows for permissionless 'escaping' of assets with merkle proofs or a resolver if there were no state updates for a time defined by the eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4.\"\n values.$implementation:\n- \"eth:0x6335a030fdCBa6c5704a74EF3BeDdd6550c0375a\"\n+ \"eth:0xA0A36095A2258568759fb41CAE4934BBd2d04E26\"\n values.$pastUpgrades.5:\n+ [\"2025-08-05T13:35:59.000Z\",\"0x12d1d0dde1bafad169722a0d6a42fafad00cacc19282bc0f7de4ad39b70afed1\",[\"eth:0xE14b12F4843447114A093D99Dc9322b93a967DE6\"]]\n values.$pastUpgrades.6:\n+ [\"2025-08-05T13:35:59.000Z\",\"0x12d1d0dde1bafad169722a0d6a42fafad00cacc19282bc0f7de4ad39b70afed1\",[\"eth:0xA0A36095A2258568759fb41CAE4934BBd2d04E26\"]]\n values.$upgradeCount:\n- 5\n+ 7\n values.version:\n- \"2.1.0\"\n+ \"2.2.0\"\n values.resolverRegistry:\n+ \"eth:0x6c89104690452AD7e209f0ab72287C2561d5cF0E\"\n implementationNames.eth:0x6335a030fdCBa6c5704a74EF3BeDdd6550c0375a:\n- \"OptimismPortal\"\n implementationNames.eth:0xA0A36095A2258568759fb41CAE4934BBd2d04E26:\n+ \"OptimismPortal\"\n }\n```\n\n```diff\n contract Zircuit Multisig 2 (0x2c0B27F7C8F083B539557a0bA787041BF22DB276) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"guard\",\"from\":\"eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0\",\"role\":\".defaultAdmin\"}\n receivedPermissions.2:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0\",\"description\":\"manage roles including the guardian role.\",\"role\":\".defaultAdmin\"}\n }\n```\n\n```diff\n contract L1StandardBridge (0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8) {\n +++ description: The main entry point to deposit ERC20 tokens from the host chain to this chain. This fork of the standard OP stack contract allows for permissionless 'escaping' of assets with merkle proofs or a resolver if there were no state updates for a configurable time.\n template:\n- \"opstack/L1StandardBridge\"\n+ \"opstack/zircuit/L1StandardBridge\"\n sourceHashes.1:\n- \"0x4da64b64aa2ba04837c58c90080a550f82596377659251b91ef703b0acdb49da\"\n+ \"0x2ffe3729df0a4fa39ab88f1451d7d0023e7f6d680f4a8d025a68111673392470\"\n description:\n- \"The main entry point to deposit ERC20 tokens from host chain to this chain.\"\n+ \"The main entry point to deposit ERC20 tokens from the host chain to this chain. This fork of the standard OP stack contract allows for permissionless 'escaping' of assets with merkle proofs or a resolver if there were no state updates for a configurable time.\"\n values.$implementation:\n- \"eth:0x506aadcb7bF93E892a43208d879BAc076eBC97Ef\"\n+ \"eth:0xFF30d6E9acecc919e4E9e1A2e67980ee44Df6Ebb\"\n values.$pastUpgrades.6:\n+ [\"2025-08-05T13:35:59.000Z\",\"0x12d1d0dde1bafad169722a0d6a42fafad00cacc19282bc0f7de4ad39b70afed1\",[\"eth:0xFF30d6E9acecc919e4E9e1A2e67980ee44Df6Ebb\"]]\n values.$upgradeCount:\n- 6\n+ 7\n values.version:\n- \"2.2.0\"\n+ \"2.3.0\"\n implementationNames.eth:0x506aadcb7bF93E892a43208d879BAc076eBC97Ef:\n- \"L1StandardBridge\"\n implementationNames.eth:0xFF30d6E9acecc919e4E9e1A2e67980ee44Df6Ebb:\n+ \"L1StandardBridge\"\n }\n```\n\n```diff\n contract ProxyAdmin (0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257) {\n +++ description: None\n directlyReceivedPermissions.5:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x6c89104690452AD7e209f0ab72287C2561d5cF0E\",\"role\":\"admin\"}\n }\n```\n\n```diff\n contract ZircuitSuperchainConfig (0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0) {\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and access control for configuring actors who can pause and unpause the system.\n sourceHashes.1:\n- \"0x39037837abcc5e06ffe85b07ad5f5ce901ed8551155a1b3b81cfd181bd683593\"\n+ \"0xf69fa98cc18afd5754767df58a79532b52dab119b14df252fbea558da850139a\"\n values.$implementation:\n- \"eth:0xA47314C96ab9572af656788e15143B459F99AE0f\"\n+ \"eth:0x70D688D4Bd6B1b195aE51040b54ab501278D1d31\"\n values.$pastUpgrades.1:\n+ [\"2025-08-05T13:35:59.000Z\",\"0x12d1d0dde1bafad169722a0d6a42fafad00cacc19282bc0f7de4ad39b70afed1\",[\"eth:0x70D688D4Bd6B1b195aE51040b54ab501278D1d31\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.version:\n- \"1.1.0\"\n+ \"1.2.0\"\n values.accessControl:\n+ {\"DEFAULT_ADMIN_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x2c0B27F7C8F083B539557a0bA787041BF22DB276\"]},\"MONITOR_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0xf9Fda17D91383120D59a7c60eAEA8Bd7319B5AE5\"]}}\n values.monitorAC:\n+ [\"eth:0xf9Fda17D91383120D59a7c60eAEA8Bd7319B5AE5\"]\n values.pausedTimestamp:\n+ 0\n implementationNames.eth:0xA47314C96ab9572af656788e15143B459F99AE0f:\n- \"SuperchainConfig\"\n implementationNames.eth:0x70D688D4Bd6B1b195aE51040b54ab501278D1d31:\n+ \"SuperchainConfig\"\n template:\n+ \"opstack/zircuit/SuperchainConfig\"\n description:\n+ \"This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and access control for configuring actors who can pause and unpause the system.\"\n category:\n+ {\"name\":\"Governance\",\"priority\":3}\n }\n```\n\n```diff\n contract L2OutputOracle (0x92Ef6Af472b39F1b363da45E35530c24619245A4) {\n +++ description: Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition, but there currently is a backdoor that lets this contract accept a state root without proof if the operator has not updated the state in 4h. Additionally, users can 'escape' their funds after 30d of no state updates by supplying merkle proofs or using a resolver.\n sourceHashes.1:\n- \"0x60e391caee355fef81909391d0660c897c79e6ba836e46f45d51968313188073\"\n+ \"0x5c9c6bf3e729a43f2616db0dda98893b4011faf62a7ce137ee88e758028f8047\"\n values.$implementation:\n- \"eth:0xeE646fEA9b1D7f89ae92266c5d7E799158416ca4\"\n+ \"eth:0xb82E8B7B3a93290EE38dB201686AbDc9FDF6A315\"\n values.$pastUpgrades.4:\n+ [\"2025-08-05T13:35:59.000Z\",\"0x12d1d0dde1bafad169722a0d6a42fafad00cacc19282bc0f7de4ad39b70afed1\",[\"eth:0xE14b12F4843447114A093D99Dc9322b93a967DE6\"]]\n values.$pastUpgrades.5:\n+ [\"2025-08-05T13:35:59.000Z\",\"0x12d1d0dde1bafad169722a0d6a42fafad00cacc19282bc0f7de4ad39b70afed1\",[\"eth:0xb82E8B7B3a93290EE38dB201686AbDc9FDF6A315\"]]\n values.$upgradeCount:\n- 4\n+ 6\n values.computeL2Timestamp:\n- [1719935831,1719935833,1719935835,1719935837,1719935839]\n values.getL2Output:\n- [[\"0x2e746edcf4ff072457c6b8d6297c74251da7bf649ca04bcd2d30ca1a4e6ab292\",1719949523,26],[\"0x6377018657879415a6e998472dc6a28b263a8d6dffdb20f8754d4e3944bc7ee7\",1719997259,28],[\"0x5b51d6381ef6f819d7134be5323374781f3d3f591c552ca39893732df2127984\",1719997283,6952],[\"0xeb12340cbcbc7af2fca27ce389d0162a0cfde9d134bea78a2e538b83ef0faabf\",1719997319,6954],[\"0x55b30b87e1b913e3af502ebe5e12d5df6d4cfd3771b2a3deff43504f9abc8d5f\",1719997367,9198]]\n values.getL2OutputAfter:\n- [[\"0x2e746edcf4ff072457c6b8d6297c74251da7bf649ca04bcd2d30ca1a4e6ab292\",1719949523,26],[\"0x2e746edcf4ff072457c6b8d6297c74251da7bf649ca04bcd2d30ca1a4e6ab292\",1719949523,26],[\"0x2e746edcf4ff072457c6b8d6297c74251da7bf649ca04bcd2d30ca1a4e6ab292\",1719949523,26],[\"0x2e746edcf4ff072457c6b8d6297c74251da7bf649ca04bcd2d30ca1a4e6ab292\",1719949523,26],[\"0x2e746edcf4ff072457c6b8d6297c74251da7bf649ca04bcd2d30ca1a4e6ab292\",1719949523,26]]\n values.getL2OutputEx:\n- [[0,\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"0x0000000000000000000000000000000000000000000000000000000000000000\"],[0,\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"0x0000000000000000000000000000000000000000000000000000000000000000\"],[0,\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"0x0000000000000000000000000000000000000000000000000000000000000000\"],[0,\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"0x0000000000000000000000000000000000000000000000000000000000000000\"],[0,\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"0x0000000000000000000000000000000000000000000000000000000000000000\"]]\n values.getL2OutputIndexAfter:\n- [0,0,0,0,0]\n values.getL2OutputRootWithFinalization:\n- [[\"0x2e746edcf4ff072457c6b8d6297c74251da7bf649ca04bcd2d30ca1a4e6ab292\",1719963923],[\"0x6377018657879415a6e998472dc6a28b263a8d6dffdb20f8754d4e3944bc7ee7\",1720011659],[\"0x5b51d6381ef6f819d7134be5323374781f3d3f591c552ca39893732df2127984\",1720011683],[\"0xeb12340cbcbc7af2fca27ce389d0162a0cfde9d134bea78a2e538b83ef0faabf\",1720011719],[\"0x55b30b87e1b913e3af502ebe5e12d5df6d4cfd3771b2a3deff43504f9abc8d5f\",1720011767]]\n values.version:\n- \"2.0.0\"\n+ \"2.1.0\"\n+++ severity: HIGH\n values.deletedOutputs:\n+ []\n values.superchainConfig:\n+ \"eth:0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0\"\n values.timeLimitOutputRootSubmissionSeconds:\n+ 2592000\n values.timeLimitOutputRootSubmissionSecondsFmt:\n+ \"30d\"\n values.withdrawalKeepalivePeriodSecondsFmt:\n+ \"4h\"\n errors:\n- {\"computeL2Timestamp\":\"Processing error occurred.\",\"getL2Output\":\"Processing error occurred.\",\"getL2OutputAfter\":\"Processing error occurred.\",\"getL2OutputEx\":\"Processing error occurred.\",\"getL2OutputIndexAfter\":\"Processing error occurred.\",\"getL2OutputRootWithFinalization\":\"Processing error occurred.\"}\n implementationNames.eth:0xeE646fEA9b1D7f89ae92266c5d7E799158416ca4:\n- \"L2OutputOracle\"\n implementationNames.eth:0xb82E8B7B3a93290EE38dB201686AbDc9FDF6A315:\n+ \"L2OutputOracle\"\n template:\n+ \"opstack/zircuit/L2OutputOracle\"\n description:\n+ \"Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition, but there currently is a backdoor that lets this contract accept a state root without proof if the operator has not updated the state in 4h. Additionally, users can 'escape' their funds after 30d of no state updates by supplying merkle proofs or using a resolver.\"\n fieldMeta:\n+ {\"proposer\":{\"severity\":\"HIGH\"},\"challenger\":{\"severity\":\"HIGH\"},\"deletedOutputs\":{\"severity\":\"HIGH\"}}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract Zircuit Multisig 1 (0xC463EaC02572CC964D43D2414023E2c6B62bAF38) {\n +++ description: None\n receivedPermissions.0:\n+ {\"permission\":\"challenge\",\"from\":\"eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4\",\"role\":\".challenger\"}\n receivedPermissions.7:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x6c89104690452AD7e209f0ab72287C2561d5cF0E\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"}]}\n }\n```\n\n```diff\n EOA (0xE8C20EA8eF100d7aa3846616E5D07A5aBb067C65) {\n +++ description: None\n receivedPermissions:\n+ [{\"permission\":\"propose\",\"from\":\"eth:0x92Ef6Af472b39F1b363da45E35530c24619245A4\",\"role\":\".proposer\"}]\n }\n```\n\n```diff\n+ Status: CREATED\n contract ResolverRegistry (0x6c89104690452AD7e209f0ab72287C2561d5cF0E)\n +++ description: Registers 'resolvers' which are allowed to supply authoritative data for blockchain balances to support escapes without merkle proofs from e.g. DeFi smart contracts on L2. A resolver can either be registered directly by the respective contract on L2 or by its deployer from L1, using deterministic deployment derivation.\n```"
}
]
},
{
"id": "bdf02ce3",
"date": "Thu, 31 Jul 2025 13:15:24 GMT",
"timestamp": 1753687757,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n contract GnosisSafe (0xC463EaC02572CC964D43D2414023E2c6B62bAF38) {\n +++ description: None\n unverified:\n- true\n values.getOwners:\n- [\"zircuit:0xD8399320cF3a6C7068DaC0C35ea5e74ddd650BD4\",\"zircuit:0xC1Ea584f696ABF39044c18D510067f0Ce2cC8966\",\"zircuit:0x63cbB9fA540F6249AE4A3576f48BF07609b3a355\",\"zircuit:0x5E2a81d611e973C2ab1A4cAa71DD4E4Cdb2617d4\",\"zircuit:0x2F9072d5A8118a60ce41611AEe3e393D107f8Cec\",\"zircuit:0x0D5edFC67Ae336eddC91031FD6402EeAD6350CAb\",\"zircuit:0x62C688FCa995e07632D64A9586896BB7EcD68567\",\"zircuit:0x38809210f69ed6204E276d2Be6b15cd530698679\"]\n values.getThreshold:\n- 6\n implementationNames.zircuit:0xC463EaC02572CC964D43D2414023E2c6B62bAF38:\n- \"\"\n+ \"GnosisSafeProxy\"\n template:\n+ \"GnosisSafe\"\n sourceHashes:\n+ [\"0x81a7349eebb98ac33b0bc6842e3cb258034a8f2a4ba004570bb8e2e25947f9ff\",\"0xd42bbf9f7dcd3720a7fc6bdc6edfdfae8800a37d6dd4decfa0ef6ca4a2e88940\"]\n }\n```"
}
]
},
{
"id": "1e66f499",
"date": "Mon, 28 Jul 2025 07:29:30 GMT",
"timestamp": 1753687770,
"description": "L2 fee changes.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1Block (0x4200000000000000000000000000000000000015) {\n +++ description: None\n values.basefee:\n- 602997202\n+ 294515603\n values.hash:\n- \"0x860409be6049dd06c3bfe74926a7a552c3277fdd865315938507dfb5731814cc\"\n+ \"0x0acc928251b1f6dcdad1a042f1be37ab222eeed394619e6908a57a99301cf5ae\"\n values.number:\n- 22765716\n+ 23016159\n values.timestamp:\n- 1750664615\n+ 1753687751\n }\n```"
}
]
},
{
"id": "2a7ebb46",
"date": "Mon, 14 Jul 2025 12:47:15 GMT",
"timestamp": 1752497235,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract L1Block (0x4200000000000000000000000000000000000015)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x4200000000000000000000000000000000000018)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafe (0xC463EaC02572CC964D43D2414023E2c6B62bAF38)\n +++ description: None\n```"
}
]
},
{
"id": "8d689232",
"date": "Mon, 14 Jul 2025 12:47:15 GMT",
"timestamp": 1752497235,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 14,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract OptimismPortal (0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1)\n +++ description: The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals.\n```\n\n```diff\n+ Status: CREATED\n contract L1CrossDomainMessenger (0x2a721cBE81a128be0F01040e3353c3805A5EA091)\n +++ description: Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n```\n\n```diff\n+ Status: CREATED\n contract Zircuit Multisig 2 (0x2c0B27F7C8F083B539557a0bA787041BF22DB276)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SystemConfig (0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff)\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n```\n\n```diff\n+ Status: CREATED\n contract L1StandardBridge (0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8)\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x6BCe7408c0781dcE7b71494274302D4b75a1447c)\n +++ description: This contract verifies ZK proofs (if provided). There is an intentional dummy backdoor allowing to call this contract without a proof.\n```\n\n```diff\n+ Status: CREATED\n contract ZircuitSuperchainConfig (0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0)\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and access control for configuring actors who can pause and unpause the system.\n```\n\n```diff\n+ Status: CREATED\n contract L1ERC20TokenBridge (0x912C7271a6A3622dfb8B218eb46a6122aB046C79)\n +++ description: Escrow for custom external tokens that use the canonical bridge for messaging but are governed externally.\n```\n\n```diff\n+ Status: CREATED\n contract L2OutputOracle (0x92Ef6Af472b39F1b363da45E35530c24619245A4)\n +++ description: Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition, but there currently is a backdoor that lets this contract accept a state root without proof if the operator has not updated the state in 4h.\n```\n\n```diff\n+ Status: CREATED\n contract L1ERC721Bridge (0x994eEb321F9cD79B077a5455fC248c77f30Dd244)\n +++ description: Used to bridge ERC-721 tokens from host chain to this chain.\n```\n\n```diff\n+ Status: CREATED\n contract VerifierV2 (0xC25D093D3A3f58952252D2e763BEAF2559dc9737)\n +++ description: ZK verifier that verifies zk-SNARKs using the PLONK proving system to prove correct EVM state transitions. Core of the proof system.\n```\n\n```diff\n+ Status: CREATED\n contract Zircuit Multisig 1 (0xC463EaC02572CC964D43D2414023E2c6B62bAF38)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract OptimismMintableERC20Factory (0xc77ece87C91C44AFb5f19638f9a0F75b5d90E932)\n +++ description: A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintableERC20 as this chain's representation of a token on the host chain, or vice-versa.\n```"
}
]
},
{
"id": "23feb95e",
"date": "Mon, 23 Jun 2025 07:43:45 GMT",
"timestamp": 1750664625,
"description": "Initial discovery to check L1->L2 exclusions.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract L1Block (0x4200000000000000000000000000000000000015)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x4200000000000000000000000000000000000018)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafe (0xC463EaC02572CC964D43D2414023E2c6B62bAF38)\n +++ description: None\n```"
}
]
},
{
"id": "f27464b6",
"date": "Wed, 18 Jun 2025 11:51:49 GMT",
"timestamp": 1750247509,
"description": "New verifier with new digest/vKey. No change to the backdoor / dummy proofs in the other active verifier.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract VerifierV2 (0xC25D093D3A3f58952252D2e763BEAF2559dc9737) {\n +++ description: ZK verifier that verifies zk-SNARKs using the PLONK proving system to prove correct EVM state transitions. Core of the proof system.\n sourceHashes.0:\n- \"0x3d0ebf0f8aafb6672ca85a4e9b3f8c912466ace744a78b5749a0b763bdc7876b\"\n+ \"0x709abb48f790c58a1517d5b15d470a3b3058adc8ff1953bb2764302ffd552c1b\"\n values.$implementation:\n- \"0x89223192E728a830F09b32d93D51AaC88b6a466e\"\n+ \"0x5d4F36e70Ab3Ccd8cA898A06C2D725B22A1D57f0\"\n values.$pastUpgrades.2:\n+ [\"2025-05-07T18:25:23.000Z\",\"0x19f086f222696bf287600d456e602d10dd4a1db43027e97262e1abb52f347570\",[\"0x89223192E728a830F09b32d93D51AaC88b6a466e\"]]\n values.$pastUpgrades.1.2:\n- \"0x19f086f222696bf287600d456e602d10dd4a1db43027e97262e1abb52f347570\"\n+ \"0x273c02e325a3bd80d508d1b259225e739853611a87491e1bbb1642141a6b1612\"\n values.$pastUpgrades.1.1:\n- \"2025-05-07T18:25:23.000Z\"\n+ \"2025-06-11T21:09:23.000Z\"\n values.$pastUpgrades.1.0.0:\n- \"0x89223192E728a830F09b32d93D51AaC88b6a466e\"\n+ \"0x5d4F36e70Ab3Ccd8cA898A06C2D725B22A1D57f0\"\n values.$upgradeCount:\n- 2\n+ 3\n values.digest:\n- \"0x1adec13f00764ae27bbb7ba225b373bc80f120f4c4c0125619c4dd74b18ceb43\"\n+ \"0x167f5fa574c6c6d9dec2cca7c084f607c905044487a03eb3290089b218bd1f0f\"\n implementationNames.0x89223192E728a830F09b32d93D51AaC88b6a466e:\n- \"VerifierV2\"\n implementationNames.0x5d4F36e70Ab3Ccd8cA898A06C2D725B22A1D57f0:\n+ \"VerifierV2\"\n template:\n+ \"opstack/zircuit/Verifier\"\n description:\n+ \"ZK verifier that verifies zk-SNARKs using the PLONK proving system to prove correct EVM state transitions. Core of the proof system.\"\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```"
}
]
},
{
"id": "b08f3659",
"date": "Thu, 08 May 2025 09:49:03 GMT",
"timestamp": 1746697743,
"description": "Minor upgrade to SystemConfig and the VerifierV2.",
"isHighSeverity": true,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SystemConfig (0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n sourceHashes.0:\n- \"0x06f2d961bb4a244d73779f83003fd66fcda3cc297693cd348d8ac1aa8c29dc63\"\n+ \"0x889638b8fe1fe5acdc9fc63605747e530d07ef7a0e81c151b0e3f546c24adef9\"\n values.$implementation:\n- \"0xA03E2f3Ee6dBa20411A2326D7FA9CCCc6a9A53de\"\n+ \"0x795277B6aD8778E27aa70813157134cfC4a4D446\"\n values.$pastUpgrades.1:\n+ [\"2025-05-07T18:25:23.000Z\",\"0x19f086f222696bf287600d456e602d10dd4a1db43027e97262e1abb52f347570\",[\"0x795277B6aD8778E27aa70813157134cfC4a4D446\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.operatorFeeConstant:\n+ 0\n values.operatorFeeScalar:\n+ 0\n implementationNames.0xA03E2f3Ee6dBa20411A2326D7FA9CCCc6a9A53de:\n- \"SystemConfig\"\n implementationNames.0x795277B6aD8778E27aa70813157134cfC4a4D446:\n+ \"SystemConfig\"\n }\n```\n\n```diff\n contract VerifierV2 (0xC25D093D3A3f58952252D2e763BEAF2559dc9737) {\n +++ description: ZK verifier that verifies zk-SNARKs using the PLONK proving system to prove correct EVM state transitions. Core of the proof system.\n sourceHashes.0:\n- \"0xaf075d81d9fd983d155a21617c104cfab25f4ad9e8f039fd8a15c1220e3d6227\"\n+ \"0x3d0ebf0f8aafb6672ca85a4e9b3f8c912466ace744a78b5749a0b763bdc7876b\"\n values.$implementation:\n- \"0xD5B424AC36928E2da7dA9eCA9807938a56988F5a\"\n+ \"0x89223192E728a830F09b32d93D51AaC88b6a466e\"\n values.$pastUpgrades.1:\n+ [\"2025-05-07T18:25:23.000Z\",\"0x19f086f222696bf287600d456e602d10dd4a1db43027e97262e1abb52f347570\",[\"0x89223192E728a830F09b32d93D51AaC88b6a466e\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.digest:\n- \"0x1d544a5de23a23d1e94ae793352208593bfa28c3d76d455f09ea3f9c25c402b8\"\n+ \"0x1adec13f00764ae27bbb7ba225b373bc80f120f4c4c0125619c4dd74b18ceb43\"\n implementationNames.0xD5B424AC36928E2da7dA9eCA9807938a56988F5a:\n- \"VerifierV2\"\n implementationNames.0x89223192E728a830F09b32d93D51AaC88b6a466e:\n+ \"VerifierV2\"\n }\n```"
}
]
},
{
"id": "f7eee53c",
"date": "Thu, 24 Apr 2025 08:37:55 GMT",
"timestamp": 1745483875,
"description": "Upgrades to most system contracts with minor changes:\n- 7702 compatibility\n- library (Math)\n- gas limit and l2 gas calculations",
"isHighSeverity": true,
"changeCount": 46,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract OptimismPortal (0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1) {\n +++ description: The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals.\n sourceHashes.0:\n- \"0xb7c0fa59b37014e507a0e86791007823e5a5548fe3523b6fcf3fb383c0e8c24e\"\n+ \"0x67780cfd4e258f37c824b516a488799359ec5e535fb56f62fbd71765730fa32b\"\n values.$implementation:\n- \"0xb6714d9808909b9383B09aD7Ea4Bc7E59b3B0E20\"\n+ \"0x6335a030fdCBa6c5704a74EF3BeDdd6550c0375a\"\n values.$pastUpgrades.4:\n+ [\"2024-07-16T08:48:59.000Z\",\"0xf3c21a1c1d5df7cd11018e70254ed8b78bba36107c8231dfee6ff1b1c5702196\",[\"0x304a52C8354f323672191Ebf1347Cd3d494Ea830\"]]\n values.$pastUpgrades.3.2:\n- [\"0x304a52C8354f323672191Ebf1347Cd3d494Ea830\"]\n+ \"2024-07-17T12:11:35.000Z\"\n values.$pastUpgrades.3.1:\n- \"2024-07-16T08:48:59.000Z\"\n+ \"0x472c4b57b3828c3f8a846702da5707eccb216d672b4ede4eb4186ffe606b14b3\"\n values.$pastUpgrades.3.0:\n- \"0xf3c21a1c1d5df7cd11018e70254ed8b78bba36107c8231dfee6ff1b1c5702196\"\n+ [\"0xde8B916B972cE3c27C21157Fc2b107c413062b9d\"]\n values.$pastUpgrades.2.2:\n- \"2024-07-17T12:11:35.000Z\"\n+ \"2025-04-23T14:46:59.000Z\"\n values.$pastUpgrades.2.1:\n- \"0x472c4b57b3828c3f8a846702da5707eccb216d672b4ede4eb4186ffe606b14b3\"\n+ [\"0x6335a030fdCBa6c5704a74EF3BeDdd6550c0375a\"]\n values.$pastUpgrades.2.0:\n- [\"0xde8B916B972cE3c27C21157Fc2b107c413062b9d\"]\n+ \"0xe9ed64d1dc4bf02f583f912b831f46ae873996b36901c3b1180ac56c710e1d6f\"\n values.$upgradeCount:\n- 4\n+ 5\n values.version:\n- \"2.0.2\"\n+ \"2.1.0\"\n }\n```\n\n```diff\n contract L1CrossDomainMessenger (0x2a721cBE81a128be0F01040e3353c3805A5EA091) {\n +++ description: Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n sourceHashes.0:\n- \"0x1e3673770550301c22eadd847cc822cfbc995c36019d1dfce07b2ec9cffd930f\"\n+ \"0x931681cb03b7ea6b4521cf57be98c5303f045f088c4cb9e282b889be911da623\"\n values.$implementation:\n- \"0x6c01D349d3010Cc2953fFA0A5e8d176fc273B834\"\n+ \"0xA5B66A9FBCE3d57dA2b3Bd764d0a05B95052f73F\"\n values.$pastUpgrades.1:\n+ [\"2024-07-02T16:12:35.000Z\",\"0xba20c00dc03b009737ebbcaa3db1263524a1322c5984a4f51fbf7c4ebc979575\",[\"0x6c01D349d3010Cc2953fFA0A5e8d176fc273B834\"]]\n values.$pastUpgrades.0.2:\n- \"0xba20c00dc03b009737ebbcaa3db1263524a1322c5984a4f51fbf7c4ebc979575\"\n+ \"2025-04-23T14:46:59.000Z\"\n values.$pastUpgrades.0.1:\n- \"2024-07-02T16:12:35.000Z\"\n+ [\"0xA5B66A9FBCE3d57dA2b3Bd764d0a05B95052f73F\"]\n values.$pastUpgrades.0.0:\n- [\"0x6c01D349d3010Cc2953fFA0A5e8d176fc273B834\"]\n+ \"0xe9ed64d1dc4bf02f583f912b831f46ae873996b36901c3b1180ac56c710e1d6f\"\n values.$upgradeCount:\n- 1\n+ 2\n values.version:\n- \"2.3.0\"\n+ \"2.4.0\"\n values.ENCODING_OVERHEAD:\n+ 260\n values.FLOOR_CALLDATA_OVERHEAD:\n+ 40\n values.TX_BASE_GAS:\n+ 21000\n }\n```\n\n```diff\n contract SystemConfig (0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n values.minimumGasLimit:\n- 9000000\n+ 7000000\n values.resourceConfig.maxResourceLimit:\n- 8000000\n+ 6000000\n }\n```\n\n```diff\n contract L1StandardBridge (0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8) {\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n sourceHashes.0:\n- \"0x751d149755c8de663c6b1eb488f5d145ad3e9aa81561545e375a6cb8adbd0f6c\"\n+ \"0x4da64b64aa2ba04837c58c90080a550f82596377659251b91ef703b0acdb49da\"\n values.$implementation:\n- \"0xf829F2B0d741712198Aa3F0Be88b68Ec2aB5024b\"\n+ \"0x506aadcb7bF93E892a43208d879BAc076eBC97Ef\"\n values.$pastUpgrades.5:\n+ [\"2024-07-16T08:48:59.000Z\",\"0xf3c21a1c1d5df7cd11018e70254ed8b78bba36107c8231dfee6ff1b1c5702196\",[\"0xE14b12F4843447114A093D99Dc9322b93a967DE6\"]]\n values.$pastUpgrades.4.2.0:\n- \"0xE14b12F4843447114A093D99Dc9322b93a967DE6\"\n+ \"0xA4ba8bd753695B6121722CBB7cd81c71BCFBCA28\"\n values.$pastUpgrades.4.1:\n- \"2024-07-16T08:48:59.000Z\"\n+ \"2024-07-17T12:11:35.000Z\"\n values.$pastUpgrades.4.0:\n- \"0xf3c21a1c1d5df7cd11018e70254ed8b78bba36107c8231dfee6ff1b1c5702196\"\n+ \"0x472c4b57b3828c3f8a846702da5707eccb216d672b4ede4eb4186ffe606b14b3\"\n values.$pastUpgrades.3.2.0:\n- \"0xA4ba8bd753695B6121722CBB7cd81c71BCFBCA28\"\n+ \"0x7409668285336dBBe720bE3525AEe372Fce4c2ab\"\n values.$pastUpgrades.3.1:\n- \"2024-07-17T12:11:35.000Z\"\n+ \"2024-07-02T16:11:59.000Z\"\n values.$pastUpgrades.3.0:\n- \"0x472c4b57b3828c3f8a846702da5707eccb216d672b4ede4eb4186ffe606b14b3\"\n+ \"0xd13642194be1a1b8947f8d3cd1504ec56ca67f4ba953cc45e4f135fb118a46f7\"\n values.$pastUpgrades.2.2:\n- [\"0x7409668285336dBBe720bE3525AEe372Fce4c2ab\"]\n+ \"2024-07-16T08:48:59.000Z\"\n values.$pastUpgrades.2.1:\n- \"2024-07-02T16:11:59.000Z\"\n+ \"0xf3c21a1c1d5df7cd11018e70254ed8b78bba36107c8231dfee6ff1b1c5702196\"\n values.$pastUpgrades.2.0:\n- \"0xd13642194be1a1b8947f8d3cd1504ec56ca67f4ba953cc45e4f135fb118a46f7\"\n+ [\"0x0Fc6203310c494963eBAdd1157780a613B67eCDf\"]\n values.$pastUpgrades.1.2:\n- \"2024-07-16T08:48:59.000Z\"\n+ \"2025-04-23T14:46:59.000Z\"\n values.$pastUpgrades.1.1:\n- \"0xf3c21a1c1d5df7cd11018e70254ed8b78bba36107c8231dfee6ff1b1c5702196\"\n+ \"0xe9ed64d1dc4bf02f583f912b831f46ae873996b36901c3b1180ac56c710e1d6f\"\n values.$pastUpgrades.1.0.0:\n- \"0x0Fc6203310c494963eBAdd1157780a613B67eCDf\"\n+ \"0x506aadcb7bF93E892a43208d879BAc076eBC97Ef\"\n values.$upgradeCount:\n- 5\n+ 6\n values.version:\n- \"2.1.0\"\n+ \"2.2.0\"\n }\n```\n\n```diff\n contract L1ERC721Bridge (0x994eEb321F9cD79B077a5455fC248c77f30Dd244) {\n +++ description: Used to bridge ERC-721 tokens from host chain to this chain.\n sourceHashes.0:\n- \"0x7328459427570e205526a415613989750227c38d95138613a718c573132fdd17\"\n+ \"0x937e394859daaa4d66de4cbe3e6770d80adf639ecc5d3394774676870cda8d62\"\n values.$implementation:\n- \"0x3B21dC86c412aC34fF4c679497b274509D73cDcC\"\n+ \"0xDF129ECFc63Af454F62b69d03C0f0E21e69bcDAb\"\n values.$pastUpgrades.1:\n+ [\"2025-04-23T14:46:59.000Z\",\"0xe9ed64d1dc4bf02f583f912b831f46ae873996b36901c3b1180ac56c710e1d6f\",[\"0xDF129ECFc63Af454F62b69d03C0f0E21e69bcDAb\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.version:\n- \"2.1.0\"\n+ \"2.2.0\"\n }\n```"
}
]
},
{
"id": "914b5726",
"date": "Tue, 11 Mar 2025 11:59:58 GMT",
"timestamp": 1741694398,
"description": "as a part of [the Garfield mainnet upgrade](https://www.zircuit.com/blog/zircuit-technical-roadmap-part-i-performant-provers), a new verifier without dummy proof support is deployed. This upgrade only affects L2OutputOracle and the associated proof system. \n\n### L2OutputOracle\n\n- `proposeL2OutputV2()`, `verifyV2()` added. these target the new verifierV2 which does not accept empty proofs like the previous one\n- `bootstrapV2()` added: this fn is a permissioned switch to migrate from the old to the new verifier. but it can also be called after already having migrated by the permissioned proposer if `withdrawalKeepalivePeriodSeconds` have passed without any state update. can be used as a backdoor because it accepts l2 outputs without proof.",
"isHighSeverity": true,
"changeCount": 27,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SystemConfig (0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n values.minimumGasLimit:\n- 21000000\n+ 9000000\n values.resourceConfig.maxResourceLimit:\n- 20000000\n+ 8000000\n }\n```\n\n```diff\n contract ProxyAdmin (0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257) {\n +++ description: None\n directlyReceivedPermissions.9:\n+ {\"permission\":\"upgrade\",\"from\":\"0xc77ece87C91C44AFb5f19638f9a0F75b5d90E932\"}\n directlyReceivedPermissions.8.from:\n- \"0xc77ece87C91C44AFb5f19638f9a0F75b5d90E932\"\n+ \"0xC25D093D3A3f58952252D2e763BEAF2559dc9737\"\n }\n```\n\n```diff\n contract L2OutputOracle (0x92Ef6Af472b39F1b363da45E35530c24619245A4) {\n +++ description: Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition, but there currently is a backdoor that lets this contract accept a state root without proof if the operator has not updated the state in 4h. This contract also supports dummy proofs via the old 0x6BCe7408c0781dcE7b71494274302D4b75a1447c until a migration to the new 0xC25D093D3A3f58952252D2e763BEAF2559dc9737 has been manually executed.\n template:\n- \"opstack/L2OutputOracle\"\n+ \"opstack/zircuit/L2OutputOracle\"\n sourceHashes.1:\n- \"0x3190c62a59b62169498d1f61c08c5c722c70cc0a6aaa37b185fd3f8014941b96\"\n+ \"0x60e391caee355fef81909391d0660c897c79e6ba836e46f45d51968313188073\"\n description:\n- \"Contains a list of proposed state roots which Proposers assert to be a result of block execution. Currently only the PROPOSER address can submit new state roots.\"\n+ \"Entrypoint for permissioned proposers to propose new L2 outputs (state roots). New proposals have to be accompanied by a zk-SNARK proof of a correct state transition, but there currently is a backdoor that lets this contract accept a state root without proof if the operator has not updated the state in 4h. This contract also supports dummy proofs via the old 0x6BCe7408c0781dcE7b71494274302D4b75a1447c until a migration to the new 0xC25D093D3A3f58952252D2e763BEAF2559dc9737 has been manually executed.\"\n values.$implementation:\n- \"0x98DFF0828C8f870c31E209f35dF7ed22d194Ea9B\"\n+ \"0xeE646fEA9b1D7f89ae92266c5d7E799158416ca4\"\n values.$pastUpgrades.3:\n+ [\"2025-03-11T01:01:59.000Z\",\"0x82c8840f615a9681634471d0ca91ae7ab00e483dbc01dbf4b16a0efe042c7e2a\",[\"0xeE646fEA9b1D7f89ae92266c5d7E799158416ca4\"]]\n values.$pastUpgrades.2:\n+ [\"2025-03-11T01:01:59.000Z\",\"0x82c8840f615a9681634471d0ca91ae7ab00e483dbc01dbf4b16a0efe042c7e2a\",[\"0xE14b12F4843447114A093D99Dc9322b93a967DE6\"]]\n values.$upgradeCount:\n- 2\n+ 4\n values.getL2OutputRootWithFinalization:\n- [[\"0x2e746edcf4ff072457c6b8d6297c74251da7bf649ca04bcd2d30ca1a4e6ab292\",1719963923],[\"0x6377018657879415a6e998472dc6a28b263a8d6dffdb20f8754d4e3944bc7ee7\",1720011659],[\"0x5b51d6381ef6f819d7134be5323374781f3d3f591c552ca39893732df2127984\",1720011683],[\"0xeb12340cbcbc7af2fca27ce389d0162a0cfde9d134bea78a2e538b83ef0faabf\",1720011719],[\"0x55b30b87e1b913e3af502ebe5e12d5df6d4cfd3771b2a3deff43504f9abc8d5f\",1720011767]]\n values.SUBMISSION_INTERVAL:\n- 1\n values.submissionInterval:\n- 1\n values.version:\n- \"1.4.0\"\n+ \"2.0.0\"\n values.getL2OutputEx:\n+ []\n+++ description: As soon as this returns a value, Zircuit has transitioned to the v2 verifier. Remove the v1 verifier description string from the contract template.\n+++ severity: HIGH\n values.getL2OutputExLatest:\n+ \"EXPECT_REVERT\"\n values.l2ChainId:\n+ 48900\n values.verifierV2:\n+ \"0xC25D093D3A3f58952252D2e763BEAF2559dc9737\"\n values.withdrawalKeepalivePeriodSeconds:\n+ 14400\n values.withdrawalKeepalivePeriodSecondsFmt:\n+ \"4h\"\n errors:\n- {\"getL2OutputRootWithFinalization\":\"Processing error occurred.\"}\n fieldMeta.FINALIZATION_PERIOD_SECONDS:\n- {\"description\":\"Challenge period (Number of seconds until a state root is finalized).\"}\n fieldMeta.getL2OutputExLatest:\n+ {\"severity\":\"HIGH\",\"description\":\"As soon as this returns a value, Zircuit has transitioned to the v2 verifier. Remove the v1 verifier description string from the contract template.\"}\n }\n```\n\n```diff\n contract ZircuitMultiSig1 (0xC463EaC02572CC964D43D2414023E2c6B62bAF38) {\n +++ description: None\n receivedPermissions.11:\n+ {\"permission\":\"upgrade\",\"from\":\"0xc77ece87C91C44AFb5f19638f9a0F75b5d90E932\",\"via\":[{\"address\":\"0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257\"}]}\n receivedPermissions.10.from:\n- \"0xc77ece87C91C44AFb5f19638f9a0F75b5d90E932\"\n+ \"0xC25D093D3A3f58952252D2e763BEAF2559dc9737\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract VerifierV2 (0xC25D093D3A3f58952252D2e763BEAF2559dc9737)\n +++ description: ZK verifier that verifies zk-SNARKs using the PLONK proving system to prove correct EVM state transitions. Core of the proof system.\n```"
}
]
},
{
"id": "c2f11641",
"date": "Wed, 12 Feb 2025 11:31:38 GMT",
"timestamp": 1739359898,
"description": "System contracts upgrade:\n\nOptimismPortal, L1StandardBridge: transferThrottle removed.\n\nL2OutputOracle: `getL2OutputRootWithFinalization()` added which independently from the OptiPortal returns the finalization status of state roots.",
"isHighSeverity": true,
"changeCount": 20,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract OptimismPortal (0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1) {\n +++ description: The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals.\n template:\n- \"opstack/OptimismPortal_zircuit\"\n+ \"opstack/OptimismPortal\"\n sourceHashes.1:\n- \"0x9388575e8cf83880125e7770a596c83a0ad9c191b71f1990544987cbd0dbd4c0\"\n+ \"0xb7c0fa59b37014e507a0e86791007823e5a5548fe3523b6fcf3fb383c0e8c24e\"\n description:\n- \"The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals. This version of the OptimismPortal has inbuilt flow controls that can throttle eth deposits and withdrawals automatically based on volume over time.\"\n+ \"The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals.\"\n values.$implementation:\n- \"0xde8B916B972cE3c27C21157Fc2b107c413062b9d\"\n+ \"0xb6714d9808909b9383B09aD7Ea4Bc7E59b3B0E20\"\n values.$pastUpgrades.3:\n+ [\"2025-02-12T09:23:47.000Z\",\"0x19e7944c32b28126488482597f707797b60c4c3201abacdba5b9ea00b31cfbb4\",[\"0xb6714d9808909b9383B09aD7Ea4Bc7E59b3B0E20\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.ethThrottleDeposits:\n- {\"maxAmountPerPeriod\":0,\"periodLength\":0,\"maxAmountTotal\":0}\n values.ethThrottleWithdrawals:\n- {\"maxAmountPerPeriod\":0,\"periodLength\":3600,\"maxAmountTotal\":0}\n values.getEthThrottleDepositsCredits:\n- \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n values.getEthThrottleWithdrawalsCredits:\n- \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n values.version:\n- \"1.8.0\"\n+ \"2.0.2\"\n }\n```\n\n```diff\n contract L1StandardBridge (0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8) {\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n sourceHashes.1:\n- \"0x3a72e01a50e4baf0c333aa3ad2413675a95c2fc68a18d8a95b3a65179e98ccbc\"\n+ \"0x751d149755c8de663c6b1eb488f5d145ad3e9aa81561545e375a6cb8adbd0f6c\"\n values.$implementation:\n- \"0xA4ba8bd753695B6121722CBB7cd81c71BCFBCA28\"\n+ \"0xf829F2B0d741712198Aa3F0Be88b68Ec2aB5024b\"\n values.$pastUpgrades.4:\n+ [\"2025-02-12T09:23:47.000Z\",\"0x19e7944c32b28126488482597f707797b60c4c3201abacdba5b9ea00b31cfbb4\",[\"0xf829F2B0d741712198Aa3F0Be88b68Ec2aB5024b\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.ethThrottleDeposits:\n- {\"maxAmountPerPeriod\":0,\"periodLength\":2592000,\"maxAmountTotal\":0}\n }\n```\n\n```diff\n contract L2OutputOracle (0x92Ef6Af472b39F1b363da45E35530c24619245A4) {\n +++ description: Contains a list of proposed state roots which Proposers assert to be a result of block execution. Currently only the PROPOSER address can submit new state roots.\n sourceHashes.1:\n- \"0x2f020370d4312debb7d9c97dbf80a48a0a0ee81d261d6d239d6b01d0dd076c81\"\n+ \"0x3190c62a59b62169498d1f61c08c5c722c70cc0a6aaa37b185fd3f8014941b96\"\n values.$implementation:\n- \"0xaaF7FCc7252eb739E0001D8727800deAE04A84f1\"\n+ \"0x98DFF0828C8f870c31E209f35dF7ed22d194Ea9B\"\n values.$pastUpgrades.1:\n+ [\"2025-02-12T09:23:47.000Z\",\"0x19e7944c32b28126488482597f707797b60c4c3201abacdba5b9ea00b31cfbb4\",[\"0x98DFF0828C8f870c31E209f35dF7ed22d194Ea9B\"]]\n values.$upgradeCount:\n- 1\n+ 2\n }\n```"
}
]
},
{
"id": "ff23fc41",
"date": "Mon, 06 Jan 2025 09:06:32 GMT",
"timestamp": 1736154392,
"description": "Add external wsteth escrow (matches template).",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract L1ERC20TokenBridge (0x912C7271a6A3622dfb8B218eb46a6122aB046C79)\n +++ description: Escrow for custom external tokens that use the canonical bridge for messaging but are governed externally.\n```"
}
]
},
{
"id": "76b39cd8",
"date": "Thu, 12 Dec 2024 18:36:42 GMT",
"timestamp": 1734028602,
"description": "Changed finalization period from 5 hours to 4.\nThrottling checks are disabled since ethThrottleWithdrawals.maxAmountPerPeriod is set to 0.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract OptimismPortal (0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1) {\n +++ description: The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals. This version of the OptimismPortal has inbuilt flow controls that can throttle eth deposits and withdrawals automatically based on volume over time.\n values.ethThrottleWithdrawals.maxAmountPerPeriod:\n- \"1000000000000000000000\"\n+ 0\n }\n```\n\n```diff\n contract L2OutputOracle (0x92Ef6Af472b39F1b363da45E35530c24619245A4) {\n +++ description: Contains a list of proposed state roots which Proposers assert to be a result of block execution. Currently only the PROPOSER address can submit new state roots.\n+++ description: Challenge period (Number of seconds until a state root is finalized).\n values.FINALIZATION_PERIOD_SECONDS:\n- 18000\n+ 14400\n values.finalizationPeriodSeconds:\n- 18000\n+ 14400\n }\n```"
}
]
},
{
"id": "e0eb3aee",
"date": "Thu, 05 Dec 2024 05:56:44 GMT",
"timestamp": 1733378204,
"description": "Minor upgrade to the verifier to support another type of dummy proof (`0xFFFF`).\n```\nif (_proof.length == 2 && (bytes2(_proof) == 0xDEAD || bytes2(_proof) == 0xFFFF)) {\n return bytes(\"\");\n }\n```",
"isHighSeverity": true,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Verifier (0x6BCe7408c0781dcE7b71494274302D4b75a1447c) {\n +++ description: None\n sourceHashes.1:\n- \"0x15cce087eeab52950ec9f98df3ec3bb507edb1fac086fa0674aad4994d49049d\"\n+ \"0xa755414175ee27be390c32c78aaacaaf640fea05cd3198de33257a27f282b91f\"\n values.$implementation:\n- \"0x13A06FF21E46BCCd4B03E5Cb04372bB7aE7f2168\"\n+ \"0xa1f99E9E8D23B4945b62eAFF65eCf3D0dE6a0a5e\"\n values.$pastUpgrades.3:\n+ [\"2024-12-04T15:21:23.000Z\",\"0xa77ba9edb866b52cd4f676f0ff60cc38e85987d4cee650fc232a2a9d13c00dc6\",[\"0xa1f99E9E8D23B4945b62eAFF65eCf3D0dE6a0a5e\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.version:\n- \"0c13cfbb19b823f524a346e7ff5b352e24b8d79b\"\n+ \"c3131379c4bf618f2135c29547049b46923f7dca\"\n }\n```"
}
]
},
{
"id": "112dc163",
"date": "Wed, 25 Sep 2024 10:35:52 GMT",
"timestamp": 1727260552,
"description": "Limits changed. The maximum total deposit limit is removed (unlimited) and withdrawal limits per period are raised.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract OptimismPortal (0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1) {\n +++ description: The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals.\n values.ethThrottleDeposits.maxAmountTotal:\n- \"3000000000000000000000\"\n+ 0\n values.ethThrottleWithdrawals.maxAmountPerPeriod:\n- \"500000000000000000000\"\n+ \"1000000000000000000000\"\n values.getEthThrottleWithdrawalsCredits:\n- \"500000000000000000000\"\n+ \"1000000000000000000000\"\n }\n```\n\n```diff\n contract L1StandardBridge (0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8) {\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain. This contract can store any token.\n values.ethThrottleDeposits.maxAmountPerPeriod:\n- \"50000000000000000000\"\n+ 0\n }\n```"
}
]
},
{
"id": "662035a5",
"date": "Thu, 22 Aug 2024 13:57:11 GMT",
"timestamp": 1724335031,
"description": "The Guardian Multisig (2/5) and Zircuit Multisig (6/8) now have more members and higher threshold. Previously the Zircuit Multisig was a 1/3 and we've missed adding the warning.",
"isHighSeverity": false,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZircuitGuardianMultiSig (0x2c0B27F7C8F083B539557a0bA787041BF22DB276) {\n +++ description: None\n values.$members.4:\n+ \"0x38809210f69ed6204E276d2Be6b15cd530698679\"\n values.$members.3:\n+ \"0x0D5edFC67Ae336eddC91031FD6402EeAD6350CAb\"\n values.$members.2:\n+ \"0x62C688FCa995e07632D64A9586896BB7EcD68567\"\n values.$members.1:\n+ \"0x63cbB9fA540F6249AE4A3576f48BF07609b3a355\"\n values.$members.0:\n- \"0x38809210f69ed6204E276d2Be6b15cd530698679\"\n+ \"0x5E2a81d611e973C2ab1A4cAa71DD4E4Cdb2617d4\"\n values.$threshold:\n- 1\n+ 2\n values.multisigThreshold:\n- \"1 of 1 (100%)\"\n+ \"2 of 5 (40%)\"\n }\n```\n\n```diff\n contract ZircuitMultiSig (0xC463EaC02572CC964D43D2414023E2c6B62bAF38) {\n +++ description: It can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system.\n values.$members.7:\n+ \"0x38809210f69ed6204E276d2Be6b15cd530698679\"\n values.$members.6:\n+ \"0x62C688FCa995e07632D64A9586896BB7EcD68567\"\n values.$members.5:\n+ \"0x0D5edFC67Ae336eddC91031FD6402EeAD6350CAb\"\n values.$members.4:\n+ \"0x2F9072d5A8118a60ce41611AEe3e393D107f8Cec\"\n values.$members.3:\n+ \"0x5E2a81d611e973C2ab1A4cAa71DD4E4Cdb2617d4\"\n values.$members.2:\n- \"0x38809210f69ed6204E276d2Be6b15cd530698679\"\n+ \"0x63cbB9fA540F6249AE4A3576f48BF07609b3a355\"\n values.$members.1:\n- \"0x62C688FCa995e07632D64A9586896BB7EcD68567\"\n+ \"0xC1Ea584f696ABF39044c18D510067f0Ce2cC8966\"\n values.$members.0:\n- \"0x0D5edFC67Ae336eddC91031FD6402EeAD6350CAb\"\n+ \"0xD8399320cF3a6C7068DaC0C35ea5e74ddd650BD4\"\n values.$threshold:\n- 1\n+ 6\n values.multisigThreshold:\n- \"1 of 3 (33%)\"\n+ \"6 of 8 (75%)\"\n }\n```"
}
]
},
{
"id": "a2a853b3",
"date": "Mon, 19 Aug 2024 15:36:01 GMT",
"timestamp": 1724081761,
"description": "Increased their withdrawal limits for ETH (amount that can be withdrawn before getting throttled) to 500 ETH and the deposit limit to 50 ETH.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract OptimismPortal (0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1) {\n +++ description: The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals.\n values.ethThrottleWithdrawals.maxAmountPerPeriod:\n- \"300000000000000000000\"\n+ \"500000000000000000000\"\n values.getEthThrottleWithdrawalsCredits:\n- \"300000000000000000000\"\n+ \"500000000000000000000\"\n }\n```\n\n```diff\n contract L1StandardBridge (0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8) {\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain. This contract can store any token.\n values.ethThrottleDeposits.maxAmountPerPeriod:\n- \"1000000000000000000\"\n+ \"50000000000000000000\"\n }\n```"
}
]
},
{
"id": "f78cba9a",
"date": "Tue, 13 Aug 2024 11:18:48 GMT",
"timestamp": 1723547928,
"description": "Nothing significant has changed, likely a small upgrade to the circuit",
"isHighSeverity": true,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Verifier (0x6BCe7408c0781dcE7b71494274302D4b75a1447c) {\n +++ description: None\n values.$implementation:\n- \"0xA153Ec874DaB9e6590cFcf4DC3f5bb86FfaC08B9\"\n+ \"0x13A06FF21E46BCCd4B03E5Cb04372bB7aE7f2168\"\n values.version:\n- \"6ad34d4fc0cb1cbbed736b058d02532e881f9674\"\n+ \"0c13cfbb19b823f524a346e7ff5b352e24b8d79b\"\n }\n```"
}
]
},
{
"id": "7ab8f334",
"date": "Fri, 09 Aug 2024 11:46:50 GMT",
"timestamp": 1723204010,
"description": "Initial discovery: Fork from the latest pre-FP OP stack contracts with added ZK proofs.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract OptimismPortal (0x17bfAfA932d2e23Bd9B909Fd5B4D2e2a27043fb1)\n +++ description: The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals.\n```\n\n```diff\n+ Status: CREATED\n contract L1CrossDomainMessenger (0x2a721cBE81a128be0F01040e3353c3805A5EA091)\n +++ description: Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n```\n\n```diff\n+ Status: CREATED\n contract ZircuitGuardianMultiSig (0x2c0B27F7C8F083B539557a0bA787041BF22DB276)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SystemConfig (0x30F82a1Ca89226E8b8815d6EbB728e3b18a428ff)\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n```\n\n```diff\n+ Status: CREATED\n contract L1StandardBridge (0x386B76D9cA5F5Fb150B6BFB35CF5379B22B26dd8)\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain. This contract can store any token.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x5B1Ef673d9c316b3eE9Ed3B4E3cC84952bfC5257)\n +++ description: It can upgrade the bridge implementation potentially gaining access to all funds, and change any system component.\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x6BCe7408c0781dcE7b71494274302D4b75a1447c)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZircuitSuperchainConfig (0x745393Cc03b5fE668ECd52c0E625f59aAD6D3Da0)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2OutputOracle (0x92Ef6Af472b39F1b363da45E35530c24619245A4)\n +++ description: Contains a list of proposed state roots which Proposers assert to be a result of block execution. Currently only the PROPOSER address can submit new state roots.\n```\n\n```diff\n+ Status: CREATED\n contract L1ERC721Bridge (0x994eEb321F9cD79B077a5455fC248c77f30Dd244)\n +++ description: Used to bridge ERC-721 tokens from host chain to this chain.\n```\n\n```diff\n+ Status: CREATED\n contract ZircuitMultiSig (0xC463EaC02572CC964D43D2414023E2c6B62bAF38)\n +++ description: It can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system.\n```\n\n```diff\n+ Status: CREATED\n contract OptimismMintableERC20Factory (0xc77ece87C91C44AFb5f19638f9a0F75b5d90E932)\n +++ description: None\n```"
}
]
}
]