[
{
"title": "Kona derivation bug",
"url": "https://github.com/op-rs/kona/issues/3108",
"date": "2025-12-05T00:00:00Z",
"description": "To fix a bug in the Kona derivation, the proof system is updated and a state root manually resolved.",
"type": "incident"
},
{
"title": "Proof System Intervention",
"url": "https://app.blocksec.com/explorer/tx/eth/0xa065f636adfc7cdf08007ee81303028fa4daf291279a75a5ae1d3a975acce806?line=7",
"date": "2025-07-24T00:00:00Z",
"description": "A state root proposal is manually resolved after changing the finalization config.",
"type": "incident"
},
{
"title": "OP Kailua Upgrade",
"url": "https://x.com/build_on_bob/status/1948369793796689925",
"date": "2025-07-17T00:00:00Z",
"description": "BOB returns to the rollup section by using a hybrid zk fault proof system.",
"type": "general"
},
{
"title": "Phase 1: Optimistic BOB",
"url": "https://x.com/build_on_bob/status/1763642185101004914",
"date": "2024-05-01T00:00:00Z",
"description": "BOB bootstrapping as an Optimistic Rollup on Ethereum.",
"type": "general"
}
]
contracts+28-28
{
"addresses": {
"ethereum": [
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0xB250566074B3c0f1B109A531A83f3d9B1a579273"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712862419,
"transactionHash": "0x86a85eda6fa19f4bcfe42bfe648335d93dde76ba0c31e0582608eefe04dd29b5",
"implementations": [
"eth:0x994e3B01D130944a3E67BFd3B8Fc73069b959FEc"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0x6322C2f2D6a4305Fc033754d486A5A067Ee5F9b1"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0x2D778797049FE9259d947D1ED8e5442226dFB589"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0xe2F826324b2faf99E513D16D266c3F80aE87832B"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x2D7e764a0D9919e16983a46595CfA81fc34fa7Cd"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4"
]
},
{
"timestamp": 1753214303,
"transactionHash": "0xa7881069c54f1028d42b83406ac5a768154f8ff34ad37ec7641b4d45766e77c3",
"implementations": [
"eth:0xB250566074B3c0f1B109A531A83f3d9B1a579273"
]
}
],
"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 KailuaGame.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Bob Multisig 1",
"upgradableBy": [
{
"name": "Bob Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E#code"
},
{
"name": "DisputeGameFactory",
"isVerified": true,
"address": "eth:0x96123dbFC3253185B594c6a7472EE5A21E9B1079",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1752686063,
"transactionHash": "0x3e95a733128abc9cdbd115a77debd0838071a349ac5312955eceda05f647cd6e",
"implementations": [
"eth:0xc641A33cab81C559F2bd4b21EA34C290E2440C2B"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0"
]
}
],
"description": "The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Bob Multisig 1",
"upgradableBy": [
{
"name": "Bob Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x96123dbFC3253185B594c6a7472EE5A21E9B1079#code"
},
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0xACB886b75D76d1c8d9248cFdDfA09b70C71c5393",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712862287,
"transactionHash": "0x0acb268e79a76416f50ff0418ab696ada4497fc8ff33747d5edc352ef1d5d1db",
"implementations": [
"eth:0xaa0A1EfD35d6578ea6B5704dbc2c40B36A55B590"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0x6322C2f2D6a4305Fc033754d486A5A067Ee5F9b1"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0xba2492e52F45651B60B8B38d4Ea5E2390C64Ffb1"
]
},
{
"timestamp": 1752759527,
"transactionHash": "0xfdd53dea057419dee4a1f773029c57925865a0db916df2eddf1dbc988e6f3d56",
"implementations": [
"eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x760C48C62A85045A6B69f07F4a9f22868659CbCc"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647"
]
}
],
"description": "Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Bob Multisig 1\n * **batcherHash**: EOA 1\n * **owner**: Bob Multisig 1",
"upgradableBy": [
{
"name": "Bob Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xACB886b75D76d1c8d9248cFdDfA09b70C71c5393#code"
},
{
"name": "SuperchainConfig",
"isVerified": true,
"address": "eth:0xE925205ad05D8d612Ac205C4941CCd61Fc965C46",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xa70ddfb3e00fCFD083E64B200FE867104f703E1c"
],
"implementations": [
"eth:0x4da82a327773965b8d4D85Fa3dB8249b387458E7"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1752682883,
"transactionHash": "0x4fa702e7eff31a313f049d76f06b704a40c7c520d09ccbf8f9373ca25a6ec37e",
"implementations": [
"eth:0x4da82a327773965b8d4D85Fa3dB8249b387458E7"
]
}
],
"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 `GUARDIAN_SLOT`, the address of the guardian which can pause and unpause the system.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Bob Multisig 1\n * **guardian**: Bob Multisig 1",
"upgradableBy": [
{
"name": "Bob Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xE925205ad05D8d612Ac205C4941CCd61Fc965C46#code"
},
{
"name": "L1StandardBridge",
"isVerified": true,
"address": "eth:0x3F6cE1b36e5120BBc59D0cFe8A5aC8b6464ac1f7",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0x0b09ba359A106C9ea3b181CBc5F394570c7d2a7A"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "The main entry point to deposit ERC20 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Bob Multisig 1",
"upgradableBy": [
{
"name": "Bob Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x3F6cE1b36e5120BBc59D0cFe8A5aC8b6464ac1f7#code"
},
{
"name": "L1ERC721Bridge",
"isVerified": true,
"address": "eth:0x5fF93263D5181b2A826f8c51d54BC0da2d20D50a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712862323,
"transactionHash": "0x4fca0abc9070a610b427308a8db3834aa45a425d87a261c2331eb633974de603",
"implementations": [
"eth:0xA67fc05D295d2Be6bC4cBfad4f880c1c58734212"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0x6322C2f2D6a4305Fc033754d486A5A067Ee5F9b1"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d"
]
},
{
"timestamp": 1752759527,
"transactionHash": "0xfdd53dea057419dee4a1f773029c57925865a0db916df2eddf1dbc988e6f3d56",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1752759527,
"transactionHash": "0xfdd53dea057419dee4a1f773029c57925865a0db916df2eddf1dbc988e6f3d56",
"implementations": [
"eth:0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x276d3730f219f7ec22274f7263180b8452B46d47"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013"
]
}
],
"description": "Used to bridge ERC-721 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Bob Multisig 1",
"upgradableBy": [
{
"name": "Bob Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x5fF93263D5181b2A826f8c51d54BC0da2d20D50a#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0xE3d981643b806FB8030CDB677D6E60892E547EdA",
"upgradeability": {
"proxyType": "resolved delegate proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712862131,
"transactionHash": "0x49ca0455d3479f3dec361e05c5b47ac8634c14ca765ad8770401421a038eb39d",
"implementations": [
"eth:0xE3d981643b806FB8030CDB677D6E60892E547EdA"
]
},
{
"timestamp": 1712862371,
"transactionHash": "0x352fc46bb0f6c989aeb3dcb8490cd8d4a74bcfe919f9136b60dcfcbd9405a6a4",
"implementations": [
"eth:0x237853621998a33Fa5B9B820592F4c6f4c158c12"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0x6322C2f2D6a4305Fc033754d486A5A067Ee5F9b1"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65"
]
},
{
"timestamp": 1752759527,
"transactionHash": "0xfdd53dea057419dee4a1f773029c57925865a0db916df2eddf1dbc988e6f3d56",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1752759527,
"transactionHash": "0xfdd53dea057419dee4a1f773029c57925865a0db916df2eddf1dbc988e6f3d56",
"implementations": [
"eth:0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Bob Multisig 1",
"upgradableBy": [
{
"name": "Bob Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xE3d981643b806FB8030CDB677D6E60892E547EdA#code"
},
{
"name": "L1ERC20TokenBridge",
"isVerified": true,
"address": "eth:0x091dF5E1284E49fA682407096aD34cfD42B95B72",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c"
],
"implementations": [
"eth:0xB531445401926029B1647669cFAc8b4e5d8C7777"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1713786239,
"transactionHash": "0x5c9f70728478f27141b59caee9f7e5e113aa710ae69566331419b511d6e4638b",
"implementations": [
"eth:0xB531445401926029B1647669cFAc8b4e5d8C7777"
]
}
],
"description": "Escrow for custom external tokens that use the canonical bridge for messaging but are governed externally.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x091dF5E1284E49fA682407096aD34cfD42B95B72#code"
},
{
"name": "TimelockController",
"isVerified": true,
"address": "eth:0x0b144E07A0826182B6b59788c34b32Bfa86Fb711",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. The current minimum delay is 3d.\n* Roles:\n * **canceller**: EOA 3\n * **defaultAdmin**: TimelockController; ultimately EOA 3\n * **executor**: EOA 3\n * **proposer**: EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x0b144E07A0826182B6b59788c34b32Bfa86Fb711#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Bob Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"name": "KailuaGame",
"isVerified": true,
"address": "eth:0x1efDd13f831ceeEa14940806705A53D3211CD698",
"address": "eth:0x1E987CF54A39CA2AC5FdC97DCaFbbB805ef356bD",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A verifier wrapper for the RiscZeroGroth16Verifier that allows pausing (emergency stop) the verifier by its owner.\n* Roles:\n * **owner**: EOA 3",
"description": "Implementation of the KailuaGame with type 1337. Based on this implementation, new KailuaGames are created with every new state root proposal.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x1efDd13f831ceeEa14940806705A53D3211CD698#code"
"url": "https://etherscan.io/address/eth:0x1E987CF54A39CA2AC5FdC97DCaFbbB805ef356bD#code"
},
{
"name": "PreimageOracle",
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3",
"address": "eth:0x1efDd13f831ceeEa14940806705A53D3211CD698",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n",
"description": "A verifier wrapper for the RiscZeroGroth16Verifier that allows pausing (emergency stop) the verifier by its owner.\n* Roles:\n * **owner**: EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
"url": "https://etherscan.io/address/eth:0x1efDd13f831ceeEa14940806705A53D3211CD698#code"
},
{
"name": "KailuaTreasury",
"name": "PreimageOracle",
"isVerified": true,
"address": "eth:0x220C56BCB401001e5D218604c143D38DA107fC4a",
"address": "eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Entrypoint for state root proposals. Manages bonds (currently 0.5 ETH) and tournaments for the OP Kailua state validation system, wrapping the OP stack native DisputeGameFactory. The current vanguard advantage is defined here as 1mo.\n* Roles:\n * **vanguard**: EOA 2",
"description": "The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x220C56BCB401001e5D218604c143D38DA107fC4a#code"
"url": "https://etherscan.io/address/eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
},
{
"name": "RiscZeroGroth16Verifier",
"isVerified": true,
"address": "eth:0x2a098988600d87650Fb061FfAff08B97149Fa84D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for RISC Zero Groth16 proofs (version 3.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x2a098988600d87650Fb061FfAff08B97149Fa84D#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0x3a1D54496cf461fFc96d3b1a8A0B43B091ea3c13",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0x5e40B9231B86984b5150507046e354dbFbeD3d9e"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1752686099,
"transactionHash": "0xcbfb1843e8c6400154f464bfec34c6d89709c3beb847babb1076f7787ea7a116",
"implementations": [
"eth:0x71e966Ae981d1ce531a7b6d23DC0f27B38409087"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x5e40B9231B86984b5150507046e354dbFbeD3d9e"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Bob Multisig 1\n * **owner**: Bob Multisig 1",
"upgradableBy": [
{
"name": "Bob Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x3a1D54496cf461fFc96d3b1a8A0B43B091ea3c13#code"
},
{
"name": "RiscZeroSetVerifier",
"isVerified": true,
"address": "eth:0x5005aBa3DFf7C940fcc1e48DccCAD611a80eEB85",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Set verifier contract for RISC Zero proofs (version 0.9.0). It allows verifying a whole set of proofs identified with a Merkle root at once, afterwards each individual proof could be efficiently verified just by checking Merkle inclusion against the verified root.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x5005aBa3DFf7C940fcc1e48DccCAD611a80eEB85#code"
},
{
"name": "OptimismMintableERC20Factory",
"isVerified": true,
"address": "eth:0x5557408ab14013ce9Dbb300dE0D87D386BB09cb6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0x5493f4677A186f64805fe7317D6993ba4863988F"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712862335,
"transactionHash": "0xd74512bff91a91df00074f49532b5b49055c084c7adfece6155d7300013a0eac",
"implementations": [
"eth:0x0640c9377a4fAC00225097EACbB0295f4D5fbd76"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0x6322C2f2D6a4305Fc033754d486A5A067Ee5F9b1"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846"
]
},
{
"timestamp": 1752759527,
"transactionHash": "0xfdd53dea057419dee4a1f773029c57925865a0db916df2eddf1dbc988e6f3d56",
"implementations": [
"eth:0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x5493f4677A186f64805fe7317D6993ba4863988F"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Bob Multisig 1",
"upgradableBy": [
{
"name": "Bob Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x5557408ab14013ce9Dbb300dE0D87D386BB09cb6#code"
},
{
"name": "KailuaTreasury",
"isVerified": true,
"address": "eth:0x6F27A23Fc28C18EB2C268BFe1d575E051Ad94420",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Entrypoint for state root proposals. Manages bonds (currently 0.5 ETH) and tournaments for the OP Kailua state validation system, wrapping the OP stack native DisputeGameFactory. The current vanguard advantage is defined here as 1mo.\n* Roles:\n * **vanguard**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x6F27A23Fc28C18EB2C268BFe1d575E051Ad94420#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0x844D5f01161E3559d36f23d0Aa9E9620949aF782",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A verifier wrapper for the RiscZeroSetVerifier that allows pausing (emergency stop) the verifier by its owner.\n* Roles:\n * **owner**: EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x844D5f01161E3559d36f23d0Aa9E9620949aF782#code"
},
{
"name": "RiscZeroVerifierRouter",
"isVerified": true,
"address": "eth:0x8EaB2D97Dfce405A1692a21b3ff3A172d593D319",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A router proxy that routes to verifiers based on selectors. The mapping can be changed by a permissioned owner (TimelockController).\n* Roles:\n * **owner**: TimelockController; ultimately EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x8EaB2D97Dfce405A1692a21b3ff3A172d593D319#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0x9F9994Eb4Cb5200198FEfb470f8b50301662e696",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A verifier wrapper for the RiscZeroGroth16Verifier that allows pausing (emergency stop) the verifier by its owner.\n* Roles:\n * **owner**: EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x9F9994Eb4Cb5200198FEfb470f8b50301662e696#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xa70ddfb3e00fCFD083E64B200FE867104f703E1c",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Bob Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xa70ddfb3e00fCFD083E64B200FE867104f703E1c#code"
},
{
"name": "RiscZeroGroth16Verifier",
"isVerified": true,
"address": "eth:0xafB31f5b70623CDF4b20Ada3f7230916A5A79df9",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for RISC Zero Groth16 proofs (version 2.2.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xafB31f5b70623CDF4b20Ada3f7230916A5A79df9#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0xe3BD00F57B44E7aa4A6C212878427c85D638702A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n* Roles:\n * **challenger**: Bob Multisig 1\n * **proposer**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xe3BD00F57B44E7aa4A6C212878427c85D638702A#code"
},
{
"name": "KailuaGame",
"isVerified": true,
"address": "eth:0xe65E24a2130d0a52A0f9B988dFA06D5759eBa22B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Implementation of the KailuaGame with type 1337. Based on this implementation, new KailuaGames are created with every new state root proposal.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xe65E24a2130d0a52A0f9B988dFA06D5759eBa22B#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0xeBA14d52F1b19cA65455E5ECaB72D2FfD9e43fEF",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0x7b465370BB7A333f99edd19599EB7Fb1c2D3F8D2"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x7b465370BB7A333f99edd19599EB7Fb1c2D3F8D2"
]
}
],
"description": "Contains the latest confirmed state root that can be used as a starting point in a dispute game.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Bob Multisig 1",
"upgradableBy": [
{
"name": "Bob Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xeBA14d52F1b19cA65455E5ECaB72D2FfD9e43fEF#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0xF027F4A985560fb13324e943edf55ad6F1d15Dc1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xF027F4A985560fb13324e943edf55ad6F1d15Dc1#code"
}
]
},
"escrows": [
{
"address": "0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E",
"sinceTimestamp": 1712862059,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0xB250566074B3c0f1B109A531A83f3d9B1a579273"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1712862419,
"transactionHash": "0x86a85eda6fa19f4bcfe42bfe648335d93dde76ba0c31e0582608eefe04dd29b5",
"implementations": [
"eth:0x994e3B01D130944a3E67BFd3B8Fc73069b959FEc"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0x6322C2f2D6a4305Fc033754d486A5A067Ee5F9b1"
]
},
{
"timestamp": 1752758927,
"transactionHash": "0x1d93c182527e3c738f03ffb7baf66bbddfb29e1e60bbd9f5457c7de1a90eaaf1",
"implementations": [
"eth:0x2D778797049FE9259d947D1ED8e5442226dFB589"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0xe2F826324b2faf99E513D16D266c3F80aE87832B"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0x2D7e764a0D9919e16983a46595CfA81fc34fa7Cd"
]
},
{
"timestamp": 1752761915,
"transactionHash": "0x5fc7da71db9e1541e3eeeedbc3dd3058bf01b5d03b10eee95eaa5668e9efd74e",
"implementations": [
"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4"
]
},
{
"timestamp": 1753214303,
"transactionHash": "0xa7881069c54f1028d42b83406ac5a768154f8ff34ad37ec7641b4d45766e77c3",
"implementations": [
"eth:0xB250566074B3c0f1B109A531A83f3d9B1a579273"
]
}
],
"description": "Main entry point for users depositing ETH.",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x8AdeE124447435fE03e3CD24dF3f4cAE32E65a3E#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x3F6cE1b36e5120BBc59D0cFe8A5aC8b6464ac1f7",
"sinceTimestamp": 1712862107,
"tokens": "*",
"excludedTokens": [
"SolvBTC",
"SolvBTC.BBN"
],
"contract": {
"isVerified": true,
"address": "eth:0x3F6cE1b36e5120BBc59D0cFe8A5aC8b6464ac1f7",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0d9f416260598313Be6FDf6B010f2FbC34957Cd0"
],
"implementations": [
"eth:0x0b09ba359A106C9ea3b181CBc5F394570c7d2a7A"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "Main entry point for users depositing ERC20 token that do not require custom gateway.",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x3F6cE1b36e5120BBc59D0cFe8A5aC8b6464ac1f7#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x091dF5E1284E49fA682407096aD34cfD42B95B72",
"sinceTimestamp": 1713786239,
"tokens": [
"wstETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x091dF5E1284E49fA682407096aD34cfD42B95B72",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c"
],
"implementations": [
"eth:0xB531445401926029B1647669cFAc8b4e5d8C7777"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1713786239,
"transactionHash": "0x5c9f70728478f27141b59caee9f7e5e113aa710ae69566331419b511d6e4638b",
"implementations": [
"eth:0xB531445401926029B1647669cFAc8b4e5d8C7777"
]
}
],
"url": "https://etherscan.io/address/0x091dF5E1284E49fA682407096aD34cfD42B95B72#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "Custom escrow"
}
]
},
"chainId": 1
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkProgramHashes": [
{
"title": "Kailua fault proof program (Risc0 v3.0.3)",
"description": "Program that executes OP Kona client to derive blocks and generate fault or validity proofs, is a part of ZK non-interactive fault proof system.",
"proverSystemProject": "risc0",
"verificationStatus": "notVerified",
"hash": "0xd7c1d74ce26e897e8bc7ea094667dcdb04c405ba1836bdb9b0ad773fc9fd0651"
"hash": "0xf176eb82fbbb5d2d281a9cce459062bcdbe65f93d7156829b174fae2b4690c23"
},
{
"title": "Set builder program",
"description": "Recursively verifies a Merkle tree of zk proofs at once, identified by a Merkle Mountain Range root.",
"programUrl": "https://github.com/risc0/risc0-ethereum/tree/v3.0.1/crates/aggregation/guest/set-builder",
"proverSystemProject": "risc0",
"verificationStatus": "notVerified",
"hash": "0x70909b25db0db00f1d4b4016aeb876f53568a3e5a8e6397cb562d79947a02cc9"
}
]
}
{
"daLayer": "ethereum",
"name": "Enshrined Bridge",
"risks": {
"daBridge": {
"value": "Enshrined",
"sentiment": "good",
"description": "Rollup users have access to all the data, as it is posted onchain on the consensus layer. On the execution layer, the rollup relies on blob data commitment (versioned hashes), which are accessible through the BLOBHASH opcode. \nThe rollup smart contracts can use these blob commitments during state transition validation to reference blobs during proof verification, without requiring direct access to the raw blob data.\n "
},
"callout": "Unlike non-enshrined DA bridges, it does not place any honesty\n assumption on an external committee that provides data availability\n attestations to the DA bridge. From the rollup perspective,\n Ethereum's canonical chain cannot contain unavailable data\n commitments as full nodes self-verify the data availability of each\n block, discarding blocks with unavailable data. The rollup state\n validating bridge has access to all the data, as it is posted on chain."
},
"technology": {
"description": "\n ## Enshrined Bridge\n The DA bridge on Ethereum is enshrined, meaning that blob data is directly accessible on the consensus layer, with data availability guaranteed by the network's inherent consensus rules. \n If a block contains unavailable data, full nodes will reject it, causing the chain to fork away from that block. This ensures data availability without requiring additional trust assumptions. \n In contrast, external DA providers must rely on data availability attestations from the external validator set, introducing an extra layer of trust on the majority of validators.\n "
},
"usedIn": [
{
"id": "abstract",
"name": "Abstract",
"slug": "abstract"
},
{
"id": "arbitrum",
"name": "Arbitrum One",
"slug": "arbitrum"
},
{
"id": "arenaz",
"name": "Arena-Z",
"slug": "arenaz"
},
{
"id": "base",
"name": "Base Chain",
"slug": "base"
},
{
"id": "blast",
"name": "Blast",
"slug": "blast"
},
{
"id": "bob",
"name": "BOB",
"slug": "bob"
},
{
"id": "bobanetwork",
"name": "Boba Network",
"slug": "bobanetwork"
},
{
"id": "cartesi-prt-honeypot-v2",
"name": "Cartesi PRT Honeypot v2",
"slug": "cartesi-prt-honeypot-v2"
},
{
"id": "dbk",
"name": "DeBank Chain",
"slug": "dbk"
},
{
"id": "deri",
"name": "Deri",
"slug": "deri"
},
{
"id": "ethernity",
"name": "Epic Chain",
"slug": "epicchain"
},
{
"id": "facet",
"name": "Facet v1",
"slug": "facet"
},
{
"id": "forknet",
"name": "Forknet",
"slug": "forknet"
},
{
"id": "hashkey",
"name": "HashKey Chain",
"slug": "hashkey"
},
{
"id": "hemi",
"name": "Hemi",
"slug": "hemi"
},
{
"id": "ink",
"name": "Ink",
"slug": "ink"
},
{
"id": "jovay",
"name": "Jovay",
"slug": "jovay"
},
{
"id": "karak",
"name": "K2",
"slug": "k2"
},
{
"id": "katana",
"name": "Katana",
"slug": "katana"
},
{
"id": "lighter",
"name": "Lighter",
"slug": "lighter"
},
{
"id": "linea",
"name": "Linea",
"slug": "linea"
},
{
"id": "lisk",
"name": "Lisk",
"slug": "lisk"
},
{
"id": "loopring",
"name": "Loopring",
"slug": "loopring"
},
{
"id": "metal",
"name": "Metal",
"slug": "metal"
},
{
"id": "metis",
"name": "Metis Andromeda",
"slug": "metis"
},
{
"id": "mint",
"name": "Mint",
"slug": "mint"
},
{
"id": "mode",
"name": "Mode Network",
"slug": "mode"
},
{
"id": "morph",
"name": "Morph",
"slug": "morph"
},
{
"id": "optimism",
"name": "OP Mainnet",
"slug": "op-mainnet"
},
{
"id": "optopia",
"name": "Optopia",
"slug": "optopia"
},
{
"id": "paradex",
"name": "Paradex",
"slug": "paradex"
},
{
"id": "phala",
"name": "Phala",
"slug": "phala"
},
{
"id": "polygonzkevm",
"name": "Polygon zkEVM",
"slug": "polygonzkevm"
},
{
"id": "polynomial",
"name": "Polynomial",
"slug": "polynomial"
},
{
"id": "r0ar",
"name": "R0ar",
"slug": "r0ar"
},
{
"id": "race",
"name": "Race Network",
"slug": "race"
},
{
"id": "scroll",
"name": "Scroll",
"slug": "scroll"
},
{
"id": "settlus",
"name": "Settlus",
"slug": "settlus"
},
{
"id": "shape",
"name": "Shape",
"slug": "shape"
},
{
"id": "soneium",
"name": "Soneium",
"slug": "soneium"
},
{
"id": "sxt",
"name": "Space and Time",
"slug": "sxt"
},
{
"id": "starknet",
"name": "Starknet",
"slug": "starknet"
},
{
"id": "superseed",
"name": "Superseed",
"slug": "superseed"
},
{
"id": "swan",
"name": "Swan Chain",
"slug": "swan"
},
{
"id": "swell",
"name": "Swellchain",
"slug": "swell"
},
{
"id": "syndicateframe",
"name": "Syndicate Frame Chain",
"slug": "syndicateframe"
},
{
"id": "taiko",
"name": "Taiko Alethia",
"slug": "taiko"
},
{
"id": "unichain",
"name": "Unichain",
"slug": "unichain"
},
{
"id": "worldchain",
"name": "World Chain",
"slug": "world"
},
{
"id": "zeronetwork",
"name": "ZERO Network",
"slug": "zeronetwork"
},
{
"id": "zircuit",
"name": "Zircuit",
"slug": "zircuit"
},
{
"id": "aztec",
"name": "Zk.Money v1 (Aztec v1)",
"slug": "aztecv1"
},
{
"id": "zksync2",
"name": "ZKsync Era",
"slug": "zksync-era"
},
{
"id": "zksync",
"name": "ZKsync Lite",
"slug": "zksync-lite"
},
{
"id": "zora",
"name": "Zora",
"slug": "zora"
}
]
}
polygonzkevm+87-631
display+5-28
{
"badges": [
{
"id": "EVM",
"type": "VM",
"name": "EVM",
"description": "This project uses the Ethereum Virtual Machine to run its smart contracts and supports the Solidity programming language",
"action": {
"type": "scalingFilter",
"id": "vm",
"value": "EVM"
}
},
{
"id": "EthereumCalldata",
"id": "CustomDA",
"type": "DA",
"name": "Ethereum with calldata",
"description": "This project is posting its data to Ethereum as calldata",
"name": "Custom DA solution",
"description": "This project is using a custom DA solution",
"action": {
"type": "publicDaHighlight",
"slug": "ethereum"
"type": "selfDaHighlight"
}
},
{
"id": "CDKErigon",
"type": "Stack",
"name": "Built on the CDK Erigon stack",
"description": "The project is built using the multistack Agglayer CDK, and is based on the Erigon stack",
"action": {
"type": "scalingFilter",
"id": "stack",
"value": "Agglayer CDK"
}
},
{
"id": "Agglayer",
"type": "Infra",
"name": "Part of the Agglayer",
"description": "The project is part of the Agglayer, meaning that it uses the shared Agglayer contracts",
"action": {
"type": "scalingFilter",
"id": "infrastructure",
"value": "Agglayer"
}
}
],
"description": "Polygon zkEVM is an EVM-compatible ZK Rollup built by Polygon Labs.",
"description": "Polygon zkEVM is an EVM-compatible L2 built by Polygon Labs.",
"links": {
"websites": [
"https://polygon.technology/polygon-zkevm"
],
"bridges": [
"https://portal.polygon.technology/bridge"
],
"documentation": [
"https://docs.polygon.technology/zkEVM/"
],
"explorers": [
"https://zkevm.polygonscan.com/"
],
"repositories": [
"https://github.com/0xPolygon/zkevm-node",
"https://github.com/0xPolygon/"
],
"socialMedia": [
"https://x.com/0xPolygon",
"https://t.me/polygonofficial",
"https://reddit.com/r/0xPolygon/",
"https://discord.com/invite/0xPolygonCommunity",
"https://discord.com/invite/0xpolygonRnD",
"https://polygon.technology/blog"
],
"other": [
"https://rollup.codes/polygon-zkevm",
"https://growthepie.com/chains/polygon-zkevm"
]
}
}
{
"capability": "universal",
"daLayer": [
"Ethereum"
"None"
],
"hostChain": {
"id": "ethereum",
"slug": "ethereum",
"name": "Ethereum"
},
"infrastructure": "Agglayer",
"layer": "layer2",
"proofSystem": {
"type": "Validity",
"zkCatalogId": "zkprover"
},
"purposes": [
"Universal"
],
"reasonsForBeingOther": [
{
"label": "No DA bridge",
"shortDescription": "There is no data availability bridge",
"description": "Projects without a data availability bridge fully rely on single entities (the sequencer) to honestly rely available data roots on Ethereum. A malicious sequencer can collude with the proposer to finalize an unavailable state, which can cause loss of funds."
},
{
"label": "No proofs",
"shortDescription": "The proof system isn't fully functional",
"description": "Projects without a proper proof system fully rely on single entities to safely update the state. A malicious proposer can finalize an invalid state, which can cause loss of funds."
}
],
"stacks": [
"Agglayer CDK"
],
"stage": "Stage 0",
"type": "ZK Rollup",
"vm": [
"EVM"
]
"stage": "Not applicable",
"type": "Other",
"vm": []
}
scalingStage+1-71
{
"missing": {
"nextStage": "Stage 1",
"requirements": [
"Users' withdrawals can be censored by the permissioned operators.",
"Upgrades executed by actors with more centralized control than a Security Council provide less than 7d for users to exit if the permissioned operator is down or censoring.",
"Security Council members are not publicly known."
],
"principle": "Compromising ≥75% of the Security Council should be the only way (other than bugs) for a rollup to indefinitely block an L2→L1 message (e.g. a withdrawal) or push an invalid L2→L1 message (e.g. an invalid withdrawal) with a <7d exit window."
},
"stage": "Stage 0",
"summary": [
{
"stage": "Stage 0",
"requirements": [
{
"satisfied": true,
"description": "A complete and functional proof system is deployed."
},
{
"satisfied": true,
"description": "The project calls itself a rollup."
},
{
"satisfied": true,
"description": "State roots are posted to Ethereum L1."
},
{
"satisfied": true,
"description": "Inputs for the state transition function are posted to Ethereum L1."
},
{
"satisfied": true,
"description": "A source-available node exists that can recreate the state from Ethereum L1 data. Please note that the L2BEAT team has not verified the validity of the node source code. [View code](https://github.com/0xPolygonHermez/zkevm-node)"
}
]
},
{
"stage": "Stage 1",
"requirements": [
{
"satisfied": false,
"description": "Users' withdrawals can be censored by the permissioned operators."
},
{
"satisfied": false,
"description": "Upgrades executed by actors with more centralized control than a Security Council provide less than 7d for users to exit if the permissioned operator is down or censoring."
},
{
"satisfied": false,
"description": "Security Council members are not publicly known."
}
],
"principle": {
"satisfied": false,
"description": "Compromising ≥75% of the Security Council should be the only way (other than bugs) for a rollup to indefinitely block an L2→L1 message (e.g. a withdrawal) or push an invalid L2→L1 message (e.g. an invalid withdrawal) with a <7d exit window."
}
},
{
"stage": "Stage 2",
"requirements": [
{
"satisfied": false,
"description": "Upgrades unrelated to onchain provable bugs provide less than 30d to exit."
},
{
"satisfied": false,
"description": "The Security Council's actions are not confined to onchain provable bugs."
}
]
}
]
"stage": "NotApplicable"
}
scalingRisks+10-17
{
"self": {
"stateValidation": {
"value": "Validity proofs (ST, SN)",
"description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup.",
"sentiment": "good",
"orderHint": null,
"executionDelay": 0,
"secondLine": "No execution delay"
"value": "None",
"description": "Currently the system permits invalid state roots. 'Pessimistic' proofs only validate the bridge accounting.",
"sentiment": "bad",
"orderHint": null
},
"dataAvailability": {
"value": "Onchain",
"description": "All of the data needed for proof construction is published on Ethereum L1. Unlike most ZK rollups transactions are posted instead of state diffs.",
"sentiment": "good",
"orderHint": null
"value": "External",
"description": "Proof construction and state derivation rely fully on data that is NOT published onchain.",
"sentiment": "bad"
},
"exitWindow": {
"value": "None",
"description": "Even though there is a 3d Timelock for upgrades, forced transactions are disabled.",
"description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable.",
"sentiment": "bad",
"orderHint": -1,
"warning": {
"value": "The Security Council can remove the delay on upgrades.",
"sentiment": "bad"
}
"orderHint": 0
},
"sequencerFailure": {
"value": "No mechanism",
"description": "There is no mechanism to have transactions be included if the sequencer is down or censoring. Although the functionality exists in the code, it is currently disabled.",
"description": "There is no mechanism to have transactions be included if the sequencer is down or censoring.",
"sentiment": "bad"
},
"proposerFailure": {
"value": "Cannot withdraw",
"description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen.",
"sentiment": "bad",
"orderHint": null
}
}
}
scalingDa+8-10
[
{
"layer": {
"value": "Ethereum",
"secondLine": "Calldata",
"sentiment": "good",
"description": "The data is posted to Ethereum as calldata.",
"projectId": "ethereum"
"value": "None",
"sentiment": "bad",
"description": "The data is not posted to any data availability layer."
},
"bridge": {
"value": "Enshrined",
"sentiment": "good",
"description": "The validating bridge has access to all the data, as it is posted onchain.",
"projectId": "ethereum"
"value": "None",
"sentiment": "bad",
"description": "There is no bridge that can attest if the data has been made available.",
"orderHint": -2
},
"mode": {
"value": "Transaction data"
"value": "None"
}
}
]
scalingTechnology+8-178
{
"architectureImage": "polygon-cdk-rollup",
"dataAvailability": [
{
"name": "All transaction data is recorded on chain",
"description": "All executed transactions are submitted to an on chain smart contract. The execution of the rollup is based entirely on the submitted transactions, so anyone monitoring the contract can know the correct state of the rollup chain.",
"risks": [],
"references": [
{
"title": "PolygonZkEVM.sol - Etherscan source code, sequenceBatches() function",
"url": "https://etherscan.io/address/0x7253F329302b1b5E774Ac641EA3743E9E3244f2E#code"
}
]
}
],
"exitMechanisms": [
{
"name": "Regular messaging",
"description": "The user initiates L2->L1 messages by submitting a regular transaction on this chain. When the block containing that transaction is settled, the message becomes available for processing on L1. ZK proofs are required to settle blocks.",
"risks": [],
"references": [
{
"title": "AgglayerBridge.sol - source code, claimAsset function",
"url": "https://etherscan.io/address/0x66E0120e3c965552a89AcC37b03f762624baC5Ad#code"
}
]
}
],
"forceTransactions": {
"name": "Users can't force any transaction",
"description": "The mechanism for allowing users to submit their own transactions is currently disabled.",
"risks": [
{
"category": "Users can be censored if",
"text": "the operator refuses to include their transactions."
}
],
"references": [
{
"title": "PolygonZkEVM.sol - source code, forceBatchAddress address",
"url": "https://etherscan.io/address/0x7253F329302b1b5E774Ac641EA3743E9E3244f2E#code"
}
]
},
"operator": {
"name": "The system has a centralized sequencer",
"description": "Only a trusted sequencer is allowed to submit transaction batches. A mechanism for users to submit their own batches is currently disabled.",
"risks": [
{
"category": "MEV can be extracted if",
"text": "the operator exploits their centralized position and frontruns user transactions."
},
{
"category": "Funds can be frozen if",
"text": "the sequencer refuses to include an exit transaction.",
"isCritical": true
}
],
"references": [
{
"title": "PolygonZkEVM.sol - source code, onlyTrustedSequencer modifier",
"url": "https://etherscan.io/address/0x7253F329302b1b5E774Ac641EA3743E9E3244f2E#code"
}
]
},
"otherConsiderations": [
{
"name": "Shared bridge and Pessimistic Proofs",
"description": "Polygon Agglayer uses a shared bridge escrow for Rollups, Validiums and external chains that opt in to participate in interoperability. Each participating chain needs to provide zk proofs to access any assets in the shared bridge. In addition to the full execution proofs that are used for the state validation of Rollups and Validiums, accounting proofs over the bridges state (Polygon calls them 'Pessimistic Proofs') are used by external chains ('cdk-sovereign'). Using the SP1 zkVM by Succinct, projects without a full proof system on Ethereum are able to share the bridge with the zkEVM Agglayer projects.",
"description": "Polygon Agglayer uses a shared bridge escrow for Rollups, Validiums and external chains that opt in to participate in interoperability. Each participating chain needs to provide zk proofs to access any assets in the shared bridge. In addition to the full execution proofs that are used for the state validation of Rollups and Validiums, accounting proofs over the bridges state (Polygon calls them 'Pessimistic Proofs') are used by external chains ('cdk-sovereign' and aggchains). Using the SP1 zkVM by Succinct, projects without a full proof system on Ethereum or custom proof systems are able to share the bridge with the zkEVM Agglayer projects.",
"risks": [
{
"category": "Funds can be lost if",
"text": "the accounting proof system for the bridge (pessimistic proofs, SP1) is implemented incorrectly."
},
{
"category": "Funds can be stolen if",
"text": "the operator manipulates the L2 state, which is not validated on Ethereum.",
"isCritical": true
}
],
"references": [
{
"title": "Pessimistic Proof - Polygon Knowledge Layer",
"url": "https://docs.polygon.technology/cdk/concepts/pessimistic-proofs"
"url": "https://docs.polygon.technology/learn/agglayer/pessimistic_proof"
},
{
"title": "Etherscan: AgglayerManager.sol - verifyPessimisticTrustedAggregator() function",
"url": "https://etherscan.io/address/0x15cAF18dEd768e3620E0f656221Bf6B400ad2618#code#F1#L1300"
}
]
}
],
"stateDerivation": {
"nodeSoftware": "Node software can be found [here](https://github.com/0xPolygonHermez/zkevm-node) and [here](https://github.com/0xPolygonHermez/cdk-erigon). The cdk-erigon node is the more recent implementation.",
"compressionScheme": "No compression scheme is used.",
"genesisState": "The genesis state, whose corresponding root is accessible as Batch 0 root in the [`_legacyBatchNumToStateRoot`](https://evm.storage/eth/19489007/0x5132a183e9f3cb7c848b0aac5ae0c4f0491b7ab2/_legacyBatchNumToStateRoot#map) variable of AgglayerManager, is available [here](https://github.com/0xPolygonHermez/zkevm-contracts/blob/0d0e69a6f299e273343461f6350343cf4b048269/deployment/genesis.json).",
"dataFormat": "The trusted sequencer batches transactions according to the specifications documented [here](https://docs.polygon.technology/zkEVM/architecture/protocol/transaction-life-cycle/transaction-batching/)."
},
"stateValidation": {
"description": "Each update to the system state must be accompanied by a ZK proof that ensures that the new state was derived by correctly applying a series of valid user transactions to the previous state. These proofs are then verified on Ethereum by a smart contract.",
"categories": [
{
"title": "Prover Architecture",
"description": "Polygon zkEVM proof system PIL-STARK can be found [here](https://github.com/0xPolygonHermez/pil-stark)."
},
{
"title": "ZK Circuits",
"description": "Polygon zkEVM circuits are built from PIL (polynomial identity language) and are designed to replicate the behavior of the EVM. The source code can be found [here](https://github.com/0xPolygonHermez/zkevm-rom).",
"risks": [
{
"category": "Funds can be lost if",
"text": "the proof system is implemented incorrectly."
}
]
},
{
"title": "Verification Keys Generation",
"description": "SNARK verification keys can be generated and checked against the Ethereum verifier contract using [this guide](https://github.com/0xPolygonHermez/zkevm-contracts/blob/main/verifyMainnetDeployment/verifyMainnetProofVerifier.md). The system requires a trusted setup."
},
{
"title": "Pessimistic Proofs",
"description": "The pessimistic proofs that are used to prove correct accounting in the shared bridge are using the [SP1 zkVM by Succinct](https://github.com/succinctlabs/sp1)."
}
],
"proofVerification": {
"shortDescription": "Polygon zkEVM is a ZK-EVM rollup on Ethereum.",
"aggregation": true,
"requiredTools": [
{
"name": "circom",
"version": "v2.1.8",
"link": "https://github.com/iden3/circom/releases/tag/v2.1.8"
}
],
"verifiers": [
{
"name": "PolygonZkEvmVerifier (old RollupType 5 and current RollupType 6)",
"description": "Polygon zkEVM utilizes [PIL-STARK](https://github.com/0xPolygonHermez/pil-stark) as the main proving stack for their system. PIL-STARK is an implementation of the [eSTARK](https://eprint.iacr.org/2023/474) protocol. The circuits and the computations are represented using the PIL and zkASM custom languages. The protocol makes use of recursive proof aggregation. The final eSTARK proof is wrapped in a fflonk proof.",
"verified": "no",
"contractAddress": "0xc521580cd8586Cc688A7430F9DcE0f6A803F2883",
"chainId": 1,
"subVerifiers": [
{
"name": "Final wrap",
"proofSystem": "fflonk",
"mainArithmetization": "Plonkish",
"mainPCS": "KZG-fflonk",
"trustedSetup": "Powers of Tau 28"
},
{
"name": "Aggregation circuit",
"proofSystem": "eSTARK",
"mainArithmetization": "eAIR",
"mainPCS": "FRI",
"trustedSetup": "None"
},
{
"name": "Polygon zkEVM ROM",
"proofSystem": "eSTARK",
"mainArithmetization": "eAIR",
"mainPCS": "FRI",
"trustedSetup": "None",
"link": "https://github.com/0xPolygonHermez/zkevm-rom"
}
]
},
{
"name": "PolygonZkEvmVerifier (old RollupType 3)",
"description": "Polygon zkEVM utilizes [PIL-STARK](https://github.com/0xPolygonHermez/pil-stark) as the main proving stack for their system. PIL-STARK is an implementation of the [eSTARK](https://eprint.iacr.org/2023/474) protocol. The circuits and the computations are represented using the PIL and zkASM custom languages. The protocol makes use of recursive proof aggregation. The final eSTARK proof is wrapped in a fflonk proof.",
"verified": "no",
"contractAddress": "0x0775e11309d75aA6b0967917fB0213C5673eDf81",
"chainId": 1,
"subVerifiers": [
{
"name": "Final wrap",
"proofSystem": "fflonk",
"mainArithmetization": "Plonkish",
"mainPCS": "KZG-fflonk",
"trustedSetup": "Powers of Tau 28"
},
{
"name": "Aggregation circuit",
"proofSystem": "eSTARK",
"mainArithmetization": "eAIR",
"mainPCS": "FRI",
"trustedSetup": "None"
},
{
"name": "Polygon zkEVM ROM",
"proofSystem": "eSTARK",
"mainArithmetization": "eAIR",
"mainPCS": "FRI",
"trustedSetup": "None",
"link": "https://github.com/0xPolygonHermez/zkevm-rom"
}
]
}
]
}
},
"upgradesAndGovernance": "\nThe regular upgrade process for all system contracts (shared and L2-specific) starts at the PolygonAdminMultisig. For the shared contracts, they schedule a transaction that targets the ProxyAdmin via the Timelock, wait for 3d and then execute the upgrade. An upgrade of the Layer 2 specific rollup- or validium contract requires first adding a new rollupType through the Timelock and the AgglayerManager (defining the new implementation and verifier contracts). Now that the rollupType is created, either the local admin or the PolygonAdminMultisig can immediately upgrade the local system contracts to it.\n\nThe PolygonSecurityCouncil can expedite the upgrade process by declaring an emergency state. This state pauses both the shared bridge and the AgglayerManager and allows for instant upgrades through the timelock. Accordingly, instant upgrades for all system contracts are possible with the cooperation of the SecurityCouncil. The emergency state has been activated 1 time(s) since inception.\n\nFurthermore, the PolygonAdminMultisig is permissioned to manage the shared trusted aggregator (proposer and prover) for all participating Layer 2s, deactivate the emergency state, obsolete rollupTypes and manage operational parameters and fees in the AgglayerManager directly. The local admin of a specific Layer 2 can manage their chain by choosing the trusted sequencer, manage forced batches and set the data availability config. Creating new Layer 2s (of existing rollupType) is outsourced to the PolygonCreateRollupMultisig but can also be done by the PolygonAdminMultisig. Custom non-shared bridge escrows have their custom upgrade admins listed in the permissions section.",
"upgradesAndGovernanceImage": "polygoncdk",
"warning": "The forced transaction mechanism is currently disabled."
]
}
proofVerification+1-75
{
"aggregation": true,
"requiredTools": [
{
"name": "circom",
"version": "v2.1.8",
"link": "https://github.com/iden3/circom/releases/tag/v2.1.8"
}
],
"shortDescription": "Polygon zkEVM is a ZK-EVM rollup on Ethereum.",
"verifiers": [
{
"name": "PolygonZkEvmVerifier (old RollupType 5 and current RollupType 6)",
"description": "Polygon zkEVM utilizes [PIL-STARK](https://github.com/0xPolygonHermez/pil-stark) as the main proving stack for their system. PIL-STARK is an implementation of the [eSTARK](https://eprint.iacr.org/2023/474) protocol. The circuits and the computations are represented using the PIL and zkASM custom languages. The protocol makes use of recursive proof aggregation. The final eSTARK proof is wrapped in a fflonk proof.",
"verified": "no",
"contractAddress": "0xc521580cd8586Cc688A7430F9DcE0f6A803F2883",
"chainId": 1,
"subVerifiers": [
{
"name": "Final wrap",
"proofSystem": "fflonk",
"mainArithmetization": "Plonkish",
"mainPCS": "KZG-fflonk",
"trustedSetup": "Powers of Tau 28"
},
{
"name": "Aggregation circuit",
"proofSystem": "eSTARK",
"mainArithmetization": "eAIR",
"mainPCS": "FRI",
"trustedSetup": "None"
},
{
"name": "Polygon zkEVM ROM",
"proofSystem": "eSTARK",
"mainArithmetization": "eAIR",
"mainPCS": "FRI",
"trustedSetup": "None",
"link": "https://github.com/0xPolygonHermez/zkevm-rom"
}
]
},
{
"name": "PolygonZkEvmVerifier (old RollupType 3)",
"description": "Polygon zkEVM utilizes [PIL-STARK](https://github.com/0xPolygonHermez/pil-stark) as the main proving stack for their system. PIL-STARK is an implementation of the [eSTARK](https://eprint.iacr.org/2023/474) protocol. The circuits and the computations are represented using the PIL and zkASM custom languages. The protocol makes use of recursive proof aggregation. The final eSTARK proof is wrapped in a fflonk proof.",
"verified": "no",
"contractAddress": "0x0775e11309d75aA6b0967917fB0213C5673eDf81",
"chainId": 1,
"subVerifiers": [
{
"name": "Final wrap",
"proofSystem": "fflonk",
"mainArithmetization": "Plonkish",
"mainPCS": "KZG-fflonk",
"trustedSetup": "Powers of Tau 28"
},
{
"name": "Aggregation circuit",
"proofSystem": "eSTARK",
"mainArithmetization": "eAIR",
"mainPCS": "FRI",
"trustedSetup": "None"
},
{
"name": "Polygon zkEVM ROM",
"proofSystem": "eSTARK",
"mainArithmetization": "eAIR",
"mainPCS": "FRI",
"trustedSetup": "None",
"link": "https://github.com/0xPolygonHermez/zkevm-rom"
}
]
}
]
}
null
livenessInfo+1-3
{
"explanation": "Polygon zkEVM is a ZK rollup that posts transaction data to the L1. For a transaction to be considered final, it has to be posted on L1. State updates are a three step process: first blocks are committed to L1, then they are proved, and then it is possible to execute them."
}
null