ab70e08a (main)
and
21a2e752 (PR)
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Verifier",
"isVerified": true,
"address": "eth:0x0775e11309d75aA6b0967917fB0213C5673eDf81",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies ZK proofs for state roots of this Layer 2 via the PolygonRollupManager.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0775e11309d75aA6b0967917fB0213C5673eDf81#code"
},
{
"name": "Validium",
"isVerified": true,
"address": "eth:0x1E163594e13030244DCAf4cDfC2cd0ba3206DA80",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x10D296e8aDd0535be71639E5D1d1c30ae1C6bD4C"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1708632059,
"transactionHash": "0xd68a284c1d748ff541d3339f650f5b90e2faf2744db5fdfc27edfffc702e2dbd",
"implementations": [
"eth:0x9cf80f7eB1C76ec5AE7A88b417e373449b73ac30"
]
},
{
"timestamp": 1712599859,
"transactionHash": "0xf735ab474ff2e48c6231cc834828e35736c6fc9fec9759b74e5cf58a88075a36",
"implementations": [
"eth:0x10D296e8aDd0535be71639E5D1d1c30ae1C6bD4C"
]
}
],
"description": "The main system contract defining the Astar zkEVM Layer 2 logic. Entry point for sequencing batches.\n* Roles:\n * **admin**: AstarMultisig\n * **forceBatchAddress**: AstarMultisig\n * **trustedSequencer**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1E163594e13030244DCAf4cDfC2cd0ba3206DA80#code"
},
{
"name": "PolygonDataCommittee",
"isVerified": true,
"address": "eth:0x9CCD205052c732Ac1Df2cf7bf8aACC0E371eE0B0",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x1963D7b78e75A5eDfF9e5376E7A07A935Fb3d50d"
],
"implementations": [
"eth:0xF4e87685e323818E0aE35dCdFc3B65106002E456"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1708624559,
"transactionHash": "0x72856ab866229053e930b1e4ec2c8505ed4b72feffdf13db4a218eced4364fa2",
"implementations": [
"eth:0xF4e87685e323818E0aE35dCdFc3B65106002E456"
]
}
],
"description": "Manages the members of the data availability committee (DAC) and the threshold for accepting commitments from them (Currently 5/3).\n* Roles:\n * **admin**: ProxyAdmin; ultimately AstarMultisig\n * **owner**: AstarMultisig",
"upgradableBy": [
{
"name": "AstarMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9CCD205052c732Ac1Df2cf7bf8aACC0E371eE0B0#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 2, EOA 3\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x1963D7b78e75A5eDfF9e5376E7A07A935Fb3d50d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: AstarMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1963D7b78e75A5eDfF9e5376E7A07A935Fb3d50d#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1679653127,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherPreminted",
"premintedAmount": "340282366920938463463374607431768211455"
},
"chainId": 1
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 3d delay on code upgrades unless upgrade is initiated by the PolygonSecurityCouncil in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0x0775e11309d75aA6b0967917fB0213C5673eDf81"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "RiscZeroGroth16Verifier",
"isVerified": true,
"address": "eth:0x20ff7C2Cf391a5F096A2Cc181cb41916680f8E97",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for RISC Zero Groth16 proofs (version 2.0.0-rc.3).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x20ff7C2Cf391a5F096A2Cc181cb41916680f8E97#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/0x2a098988600d87650Fb061FfAff08B97149Fa84D#code"
},
{
"name": "DisputeGameFactory",
"isVerified": true,
"address": "eth:0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x468C2345D1d409d5b0F2f8bE4aE2082150cC1a0c"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1728308027,
"transactionHash": "0x60eca85990bf426b85e3f3db9d9215e7fb229dce201a62401ad3d8a08ee5613c",
"implementations": [
"eth:0xc641A33cab81C559F2bd4b21EA34C290E2440C2B"
]
},
{
"timestamp": 1744214879,
"transactionHash": "0x0351fede2eca409c36da1996944ef02aabaa989637ca1bfacd2f3f07547d1134",
"implementations": [
"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0"
]
},
{
"timestamp": 1759862579,
"transactionHash": "0x98ef4f3ecc10996b184385bd4ca5b877dce0a3b527d88f4ee0cfe296cf004a38",
"implementations": [
"eth:0x33D1e8571a85a538ed3D5A4d88f46C112383439D"
]
},
{
"timestamp": 1764604703,
"transactionHash": "0x9b9aa2d8e857e1a28e55b124e931eac706b3ae04c1b33ba949f0366359860993",
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
},
{
"timestamp": 1770742199,
"transactionHash": "0x7407256ae44170125b2d82c71f0d03cb6ade3c2268e8cd33dcb07fe259fbfd0b",
"implementations": [
"eth:0xc040F392E52Cb6970CA8E110c280fE24E07C5e2c"
]
},
{
"timestamp": 1779825599,
"transactionHash": "0x75b1c9b2090ba2b311d6be08c319340b87dc1aabfae2505d126e7a0f1fc6b11c",
"implementations": [
"eth:0x468C2345D1d409d5b0F2f8bE4aE2082150cC1a0c"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x43edB88C4B80fDD2AdFF2412A7BebF9dF42cB40e#code"
},
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x66d94eE8F529b683ED6013729784e8bb44697A64"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1686793919,
"transactionHash": "0xad5179152fdbe7ca60a41fd5a490add905e567c59e6630a7856a379759939a8e",
"implementations": [
"eth:0x5FB30336A8d0841cf15d452afA297cB6D10877D7"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0x2D778797049FE9259d947D1ED8e5442226dFB589"
]
},
{
"timestamp": 1730302883,
"transactionHash": "0x2476bda1e2cc0f2a501876532cacf1d267fc9be8f07271b75e512e3b6c927639",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1730302883,
"transactionHash": "0x2476bda1e2cc0f2a501876532cacf1d267fc9be8f07271b75e512e3b6c927639",
"implementations": [
"eth:0xe2F826324b2faf99E513D16D266c3F80aE87832B"
]
},
{
"timestamp": 1744214879,
"transactionHash": "0x0351fede2eca409c36da1996944ef02aabaa989637ca1bfacd2f3f07547d1134",
"implementations": [
"eth:0x2D7e764a0D9919e16983a46595CfA81fc34fa7Cd"
]
},
{
"timestamp": 1745512871,
"transactionHash": "0xfd06079372fea0ef0c8907b71931fc6907cc88c39f0dc036d3ebf267686fb6da",
"implementations": [
"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4"
]
},
{
"timestamp": 1759862579,
"transactionHash": "0x98ef4f3ecc10996b184385bd4ca5b877dce0a3b527d88f4ee0cfe296cf004a38",
"implementations": [
"eth:0x381E729FF983FA4BCEd820e7b922d79bF653B999"
]
},
{
"timestamp": 1764604703,
"transactionHash": "0x9b9aa2d8e857e1a28e55b124e931eac706b3ae04c1b33ba949f0366359860993",
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
},
{
"timestamp": 1770742199,
"transactionHash": "0x7407256ae44170125b2d82c71f0d03cb6ade3c2268e8cd33dcb07fe259fbfd0b",
"implementations": [
"eth:0x97cEbbf8959e2A5476fbe9B98A21806Ec234609B"
]
},
{
"timestamp": 1779825599,
"transactionHash": "0x75b1c9b2090ba2b311d6be08c319340b87dc1aabfae2505d126e7a0f1fc6b11c",
"implementations": [
"eth:0x66d94eE8F529b683ED6013729784e8bb44697A64"
]
}
],
"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 AggregateVerifier.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x49048044D57e1C92A77f79988d21Fa8fAF74E97e#code"
},
{
"name": "RiscZeroGroth16Verifier",
"isVerified": true,
"address": "eth:0x54aCE3ED46529B4d4F3770C8Bad5dDC48717B9bF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for RISC Zero Groth16 proofs (version 2.0.3).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x54aCE3ED46529B4d4F3770C8Bad5dDC48717B9bF#code"
},
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0x73a79Fab69143498Ed3712e519A88a918e1f4072",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x0507Aaa21c678976FCdC7e804836ACd6ebc17a44"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1686793907,
"transactionHash": "0x0a7442e325dac626d8c16a7a052e9a2ee8cd08a5b8c9796228b4d297e20ea3cc",
"implementations": [
"eth:0x6481ff79597Fe4F77E1063f615ec5BDaDDEFfd4B"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0xba2492e52F45651B60B8B38d4Ea5E2390C64Ffb1"
]
},
{
"timestamp": 1730302883,
"transactionHash": "0x2476bda1e2cc0f2a501876532cacf1d267fc9be8f07271b75e512e3b6c927639",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1730302883,
"transactionHash": "0x2476bda1e2cc0f2a501876532cacf1d267fc9be8f07271b75e512e3b6c927639",
"implementations": [
"eth:0xF56D96B2535B932656d3c04Ebf51baBff241D886"
]
},
{
"timestamp": 1733958059,
"transactionHash": "0x1fdbb2443b479fedc7a6e43400a5f09c883aa00d3e7b40bc7238a08e43625294",
"implementations": [
"eth:0x45C4e267aE21E90f72C8AbF43ddB5941c953482F"
]
},
{
"timestamp": 1738700927,
"transactionHash": "0x765a2eb3c7eecea5722b120037123eaec9e6ef4b6a53ba2bcfb88ef08fae074b",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1738700927,
"transactionHash": "0x765a2eb3c7eecea5722b120037123eaec9e6ef4b6a53ba2bcfb88ef08fae074b",
"implementations": [
"eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375"
]
},
{
"timestamp": 1744214879,
"transactionHash": "0x0351fede2eca409c36da1996944ef02aabaa989637ca1bfacd2f3f07547d1134",
"implementations": [
"eth:0x760C48C62A85045A6B69f07F4a9f22868659CbCc"
]
},
{
"timestamp": 1745512871,
"transactionHash": "0xfd06079372fea0ef0c8907b71931fc6907cc88c39f0dc036d3ebf267686fb6da",
"implementations": [
"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647"
]
},
{
"timestamp": 1750797287,
"transactionHash": "0x289aeed24a156bbb3b03cbbe0ef4e5fc873436d41cf50c746cdd380ff26be89b",
"implementations": [
"eth:0x78FFE9209dFF6Fe1c9B6F3EFdF996BeE60346D0e"
]
},
{
"timestamp": 1759862579,
"transactionHash": "0x98ef4f3ecc10996b184385bd4ca5b877dce0a3b527d88f4ee0cfe296cf004a38",
"implementations": [
"eth:0x2bFE4A5Bd5A41e9d848d843ebCDFa15954e9A557"
]
},
{
"timestamp": 1764604703,
"transactionHash": "0x9b9aa2d8e857e1a28e55b124e931eac706b3ae04c1b33ba949f0366359860993",
"implementations": [
"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED"
]
},
{
"timestamp": 1770742199,
"transactionHash": "0x7407256ae44170125b2d82c71f0d03cb6ade3c2268e8cd33dcb07fe259fbfd0b",
"implementations": [
"eth:0xd392c27B84b1cA776528F2704BC67B82a62132d2"
]
},
{
"timestamp": 1772559059,
"transactionHash": "0xa2dc938704977d2f3d0765832e79e1239d97aa6912efadc21a9705ef7dca42eb",
"implementations": [
"eth:0x0507Aaa21c678976FCdC7e804836ACd6ebc17a44"
]
}
],
"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 Base Governance Multisig\n * **batcherHash**: EOA 1\n * **owner**: Base Multisig 1",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x73a79Fab69143498Ed3712e519A88a918e1f4072#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/0xafB31f5b70623CDF4b20Ada3f7230916A5A79df9#code"
},
{
"name": "SuperchainConfig",
"isVerified": true,
"address": "eth:0xb535ff7F118260a952CE65e7fF41B1743De8EE6c",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0xc4ceeB264Fa35a022e470aCc3C6A522308f3ec02"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1771973279,
"transactionHash": "0x29d51cf032651b7bedba5af1030eff2c43e40b676d4fe2cdf6c970a8a01e3a43",
"implementations": [
"eth:0xc4ceeB264Fa35a022e470aCc3C6A522308f3ec02"
]
}
],
"description": "Base's own SuperchainConfig, used to manage pause states for the Base chain. The guardian and incident responder roles are immutable and set at construction time. The guardian can pause, unpause, and extend pauses, while the incident responder can only pause. Each pause automatically expires after 3 months.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig\n * **guardian**: Base Governance Multisig\n * **incident_responder**: Base Multisig 1",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb535ff7F118260a952CE65e7fF41B1743De8EE6c#code"
},
{
"name": "RiscZeroGroth16Verifier",
"isVerified": true,
"address": "eth:0xf70aBAb028Eb6F4100A24B203E113D94E87DE93C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for RISC Zero Groth16 proofs. This older implementation exposes control-root and selector constants but does not expose a VERSION getter.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf70aBAb028Eb6F4100A24B203E113D94E87DE93C#code"
},
{
"name": "L1StandardBridge",
"isVerified": true,
"address": "eth:0x3154Cf16ccdb4C6d922629664174b904d80F2C35",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "The main entry point to deposit ERC20 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3154Cf16ccdb4C6d922629664174b904d80F2C35#code"
},
{
"name": "L1ERC721Bridge",
"isVerified": true,
"address": "eth:0x608d94945A64503E642E6370Ec598e519a2C1E53",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1686793919,
"transactionHash": "0xad5179152fdbe7ca60a41fd5a490add905e567c59e6630a7856a379759939a8e",
"implementations": [
"eth:0x3311aC7F72bb4108d9f4D5d50E7623B1498A9eC0"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d"
]
},
{
"timestamp": 1744214879,
"transactionHash": "0x0351fede2eca409c36da1996944ef02aabaa989637ca1bfacd2f3f07547d1134",
"implementations": [
"eth:0x276d3730f219f7ec22274f7263180b8452B46d47"
]
},
{
"timestamp": 1745512871,
"transactionHash": "0xfd06079372fea0ef0c8907b71931fc6907cc88c39f0dc036d3ebf267686fb6da",
"implementations": [
"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013"
]
},
{
"timestamp": 1759862579,
"transactionHash": "0x98ef4f3ecc10996b184385bd4ca5b877dce0a3b527d88f4ee0cfe296cf004a38",
"implementations": [
"eth:0x7f1d12fB2911EB095278085f721e644C1f675696"
]
},
{
"timestamp": 1764604703,
"transactionHash": "0x9b9aa2d8e857e1a28e55b124e931eac706b3ae04c1b33ba949f0366359860993",
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
},
{
"timestamp": 1770742199,
"transactionHash": "0x7407256ae44170125b2d82c71f0d03cb6ade3c2268e8cd33dcb07fe259fbfd0b",
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
}
],
"description": "Used to bridge ERC-721 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x608d94945A64503E642E6370Ec598e519a2C1E53#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0x866E82a600A1414e583f7F13623F1aC5d58b0Afa",
"upgradeability": {
"proxyType": "resolved delegate proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1686793907,
"transactionHash": "0x8869b94ddd0ba84b41d937708db7b8aa64948e85b3a11e970f22887a56b0b1d7",
"implementations": [
"eth:0x0000000000000000000000000000000000000000"
]
},
{
"timestamp": 1686793919,
"transactionHash": "0xad5179152fdbe7ca60a41fd5a490add905e567c59e6630a7856a379759939a8e",
"implementations": [
"eth:0x81C4Bd600793EBd1C0323604E1F455fE50A951F8"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65"
]
},
{
"timestamp": 1744214879,
"transactionHash": "0x0351fede2eca409c36da1996944ef02aabaa989637ca1bfacd2f3f07547d1134",
"implementations": [
"eth:0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231"
]
},
{
"timestamp": 1745512871,
"transactionHash": "0xfd06079372fea0ef0c8907b71931fc6907cc88c39f0dc036d3ebf267686fb6da",
"implementations": [
"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B"
]
},
{
"timestamp": 1759862579,
"transactionHash": "0x98ef4f3ecc10996b184385bd4ca5b877dce0a3b527d88f4ee0cfe296cf004a38",
"implementations": [
"eth:0x22D12E0FAebD62d429514A65EBAe32dd316c12D6"
]
},
{
"timestamp": 1764604703,
"transactionHash": "0x9b9aa2d8e857e1a28e55b124e931eac706b3ae04c1b33ba949f0366359860993",
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
]
},
{
"timestamp": 1770742199,
"transactionHash": "0x7407256ae44170125b2d82c71f0d03cb6ade3c2268e8cd33dcb07fe259fbfd0b",
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
]
}
],
"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 Base Governance Multisig",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x866E82a600A1414e583f7F13623F1aC5d58b0Afa#code"
},
{
"name": "HistoryStorage",
"isVerified": true,
"address": "eth:0x0000F90827F1C53a10cb7A02335B175320002935",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"references": [
{
"title": "Source Code",
"url": "https://eips.ethereum.org/EIPS/eip-2935"
}
],
"description": "EIP-2935 system contract storing the last 8191 L1 blockhashes. Bytecode is canonical to the EIP, deployed at the same address across networks.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0000F90827F1C53a10cb7A02335B175320002935#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Base Governance Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E#code"
},
{
"name": "OptimismMintableERC20Factory",
"isVerified": true,
"address": "eth:0x05cc379EBD9B30BbA19C6fA282AB29218EC61D84",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1686793919,
"transactionHash": "0xad5179152fdbe7ca60a41fd5a490add905e567c59e6630a7856a379759939a8e",
"implementations": [
"eth:0x3d2c2f8f95CAba644eA25319c4c08594b8DC0359"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846"
]
},
{
"timestamp": 1744214879,
"transactionHash": "0x0351fede2eca409c36da1996944ef02aabaa989637ca1bfacd2f3f07547d1134",
"implementations": [
"eth:0x5493f4677A186f64805fe7317D6993ba4863988F"
]
},
{
"timestamp": 1764604703,
"transactionHash": "0x9b9aa2d8e857e1a28e55b124e931eac706b3ae04c1b33ba949f0366359860993",
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
},
{
"timestamp": 1770742199,
"transactionHash": "0x7407256ae44170125b2d82c71f0d03cb6ade3c2268e8cd33dcb07fe259fbfd0b",
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
}
],
"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 Base Governance Multisig",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x05cc379EBD9B30BbA19C6fA282AB29218EC61D84#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**: Safe\n * **defaultAdmin**: TimelockController; ultimately Safe\n * **executor**: Safe\n * **proposer**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0b144E07A0826182B6b59788c34b32Bfa86Fb711#code"
},
{
"name": "TEEProverRegistry",
"isVerified": true,
"address": "eth:0x1af2A7E537DE2eE795DE5B8BfbB1Ad0DD513A5aA",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0xeaB9b34BDD26Ad451B381B0934a30fAa6ED5E316"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1779394811,
"transactionHash": "0xa94f74e29a92b8875b27a53a90195adba0f46b381f8c6bb5d6a51c98080da52b",
"implementations": [
"eth:0xeaB9b34BDD26Ad451B381B0934a30fAa6ED5E316"
]
}
],
"description": "Registry of authorized TEE enclave signers and proposer addresses used by the TEEVerifier. Owner can add or remove allowlisted proposers via setProposer (onlyOwner) and set the AggregateVerifier game type lookup. Owner and Manager can register or deregister enclave signers via registerSigner / deregisterSigner. Registration requires a Risc0 ZK proof of a valid AWS Nitro attestation document verified by the NITRO_VERIFIER.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1af2A7E537DE2eE795DE5B8BfbB1Ad0DD513A5aA#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0x1efDd13f831ceeEa14940806705A53D3211CD698",
"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**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1efDd13f831ceeEa14940806705A53D3211CD698#code"
},
{
"name": "PreimageOracle",
"isVerified": true,
"address": "eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
},
{
"name": "TEEVerifier",
"isVerified": true,
"address": "eth:0x1FbA0C57b07Af804A9717e51dec9CC27FBC12228",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Stateless verifier that validates AggregateVerifier TEE proofs by recovering an ECDSA signature over the journal and checking the recovered signer against TEEProverRegistry. Enforces PCR0 match by comparing the signer's registered image hash to the AggregateVerifier's TEE_IMAGE_HASH. Can be permanently nullified by a successful AggregateVerifier.nullify call.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1FbA0C57b07Af804A9717e51dec9CC27FBC12228#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0x44c220f0598345195cE99AD6A57aDfFcb9Ea33e7",
"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/0x44c220f0598345195cE99AD6A57aDfFcb9Ea33e7#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/0x5005aBa3DFf7C940fcc1e48DccCAD611a80eEB85#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0x58bf355C5d4EdFc723eF89d99582ECCfd143266A",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x58bf355C5d4EdFc723eF89d99582ECCfd143266A#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0x6463dEE3828677F6270d83d45408044fc5eDB908",
"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/0x6463dEE3828677F6270d83d45408044fc5eDB908#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0x64AE5250958CdeB83f6b61f913B5Ac6Ebe8EFd4D",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1759862579,
"transactionHash": "0x98ef4f3ecc10996b184385bd4ca5b877dce0a3b527d88f4ee0cfe296cf004a38",
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
}
],
"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 Base Governance Multisig",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x64AE5250958CdeB83f6b61f913B5Ac6Ebe8EFd4D#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0x68dC2cB4e61774873971c499D9b239ec5Ac540E3",
"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**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x68dC2cB4e61774873971c499D9b239ec5Ac540E3#code"
},
{
"name": "FaultDisputeGame",
"isVerified": true,
"address": "eth:0x6dDBa09bc4cCB0D6Ca9Fc5350580f74165707499",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Logic of the dispute game. When a state root is proposed, a dispute game contract is deployed. Challengers can use such contracts to challenge the proposed state root.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6dDBa09bc4cCB0D6Ca9Fc5350580f74165707499#code"
},
{
"name": "Escrow",
"isVerified": true,
"address": "eth:0x7F311a4D48377030bD810395f4CCfC03bdbe9Ef3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Simple escrow that accepts tokens and allows to configure permissioned addresses that can access the tokens.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7F311a4D48377030bD810395f4CCfC03bdbe9Ef3#code"
},
{
"name": "NitroEnclaveVerifier",
"isVerified": true,
"address": "eth:0x7F3a16E1fe6Fda64c5AC4296E13ECB9F7B44F6fb",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "ZK-based verifier of AWS Nitro Enclave attestation documents. Used by TEEProverRegistry to validate new enclave signer registrations against the AWS Nitro PKI.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7F3a16E1fe6Fda64c5AC4296E13ECB9F7B44F6fb#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**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/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 Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8EaB2D97Dfce405A1692a21b3ff3A172d593D319#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0x909f6cf47ed12f010A796527f562bFc26C7F4E72",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x4483F964F6711Cb55f633820ED174E780369b99D"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1759862579,
"transactionHash": "0x98ef4f3ecc10996b184385bd4ca5b877dce0a3b527d88f4ee0cfe296cf004a38",
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
},
{
"timestamp": 1770742199,
"transactionHash": "0x7407256ae44170125b2d82c71f0d03cb6ade3c2268e8cd33dcb07fe259fbfd0b",
"implementations": [
"eth:0x36398155Cd17cfe804F69b233eDDA800DD4D5aA5"
]
},
{
"timestamp": 1779825599,
"transactionHash": "0x75b1c9b2090ba2b311d6be08c319340b87dc1aabfae2505d126e7a0f1fc6b11c",
"implementations": [
"eth:0x4483F964F6711Cb55f633820ED174E780369b99D"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x909f6cf47ed12f010A796527f562bFc26C7F4E72#code"
},
{
"name": "wstETHEscrow",
"isVerified": true,
"address": "eth:0x9de443AdC5A411E83F1878Ef24C3F52C61571e72",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c"
],
"implementations": [
"eth:0x313819736457910aC1Dd21a712a37f3d7595645A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1695935315,
"transactionHash": "0xac8580fdfdbb35af667cf9c5c5fa9d10c793486d10fcbea538efd9386b04c106",
"implementations": [
"eth:0x313819736457910aC1Dd21a712a37f3d7595645A"
]
}
],
"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/0x9de443AdC5A411E83F1878Ef24C3F52C61571e72#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**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9F9994Eb4Cb5200198FEfb470f8b50301662e696#code"
},
{
"name": "SkyLink Bridge",
"isVerified": true,
"address": "eth:0xA5874756416Fa632257eEA380CAbd2E87cED352A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0xaeFd31c2e593Dc971f9Cb42cBbD5d4AD7F1970b6"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1728571151,
"transactionHash": "0xde7d483c73060001a6d0ee88b5b9848bdb8a830a93a9579e956350b80296db83",
"implementations": [
"eth:0xaeFd31c2e593Dc971f9Cb42cBbD5d4AD7F1970b6"
]
}
],
"description": "Custom bridge for USDS and sUSDS managed by Sky governance.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xA5874756416Fa632257eEA380CAbd2E87cED352A#code"
},
{
"name": "ZkVerifier",
"isVerified": true,
"address": "eth:0xB88D95bDf6972508942d184866890c1834219B75",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Thin router that forwards SP1 ZK proof verification from the AggregateVerifier game to the SP1 verifier gateway. Can be permanently nullified by a successful AggregateVerifier.nullify call.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xB88D95bDf6972508942d184866890c1834219B75#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0xd0D07924AdD740a87e41Ca8A0d4CBBf6b074EF71",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x437c42d7927fe396E54da837d6aC57756cD868e3"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1779394835,
"transactionHash": "0xdd0a92f8c5c98e49332f4d4349b9cf72f9da59dbfb9154ce6c532083072a6403",
"implementations": [
"eth:0x437c42d7927fe396E54da837d6aC57756cD868e3"
]
}
],
"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 Base Governance Multisig",
"upgradableBy": [
{
"name": "Base Governance Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xd0D07924AdD740a87e41Ca8A0d4CBBf6b074EF71#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0xDa8f3de6fBBdb261Ac771B813a578A7aBdA6B2b1",
"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**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xDa8f3de6fBBdb261Ac771B813a578A7aBdA6B2b1#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0xdc32E228636273285Befa5F001dBB5142517C106",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: Base Governance Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xdc32E228636273285Befa5F001dBB5142517C106#code"
},
{
"name": "AggregateVerifier",
"isVerified": true,
"address": "eth:0xeE303bA054c5F1E14A8EF87f1C7E285af45A1ba2",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Game type implementation that combines a TEE attestation arm and a ZK proof arm. A single un-nullified proof of either type can resolve a game (PROOF_THRESHOLD = 1). When both arms commit, the finalization window collapses from SLOW_FINALIZATION_DELAY (5d) to FAST_FINALIZATION_DELAY (1d).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xeE303bA054c5F1E14A8EF87f1C7E285af45A1ba2#code"
}
],
"base": [
{
"name": "FeeDisburser",
"isVerified": true,
"address": "base:0x09C7bAD99688a55a2e83644BFAed09e62bDcCcBA",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0xa966054731540a48b28990b63Dcf4f33d8aE57B2"
],
"implementations": [
"base:0x72984FeF9c2123eBB66912CeAB9e47C5E9B738e6"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1693609603,
"transactionHash": "0x49e50b94dd7c45505380b0015b912b001354b9103fc5549d05a2b4bb7e433278",
"implementations": [
"base:0x45969D00739d518f0Dde41920B67cE30395135A0"
]
},
{
"timestamp": 1772559377,
"transactionHash": "0x055b31e8fb8689e5e72d9c41c1c38b5a165fd145aa76bf118194f86a066d0650",
"implementations": [
"base:0xDa70b4cd0Cd8193f665A7D49CeFD5f79F11FCc75"
]
},
{
"timestamp": 1773435991,
"transactionHash": "0x68c2a1b66361dcb9ec2f8b1fe26ae275021b6d78751d0577fc0bd410dfd47518",
"implementations": [
"base:0x72984FeF9c2123eBB66912CeAB9e47C5E9B738e6"
]
}
],
"description": "Contract used to disburse funds from system FeeVault contracts, shares revenue with Optimism and bridges the rest of funds to L1.\n* Roles:\n * **admin**: EOA 2",
"upgradableBy": [
{
"id": "EOA-2",
"name": "EOA 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x09C7bAD99688a55a2e83644BFAed09e62bDcCcBA#code"
},
{
"name": "L2CrossDomainMessenger",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000007",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0xC0d3c0d3c0D3c0D3C0d3C0D3C0D3c0d3c0d30007"
]
},
"chain": "base",
"pastUpgrades": [],
"description": "The L2CrossDomainMessenger (L2xDM) contract sends messages from L2 to L1, and relays messages from L1 onto L2 with a system tx. In the event that a message sent from L2 to L1 is rejected for exceeding the L1 gas limit, it can be resubmitted via this contract’s replay function.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000007#code"
},
{
"name": "L2StandardBridge",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000010",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0xC0d3c0d3c0D3c0d3C0D3c0D3C0d3C0D3C0D30010"
]
},
"chain": "base",
"pastUpgrades": [],
"description": "The L2StandardBridge contract is the main entry point to deposit or withdraw ERC20 tokens from L2 to L1. This contract can store any token.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000010#code"
},
{
"name": "SequencerFeeVault",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000011",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0xd53210eE20948eCFF8B6B8180E29657e0ce8492d"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1693589723,
"transactionHash": "0xe56b939e6eed472f168be6942f7b08af959d3777eee8b8508f82ef5ade47d528",
"implementations": [
"base:0x54d194FaAe439fc3f8024801B0b9EBc91Ebd39f5"
]
},
{
"timestamp": 1693589723,
"transactionHash": "0xe56b939e6eed472f168be6942f7b08af959d3777eee8b8508f82ef5ade47d528",
"implementations": [
"base:0xd53210eE20948eCFF8B6B8180E29657e0ce8492d"
]
}
],
"description": "Collects the sequencer fees, which are withdrawable to the FeesCollector on L1.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000011#code"
},
{
"name": "OptimismMintableERC20Factory",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000012",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0x6922ac4DbDfEdEa3a1E5535f12c3171f2b964C91"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1716225807,
"transactionHash": "0xf433ab504bcdb633914551cb2410aa89683d05db0062dca76fbe7a48297745c0",
"implementations": [
"base:0x6922ac4DbDfEdEa3a1E5535f12c3171f2b964C91"
]
}
],
"description": "Factory contract to create bridge compliant ERC20 IOU token representations of bridged L1 ERC20 tokens.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000012#code"
},
{
"name": "L1BlockNumber",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000013",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0xC0D3C0d3C0D3c0D3C0d3c0D3C0d3c0d3C0d30013"
]
},
"chain": "base",
"pastUpgrades": [],
"description": "Simple contract that returns the latest L1 block number.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000013#code"
},
{
"name": "L2ERC721Bridge",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000014",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0xC0D3c0d3c0d3c0d3c0D3C0d3C0D3C0D3c0d30014"
]
},
"chain": "base",
"pastUpgrades": [],
"description": "The L2ERC721Bridge contract is the main entry point to deposit or withdraw ERC721 tokens from L2 to L1. This contract can store any token.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000014#code"
},
{
"name": "L1Block",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000015",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1710374401,
"transactionHash": "0x9f2b2d34dfa2cb55cceb9860cade0cb03cfbd7ff1dd07d48b4708b29a46b4a24",
"implementations": [
"base:0x07dbe8500fc591d1852B76feE44d5a05e13097Ff"
]
},
{
"timestamp": 1746806401,
"transactionHash": "0xe992e00998b34075506d2726a274db07a62af6cdd9d527bfda9128114603cfbd",
"implementations": [
"base:0xFf256497D61dcd71a9e9Ff43967C13fdE1F72D12"
]
},
{
"timestamp": 1764691201,
"transactionHash": "0xcd60191626fa3124e7031235c52f0adf6be545ebbd7cf55641bd9dabcbedaf6a",
"implementations": [
"base:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C"
]
}
],
"description": "Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000015#code"
},
{
"name": "L2ToL1MessagePasser",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000016",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0xC0D3C0d3C0d3c0d3C0d3C0D3c0D3c0d3c0D30016"
]
},
"chain": "base",
"pastUpgrades": [],
"description": "Contract used internally by the L2CrossDomainMessenger to send messages to L1, including withdrawals. It can also be used directly as a low-level interface.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000016#code"
},
{
"name": "OptimismMintableERC721Factory",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000017",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0xc0d3C0d3C0d3C0d3C0d3c0d3C0D3C0d3C0D30017"
]
},
"chain": "base",
"pastUpgrades": [],
"description": "Factory contract to create bridge compliant ERC721 IOU token representations of bridged L1 ERC721 tokens.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000017#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000018",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0xC0d3C0D3c0d3C0d3c0d3c0D3C0D3C0d3C0D30018"
]
},
"chain": "base",
"pastUpgrades": [],
"description": "* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias\n * **owner**: Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000018#code"
},
{
"name": "BaseFeeVault",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000019",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0x4E207bDF8aece56de86821f5370b2b993D08C9E9"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1693589723,
"transactionHash": "0xe56b939e6eed472f168be6942f7b08af959d3777eee8b8508f82ef5ade47d528",
"implementations": [
"base:0xB0B77878bBc76E29aBE7584Bda27ae3CE1A9059a"
]
},
{
"timestamp": 1693589723,
"transactionHash": "0xe56b939e6eed472f168be6942f7b08af959d3777eee8b8508f82ef5ade47d528",
"implementations": [
"base:0x4E207bDF8aece56de86821f5370b2b993D08C9E9"
]
}
],
"description": "Collects EIP-1559 base fees, which are withdrawable to the FeesCollector on L1.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000019#code"
},
{
"name": "L1FeeVault",
"isVerified": true,
"address": "base:0x420000000000000000000000000000000000001A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0x0c9034b92351cF8f067379a1fFA4fa35f5AF9dCC"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1693589723,
"transactionHash": "0xe56b939e6eed472f168be6942f7b08af959d3777eee8b8508f82ef5ade47d528",
"implementations": [
"base:0xD36F11023188134d0f4610fF0C6e01c1B11488f8"
]
},
{
"timestamp": 1693589723,
"transactionHash": "0xe56b939e6eed472f168be6942f7b08af959d3777eee8b8508f82ef5ade47d528",
"implementations": [
"base:0x0c9034b92351cF8f067379a1fFA4fa35f5AF9dCC"
]
}
],
"description": "Collects the L1 portion of the L2 transaction fees, which are withdrawable to the FeesCollector on L1.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x420000000000000000000000000000000000001A#code"
},
{
"name": "SchemaRegistry",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000020",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0x75505a97BD334E7BD3C476893285569C4136Fa0F"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1694184179,
"transactionHash": "0x582b0cae963bb1ae3f7ec048fbc359b6dbff0dbfdcc033f301ff58c097755a27",
"implementations": [
"base:0x75505a97BD334E7BD3C476893285569C4136Fa0F"
]
}
],
"description": "Contracts to register schemas for the Ethereum Attestation Service (EAS).\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000020#code"
},
{
"name": "EAS",
"isVerified": true,
"address": "base:0x4200000000000000000000000000000000000021",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x4200000000000000000000000000000000000018"
],
"implementations": [
"base:0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1694184179,
"transactionHash": "0x582b0cae963bb1ae3f7ec048fbc359b6dbff0dbfdcc033f301ff58c097755a27",
"implementations": [
"base:0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"
]
}
],
"description": "Contract containing the main logic for the Ethereum Attestation Service (EAS).\n* Roles:\n * **admin**: ProxyAdmin; ultimately Base Governance Multisig - L2 Alias",
"upgradableBy": [
{
"id": "Base-Governance-Multisig---L2-Alias",
"name": "Base Governance Multisig - L2 Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x4200000000000000000000000000000000000021#code"
}
]
},
"escrows": [
{
"address": "0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",
"sinceTimestamp": 1686793895,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x66d94eE8F529b683ED6013729784e8bb44697A64"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1686793919,
"transactionHash": "0xad5179152fdbe7ca60a41fd5a490add905e567c59e6630a7856a379759939a8e",
"implementations": [
"eth:0x5FB30336A8d0841cf15d452afA297cB6D10877D7"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1719592367,
"transactionHash": "0xb690dad4829ca8b07b6944d7e937d7d36048ea29a9278cbae012ab4a66aac817",
"implementations": [
"eth:0x2D778797049FE9259d947D1ED8e5442226dFB589"
]
},
{
"timestamp": 1730302883,
"transactionHash": "0x2476bda1e2cc0f2a501876532cacf1d267fc9be8f07271b75e512e3b6c927639",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1730302883,
"transactionHash": "0x2476bda1e2cc0f2a501876532cacf1d267fc9be8f07271b75e512e3b6c927639",
"implementations": [
"eth:0xe2F826324b2faf99E513D16D266c3F80aE87832B"
]
},
{
"timestamp": 1744214879,
"transactionHash": "0x0351fede2eca409c36da1996944ef02aabaa989637ca1bfacd2f3f07547d1134",
"implementations": [
"eth:0x2D7e764a0D9919e16983a46595CfA81fc34fa7Cd"
]
},
{
"timestamp": 1745512871,
"transactionHash": "0xfd06079372fea0ef0c8907b71931fc6907cc88c39f0dc036d3ebf267686fb6da",
"implementations": [
"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4"
]
},
{
"timestamp": 1759862579,
"transactionHash": "0x98ef4f3ecc10996b184385bd4ca5b877dce0a3b527d88f4ee0cfe296cf004a38",
"implementations": [
"eth:0x381E729FF983FA4BCEd820e7b922d79bF653B999"
]
},
{
"timestamp": 1764604703,
"transactionHash": "0x9b9aa2d8e857e1a28e55b124e931eac706b3ae04c1b33ba949f0366359860993",
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
},
{
"timestamp": 1770742199,
"transactionHash": "0x7407256ae44170125b2d82c71f0d03cb6ade3c2268e8cd33dcb07fe259fbfd0b",
"implementations": [
"eth:0x97cEbbf8959e2A5476fbe9B98A21806Ec234609B"
]
},
{
"timestamp": 1779825599,
"transactionHash": "0x75b1c9b2090ba2b311d6be08c319340b87dc1aabfae2505d126e7a0f1fc6b11c",
"implementations": [
"eth:0x66d94eE8F529b683ED6013729784e8bb44697A64"
]
}
],
"description": "Main entry point for users depositing ETH.",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x49048044D57e1C92A77f79988d21Fa8fAF74E97e#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x3154Cf16ccdb4C6d922629664174b904d80F2C35",
"sinceTimestamp": 1686793895,
"tokens": "*",
"excludedTokens": [
"SolvBTC",
"SolvBTC.BBN",
"rsETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x3154Cf16ccdb4C6d922629664174b904d80F2C35",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0475cBCAebd9CE8AfA5025828d5b98DFb67E059E"
],
"implementations": [
"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A"
]
},
"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/0x3154Cf16ccdb4C6d922629664174b904d80F2C35#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x9de443AdC5A411E83F1878Ef24C3F52C61571e72",
"sinceTimestamp": 1695935315,
"tokens": [
"wstETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x9de443AdC5A411E83F1878Ef24C3F52C61571e72",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c"
],
"implementations": [
"eth:0x313819736457910aC1Dd21a712a37f3d7595645A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1695935315,
"transactionHash": "0xac8580fdfdbb35af667cf9c5c5fa9d10c793486d10fcbea538efd9386b04c106",
"implementations": [
"eth:0x313819736457910aC1Dd21a712a37f3d7595645A"
]
}
],
"description": "wstETH Vault for custom wstETH Gateway. Fully controlled by Lido governance.",
"url": "https://etherscan.io/address/0x9de443AdC5A411E83F1878Ef24C3F52C61571e72#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"programHashes": [
{
"title": "Aggregation program of Base AggregateVerifier",
"programUrl": "https://github.com/base/base/tree/09a973afe8467919370b90bc87ac1e7fde12c43b/crates/proof/succinct/programs/aggregation",
"description": "Aggregates range proofs of correct execution for several consecutive sub-ranges of Base L2 blocks.",
"proverSystemProject": "sp1hypercube",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install `just`: `brew install just` (or `cargo install just`).\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`.\n3. Install docker https://docs.docker.com/get-started/get-docker/\n4. Install `lld` (required by the repo's `.cargo/config.toml`)\n\nVerify:\n\n1. Checkout the specific commit in [base/base](https://github.com/base/base) repo: `git checkout 09a973afe8467919370b90bc87ac1e7fde12c43b`. This commit lives on the untagged `mw2000/zk-plonk-update` branch.\n2. Make sure docker is running: `docker ps`.\n3. From the repo root: `just succinct vkeys` to build the range and aggregation SP1 ELFs (reproducible docker build, SP1 toolchain tag `v6.3.0` pinned in `etc/just/succinct.just`) and print their verification key hashes.",
"hash": "0x00a147f0c69da81e3d530cca91310f9605f980dc155726bb33fbde0e493a3836"
},
{
"title": "Range program of Base AggregateVerifier",
"programUrl": "https://github.com/base/base/tree/09a973afe8467919370b90bc87ac1e7fde12c43b/crates/proof/succinct/programs/range/ethereum",
"description": "Proves correct state transition function of the Base rollup over a sub-range of L2 blocks.",
"proverSystemProject": "sp1hypercube",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install `just`: `brew install just` (or `cargo install just`).\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`.\n3. Install docker https://docs.docker.com/get-started/get-docker/\n4. Install `lld` (required by the repo's `.cargo/config.toml`)\n\nVerify:\n\n1. Checkout the specific commit in [base/base](https://github.com/base/base) repo: `git checkout 09a973afe8467919370b90bc87ac1e7fde12c43b`. This commit lives on the untagged `mw2000/zk-plonk-update` branch.\n2. Make sure docker is running: `docker ps`.\n3. From the repo root: `just succinct vkeys` to build the range and aggregation SP1 ELFs (reproducible docker build, SP1 toolchain tag `v6.3.0` pinned in `etc/just/succinct.just`) and print their verification key hashes.",
"hash": "0x5fd09a2f4338ca7063bc37b02f9411645d0ef2784fe644cc71ab48ae64200beb"
},
{
"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": "successful",
"verificationSteps": "Even though the program is compiled in docker for reproducibility reasons, it gives the correct image ID only on linux OS. Steps below were done on Ubuntu 22.04 OS.\n\nPrepare:\n\n1. Install rust: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`, then `. .cargo/env`.\n2. Install dependency libs `sudo apt-get install build-essential`.\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/).\n4. Install the risc zero toolkit `curl -L https://risczero.com/install | bash`, then `rzup install`.\n\nVerify:\n\n1. Checkout the correct branch in [risc0-ethereum](https://github.com/risc0/risc0-ethereum/tree/main) repo: `git checkout v3.0.1` . Commit hash should be `365e7b2db4f620fa256580c27558d2623362b9ae `.\n2. Make sure docker is running by running `docker ps `.\n3. Set env var to use Risc Zero docker build: `export RISC0_USE_DOCKER=1`.\n4. From the repo root dir: `cargo risczero build --manifest-path crates/aggregation/guest/set-builder/Cargo.toml` to build elf binaries from sources. This command should output correct ImageID.",
"hash": "0x70909b25db0db00f1d4b4016aeb876f53568a3e5a8e6397cb562d79947a02cc9"
},
{
"title": "TEE enclave image hash of Base client",
"programUrl": "https://github.com/base/base/tree/v1.1.1/crates/proof/tee/nitro-enclave",
"description": "TEE image hash of Base L2 node program. AWS Nitro Enclave attestations guarantee that exactly this program was run within a TEE.",
"verificationStatus": "successful",
"verificationSteps": "Regeneration steps below require Linux OS, they will produce a different hash on MacOS.\n\nPrepare:\n\n1. Install docker \n2. Install `just` version `>=1.31.0`: \n\nVerify:\n\n1. Checkout the correct tag in [base/base](https://github.com/base/base) repo: `git checkout v1.1.1`. Commit hash should be `01e732cdbae0c624d652da9e608d7d3fe0f9c74b`.\n2. Make sure docker is running: `docker ps`.\n3. From the repo root: `just tee build-eif` to build the TEE image in a docker container.\n4. Extract `PCR0` from the build EIF: `just tee describe-eif`\n5. Compute image hash as keccak256 of the PCR0: `cast keccak \"0x\"`, where `PCR0_hex` is taken from the output of the previous step.",
"hash": "0x58557c709e93357a135041297107aecc4bc6ba616509098a4aa8dbef774d212a"
},
{
"title": "AWS Nitro TEE attestation verifier for Base",
"programUrl": "https://github.com/base/base/tree/v0.9.0/crates/proof/tee/nitro-attestation-prover",
"description": "RISC Zero guest program that verifies an AWS Nitro TEE Enclave attestation document.",
"proverSystemProject": "risc0",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install docker https://docs.docker.com/get-started/get-docker/ and make sure it's running: `docker ps`.\n\nVerify:\n\n1. Checkout the correct tag in [base/base](https://github.com/base/base) repo: `git checkout v0.9.0`. Commit hash should be `0276bb4eb9b3ee37703bd818c8df71e3d31594fb`.\n2. From the repo root, build the builder image (once): `docker build --platform=linux/amd64 -t nitro-guest-builder crates/proof/tee/nitro-attestation-prover/guest`.\n3. From the repo root, build the guest and print the image ID: `docker run --rm --platform=linux/amd64 -v \"$(pwd)\":/build/base nitro-guest-builder verify`.\n4. Compare the printed `Image ID` against this hash.",
"hash": "0x20141665fe40bce01fbcfa0a95c8a1bd750eadbe3f24e06a75571e6fd7a9dc11"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. Upgrades must be approved by 2 parties: the Base Coordinator Multisig and the Base Security Council. There is no delay on upgrades."
}
],
"zkVerifiers": [
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"eth:0xf70aBAb028Eb6F4100A24B203E113D94E87DE93C",
"eth:0x2a098988600d87650Fb061FfAff08B97149Fa84D",
"eth:0x20ff7C2Cf391a5F096A2Cc181cb41916680f8E97",
"eth:0xafB31f5b70623CDF4b20Ada3f7230916A5A79df9",
"eth:0x54aCE3ED46529B4d4F3770C8Bad5dDC48717B9bF"
]
}
+3 -3
+3 -3
{
"addresses": {
"arbitrum": [
{
"name": "ArbitrumBlobstream",
"isVerified": true,
"address": "arb1:0xA83ca7775Bc2889825BcDeDfFa5b758cf69e8794",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x738a9b55304f9fcF776B3BA285e50c0f9eF77997"
],
"implementations": [
"arb1:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1710651080,
"transactionHash": "0x58059198a17ae1d8dd73b4d0f0ce7169f4e55d901a8fea59b4ef12d005a41f0a",
"implementations": [
"arb1:0x7C3A9b466FF5c02582fa32d4aD1b2Cb431fB7c9b"
]
},
{
"timestamp": 1710724776,
"transactionHash": "0xf45e346ddbedef1ea3f828954c979adcb205b4b1c0ca72e49e7e2ef5b1c43192",
"implementations": [
"arb1:0xfb19439fBa9f16aA720be6bE0e53465a9733C964"
]
},
{
"timestamp": 1724698402,
"transactionHash": "0x746e21628ccec4d5b4da96595f852a6398defcc360cb9f13aa2d84ebe4e7403f",
"implementations": [
"arb1:0x47fd660D5252Bd6F9D2c71507E46aa1d6e957c23"
]
},
{
"timestamp": 1733166545,
"transactionHash": "0x07dbff15e24a8c124a927a2881cb4d471ace180488a56a56b43b47d1da68a130",
"implementations": [
"arb1:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
}
],
"description": "The Blobstream DA bridge. This contract is used to bridge data commitments between Celestia and the destination chain. It specifies relayers that commit block ranges, but due to the lack of emitted events, there may be more relayers than are presented here.\n* Roles:\n * **admin**: BlobstreamMultisig\n * **guardians**: BlobstreamMultisig\n * **relayers**: EOA 1, EOA 2",
"upgradableBy": [
{
"name": "BlobstreamMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xA83ca7775Bc2889825BcDeDfFa5b758cf69e8794#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGatewayArb",
"isVerified": true,
"address": "arb1:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
],
"base": [
{
"name": "BaseBlobstream",
"isVerified": true,
"address": "base:0xA83ca7775Bc2889825BcDeDfFa5b758cf69e8794",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x6ABa5D2084362038C9640a8851ff3b8BCbA81Ca6"
],
"implementations": [
"base:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1710651207,
"transactionHash": "0x4549f6dd026054361c6ec3372f446d9a594205d6a2681001f4d3567ef55d8d73",
"implementations": [
"base:0x7C3A9b466FF5c02582fa32d4aD1b2Cb431fB7c9b"
]
},
{
"timestamp": 1710724833,
"transactionHash": "0xcc77a9f79cc2dc869a5b2afcb9abe14014680e03797e00244a4580deb278eee8",
"implementations": [
"base:0xfb19439fBa9f16aA720be6bE0e53465a9733C964"
]
},
{
"timestamp": 1724698369,
"transactionHash": "0xd2efcdcc2ae2c8725a9d68bcce93edf7f4e2c5326ec75e9aea9cbdb6dfc7c6d3",
"implementations": [
"base:0x47fd660D5252Bd6F9D2c71507E46aa1d6e957c23"
]
},
{
"timestamp": 1733166563,
"transactionHash": "0x972e1b10b3fd4c52bbd75c6215f12438b15229c9f609ad42273eb3985d8e4767",
"implementations": [
"base:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
}
],
"description": "The Blobstream DA bridge. This contract is used to bridge data commitments between Celestia and the destination chain. It specifies relayers that commit block ranges, but due to the lack of emitted events, there may be more relayers than are presented here.\n* Roles:\n * **admin**: BlobstreamMultisig\n * **guardians**: BlobstreamMultisig\n * **relayers**: EOA 3, EOA 4",
"upgradableBy": [
{
"name": "BlobstreamMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0xA83ca7775Bc2889825BcDeDfFa5b758cf69e8794#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "base:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "base",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGatewayBase",
"isVerified": true,
"address": "base:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "base",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "base:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "base",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "base:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "base",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://basescan.org/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
],
"ethereum": [
{
"name": "EthereumBlobstream",
"isVerified": true,
"address": "eth:0x7Cf3876F681Dbb6EdA8f6FfC45D66B996Df08fAe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8bF34D8df1eF0A8A7f27fC587202848E528018E6"
],
"implementations": [
"eth:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717615307,
"transactionHash": "0xf156e666fc403369415601ab683befc8e177f698b69a4c4c313706127ec18a86",
"implementations": [
"eth:0x41a87C543EBcbD93706CF5260AD057D9eCBA1caE"
]
},
{
"timestamp": 1724698523,
"transactionHash": "0x2cbc956737b46bd304d04f3051a65e311686d35792c54c67030d0c5417e76508",
"implementations": [
"eth:0x47fd660D5252Bd6F9D2c71507E46aa1d6e957c23"
]
},
{
"timestamp": 1733166527,
"transactionHash": "0xcc2a77da632e84e5fb17e863ec744d5f0921b70c191487179dd9e28ab855a3be",
"implementations": [
"eth:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
}
],
"description": "The Blobstream DA bridge. This contract is used to bridge data commitments between Celestia and the destination chain. It specifies relayers that commit block ranges, but due to the lack of emitted events, there may be more relayers than are presented here.\n* Roles:\n * **admin**: BlobstreamMultisig\n * **guardians**: BlobstreamMultisig\n * **relayers**: EOA 5, EOA 6",
"upgradableBy": [
{
"name": "BlobstreamMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7Cf3876F681Dbb6EdA8f6FfC45D66B996Df08fAe#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"programHashes": [
{
"title": "Celestia Blobstream DA bridge program",
"description": "ZK-friendly implementation of Celestia Blobstream DA bridge that proves that enough Celestia validators have confirmed a given data root.",
"programUrl": "https://github.com/succinctlabs/sp1-blobstream/tree/78a9d3419339a8c60bf51e1e3241f242bc44d434/program",
"proverSystemProject": "sp1hypercube",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct commit hash in [sp1-blobstream](https://github.com/succinctlabs/sp1-blobstream/tree/main) repo: `git checkout 78a9d3419339a8c60bf51e1e3241f242bc44d434`.\n2. Make sure docker is running by running `docker ps`.\n3. From the `sp1-blobstream/program` dir run: `cargo prove build --docker --tag v6.1.0 --elf-name blobstream-elf --output-directory ../elf` to build the blobstream program elf within a docker container and place it in `sp1-blobstream/elf`.\n4. From `sp1-blobstream` run: `cargo run --bin vkey --release` to print the vkey of the `blobstream-elf` program.",
"hash": "0x00b451fcd696cd0a4025e30bfed96343b1767ac6523a360fee1183f9e2e20745"
}
],
"risks": [
{
"category": "Funds can be lost if",
"text": "the bridge contract or its dependencies receive a malicious code upgrade. There is no delay on code upgrades."
},
{
"category": "Funds can be frozen if",
"text": "the bridge contract is frozen by the Guardian (BlobstreamMultisig)."
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+60 -60
+60 -60
{
"addresses": {
"ethereum": [
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0x89E31965D844a309231B1f17759Ccaf1b7c09861",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0xe5Dc3C0a3489b81A6F3AE3bB49bF9CcBFB85a3dB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0x5852f5888f0563ac1d7e3bf2b566e63fa981394e24b9753a41416a2ba6bdbfbc",
"implementations": [
"eth:0x7b5a84F818B6fC3F079EE87c214F369062188D2A"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x911EA44d22EB903515378625dA3a0E09D2E1B074"
]
},
{
"timestamp": 1751884031,
"transactionHash": "0xa9816c6dcbbe126e3b5c56f26ecfeebcb2dc03ab78535a7d5ed2bcdeea7ccf39",
"implementations": [
"eth:0x9c61C5a8FF9408B83ac92571278550097A9d2BB5"
]
},
{
"timestamp": 1774940723,
"transactionHash": "0x66a97a8a6934d37b3ed077e788fb02fbce53e02ad7d95d3159ba6347ede395c8",
"implementations": [
"eth:0xa9c79551eA70D311f5153a27Cba12396e5128b9c"
]
},
{
"timestamp": 1774940891,
"transactionHash": "0xce8f5d953104dbe1a793fdcf76a16290f1c8765f87fcef729c2ad7e2e95a07dc",
"implementations": [
"eth:0xe5Dc3C0a3489b81A6F3AE3bB49bF9CcBFB85a3dB"
]
}
],
"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 CeloProxyAdminOwner\n * **batcherHash**: EOA 1\n * **owner**: Celo cLabs Multisig",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x89E31965D844a309231B1f17759Ccaf1b7c09861#code"
},
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0xc5c5D157928BDBD2ACf6d0777626b6C75a9EAEDC",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x2c431080Fc733E259654f3b91E39468d9A85Ac9b"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879583,
"transactionHash": "0x7411775e32485632423395def2883f19e3a11c66c88c57f08d9975a927e2b166",
"implementations": [
"eth:0x6322C2f2D6a4305Fc033754d486A5A067Ee5F9b1"
]
},
{
"timestamp": 1741879583,
"transactionHash": "0x381b707419ae79c88d6fa34ec819396c80ba54f489d47d10ff85c4285b64e447",
"implementations": [
"eth:0x3Da872782f9fB696fD72Af2ec9313a56bDA6f06d"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0xBeD463769920dAc19a7E2aDf47B6C6Bb6480bD97"
]
},
{
"timestamp": 1751884031,
"transactionHash": "0xa9816c6dcbbe126e3b5c56f26ecfeebcb2dc03ab78535a7d5ed2bcdeea7ccf39",
"implementations": [
"eth:0x215A5fF85308A72A772F09B520dA71D3520e9aC7"
]
},
{
"timestamp": 1774940723,
"transactionHash": "0x66a97a8a6934d37b3ed077e788fb02fbce53e02ad7d95d3159ba6347ede395c8",
"implementations": [
"eth:0x661DfA933f77148Dc8d84b06646a2868D7ae5DeB"
]
},
{
"timestamp": 1774940891,
"transactionHash": "0xce8f5d953104dbe1a793fdcf76a16290f1c8765f87fcef729c2ad7e2e95a07dc",
"implementations": [
"eth:0x2c431080Fc733E259654f3b91E39468d9A85Ac9b"
]
}
],
"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 42.\n* Roles:\n * **admin**: ProxyAdmin; ultimately CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc5c5D157928BDBD2ACf6d0777626b6C75a9EAEDC#code"
},
{
"name": "DisputeGameFactory",
"isVerified": true,
"address": "eth:0xFbAC162162f4009Bb007C6DeBC36B1dAC10aF683",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0xb42846aca12a846645e69e61c48c9b8de7078117c710ff124b04c18f735fbc5e",
"implementations": [
"eth:0xe8b013bEE7Bd603e2f0B4825638559d645A4C4CB"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0"
]
},
{
"timestamp": 1774940723,
"transactionHash": "0x66a97a8a6934d37b3ed077e788fb02fbce53e02ad7d95d3159ba6347ede395c8",
"implementations": [
"eth:0x33D1e8571a85a538ed3D5A4d88f46C112383439D"
]
},
{
"timestamp": 1774940891,
"transactionHash": "0xce8f5d953104dbe1a793fdcf76a16290f1c8765f87fcef729c2ad7e2e95a07dc",
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
}
],
"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 CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFbAC162162f4009Bb007C6DeBC36B1dAC10aF683#code"
},
{
"name": "SuperchainConfig",
"isVerified": true,
"address": "eth:0x95703e0982140D16f8ebA6d158FccEde42f04a4C",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x543bA4AADBAb8f9025686Bd03993043599c6fB04"
],
"implementations": [
"eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1705954799,
"transactionHash": "0x8ba0e42b89cde22310b644ed30fd44e4a348619a165a54c908e7dc341e9bbd0c",
"implementations": [
"eth:0x53c165169401764778F780a69701385eb0FF19B7"
]
},
{
"timestamp": 1718044163,
"transactionHash": "0xe361c0d4ae3aebc94b3f281ee372fbb1cbdb0c33ca8b1b35e7f3b009b2fcbdb0",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1718044163,
"transactionHash": "0xe361c0d4ae3aebc94b3f281ee372fbb1cbdb0c33ca8b1b35e7f3b009b2fcbdb0",
"implementations": [
"eth:0x53c165169401764778F780a69701385eb0FF19B7"
]
},
{
"timestamp": 1743612623,
"transactionHash": "0x5f3530e593bbac37c61dc5b7755b6a40c06c20c1a3a1b13fca5b7d00cde65c29",
"implementations": [
"eth:0x4da82a327773965b8d4D85Fa3dB8249b387458E7"
]
},
{
"timestamp": 1753379243,
"transactionHash": "0x46acdce174c8d83ebe2f208d8c76c867e75617483d64c3e407f69ae2f9868716",
"implementations": [
"eth:0xCe28685EB204186b557133766eCA00334EB441E4"
]
},
{
"timestamp": 1764092795,
"transactionHash": "0xf556934cb4de1ab40a4cfba17856cd601cbc8b875b96a9ccd8ee32bcd363abf5",
"implementations": [
"eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957"
]
},
{
"timestamp": 1782428747,
"transactionHash": "0xbfdac60c9687a2e469159bf2458e73de2915a0a5eb53c4991a7ecde2b1fb3f15",
"implementations": [
"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8"
]
},
{
"timestamp": 1782428747,
"transactionHash": "0xbfdac60c9687a2e469159bf2458e73de2915a0a5eb53c4991a7ecde2b1fb3f15",
"implementations": [
"eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550"
]
}
],
"description": "Used to manage global configuration values for multiple OP Chains within a single Superchain network. The SuperchainConfig contract manages individual 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 3 months if left untouched.\n* Roles:\n * **admin**: SuperchainProxyAdmin; ultimately SuperchainProxyAdminOwner\n * **guardian**: Optimism Guardian Multisig; ultimately OpFoundationUpgradeSafe, Optimism EOA 1, Optimism Security Council, SaferSafes",
"upgradableBy": [
{
"name": "SuperchainProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x95703e0982140D16f8ebA6d158FccEde42f04a4C#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0x1AC1181fc4e4F877963680587AEAa2C90D7EbB95",
"upgradeability": {
"proxyType": "resolved delegate proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0xE45D2d835d0b2D3C7f4fEe1eaa19A068d0ba8A88"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0x142804c112b7513d03962454fab1f12292cf4b4833ca1701f5122a7212476c77",
"implementations": [
"eth:0xDE47b113E4157ed15fA46c5572562aC11146c5eA"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x3d5a67747dE7E09b0d71F5d782c8b45f6307B9Fd"
]
},
{
"timestamp": 1751884031,
"transactionHash": "0xa9816c6dcbbe126e3b5c56f26ecfeebcb2dc03ab78535a7d5ed2bcdeea7ccf39",
"implementations": [
"eth:0x807124F75FF2120b2f26D7e6f9e39C03ee9DE212"
]
},
{
"timestamp": 1774940723,
"transactionHash": "0x66a97a8a6934d37b3ed077e788fb02fbce53e02ad7d95d3159ba6347ede395c8",
"implementations": [
"eth:0xA183A771B6c5F6e88cd351bBDC40E1ECD4521Cad"
]
},
{
"timestamp": 1774940891,
"transactionHash": "0xce8f5d953104dbe1a793fdcf76a16290f1c8765f87fcef729c2ad7e2e95a07dc",
"implementations": [
"eth:0xE45D2d835d0b2D3C7f4fEe1eaa19A068d0ba8A88"
]
}
],
"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 CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1AC1181fc4e4F877963680587AEAa2C90D7EbB95#code"
},
{
"name": "L1ERC721Bridge",
"isVerified": true,
"address": "eth:0x3C519816C5BdC0a0199147594F83feD4F5847f13",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0x088ae685dbdd16320c9d3f99e7feea6c823156f69ab0da7dc48ce6c38498c55e",
"implementations": [
"eth:0xad5D111e961A5E451C8172034115bcc0551b6551"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x276d3730f219f7ec22274f7263180b8452B46d47"
]
},
{
"timestamp": 1751884031,
"transactionHash": "0xa9816c6dcbbe126e3b5c56f26ecfeebcb2dc03ab78535a7d5ed2bcdeea7ccf39",
"implementations": [
"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013"
]
},
{
"timestamp": 1774940723,
"transactionHash": "0x66a97a8a6934d37b3ed077e788fb02fbce53e02ad7d95d3159ba6347ede395c8",
"implementations": [
"eth:0x7f1d12fB2911EB095278085f721e644C1f675696"
]
},
{
"timestamp": 1774940891,
"transactionHash": "0xce8f5d953104dbe1a793fdcf76a16290f1c8765f87fcef729c2ad7e2e95a07dc",
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
}
],
"description": "Used to bridge ERC-721 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3C519816C5BdC0a0199147594F83feD4F5847f13#code"
},
{
"name": "L1StandardBridge",
"isVerified": true,
"address": "eth:0x9C4955b92F34148dbcfDCD82e9c9eCe5CF2badfe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0xfA707F45A23370d9154AF4457401274E38FA2d8A"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "The main entry point to deposit ERC20 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9C4955b92F34148dbcfDCD82e9c9eCe5CF2badfe#code"
},
{
"name": "LivenessModule",
"isVerified": true,
"address": "eth:0x0454092516c9A4d636d3CAfA1e82161376C8a748",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "used to remove members inactive for 3mo 8d while making sure that the threshold remains above 75%. If the number of members falls below 8, the OpFoundationUpgradeSafe takes ownership of the multisig\n* Roles:\n * **fallbackOwner**: OpFoundationUpgradeSafe if the number of Optimism Security Council members falls below 8\n * **livenessGuard**: LivenessGuard",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0454092516c9A4d636d3CAfA1e82161376C8a748#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "Celo native asset Token",
"isVerified": true,
"address": "eth:0x057898f3C43F129a17517B9056D23851F124b19f",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x64fE3f9201E6534D2d744c7C57D134E709131a6e"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879583,
"transactionHash": "0xe145ca9f0fea9f384f7abad906b81717a0d407de37718cb9036678937c44d9f0",
"implementations": [
"eth:0x64fE3f9201E6534D2d744c7C57D134E709131a6e"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin; ultimately CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x057898f3C43F129a17517B9056D23851F124b19f#code"
},
{
"name": "PreimageOracle",
"isVerified": true,
"address": "eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
},
{
"name": "CeloSuperchainConfig",
"isVerified": true,
"address": "eth:0x25035d2233d099f0BA710ca1e5a3834842870C66",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0xA59b2eBf8231f0e31508Bd18e9185BeB5Ab1C038"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1774940723,
"transactionHash": "0x66a97a8a6934d37b3ed077e788fb02fbce53e02ad7d95d3159ba6347ede395c8",
"implementations": [
"eth:0xA59b2eBf8231f0e31508Bd18e9185BeB5Ab1C038"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin; ultimately CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x25035d2233d099f0BA710ca1e5a3834842870C66#code"
},
{
"name": "FaultDisputeGame",
"isVerified": true,
"address": "eth:0x25Bd434Aa96EE31D6661c89CF4290281f1ed856F",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Logic of the dispute game. When a state root is proposed, a dispute game contract is deployed. Challengers can use such contracts to challenge the proposed state root.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x25Bd434Aa96EE31D6661c89CF4290281f1ed856F#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SuperchainProxyAdmin",
"isVerified": true,
"address": "eth:0x543bA4AADBAb8f9025686Bd03993043599c6fB04",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: SuperchainProxyAdminOwner",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x543bA4AADBAb8f9025686Bd03993043599c6fB04#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0x6463dEE3828677F6270d83d45408044fc5eDB908",
"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/0x6463dEE3828677F6270d83d45408044fc5eDB908#code"
},
{
"name": "OptimismMintableERC20Factory",
"isVerified": true,
"address": "eth:0x6f0E4f1EB98A52EfaCF7BE11d48B9d9d6510A906",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x149BD036f5F57D0FF4b5F102C9d46E3c0EB2C016"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0x0297053983c066511596ec9542fd1d217b46039efc3d729f4e4468ecfff47b6b",
"implementations": [
"eth:0x0B3004b843dA84FE5D4C46AeB5E80F826e5CD69A"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x5493f4677A186f64805fe7317D6993ba4863988F"
]
},
{
"timestamp": 1774940891,
"transactionHash": "0xce8f5d953104dbe1a793fdcf76a16290f1c8765f87fcef729c2ad7e2e95a07dc",
"implementations": [
"eth:0x149BD036f5F57D0FF4b5F102C9d46E3c0EB2C016"
]
}
],
"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 CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6f0E4f1EB98A52EfaCF7BE11d48B9d9d6510A906#code"
},
{
"name": "DeputyPauseModule",
"isVerified": true,
"address": "eth:0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Allows 0x2fA150379bF32b6d79Eeb4ff9bD280E76049a87c, called the deputy pauser, to act on behalf of the OpFoundationUpgradeSafe if set as its Safe module.\n* Roles:\n * **deputy**: Optimism EOA 1 though restricted to the SuperchainConfig's `pause()` function",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x783A434532Ee94667979213af1711505E8bFE374",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: CeloProxyAdminOwner",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x783A434532Ee94667979213af1711505E8bFE374#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0x8fE58d2168b5412Cf1Bd212cE6137f8b7300222d",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1774940723,
"transactionHash": "0x66a97a8a6934d37b3ed077e788fb02fbce53e02ad7d95d3159ba6347ede395c8",
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
}
],
"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 OPSuccinctFaultDisputeGame. Variant for chains using OPSuccinct (SP1) games instead of Cannon, which omits Cannon-specific cross-contract fields (vm, oracle, weth, challengePeriod, absolutePrestate from game).\n* Roles:\n * **admin**: ProxyAdmin; ultimately CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8fE58d2168b5412Cf1Bd212cE6137f8b7300222d#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0x91FA5B653aFe81A79890A93ad83768A04cc011b4",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0xb86a464CC743440FddAa43900e05318ef4818b29"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1774940723,
"transactionHash": "0x66a97a8a6934d37b3ed077e788fb02fbce53e02ad7d95d3159ba6347ede395c8",
"implementations": [
"eth:0xb86a464CC743440FddAa43900e05318ef4818b29"
]
}
],
"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 CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x91FA5B653aFe81A79890A93ad83768A04cc011b4#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0xa83a2E8595b602aD98C928E9cD123c0E05C84FD9",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa83a2E8595b602aD98C928E9cD123c0E05C84FD9#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0xC700d16428cF5Bfa71D91E66fA54Fc11A73f2552",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0xb86a464CC743440FddAa43900e05318ef4818b29"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1774940723,
"transactionHash": "0x66a97a8a6934d37b3ed077e788fb02fbce53e02ad7d95d3159ba6347ede395c8",
"implementations": [
"eth:0xb86a464CC743440FddAa43900e05318ef4818b29"
]
}
],
"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 CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC700d16428cF5Bfa71D91E66fA54Fc11A73f2552#code"
},
{
"name": "AccessManager",
"isVerified": true,
"address": "eth:0xF59a19c5578291cB7fd22618D16281aDf76f2816",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract managing access control for proposers and challengers in OPSuccinct.\n* Roles:\n * **challengers**: EOA 3, EOA 4, EOA 5, EOA 6, EOA 8, EOA 9\n * **owner**: Celo cLabs Multisig\n * **proposers**: EOA 2, EOA 7",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF59a19c5578291cB7fd22618D16281aDf76f2816#code"
},
{
"name": "OPSuccinctFaultDisputeGame",
"isVerified": true,
"address": "eth:0xfF1caC738a5263736AF258e4b3D6a4970C6351FF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Logic of the dispute game. When a state root is proposed, a dispute game contract is deployed. Challengers can use such contracts to challenge the proposed state root.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xfF1caC738a5263736AF258e4b3D6a4970C6351FF#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0xc5c5D157928BDBD2ACf6d0777626b6C75a9EAEDC",
"sinceTimestamp": 1741879559,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xc5c5D157928BDBD2ACf6d0777626b6C75a9EAEDC",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x2c431080Fc733E259654f3b91E39468d9A85Ac9b"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879583,
"transactionHash": "0x7411775e32485632423395def2883f19e3a11c66c88c57f08d9975a927e2b166",
"implementations": [
"eth:0x6322C2f2D6a4305Fc033754d486A5A067Ee5F9b1"
]
},
{
"timestamp": 1741879583,
"transactionHash": "0x381b707419ae79c88d6fa34ec819396c80ba54f489d47d10ff85c4285b64e447",
"implementations": [
"eth:0x3Da872782f9fB696fD72Af2ec9313a56bDA6f06d"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0xBeD463769920dAc19a7E2aDf47B6C6Bb6480bD97"
]
},
{
"timestamp": 1751884031,
"transactionHash": "0xa9816c6dcbbe126e3b5c56f26ecfeebcb2dc03ab78535a7d5ed2bcdeea7ccf39",
"implementations": [
"eth:0x215A5fF85308A72A772F09B520dA71D3520e9aC7"
]
},
{
"timestamp": 1774940723,
"transactionHash": "0x66a97a8a6934d37b3ed077e788fb02fbce53e02ad7d95d3159ba6347ede395c8",
"implementations": [
"eth:0x661DfA933f77148Dc8d84b06646a2868D7ae5DeB"
]
},
{
"timestamp": 1774940891,
"transactionHash": "0xce8f5d953104dbe1a793fdcf76a16290f1c8765f87fcef729c2ad7e2e95a07dc",
"implementations": [
"eth:0x2c431080Fc733E259654f3b91E39468d9A85Ac9b"
]
}
],
"description": "Main entry point for users depositing ETH.",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0xc5c5D157928BDBD2ACf6d0777626b6C75a9EAEDC#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x9C4955b92F34148dbcfDCD82e9c9eCe5CF2badfe",
"sinceTimestamp": 1741879559,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x9C4955b92F34148dbcfDCD82e9c9eCe5CF2badfe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0xfA707F45A23370d9154AF4457401274E38FA2d8A"
]
},
"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/0x9C4955b92F34148dbcfDCD82e9c9eCe5CF2badfe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"programHashes": [
{
"title": "Aggregation program of OP Succinct FDP v2.1.0",
"description": "Aggregates proofs of correct execution for several consecutive block ranges of OP L2 client in fault dispute proof mode. Data availability layer is set to EigenDA.",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/celo-org/op-succinct/tree/celo/v2.1.0/programs/aggregation",
"verificationStatus": "successful",
"verificationSteps": "\nPrepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [celo-org/op-succinct](https://github.com/celo-org/op-succinct) repo: `git checkout celo/v2.1.0`. Commit hash should be `00ac9f41a19917be8add5f7b60bef5be93b5b2b7`.\n2. Make sure docker is running by running `docker ps`\n3. Reproducibly rebuild the program ELF from source: from `programs/aggregation` run `cargo prove build --elf-name aggregation-elf --docker --tag v6.1.0 --output-directory ../../elf`. The rebuilt ELF is byte-identical to the one committed in the release.\n4. From the `op-succinct` dir run `cargo run --bin config --release --features eigenda` to print the verification key hashes.\n ",
"hash": "0x00b04647b693a1024f3f6524643693ac5445fbabe5cdfcd3b2d3d468274d4be4"
},
{
"title": "Range program of OP Succinct FDP v2.1.0",
"description": "Proves correct state transition function within an OP L2 client over a range of consecutive L2 blocks in fault dispute proof mode. Data availability layer is set to EigenDA.",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/celo-org/op-succinct/tree/celo/v2.1.0/programs/range/eigenda",
"verificationStatus": "successful",
"verificationSteps": "\nPrepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [celo-org/op-succinct](https://github.com/celo-org/op-succinct) repo: `git checkout celo/v2.1.0`. Commit hash should be `00ac9f41a19917be8add5f7b60bef5be93b5b2b7`.\n2. Make sure docker is running by running `docker ps`\n3. Reproducibly rebuild the program ELF from source: from `programs/range/eigenda` run `cargo prove build --elf-name eigenda-range-elf-embedded --docker --tag v6.1.0 --output-directory ../../../elf`. The rebuilt ELF is byte-identical to the one committed in the release.\n4. From the `op-succinct` dir run `cargo run --bin config --release --features eigenda` to print the verification key hashes.\n ",
"hash": "0x1dd60be45aa2e74722e16f3a7c2d3b0a3339c1b72dc4e5b513487da3528e5c94"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+43 -43
+17 -17
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "FluentMultisig",
"name": "FluentMultisig",
"description": "A Multisig with 4/5 threshold. \n* Can upgrade **with no delay**\n * Blacklist \n * FluentRollup \n * NativeGateway \n * L1FluentBridge \n * ERC20TokenFactory \n * ERC20Gateway \n* Can interact with FluentRollup\n * grant / revoke all access control roles on the Rollup contract and configure its core parameters \n * revert non-finalized (committed or preconfirmed) batches via revertBatches; cannot revert finalized batches \n* Can interact with FluentTimeLock\n * execute scheduled timelock operations once the min-delay has elapsed \n* Can interact with L1FluentBridge\n * configure the rollup binding, oracles, gas parameters and gateway whitelist on the L1 bridge core, and grant / revoke its other roles \n * pause / unpause the L1 bridge core and clear expired L1->L2 deposits via skipExpiredDeposits (no user-initiated refund path exists; rollbackMessageWithProof reverts with NOT_IMPLEMENTED) ",
"accounts": [
{
"address": "eth:0x33C0B99F3210a9578d81d5B13dEC03160F58ff11",
"type": "Contract",
"isVerified": true,
"name": "0x33C0…ff11",
"url": "https://etherscan.io/address/0x33C0B99F3210a9578d81d5B13dEC03160F58ff11"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x1C07545A5EF140E2076D02a4a11cf0d7Bb172523",
"type": "EOA",
"isVerified": true,
"name": "0x1C07…2523",
"url": "https://etherscan.io/address/0x1C07545A5EF140E2076D02a4a11cf0d7Bb172523"
},
{
"address": "eth:0x9ec3f0d76A6d3847d86374c791C6E170CAd9518D",
"type": "EOA",
"isVerified": true,
"name": "FluentAdminEOA",
"url": "#FluentAdminEOA"
},
{
"address": "eth:0x6845b3A6B1b8071944D20a797D57F4c0b8E3f99b",
"type": "EOA",
"isVerified": true,
"name": "0x6845…f99b",
"url": "https://etherscan.io/address/0x6845b3A6B1b8071944D20a797D57F4c0b8E3f99b"
},
{
"address": "eth:0x624Cd730EE0f49c51a150b6e29Ae833DfE2B0C9B",
"type": "EOA",
"isVerified": true,
"name": "0x624C…0C9B",
"url": "https://etherscan.io/address/0x624Cd730EE0f49c51a150b6e29Ae833DfE2B0C9B"
},
{
"address": "eth:0x9CDFcAB50663169Dcd99597815472E2494f09Fa0",
"type": "EOA",
"isVerified": true,
"name": "0x9CDF…9Fa0",
"url": "https://etherscan.io/address/0x9CDFcAB50663169Dcd99597815472E2494f09Fa0"
}
],
"discoveryDrivenData": true
},
{
"id": "ERC20TokenFactory",
"name": "ERC20TokenFactory",
"accounts": [
{
"address": "eth:0xF6d49E874Cb64b8ee56D6F99BD340134B30AB225",
"type": "Contract",
"isVerified": true,
"name": "0xF6d4…B225",
"url": "https://etherscan.io/address/0xF6d49E874Cb64b8ee56D6F99BD340134B30AB225"
}
],
"chain": "ethereum",
"description": "* Can interact with UpgradeableBeacon\n * change the beacon implementation ",
"discoveryDrivenData": true
},
{
"id": "SP1VerifierGatewayMultisig",
"name": "SP1VerifierGatewayMultisig",
"description": "A Multisig with 2/3 threshold. \n* Can interact with SP1VerifierGateway\n * affect the liveness and safety of the gateway - can transfer ownership, add and freeze verifier routes ",
"description": "A Multisig with 2/3 threshold. \n* Can interact with SP1VerifierGatewayOlder\n * affect the liveness and safety of the gateway - can transfer ownership, add and freeze verifier routes ",
"accounts": [
{
"address": "eth:0xCafEf00d348Adbd57c37d1B77e0619C6244C6878",
"type": "Contract",
"isVerified": true,
"name": "0xCafE…6878",
"url": "https://etherscan.io/address/0xCafEf00d348Adbd57c37d1B77e0619C6244C6878"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126",
"type": "EOA",
"isVerified": true,
"name": "0xBaB2…1126",
"url": "https://etherscan.io/address/0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x9395e83720bf2D8ac6435f9c520b48E289Cb8885",
"type": "EOA",
"isVerified": true,
"name": "0x9395…8885",
"url": "https://etherscan.io/address/0x9395e83720bf2D8ac6435f9c520b48E289Cb8885"
}
],
"discoveryDrivenData": true
},
{
"id": "ERC20TokenFactory",
"name": "ERC20TokenFactory",
"accounts": [
{
"address": "eth:0xF6d49E874Cb64b8ee56D6F99BD340134B30AB225",
"type": "Contract",
"isVerified": true,
"name": "0xF6d4…B225",
"url": "https://etherscan.io/address/0xF6d49E874Cb64b8ee56D6F99BD340134B30AB225"
}
],
"chain": "ethereum",
"description": "* Can interact with UpgradeableBeacon\n * change the beacon implementation ",
"discoveryDrivenData": true
},
{
"id": "FluentAdminEOA",
"name": "FluentAdminEOA",
"accounts": [
{
"address": "eth:0x9ec3f0d76A6d3847d86374c791C6E170CAd9518D",
"type": "EOA",
"isVerified": true,
"name": "0x9ec3…518D",
"url": "https://etherscan.io/address/0x9ec3f0d76A6d3847d86374c791C6E170CAd9518D",
"displayName": "FluentAdminEOA"
}
],
"chain": "ethereum",
"description": "Member of FluentMultisig.\n* Can interact with FluentTimeLock\n * cancel scheduled timelock operations before they are executed \n * schedule operations on the timelock; the configured min-delay must elapse before they can be executed ",
"discoveryDrivenData": true
},
{
"id": "FluentProverEOA",
"name": "FluentProverEOA",
"accounts": [
{
"address": "eth:0xB9E6f78a0F35F96b806D0359AbB251117aCe255C",
"type": "EOA",
"isVerified": true,
"name": "0xB9E6…255C",
"url": "https://etherscan.io/address/0xB9E6f78a0F35F96b806D0359AbB251117aCe255C",
"displayName": "FluentProverEOA"
}
],
"chain": "ethereum",
"description": "* Can interact with FluentRollup\n * submit SP1 ZK proofs that resolve challenged batches and accelerate finalization via finalizeWithProofs ",
"discoveryDrivenData": true
},
{
"id": "FluentEnclaveAttesterEOA",
"name": "FluentEnclaveAttesterEOA",
"accounts": [
{
"address": "eth:0xef9Dc1F87BAA090a35B985DAad9c8096440F2012",
"type": "EOA",
"isVerified": true,
"name": "0xef9D…2012",
"url": "https://etherscan.io/address/0xef9Dc1F87BAA090a35B985DAad9c8096440F2012",
"displayName": "FluentEnclaveAttesterEOA"
}
],
"chain": "ethereum",
"description": "* Can interact with FluentRollup\n * AWS Nitro Enclave attestation key admitted to preconfirm batches; binds the optimistic fast-withdrawal path ",
"discoveryDrivenData": true
},
{
"id": "FluentSequencerEOA",
"name": "FluentSequencerEOA",
"accounts": [
{
"address": "eth:0xFd58Bc438d910088C413b889Eaa0aded5C0d1c26",
"type": "EOA",
"isVerified": true,
"name": "0xFd58…1c26",
"url": "https://etherscan.io/address/0xFd58Bc438d910088C413b889Eaa0aded5C0d1c26",
"displayName": "FluentSequencerEOA"
}
],
"chain": "ethereum",
"description": "* Can interact with FluentRollup\n * commit batches and submit EIP-4844 blob hashes to the Rollup ",
"discoveryDrivenData": true
}
]
}
}
+26 -26
{
"addresses": {
"ethereum": [
{
"name": "FastWithdrawalList",
"isVerified": true,
"address": "eth:0x3eFc3c84ecf259Da36E33692f2a107A0AB88D30E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x94F068ee9A23F3F883bdE060502a46E9C4EeAb25"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1776720647,
"transactionHash": "0x78106cf05ac5ded33961c11e23dbb44bdb6f96fdec0283f55c479f57c88ebf0f",
"implementations": [
"eth:0x94F068ee9A23F3F883bdE060502a46E9C4EeAb25"
]
}
],
"description": "Per-token rate-limit registry for the optimistic (preconfirmed) fast-withdrawal path. Enforces hourly and daily caps using rolling windows keyed by block timestamp; related tokens (e.g. ETH and WETH) can be aliased to a shared bucket to prevent cap evasion.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3eFc3c84ecf259Da36E33692f2a107A0AB88D30E#code"
},
{
"name": "NativeGateway",
"isVerified": true,
"address": "eth:0x8976Ca4E0c8467097Da675399fB7DB454a1b56dd",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x33C0B99F3210a9578d81d5B13dEC03160F58ff11"
],
"implementations": [
"eth:0x025f11FedA181E2Ba63bb86536DD987E0769f586"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1775739563,
"transactionHash": "0x7e992147bddd61de0f8c13840203f14802196eb89605508418ad4f634394143e",
"implementations": [
"eth:0x482Df12fbc3BA7A7f02Aa928e620fd12aF5Fd30e"
]
},
{
"timestamp": 1776358595,
"transactionHash": "0xd965bd1614a8301bfb88f5bc4f6f1d3c3914df56a895ddd21c38796e03a4f790",
"implementations": [
"eth:0xbA3d3B60b6f462AA3fb2D63F8B610Fa8825c3019"
]
},
{
"timestamp": 1776720683,
"transactionHash": "0x0e1838d3baa70b38111493feb6d09029ff0f0b594ea9619c9c28b9442ff30ffb",
"implementations": [
"eth:0x025f11FedA181E2Ba63bb86536DD987E0769f586"
]
}
],
"description": "L1 entry point for ETH deposits into Fluent. Forwards ETH to L1FluentBridge for actual escrow custody and emits the corresponding bridge message. UUPS-upgradeable; upgrades are gated by the contract owner.\n* Roles:\n * **admin**: FluentMultisig",
"upgradableBy": [
{
"name": "FluentMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8976Ca4E0c8467097Da675399fB7DB454a1b56dd#code"
},
{
"name": "L1FluentBridge",
"isVerified": true,
"address": "eth:0x9CAcf613fC29015893728563f423fD26dCdB8Ddc",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0xF67255be817061139C9DeeA757f7276916cBF849"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1775739227,
"transactionHash": "0x41d58e18be407db8b25d9d8c198f42d88ef67104ae3286e1e318ec2d67b251c3",
"implementations": [
"eth:0xF10F4D565d050BEeb9e37A548853B9c88Fd65373"
]
},
{
"timestamp": 1776358511,
"transactionHash": "0xcf06c58c5a0a601390bb3835778a390bd0b2b25c675319feeef96a4a83940112",
"implementations": [
"eth:0x52f9e37FeDd9EF7d5eCB24D77cff40d5337A5770"
]
},
{
"timestamp": 1776457763,
"transactionHash": "0x9a92a1828c2b689acab26e5ab139ad6faa2bec120c7462d9d3b01bffb708489a",
"implementations": [
"eth:0xfF0Ef75C7a2942294A5a828b1c11F7aF618De4cA"
]
},
{
"timestamp": 1776591743,
"transactionHash": "0x75ee505dc6be60d16c93c7dd6cfc33b99439de51561aed0c9fbe65e278095437",
"implementations": [
"eth:0xA0374Fa5324f4A255693Eb6B35236a21C24392f8"
]
},
{
"timestamp": 1776719975,
"transactionHash": "0x0d5b3fa6d88af319cbae57d5dd3b53ce6749e90690ddaa2f8497d40ca19adf44",
"implementations": [
"eth:0x95c76524803B8EA61c910dc0cB02B76efD6D3791"
]
},
{
"timestamp": 1776720671,
"transactionHash": "0xc78efc4e911d121701277a5eb494c8e74aad26a4b18f358d655e955cc7747c02",
"implementations": [
"eth:0x047AaDf25df7D17bB5B6b1FF31cecD1E4973C227"
]
},
{
"timestamp": 1779289223,
"transactionHash": "0x5683f1be2880db1238db0cafc17623f895de685541543b5fd577efdfec53429c",
"implementations": [
"eth:0xF67255be817061139C9DeeA757f7276916cBF849"
]
}
],
"description": "Bridge core for Fluent. Routes deposits from L1 gateways into a FIFO queue consumed by the sequencer, and lets anyone process L2->L1 messages with two Merkle proofs against a preconfirmed or finalized batch root. Custodies bridged ETH on L1 (gateways forward ETH here on deposit). UUPS-upgradeable; upgrades and gateway-whitelist / oracle / pause changes are gated by DEFAULT_ADMIN_ROLE.\n* Roles:\n * **defaultAdmin**: FluentMultisig\n * **pauser**: FluentMultisig",
"upgradableBy": [
{
"name": "FluentMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9CAcf613fC29015893728563f423fD26dCdB8Ddc#code"
},
{
"name": "ERC20Gateway",
"isVerified": true,
"address": "eth:0xFD4C62647A34FF6d6802092F5fbe176099223B61",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x33C0B99F3210a9578d81d5B13dEC03160F58ff11"
],
"implementations": [
"eth:0x81e1158368bD28Cc6E8380852087a9512A9670fB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1775739563,
"transactionHash": "0x407471f08b665a9e9c7a6a44548270a9613093d25728e1886883f5893c75f600",
"implementations": [
"eth:0x8c435855E8090eB526f33f94d0474d59fD7E32A2"
]
},
{
"timestamp": 1776358559,
"transactionHash": "0x39e5b62153053ecba10153dce9d95ca2ff53e2f69f6cf7564e0369537630c8f7",
"implementations": [
"eth:0x5398c8De96Ef049B5d8D0ce01e4C9D58c47B98C9"
]
},
{
"timestamp": 1776720683,
"transactionHash": "0x78942254165dc0ae59b763fd30c9f472e0aca5f39ee7fa7757bdff498487ca96",
"implementations": [
"eth:0xe1Cf59617A333eaCEAF36BE03cB0b94A250acf4b"
]
},
{
"timestamp": 1776908303,
"transactionHash": "0x2625ebb9ea1e887805cc22e6d221a6e13f79d0db0b5acac9815e3231d39b0ce6",
"implementations": [
"eth:0x81e1158368bD28Cc6E8380852087a9512A9670fB"
]
}
],
"description": "L1 entry point for ERC-20 deposits into Fluent. Custodies ERC-20 tokens directly on L1 and emits the corresponding bridge message; on the L2 side the canonical pegged token is minted via the ERC20TokenFactory. UUPS-upgradeable; upgrades are gated by the contract owner.\n* Roles:\n * **admin**: FluentMultisig",
"upgradableBy": [
{
"name": "FluentMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFD4C62647A34FF6d6802092F5fbe176099223B61#code"
},
{
"name": "FluentTimeLock",
"isVerified": true,
"address": "eth:0x7846C001835d889A29ba659f67A5B7ac98E73bF4",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "OpenZeppelin TimelockController used to delay privileged operations. PROPOSER_ROLE schedules calls; the configured minimum delay must elapse before EXECUTOR_ROLE can execute them; CANCELLER_ROLE can drop scheduled calls.\n* Roles:\n * **canceller**: FluentAdminEOA\n * **executor**: FluentMultisig\n * **proposer**: FluentAdminEOA",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7846C001835d889A29ba659f67A5B7ac98E73bF4#code"
},
{
"name": "ERC20PeggedToken",
"isVerified": true,
"address": "eth:0x056fD0A3eD85c6ae1Ec1c398B33581951Ed4b090",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x056fD0A3eD85c6ae1Ec1c398B33581951Ed4b090#code"
},
{
"name": "Blacklist",
"isVerified": true,
"address": "eth:0x05C5d46a5e6f92fB9CdA9A8b03E4440A175D1484",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x33C0B99F3210a9578d81d5B13dEC03160F58ff11"
],
"implementations": [
"eth:0xB9E397C9506F71590be1f24da3f219bedE38b845"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1776720923,
"transactionHash": "0x48b82ab6b95e56504680c0c5d8b75a9a389e4619bbd9ed6d4910decdacea713e",
"implementations": [
"eth:0xB9E397C9506F71590be1f24da3f219bedE38b845"
]
}
],
"description": "* Roles:\n * **admin**: FluentMultisig",
"upgradableBy": [
{
"name": "FluentMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x05C5d46a5e6f92fB9CdA9A8b03E4440A175D1484#code"
},
{
"name": "FluentRollup",
"isVerified": true,
"address": "eth:0x1cF53Fd9CD0b713be29F2b41cA17A943f138727f",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0xF6ad498c8B9bfbD2F26EcD9665aC71d9032245c1"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1776356639,
"transactionHash": "0x9280e1cd08307a30efd83b424181e0c0a377dacb4216a206b290575bf4a5edf5",
"implementations": [
"eth:0x405eA6684CDD57e8f9c15395626F3c72c5255D50"
]
},
{
"timestamp": 1776457595,
"transactionHash": "0xae2d6f36ca6010e6405191447ffa78f5c39330e849945b4e12cb55ce112e8db1",
"implementations": [
"eth:0x76Ec5c71FF385b2E174f1191589a7368eE9d7C83"
]
},
{
"timestamp": 1776591899,
"transactionHash": "0x8faf3ed7a062e5732abf80beb9c9400705745d7bbc5924c2a1523d970c655fb5",
"implementations": [
"eth:0x7EafBd621Df027EbefFb7a971120b13A88710494"
]
},
{
"timestamp": 1776592211,
"transactionHash": "0x46e6634771e5902428987a7e423c9ca431fce3c7d7bf9346f213ba9c18cb247a",
"implementations": [
"eth:0x5E0D546dAdE979c9eEE458Cc8b6212E53921889f"
]
},
{
"timestamp": 1776592511,
"transactionHash": "0x915f648035250a9982c5a9902ddc37f3c72047fa8b8fd3241ee93455d93508fa",
"implementations": [
"eth:0x46a485181ab7E0D68508b8dE306e88a3B6718193"
]
},
{
"timestamp": 1776683927,
"transactionHash": "0x93a23ca29d9dbbbedbab902d37a83cad523c82d4b3ec930f5622ed508171a0e3",
"implementations": [
"eth:0xf7EEe2D42f70DCacE0a6E368099A9EBCcaB74Efd"
]
},
{
"timestamp": 1776875747,
"transactionHash": "0x656d50f10e86f6bbee1bd4c39258cc2ebf75341d74be55c3163b7ed990c931b6",
"implementations": [
"eth:0xF6ad498c8B9bfbD2F26EcD9665aC71d9032245c1"
]
}
],
"description": "Core Fluent rollup contract. Sequencers commit batch roots and EIP-4844 blob hashes; an AWS Nitro Enclave preconfirms each batch via a signature whose key is bound to a PCR0 measurement verified by SP1; participants holding CHALLENGER_ROLE can dispute and the prover resolves disputes with SP1 ZK proofs; batches finalize after a block-count delay or immediately once all blocks are proven.\n* Roles:\n * **defaultAdmin**: FluentMultisig\n * **emergency**: FluentMultisig\n * **preconfirmation**: FluentEnclaveAttesterEOA\n * **prover**: FluentProverEOA\n * **sequencer**: FluentSequencerEOA",
"upgradableBy": [
{
"name": "FluentMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1cF53Fd9CD0b713be29F2b41cA17A943f138727f#code"
},
{
"name": "NitroVerifier",
"isVerified": true,
"address": "eth:0x207FBb4AC5227Ab598B8072BdC1E150dF687AC5B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies AWS Nitro Enclave attestations onchain. The enclave's signing key is admitted only after an SP1 proof confirms its attestation matches the expected PCR0 measurement, binding preconfirmation authority to audited enclave code.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x207FBb4AC5227Ab598B8072BdC1E150dF687AC5B#code"
},
{
"name": "SP1VerifierGateway",
"name": "UpgradeableBeacon",
"isVerified": true,
"address": "eth:0x397A5f7f3dBd538f23DE225B51f532c34448dA9B",
"address": "eth:0xdD283a04cc711aB9c08d79e665835821BEef710B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"description": "A beacon with an upgradeable implementation currently set as ERC20PeggedToken. Beacon proxy contracts pointing to this beacon will all use its implementation.\n* Roles:\n * **owner**: ERC20TokenFactory",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x397A5f7f3dBd538f23DE225B51f532c34448dA9B#code"
"url": "https://etherscan.io/address/0xdD283a04cc711aB9c08d79e665835821BEef710B#code"
},
{
"name": "SP1Verifier",
"name": "NitroVerifier",
"isVerified": true,
"address": "eth:0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5",
"address": "eth:0xFdB04b67ecD8352bA3885F66fFfddf1f5f25292F",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"description": "Verifies AWS Nitro Enclave attestations onchain. The enclave's signing key is admitted only after an SP1 proof confirms its attestation matches the expected PCR0 measurement, binding preconfirmation authority to audited enclave code.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5#code"
"url": "https://etherscan.io/address/0xFdB04b67ecD8352bA3885F66fFfddf1f5f25292F#code"
},
{
"name": "SP1Verifier",
"name": "SP1VerifierGatewayOlder",
"isVerified": true,
"address": "eth:0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508",
"address": "eth:0x397A5f7f3dBd538f23DE225B51f532c34448dA9B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508#code"
"url": "https://etherscan.io/address/0x397A5f7f3dBd538f23DE225B51f532c34448dA9B#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xb69f2584CBcFf99a58C4e7002E8b89Af54a6f4e2",
"address": "eth:0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb69f2584CBcFf99a58C4e7002E8b89Af54a6f4e2#code"
"url": "https://etherscan.io/address/0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5#code"
},
{
"name": "UpgradeableBeacon",
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xdD283a04cc711aB9c08d79e665835821BEef710B",
"address": "eth:0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A beacon with an upgradeable implementation currently set as ERC20PeggedToken. Beacon proxy contracts pointing to this beacon will all use its implementation.\n* Roles:\n * **owner**: ERC20TokenFactory",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xdD283a04cc711aB9c08d79e665835821BEef710B#code"
"url": "https://etherscan.io/address/0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508#code"
},
{
"name": "NitroVerifier",
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xFdB04b67ecD8352bA3885F66fFfddf1f5f25292F",
"address": "eth:0xb69f2584CBcFf99a58C4e7002E8b89Af54a6f4e2",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies AWS Nitro Enclave attestations onchain. The enclave's signing key is admitted only after an SP1 proof confirms its attestation matches the expected PCR0 measurement, binding preconfirmation authority to audited enclave code.\n",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFdB04b67ecD8352bA3885F66fFfddf1f5f25292F#code"
"url": "https://etherscan.io/address/0xb69f2584CBcFf99a58C4e7002E8b89Af54a6f4e2#code"
}
]
},
"escrows": [
{
"address": "0x9CAcf613fC29015893728563f423fD26dCdB8Ddc",
"sinceTimestamp": 1775739227,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x9CAcf613fC29015893728563f423fD26dCdB8Ddc",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0xF67255be817061139C9DeeA757f7276916cBF849"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1775739227,
"transactionHash": "0x41d58e18be407db8b25d9d8c198f42d88ef67104ae3286e1e318ec2d67b251c3",
"implementations": [
"eth:0xF10F4D565d050BEeb9e37A548853B9c88Fd65373"
]
},
{
"timestamp": 1776358511,
"transactionHash": "0xcf06c58c5a0a601390bb3835778a390bd0b2b25c675319feeef96a4a83940112",
"implementations": [
"eth:0x52f9e37FeDd9EF7d5eCB24D77cff40d5337A5770"
]
},
{
"timestamp": 1776457763,
"transactionHash": "0x9a92a1828c2b689acab26e5ab139ad6faa2bec120c7462d9d3b01bffb708489a",
"implementations": [
"eth:0xfF0Ef75C7a2942294A5a828b1c11F7aF618De4cA"
]
},
{
"timestamp": 1776591743,
"transactionHash": "0x75ee505dc6be60d16c93c7dd6cfc33b99439de51561aed0c9fbe65e278095437",
"implementations": [
"eth:0xA0374Fa5324f4A255693Eb6B35236a21C24392f8"
]
},
{
"timestamp": 1776719975,
"transactionHash": "0x0d5b3fa6d88af319cbae57d5dd3b53ce6749e90690ddaa2f8497d40ca19adf44",
"implementations": [
"eth:0x95c76524803B8EA61c910dc0cB02B76efD6D3791"
]
},
{
"timestamp": 1776720671,
"transactionHash": "0xc78efc4e911d121701277a5eb494c8e74aad26a4b18f358d655e955cc7747c02",
"implementations": [
"eth:0x047AaDf25df7D17bB5B6b1FF31cecD1E4973C227"
]
},
{
"timestamp": 1779289223,
"transactionHash": "0x5683f1be2880db1238db0cafc17623f895de685541543b5fd577efdfec53429c",
"implementations": [
"eth:0xF67255be817061139C9DeeA757f7276916cBF849"
]
}
],
"url": "https://etherscan.io/address/0x9CAcf613fC29015893728563f423fD26dCdB8Ddc#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0xFD4C62647A34FF6d6802092F5fbe176099223B61",
"sinceTimestamp": 1775739563,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0xFD4C62647A34FF6d6802092F5fbe176099223B61",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x33C0B99F3210a9578d81d5B13dEC03160F58ff11"
],
"implementations": [
"eth:0x81e1158368bD28Cc6E8380852087a9512A9670fB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1775739563,
"transactionHash": "0x407471f08b665a9e9c7a6a44548270a9613093d25728e1886883f5893c75f600",
"implementations": [
"eth:0x8c435855E8090eB526f33f94d0474d59fD7E32A2"
]
},
{
"timestamp": 1776358559,
"transactionHash": "0x39e5b62153053ecba10153dce9d95ca2ff53e2f69f6cf7564e0369537630c8f7",
"implementations": [
"eth:0x5398c8De96Ef049B5d8D0ce01e4C9D58c47B98C9"
]
},
{
"timestamp": 1776720683,
"transactionHash": "0x78942254165dc0ae59b763fd30c9f472e0aca5f39ee7fa7757bdff498487ca96",
"implementations": [
"eth:0xe1Cf59617A333eaCEAF36BE03cB0b94A250acf4b"
]
},
{
"timestamp": 1776908303,
"transactionHash": "0x2625ebb9ea1e887805cc22e6d221a6e13f79d0db0b5acac9815e3231d39b0ce6",
"implementations": [
"eth:0x81e1158368bD28Cc6E8380852087a9512A9670fB"
]
}
],
"url": "https://etherscan.io/address/0xFD4C62647A34FF6d6802092F5fbe176099223B61#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"programHashes": [
{
"title": "Fluent STF guest program",
"proverSystemProject": "sp1hypercube",
"description": "Guest program implementing state transition function of the Fluent rollup",
"verificationStatus": "unsuccessful",
"verificationSteps": "According to the Fluent team, the sources for this program were not yet published. Thus it cannot be verified.",
"hash": "0x00e34107e4c5284bd4ecc4269c650671038c1e85d9dacb931b534e984f607334"
},
{
"title": "Fluent Nitro TEE verifier v1.0.4",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/fluentlabs-xyz/fluent-stf/tree/v1.0.4/bin/aws-nitro-validator",
"description": "Verifies correctness of a single TEE attestation for executing Fluent STF within a trusted enclave on AWS cloud.",
"verificationStatus": "successful",
"verificationSteps": "Regeneration steps are based on [this guide](https://github.com/fluentlabs-xyz/fluent-stf/blob/v1.0.0/README.md). The process is reproducible on a Linux machnie.\n\n1. Install prerequesits: `docker`, `python3`, `git`, `jq`.\n2. Checkout correct branch in https://github.com/fluentlabs-xyz/fluent-stf/tree/v1.0.4: `git checkout v1.0.4`. Commit hash should be `e2cd6942c1dd9200834abd9e816e38b83d1caa51`.\n3. Build Nitro program for the mainnet within docker: `make build-nitro-validator-docker NETWORK=mainnet`. This command will create `nitro-validator-mainnet.vkey` file with the program hash string.",
"hash": "0x00e726560b91ff68e7e232d79536f4a8fb951f1f0197f97f7377b3f21e7e641e"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5",
"eth:0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508",
"eth:0xb69f2584CBcFf99a58C4e7002E8b89Af54a6f4e2"
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "AggchainECDSAMultisig",
"isVerified": true,
"address": "eth:0x2f3d687e02dbe83B6cDaE02aeb66C0e8E69CcA4b",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756733255,
"transactionHash": "0xf9461b9a1119187637520c5034603d8386799d01e97e5751e9bdbe46b4303c09",
"implementations": [
"eth:0x18C45DD422f6587357a6d3b23307E75D42b2bc5B"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
}
],
"description": "System contract defining the forknet Aggchain logic. It only enforces bridge accounting (pessimistic) proofs to protect the shared bridge while the Aggchain state transitions are not proven. They must instead be signed by 1 aggchainSigner(s).\n* Roles:\n * **admin**: EOA 2\n * **aggchainSigners**: EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2f3d687e02dbe83B6cDaE02aeb66C0e8E69CcA4b#code"
},
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0x5D2952EAe032aa33e977c52f810e0089261efB27",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x2bFE4A5Bd5A41e9d848d843ebCDFa15954e9A557"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED"
]
}
],
"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 Conduit Multisig 1\n * **batcherHash**: EOA 1\n * **owner**: Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5D2952EAe032aa33e977c52f810e0089261efB27#code"
},
{
"name": "DisputeGameFactory",
"isVerified": true,
"address": "eth:0xAa47071585ee92Fa9AE314C87d3d12a25c241EeD",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x33D1e8571a85a538ed3D5A4d88f46C112383439D"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
}
],
"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 Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xAa47071585ee92Fa9AE314C87d3d12a25c241EeD#code"
},
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0xD7cF5ce4688663e057E99D9f880599Ce88757695",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4"
]
},
{
"timestamp": 1756903199,
"transactionHash": "0xc33c7857ae90704d7d21f1670457a6889b8d3ac1b4f02e23f9f156a8ec3a51f9",
"implementations": [
"eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x381E729FF983FA4BCEd820e7b922d79bF653B999"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
}
],
"description": "The OptimismPortal contract usually is the main entry point to deposit funds from L1 to L2 or for finalizing withdrawals. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame. This specific contract is deployed in the agglayer system context which **disables the depositTransaction() function**, preventing users from sending or forcing any transactions from L1 to L2, including token deposits. It is instead used for configuration and administration of the system.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD7cF5ce4688663e057E99D9f880599Ce88757695#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 4, EOA 5\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "L1StandardBridge",
"isVerified": true,
"address": "eth:0x6C82EEE75Bb8b957C12FaaF8CAb549BE4b0fD5af",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "The main entry point to deposit ERC20 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6C82EEE75Bb8b957C12FaaF8CAb549BE4b0fD5af#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0xB847cf7F5CE23cBaF76E751C066bfE732951501f",
"upgradeability": {
"proxyType": "resolved delegate proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x22D12E0FAebD62d429514A65EBAe32dd316c12D6"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
]
}
],
"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 Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xB847cf7F5CE23cBaF76E751C066bfE732951501f#code"
},
{
"name": "L1ERC721Bridge",
"isVerified": true,
"address": "eth:0xd1cFFdEF1dc379372CB06f3dEdC6debeF6059E82",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x7f1d12fB2911EB095278085f721e644C1f675696"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
}
],
"description": "Used to bridge ERC-721 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xd1cFFdEF1dc379372CB06f3dEdC6debeF6059E82#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0x04B540f9e071a83555aB12d0CCcA812E272dcAf1",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
}
],
"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 Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x04B540f9e071a83555aB12d0CCcA812E272dcAf1#code"
},
{
"name": "PreimageOracle",
"isVerified": true,
"address": "eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
},
{
"name": "OptimismMintableERC20Factory",
"isVerified": true,
"address": "eth:0x514795090ceA49c14f65b45c4403A36b3576AE03",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x5493f4677A186f64805fe7317D6993ba4863988F"
]
},
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
}
],
"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 Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x514795090ceA49c14f65b45c4403A36b3576AE03#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0x6463dEE3828677F6270d83d45408044fc5eDB908",
"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/0x6463dEE3828677F6270d83d45408044fc5eDB908#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0x88d414cA1d500E5CDf131022e4A27D281e8Dba44",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x88d414cA1d500E5CDf131022e4A27D281e8Dba44#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xb4899FF43Ae727B1E9CB19AC44660e4A43Fad0b5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Conduit Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb4899FF43Ae727B1E9CB19AC44660e4A43Fad0b5#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Conduit Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEfBb0af25B3bE24347f17916fda058795f36a5A0#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0xf9E57a0B702dF449295DEc146eC2bc80339FAAED",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1768924487,
"transactionHash": "0xdafb601ff7f28a914b21897e0fe0db50cf79e1e4376b62b8e503240368155c12",
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf9E57a0B702dF449295DEc146eC2bc80339FAAED#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1756893611,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherPreminted",
"premintedAmount": "340282366920938463463374607431768211455"
},
"chainId": 1
}
],
"programHashes": [
{
"title": "Pessimistic program of agglayer 0.3.3-post4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.3.3-post.4`. Commit hash should be `df072abc86fa89e12b17204246325983272a1141`\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer v0.4.4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.4.4`. Commit hash should be `caac9f06bc7cb1cf89912dbb4dffa4d594a00bd5`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
},
{
"title": "Pessimistic program of agglayer v0.5.1",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.5.1/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.5.1`. Commit hash should be `f7bb86695b03d363c3d0d15ff7f2d8b386e58c91`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv64im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x00d14f977a6ec393014f300ad78d0761dc29435d3fa1e2626fa466bd3343578e"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Verifier",
"isVerified": true,
"address": "eth:0x0775e11309d75aA6b0967917fB0213C5673eDf81",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies ZK proofs for state roots of this Layer 2 via the PolygonRollupManager.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0775e11309d75aA6b0967917fB0213C5673eDf81#code"
},
{
"name": "PolygonDataCommittee",
"isVerified": true,
"address": "eth:0x75E26A2996DEAbA20386B6f3c1C957eFadb3f6E8",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xada59D145126A746976F0F56477aafFEB3acc8e3"
],
"implementations": [
"eth:0xA36aFB6b79A3d164a3d12C141c916BECc6e012D8"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1718797871,
"transactionHash": "0x0a7c7231ed11b5452e24014b44c25286a58b4048cb401623b23a77ff1ee67fe7",
"implementations": [
"eth:0xA36aFB6b79A3d164a3d12C141c916BECc6e012D8"
]
}
],
"description": "Manages the members of the data availability committee (DAC) and the threshold for accepting commitments from them (Currently 2/1).\n* Roles:\n * **admin**: ProxyAdmin; ultimately EOA 3\n * **owner**: EOA 1",
"upgradableBy": [
{
"id": "EOA-3",
"name": "EOA 3",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x75E26A2996DEAbA20386B6f3c1C957eFadb3f6E8#code"
},
{
"name": "Validium",
"isVerified": true,
"address": "eth:0xC4E903D3Af4c3d2e437492d602adcC9d9b536858",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x10D296e8aDd0535be71639E5D1d1c30ae1C6bD4C"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1716807971,
"transactionHash": "0x3dc530423d40c84109b6c3c014ee3182ae576375dc5888187e4a33380930d54a",
"implementations": [
"eth:0x10D296e8aDd0535be71639E5D1d1c30ae1C6bD4C"
]
}
],
"description": "The main system contract defining the gpt-mainnet Layer 2 logic. Entry point for sequencing batches.\n* Roles:\n * **admin**: EOA 1\n * **forceBatchAddress**: EOA 1\n * **trustedSequencer**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC4E903D3Af4c3d2e437492d602adcC9d9b536858#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 4, EOA 5\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xada59D145126A746976F0F56477aafFEB3acc8e3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xada59D145126A746976F0F56477aafFEB3acc8e3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 3d delay on code upgrades unless upgrade is initiated by the PolygonSecurityCouncil in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0x0775e11309d75aA6b0967917fB0213C5673eDf81"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "AggchainECDSAMultisig",
"isVerified": true,
"address": "eth:0xaD83Cd3e5A725546daDC5A25088c5c098d320Ca8",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756808195,
"transactionHash": "0xe032344eb8cef2d2df7a64076e1e0671870fa0b87a9a8b097ccf02c6be2a34af",
"implementations": [
"eth:0x18C45DD422f6587357a6d3b23307E75D42b2bc5B"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
}
],
"description": "System contract defining the Haust Network Aggchain logic. It only enforces bridge accounting (pessimistic) proofs to protect the shared bridge while the Aggchain state transitions are not proven. They must instead be signed by 1 aggchainSigner(s).\n* Roles:\n * **admin**: EOA 1\n * **aggchainSigners**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xaD83Cd3e5A725546daDC5A25088c5c098d320Ca8#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 3, EOA 4\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1756808195,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherWrapped",
"wethAddress": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c",
"tokensToAssignFromL1": [
"HAUST"
]
},
"chainId": 1
}
],
"programHashes": [
{
"title": "Pessimistic program of agglayer 0.3.3-post4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.3.3-post.4`. Commit hash should be `df072abc86fa89e12b17204246325983272a1141`\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer v0.4.4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.4.4`. Commit hash should be `caac9f06bc7cb1cf89912dbb4dffa4d594a00bd5`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
},
{
"title": "Pessimistic program of agglayer v0.5.1",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.5.1/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.5.1`. Commit hash should be `f7bb86695b03d363c3d0d15ff7f2d8b386e58c91`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv64im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x00d14f977a6ec393014f300ad78d0761dc29435d3fa1e2626fa466bd3343578e"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "AggchainFEP",
"isVerified": true,
"address": "eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x9532A2F35fc9B18BD4FE8315D9C5B1C1Cf6Ac660"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1746619859,
"transactionHash": "0x94512726adae49bb62110e2e8b037723a60d921d2ad2f18626e2d83a532e9f68",
"implementations": [
"eth:0x18C45DD422f6587357a6d3b23307E75D42b2bc5B"
]
},
{
"timestamp": 1750690439,
"transactionHash": "0x3db4c1e8616cc300c46b7fea10aa3ef4d6e394642fce20ab2fd8ce15d16a7966",
"implementations": [
"eth:0x18C45DD422f6587357a6d3b23307E75D42b2bc5B"
]
},
{
"timestamp": 1750858139,
"transactionHash": "0x69b66ecfc6cd449a80b58c1fcb937f436ca4afedc3cb9586fb7f9b3f35546c79",
"implementations": [
"eth:0xe7FE45579D784DC83B0feD844A65f4cEEFDe5682"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x9532A2F35fc9B18BD4FE8315D9C5B1C1Cf6Ac660"
]
}
],
"description": "The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n* Roles:\n * **aggchainManager**: Polygon Multisig 2\n * **aggchainSigners**: EOA 2 optimisticMode is enabled by the optimisticModeManager\n * **optimisticModeManager**: Polygon Multisig 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666#code"
},
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832"
],
"implementations": [
"eth:0x5dEcbEEEFeCc5353355CD79A8fECC4c03F61ce8a"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1746742811,
"transactionHash": "0x8889fe6d2dfe60b7a36d37f1f1177c604c413baef6bb6aa5ef9a517dce5bddb8",
"implementations": [
"eth:0xe2F826324b2faf99E513D16D266c3F80aE87832B"
]
},
{
"timestamp": 1746747095,
"transactionHash": "0xe49eea7d70073f7015c5d877a31b1375ba3422bebfdbcc23aa31111c01392c12",
"implementations": [
"eth:0x9a6C2Dcc7e523f87716e17Ba36D10CCfFA0A60bb"
]
},
{
"timestamp": 1753290299,
"transactionHash": "0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2",
"implementations": [
"eth:0x2D7e764a0D9919e16983a46595CfA81fc34fa7Cd"
]
},
{
"timestamp": 1753290299,
"transactionHash": "0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2",
"implementations": [
"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4"
]
},
{
"timestamp": 1753290299,
"transactionHash": "0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2",
"implementations": [
"eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc"
]
},
{
"timestamp": 1772552963,
"transactionHash": "0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961",
"implementations": [
"eth:0x381E729FF983FA4BCEd820e7b922d79bF653B999"
]
},
{
"timestamp": 1772552963,
"transactionHash": "0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961",
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
},
{
"timestamp": 1772552963,
"transactionHash": "0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961",
"implementations": [
"eth:0x3e6753e6c0162061cfa7eEc88d8fdaE651160Bf4"
]
},
{
"timestamp": 1779467495,
"transactionHash": "0x46d8e0a3a5383c133292ef51e4d7eef96fddc443b892d38e62c39b1186055691",
"implementations": [
"eth:0x5dEcbEEEFeCc5353355CD79A8fECC4c03F61ce8a"
]
}
],
"description": "Stores the configuration of the OP stack components and proof system. Specifies which game type is used for state validation, which currently is the PermissionedDisputeGame. This contract is modified to disable asset bridging, but it allows forced transactions.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Polygon Multisig 2",
"upgradableBy": [
{
"name": "Polygon Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E#code"
},
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832"
],
"implementations": [
"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1746742811,
"transactionHash": "0x8889fe6d2dfe60b7a36d37f1f1177c604c413baef6bb6aa5ef9a517dce5bddb8",
"implementations": [
"eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375"
]
},
{
"timestamp": 1746742811,
"transactionHash": "0x8889fe6d2dfe60b7a36d37f1f1177c604c413baef6bb6aa5ef9a517dce5bddb8",
"implementations": [
"eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375"
]
},
{
"timestamp": 1753290299,
"transactionHash": "0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2",
"implementations": [
"eth:0x760C48C62A85045A6B69f07F4a9f22868659CbCc"
]
},
{
"timestamp": 1753290299,
"transactionHash": "0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2",
"implementations": [
"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647"
]
},
{
"timestamp": 1772552963,
"transactionHash": "0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961",
"implementations": [
"eth:0x2bFE4A5Bd5A41e9d848d843ebCDFa15954e9A557"
]
},
{
"timestamp": 1772552963,
"transactionHash": "0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961",
"implementations": [
"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED"
]
}
],
"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 Polygon Multisig 2\n * **batcherHash**: EOA 1\n * **owner**: Polygon Multisig 2",
"upgradableBy": [
{
"name": "Polygon Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 4, EOA 5\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "vbWBTC",
"isVerified": true,
"address": "eth:0x2C24B57e2CCd1f273045Af6A5f632504C432374F",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x420693B32113a0e00Eb9f3315D5D5ec3b32C2d69"
],
"implementations": [
"eth:0xcC865B0324121b43728176024f58bdbB3afd6f29"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747909835,
"transactionHash": "0xda746ba183a805e81c8fc2bbaf726ca806f3a877b123a32c4a8fb233a3401cf1",
"implementations": [
"eth:0xcC865B0324121b43728176024f58bdbB3afd6f29"
]
}
],
"description": "This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge WBTC) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbWBTC-IOU but is sent to Safe.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Katana vaultBridge Multisig 1",
"upgradableBy": [
{
"name": "Katana vaultBridge Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2C24B57e2CCd1f273045Af6A5f632504C432374F#code"
},
{
"name": "vbETH",
"isVerified": true,
"address": "eth:0x2DC70fb75b88d2eB4715bc06E1595E6D97c34DFF",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x14Be6579A41342ca6B402ec85E7be538e6Ade951"
],
"implementations": [
"eth:0x81c16F89222C32806Daf01f5129937dFE19D525e"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747909835,
"transactionHash": "0x5771d96984dfa1aa2ac1437a9a760fcdd8698a51646c357d228ca93a0c2bef49",
"implementations": [
"eth:0x81c16F89222C32806Daf01f5129937dFE19D525e"
]
}
],
"description": "This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge ETH) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbETH-IOU but is sent to Safe.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Katana vaultBridge Multisig 1",
"upgradableBy": [
{
"name": "Katana vaultBridge Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2DC70fb75b88d2eB4715bc06E1595E6D97c34DFF#code"
},
{
"name": "vbUSDS",
"isVerified": true,
"address": "eth:0x3DD459dE96F9C28e3a343b831cbDC2B93c8C4855",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xD1e389c046FB734D2a0c7C390312210c408ba832"
],
"implementations": [
"eth:0xcC865B0324121b43728176024f58bdbB3afd6f29"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747909835,
"transactionHash": "0x219783dd1d89579d2930234430e92b72a7e4e314bb10955de8a2e3eb25290acc",
"implementations": [
"eth:0xcC865B0324121b43728176024f58bdbB3afd6f29"
]
}
],
"description": "This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDS) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDS-IOU but is sent to Safe.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Katana vaultBridge Multisig 2",
"upgradableBy": [
{
"name": "Katana vaultBridge Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3DD459dE96F9C28e3a343b831cbDC2B93c8C4855#code"
},
{
"name": "MigrationManager",
"isVerified": true,
"address": "eth:0x417d01B64Ea30C4E163873f3a1f77b727c689e02",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x263b251D67BB154DD6b8352539466ACE7948ED56"
],
"implementations": [
"eth:0xC6dD6399eAE419A0a33A8dc307f4c1dB26D30e45"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747909835,
"transactionHash": "0xe7bb72352b7a946e63626c8facddd751a5c413b1f8e617bc03972e29c79f7066",
"implementations": [
"eth:0xC6dD6399eAE419A0a33A8dc307f4c1dB26D30e45"
]
}
],
"description": "Helper contract for the vaultBridge tokens on Layer 2. If any vbTokens are minted 'natively' on Layer 2, this contract can receive the underlying assets and lock them in the Layer 1 vaults.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Polygon Labs Engineering/Security Multisig",
"upgradableBy": [
{
"name": "Polygon Labs Engineering/Security Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x417d01B64Ea30C4E163873f3a1f77b727c689e02#code"
},
{
"name": "vbUSDC",
"isVerified": true,
"address": "eth:0x53E82ABbb12638F09d9e624578ccB666217a765e",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8970650CF3f1E57cA804C65B4DBcFf698789FE30"
],
"implementations": [
"eth:0xcC865B0324121b43728176024f58bdbB3afd6f29"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747909835,
"transactionHash": "0xba1f13977401e784b36c67323c10a86828a2ba7dacce1c84be247bb3964a0aeb",
"implementations": [
"eth:0xcC865B0324121b43728176024f58bdbB3afd6f29"
]
}
],
"description": "This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDC) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDC-IOU but is sent to Safe.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Katana vaultBridge Multisig 3",
"upgradableBy": [
{
"name": "Katana vaultBridge Multisig 3",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x53E82ABbb12638F09d9e624578ccB666217a765e#code"
},
{
"name": "vbUSDT",
"isVerified": true,
"address": "eth:0x6d4f9f9f8f0155509ecd6Ac6c544fF27999845CC",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x377a9e5df2882DC1DF8A0bD162cbc640eA634010"
],
"implementations": [
"eth:0xcC865B0324121b43728176024f58bdbB3afd6f29"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747909835,
"transactionHash": "0xe5faaacdd7685d1b7fb939c740c7830a0fd07a48a7dc4495a3862e2a9cbff0cd",
"implementations": [
"eth:0xcC865B0324121b43728176024f58bdbB3afd6f29"
]
}
],
"description": "This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDT) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDT-IOU but is sent to Safe.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Katana vaultBridge Multisig 1",
"upgradableBy": [
{
"name": "Katana vaultBridge Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6d4f9f9f8f0155509ecd6Ac6c544fF27999845CC#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x14Be6579A41342ca6B402ec85E7be538e6Ade951",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Katana vaultBridge Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x14Be6579A41342ca6B402ec85E7be538e6Ade951#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Polygon Multisig 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832#code"
},
{
"name": "PreimageOracle",
"isVerified": true,
"address": "eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x263b251D67BB154DD6b8352539466ACE7948ED56",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Polygon Labs Engineering/Security Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x263b251D67BB154DD6b8352539466ACE7948ED56#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x377a9e5df2882DC1DF8A0bD162cbc640eA634010",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Katana vaultBridge Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x377a9e5df2882DC1DF8A0bD162cbc640eA634010#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x420693B32113a0e00Eb9f3315D5D5ec3b32C2d69",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Katana vaultBridge Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x420693B32113a0e00Eb9f3315D5D5ec3b32C2d69#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0x6463dEE3828677F6270d83d45408044fc5eDB908",
"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/0x6463dEE3828677F6270d83d45408044fc5eDB908#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x6d0ff67fb427422AfF35EEa8596949B374b09a52",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Polygon Multisig 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6d0ff67fb427422AfF35EEa8596949B374b09a52#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x8970650CF3f1E57cA804C65B4DBcFf698789FE30",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Katana vaultBridge Multisig 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8970650CF3f1E57cA804C65B4DBcFf698789FE30#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0xA7A26BbA1191a064637d7B0b23896589F4e4d22D",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xA7A26BbA1191a064637d7B0b23896589F4e4d22D#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0xaA8a62563CFe4E36118ED479B5486F503b438376",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832"
],
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1772552963,
"transactionHash": "0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961",
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Polygon Multisig 2",
"upgradableBy": [
{
"name": "Polygon Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xaA8a62563CFe4E36118ED479B5486F503b438376#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0xb41151Bf2B989d3771caBd5BCb5C435949543322",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832"
],
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1772552963,
"transactionHash": "0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961",
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
}
],
"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 Polygon Multisig 2",
"upgradableBy": [
{
"name": "Polygon Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb41151Bf2B989d3771caBd5BCb5C435949543322#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xD1e389c046FB734D2a0c7C390312210c408ba832",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Katana vaultBridge Multisig 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD1e389c046FB734D2a0c7C390312210c408ba832#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
],
"katana": [
{
"name": "AgglayerBridgeL2",
"isVerified": true,
"address": "katana:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"katana:0x094B1B2322F1A8927B61dfAf686CA78d71C6cbf6"
]
},
"chain": "katana",
"pastUpgrades": [
{
"timestamp": 1747842266,
"transactionHash": "0xb3c92e7a065f876cfe017a4bed5a966e28075d693b5ef221fa49b2ff0d727c7c",
"implementations": [
"katana:0xd4AC5935c9AeA32FC120D52B22Ee41C9C5f82DEe"
]
},
{
"timestamp": 1750928669,
"transactionHash": "0x2095014c39cf800cb6f965f51435d55108c75ef70ff4e83f148ba99fd115684a",
"implementations": [
"katana:0xc8EC6E02AF5D7E2EBf590601979401A696Bf820e"
]
},
{
"timestamp": 1751061868,
"transactionHash": "0xe21aaf644474404b9c5441f48e95467afaaec140d8435b9d3f31474e59a05dd2",
"implementations": [
"katana:0xe3E6F722b047Ce3B1F733D9c5B0609DA4e9D1FAb"
]
},
{
"timestamp": 1772560429,
"transactionHash": "0xff4926542308f9cea5b8b77f9c6d20a840b61878991d25981ca96b55c3a830ec",
"implementations": [
"katana:0x094B1B2322F1A8927B61dfAf686CA78d71C6cbf6"
]
}
],
"description": "Agglayer bridge contract. Supports interop with Ethereum and blockchains connected to Agglayer. Escrows all preminted ETH because it cannot mint on the L2. The globalExitRootManager is used as an oracle to validate bridge messages against.\n* Roles:\n * **admin**: ProxyAdmin; ultimately GnosisSafeL2, SafeL2\n * **bridgeManager**: GnosisSafeL2\n * **emergencyBridgePauser**: GnosisSafeL2\n * **emergencyBridgeUnpauser**: GnosisSafeL2\n * **getProxiedTokensManager**: GnosisSafeL2",
"upgradableBy": [
{
"name": "GnosisSafeL2",
"delay": "12h"
},
{
"name": "SafeL2",
"delay": "12h"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "GlobalExitRootManagerL2SovereignChain",
"isVerified": true,
"address": "katana:0xa40D5f56745a118D0906a34E69aeC8C0Db1cB8fA",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"katana:0x0200143Fa295EE4dffEF22eE2616c2E008D81688"
]
},
"chain": "katana",
"pastUpgrades": [],
"description": "Manages Layer 2 and global merkle roots (exit roots). It stores exit roots written during bridge deposits, accepts imported global exit roots from a permissioned address, and manages historical roots.\n* Roles:\n * **admin**: ProxyAdmin; ultimately GnosisSafeL2, SafeL2\n * **globalExitRootRemover**: GnosisSafeL2, GnosisSafeL2 if the bridge is paused\n * **globalExitRootUpdater**: EOA 3",
"upgradableBy": [
{
"name": "GnosisSafeL2",
"delay": "12h"
},
{
"name": "SafeL2",
"delay": "12h"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0xa40D5f56745a118D0906a34E69aeC8C0Db1cB8fA#code"
},
{
"name": "L2Timelock",
"isVerified": true,
"address": "katana:0xBBa0935Fa93Eb23de7990b47F0D96a8f75766d13",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "katana",
"description": "A timelock with access control. The current minimum delay is 12h.\n* Roles:\n * **timelockAdmin**: GnosisSafeL2 (no delay if in emergency state), SafeL2 (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0xBBa0935Fa93Eb23de7990b47F0D96a8f75766d13#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "katana:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "katana",
"description": "* Roles:\n * **owner**: L2Timelock",
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "DeployerWhitelist",
"isVerified": true,
"address": "katana:0x4200000000000000000000000000000000000002",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0xc0d3c0d3C0d3c0D3c0d3C0D3c0d3C0d3c0D30002"
]
},
"chain": "katana",
"pastUpgrades": [],
"description": "* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000002#code"
},
{
"name": "L2CrossDomainMessenger",
"isVerified": true,
"address": "katana:0x4200000000000000000000000000000000000007",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0xC0d3c0d3c0D3c0D3C0d3C0D3C0D3c0d3c0d30007"
]
},
"chain": "katana",
"pastUpgrades": [],
"description": "The L2CrossDomainMessenger (L2xDM) contract sends messages from L2 to L1, and relays messages from L1 onto L2 with a system tx. In the event that a message sent from L2 to L1 is rejected for exceeding the L1 gas limit, it can be resubmitted via this contract’s replay function.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000007#code"
},
{
"name": "GasPriceOracle",
"isVerified": true,
"address": "katana:0x420000000000000000000000000000000000000F",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0x4f1db3c6AbD250ba86E0928471A8F7DB3AFd88F1"
]
},
"chain": "katana",
"pastUpgrades": [
{
"timestamp": 1746806401,
"transactionHash": "0xb6560306ccb0e772b132a8a6dd78244c0d7ac270c80baba40f95006184926c30",
"implementations": [
"katana:0x93e57A196454CB919193fa9946f14943cf733845"
]
},
{
"timestamp": 1773066601,
"transactionHash": "0xc7c01d75d0b6950fcd30b448cba848e9841ab9ebb6b46eed9ecde4ba05ad0fd9",
"implementations": [
"katana:0x4f1db3c6AbD250ba86E0928471A8F7DB3AFd88F1"
]
}
],
"description": "Provides the current gas price for L2 transactions.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x420000000000000000000000000000000000000F#code"
},
{
"name": "SequencerFeeVault",
"isVerified": true,
"address": "katana:0x4200000000000000000000000000000000000011",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0x8A52Ca0E8459460C6861C117285E6973Ecf7EE3f"
]
},
"chain": "katana",
"pastUpgrades": [
{
"timestamp": 1751048222,
"transactionHash": "0xbfd0fa2d55165b0f6a787f0cd5ec9fe057e088f52556ca7b3d89bdf206961ae6",
"implementations": [
"katana:0x8A52Ca0E8459460C6861C117285E6973Ecf7EE3f"
]
}
],
"description": "Collects the sequencer fees.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2\n * **recipient**: SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000011#code"
},
{
"name": "L1BlockNumber",
"isVerified": true,
"address": "katana:0x4200000000000000000000000000000000000013",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0xC0D3C0d3C0D3c0D3C0d3c0D3C0d3c0d3C0d30013"
]
},
"chain": "katana",
"pastUpgrades": [],
"description": "Simple contract that returns the latest L1 block number.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000013#code"
},
{
"name": "L1Block",
"isVerified": true,
"address": "katana:0x4200000000000000000000000000000000000015",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C"
]
},
"chain": "katana",
"pastUpgrades": [
{
"timestamp": 1746806401,
"transactionHash": "0xe992e00998b34075506d2726a274db07a62af6cdd9d527bfda9128114603cfbd",
"implementations": [
"katana:0xFf256497D61dcd71a9e9Ff43967C13fdE1F72D12"
]
},
{
"timestamp": 1773066601,
"transactionHash": "0xcd60191626fa3124e7031235c52f0adf6be545ebbd7cf55641bd9dabcbedaf6a",
"implementations": [
"katana:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C"
]
}
],
"description": "Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000015#code"
},
{
"name": "L2ToL1MessagePasser",
"isVerified": true,
"address": "katana:0x4200000000000000000000000000000000000016",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0xFBF44D0341C03098A1D9C0336e3d5C34E8BFdf1A"
]
},
"chain": "katana",
"pastUpgrades": [
{
"timestamp": 1746747728,
"transactionHash": "0x8ff7fb4b9e07e0ba8436cd4a724fd4029bac1c49ed773e4b750c9d5b529f8a4b",
"implementations": [
"katana:0xFBF44D0341C03098A1D9C0336e3d5C34E8BFdf1A"
]
}
],
"description": "Contract used internally by the L2CrossDomainMessenger to send messages to L1. It can also be used directly as a low-level interface.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000016#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "katana:0x4200000000000000000000000000000000000018",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0xC0d3C0D3c0d3C0d3c0d3c0D3C0D3C0d3C0D30018"
]
},
"chain": "katana",
"pastUpgrades": [],
"description": "* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2\n * **owner**: SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000018#code"
},
{
"name": "BaseFeeVault",
"isVerified": true,
"address": "katana:0x4200000000000000000000000000000000000019",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0x7e27d992B349B96ea8D32378B7c53b3D58139a2E"
]
},
"chain": "katana",
"pastUpgrades": [
{
"timestamp": 1751047987,
"transactionHash": "0x102958f21f34f8d3e075ce9d124919c15f7c466105ab31957e94d698cceed77b",
"implementations": [
"katana:0x7e27d992B349B96ea8D32378B7c53b3D58139a2E"
]
}
],
"description": "Collects EIP-1559 base fees\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2\n * **recipient**: SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000019#code"
},
{
"name": "L1FeeVault",
"isVerified": true,
"address": "katana:0x420000000000000000000000000000000000001A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0x0ebC896698De72A444d00Dc3d046B432c555EB09"
]
},
"chain": "katana",
"pastUpgrades": [
{
"timestamp": 1751048135,
"transactionHash": "0x7f2d7c48dff15cb514d68ddf9c91d98165e1edaca9317fc22a3f16828311f8b2",
"implementations": [
"katana:0x0ebC896698De72A444d00Dc3d046B432c555EB09"
]
}
],
"description": "Collects the L1 portion of the L2 transaction fees.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2\n * **recipient**: SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x420000000000000000000000000000000000001A#code"
},
{
"name": "OperatorFeeVault",
"isVerified": true,
"address": "katana:0x420000000000000000000000000000000000001b",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0x4fa2Be8cd41504037F1838BcE3bCC93bC68Ff537"
]
},
"chain": "katana",
"pastUpgrades": [
{
"timestamp": 1746806401,
"transactionHash": "0xf162acc8ebbaf9237755736b62331a4817fe27bbbe3712f473ecfa8fee499f7c",
"implementations": [
"katana:0x4fa2Be8cd41504037F1838BcE3bCC93bC68Ff537"
]
}
],
"description": "Holds the 'operator fees' for the L2 network, which are part of the L2 fees that users pay.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x420000000000000000000000000000000000001b#code"
},
{
"name": "SchemaRegistry",
"isVerified": true,
"address": "katana:0x4200000000000000000000000000000000000020",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0xc0d3c0d3c0d3C0d3c0d3C0D3C0D3c0d3C0D30020"
]
},
"chain": "katana",
"pastUpgrades": [],
"description": "Contracts to register schemas for the Ethereum Attestation Service (EAS).\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000020#code"
},
{
"name": "EAS",
"isVerified": true,
"address": "katana:0x4200000000000000000000000000000000000021",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"katana:0x4200000000000000000000000000000000000018"
],
"implementations": [
"katana:0xC0D3c0D3C0d3c0D3c0D3C0D3c0D3c0d3c0d30021"
]
},
"chain": "katana",
"pastUpgrades": [],
"description": "Contract containing the main logic for the Ethereum Attestation Service (EAS).\n* Roles:\n * **admin**: ProxyAdmin; ultimately SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000021#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "katana:0xb30C032b183525de7427f04e79F45Cd19866E124",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "katana",
"description": "Utility library contract for the AgglayerBridgeL2.\n",
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0xb30C032b183525de7427f04e79F45Cd19866E124#code"
},
{
"name": "TokenWrappedBridgeUpgradeable",
"isVerified": true,
"address": "katana:0xF0777a825470092b3Debc9af291634460b8E1a2c",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "katana",
"description": "An ERC-20 implementation designed for cross-chain assets on the L2. It restricts token minting or burning strictly to the primary bridge contract.\n",
"discoveryDrivenData": true,
"url": "https://katanascan.com/address/0xF0777a825470092b3Debc9af291634460b8E1a2c#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1679653127,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherPreminted",
"premintedAmount": "340282366920938463463374607431768211455"
},
"chainId": 1
}
],
"programHashes": [
{
"title": "Aggregation program of OP Succinct",
"description": "Aggregates proofs of correct execution for several consecutive block ranges of OP L2 client. Data availability layer is set to Ethereum blobs.",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/agglayer/op-succinct/tree/v3.10.0-agglayer/programs/aggregation",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install sp1 toolchain version `v6.2.4`: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up v6.2.4`.\n2. Install docker https://docs.docker.com/get-started/get-docker/.\n3. Install `clang` / `libclang` and Go, required by the host-side vkey printing command.\n\nVerify:\n\n1. Checkout the correct tag in [agglayer/op-succinct](https://github.com/agglayer/op-succinct) repo: `git checkout v3.10.0-agglayer`. Commit hash should be `36f20e5265ac77634997424f5817b1548c449183`.\n2. Make sure docker is running: `docker ps`.\n3. Reproducibly rebuild the Ethereum DA range ELF from source: from `programs/range/ethereum` run `cargo prove build --elf-name range-elf-embedded --docker --tag v6.2.4 --output-directory ../../../elf`.\n4. Reproducibly rebuild the aggregation ELF from source: from `programs/aggregation` run `cargo prove build --elf-name aggregation-elf --docker --tag v6.2.4 --output-directory ../../elf`.\n5. From the repo root run `cargo run --release --bin config` to print the Ethereum DA range verification key hash and aggregation verification key hash. The range commitment is the `hash_u32()` digest converted to big-endian bytes.",
"hash": "0x0034587dfb1de8163284d39f3043f5fadfa92f9e03fb3e0315eb469c550fde40"
},
{
"title": "Range program of OP Succinct",
"description": "Proves correct state transition function within an OP L2 client over a range of consecutive L2 blocks. Data availability layer is set to Ethereum blobs.",
"programUrl": "https://github.com/agglayer/op-succinct/tree/v3.10.0-agglayer/programs/range/ethereum",
"proverSystemProject": "sp1hypercube",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install sp1 toolchain version `v6.2.4`: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up v6.2.4`.\n2. Install docker https://docs.docker.com/get-started/get-docker/.\n3. Install `clang` / `libclang` and Go, required by the host-side vkey printing command.\n\nVerify:\n\n1. Checkout the correct tag in [agglayer/op-succinct](https://github.com/agglayer/op-succinct) repo: `git checkout v3.10.0-agglayer`. Commit hash should be `36f20e5265ac77634997424f5817b1548c449183`.\n2. Make sure docker is running: `docker ps`.\n3. Reproducibly rebuild the Ethereum DA range ELF from source: from `programs/range/ethereum` run `cargo prove build --elf-name range-elf-embedded --docker --tag v6.2.4 --output-directory ../../../elf`.\n4. Reproducibly rebuild the aggregation ELF from source: from `programs/aggregation` run `cargo prove build --elf-name aggregation-elf --docker --tag v6.2.4 --output-directory ../../elf`.\n5. From the repo root run `cargo run --release --bin config` to print the Ethereum DA range verification key hash and aggregation verification key hash. The range commitment is the `hash_u32()` digest converted to big-endian bytes.",
"hash": "0x1b04822373ca65680026b5610c1edf424798421b032ef9117b2c264661de246f"
},
{
"title": "Aggchain program of agglayer v1.1.2",
"description": "Verifies state transition of an Agglayer-based chain either by checking a full validity proof or just by checking a registered sequencer signature. Also checks that L1 information on the chain aligns with the values stored on Agglayer.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/provers/tree/v1.1.2/crates/aggchain-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [provers repo](https://github.com/agglayer/provers): `git checkout v1.1.2`. Commit hash should be `f8580024d771580217ded443f85e42919d682595`.\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n4. From the root dir: `cargo make ap-elf` to generate aggchain program elf from sources\n5. Compute vkey hash bytes of the generated `crates/aggchain-proof-program/elf/riscv32im-succinct-zkvm-elf` using SP1 toolchain, e.g. by this simple rust script:\n\n```\nuse sp1_sdk::{HashableKey, Prover, CpuProver};\n\nfn main() {\n let elf_path = std::env::args().nth(1).expect(\"Provide elf_path\");\n let elf_bytes = std::fs::read(&elf_path).expect(\"File read error\");\n let prover = CpuProver::new();\n let (_pk, vkey) = Prover::setup(&prover, &elf_bytes);\n let comm = vkey.hash_bytes();\n let hex: String = comm.iter().\n map(|b| format!(\"{:02x}\", b)).collect();\n println!(\"0x{}\", hex);\n}\n```",
"hash": "0x713f8a687452545141b6cd852472c67742a5c61474b97a136d0d107804affa1f"
},
{
"title": "Aggchain program of agglayer v1.5.0",
"description": "Verifies state transition of an Agglayer-based chain either by checking a full validity proof or just by checking a registered sequencer signature. Also checks that L1 information on the chain aligns with the values stored on Agglayer.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/provers/tree/v1.5.0/crates/aggchain-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [provers repo](https://github.com/agglayer/provers): `git checkout v1.5.0`. Commit hash should be `347a140649383d8f5aa5a14907a45cfa756426af`.\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make ap-elf` to generate aggchain program elf from sources\n4. Compute vkey hash bytes of the generated `crates/aggchain-proof-program/elf/riscv32im-succinct-zkvm-elf` using SP1 toolchain, e.g. by this simple rust script:\n\n```\nuse sp1_sdk::{HashableKey, Prover, CpuProver};\n\nfn main() {\n let elf_path = std::env::args().nth(1).expect(\"Provide elf_path\");\n let elf_bytes = std::fs::read(&elf_path).expect(\"File read error\");\n let prover = CpuProver::new();\n let (_pk, vkey) = Prover::setup(&prover, &elf_bytes);\n let comm = vkey.hash_bytes();\n let hex: String = comm.iter().\n map(|b| format!(\"{:02x}\", b)).collect();\n println!(\"0x{}\", hex);\n}\n```",
"hash": "0x374ee73950cdb07d1b8779d90a8467df232639c13f9536b03f1ba76a2aa5dac6"
},
{
"title": "Aggchain program of agglayer v1.8.0",
"description": "Verifies state transition of an Agglayer-based chain either by checking a full validity proof or just by checking a registered sequencer signature. Also checks that L1 information on the chain aligns with the values stored on Agglayer.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/provers/tree/v1.8.0/crates/aggchain-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\n\nVerify:\n\n1. Checkout the correct branch in [provers repo](https://github.com/agglayer/provers): `git checkout v1.8.0`. Commit hash should be `df2e48ad8432a863bdc0a939108d37a69f4bea4e`\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make ap-elf` to generate aggchain program elf from sources\n4. Compute vkey hash bytes of the generated `crates/aggchain-proof-program/elf/riscv32im-succinct-zkvm-elf` using SP1 toolchain, e.g. by this simple rust script:\n\n```\nuse sp1_sdk::{HashableKey, Prover, CpuProver};\n\nfn main() {\n let elf_path = std::env::args().nth(1).expect(\"Provide elf_path\");\n let elf_bytes = std::fs::read(&elf_path).expect(\"File read error\");\n let prover = CpuProver::new();\n let (_pk, vkey) = Prover::setup(&prover, &elf_bytes);\n let comm = vkey.hash_bytes();\n let hex: String = comm.iter().\n map(|b| format!(\"{:02x}\", b)).collect();\n println!(\"0x{}\", hex);\n}\n```",
"hash": "0x6e38caa6114ac4b9779f647547de9e8f09e9f5cd6194e7134110760d3aa31b53"
},
{
"title": "Aggchain program of agglayer v1.9.2",
"description": "Verifies state transition of an Agglayer-based chain either by checking a full validity proof or just by checking a registered sequencer signature. Also checks that L1 information on the chain aligns with the values stored on Agglayer.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/provers/tree/v1.9.2/crates/aggchain-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [provers repo](https://github.com/agglayer/provers): `git checkout v1.9.2`. Commit hash should be `191952ce5551badd578063e475f9a4f3c5a9b0f4`.\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make ap-elf` to generate aggchain program elf from sources\n4. Compute vkey hash bytes of the generated `crates/aggchain-proof-program/target/elf-compilation/docker/riscv32im-succinct-zkvm-elf/release/aggchain-proof-program` using SP1 toolchain, e.g. by this simple rust script:\n\n```\nuse sp1_sdk::{HashableKey, Prover, CpuProver};\n\nfn main() {\n let elf_path = std::env::args().nth(1).expect(\"Provide elf_path\");\n let elf_bytes = std::fs::read(&elf_path).expect(\"File read error\");\n let prover = CpuProver::new();\n let (_pk, vkey) = Prover::setup(&prover, &elf_bytes);\n let comm = vkey.hash_bytes();\n let hex: String = comm.iter().\n map(|b| format!(\"{:02x}\", b)).collect();\n println!(\"0x{}\", hex);\n}\n```",
"hash": "0x7767a8330ce68dac35265ba15d9eec6722b943cf00dc3b733779e1ae55696f70"
},
{
"title": "Aggchain program of agglayer v2.0.0",
"description": "Verifies state transition of an Agglayer-based chain either by checking a full validity proof or just by checking a registered sequencer signature. Also checks that L1 information on the chain aligns with the values stored on Agglayer.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/provers/tree/v2.0.0/crates/aggchain-proof-program",
"verificationStatus": "successful",
"verificationSteps": "\nPrepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n3. Install pkg-config and OpenSSL development headers, e.g. on Debian/Ubuntu: `sudo apt-get install pkg-config libssl-dev`\n4. Install protobuf compiler, e.g. on Debian/Ubuntu: `sudo apt-get install protobuf-compiler`. Make sure `protoc --version` works.\n\nVerify:\n\n1. Checkout the correct branch in [provers repo](https://github.com/agglayer/provers): `git checkout v2.0.0`. Commit hash should be `5c51190e0c0edd1ee9ba8bc4383bd74f361760e7`.\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make ap-elf` to generate aggchain program elf from sources. The generated ELF should be at `crates/aggchain-proof-program/target/elf-compilation/docker/riscv64im-succinct-zkvm-elf/release/aggchain-proof-program`.\n4. From the root dir: `cargo run -p aggkit-prover -- vkey` to compute vkey hash bytes for the aggchain program. This should print `0x679bc13716cdb49416a9ca9e297b10d76390df2c343690d4172676c207517915`.\n\nNote: `cargo prove vkey --elf ` prints a different SP1 vkey representation for this program, not the `hash_bytes()` program hash used here.\n ",
"hash": "0x679bc13716cdb49416a9ca9e297b10d76390df2c343690d4172676c207517915"
},
{
"title": "Pessimistic program of agglayer 0.3.3-post4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.3.3-post.4`. Commit hash should be `df072abc86fa89e12b17204246325983272a1141`\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer v0.4.4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.4.4`. Commit hash should be `caac9f06bc7cb1cf89912dbb4dffa4d594a00bd5`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
},
{
"title": "Pessimistic program of agglayer v0.5.1",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.5.1/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.5.1`. Commit hash should be `f7bb86695b03d363c3d0d15ff7f2d8b386e58c91`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv64im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x00d14f977a6ec393014f300ad78d0761dc29435d3fa1e2626fa466bd3343578e"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "the contracts or their dependencies (e.g. AggLayerGateway) receive a malicious code upgrade. There is no delay on upgrades."
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0x3971EB866AA9b2b8aFEa8a7C816F3b7e8b195a35",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x2af8a383C395EBa6551E674EeD02344936fE36f5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693880903,
"transactionHash": "0x3dcaff162fff51f2f6ba6264967bb5a3e6e9aefeb290b159109038ae38455e10",
"implementations": [
"eth:0x2af8a383C395EBa6551E674EeD02344936fE36f5"
]
}
],
"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 SecurityCouncilTokenOwners\n * **batcherHash**: EOA 1\n * **owner**: Timelock; ultimately SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3971EB866AA9b2b8aFEa8a7C816F3b7e8b195a35#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0x46B8bB4C5dd27bB42807Db477af4d1a7C8A5B746",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x675924D68200F2C967Ba12349d5d510676C7214c"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693880687,
"transactionHash": "0xc077167cfc27b631ad397c64fd72bcaf2c8fcc7c9f08498eb247abc0094354a5",
"implementations": [
"eth:0x675924D68200F2C967Ba12349d5d510676C7214c"
]
}
],
"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 SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x46B8bB4C5dd27bB42807Db477af4d1a7C8A5B746#code"
},
{
"name": "L1ERC721Bridge",
"isVerified": true,
"address": "eth:0x46d07221dfC313afe1BF104F4bB1f185301D65B9",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0xbB1cDB5Cc35B1c9801DA8772aCBcDbd323A912D9"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693288091,
"transactionHash": "0xb5f090dda7636b95e017de8e0619fc4d6f706b7b4a2a9bbd07996bd85ef70bad",
"implementations": [
"eth:0x0257e4d92C00C9EfcCa1d641b224d7d09cfa4522"
]
},
{
"timestamp": 1693880735,
"transactionHash": "0x2aaca06bcfebdfe7511fe20033c1af5dd9c4cae053340995621ce10da29392ec",
"implementations": [
"eth:0xbB1cDB5Cc35B1c9801DA8772aCBcDbd323A912D9"
]
}
],
"description": "Used to bridge ERC-721 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x46d07221dfC313afe1BF104F4bB1f185301D65B9#code"
},
{
"name": "L1StandardBridge",
"isVerified": true,
"address": "eth:0x827962404D7104202C5aaa6b929115C8211d9596",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x404133EdF24F56b7dD9c6d89Fb56bb35244461B4"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693880711,
"transactionHash": "0xe67e8f042d304b70f1fd718343378219e0be9c49ed4a8242f8f96ea9ced2c0fd",
"implementations": [
"eth:0x404133EdF24F56b7dD9c6d89Fb56bb35244461B4"
]
}
],
"description": "The main entry point to deposit ERC20 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x827962404D7104202C5aaa6b929115C8211d9596#code"
},
{
"name": "ZKProofVerifier",
"isVerified": true,
"address": "eth:0x005DDC466C804c79adB079c120347dDE48132105",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x9f2Ec7196596581806218D3D183581b00e5a444E"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739162903,
"transactionHash": "0x78625237350cb2047aa1ec6392d2402dabf1a5d44d54e0142ae27d19546c8c74",
"implementations": [
"eth:0x9f2Ec7196596581806218D3D183581b00e5a444E"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x005DDC466C804c79adB079c120347dDE48132105#code"
},
{
"name": "L2OutputOracle",
"isVerified": true,
"address": "eth:0x180c77aE51a9c505a43A2C7D81f8CE70cacb93A6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x4B68F22d96a04F6d80e284C20A648f8Da2fD569b"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693880807,
"transactionHash": "0xf1ce5facb5ac6b858552c8af4867797e1c69ad89629f1c836b7f489770683783",
"implementations": [
"eth:0x14126FFa3889a026A79F0f99FaE80B3dc9E38095"
]
},
{
"timestamp": 1729744127,
"transactionHash": "0xb2a500d332d7b3348b8ffa91aba9b8a5a3bc018b44225a1b6e99605c56c6564e",
"implementations": [
"eth:0x4B68F22d96a04F6d80e284C20A648f8Da2fD569b"
]
}
],
"description": "The L2OutputOracle contract contains a list of proposed state roots which Proposers assert to be a result of block execution. Anyone can participate as a Proposer by depositing in the ValidatorPool. A root can be proposed every 1800 blocks (2s block time).\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x180c77aE51a9c505a43A2C7D81f8CE70cacb93A6#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0x22605A12cB77Fe420B0cC1263cEb58a77352FDc1",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0xe44da6e9fA92E3FD897Da84d38fa6B9322Dd22c3"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693881035,
"transactionHash": "0xc92251d7f8a454b533f0e272ba324cb7572ca4142aabf17cd29821e1d8ebfe1b",
"implementations": [
"eth:0x595E1b330892Fcbf18b2BF099DE501Ad4d6A07C4"
]
},
{
"timestamp": 1700638271,
"transactionHash": "0xf4e23f51e23f9549e6bed354f5330524c65d5796b765bd38fdacdb6758e7f8ff",
"implementations": [
"eth:0xe44da6e9fA92E3FD897Da84d38fa6B9322Dd22c3"
]
}
],
"description": "A standard timelock with access control. The current minimum delay is 0s.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners\n * **canceller**: UpgradeGovernor; ultimately SecurityCouncilTokenOwners\n * **executor**: UpgradeGovernor; ultimately SecurityCouncilTokenOwners\n * **proposer**: UpgradeGovernor; ultimately SecurityCouncilTokenOwners\n * **timelockAdmin**: Timelock, UpgradeGovernor; ultimately SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x22605A12cB77Fe420B0cC1263cEb58a77352FDc1#code"
},
{
"name": "ValidatorManager",
"isVerified": true,
"address": "eth:0x232277d9672eEdd53c4B26C0F386C2Eb88DC7363",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x8687b9ecD75ea00997a999B9DdE54C735DE9DEE1"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1729744127,
"transactionHash": "0xb2a500d332d7b3348b8ffa91aba9b8a5a3bc018b44225a1b6e99605c56c6564e",
"implementations": [
"eth:0x0Ed7bb332F7307F5c97E566E74A4A73ab6671082"
]
},
{
"timestamp": 1739162903,
"transactionHash": "0x78625237350cb2047aa1ec6392d2402dabf1a5d44d54e0142ae27d19546c8c74",
"implementations": [
"eth:0x8687b9ecD75ea00997a999B9DdE54C735DE9DEE1"
]
}
],
"description": "Manages the set of Proposers (Validators in Kroma) and selects the next proposer with the window to submit the output root within 30m, after which anyone can propose for them. It is also the entry point for other contracts, such as the L2OutputOracle and the Colosseum, which distribute output rewards and slash challenge losers. It makes successive calls to the AssetManager to apply changes to the proposers' assets.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x232277d9672eEdd53c4B26C0F386C2Eb88DC7363#code"
},
{
"name": "KromaPortal",
"isVerified": true,
"address": "eth:0x31F648572b67e60Ec6eb8E197E1848CC5F5558de",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x5C8eE8323a33ebBF3ea3c6c3b84DACFca44A9316"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693880879,
"transactionHash": "0x3166f6173eb630e96f74c5c9d6765cd93e39566dc592a423fddae11eb09f8d17",
"implementations": [
"eth:0x381F53695230BAF83a39D1a08304D233A35730Fa"
]
},
{
"timestamp": 1739162903,
"transactionHash": "0x78625237350cb2047aa1ec6392d2402dabf1a5d44d54e0142ae27d19546c8c74",
"implementations": [
"eth:0x5C8eE8323a33ebBF3ea3c6c3b84DACFca44A9316"
]
}
],
"description": "This is a fork of the standard OP stack OptimismPortal contract, the main entry point to deposit funds from L1 to L2. It also allows to prove and finalize withdrawals.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners\n * **guardian**: KromaSecurityCouncil",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x31F648572b67e60Ec6eb8E197E1848CC5F5558de#code"
},
{
"name": "ZKMerkleTrie",
"isVerified": true,
"address": "eth:0x339208824010425cBE73201ceD4372308ACD610B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Merkle Trie contract used to prove withdrawals that were initiated in the legacy system, deprecated for new withdrawals and succeeded by a merkle tree library in the KromaPortal.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x339208824010425cBE73201ceD4372308ACD610B#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x665c23A5722B6A237fa6Be2B49c0A94504db1edd#code"
},
{
"name": "ZkVerifier",
"isVerified": true,
"address": "eth:0x6deb6a630D7b486c1C08d4016AEe3835a2F52Fa7",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x4cd05aB629055a449617a28E3466660403eA7126"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693288163,
"transactionHash": "0x6ab34004b7846a1d1406bc53825ee386d905f8499c72ab9bfe07f4721d773ae9",
"implementations": [
"eth:0xD3b1D396330EA8dd79615f12433B856160d7D8B4"
]
},
{
"timestamp": 1693539719,
"transactionHash": "0x66fecb7dffc867d91d6f840e65fc28f81ad1301204cfca38b3bbb22146ffa361",
"implementations": [
"eth:0x7E79726560B140fd6e089547bD049509F5423BFf"
]
},
{
"timestamp": 1718950391,
"transactionHash": "0xe56ba658fc810d727438e3bb124aa2e8ef1c25e5c21cbfe9715983ba5ce65a63",
"implementations": [
"eth:0x4cd05aB629055a449617a28E3466660403eA7126"
]
}
],
"description": "ZK verifier used to verify the last step of a legacy zkEVM proof, which corresponds to a block.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6deb6a630D7b486c1C08d4016AEe3835a2F52Fa7#code"
},
{
"name": "Colosseum",
"isVerified": true,
"address": "eth:0x713C2BEd44eB45D490afB8D4d1aA6F12290B829a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0xBFcA810D1c26a3aC6F81a32Ab5C023F24bE93dAC"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693880831,
"transactionHash": "0x70494d42df3a5668be6ac9bd1a46cdcfebe8980cae31dddcb7ec86c97200d60f",
"implementations": [
"eth:0x7526F997ea040B3949415c3a44e708273863AA2b"
]
},
{
"timestamp": 1712304899,
"transactionHash": "0xd420f3a8af8254ca1095409b3c4c2a3a1faa26fbe50c0477663e1bcb39727dfc",
"implementations": [
"eth:0x311b4A33b6dC4e080eE0d98caAaf8dF86C833066"
]
},
{
"timestamp": 1714032551,
"transactionHash": "0x0fb2eca6483b1d042af562bf0e8e804c1356df56d7b8094e9d6edd4b63edf715",
"implementations": [
"eth:0xb87eaB624EE684C1799f1E8b24936A1c90759eEc"
]
},
{
"timestamp": 1729744127,
"transactionHash": "0xb2a500d332d7b3348b8ffa91aba9b8a5a3bc018b44225a1b6e99605c56c6564e",
"implementations": [
"eth:0xAB54b3e775f645cf4486039bfA4dA539E70c9f99"
]
},
{
"timestamp": 1739162903,
"transactionHash": "0x78625237350cb2047aa1ec6392d2402dabf1a5d44d54e0142ae27d19546c8c74",
"implementations": [
"eth:0xBFcA810D1c26a3aC6F81a32Ab5C023F24bE93dAC"
]
}
],
"description": "Contract used to challenge state roots and prove fraud. If successful, the wrong state root in the L2OutputOracle is replaced.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners\n * **security_council**: KromaSecurityCouncil",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x713C2BEd44eB45D490afB8D4d1aA6F12290B829a#code"
},
{
"name": "USDCBridge",
"isVerified": true,
"address": "eth:0x7e1Bdb9ee75B6ef1BCAAE3B1De1c616C7B11ef6e",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x22605A12cB77Fe420B0cC1263cEb58a77352FDc1"
],
"implementations": [
"eth:0xE4e9F3AD8A6F224c4b39854D3550AD258441AfE3"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1700122631,
"transactionHash": "0x04a7ec0dad1a7a0ebf4cb2bd1f983b19d43e57972e91c4e73aabf2bff3530014",
"implementations": [
"eth:0xE4e9F3AD8A6F224c4b39854D3550AD258441AfE3"
]
}
],
"description": "* Roles:\n * **admin**: Timelock; ultimately SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7e1Bdb9ee75B6ef1BCAAE3B1De1c616C7B11ef6e#code"
},
{
"name": "AssetManager",
"isVerified": true,
"address": "eth:0xa295310DE52b86F236A815AFb2f518F3C0F5A6D3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0xf34fa8D3ac4AAcAD8307da8C8E51bDddCDa60Ede"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1729744127,
"transactionHash": "0xb2a500d332d7b3348b8ffa91aba9b8a5a3bc018b44225a1b6e99605c56c6564e",
"implementations": [
"eth:0xf34fa8D3ac4AAcAD8307da8C8E51bDddCDa60Ede"
]
}
],
"description": "Manages the delegation and undelegation of KRO tokens and Kroma Guardian House (KGH) NFTs for Proposers (Kroma Validators) and distributes rewards.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa295310DE52b86F236A815AFb2f518F3C0F5A6D3#code"
},
{
"name": "UpgradeGovernor",
"isVerified": true,
"address": "eth:0xb3c415c2Aad428D5570208e1772cb68e7D06a537",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x64F8F4EB207D51F74caf6db644Bf710Ad86989b3"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693881059,
"transactionHash": "0x1474ff104cbd078775403ee9b33a18394d045e5e00e03e94586e73a3596cbde0",
"implementations": [
"eth:0x2a51e099CC7AF922CcDe7F3db909DC7b71B8D030"
]
},
{
"timestamp": 1700638271,
"transactionHash": "0xf4e23f51e23f9549e6bed354f5330524c65d5796b765bd38fdacdb6758e7f8ff",
"implementations": [
"eth:0x64F8F4EB207D51F74caf6db644Bf710Ad86989b3"
]
}
],
"description": "A governance proxy contract using token voting with SecurityCouncilTokenOwners as identification of actors allowed to vote/sign a proposal which is passed to the Timelock afterwards.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners\n * **token**: SecurityCouncilTokenOwners",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb3c415c2Aad428D5570208e1772cb68e7D06a537#code"
},
{
"name": "ValidatorPool",
"isVerified": true,
"address": "eth:0xFdFF462845953D90719A78Fd12a2d103541d2103",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0xE36776FFA20a9206dcD742C981402a3f3d81938d"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693880783,
"transactionHash": "0x31c5282eb4cc1bcf3b3a3fbbbb0116c0ee335b4ccabd497f02b2761b0bc65dbd",
"implementations": [
"eth:0x6e1781678ffE6CDc109fd3bC0833c47BD0F23de1"
]
},
{
"timestamp": 1700638271,
"transactionHash": "0xf4e23f51e23f9549e6bed354f5330524c65d5796b765bd38fdacdb6758e7f8ff",
"implementations": [
"eth:0x3eb033BAc5c449bDcb6D082c4f728eDAfC8D75fa"
]
},
{
"timestamp": 1712304899,
"transactionHash": "0xd420f3a8af8254ca1095409b3c4c2a3a1faa26fbe50c0477663e1bcb39727dfc",
"implementations": [
"eth:0x8EDc4cCa2aF96f5D5141d55333043a65c3f59Ec4"
]
},
{
"timestamp": 1729744127,
"transactionHash": "0xb2a500d332d7b3348b8ffa91aba9b8a5a3bc018b44225a1b6e99605c56c6564e",
"implementations": [
"eth:0xE36776FFA20a9206dcD742C981402a3f3d81938d"
]
}
],
"description": "Contract used to manage the Proposers. Anyone can submit a deposit and bond to a state root, or create a challenge. It also manages the Proposer rotation for each submittable block using a random selection. If the selected proposer fails to publish a root within 30m then the submission becomes open to everyone.\n* Roles:\n * **admin**: ProxyAdmin; ultimately SecurityCouncilTokenOwners\n * **security_council**: KromaSecurityCouncil",
"upgradableBy": [
{
"name": "SecurityCouncilTokenOwners",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFdFF462845953D90719A78Fd12a2d103541d2103#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x31F648572b67e60Ec6eb8E197E1848CC5F5558de",
"sinceTimestamp": 1693880555,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x31F648572b67e60Ec6eb8E197E1848CC5F5558de",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x5C8eE8323a33ebBF3ea3c6c3b84DACFca44A9316"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693880879,
"transactionHash": "0x3166f6173eb630e96f74c5c9d6765cd93e39566dc592a423fddae11eb09f8d17",
"implementations": [
"eth:0x381F53695230BAF83a39D1a08304D233A35730Fa"
]
},
{
"timestamp": 1739162903,
"transactionHash": "0x78625237350cb2047aa1ec6392d2402dabf1a5d44d54e0142ae27d19546c8c74",
"implementations": [
"eth:0x5C8eE8323a33ebBF3ea3c6c3b84DACFca44A9316"
]
}
],
"description": "Main entry point for users depositing ETH.",
"url": "https://etherscan.io/address/0x31F648572b67e60Ec6eb8E197E1848CC5F5558de#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x827962404D7104202C5aaa6b929115C8211d9596",
"sinceTimestamp": 1693880555,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x827962404D7104202C5aaa6b929115C8211d9596",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x665c23A5722B6A237fa6Be2B49c0A94504db1edd"
],
"implementations": [
"eth:0x404133EdF24F56b7dD9c6d89Fb56bb35244461B4"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1693880711,
"transactionHash": "0xe67e8f042d304b70f1fd718343378219e0be9c49ed4a8242f8f96ea9ced2c0fd",
"implementations": [
"eth:0x404133EdF24F56b7dD9c6d89Fb56bb35244461B4"
]
}
],
"description": "Main entry point for users depositing ERC20 tokens that do not require custom gateway.",
"url": "https://etherscan.io/address/0x827962404D7104202C5aaa6b929115C8211d9596#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x7e1Bdb9ee75B6ef1BCAAE3B1De1c616C7B11ef6e",
"sinceTimestamp": 1700122827,
"tokens": [
"USDC"
],
"contract": {
"isVerified": true,
"address": "eth:0x7e1Bdb9ee75B6ef1BCAAE3B1De1c616C7B11ef6e",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x22605A12cB77Fe420B0cC1263cEb58a77352FDc1"
],
"implementations": [
"eth:0xE4e9F3AD8A6F224c4b39854D3550AD258441AfE3"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1700122631,
"transactionHash": "0x04a7ec0dad1a7a0ebf4cb2bd1f983b19d43e57972e91c4e73aabf2bff3530014",
"implementations": [
"eth:0xE4e9F3AD8A6F224c4b39854D3550AD258441AfE3"
]
}
],
"description": "Main entry point for users depositing USDC.",
"url": "https://etherscan.io/address/0x7e1Bdb9ee75B6ef1BCAAE3B1De1c616C7B11ef6e#code"
},
"chain": "ethereum",
"includeInTotal": true,
"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
}
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Diamond",
"isVerified": true,
"address": "eth:0xc29d04A93F893700015138E3E334eB828dAC3cef",
"upgradeability": {
"proxyType": "EIP2535 diamond proxy",
"admins": [],
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1740009695,
"transactionHash": "0x303a3be5647b6474268d2c9bac62d2a4852abe503ad8eb2c71fc85c63881cfbd",
"implementations": [
"eth:0x0665d51e2342F5D5EAEaAaA175C6fdEEf122c542",
"eth:0xff6fb8160DC28260d4027C80eAd7e1eD147c963F",
"eth:0xbE8988304816cbbd36624567AFe1A223DBF58c82",
"eth:0x8480803516B7390Ff9C57eC4dD233B634FB493B8"
]
},
{
"timestamp": 1740009695,
"transactionHash": "0x303a3be5647b6474268d2c9bac62d2a4852abe503ad8eb2c71fc85c63881cfbd",
"implementations": [
"eth:0x0665d51e2342F5D5EAEaAaA175C6fdEEf122c542",
"eth:0xff6fb8160DC28260d4027C80eAd7e1eD147c963F",
"eth:0xbE8988304816cbbd36624567AFe1A223DBF58c82",
"eth:0x8480803516B7390Ff9C57eC4dD233B634FB493B8"
]
},
{
"timestamp": 1742293595,
"transactionHash": "0xc0985a7dad204c5f7efd6ac87d9877049570eee2fd4f9100f3258b6174cae43e",
"implementations": [
"eth:0x0665d51e2342F5D5EAEaAaA175C6fdEEf122c542",
"eth:0xff6fb8160DC28260d4027C80eAd7e1eD147c963F",
"eth:0xbE8988304816cbbd36624567AFe1A223DBF58c82",
"eth:0x8480803516B7390Ff9C57eC4dD233B634FB493B8"
]
},
{
"timestamp": 1742928599,
"transactionHash": "0x4b3cb9b8f9a1aea99e804b16f63ec89011315bde09b37ea60f77b2d1d1e2b572",
"implementations": [
"eth:0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb",
"eth:0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1",
"eth:0x36b026c39125964D99596CE302866B5A59E4dE27",
"eth:0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800"
]
},
{
"timestamp": 1747255211,
"transactionHash": "0x37a2cb789916112d5c2824569ee4f44d4078b9ab00b55017eebf83124309b54c",
"implementations": [
"eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4",
"eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4",
"eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f",
"eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490"
]
},
{
"timestamp": 1751481779,
"transactionHash": "0x8d2c504c58a659511bef547888186da42708e16923743741cd11acf4c6d908b3",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1755181427,
"transactionHash": "0xe1e89cb3eb4b704457d700ce847e9f682c50ef505c08b5ca0873a833e9d4ff2a",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1763413091,
"transactionHash": "0xd0833923639a4693c45fe165c6d30094dbfbc7c0b9e77b89981696519eb579a9",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1769715095,
"transactionHash": "0x54184d1aa0137620015290fe57ef7376cc15718acb77989eec3b7f4d0e0d14e5",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1780515515,
"transactionHash": "0x8f7d04ce7012bfb248543385dc44825a6d21c4752f98bff93eba04da47368d4e",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
}
],
"description": "The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n* Roles:\n * **getAdmin**: LensZkEvmAdmin; ultimately Lens Multisig\n * **validators**: ValidatorTimelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc29d04A93F893700015138E3E334eB828dAC3cef#code"
},
{
"name": "AvailL1DAValidator",
"isVerified": true,
"address": "eth:0x8f50d93B9955B285f787043B30B5F51D09bE0120",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract that verifies that the validiums data was made available on Avail by querying the AvailBridgeV1 on Ethereum for a merkle proof of inclusion.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8f50d93B9955B285f787043B30B5F51D09bE0120#code"
},
{
"name": "BridgeHub",
"isVerified": true,
"address": "eth:0x303a465B659cBB0ab36eE643eA362c509EEb5213",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717520639,
"transactionHash": "0xdbb03a14ea223de3db4ac0916e78123bd0a1dde68e98952326d8382d29ac4d61",
"implementations": [
"eth:0x12f893689f9603991a8c22C249FFd0509Be95661"
]
},
{
"timestamp": 1725887363,
"transactionHash": "0x21aec24a9df97ce4886d699314be627b0818da4d1987349421fb3df102c43f2b",
"implementations": [
"eth:0x509dA1BE24432F8804C4A9FF4a3c3f80284CDd13"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0x0029e562c0b54C0b88cB22adF4346DbfEC87400c"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xb720523EC3c615b069453bF4B0584CEbF034706f"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xcdd748d4A80CE6831080f1dA2CA9084CDa87Cc87"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x08A98B1048Fb61E9Fff7d7d98305aC6286Ae9F32"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
}
],
"description": "The main registry (hub) for all the contracts in the ZK stack cluster and central entrypoint for bridge transactions. Stores important mappings like from chainId to diamond address, from chainId to parent CTM, from chainId to base token etc. A clone of Bridgehub is also deployed on each L2 chain, but this clone is only used on settlement layers.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x303a465B659cBB0ab36eE643eA362c509EEb5213#code"
},
{
"name": "MessageRoot",
"isVerified": true,
"address": "eth:0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109035,
"transactionHash": "0xc47e24e8cc6c7a493bbb1a46b74f1ff113fad2e35d7596aa688df5bf0402fc65",
"implementations": [
"eth:0x19347Fb8eD3E8e35eb4a01c8B18Bd330194Cf0ad"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x382fb241396eA915108e7B7Ce1adE1322bA73aeE"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
}
],
"description": "Aggregates remote bridge message roots from all ZK stack chains. To be used with the Gateway when deployed.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD#code"
},
{
"name": "CTMDeploymentTracker",
"isVerified": true,
"address": "eth:0x6078F6B379f103de1Aa912dc46bb8Df0c8809860",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109203,
"transactionHash": "0x8b5a21b3473a638022e84097a99c4668bb0a454686b737e87957729c4822741b",
"implementations": [
"eth:0x1E405E5cdF127Dc98Eb490AB0e97345f892Ff7E1"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
}
],
"description": "Asset deployment tracker where the 'asset' is a ChainTypeManager. The registering of asset IDs for ChainTypeManagers is necessary to be able to migrate them to a given settlement layer, for example the Gateway.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6078F6B379f103de1Aa912dc46bb8Df0c8809860#code"
},
{
"name": "RollupL1DAValidator",
"isVerified": true,
"address": "eth:0x72213dfe8CA61B0A782970dCFebFb877778f9119",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract that verifies the data availability of ethereum calldata and blobs. Can be used by ZK stack rollups as the L1 part of a DAValidator pair.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x72213dfe8CA61B0A782970dCFebFb877778f9119#code"
},
{
"name": "ChainTypeManager",
"isVerified": true,
"address": "eth:0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x4aB7204e4205c96C32E23ADa9191720976dC084f"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717520663,
"transactionHash": "0x514bbf46d227eee8567825bf5c8ee1855aa8a1916f7fee7b191e2e3d5ecba849",
"implementations": [
"eth:0x8279B7E48fA074f966385d87AEf29Bd031e54fD5"
]
},
{
"timestamp": 1722934619,
"transactionHash": "0xc1e73b06359759201b76ab7654e0bd49011f33c0230dfc24423985fbf36ea817",
"implementations": [
"eth:0xed1Dc7F0Be2B19cb02a2476150C8ea24A37c5274"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0xb39B175a5E0945F2FB6A7F31764c0e31D9cF5b75"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xA3bCcAEe38cb0273A979118a0DE483E47D50F6Cb"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0x6D598c77AF57Bfa17201483400615c61819dD45A"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x345314c7E4af84B763d98d23f772622E23AfB5CE"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x4aB7204e4205c96C32E23ADa9191720976dC084f"
]
}
],
"description": "Defines L2 diamond contract versions, creation and upgrade data and the proof system for all ZK stack chains connected to it. ZK chains are children of this central contract and can only upgrade to versions that were previously registered here. The current protocol version is 0,29,5.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C#code"
},
{
"name": "L1Nullifier",
"isVerified": true,
"address": "eth:0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717521479,
"transactionHash": "0xce3d72f23297a281cb58502dcc6a6c029489316a2faf9c4ef83141b1b254017c",
"implementations": [
"eth:0xCba1aF8f0bB223b2544F8eB8f69d1c7960f788dB"
]
},
{
"timestamp": 1724658671,
"transactionHash": "0xaec33529b74f8f9d56d7aa568c6358be299228a85e49ea85cb106eca5af7367c",
"implementations": [
"eth:0xb56A8225A745756DD215faf22E4796f373561AcD"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0xF5A14DCdde1143443f06033200D345c2a2828A99"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xda2866AF0e170d0867a3F3bB52Db10D6E09Df78A"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0x3B4FD84B27fE7B9247d5B8C6d1A29B2889C81518"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xC6f08EFb7BA78f40d00F41aFAC00211d59eb9431"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
}
],
"description": "Contract responsible for bookkeeping L1 bridging transactions. Used to finalize withdrawals and reclaim failed deposits. Does not escrow funds.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB#code"
},
{
"name": "ProtocolUpgradeHandler",
"isVerified": true,
"address": "eth:0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e"
],
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1738855967,
"transactionHash": "0xa3d1fa107e6dc4ce67d92a5af74aa7dc34602c2a1d46727790819c1f974bed95",
"implementations": [
"eth:0xD5e9D3d483a93d03D8d604CC79dC9f2F4B78C604"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0x0A67f0Fd2f7523057039F14969Fe23a5f620f19A"
]
},
{
"timestamp": 1760519471,
"transactionHash": "0x2309df20dd1cb3f3a3289e97517d10d399989292f966578240ec387246a13e61",
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
}
],
"description": "The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2 and emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **emergencyUpgradeBoard**: EmergencyUpgradeBoard\n * **guardians**: Guardians\n * **l2_protocol_governor**: ProtocolTimelockController; ultimately ZkProtocolGovernor\n * **securityCouncil**: SecurityCouncil",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3#code"
},
{
"name": "RollupDAManager",
"isVerified": true,
"address": "eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Simple registry for allowed DA address pairs for the 'rollup' data availability mode (can be permanently enforced with isPermanentRollup=true). Rollup DA address pairs (especially the L1 part) usually point to contracts that validate if data was made available on Ethereum.\n* Roles:\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45#code"
},
{
"name": "AvailBridgeV1",
"isVerified": true,
"address": "eth:0x054fd961708D8E2B9c10a63F6157c74458889F0a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x36194271a00dBBBae314E83dA56d0FF75fDa367B"
],
"implementations": [
"eth:0x737539737b44493F65c17eAfE165197b6410d254"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720568903,
"transactionHash": "0x980ea7f295336624f103c47b5ec482f90c2c90f4b7d05140ceb5d40aa077963c",
"implementations": [
"eth:0x737539737b44493F65c17eAfE165197b6410d254"
]
}
],
"description": "Bridge contract that verifies merkle proofs of inclusion in the proven data of the Vector DA- and arbitrary message bridge. Also used for token- and arbitrary message transfers between Avail and Ethereum.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Avail Multisig 1\n * **defaultAdmin**: TimelockController; ultimately Avail Multisig 1\n * **pauser**: Avail Multisig 2",
"upgradableBy": [
{
"name": "Avail Multisig 1",
"delay": "1d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x054fd961708D8E2B9c10a63F6157c74458889F0a#code"
},
{
"name": "LensZkEvmAdmin",
"isVerified": true,
"address": "eth:0x6bd8d33551077Ed281Cb047835a2aE4033eEc433",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets Lens Multisig act through it.\n* Roles:\n * **owner**: Lens Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6bd8d33551077Ed281Cb047835a2aE4033eEc433#code"
},
{
"name": "EraChainAdminProxy",
"isVerified": true,
"address": "eth:0x2cf3bD6a9056b39999F3883955E183F655345063",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets Matter Labs Multisig act through it.\n* Roles:\n * **owner**: Matter Labs Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2cf3bD6a9056b39999F3883955E183F655345063#code"
},
{
"name": "L1USDCBridge",
"isVerified": true,
"address": "eth:0xf553E6D903AA43420ED7e3bc2313bE9286A8F987",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x2ccD5486Ea1b2A52dcD387c01314F6A328f66cbB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1734114251,
"transactionHash": "0x5428361f75c29b1f0e9959bd21fef8fb179b22f009f314e6403a305770e8735f",
"implementations": [
"eth:0x86dF12f51E3531689e0615bb2F739ddf01337715"
]
},
{
"timestamp": 1737484199,
"transactionHash": "0x152dc623c52d7f2b058ec5b4dfb67f5e0fee14c04dc9c0db4ae02ed2dc4ab998",
"implementations": [
"eth:0x2ccD5486Ea1b2A52dcD387c01314F6A328f66cbB"
]
}
],
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf553E6D903AA43420ED7e3bc2313bE9286A8F987#code"
},
{
"name": "L1VerifierPlonk",
"isVerified": true,
"address": "eth:0x7f33D100f482093182111d69a4a457289e99f4ec",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7f33D100f482093182111d69a4a457289e99f4ec#code"
},
{
"name": "L1VerifierFflonk",
"isVerified": true,
"address": "eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442#code"
},
{
"name": "DualVerifier",
"isVerified": true,
"address": "eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A router contract for verifiers. Routes verification requests to L1VerifierFflonk or L1VerifierPlonk depending on the supplied proof type.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EraChainAdminProxy",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B#code"
},
{
"name": "L1NativeTokenVault",
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Canonical central asset escrow for all ZK stack chains.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1#code"
},
{
"name": "ChainAssetHandler",
"isVerified": true,
"address": "eth:0xDd5CB8B9037357B4cD37391A073798f8aaB61076",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1758286391,
"transactionHash": "0x960c2e5bb98f4b9a07087b3b50fdc4681bbea1467aab3748dbb0050311f54ede",
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
}
],
"description": "Specialized contract for managing chain assets, i.e. chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xDd5CB8B9037357B4cD37391A073798f8aaB61076#code"
},
{
"name": "ServerNotifier",
"isVerified": true,
"address": "eth:0xfca808A744735D9919EEBe4660B8Fd897456Ce31",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B"
],
"implementations": [
"eth:0x260813B0DAf35dda95c41F39c6Cc3F24dc87028A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747199375,
"transactionHash": "0xbeb7447fc88b154a4730b01cb1a75b7093095056e88818c3659253111d06e66f",
"implementations": [
"eth:0x555D040F4A089D1dF14B372a87C5aF8FA37BDB7A"
]
},
{
"timestamp": 1784714999,
"transactionHash": "0xdbd5285f559e4ae32457b8425f67e1dfe76575c40999499e0b55d5cf985b85d8",
"implementations": [
"eth:0x260813B0DAf35dda95c41F39c6Cc3F24dc87028A"
]
}
],
"description": "A simple contract that can be called by the ChainAdmin to emit notifications about chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Matter Labs Multisig",
"upgradableBy": [
{
"name": "Matter Labs Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xfca808A744735D9919EEBe4660B8Fd897456Ce31#code"
},
{
"name": "Vector",
"isVerified": true,
"address": "eth:0x02993cdC11213985b9B13224f3aF289F03bf298d",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0xc6217f1549Cab6f22ac4AC56d42e6C248731a33D"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720128227,
"transactionHash": "0x6c2c609d7a13fbdad53b1530d34d740ffa36653f29b5f14220429d7c0d6a3ffc",
"implementations": [
"eth:0x2434564f3524b44258B11643729343Ef57D60989"
]
},
{
"timestamp": 1721438975,
"transactionHash": "0x13d7977b9fca12882ea6ba47ce1b20a87de540c358b5e260584e0d921e786f5e",
"implementations": [
"eth:0xc6217f1549Cab6f22ac4AC56d42e6C248731a33D"
]
}
],
"description": "The Vector bridge contract that accepts and stores Avail data availability commitments on Ethereum.\n* Roles:\n * **guardians**: Avail Multisig 1\n * **relayers**: EOA 3\n * **timelocks**: Avail Multisig 1",
"upgradableBy": [
{
"name": "Avail Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x02993cdC11213985b9B13224f3aF289F03bf298d#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x36194271a00dBBBae314E83dA56d0FF75fDa367B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: TimelockController",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x36194271a00dBBBae314E83dA56d0FF75fDa367B#code"
},
{
"name": "TimelockController",
"isVerified": true,
"address": "eth:0x45828180bbE489350D621d002968A0585406d487",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. The current minimum delay is 1d.\n* Roles:\n * **canceller**: Avail Multisig 1\n * **defaultAdmin**: Avail Multisig 1, TimelockController; ultimately Avail Multisig 1\n * **executor**: Avail Multisig 1\n * **proposer**: Avail Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x45828180bbE489350D621d002968A0585406d487#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
],
"zksync2": [
{
"name": "ProtocolTimelockController",
"isVerified": true,
"address": "zksync:0x085b8B6407f150D62adB1EF926F7f304600ec714",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 0s.\n* Roles:\n * **canceller**: ZkProtocolGovernor\n * **executor**: ZkProtocolGovernor\n * **proposer**: ZkProtocolGovernor\n * **timelockAdmin**: ProtocolTimelockController; ultimately ZkProtocolGovernor",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0x085b8B6407f150D62adB1EF926F7f304600ec714#code"
},
{
"name": "ZkToken",
"isVerified": true,
"address": "zksync:0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC"
],
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
},
"chain": "zksync2",
"pastUpgrades": [
{
"timestamp": 1716317326,
"transactionHash": "0x5bfce59c2ad18019ef20d58a3f1ec496cdc85537fc9564c932f7dcbbb2a15b56",
"implementations": [
"zksync:0x3931e73ebA79a7C898D3b0e02c7C62bA4F11cB14"
]
},
{
"timestamp": 1718011538,
"transactionHash": "0xa6bc022ba0f60ac6f10a6efb84b261e9ca1b327a611bdd7a1f4d37cc9b027a3c",
"implementations": [
"zksync:0x01a6715d3560241E09E865a46122bf347A576c09"
]
},
{
"timestamp": 1765195612,
"transactionHash": "0x749b9e6eed328052d679eb86639be807b4acf811ac8786f730b45258ba41ce6f",
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
}
],
"description": "The ZK token contract on ZKsync Era. Mintable through access control roles. Used for voting in the ZK stack governance system.\n* Roles:\n * **admin**: ZkTokenProxyAdmin; ultimately ProtocolUpgradeHandler_l2Alias\n * **defaultAdmin**: ProtocolUpgradeHandler_l2Alias\n * **minterAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"upgradableBy": [
{
"id": "ProtocolUpgradeHandler_l2Alias",
"name": "ProtocolUpgradeHandler_l2Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E#code"
},
{
"name": "ZkTokenProxyAdmin",
"isVerified": true,
"address": "zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler_l2Alias",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0xdB1E46B448e68a5E35CB693a99D59f784aD115CC#code"
},
{
"name": "ZkTokenTimelockController",
"isVerified": true,
"address": "zksync:0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 3d.\n* Roles:\n * **canceller**: ZkTokenGovernor\n * **executor**: ZkTokenGovernor\n * **proposer**: ZkTokenGovernor\n * **timelockAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d#code"
}
]
},
"escrows": [
{
"address": "0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"sinceTimestamp": 1739109131,
"tokens": [
"LGHO",
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Shared bridge for depositing tokens to Lens and other ZK stack chains.",
"url": "https://etherscan.io/address/0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "ElasticChain",
"l2BridgeAddress": "0x8116A750e2091B2bA0D94223e7b20a6A65A279f4",
"l2EtherAddress": "0xE5ecd226b3032910CEaa43ba92EE8232f8237553",
"tokensToAssignFromL1": [
"LGHO"
]
},
"chainId": 1
}
],
"programHashes": [
{
"title": "Boojum L2 Bootloader program v0.29.2",
"description": "EraVM program that proves the correct execution of a batch of ZK Stack L2 blocks.",
"proverSystemProject": "boojum",
"programUrl": "https://github.com/matter-labs/era-contracts/blob/v0.29.2/system-contracts/bootloader/bootloader.yul",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install npm and yarn: `npm install --global yarn`\n2. Install hardhat: `npm install -g hardhat`\n3. Install foundry-zksync: `curl -L https://raw.githubusercontent.com/matter-labs/foundry-zksync/main/install-foundry-zksync | bash` from [here](https://foundry-book.zksync.io/introduction/installation/).\n\nVerify:\n\n1. Checkout the correct branch in [era-contracts](https://github.com/matter-labs/era-contracts) repo: `git checkout v0.29.2`. Commit hash should be `dbfc9b5a40d68007dc405a9b669230104c1646e4`.\n2. Execute recompute_hashes.sh script: `chmod +x recompute_hashes.sh` and `./recompute_hashes.sh`. Note that the script may require a specific version of `foundryup-zksync` and it will suggest the command to install it. However you might need to manually clear git working tree in the repo foundry-zksync (probably in ~/.foundry/matter-labs/foundry-zksync) to change versions.",
"hash": "0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 4d 3h - 8d 3h delay on code upgrades unless upgrade is initiated by the EmergencyUpgradeBoard in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442",
"eth:0x7f33D100f482093182111d69a4a457289e99f4ec",
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "AggchainECDSAMultisig",
"isVerified": true,
"address": "eth:0x92726F7dE49300DBdb60930066bc1d0803c0740B",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1719499031,
"transactionHash": "0x03c9a006f95a45fda2a18e475242078b8563715bc621e21e62a78962e9fb4e63",
"implementations": [
"eth:0x10D296e8aDd0535be71639E5D1d1c30ae1C6bD4C"
]
},
{
"timestamp": 1741176767,
"transactionHash": "0xc376c3725fb986eead241c5b7663e6e081f66b92984bc4b3f0c08d23a0101a35",
"implementations": [
"eth:0x427113ae6F319BfFb4459bfF96eb8B6BDe1A127F"
]
},
{
"timestamp": 1759404935,
"transactionHash": "0x4a9633f61bf7eacf4cfffefccc1e8a561fdaacfbed6470573463e28304b3906d",
"implementations": [
"eth:0x18C45DD422f6587357a6d3b23307E75D42b2bc5B"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
}
],
"description": "System contract defining the prism Aggchain logic. It only enforces bridge accounting (pessimistic) proofs to protect the shared bridge while the Aggchain state transitions are not proven. They must instead be signed by 1 aggchainSigner(s).\n* Roles:\n * **admin**: EOA 1\n * **aggchainSigners**: EOA 2\n * **forceBatchAddress**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x92726F7dE49300DBdb60930066bc1d0803c0740B#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 3, EOA 4\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1679653127,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherWrapped",
"wethAddress": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c",
"tokensToAssignFromL1": [
"LUMIA"
]
},
"chainId": 1
}
],
"programHashes": [
{
"title": "Pessimistic program of agglayer 0.3.3-post4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.3.3-post.4`. Commit hash should be `df072abc86fa89e12b17204246325983272a1141`\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer v0.4.4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.4.4`. Commit hash should be `caac9f06bc7cb1cf89912dbb4dffa4d594a00bd5`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
},
{
"title": "Pessimistic program of agglayer v0.5.1",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.5.1/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.5.1`. Commit hash should be `f7bb86695b03d363c3d0d15ff7f2d8b386e58c91`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv64im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x00d14f977a6ec393014f300ad78d0761dc29435d3fa1e2626fa466bd3343578e"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+41 -41
+40 -40
{
"addresses": {
"ethereum": [
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0x427Ea0710FA5252057F0D88274f7aeb308386cAf",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xca35F8338054739D138884685e08b39EE2217794"
],
"implementations": [
"eth:0x9CA047689261E35c9e507b1BB0B7443C2A436310"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1710467267,
"transactionHash": "0x667a55493b70812eedb69586be570fa87bb305ff046ebd1419cdc71163f770ac",
"implementations": [
"eth:0x6Dbb7D9C5dC60844B8CF442ddC6Be081c060B2E3"
]
},
{
"timestamp": 1776322715,
"transactionHash": "0xa9f65671c6b80206db6f058626a8702cf9171dc5d5ab7e382bf124d2b0e1e55a",
"implementations": [
"eth:0x9CA047689261E35c9e507b1BB0B7443C2A436310"
]
}
],
"description": "Contains configuration parameters such as the batch submitter (Sequencer) address, the L2 gas limit, the unsafe block signer address and the Arsia fee/gas mechanics (base/blob scalars, EIP-1559 params, minimum base fee, DA footprint gas scalar and EIP-7706-style operator fee).\n* Roles:\n * **admin**: ProxyAdmin; ultimately MantleSecurityMultisig\n * **batcherHash**: EOA 1\n * **owner**: MantleSecurityMultisig",
"upgradableBy": [
{
"name": "MantleSecurityMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x427Ea0710FA5252057F0D88274f7aeb308386cAf#code"
},
{
"name": "OptimismPortal",
"isVerified": true,
"address": "eth:0xc54cb22944F2bE476E02dECfCD7e3E7d3e15A8Fb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xca35F8338054739D138884685e08b39EE2217794"
],
"implementations": [
"eth:0xe1399f54ba2597b4EaDA9E3450c34D393fb131A7"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1710490775,
"transactionHash": "0xa5fff128e999954c7dfe8e3360d0844e439425124922e85cd32fdcf2e3582247",
"implementations": [
"eth:0xe1399f54ba2597b4EaDA9E3450c34D393fb131A7"
]
}
],
"description": "The main entry point to deposit funds from host chain to this chain. It also allows to prove and finalize withdrawals.\n* Roles:\n * **admin**: ProxyAdmin; ultimately MantleSecurityMultisig\n * **guardian**: MantleEngineeringMultisig",
"upgradableBy": [
{
"name": "MantleSecurityMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc54cb22944F2bE476E02dECfCD7e3E7d3e15A8Fb#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0x676A795fe6E43C17c668de16730c3F690FEB7120",
"upgradeability": {
"proxyType": "resolved delegate proxy",
"admins": [
"eth:0xca35F8338054739D138884685e08b39EE2217794"
],
"implementations": [
"eth:0xb8DE82551fA4BA3bE4B3d9097763EDBeED541308"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1687958039,
"transactionHash": "0x3ef2116cdd9366a646b6625affcf0cbe96bb3c59c3ffc629432d3f79ff1f886c",
"implementations": [
"eth:0x4692363048d0F32a2dE7816860D48fff0c61B24B"
]
},
{
"timestamp": 1710467267,
"transactionHash": "0x667a55493b70812eedb69586be570fa87bb305ff046ebd1419cdc71163f770ac",
"implementations": [
"eth:0x0000000000000000000000000000000000000000"
]
},
{
"timestamp": 1710490775,
"transactionHash": "0xa5fff128e999954c7dfe8e3360d0844e439425124922e85cd32fdcf2e3582247",
"implementations": [
"eth:0xb8DE82551fA4BA3bE4B3d9097763EDBeED541308"
]
}
],
"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 MantleSecurityMultisig",
"upgradableBy": [
{
"name": "MantleSecurityMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x676A795fe6E43C17c668de16730c3F690FEB7120#code"
},
{
"name": "L1StandardBridge",
"isVerified": true,
"address": "eth:0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xca35F8338054739D138884685e08b39EE2217794"
],
"implementations": [
"eth:0xb4133552BA49dFb60DA6eb5cA0102d0f94ce071f"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "The main entry point to deposit ERC20 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately MantleSecurityMultisig",
"upgradableBy": [
{
"name": "MantleSecurityMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "MantleTokenProxyAdmin",
"isVerified": true,
"address": "eth:0x0cac2B1a172ac24012621101634DD5ABD6399ADd",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: TimelockController",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0cac2B1a172ac24012621101634DD5ABD6399ADd#code"
},
{
"name": "OPSuccinctL2OutputOracle",
"isVerified": true,
"address": "eth:0x31d543e7BE1dA6eFDc2206Ef7822879045B9f481",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xca35F8338054739D138884685e08b39EE2217794"
],
"implementations": [
"eth:0x4059509fFb703B048D1e9Ce3118F90E759076f50"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1710490775,
"transactionHash": "0xa5fff128e999954c7dfe8e3360d0844e439425124922e85cd32fdcf2e3582247",
"implementations": [
"eth:0xD1230865641561653406906Fb08873F011c19080"
]
},
{
"timestamp": 1758005207,
"transactionHash": "0xf9fc68effd8cbd421d25e87a357757fe6710c6c9c0d9c5270d2af5a37f675259",
"implementations": [
"eth:0x4059509fFb703B048D1e9Ce3118F90E759076f50"
]
}
],
"description": "Contains a list of proposed state roots which Proposers assert to be a result of block execution. The SuccinctL2OutputOracle modifies the L2OutputOracle to support whenNotOptimistic mode, in which a validity proof can be passed as input argument to the proposeL2Output function.\n* Roles:\n * **admin**: ProxyAdmin; ultimately MantleSecurityMultisig\n * **initialProposer**: EOA 2\n * **owner**: MantleSecurityMultisig",
"upgradableBy": [
{
"name": "MantleSecurityMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x31d543e7BE1dA6eFDc2206Ef7822879045B9f481#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "L1MantleToken",
"isVerified": true,
"address": "eth:0x3c3a81e81dc49A522A592e7622A7E711c06bf354",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0cac2B1a172ac24012621101634DD5ABD6399ADd"
],
"implementations": [
"eth:0xCd368c1d80120b0Dd92447c87eB570154f8e685c"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1687241795,
"transactionHash": "0x8f7867724cfba4b9b1b19ca140711809b40dda9ae245caf7bcff9473a5a7e45e",
"implementations": [
"eth:0xCd368c1d80120b0Dd92447c87eB570154f8e685c"
]
}
],
"description": "MNT token contract: Mantle uses Mantle (MNT) as the designated gas token, allowing users pay for gas in MNT.\n* Roles:\n * **admin**: MantleTokenProxyAdmin; ultimately MantleSecurityMultisig",
"upgradableBy": [
{
"name": "MantleSecurityMultisig",
"delay": "1d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3c3a81e81dc49A522A592e7622A7E711c06bf354#code"
},
{
"name": "TimelockController",
"isVerified": true,
"address": "eth:0x65331ff6F8B0fc2612F2a0deBD9d04Fce60a447F",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. The current minimum delay is 1d.\n* Roles:\n * **canceller**: MantleSecurityMultisig\n * **defaultAdmin**: MantleSecurityMultisig, TimelockController; ultimately MantleSecurityMultisig\n * **executor**: MantleSecurityMultisig\n * **proposer**: MantleSecurityMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x65331ff6F8B0fc2612F2a0deBD9d04Fce60a447F#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xca35F8338054739D138884685e08b39EE2217794",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: MantleSecurityMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xca35F8338054739D138884685e08b39EE2217794#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "ProxyAdmin",
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xca35F8338054739D138884685e08b39EE2217794",
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: MantleSecurityMultisig",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xca35F8338054739D138884685e08b39EE2217794#code"
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0xc54cb22944F2bE476E02dECfCD7e3E7d3e15A8Fb",
"sinceTimestamp": 1710439967,
"tokens": [
"ETH",
"MNT"
],
"contract": {
"isVerified": true,
"address": "eth:0xc54cb22944F2bE476E02dECfCD7e3E7d3e15A8Fb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xca35F8338054739D138884685e08b39EE2217794"
],
"implementations": [
"eth:0xe1399f54ba2597b4EaDA9E3450c34D393fb131A7"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1710490775,
"transactionHash": "0xa5fff128e999954c7dfe8e3360d0844e439425124922e85cd32fdcf2e3582247",
"implementations": [
"eth:0xe1399f54ba2597b4EaDA9E3450c34D393fb131A7"
]
}
],
"description": "Main entry point for users depositing ETH, MNT.",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0xc54cb22944F2bE476E02dECfCD7e3E7d3e15A8Fb#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012",
"sinceTimestamp": 1687954103,
"tokens": "*",
"excludedTokens": [
"SolvBTC",
"SolvBTC.BBN",
"FBTC"
],
"contract": {
"isVerified": true,
"address": "eth:0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xca35F8338054739D138884685e08b39EE2217794"
],
"implementations": [
"eth:0xb4133552BA49dFb60DA6eb5cA0102d0f94ce071f"
]
},
"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/0x95fC37A27a2f68e3A647CDc081F0A89bb47c3012#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"programHashes": [
{
"title": "Aggregation program of OP Succinct",
"description": "Aggregates proofs of correct execution for several consecutive block ranges of OP L2 client. Data availability layer is set to Ethereum blobs.",
"programUrl": "https://github.com/mantle-xyz/op-succinct/tree/v2.2.4-mainnet.4/programs/aggregation",
"proverSystemProject": "sp1hypercube",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [mantle-xyz/op-succinct](https://github.com/mantle-xyz/op-succinct/tree/v2.2.4-mainnet.4) repo: `git checkout v2.2.4-mainnet.4` . Commit hash should be `614ab563542d5ce4c027de71765ecb4388c233af`.\n2. Make sure docker is running by running `docker ps`\n3. From the `op-succinct` dir: `cargo run --bin config --release` to build the SP1 programs and generate and print verification key hashes. The `Aggregation Verification Key Hash` printed is this program hash.",
"hash": "0x001db6dc655ffc97e6ec7a2b5c9b1ddf42c2235faa007d8a96d659c68b7c432a"
},
{
"title": "Range program of OP Succinct",
"description": "Proves correct state transition function within an OP L2 client over a range of consecutive L2 blocks. Data availability layer is set to Ethereum blobs.",
"programUrl": "https://github.com/mantle-xyz/op-succinct/tree/v2.2.4-mainnet.4/programs/range/ethereum",
"proverSystemProject": "sp1hypercube",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [mantle-xyz/op-succinct](https://github.com/mantle-xyz/op-succinct/tree/v2.2.4-mainnet.4) repo: `git checkout v2.2.4-mainnet.4` . Commit hash should be `614ab563542d5ce4c027de71765ecb4388c233af`.\n2. Make sure docker is running by running `docker ps`\n3. From the `op-succinct` dir: `cargo run --bin config --release` to build the SP1 programs and generate and print verification key hashes. The `Range Verification Key Hash` printed is this program hash.",
"hash": "0x6f0230de6e9b59592b3127f55829c9a766d397903df5c57d557c91634a30b32b"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
{
"baseTimestamp": 1782298886,
"baseTimestamp": 1783679422,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+1 -1
+1 -1
{
"addresses": {
"arbitrum": [
{
"name": "RollupProxy",
"isVerified": true,
"address": "arb1:0x0f28D76Ec5c62b502625351726b4A3E3F54FF5F0",
"upgradeability": {
"proxyType": "Arbitrum proxy",
"admins": [
"arb1:0x92ff91308F5f1036435f23c2F4F136Bb7475425d"
],
"implementations": [
"arb1:0x4f82B5de97Ad3690ee319878083503178Fd8E0B9",
"arb1:0x8522769aEF1A87bE45530E0C84834BCce38CA9Bd"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019082,
"transactionHash": "0x95b91b77f8acfeba7f9d6fdb02826847e1a437c49ba88d2c32cd42ec716850da",
"implementations": [
"arb1:0xc326D023758d7D212d529D1E58D7f271CAe49fcf",
"arb1:0xD92D49e8A2230E2C7a73c3ff4Df1AED09dA32a07"
]
},
{
"timestamp": 1731480884,
"transactionHash": "0x9a8ae683e857b80a843f7f071b0f831ac8162c6ac2c09fd9a8a514809d80c7af",
"implementations": [
"arb1:0x4f82B5de97Ad3690ee319878083503178Fd8E0B9",
"arb1:0x8522769aEF1A87bE45530E0C84834BCce38CA9Bd"
]
}
],
"description": "Central contract for the project's configuration like its execution logic hash (`wasmModuleRoot`) and addresses of the other system contracts. Entry point for Proposers creating new Rollup Nodes (state commitments) and Challengers submitting fraud proofs (In the Orbit stack, these two roles are both held by the Validators).\n* Roles:\n * **admin**: UpgradeExecutor; ultimately Caldera Multisig 1, EOA 1\n * **owner**: UpgradeExecutor; ultimately Caldera Multisig 1, EOA 1\n * **validators**: EOA 3",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x0f28D76Ec5c62b502625351726b4A3E3F54FF5F0#code"
},
{
"name": "SequencerInbox",
"isVerified": true,
"address": "arb1:0x0fFe9ACC296ddd4De5F616Aa482C99fA4b41A3E2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0x481863c96f949F5E13932ec2F65470C0CF83808d"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019082,
"transactionHash": "0x95b91b77f8acfeba7f9d6fdb02826847e1a437c49ba88d2c32cd42ec716850da",
"implementations": [
"arb1:0x1d182075d07744D71E37f77f1654165f6DAFad08"
]
},
{
"timestamp": 1731472488,
"transactionHash": "0xa3cef71c7eacc17dedd4ff7a2c732cd42e982d2ca5c620fe8364225fce9760ab",
"implementations": [
"arb1:0x79177caeDf321963EFed06E562017181B2e8aDC7"
]
},
{
"timestamp": 1746463926,
"transactionHash": "0x6018ec86bbda22965cae10bd0862c749181c4101bbc3eaff562cfd66a67f0377",
"implementations": [
"arb1:0x645341A2C76cD94324cBA658c19Acca2297b619C"
]
},
{
"timestamp": 1746649259,
"transactionHash": "0xcd0e8af41249440524c34f999e8033e63b5b2120088982cba91c32976a0a81d8",
"implementations": [
"arb1:0x7A9A0974F98052dA2F10DC9a50E3e348CDc62607"
]
},
{
"timestamp": 1751386630,
"transactionHash": "0x6e4d22b6b61eeffdbd42e8fe52446bb966dd46592ba723bc43edaf1a7cc4f678",
"implementations": [
"arb1:0x481863c96f949F5E13932ec2F65470C0CF83808d"
]
}
],
"description": "The Espresso TEE sequencer (registered in this contract) can submit transaction batches or commitments here. This version of the SequencerInbox also supports commitments to data that is posted to Celestia.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, EOA 1\n * **batchPosterManager**: EOA 2\n * **batchPosters**: EOA 2",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x0fFe9ACC296ddd4De5F616Aa482C99fA4b41A3E2#code"
},
{
"name": "ChallengeManager",
"isVerified": true,
"address": "arb1:0x7BB97862CA342B5fbe2AE2cF2E954F6327f587b1",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0x0686dc9F334F8C0f0a9646f48775aa002757AFFE"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019082,
"transactionHash": "0x95b91b77f8acfeba7f9d6fdb02826847e1a437c49ba88d2c32cd42ec716850da",
"implementations": [
"arb1:0x935239e066F4F449D87D600e6d7c1a4F24c50f97"
]
},
{
"timestamp": 1731472488,
"transactionHash": "0xa3cef71c7eacc17dedd4ff7a2c732cd42e982d2ca5c620fe8364225fce9760ab",
"implementations": [
"arb1:0x3bD530a9a48F17052D5d3c30e7582Fcb42BdFD23"
]
},
{
"timestamp": 1731480884,
"transactionHash": "0x9a8ae683e857b80a843f7f071b0f831ac8162c6ac2c09fd9a8a514809d80c7af",
"implementations": [
"arb1:0x84c179B5651A762a81A490BA03D27997A5922EC1"
]
},
{
"timestamp": 1746649259,
"transactionHash": "0xcd0e8af41249440524c34f999e8033e63b5b2120088982cba91c32976a0a81d8",
"implementations": [
"arb1:0x0686dc9F334F8C0f0a9646f48775aa002757AFFE"
]
}
],
"description": "Contract that allows challenging state roots. Can be called through the RollupProxy by Validators or the UpgradeExecutor.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x7BB97862CA342B5fbe2AE2cF2E954F6327f587b1#code"
},
{
"name": "Bridge",
"isVerified": true,
"address": "arb1:0xE1d32C985825562edAa906fAC39295370Db72195",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0x7DD439Ec22c91b0703EE7d80175fd8d5319906A1"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019082,
"transactionHash": "0x95b91b77f8acfeba7f9d6fdb02826847e1a437c49ba88d2c32cd42ec716850da",
"implementations": [
"arb1:0xC5Db571093C4600559e239497d147476F7543b15"
]
},
{
"timestamp": 1745531035,
"transactionHash": "0x3b143e23963a08ef4f73468ac748608d292faa7062295e86224befc1c41e8726",
"implementations": [
"arb1:0x7DD439Ec22c91b0703EE7d80175fd8d5319906A1"
]
}
],
"description": "Escrow contract for the project's gas token (can be different from ETH). Keeps a list of allowed Inboxes and Outboxes for canonical bridge messaging.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xE1d32C985825562edAa906fAC39295370Db72195#code"
},
{
"name": "UpgradeExecutor",
"isVerified": true,
"address": "arb1:0x92ff91308F5f1036435f23c2F4F136Bb7475425d",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0x20C6be2A0429A82a7bF113905a29d36CF6753B10"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019082,
"transactionHash": "0x95b91b77f8acfeba7f9d6fdb02826847e1a437c49ba88d2c32cd42ec716850da",
"implementations": [
"arb1:0x20C6be2A0429A82a7bF113905a29d36CF6753B10"
]
}
],
"description": "Central contract defining the access control permissions for upgrading the system contract implementations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, EOA 1\n * **executors**: Caldera Multisig 1, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x92ff91308F5f1036435f23c2F4F136Bb7475425d#code"
},
{
"name": "Inbox",
"isVerified": true,
"address": "arb1:0x235000876bd58336C802B3546Fc0250f285fCc79",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0xbFfd05964F6d7AE4B55eB8A7086d88EEEcbF5f76"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019082,
"transactionHash": "0x95b91b77f8acfeba7f9d6fdb02826847e1a437c49ba88d2c32cd42ec716850da",
"implementations": [
"arb1:0x2675b9DEb473ECaC13ddd71dF8A0Ef13FeF6a75D"
]
},
{
"timestamp": 1746463926,
"transactionHash": "0x6018ec86bbda22965cae10bd0862c749181c4101bbc3eaff562cfd66a67f0377",
"implementations": [
"arb1:0xdec03E497222017550Fb83273d8FB4546eaDA625"
]
},
{
"timestamp": 1746649259,
"transactionHash": "0xcd0e8af41249440524c34f999e8033e63b5b2120088982cba91c32976a0a81d8",
"implementations": [
"arb1:0xbFfd05964F6d7AE4B55eB8A7086d88EEEcbF5f76"
]
}
],
"description": "Facilitates sending L1 to L2 messages like depositing ETH, but does not escrow funds.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x235000876bd58336C802B3546Fc0250f285fCc79#code"
},
{
"name": "ERC20Gateway",
"isVerified": true,
"address": "arb1:0x5a6f8ea5e1028C80CB98Fd8916afBBC4E6b23D80",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0x652F65f950b71d7aD04AffB1725F43786ed5f6Cc"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019098,
"transactionHash": "0x23ef7ccf294b19a7ece9a717b1f66c067825a5c354b3ada4c8e323742e562d64",
"implementations": [
"arb1:0x652F65f950b71d7aD04AffB1725F43786ed5f6Cc"
]
}
],
"description": "Escrows deposited ERC-20 assets for the canonical Bridge. Upon depositing, a generic token representation will be minted at the destination. Withdrawals are initiated by the Outbox contract.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x5a6f8ea5e1028C80CB98Fd8916afBBC4E6b23D80#code"
},
{
"name": "Outbox",
"isVerified": true,
"address": "arb1:0xb255de22d39a26D4CbcAFd6Cf660ccaCa047e95B",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0xCa2F31F3C6553c2FD9897f7AA464406a431959A9"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019082,
"transactionHash": "0x95b91b77f8acfeba7f9d6fdb02826847e1a437c49ba88d2c32cd42ec716850da",
"implementations": [
"arb1:0xCa2F31F3C6553c2FD9897f7AA464406a431959A9"
]
}
],
"description": "Facilitates L2 to L1 contract calls: Messages initiated from L2 (for example withdrawal messages) eventually resolve in execution on L1.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xb255de22d39a26D4CbcAFd6Cf660ccaCa047e95B#code"
},
{
"name": "GatewayRouter",
"isVerified": true,
"address": "arb1:0xAeAe9616A02dA527FceA2AC444EC918C7BfB9CdF",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0x922db00d292477AD99Ef8A0c41101a664Ee79D2b"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019098,
"transactionHash": "0x23ef7ccf294b19a7ece9a717b1f66c067825a5c354b3ada4c8e323742e562d64",
"implementations": [
"arb1:0x922db00d292477AD99Ef8A0c41101a664Ee79D2b"
]
}
],
"description": "This routing contract maps tokens to the correct escrow (gateway) to be then bridged with canonical messaging.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xAeAe9616A02dA527FceA2AC444EC918C7BfB9CdF#code"
},
{
"name": "NitroEnclaveVerifier",
"isVerified": true,
"address": "arb1:0x0d4cD6C0E9a0f2e744C83547f22Caf03414A3B22",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "ZK-backed verifier for AWS Nitro enclave attestations. Verifies ZK proofs (RiscZero, Succinct SP1 or Pico) that attest AWS Nitro cert chain validation was executed correctly off-chain.\n* Roles:\n * **owner**: EOA 4",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x0d4cD6C0E9a0f2e744C83547f22Caf03414A3B22#code"
},
{
"name": "OneStepProofEntry",
"isVerified": true,
"address": "arb1:0x23b7734232dA19D2Cf73010a25C8Ffc4eBfc2f5f",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x23b7734232dA19D2Cf73010a25C8Ffc4eBfc2f5f#code"
},
{
"name": "OneStepProverMemory",
"isVerified": true,
"address": "arb1:0x59CDE86f1a538a7a2329269d3704CA302DF23736",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x59CDE86f1a538a7a2329269d3704CA302DF23736#code"
},
{
"name": "QuoteVerifier",
"isVerified": true,
"address": "arb1:0x69523d25E25e5c78d828Df90459b75F189D40Cf7",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "The QuoteVerifier contract is used by the EspressoTEEVerifier to verify the validity of the TEE quote. It references a PCCSRouter (0x0d089B3fA00CBAD0a5098025519e9e4620622acF), an access point for Intel SGX 'collateral', crucial references of which some modular contracts are unverified.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x69523d25E25e5c78d828Df90459b75F189D40Cf7#code"
},
{
"name": "EspressoTEEVerifier",
"isVerified": true,
"address": "arb1:0x7A7E3B3eB8c799360E65d4fE2f0e108dB78721c3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "TEE gateway contract that can be used to 1) register signers that were generated inside a TEE and 2) verify the signatures of such signers. It supports both Intel SGX and AWS Nitro TEEs through modular contracts.\n* Roles:\n * **owner**: SafeL2",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x7A7E3B3eB8c799360E65d4fE2f0e108dB78721c3#code"
},
{
"name": "OneStepProverHostIo",
"isVerified": true,
"address": "arb1:0x7d46570d3Cd9D8F5e01bad3144141a031a94d7B8",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine. This version uses the Blobstream DA bridge (ArbitrumBlobstream) as source of truth for the DA referenced by the fault proof.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x7d46570d3Cd9D8F5e01bad3144141a031a94d7B8#code"
},
{
"name": "OneStepProverMath",
"isVerified": true,
"address": "arb1:0x7E67B50d510929610f840fb09707feA01b8E457B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x7E67B50d510929610f840fb09707feA01b8E457B#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "* Roles:\n * **owner**: UpgradeExecutor",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238#code"
},
{
"name": "RollupEventInbox",
"isVerified": true,
"address": "arb1:0x9676D55Ccd46ce72235b16bA645008D1D3350B14",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0xf2bCB26dbb571EBC82CFAe6453AeF0DE90d93421"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019082,
"transactionHash": "0x95b91b77f8acfeba7f9d6fdb02826847e1a437c49ba88d2c32cd42ec716850da",
"implementations": [
"arb1:0xf2bCB26dbb571EBC82CFAe6453AeF0DE90d93421"
]
}
],
"description": "Helper contract sending configuration data over the bridge during the systems initialization.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x9676D55Ccd46ce72235b16bA645008D1D3350B14#code"
},
{
"name": "ValidatorUtils",
"isVerified": true,
"address": "arb1:0x9e83136d4B3AD04C766591EA51712F9aEa3194C0",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "This contract implements view only utilities for validators.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x9e83136d4B3AD04C766591EA51712F9aEa3194C0#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0xD9d5C8456a168Dd25561064F47bF116111131B1D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xD9d5C8456a168Dd25561064F47bF116111131B1D#code"
},
{
"name": "OneStepProver0",
"isVerified": true,
"address": "arb1:0xe3b13e7b160aE4b799A7B3F9877316e717706291",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xe3b13e7b160aE4b799A7B3F9877316e717706291#code"
},
{
"name": "EspressoSGXTEEVerifier",
"isVerified": true,
"address": "arb1:0xEA25045bC30ceE23A280c51020F0bBb78781A297",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifies attestations of an Intel SGX TEE.\n* Roles:\n * **owner**: SafeL2",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xEA25045bC30ceE23A280c51020F0bBb78781A297#code"
},
{
"name": "EspressoNitroTEEVerifier",
"isVerified": true,
"address": "arb1:0xF99De72165cB3A56766e118B3a20874d4A0aCa89",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifies attestations of an AWS Nitro TEE. \nNote: currently only Succinct proofs are used.\n* Roles:\n * **owner**: SafeL2",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xF99De72165cB3A56766e118B3a20874d4A0aCa89#code"
},
{
"name": "ArbitrumBlobstream",
"isVerified": true,
"address": "arb1:0xA83ca7775Bc2889825BcDeDfFa5b758cf69e8794",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x738a9b55304f9fcF776B3BA285e50c0f9eF77997"
],
"implementations": [
"arb1:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1710651080,
"transactionHash": "0x58059198a17ae1d8dd73b4d0f0ce7169f4e55d901a8fea59b4ef12d005a41f0a",
"implementations": [
"arb1:0x7C3A9b466FF5c02582fa32d4aD1b2Cb431fB7c9b"
]
},
{
"timestamp": 1710724776,
"transactionHash": "0xf45e346ddbedef1ea3f828954c979adcb205b4b1c0ca72e49e7e2ef5b1c43192",
"implementations": [
"arb1:0xfb19439fBa9f16aA720be6bE0e53465a9733C964"
]
},
{
"timestamp": 1724698402,
"transactionHash": "0x746e21628ccec4d5b4da96595f852a6398defcc360cb9f13aa2d84ebe4e7403f",
"implementations": [
"arb1:0x47fd660D5252Bd6F9D2c71507E46aa1d6e957c23"
]
},
{
"timestamp": 1733166545,
"transactionHash": "0x07dbff15e24a8c124a927a2881cb4d471ace180488a56a56b43b47d1da68a130",
"implementations": [
"arb1:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
}
],
"description": "The Blobstream DA bridge. This contract is used to bridge data commitments between Celestia and the destination chain. It specifies relayers that commit block ranges, but due to the lack of emitted events, there may be more relayers than are presented here.\n* Roles:\n * **admin**: BlobstreamMultisig\n * **guardians**: BlobstreamMultisig\n * **relayers**: EOA 5, EOA 6",
"upgradableBy": [
{
"name": "BlobstreamMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xA83ca7775Bc2889825BcDeDfFa5b758cf69e8794#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGatewayArb",
"isVerified": true,
"address": "arb1:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0xE1d32C985825562edAa906fAC39295370Db72195",
"sinceTimestamp": 1712019082,
"tokens": [
"MOLTEN"
],
"contract": {
"isVerified": true,
"address": "arb1:0xE1d32C985825562edAa906fAC39295370Db72195",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0x7DD439Ec22c91b0703EE7d80175fd8d5319906A1"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019082,
"transactionHash": "0x95b91b77f8acfeba7f9d6fdb02826847e1a437c49ba88d2c32cd42ec716850da",
"implementations": [
"arb1:0xC5Db571093C4600559e239497d147476F7543b15"
]
},
{
"timestamp": 1745531035,
"transactionHash": "0x3b143e23963a08ef4f73468ac748608d292faa7062295e86224befc1c41e8726",
"implementations": [
"arb1:0x7DD439Ec22c91b0703EE7d80175fd8d5319906A1"
]
}
],
"description": "Contract managing Inboxes and Outboxes. It escrows MOLTEN sent to L2.",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"url": "https://arbiscan.io/address/0xE1d32C985825562edAa906fAC39295370Db72195#code"
},
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
},
{
"address": "0x5a6f8ea5e1028C80CB98Fd8916afBBC4E6b23D80",
"sinceTimestamp": 1712019098,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "arb1:0x5a6f8ea5e1028C80CB98Fd8916afBBC4E6b23D80",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x8Ab2f49A085490c1592325eE32B6e6a4DA35D238"
],
"implementations": [
"arb1:0x652F65f950b71d7aD04AffB1725F43786ed5f6Cc"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1712019098,
"transactionHash": "0x23ef7ccf294b19a7ece9a717b1f66c067825a5c354b3ada4c8e323742e562d64",
"implementations": [
"arb1:0x652F65f950b71d7aD04AffB1725F43786ed5f6Cc"
]
}
],
"description": "Main entry point for users depositing ERC20 tokens. Upon depositing, on L2 a generic, \"wrapped\" token will be minted.",
"url": "https://arbiscan.io/address/0x5a6f8ea5e1028C80CB98Fd8916afBBC4E6b23D80#code"
},
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
}
],
"programHashes": [
{
"title": "Celestia Blobstream DA bridge program",
"description": "ZK-friendly implementation of Celestia Blobstream DA bridge that proves that enough Celestia validators have confirmed a given data root.",
"programUrl": "https://github.com/succinctlabs/sp1-blobstream/tree/78a9d3419339a8c60bf51e1e3241f242bc44d434/program",
"proverSystemProject": "sp1hypercube",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct commit hash in [sp1-blobstream](https://github.com/succinctlabs/sp1-blobstream/tree/main) repo: `git checkout 78a9d3419339a8c60bf51e1e3241f242bc44d434`.\n2. Make sure docker is running by running `docker ps`.\n3. From the `sp1-blobstream/program` dir run: `cargo prove build --docker --tag v6.1.0 --elf-name blobstream-elf --output-directory ../elf` to build the blobstream program elf within a docker container and place it in `sp1-blobstream/elf`.\n4. From `sp1-blobstream` run: `cargo run --bin vkey --release` to print the vkey of the `blobstream-elf` program.",
"hash": "0x00b451fcd696cd0a4025e30bfed96343b1767ac6523a360fee1183f9e2e20745"
},
{
"title": "Nitro TEE Verifer",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/automata-network/aws-nitro-enclave-attestation/tree/8607619cc620a93d029a9569bccf752f341aad99/crates/sp1-methods/sp1-verifier",
"description": "Verifies correctness of a single TEE attestation for correctly running Arbitrum Nitro within a trusted enclave.",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`\n2. Make sure SP1 v6.1.0 is active: `sp1up -v 6.1.0` (must match the workspace `sp1-sdk = \"^6.1.0\"` dependency)\n3. Install docker [https://docs.docker.com/get-docker/](https://docs.docker.com/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [automata-network/aws-nitro-enclave-attestation](https://github.com/automata-network/aws-nitro-enclave-attestation/tree/feat/reproducible_build) repo: `git checkout feat/reproducible_build`. Commit hash should be `8607619cc620a93d029a9569bccf752f341aad99`.\n2. Make sure docker is running by running `docker ps`.\n3. From the repo root: `cargo clean -p sp1-methods` to clear any stale build artifacts.\n4. From the repo root run: `REPRODUCIBLE_BUILD=docker cargo run --release -p nitro-attest-cli --no-default-features --features sp1 -- program-id --sp1`. The `REPRODUCIBLE_BUILD=docker` env var triggers the SP1 docker reproducible rebuild of `sp1-verifier` and `sp1-aggregator` ELFs (replacing `USE_DOCKER=1` used on older branches). The CLI then prints `Verifier ID`, `Verifier Proof ID`, and `Aggregator ID`.",
"hash": "0x00643c7149cf335e7ec9d3f3301e69658a7f0ef2bc7546509c257ed8809f28e1"
},
{
"title": "Nitro TEE Aggregated Verifer",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/automata-network/aws-nitro-enclave-attestation/tree/8607619cc620a93d029a9569bccf752f341aad99/crates/sp1-methods/sp1-aggregator",
"description": "Verifies correctness of several aggregated TEE attestations for correctly running Arbitrum Nitro within a trusted enclave.",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`\n2. Make sure SP1 v6.1.0 is active: `sp1up -v 6.1.0` (must match the workspace `sp1-sdk = \"^6.1.0\"` dependency)\n3. Install docker [https://docs.docker.com/get-docker/](https://docs.docker.com/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [automata-network/aws-nitro-enclave-attestation](https://github.com/automata-network/aws-nitro-enclave-attestation/tree/feat/reproducible_build) repo: `git checkout feat/reproducible_build`. Commit hash should be `8607619cc620a93d029a9569bccf752f341aad99`.\n2. Make sure docker is running by running `docker ps`.\n3. From the repo root: `cargo clean -p sp1-methods` to clear any stale build artifacts.\n4. From the repo root run: `REPRODUCIBLE_BUILD=docker cargo run --release -p nitro-attest-cli --no-default-features --features sp1 -- program-id --sp1`. The `REPRODUCIBLE_BUILD=docker` env var triggers the SP1 docker reproducible rebuild of `sp1-verifier` and `sp1-aggregator` ELFs (replacing `USE_DOCKER=1` used on older branches). The CLI then prints `Verifier ID`, `Verifier Proof ID`, and `Aggregator ID`.",
"hash": "0x00294928e44f0cdc9c74848c4cafcdb29f733a3bc07408c240be3d5afe750b3e"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"arb1:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"arb1:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"arb1:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"arb1:0xD9d5C8456a168Dd25561064F47bF116111131B1D"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Verifier",
"isVerified": true,
"address": "eth:0x9B9671dB83CfcB4508bF361942488C5cA2b1286D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies ZK proofs for state roots of this Layer 2 via the PolygonRollupManager.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9B9671dB83CfcB4508bF361942488C5cA2b1286D#code"
},
{
"name": "AggchainECDSAMultisig",
"isVerified": true,
"address": "eth:0xb1714954bBc0162A36FB44934F3216aCE81C40d7",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1740743363,
"transactionHash": "0x351a86bec0a58f513f88024a6a845b25bce736ed78da4ef1c7cda90a717dd61e",
"implementations": [
"eth:0x427113ae6F319BfFb4459bfF96eb8B6BDe1A127F"
]
},
{
"timestamp": 1777640915,
"transactionHash": "0x5ec0f7293eb1ef1149a55aea2a4845d0b905fd808ffa05cd7f949c7ff2ed86e2",
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
}
],
"description": "System contract defining the Pentagon Games Aggchain logic. It only enforces bridge accounting (pessimistic) proofs to protect the shared bridge while the Aggchain state transitions are not proven. They must instead be signed by 1 aggchainSigner(s).\n* Roles:\n * **admin**: EOA 1\n * **aggchainSigners**: EOA 2\n * **forceBatchAddress**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb1714954bBc0162A36FB44934F3216aCE81C40d7#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 3, EOA 4\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1679653127,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherWrapped",
"wethAddress": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c",
"tokensToAssignFromL1": [
"PC"
]
},
"chainId": 1
}
],
"programHashes": [
{
"title": "Pessimistic program of agglayer 0.3.3-post4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.3.3-post.4`. Commit hash should be `df072abc86fa89e12b17204246325983272a1141`\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer v0.4.4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.4.4`. Commit hash should be `caac9f06bc7cb1cf89912dbb4dffa4d594a00bd5`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
},
{
"title": "Pessimistic program of agglayer v0.5.1",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.5.1/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.5.1`. Commit hash should be `f7bb86695b03d363c3d0d15ff7f2d8b386e58c91`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv64im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x00d14f977a6ec393014f300ad78d0761dc29435d3fa1e2626fa466bd3343578e"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x9B9671dB83CfcB4508bF361942488C5cA2b1286D"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "DisputeGameFactory",
"isVerified": true,
"address": "eth:0x2157F4d5934c4b12193C4983E99b9D6418798a2E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756389419,
"transactionHash": "0xed0bcf545cea2abedd3f881c132d2c5edea92be3bad914444ae526aef6ec7d97",
"implementations": [
"eth:0xc641A33cab81C559F2bd4b21EA34C290E2440C2B"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x33D1e8571a85a538ed3D5A4d88f46C112383439D"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
}
],
"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 Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2157F4d5934c4b12193C4983E99b9D6418798a2E#code"
},
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0x96B124841Eff4Ab1b3C1F654D60402a1405fF51A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1734387347,
"transactionHash": "0xf15016a91149382e41ef8c726b4e2f21bd371fd1ca2ec5ac6963d485e9a4a1e1",
"implementations": [
"eth:0x5651e4f573303ec65Ba7579Fdc09166F7a403776"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0xe2F826324b2faf99E513D16D266c3F80aE87832B"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x2D7e764a0D9919e16983a46595CfA81fc34fa7Cd"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x5B172BBfa0140285A02374EC1f5B9f25ef415514"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x381E729FF983FA4BCEd820e7b922d79bF653B999"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x96B124841Eff4Ab1b3C1F654D60402a1405fF51A#code"
},
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0xeBf5859b7646ca9cf8A981613569bF28394F2571",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1734387347,
"transactionHash": "0xbde55f54ed051fc9c94af80b2f3fcfd0124bae4b3f74816d935999553bcd8dec",
"implementations": [
"eth:0x4334B0Ebd68dC3A4e35deD49014dEFA00C15219c"
]
},
{
"timestamp": 1756390823,
"transactionHash": "0xa6fc3d1acadac8c1ff8d85f86909f8b91c3913c49a1ef56f1dfd3a961c9605c4",
"implementations": [
"eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x760C48C62A85045A6B69f07F4a9f22868659CbCc"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x2bFE4A5Bd5A41e9d848d843ebCDFa15954e9A557"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED"
]
}
],
"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 Conduit Multisig 1\n * **batcherHash**: EOA 1\n * **owner**: Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xeBf5859b7646ca9cf8A981613569bF28394F2571#code"
},
{
"name": "SuperchainConfig",
"isVerified": true,
"address": "eth:0x097f99768A0a4a0A81bAbbCB1ea18193bA9D53cC",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xb4899FF43Ae727B1E9CB19AC44660e4A43Fad0b5"
],
"implementations": [
"eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750849619,
"transactionHash": "0x63366bb4d9f073e6f0e1de8495baf47a7e1921c02049305253907db5ac6839ca",
"implementations": [
"eth:0x4da82a327773965b8d4D85Fa3dB8249b387458E7"
]
},
{
"timestamp": 1768207871,
"transactionHash": "0x00b0d87bdd24f6273dabd8cb118814977b0e80773f88cb5baabb50463252d744",
"implementations": [
"eth:0xCe28685EB204186b557133766eCA00334EB441E4"
]
},
{
"timestamp": 1768207871,
"transactionHash": "0x00b0d87bdd24f6273dabd8cb118814977b0e80773f88cb5baabb50463252d744",
"implementations": [
"eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957"
]
},
{
"timestamp": 1784287811,
"transactionHash": "0x1f1d4768cc0d3f218a3f5aea7b6ceed0ae663498958e8194f208e88522c6404b",
"implementations": [
"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8"
]
},
{
"timestamp": 1784287811,
"transactionHash": "0x1f1d4768cc0d3f218a3f5aea7b6ceed0ae663498958e8194f208e88522c6404b",
"implementations": [
"eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1\n * **guardian**: Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x097f99768A0a4a0A81bAbbCB1ea18193bA9D53cC#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0x1549Dd6f86f5bBf0b1Bc691407DE64e8104c1544",
"upgradeability": {
"proxyType": "resolved delegate proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1734387347,
"transactionHash": "0x0e51f9c3e3dc969d70426a6662d4e2b6abbb2fa1cbda3373bcbe5120342f04fd",
"implementations": [
"eth:0xF4e69D58027De611d9F142e6b0Db6b11569F50E7"
]
},
{
"timestamp": 1756390823,
"transactionHash": "0xa6fc3d1acadac8c1ff8d85f86909f8b91c3913c49a1ef56f1dfd3a961c9605c4",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1756390823,
"transactionHash": "0xa6fc3d1acadac8c1ff8d85f86909f8b91c3913c49a1ef56f1dfd3a961c9605c4",
"implementations": [
"eth:0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x22D12E0FAebD62d429514A65EBAe32dd316c12D6"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
]
}
],
"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 Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1549Dd6f86f5bBf0b1Bc691407DE64e8104c1544#code"
},
{
"name": "L1StandardBridge",
"isVerified": true,
"address": "eth:0x6A3444d11cA2697fe4A19AC8995ABDd8Dd301521",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "The main entry point to deposit ERC20 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6A3444d11cA2697fe4A19AC8995ABDd8Dd301521#code"
},
{
"name": "L1ERC721Bridge",
"isVerified": true,
"address": "eth:0xa010dE167788ed7d95c770AC478997D3207236AF",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1734387347,
"transactionHash": "0xec31f7915b604c4bcccddfc17ff4f49f04454a89a692a9c97430986fb0f5b329",
"implementations": [
"eth:0xC46226fA9De738D48343f420b402a0EBd8F7DCeD"
]
},
{
"timestamp": 1756390823,
"transactionHash": "0xa6fc3d1acadac8c1ff8d85f86909f8b91c3913c49a1ef56f1dfd3a961c9605c4",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1756390823,
"transactionHash": "0xa6fc3d1acadac8c1ff8d85f86909f8b91c3913c49a1ef56f1dfd3a961c9605c4",
"implementations": [
"eth:0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x276d3730f219f7ec22274f7263180b8452B46d47"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x7f1d12fB2911EB095278085f721e644C1f675696"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
}
],
"description": "Used to bridge ERC-721 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa010dE167788ed7d95c770AC478997D3207236AF#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Conduit Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E#code"
},
{
"name": "PreimageOracle",
"isVerified": true,
"address": "eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
},
{
"name": "OPSuccinctDisputeGame",
"isVerified": true,
"address": "eth:0x2c2dA5EFfAbDA3a9ffe8e3D526C5b1F3B42FEa6D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A dispute game wrapper around OPSuccinctL2OutputOracle. It is needed to comply with OptimismPortal2 requirement to have a DisputeGameFactory. Whenever a new game is created, an SP1 proof is immediately verified, so in fact there is no optimistic dispute game happening.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2c2dA5EFfAbDA3a9ffe8e3D526C5b1F3B42FEa6D#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0x46e057CE57bb9E5Af63f30b4dcD9e385eD4ac824",
"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**: Conduit Multisig 1\n * **proposer**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x46e057CE57bb9E5Af63f30b4dcD9e385eD4ac824#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0x6463dEE3828677F6270d83d45408044fc5eDB908",
"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/0x6463dEE3828677F6270d83d45408044fc5eDB908#code"
},
{
"name": "OPSuccinctL2OutputOracle",
"isVerified": true,
"address": "eth:0xb45440830bd8D288bB2B5B01Be303ae60fc855d8",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0x9d843e5b627759e8aB2Db5B95cCA1e5BB91F1174"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1734387347,
"transactionHash": "0x8eee30c3b3f633d3e3c94e00a250bd324e2da6863f227acac127cb6cbc668f85",
"implementations": [
"eth:0x35A37B01CeCb9544a72e251328F9B36F98b023B1"
]
},
{
"timestamp": 1734570311,
"transactionHash": "0xa2b6b581c2c1c201336472072cf22d1f9c57179116cc0f010c763e719c28b6de",
"implementations": [
"eth:0xE41997Df2A412ed5B56ac9f3997A72B6BeE9d888"
]
},
{
"timestamp": 1746606971,
"transactionHash": "0x82e8aeceec726d7cf643b1a548090bfa12bca8fdb7443cdc9a3a4e0d25793c19",
"implementations": [
"eth:0xd010fBdBd77a3314bCED75E1AE8E7aDD42c9d580"
]
},
{
"timestamp": 1757436323,
"transactionHash": "0x893a91ea99cbf8a7339049c89ec2c350f97eef07f66e0b690fe74f4b068c8b50",
"implementations": [
"eth:0x9d843e5b627759e8aB2Db5B95cCA1e5BB91F1174"
]
}
],
"description": "Contains a list of proposed state roots which Proposers assert to be a result of block execution. The SuccinctL2OutputOracle modifies the L2OutputOracle to support whenNotOptimistic mode, in which a validity proof can be passed as input argument to the proposeL2Output function.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1\n * **owner**: Conduit Multisig 1\n * **proposer**: EOA 2",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb45440830bd8D288bB2B5B01Be303ae60fc855d8#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xb4899FF43Ae727B1E9CB19AC44660e4A43Fad0b5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Conduit Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb4899FF43Ae727B1E9CB19AC44660e4A43Fad0b5#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0xC89A60DD42Fb0B4EfD383D98C7D577F88eC9E166",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
}
],
"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 Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC89A60DD42Fb0B4EfD383D98C7D577F88eC9E166#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0xDeF9B23dAE7769004e80f579f9d3aF0D7a29E4aD",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xDeF9B23dAE7769004e80f579f9d3aF0D7a29E4aD#code"
},
{
"name": "OptimismMintableERC20Factory",
"isVerified": true,
"address": "eth:0xF8e8E783fa7A5CCDB77EddC3335cDb00066B515e",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1734387347,
"transactionHash": "0xee7a287bb9169343a89e0550c67d182204e26955e0d7e5c6afea15f1a15505e1",
"implementations": [
"eth:0x000FAF919Dc5a946B82bFfF252FAbC378bda1F50"
]
},
{
"timestamp": 1756390823,
"transactionHash": "0xa6fc3d1acadac8c1ff8d85f86909f8b91c3913c49a1ef56f1dfd3a961c9605c4",
"implementations": [
"eth:0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x5493f4677A186f64805fe7317D6993ba4863988F"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
}
],
"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 Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF8e8E783fa7A5CCDB77EddC3335cDb00066B515e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x96B124841Eff4Ab1b3C1F654D60402a1405fF51A",
"sinceTimestamp": 1734387299,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x96B124841Eff4Ab1b3C1F654D60402a1405fF51A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1734387347,
"transactionHash": "0xf15016a91149382e41ef8c726b4e2f21bd371fd1ca2ec5ac6963d485e9a4a1e1",
"implementations": [
"eth:0x5651e4f573303ec65Ba7579Fdc09166F7a403776"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0xe2F826324b2faf99E513D16D266c3F80aE87832B"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x2D7e764a0D9919e16983a46595CfA81fc34fa7Cd"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4"
]
},
{
"timestamp": 1757426807,
"transactionHash": "0x5f02cf3fa2d556aafdb60e240b334f122786f05444e802f1f08c881e198bb20a",
"implementations": [
"eth:0x5B172BBfa0140285A02374EC1f5B9f25ef415514"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x381E729FF983FA4BCEd820e7b922d79bF653B999"
]
},
{
"timestamp": 1768923887,
"transactionHash": "0x72fd82354124671e3b28d78e70d9eec692ae7f119281ab473aa75f394f1b52ab",
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
}
],
"description": "Main entry point for users depositing ETH.",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x96B124841Eff4Ab1b3C1F654D60402a1405fF51A#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x6A3444d11cA2697fe4A19AC8995ABDd8Dd301521",
"sinceTimestamp": 1734387299,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x6A3444d11cA2697fe4A19AC8995ABDd8Dd301521",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x198A8e0c220f29d8aF956e4c8A9E8b552096Ab2E"
],
"implementations": [
"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A"
]
},
"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/0x6A3444d11cA2697fe4A19AC8995ABDd8Dd301521#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"programHashes": [
{
"title": "OP absolute prestate v1.6.0 (cannon64)",
"description": "A commitment to the initial state of the OP stack fault proof program.",
"programUrl": "https://github.com/ethereum-optimism/optimism/tree/op-program/v1.6.0/op-program",
"verificationStatus": "successful",
"verificationSteps": "Steps are based on [this guide](https://docs.optimism.io/chain-operators/tutorials/absolute-prestate).\n\n1. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/) and make sure it is running.\n2. Check out the correct branch of [optimism](https://github.com/ethereum-optimism/optimism) repo: `git checkout op-program/v1.6.0` . Commit hash should be `d6fb90dd489e39efa206b55200766ccc075c1d9b`.\n3. Regenerate the absolute prestate: `make reproducible-prestate`. This script will print out the correct hash.",
"hash": "0x03682932cec7ce0a3874b19675a6bbc923054a7b321efc7d3835187b172494b6"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "AggchainECDSAMultisig",
"isVerified": true,
"address": "eth:0x519E42c24163192Dca44CD3fBDCEBF6be9130987",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1706364971,
"transactionHash": "0x4e3fc80071c2d0852584cb59bfcd784519bfb3582aa3334098a4b32b5f6aaef4",
"implementations": [
"eth:0x79BCB82B35A335cD8A8Ec433b304a0c91f67CDE0"
]
},
{
"timestamp": 1710419135,
"transactionHash": "0xeba0bc3b2674c961c5a998f22f789ea610a7c3e57e622a4dd951cca2702b8be3",
"implementations": [
"eth:0x2650a9a4fC64f63F573EF0F405064EF54BC46f71"
]
},
{
"timestamp": 1711323407,
"transactionHash": "0x67e892c44b9d14709693e74dd5e17fb40d98c8c2cc1c5330265e758e8958a01b",
"implementations": [
"eth:0x2650a9a4fC64f63F573EF0F405064EF54BC46f71"
]
},
{
"timestamp": 1727792579,
"transactionHash": "0x069690e412d29d96bc94d6bf5c816e43bb401cbf948f3e3cad261e073e2d2afe",
"implementations": [
"eth:0x2650a9a4fC64f63F573EF0F405064EF54BC46f71"
]
},
{
"timestamp": 1736943371,
"transactionHash": "0x9328cfd3d2833dca2d0ea16fbb34f8fc096c26ca8334476c5bf7107f32436029",
"implementations": [
"eth:0x7253F329302b1b5E774Ac641EA3743E9E3244f2E"
]
},
{
"timestamp": 1764753203,
"transactionHash": "0xd8eb9f7bf7594d047e0c8b254b3893eb05daf692b1688adaacd21af144efe2a5",
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
}
],
"description": "System contract defining the polygon zkEVM Aggchain logic. It only enforces bridge accounting (pessimistic) proofs to protect the shared bridge while the Aggchain state transitions are not proven. They must instead be signed by 1 aggchainSigner(s).\n* Roles:\n * **aggchainSigners**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x519E42c24163192Dca44CD3fBDCEBF6be9130987#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 2, EOA 3\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "daiBridge",
"isVerified": true,
"address": "eth:0x4A27aC91c5cD3768F140ECabDe3FC2B2d92eDb98",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xf694C9e3a34f5Fa48b6f3a0Ff186C1c6c4FcE904"
],
"implementations": [
"eth:0xF684f2CB299cCDaAB483ffc1573B82f40C6b775b"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1695199499,
"transactionHash": "0x2c7c12aeaf738701352017fc49f5268db9632b84bdc6f76474e6776371f53b7e",
"implementations": [
"eth:0xF684f2CB299cCDaAB483ffc1573B82f40C6b775b"
]
}
],
"description": "Custom Bridge escrow for DAI bridged to PolygonZkEVM allowing for a custom L2 tokens contract.\n* Roles:\n * **admin**: Polygon zkEVM Multisig",
"upgradableBy": [
{
"name": "Polygon zkEVM Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x4A27aC91c5cD3768F140ECabDe3FC2B2d92eDb98#code"
},
{
"name": "usdcBridge",
"isVerified": true,
"address": "eth:0x70E70e58ed7B1Cec0D8ef7464072ED8A52d755eB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xf694C9e3a34f5Fa48b6f3a0Ff186C1c6c4FcE904"
],
"implementations": [
"eth:0xA4e6762eAAf259DA74696F46fAAF79bA9DdE14E6"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1700125979,
"transactionHash": "0x6402dc60bb9c4f704f126f4b11e40b33c287b4ac7f73ea60c50d7452d52ce735",
"implementations": [
"eth:0xA4e6762eAAf259DA74696F46fAAF79bA9DdE14E6"
]
}
],
"description": "Custom Bridge escrow for USDC bridged to PolygonZkEVM allowing for a custom L2 tokens contract.\n* Roles:\n * **admin**: Polygon zkEVM Multisig",
"upgradableBy": [
{
"name": "Polygon zkEVM Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x70E70e58ed7B1Cec0D8ef7464072ED8A52d755eB#code"
},
{
"name": "wstETHBridge",
"isVerified": true,
"address": "eth:0xf0CDE1E7F0FAD79771cd526b1Eb0A12F69582C01",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xf694C9e3a34f5Fa48b6f3a0Ff186C1c6c4FcE904"
],
"implementations": [
"eth:0x18FED1E19dC564DC917D203be9d40790472D22e9"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1703945135,
"transactionHash": "0x12c54f4243dc8e3b41be87984b78248eecbf98b92e30ff10b487be2599d7e3a1",
"implementations": [
"eth:0x18FED1E19dC564DC917D203be9d40790472D22e9"
]
}
],
"description": "Custom Bridge escrow for wstETH bridged to PolygonZkEVM allowing for a custom L2 tokens contract.\n* Roles:\n * **admin**: Polygon zkEVM Multisig",
"upgradableBy": [
{
"name": "Polygon zkEVM Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf0CDE1E7F0FAD79771cd526b1Eb0A12F69582C01#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1679653127,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherPreminted",
"premintedAmount": "200000000000000000000000000"
},
"chainId": 1
},
{
"address": "0x70E70e58ed7B1Cec0D8ef7464072ED8A52d755eB",
"sinceTimestamp": 1700125979,
"tokens": [
"USDC"
],
"contract": {
"isVerified": true,
"address": "eth:0x70E70e58ed7B1Cec0D8ef7464072ED8A52d755eB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xf694C9e3a34f5Fa48b6f3a0Ff186C1c6c4FcE904"
],
"implementations": [
"eth:0xA4e6762eAAf259DA74696F46fAAF79bA9DdE14E6"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1700125979,
"transactionHash": "0x6402dc60bb9c4f704f126f4b11e40b33c287b4ac7f73ea60c50d7452d52ce735",
"implementations": [
"eth:0xA4e6762eAAf259DA74696F46fAAF79bA9DdE14E6"
]
}
],
"description": "Custom Bridge escrow for USDC bridged to PolygonZkEVM allowing for a custom L2 tokens contract.",
"url": "https://etherscan.io/address/0x70E70e58ed7B1Cec0D8ef7464072ED8A52d755eB#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0xf0CDE1E7F0FAD79771cd526b1Eb0A12F69582C01",
"sinceTimestamp": 1703945135,
"tokens": [
"wstETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xf0CDE1E7F0FAD79771cd526b1Eb0A12F69582C01",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xf694C9e3a34f5Fa48b6f3a0Ff186C1c6c4FcE904"
],
"implementations": [
"eth:0x18FED1E19dC564DC917D203be9d40790472D22e9"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1703945135,
"transactionHash": "0x12c54f4243dc8e3b41be87984b78248eecbf98b92e30ff10b487be2599d7e3a1",
"implementations": [
"eth:0x18FED1E19dC564DC917D203be9d40790472D22e9"
]
}
],
"description": "Custom Bridge escrow for wstETH bridged to PolygonZkEVM allowing for a custom L2 tokens contract.",
"url": "https://etherscan.io/address/0xf0CDE1E7F0FAD79771cd526b1Eb0A12F69582C01#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x4A27aC91c5cD3768F140ECabDe3FC2B2d92eDb98",
"sinceTimestamp": 1695199499,
"tokens": [
"DAI",
"sDAI"
],
"contract": {
"isVerified": true,
"address": "eth:0x4A27aC91c5cD3768F140ECabDe3FC2B2d92eDb98",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xf694C9e3a34f5Fa48b6f3a0Ff186C1c6c4FcE904"
],
"implementations": [
"eth:0xF684f2CB299cCDaAB483ffc1573B82f40C6b775b"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1695199499,
"transactionHash": "0x2c7c12aeaf738701352017fc49f5268db9632b84bdc6f76474e6776371f53b7e",
"implementations": [
"eth:0xF684f2CB299cCDaAB483ffc1573B82f40C6b775b"
]
}
],
"description": "Custom Bridge escrow for DAI bridged to PolygonZkEVM allowing for a custom L2 tokens contract.",
"url": "https://etherscan.io/address/0x4A27aC91c5cD3768F140ECabDe3FC2B2d92eDb98#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"programHashes": [
{
"title": "Pessimistic program of agglayer 0.3.3-post4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.3.3-post.4`. Commit hash should be `df072abc86fa89e12b17204246325983272a1141`\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer v0.4.4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.4.4`. Commit hash should be `caac9f06bc7cb1cf89912dbb4dffa4d594a00bd5`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
},
{
"title": "Pessimistic program of agglayer v0.5.1",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.5.1/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.5.1`. Commit hash should be `f7bb86695b03d363c3d0d15ff7f2d8b386e58c91`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv64im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x00d14f977a6ec393014f300ad78d0761dc29435d3fa1e2626fa466bd3343578e"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
+1 -1
{
"addresses": {
"arbitrum": [
{
"name": "Bridge",
"isVerified": true,
"address": "arb1:0x255f80Ef2F09FCE0944faBb292b8510F01316Cf0",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0x74faA20aE77FFAb036369b24066Cc5d4251900D2"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716145,
"transactionHash": "0xfc9b3973815b82226b0df5c0db23edf854e2ff768a745792e2c27f31b36798c2",
"implementations": [
"arb1:0x74faA20aE77FFAb036369b24066Cc5d4251900D2"
]
}
],
"description": "Escrow contract for the project's gas token (can be different from ETH). Keeps a list of allowed Inboxes and Outboxes for canonical bridge messaging.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x255f80Ef2F09FCE0944faBb292b8510F01316Cf0#code"
},
{
"name": "RollupProxy",
"isVerified": true,
"address": "arb1:0x2e988Ea0873C9d712628F0bf38DAFdE754927C89",
"upgradeability": {
"proxyType": "Arbitrum proxy",
"admins": [
"arb1:0x139C5A235632EDdad741ff380112B3161d31a21C"
],
"implementations": [
"arb1:0x086Fe1f212A4F311f1e3027A35dE3d45dC4AFA42",
"arb1:0x107B8ff1daeEFc37c27fc794fdb0828A1B5Af262"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716145,
"transactionHash": "0xfc9b3973815b82226b0df5c0db23edf854e2ff768a745792e2c27f31b36798c2",
"implementations": [
"arb1:0xc326D023758d7D212d529D1E58D7f271CAe49fcf",
"arb1:0xD92D49e8A2230E2C7a73c3ff4Df1AED09dA32a07"
]
},
{
"timestamp": 1730751274,
"transactionHash": "0x3da8ef35136e3b37f5b7ea453a773a9a22a9195d2fac287a5b30ebac420f1357",
"implementations": [
"arb1:0x8470c94a718f062156a4663ea797359E908b5836",
"arb1:0x5bc2d4D25446Fa7C51Eefe10e2FdF846bD355A5d"
]
},
{
"timestamp": 1734537691,
"transactionHash": "0xf6ba2a68694536996ab068340a4b4abc811a9d72c0ad5c2af34ccea6c7a25c88",
"implementations": [
"arb1:0x086Fe1f212A4F311f1e3027A35dE3d45dC4AFA42",
"arb1:0x107B8ff1daeEFc37c27fc794fdb0828A1B5Af262"
]
}
],
"description": "Central contract for the project's configuration like its execution logic hash (`wasmModuleRoot`) and addresses of the other system contracts. Entry point for Proposers creating new Rollup Nodes (state commitments) and Challengers submitting fraud proofs (In the Orbit stack, these two roles are both held by the Validators).\n* Roles:\n * **admin**: UpgradeExecutor; ultimately Caldera Multisig 1, SafeL2\n * **owner**: UpgradeExecutor; ultimately Caldera Multisig 1, SafeL2\n * **validators**: EOA 2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x2e988Ea0873C9d712628F0bf38DAFdE754927C89#code"
},
{
"name": "SequencerInbox",
"isVerified": true,
"address": "arb1:0xA436f1867adD490BF1530c636f2FB090758bB6B3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0xF39c8d67B55Fef4851f9267304aA1A030E0DecAC"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716145,
"transactionHash": "0xfc9b3973815b82226b0df5c0db23edf854e2ff768a745792e2c27f31b36798c2",
"implementations": [
"arb1:0x1d182075d07744D71E37f77f1654165f6DAFad08"
]
},
{
"timestamp": 1730748413,
"transactionHash": "0x2def26eb81ac9d539c866215344b91b71bef86d51fb556eaf6bafd6703e68bb6",
"implementations": [
"arb1:0x305eD6932AbF2e997832C570E467320BbA1491F4"
]
},
{
"timestamp": 1734537691,
"transactionHash": "0xf6ba2a68694536996ab068340a4b4abc811a9d72c0ad5c2af34ccea6c7a25c88",
"implementations": [
"arb1:0xa8968d1dbA3F93FB7412d15F4139C0f63537e9E2"
]
},
{
"timestamp": 1738182192,
"transactionHash": "0xb59494487d444c465d61f19a4fe9830806da172e2883ae0861c155f3066592a7",
"implementations": [
"arb1:0xE2DdF957261A6d8a96A7eff29C51460707FfbBE5"
]
},
{
"timestamp": 1738289135,
"transactionHash": "0x206804ee59ae4cd1cd13fc2c92c59958f3ecfcf3f210b2d583a6816e3a4a0b10",
"implementations": [
"arb1:0x805dc3546d99AfB35EfB261b907679b67A08256e"
]
},
{
"timestamp": 1746452624,
"transactionHash": "0x4eacd17837407047b65635abdfb9d2693b58efa4040f33baca7b9d27271b0a2c",
"implementations": [
"arb1:0xF39c8d67B55Fef4851f9267304aA1A030E0DecAC"
]
},
{
"timestamp": 1747765120,
"transactionHash": "0x1ff1a74aaa6a58e0a3389de2761ed84c9051a4ffea080265aae0d62aaf9df75c",
"implementations": [
"arb1:0xF39c8d67B55Fef4851f9267304aA1A030E0DecAC"
]
}
],
"description": "The Espresso TEE sequencer (registered in this contract) can submit transaction batches or commitments here. This version of the SequencerInbox also supports commitments to data that is posted to Celestia.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, SafeL2\n * **batchPosterManager**: EOA 1\n * **batchPosters**: EOA 1",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xA436f1867adD490BF1530c636f2FB090758bB6B3#code"
},
{
"name": "ChallengeManager",
"isVerified": true,
"address": "arb1:0xa9064FebD91E9Ab4c49C8989926Cada18bc9C8FF",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0x7e4c2B3405cA7900d0f7C2DBEF3Dc127D9f3Cb9b"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716145,
"transactionHash": "0xfc9b3973815b82226b0df5c0db23edf854e2ff768a745792e2c27f31b36798c2",
"implementations": [
"arb1:0x935239e066F4F449D87D600e6d7c1a4F24c50f97"
]
},
{
"timestamp": 1730748413,
"transactionHash": "0x2def26eb81ac9d539c866215344b91b71bef86d51fb556eaf6bafd6703e68bb6",
"implementations": [
"arb1:0xa24eF25c521d7927c11d7Da940b4B63e0E9575C6"
]
},
{
"timestamp": 1730751274,
"transactionHash": "0x3da8ef35136e3b37f5b7ea453a773a9a22a9195d2fac287a5b30ebac420f1357",
"implementations": [
"arb1:0x7Eac96FDa155F0cE911d93D540e405e4020B082D"
]
},
{
"timestamp": 1734537691,
"transactionHash": "0xf6ba2a68694536996ab068340a4b4abc811a9d72c0ad5c2af34ccea6c7a25c88",
"implementations": [
"arb1:0xFd7A2567C6b56153f1b0D4FDbCc671d178a971fc"
]
},
{
"timestamp": 1746452624,
"transactionHash": "0x4eacd17837407047b65635abdfb9d2693b58efa4040f33baca7b9d27271b0a2c",
"implementations": [
"arb1:0x5DD914a56853Da4C6Cee07827483F532e65B6FeD"
]
},
{
"timestamp": 1747765120,
"transactionHash": "0x1ff1a74aaa6a58e0a3389de2761ed84c9051a4ffea080265aae0d62aaf9df75c",
"implementations": [
"arb1:0x7e4c2B3405cA7900d0f7C2DBEF3Dc127D9f3Cb9b"
]
}
],
"description": "Contract that allows challenging state roots. Can be called through the RollupProxy by Validators or the UpgradeExecutor.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xa9064FebD91E9Ab4c49C8989926Cada18bc9C8FF#code"
},
{
"name": "UpgradeExecutor",
"isVerified": true,
"address": "arb1:0x139C5A235632EDdad741ff380112B3161d31a21C",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0x20C6be2A0429A82a7bF113905a29d36CF6753B10"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716145,
"transactionHash": "0xfc9b3973815b82226b0df5c0db23edf854e2ff768a745792e2c27f31b36798c2",
"implementations": [
"arb1:0x20C6be2A0429A82a7bF113905a29d36CF6753B10"
]
}
],
"description": "Central contract defining the access control permissions for upgrading the system contract implementations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, SafeL2\n * **executors**: Caldera Multisig 1, SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x139C5A235632EDdad741ff380112B3161d31a21C#code"
},
{
"name": "Inbox",
"isVerified": true,
"address": "arb1:0x37e60F80d921dc5E7f501a7130F31f6548dBa564",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0x4cA89361F5F79092822F95F34334227528ed63A8"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716145,
"transactionHash": "0xfc9b3973815b82226b0df5c0db23edf854e2ff768a745792e2c27f31b36798c2",
"implementations": [
"arb1:0x198792E7e60688FEeB0b89f0ABD3b85953Dd05Cd"
]
},
{
"timestamp": 1746452624,
"transactionHash": "0x4eacd17837407047b65635abdfb9d2693b58efa4040f33baca7b9d27271b0a2c",
"implementations": [
"arb1:0x6B292d1d4D38653b4F1D6De41c6be198371C5af1"
]
},
{
"timestamp": 1747765120,
"transactionHash": "0x1ff1a74aaa6a58e0a3389de2761ed84c9051a4ffea080265aae0d62aaf9df75c",
"implementations": [
"arb1:0x4cA89361F5F79092822F95F34334227528ed63A8"
]
}
],
"description": "Facilitates sending L1 to L2 messages like depositing ETH, but does not escrow funds.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x37e60F80d921dc5E7f501a7130F31f6548dBa564#code"
},
{
"name": "ERC20Gateway",
"isVerified": true,
"address": "arb1:0x46406c88285AD9BE2fB23D9aD96Cb578d824cAb6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0xcc6DcB3FaA2436270E696994f326426B76A9f731"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716148,
"transactionHash": "0x55f5bdbceb2bf6779c46e60ffeaaeee6e1273aa3741b1179337a62acc0b3167a",
"implementations": [
"arb1:0xcc6DcB3FaA2436270E696994f326426B76A9f731"
]
}
],
"description": "Escrows deposited ERC-20 assets for the canonical Bridge. Upon depositing, a generic token representation will be minted at the destination. Withdrawals are initiated by the Outbox contract.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x46406c88285AD9BE2fB23D9aD96Cb578d824cAb6#code"
},
{
"name": "Outbox",
"isVerified": true,
"address": "arb1:0x91591BB66075BCfF94AA128B003134165C3Ab83a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0x84Cf78b9573daDb2FBa3028e49e0B5F785134360"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716145,
"transactionHash": "0xfc9b3973815b82226b0df5c0db23edf854e2ff768a745792e2c27f31b36798c2",
"implementations": [
"arb1:0x84Cf78b9573daDb2FBa3028e49e0B5F785134360"
]
}
],
"description": "Facilitates L2 to L1 contract calls: Messages initiated from L2 (for example withdrawal messages) eventually resolve in execution on L1.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x91591BB66075BCfF94AA128B003134165C3Ab83a#code"
},
{
"name": "GatewayRouter",
"isVerified": true,
"address": "arb1:0x2623C144B4d167f70893f6A8968B98c89a6C5F97",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0x532Ba80626DF9042353fa9509A66a25eE90fc51B"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716148,
"transactionHash": "0x55f5bdbceb2bf6779c46e60ffeaaeee6e1273aa3741b1179337a62acc0b3167a",
"implementations": [
"arb1:0x532Ba80626DF9042353fa9509A66a25eE90fc51B"
]
}
],
"description": "This routing contract maps tokens to the correct escrow (gateway) to be then bridged with canonical messaging.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x2623C144B4d167f70893f6A8968B98c89a6C5F97#code"
},
{
"name": "CustomGateway",
"isVerified": true,
"address": "arb1:0x8bE956aB42274056ef4471BEb211b33e258b7324",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0x0987F33E1d59ECcedbDd6356ED34F06dd7baDcF8"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716148,
"transactionHash": "0x55f5bdbceb2bf6779c46e60ffeaaeee6e1273aa3741b1179337a62acc0b3167a",
"implementations": [
"arb1:0x0987F33E1d59ECcedbDd6356ED34F06dd7baDcF8"
]
}
],
"description": "Escrows deposited assets for the canonical bridge that are externally governed or need custom token contracts with e.g. minting rights or upgradeability.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x8bE956aB42274056ef4471BEb211b33e258b7324#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "arb1:0x003e70B041abb993006C03E56c8515622a02928C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "* Roles:\n * **owner**: UpgradeExecutor",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x003e70B041abb993006C03E56c8515622a02928C#code"
},
{
"name": "OneStepProverMath",
"isVerified": true,
"address": "arb1:0x1e5fCE58D1358aCbc3d32ac106a20B7F19C434eC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x1e5fCE58D1358aCbc3d32ac106a20B7F19C434eC#code"
},
{
"name": "OneStepProver0",
"isVerified": true,
"address": "arb1:0x2948690217F3C2fDD6166343da8A7Ac2B7f5c134",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x2948690217F3C2fDD6166343da8A7Ac2B7f5c134#code"
},
{
"name": "OneStepProofEntry",
"isVerified": true,
"address": "arb1:0x2BA5cB2D332E266c43D0Ef18F879650d00630B61",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x2BA5cB2D332E266c43D0Ef18F879650d00630B61#code"
},
{
"name": "OneStepProverHostIo",
"isVerified": true,
"address": "arb1:0x3A765e7a1709C19F065F098AAF2940AAA7ac0AE3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine. This version uses the Blobstream DA bridge (ArbitrumBlobstream) as source of truth for the DA referenced by the fault proof.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x3A765e7a1709C19F065F098AAF2940AAA7ac0AE3#code"
},
{
"name": "RollupEventInbox",
"isVerified": true,
"address": "arb1:0x3bC4894370dE0Aa304ed717c2e01866c46F1CEa6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0x73D3a5E535cBF98B9b5Ff7fEb8EC26e61FCEC4b7"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716145,
"transactionHash": "0xfc9b3973815b82226b0df5c0db23edf854e2ff768a745792e2c27f31b36798c2",
"implementations": [
"arb1:0x73D3a5E535cBF98B9b5Ff7fEb8EC26e61FCEC4b7"
]
}
],
"description": "Helper contract sending configuration data over the bridge during the systems initialization.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Caldera Multisig 1, SafeL2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
},
{
"name": "Caldera Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x3bC4894370dE0Aa304ed717c2e01866c46F1CEa6#code"
},
{
"name": "QuoteVerifier",
"isVerified": true,
"address": "arb1:0x4613038C93aF8963dc9E5e46c9fb3cbc68724df1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "The QuoteVerifier contract is used by the EspressoTEEVerifier to verify the validity of the TEE quote. It references a PCCSRouter (0x729E3e7542E8A6630818E9a14A67e0Cb7008a5E5), an access point for Intel SGX 'collateral', crucial references of which some modular contracts are unverified.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x4613038C93aF8963dc9E5e46c9fb3cbc68724df1#code"
},
{
"name": "ValidatorUtils",
"isVerified": true,
"address": "arb1:0x9e83136d4B3AD04C766591EA51712F9aEa3194C0",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "This contract implements view only utilities for validators.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x9e83136d4B3AD04C766591EA51712F9aEa3194C0#code"
},
{
"name": "OneStepProverMemory",
"isVerified": true,
"address": "arb1:0xb47a57a218911653d964fE8aAa1cED55A71D8043",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xb47a57a218911653d964fE8aAa1cED55A71D8043#code"
},
{
"name": "EspressoTEEVerifier",
"isVerified": true,
"address": "arb1:0xEe8f0e3BC9c3965460B99D0D2DFBb05c508536fb",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "The Espresso TEE verifier is used by the SequencerInbox contract to verify the batch attestations signed by the TEE.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xEe8f0e3BC9c3965460B99D0D2DFBb05c508536fb#code"
},
{
"name": "ArbitrumBlobstream",
"isVerified": true,
"address": "arb1:0xA83ca7775Bc2889825BcDeDfFa5b758cf69e8794",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x738a9b55304f9fcF776B3BA285e50c0f9eF77997"
],
"implementations": [
"arb1:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1710651080,
"transactionHash": "0x58059198a17ae1d8dd73b4d0f0ce7169f4e55d901a8fea59b4ef12d005a41f0a",
"implementations": [
"arb1:0x7C3A9b466FF5c02582fa32d4aD1b2Cb431fB7c9b"
]
},
{
"timestamp": 1710724776,
"transactionHash": "0xf45e346ddbedef1ea3f828954c979adcb205b4b1c0ca72e49e7e2ef5b1c43192",
"implementations": [
"arb1:0xfb19439fBa9f16aA720be6bE0e53465a9733C964"
]
},
{
"timestamp": 1724698402,
"transactionHash": "0x746e21628ccec4d5b4da96595f852a6398defcc360cb9f13aa2d84ebe4e7403f",
"implementations": [
"arb1:0x47fd660D5252Bd6F9D2c71507E46aa1d6e957c23"
]
},
{
"timestamp": 1733166545,
"transactionHash": "0x07dbff15e24a8c124a927a2881cb4d471ace180488a56a56b43b47d1da68a130",
"implementations": [
"arb1:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
}
],
"description": "The Blobstream DA bridge. This contract is used to bridge data commitments between Celestia and the destination chain. It specifies relayers that commit block ranges, but due to the lack of emitted events, there may be more relayers than are presented here.\n* Roles:\n * **admin**: BlobstreamMultisig\n * **guardians**: BlobstreamMultisig\n * **relayers**: EOA 3, EOA 4",
"upgradableBy": [
{
"name": "BlobstreamMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xA83ca7775Bc2889825BcDeDfFa5b758cf69e8794#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGatewayArb",
"isVerified": true,
"address": "arb1:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x255f80Ef2F09FCE0944faBb292b8510F01316Cf0",
"sinceTimestamp": 1705716145,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "arb1:0x255f80Ef2F09FCE0944faBb292b8510F01316Cf0",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0x74faA20aE77FFAb036369b24066Cc5d4251900D2"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716145,
"transactionHash": "0xfc9b3973815b82226b0df5c0db23edf854e2ff768a745792e2c27f31b36798c2",
"implementations": [
"arb1:0x74faA20aE77FFAb036369b24066Cc5d4251900D2"
]
}
],
"description": "Contract managing Inboxes and Outboxes. It escrows ETH sent to L2.",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"url": "https://arbiscan.io/address/0x255f80Ef2F09FCE0944faBb292b8510F01316Cf0#code"
},
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
},
{
"address": "0x46406c88285AD9BE2fB23D9aD96Cb578d824cAb6",
"sinceTimestamp": 1705716148,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "arb1:0x46406c88285AD9BE2fB23D9aD96Cb578d824cAb6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0xcc6DcB3FaA2436270E696994f326426B76A9f731"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716148,
"transactionHash": "0x55f5bdbceb2bf6779c46e60ffeaaeee6e1273aa3741b1179337a62acc0b3167a",
"implementations": [
"arb1:0xcc6DcB3FaA2436270E696994f326426B76A9f731"
]
}
],
"description": "Main entry point for users depositing ERC20 tokens. Upon depositing, on L2 a generic, \"wrapped\" token will be minted.",
"url": "https://arbiscan.io/address/0x46406c88285AD9BE2fB23D9aD96Cb578d824cAb6#code"
},
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
},
{
"address": "0x8bE956aB42274056ef4471BEb211b33e258b7324",
"sinceTimestamp": 1705716148,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "arb1:0x8bE956aB42274056ef4471BEb211b33e258b7324",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x003e70B041abb993006C03E56c8515622a02928C"
],
"implementations": [
"arb1:0x0987F33E1d59ECcedbDd6356ED34F06dd7baDcF8"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1705716148,
"transactionHash": "0x55f5bdbceb2bf6779c46e60ffeaaeee6e1273aa3741b1179337a62acc0b3167a",
"implementations": [
"arb1:0x0987F33E1d59ECcedbDd6356ED34F06dd7baDcF8"
]
}
],
"description": "Main entry point for users depositing ERC20 tokens that require minting custom token on L2.",
"url": "https://arbiscan.io/address/0x8bE956aB42274056ef4471BEb211b33e258b7324#code"
},
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
}
],
"programHashes": [
{
"title": "Celestia Nitro 3.3.2 wasmModuleRoot",
"description": "A commitment to the exact WASM binary version used for Orbit stack optimistic dispute games, which uses Celestia DA.",
"programUrl": "https://github.com/celestiaorg/nitro/tree/celestia-v3.3.2/arbos",
"verificationStatus": "successful",
"verificationSteps": "Even though the program is compiled in docker for reproducibility reasons, it gives the correct results only on linux OS. Steps below were done on Ubuntu 22.04 OS. The steps below consume ~35 GiB disk space.\n\n1. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/).\n2. Checkout the correct branch in [celestiaorg/nitro](https://github.com/celestiaorg/nitro/tree/celestia-v3.3.2) repo: `git checkout celestia-v3.3.2` . Commit hash should be `7c9d688a256cc60f2b8db9dbe9ac40511d0d1f2e`.\n3. Update git submodules `git submodule update --init --recursive --force`.\n4. To fix build errors, add this to `contracts/foundry.toml`: \n```\n[profile.yul.lint]\nlint_on_build = false\n```\nAlso replace line 98 of Dockerfile with `cargo install --force --locked cbindgen --version \"=0.26.0\"` and line 46 with `RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.75.0 --target x86_64-unknown-linux-gnu --target wasm32-unknown-unknown --target wasm32-wasi`.\n\n5. Generate wasm module root in docker: `docker buildx build --target nitro-node-dev -t nitro-node-dev .`.\n6. Export the value from the docker: `docker run --rm --entrypoint cat nitro-node-dev /home/user/target/machines/latest/module-root.txt`.",
"hash": "0xaf1dbdfceb871c00bfbb1675983133df04f0ed04e89647812513c091e3a982b3"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": []
}
+60 -60
+60 -60
{
"addresses": {
"ethereum": [
{
"name": "DisputeGameFactory",
"isVerified": true,
"address": "eth:0x6A4139810986CF13408330e14C4ac9Daf0511aA3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767605759,
"transactionHash": "0x6600d05ac638814f9d013f41343ae316390ec97ae0c30fe4147a82510859779a",
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
}
],
"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 Rise ProxyAdminOwner Multisig",
"upgradableBy": [
{
"name": "Rise ProxyAdminOwner Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6A4139810986CF13408330e14C4ac9Daf0511aA3#code"
},
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0xad92Fa18EB74E46Db844240623124BF46589db4C",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767605759,
"transactionHash": "0x6600d05ac638814f9d013f41343ae316390ec97ae0c30fe4147a82510859779a",
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
}
],
"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 42.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Rise ProxyAdminOwner Multisig",
"upgradableBy": [
{
"name": "Rise ProxyAdminOwner Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xad92Fa18EB74E46Db844240623124BF46589db4C#code"
},
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0xD3CAf2A473dBB5bc2E8FB7F328e01AB9B726a24f",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0x2dBFabA1D1d4172E0f8301671DED544C0079B961"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767605759,
"transactionHash": "0x6600d05ac638814f9d013f41343ae316390ec97ae0c30fe4147a82510859779a",
"implementations": [
"eth:0x2dBFabA1D1d4172E0f8301671DED544C0079B961"
]
}
],
"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 Rise ProxyAdminOwner Multisig\n * **batcherHash**: EOA 1\n * **owner**: Rise Guardian Multisig",
"upgradableBy": [
{
"name": "Rise ProxyAdminOwner Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD3CAf2A473dBB5bc2E8FB7F328e01AB9B726a24f#code"
},
{
"name": "SuperchainConfig",
"isVerified": true,
"address": "eth:0xB786207A1EdfC724c1d507335f403F53fd9E79d6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x4ebc046b1cfc12659A19E124b0ea8a382777E542"
],
"implementations": [
"eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767605663,
"transactionHash": "0x19f80daed48b3daf890909b960b8058526f5468a974d27ae71a232e4178422a8",
"implementations": [
"eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957"
]
}
],
"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* Roles:\n * **admin**: ProxyAdmin; ultimately Rise ProxyAdminOwner Multisig\n * **guardian**: Rise Guardian Multisig",
"upgradableBy": [
{
"name": "Rise ProxyAdminOwner Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xB786207A1EdfC724c1d507335f403F53fd9E79d6#code"
},
{
"name": "L1ERC721Bridge",
"isVerified": true,
"address": "eth:0x01A6274B9607ac024e8c191E491d0b25ad14c217",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767605759,
"transactionHash": "0x6600d05ac638814f9d013f41343ae316390ec97ae0c30fe4147a82510859779a",
"implementations": [
"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9"
]
}
],
"description": "Used to bridge ERC-721 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Rise ProxyAdminOwner Multisig",
"upgradableBy": [
{
"name": "Rise ProxyAdminOwner Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x01A6274B9607ac024e8c191E491d0b25ad14c217#code"
},
{
"name": "L1StandardBridge",
"isVerified": true,
"address": "eth:0x553257678Dd11a6668a92934AAB005e420c6535A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "The main entry point to deposit ERC20 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Rise ProxyAdminOwner Multisig",
"upgradableBy": [
{
"name": "Rise ProxyAdminOwner Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x553257678Dd11a6668a92934AAB005e420c6535A#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0xC0de1d9B1cD2Caf782355C66a6A8e5948e63c9c6",
"upgradeability": {
"proxyType": "resolved delegate proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767605759,
"transactionHash": "0x6600d05ac638814f9d013f41343ae316390ec97ae0c30fe4147a82510859779a",
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
]
}
],
"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 Rise ProxyAdminOwner Multisig",
"upgradableBy": [
{
"name": "Rise ProxyAdminOwner Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC0de1d9B1cD2Caf782355C66a6A8e5948e63c9c6#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "PreimageOracle",
"isVerified": true,
"address": "eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0x2e7758aAD2B6D3D1Fd2C937D9B322378fC644633",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2e7758aAD2B6D3D1Fd2C937D9B322378fC644633#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x4ebc046b1cfc12659A19E124b0ea8a382777E542",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Rise ProxyAdminOwner Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x4ebc046b1cfc12659A19E124b0ea8a382777E542#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0x551A672d703966D83C3EC3ea0e844f43c3373c91",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767605759,
"transactionHash": "0x6600d05ac638814f9d013f41343ae316390ec97ae0c30fe4147a82510859779a",
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
},
{
"timestamp": 1767608135,
"transactionHash": "0xcb64d5e0ddf1fe3208f3c9d2bbc7549e64b68340b0a03fbe224320152ade4789",
"implementations": [
"eth:0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC"
]
},
{
"timestamp": 1767608135,
"transactionHash": "0xcb64d5e0ddf1fe3208f3c9d2bbc7549e64b68340b0a03fbe224320152ade4789",
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
}
],
"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 OPSuccinctFaultDisputeGame. Variant for chains using OPSuccinct (SP1) games instead of Cannon, which omits Cannon-specific cross-contract fields (vm, oracle, weth, challengePeriod, absolutePrestate from game).\n* Roles:\n * **admin**: ProxyAdmin; ultimately Rise ProxyAdminOwner Multisig",
"upgradableBy": [
{
"name": "Rise ProxyAdminOwner Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x551A672d703966D83C3EC3ea0e844f43c3373c91#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0x6463dEE3828677F6270d83d45408044fc5eDB908",
"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/0x6463dEE3828677F6270d83d45408044fc5eDB908#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "OPSuccinctFaultDisputeGame",
"isVerified": true,
"address": "eth:0xBf60dBc272833cD25f0426983c3175C32C8E5A7a",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Logic of the dispute game. When a state root is proposed, a dispute game contract is deployed. Challengers can use such contracts to challenge the proposed state root.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xBf60dBc272833cD25f0426983c3175C32C8E5A7a#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Rise ProxyAdminOwner Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xCf32d8c4Be30cA330c1150916A71A651bADd70d5#code"
},
{
"name": "OptimismMintableERC20Factory",
"isVerified": true,
"address": "eth:0xE2B9526277DcD2B27222Df760D6427213AC9dbb8",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767605759,
"transactionHash": "0x6600d05ac638814f9d013f41343ae316390ec97ae0c30fe4147a82510859779a",
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
}
],
"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 Rise ProxyAdminOwner Multisig",
"upgradableBy": [
{
"name": "Rise ProxyAdminOwner Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE2B9526277DcD2B27222Df760D6427213AC9dbb8#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0xf758C3bf7a4E2ad513B371B40c4Bd9A0E9716CF1",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767605759,
"transactionHash": "0x6600d05ac638814f9d013f41343ae316390ec97ae0c30fe4147a82510859779a",
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
}
],
"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 Rise ProxyAdminOwner Multisig",
"upgradableBy": [
{
"name": "Rise ProxyAdminOwner Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf758C3bf7a4E2ad513B371B40c4Bd9A0E9716CF1#code"
},
{
"name": "AccessManager",
"isVerified": true,
"address": "eth:0xF90a72FC295DBEf2fD27629Fda4B98Fd3E842d17",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract managing access control for proposers and challengers in OPSuccinct.\n* Roles:\n * **challengers**: EOA 3\n * **owner**: Rise ProxyAdminOwner Multisig\n * **proposers**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF90a72FC295DBEf2fD27629Fda4B98Fd3E842d17#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0xad92Fa18EB74E46Db844240623124BF46589db4C",
"sinceTimestamp": 1767605759,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xad92Fa18EB74E46Db844240623124BF46589db4C",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767605759,
"transactionHash": "0x6600d05ac638814f9d013f41343ae316390ec97ae0c30fe4147a82510859779a",
"implementations": [
"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202"
]
}
],
"description": "Main entry point for users depositing ETH.",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0xad92Fa18EB74E46Db844240623124BF46589db4C#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x553257678Dd11a6668a92934AAB005e420c6535A",
"sinceTimestamp": 1767605759,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x553257678Dd11a6668a92934AAB005e420c6535A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCf32d8c4Be30cA330c1150916A71A651bADd70d5"
],
"implementations": [
"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A"
]
},
"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/0x553257678Dd11a6668a92934AAB005e420c6535A#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"programHashes": [
{
"title": "Aggregation program of OP Succinct FDP v3.4.1-rise.7",
"description": "Aggregates proofs of correct execution for several consecutive block ranges of OP L2 client in fault dispute proof mode. Data availability layer is set to EigenDA.",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/risechain/op-succinct/tree/v3.4.1-rise.7/programs/aggregation",
"verificationStatus": "successful",
"verificationSteps": "\nPrepare:\n\n1. Install sp1 toolchain: `curl -L https://sp1.succinct.xyz | bash`, then `~/.sp1/bin/sp1up`.\n2. Install docker and make sure it is running: `docker ps`.\n\nVerify:\n\n1. Checkout the correct tag in [risechain/op-succinct](https://github.com/risechain/op-succinct) repo: `git checkout v3.4.1-rise.7`. Commit hash should be `a99569fa608127fdd4d5d73722184362c6283d6b`.\n2. Reproducibly rebuild the EigenDA range ELF from source: from `programs/range/eigenda` run `~/.sp1/bin/cargo-prove prove build --elf-name eigenda-range-elf-embedded --docker --tag v5.2.4 --output-directory ../../../elf --features embedded`.\n3. Reproducibly rebuild the aggregation ELF from source: from `programs/aggregation` run `~/.sp1/bin/cargo-prove prove build --elf-name aggregation-elf --docker --tag v5.2.4 --output-directory ../../elf`.\n4. From the repo root run `cargo run --bin config --release --features eigenda` to print the range verification key hash and the aggregation verification key hash. The eigenda feature selects the EigenDA range ELF, whose in-circuit derivation verifies EigenDA DA certificates via hokulea and canoe.\n",
"hash": "0x0061b26157718f96a20ea50c52a485dea3b6967139328dc7e07fece56f557bda"
},
{
"title": "Range program of OP Succinct FDP v3.4.1-rise.7",
"description": "Proves correct state transition function within an OP L2 client over a range of consecutive L2 blocks in fault dispute proof mode. Data availability layer is set to EigenDA.",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/risechain/op-succinct/tree/v3.4.1-rise.7/programs/range/eigenda",
"verificationStatus": "successful",
"verificationSteps": "\nPrepare:\n\n1. Install sp1 toolchain: `curl -L https://sp1.succinct.xyz | bash`, then `~/.sp1/bin/sp1up`.\n2. Install docker and make sure it is running: `docker ps`.\n\nVerify:\n\n1. Checkout the correct tag in [risechain/op-succinct](https://github.com/risechain/op-succinct) repo: `git checkout v3.4.1-rise.7`. Commit hash should be `a99569fa608127fdd4d5d73722184362c6283d6b`.\n2. Reproducibly rebuild the EigenDA range ELF from source: from `programs/range/eigenda` run `~/.sp1/bin/cargo-prove prove build --elf-name eigenda-range-elf-embedded --docker --tag v5.2.4 --output-directory ../../../elf --features embedded`.\n3. Reproducibly rebuild the aggregation ELF from source: from `programs/aggregation` run `~/.sp1/bin/cargo-prove prove build --elf-name aggregation-elf --docker --tag v5.2.4 --output-directory ../../elf`.\n4. From the repo root run `cargo run --bin config --release --features eigenda` to print the range verification key hash and the aggregation verification key hash. The eigenda feature selects the EigenDA range ELF, whose in-circuit derivation verifies EigenDA DA certificates via hokulea and canoe.\n",
"hash": "0x02850d082ab676631569bfa7057944a05f22f42c12ffa15b0ae30a6153dfe162"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "PolygonDataCommittee",
"isVerified": true,
"address": "eth:0x24e09Ef4F69B6058E047EE5E709B345F3cA47F3A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x3F74698A4ADb075c0501DF739745ACA55Ae543a1"
],
"implementations": [
"eth:0xa2F7e6Dfd6f43976ee1E2e8A122984ECa8e38608"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1724259359,
"transactionHash": "0xee62b099c28e601917f60c0abff8441d48a2e7aee41711ff89a9ae0cc2fc647c",
"implementations": [
"eth:0xa2F7e6Dfd6f43976ee1E2e8A122984ECa8e38608"
]
}
],
"description": "Manages the members of the data availability committee (DAC) and the threshold for accepting commitments from them (Currently 3/2).\n* Roles:\n * **admin**: ProxyAdmin; ultimately EOA 1\n * **owner**: EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x24e09Ef4F69B6058E047EE5E709B345F3cA47F3A#code"
},
{
"name": "Validium",
"isVerified": true,
"address": "eth:0x419dcD0f72ebAFd3524b65a97ac96699C7fBebdB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x427113ae6F319BfFb4459bfF96eb8B6BDe1A127F"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1724183531,
"transactionHash": "0xc47c5c6b0ea1740437487c101b78895a761501a35bfa97a77d79e803151ccf41",
"implementations": [
"eth:0x10D296e8aDd0535be71639E5D1d1c30ae1C6bD4C"
]
},
{
"timestamp": 1745932175,
"transactionHash": "0xdadc987a1a0f2da5a24bcf9c6958c3e4bbe015686cfd2f954ba4f3ee4884dc07",
"implementations": [
"eth:0x427113ae6F319BfFb4459bfF96eb8B6BDe1A127F"
]
}
],
"description": "The main system contract defining the silicon-zk Layer 2 logic. Entry point for sequencing batches.\n* Roles:\n * **admin**: EOA 1\n * **forceBatchAddress**: EOA 2\n * **trustedSequencer**: EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x419dcD0f72ebAFd3524b65a97ac96699C7fBebdB#code"
},
{
"name": "Verifier",
"isVerified": true,
"address": "eth:0x9B9671dB83CfcB4508bF361942488C5cA2b1286D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies ZK proofs for state roots of this Layer 2 via the PolygonRollupManager.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9B9671dB83CfcB4508bF361942488C5cA2b1286D#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 4, EOA 5\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x3F74698A4ADb075c0501DF739745ACA55Ae543a1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3F74698A4ADb075c0501DF739745ACA55Ae543a1#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1679653127,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherPreminted",
"premintedAmount": "340282366920938463463374607431768211455"
},
"chainId": 1
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 3d delay on code upgrades unless upgrade is initiated by the PolygonSecurityCouncil in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0x9B9671dB83CfcB4508bF361942488C5cA2b1286D"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Diamond",
"isVerified": true,
"address": "eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3",
"upgradeability": {
"proxyType": "EIP2535 diamond proxy",
"admins": [],
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1729268843,
"transactionHash": "0x9c8b285f3c5712386493b015fbcb0f92e5e6d9e987ddb6c8646c49959620bd04",
"implementations": [
"eth:0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a",
"eth:0xE60E94fCCb18a81D501a38959E532C0A85A1be89",
"eth:0xCDB6228b616EEf8Df47D69A372C4f725C43e718C",
"eth:0xaD193aDe635576d8e9f7ada71Af2137b16c64075"
]
},
{
"timestamp": 1729268843,
"transactionHash": "0x9c8b285f3c5712386493b015fbcb0f92e5e6d9e987ddb6c8646c49959620bd04",
"implementations": [
"eth:0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a",
"eth:0xE60E94fCCb18a81D501a38959E532C0A85A1be89",
"eth:0xCDB6228b616EEf8Df47D69A372C4f725C43e718C",
"eth:0xaD193aDe635576d8e9f7ada71Af2137b16c64075"
]
},
{
"timestamp": 1738696943,
"transactionHash": "0x82657fe86f99698eae75f1e2104fa211e67b641b7e58450aa8ceabf962798b16",
"implementations": [
"eth:0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a",
"eth:0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9",
"eth:0x5575218cECd370E1d630d1AdB03c254B0B376821",
"eth:0xBB13642F795014E0EAC2b0d52ECD5162ECb66712"
]
},
{
"timestamp": 1743095267,
"transactionHash": "0x92c1aabdc2a908d40bee5207ba851be0a7f91747e4d86f4aa23201d5605d7f75",
"implementations": [
"eth:0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb",
"eth:0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1",
"eth:0x36b026c39125964D99596CE302866B5A59E4dE27",
"eth:0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800"
]
},
{
"timestamp": 1747087643,
"transactionHash": "0x0366efdb1fc5b705d59c1e88cdc9e9118eea686227b8062627b8bf65be4b6a56",
"implementations": [
"eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4",
"eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4",
"eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f",
"eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490"
]
},
{
"timestamp": 1751396099,
"transactionHash": "0x3fb1153770857ac1714eb72d2cc7a76ebf1160bb8e844e8aa08164c72a25d419",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1755018299,
"transactionHash": "0x97141968736d3d95e4cbf3c10293b7bd56f43ad6d4e3bed854e0025ed2d2d7e4",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1761612755,
"transactionHash": "0x1dd8584ad0e2a106271e682fbec33c6066933fbf4c243f46eba13707e1ed729f",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1769536979,
"transactionHash": "0x02b9e48f0f8550fe61d750085088df57ec084a55468a6b259bc600b2d9f9a8de",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1771011071,
"transactionHash": "0x13067d49b849a7460f1f8a587edaee878b49dc7b2278ce8b16e223ca042ddbb9",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
}
],
"description": "The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n* Roles:\n * **getAdmin**: SophonZkEvmAdmin; ultimately SophonChainAdminMultisig\n * **getTransactionFilterer**: SophonTransactionFilterer\n * **validators**: ValidatorTimelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3#code"
},
{
"name": "AvailL1DAValidator",
"isVerified": true,
"address": "eth:0x8f50d93B9955B285f787043B30B5F51D09bE0120",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract that verifies that the validiums data was made available on Avail by querying the AvailBridgeV1 on Ethereum for a merkle proof of inclusion.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8f50d93B9955B285f787043B30B5F51D09bE0120#code"
},
{
"name": "BridgeHub",
"isVerified": true,
"address": "eth:0x303a465B659cBB0ab36eE643eA362c509EEb5213",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717520639,
"transactionHash": "0xdbb03a14ea223de3db4ac0916e78123bd0a1dde68e98952326d8382d29ac4d61",
"implementations": [
"eth:0x12f893689f9603991a8c22C249FFd0509Be95661"
]
},
{
"timestamp": 1725887363,
"transactionHash": "0x21aec24a9df97ce4886d699314be627b0818da4d1987349421fb3df102c43f2b",
"implementations": [
"eth:0x509dA1BE24432F8804C4A9FF4a3c3f80284CDd13"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0x0029e562c0b54C0b88cB22adF4346DbfEC87400c"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xb720523EC3c615b069453bF4B0584CEbF034706f"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xcdd748d4A80CE6831080f1dA2CA9084CDa87Cc87"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x08A98B1048Fb61E9Fff7d7d98305aC6286Ae9F32"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
}
],
"description": "The main registry (hub) for all the contracts in the ZK stack cluster and central entrypoint for bridge transactions. Stores important mappings like from chainId to diamond address, from chainId to parent CTM, from chainId to base token etc. A clone of Bridgehub is also deployed on each L2 chain, but this clone is only used on settlement layers.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x303a465B659cBB0ab36eE643eA362c509EEb5213#code"
},
{
"name": "MessageRoot",
"isVerified": true,
"address": "eth:0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109035,
"transactionHash": "0xc47e24e8cc6c7a493bbb1a46b74f1ff113fad2e35d7596aa688df5bf0402fc65",
"implementations": [
"eth:0x19347Fb8eD3E8e35eb4a01c8B18Bd330194Cf0ad"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x382fb241396eA915108e7B7Ce1adE1322bA73aeE"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
}
],
"description": "Aggregates remote bridge message roots from all ZK stack chains. To be used with the Gateway when deployed.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD#code"
},
{
"name": "CTMDeploymentTracker",
"isVerified": true,
"address": "eth:0x6078F6B379f103de1Aa912dc46bb8Df0c8809860",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109203,
"transactionHash": "0x8b5a21b3473a638022e84097a99c4668bb0a454686b737e87957729c4822741b",
"implementations": [
"eth:0x1E405E5cdF127Dc98Eb490AB0e97345f892Ff7E1"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
}
],
"description": "Asset deployment tracker where the 'asset' is a ChainTypeManager. The registering of asset IDs for ChainTypeManagers is necessary to be able to migrate them to a given settlement layer, for example the Gateway.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6078F6B379f103de1Aa912dc46bb8Df0c8809860#code"
},
{
"name": "RollupL1DAValidator",
"isVerified": true,
"address": "eth:0x72213dfe8CA61B0A782970dCFebFb877778f9119",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract that verifies the data availability of ethereum calldata and blobs. Can be used by ZK stack rollups as the L1 part of a DAValidator pair.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x72213dfe8CA61B0A782970dCFebFb877778f9119#code"
},
{
"name": "ChainTypeManager",
"isVerified": true,
"address": "eth:0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x4aB7204e4205c96C32E23ADa9191720976dC084f"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717520663,
"transactionHash": "0x514bbf46d227eee8567825bf5c8ee1855aa8a1916f7fee7b191e2e3d5ecba849",
"implementations": [
"eth:0x8279B7E48fA074f966385d87AEf29Bd031e54fD5"
]
},
{
"timestamp": 1722934619,
"transactionHash": "0xc1e73b06359759201b76ab7654e0bd49011f33c0230dfc24423985fbf36ea817",
"implementations": [
"eth:0xed1Dc7F0Be2B19cb02a2476150C8ea24A37c5274"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0xb39B175a5E0945F2FB6A7F31764c0e31D9cF5b75"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xA3bCcAEe38cb0273A979118a0DE483E47D50F6Cb"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0x6D598c77AF57Bfa17201483400615c61819dD45A"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x345314c7E4af84B763d98d23f772622E23AfB5CE"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x4aB7204e4205c96C32E23ADa9191720976dC084f"
]
}
],
"description": "Defines L2 diamond contract versions, creation and upgrade data and the proof system for all ZK stack chains connected to it. ZK chains are children of this central contract and can only upgrade to versions that were previously registered here. The current protocol version is 0,29,5.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C#code"
},
{
"name": "L1Nullifier",
"isVerified": true,
"address": "eth:0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717521479,
"transactionHash": "0xce3d72f23297a281cb58502dcc6a6c029489316a2faf9c4ef83141b1b254017c",
"implementations": [
"eth:0xCba1aF8f0bB223b2544F8eB8f69d1c7960f788dB"
]
},
{
"timestamp": 1724658671,
"transactionHash": "0xaec33529b74f8f9d56d7aa568c6358be299228a85e49ea85cb106eca5af7367c",
"implementations": [
"eth:0xb56A8225A745756DD215faf22E4796f373561AcD"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0xF5A14DCdde1143443f06033200D345c2a2828A99"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xda2866AF0e170d0867a3F3bB52Db10D6E09Df78A"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0x3B4FD84B27fE7B9247d5B8C6d1A29B2889C81518"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xC6f08EFb7BA78f40d00F41aFAC00211d59eb9431"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
}
],
"description": "Contract responsible for bookkeeping L1 bridging transactions. Used to finalize withdrawals and reclaim failed deposits. Does not escrow funds.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB#code"
},
{
"name": "ProtocolUpgradeHandler",
"isVerified": true,
"address": "eth:0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e"
],
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1738855967,
"transactionHash": "0xa3d1fa107e6dc4ce67d92a5af74aa7dc34602c2a1d46727790819c1f974bed95",
"implementations": [
"eth:0xD5e9D3d483a93d03D8d604CC79dC9f2F4B78C604"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0x0A67f0Fd2f7523057039F14969Fe23a5f620f19A"
]
},
{
"timestamp": 1760519471,
"transactionHash": "0x2309df20dd1cb3f3a3289e97517d10d399989292f966578240ec387246a13e61",
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
}
],
"description": "The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2 and emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **emergencyUpgradeBoard**: EmergencyUpgradeBoard\n * **guardians**: Guardians\n * **l2_protocol_governor**: ProtocolTimelockController; ultimately ZkProtocolGovernor\n * **securityCouncil**: SecurityCouncil",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3#code"
},
{
"name": "RollupDAManager",
"isVerified": true,
"address": "eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Simple registry for allowed DA address pairs for the 'rollup' data availability mode (can be permanently enforced with isPermanentRollup=true). Rollup DA address pairs (especially the L1 part) usually point to contracts that validate if data was made available on Ethereum.\n* Roles:\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45#code"
},
{
"name": "AvailBridgeV1",
"isVerified": true,
"address": "eth:0x054fd961708D8E2B9c10a63F6157c74458889F0a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x36194271a00dBBBae314E83dA56d0FF75fDa367B"
],
"implementations": [
"eth:0x737539737b44493F65c17eAfE165197b6410d254"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720568903,
"transactionHash": "0x980ea7f295336624f103c47b5ec482f90c2c90f4b7d05140ceb5d40aa077963c",
"implementations": [
"eth:0x737539737b44493F65c17eAfE165197b6410d254"
]
}
],
"description": "Bridge contract that verifies merkle proofs of inclusion in the proven data of the Vector DA- and arbitrary message bridge. Also used for token- and arbitrary message transfers between Avail and Ethereum.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Avail Multisig 1\n * **defaultAdmin**: TimelockController; ultimately Avail Multisig 1\n * **pauser**: Avail Multisig 2",
"upgradableBy": [
{
"name": "Avail Multisig 1",
"delay": "1d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x054fd961708D8E2B9c10a63F6157c74458889F0a#code"
},
{
"name": "SophonZkEvmAdmin",
"isVerified": true,
"address": "eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets SophonChainAdminMultisig act through it.\n* Roles:\n * **owner**: SophonChainAdminMultisig\n * **tokenMultiplierSetter**: EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3#code"
},
{
"name": "EraChainAdminProxy",
"isVerified": true,
"address": "eth:0x2cf3bD6a9056b39999F3883955E183F655345063",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets Matter Labs Multisig act through it.\n* Roles:\n * **owner**: Matter Labs Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2cf3bD6a9056b39999F3883955E183F655345063#code"
},
{
"name": "L1USDCBridge",
"isVerified": true,
"address": "eth:0xf553E6D903AA43420ED7e3bc2313bE9286A8F987",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x2ccD5486Ea1b2A52dcD387c01314F6A328f66cbB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1734114251,
"transactionHash": "0x5428361f75c29b1f0e9959bd21fef8fb179b22f009f314e6403a305770e8735f",
"implementations": [
"eth:0x86dF12f51E3531689e0615bb2F739ddf01337715"
]
},
{
"timestamp": 1737484199,
"transactionHash": "0x152dc623c52d7f2b058ec5b4dfb67f5e0fee14c04dc9c0db4ae02ed2dc4ab998",
"implementations": [
"eth:0x2ccD5486Ea1b2A52dcD387c01314F6A328f66cbB"
]
}
],
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf553E6D903AA43420ED7e3bc2313bE9286A8F987#code"
},
{
"name": "L1VerifierPlonk",
"isVerified": true,
"address": "eth:0x7f33D100f482093182111d69a4a457289e99f4ec",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7f33D100f482093182111d69a4a457289e99f4ec#code"
},
{
"name": "L1VerifierFflonk",
"isVerified": true,
"address": "eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442#code"
},
{
"name": "DualVerifier",
"isVerified": true,
"address": "eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A router contract for verifiers. Routes verification requests to L1VerifierFflonk or L1VerifierPlonk depending on the supplied proof type.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EraChainAdminProxy",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B#code"
},
{
"name": "L1NativeTokenVault",
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Canonical central asset escrow for all ZK stack chains.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1#code"
},
{
"name": "ChainAssetHandler",
"isVerified": true,
"address": "eth:0xDd5CB8B9037357B4cD37391A073798f8aaB61076",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1758286391,
"transactionHash": "0x960c2e5bb98f4b9a07087b3b50fdc4681bbea1467aab3748dbb0050311f54ede",
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
}
],
"description": "Specialized contract for managing chain assets, i.e. chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xDd5CB8B9037357B4cD37391A073798f8aaB61076#code"
},
{
"name": "ServerNotifier",
"isVerified": true,
"address": "eth:0xfca808A744735D9919EEBe4660B8Fd897456Ce31",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B"
],
"implementations": [
"eth:0x260813B0DAf35dda95c41F39c6Cc3F24dc87028A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747199375,
"transactionHash": "0xbeb7447fc88b154a4730b01cb1a75b7093095056e88818c3659253111d06e66f",
"implementations": [
"eth:0x555D040F4A089D1dF14B372a87C5aF8FA37BDB7A"
]
},
{
"timestamp": 1784714999,
"transactionHash": "0xdbd5285f559e4ae32457b8425f67e1dfe76575c40999499e0b55d5cf985b85d8",
"implementations": [
"eth:0x260813B0DAf35dda95c41F39c6Cc3F24dc87028A"
]
}
],
"description": "A simple contract that can be called by the ChainAdmin to emit notifications about chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Matter Labs Multisig",
"upgradableBy": [
{
"name": "Matter Labs Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xfca808A744735D9919EEBe4660B8Fd897456Ce31#code"
},
{
"name": "Vector",
"isVerified": true,
"address": "eth:0x02993cdC11213985b9B13224f3aF289F03bf298d",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0xc6217f1549Cab6f22ac4AC56d42e6C248731a33D"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720128227,
"transactionHash": "0x6c2c609d7a13fbdad53b1530d34d740ffa36653f29b5f14220429d7c0d6a3ffc",
"implementations": [
"eth:0x2434564f3524b44258B11643729343Ef57D60989"
]
},
{
"timestamp": 1721438975,
"transactionHash": "0x13d7977b9fca12882ea6ba47ce1b20a87de540c358b5e260584e0d921e786f5e",
"implementations": [
"eth:0xc6217f1549Cab6f22ac4AC56d42e6C248731a33D"
]
}
],
"description": "The Vector bridge contract that accepts and stores Avail data availability commitments on Ethereum.\n* Roles:\n * **guardians**: Avail Multisig 1\n * **relayers**: EOA 7\n * **timelocks**: Avail Multisig 1",
"upgradableBy": [
{
"name": "Avail Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x02993cdC11213985b9B13224f3aF289F03bf298d#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x36194271a00dBBBae314E83dA56d0FF75fDa367B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: TimelockController",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x36194271a00dBBBae314E83dA56d0FF75fDa367B#code"
},
{
"name": "TimelockController",
"isVerified": true,
"address": "eth:0x45828180bbE489350D621d002968A0585406d487",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. The current minimum delay is 1d.\n* Roles:\n * **canceller**: Avail Multisig 1\n * **defaultAdmin**: Avail Multisig 1, TimelockController; ultimately Avail Multisig 1\n * **executor**: Avail Multisig 1\n * **proposer**: Avail Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x45828180bbE489350D621d002968A0585406d487#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
],
"zksync2": [
{
"name": "ProtocolTimelockController",
"isVerified": true,
"address": "zksync:0x085b8B6407f150D62adB1EF926F7f304600ec714",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 0s.\n* Roles:\n * **canceller**: ZkProtocolGovernor\n * **executor**: ZkProtocolGovernor\n * **proposer**: ZkProtocolGovernor\n * **timelockAdmin**: ProtocolTimelockController; ultimately ZkProtocolGovernor",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0x085b8B6407f150D62adB1EF926F7f304600ec714#code"
},
{
"name": "ZkToken",
"isVerified": true,
"address": "zksync:0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC"
],
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
},
"chain": "zksync2",
"pastUpgrades": [
{
"timestamp": 1716317326,
"transactionHash": "0x5bfce59c2ad18019ef20d58a3f1ec496cdc85537fc9564c932f7dcbbb2a15b56",
"implementations": [
"zksync:0x3931e73ebA79a7C898D3b0e02c7C62bA4F11cB14"
]
},
{
"timestamp": 1718011538,
"transactionHash": "0xa6bc022ba0f60ac6f10a6efb84b261e9ca1b327a611bdd7a1f4d37cc9b027a3c",
"implementations": [
"zksync:0x01a6715d3560241E09E865a46122bf347A576c09"
]
},
{
"timestamp": 1765195612,
"transactionHash": "0x749b9e6eed328052d679eb86639be807b4acf811ac8786f730b45258ba41ce6f",
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
}
],
"description": "The ZK token contract on ZKsync Era. Mintable through access control roles. Used for voting in the ZK stack governance system.\n* Roles:\n * **admin**: ZkTokenProxyAdmin; ultimately ProtocolUpgradeHandler_l2Alias\n * **defaultAdmin**: ProtocolUpgradeHandler_l2Alias\n * **minterAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"upgradableBy": [
{
"id": "ProtocolUpgradeHandler_l2Alias",
"name": "ProtocolUpgradeHandler_l2Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E#code"
},
{
"name": "ZkTokenProxyAdmin",
"isVerified": true,
"address": "zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler_l2Alias",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0xdB1E46B448e68a5E35CB693a99D59f784aD115CC#code"
},
{
"name": "ZkTokenTimelockController",
"isVerified": true,
"address": "zksync:0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 3d.\n* Roles:\n * **canceller**: ZkTokenGovernor\n * **executor**: ZkTokenGovernor\n * **proposer**: ZkTokenGovernor\n * **timelockAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d#code"
}
]
},
"escrows": [
{
"address": "0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"sinceTimestamp": 1739109131,
"tokens": [
"ETH",
"USDT",
"BEAM",
"stAethir",
"PEPE",
"wstETH",
"weETH",
"sDAI",
"DAI",
"WBTC",
"stAZUR",
"stAVAIL",
"OPN",
"SOPH"
],
"premintedTokens": [
"SOPH"
],
"contract": {
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Shared bridge for depositing tokens to Treasure and other ZK stack chains.",
"url": "https://etherscan.io/address/0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "ElasticChain",
"l2BridgeAddress": "0x954ba8223a6BFEC1Cc3867139243A02BA0Bc66e4",
"l2EtherAddress": "0x72af9F169B619D85A47Dfa8fefbCD39dE55c567D",
"tokensToAssignFromL1": [
"SOPH"
]
},
"chainId": 1
}
],
"programHashes": [
{
"title": "Boojum L2 Bootloader program v0.29.2",
"description": "EraVM program that proves the correct execution of a batch of ZK Stack L2 blocks.",
"proverSystemProject": "boojum",
"programUrl": "https://github.com/matter-labs/era-contracts/blob/v0.29.2/system-contracts/bootloader/bootloader.yul",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install npm and yarn: `npm install --global yarn`\n2. Install hardhat: `npm install -g hardhat`\n3. Install foundry-zksync: `curl -L https://raw.githubusercontent.com/matter-labs/foundry-zksync/main/install-foundry-zksync | bash` from [here](https://foundry-book.zksync.io/introduction/installation/).\n\nVerify:\n\n1. Checkout the correct branch in [era-contracts](https://github.com/matter-labs/era-contracts) repo: `git checkout v0.29.2`. Commit hash should be `dbfc9b5a40d68007dc405a9b669230104c1646e4`.\n2. Execute recompute_hashes.sh script: `chmod +x recompute_hashes.sh` and `./recompute_hashes.sh`. Note that the script may require a specific version of `foundryup-zksync` and it will suggest the command to install it. However you might need to manually clear git working tree in the repo foundry-zksync (probably in ~/.foundry/matter-labs/foundry-zksync) to change versions.",
"hash": "0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 4d 3h - 8d 3h delay on code upgrades unless upgrade is initiated by the EmergencyUpgradeBoard in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442",
"eth:0x7f33D100f482093182111d69a4a457289e99f4ec",
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+60 -60
+60 -60
{
"addresses": {
"ethereum": [
{
"name": "TaikoRisc0Verifier",
"isVerified": true,
"address": "eth:0x059dAF31F571da48Ab4e74Ae12F64f907681Cd8b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Gating router contract to verify batches using RISC Zero.\n* Roles:\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x059dAF31F571da48Ab4e74Ae12F64f907681Cd8b#code"
},
{
"name": "RiscZeroGroth16Verifier",
"isVerified": true,
"address": "eth:0x20ff7C2Cf391a5F096A2Cc181cb41916680f8E97",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for RISC Zero Groth16 proofs (version 2.0.0-rc.3).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x20ff7C2Cf391a5F096A2Cc181cb41916680f8E97#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/0x2a098988600d87650Fb061FfAff08B97149Fa84D#code"
},
{
"name": "RiscZeroGroth16Verifier",
"isVerified": true,
"address": "eth:0x54aCE3ED46529B4d4F3770C8Bad5dDC48717B9bF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for RISC Zero Groth16 proofs (version 2.0.3).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x54aCE3ED46529B4d4F3770C8Bad5dDC48717B9bF#code"
},
{
"name": "MainnetInbox",
"isVerified": true,
"address": "eth:0x6f21C543a4aF5189eBdb0723827577e1EF57ef1f",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a"
],
"implementations": [
"eth:0x64523f2580f4E7038a121D55b220a9C12C1E8f01"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1772642207,
"transactionHash": "0x7576f1179250453948b37648a748aaade28c40b33e358fa0cbe21be6b0368601",
"implementations": [
"eth:0x0680c84378FA6A7D2F46ADa5A70637Fa2A938d42"
]
},
{
"timestamp": 1782120275,
"transactionHash": "0x2fb71b83b8971dd7bbc174f72ea5d37f57bf20277c406b0d679062b20c348e1d",
"implementations": [
"eth:0x349Ae3578f48F758d79451EeAB61Cdd5fedD0098"
]
},
{
"timestamp": 1782739115,
"transactionHash": "0xae7122add731c935d54d726ebe542e7d4f9f7321e3bdf4ec794309f813d981f7",
"implementations": [
"eth:0x64523f2580f4E7038a121D55b220a9C12C1E8f01"
]
}
],
"description": "The core Layer 1 entrypoint for the Taiko rollup where L2 block batches are proposed and their corresponding state transitions are proven. Forced inclusion submission and processing are disabled in this implementation. Proposals must come from the configured proposer checker, and if the configured prover whitelist is non-empty, proofs from non-whitelisted provers revert; the configured permissionless proving delay is not used to open proving.\n* Roles:\n * **admin**: TaikoDAOController; ultimately SignerList (Security Council)\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6f21C543a4aF5189eBdb0723827577e1EF57ef1f#code"
},
{
"name": "MainnetVerifier",
"isVerified": true,
"address": "eth:0x71808449A6217898d602c1a392D95b931Ac5d878",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable verifier policy contract for Taiko mainnet. Each accepted proof must contain exactly two ordered sub-proofs: either SGX-GETH plus SGX-RETH/RISC0-RETH/SP1-RETH, or SGX-RETH plus SGX-GETH/RISC0-RETH/SP1-RETH. It routes each sub-proof to the corresponding downstream verifier.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x71808449A6217898d602c1a392D95b931Ac5d878#code"
},
{
"name": "TaikoSP1Verifier",
"isVerified": true,
"address": "eth:0x73A0Db393ef87ce781ac7957bE10D6628432100F",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Gating router contract to verify batches using SP1.\n* Roles:\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x73A0Db393ef87ce781ac7957bE10D6628432100F#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/0xafB31f5b70623CDF4b20Ada3f7230916A5A79df9#code"
},
{
"name": "ProverWhitelist",
"isVerified": true,
"address": "eth:0xEa798547d97e345395dA071a0D7ED8144CD612Ae",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a"
],
"implementations": [
"eth:0xebb393746A4Eee84Ad14EDFf3764c3F839D1034b"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1772641607,
"transactionHash": "0x9ae9f5d95306d569099fbf42c0aa730a6b6e84e18f35e5f1a1374025597762d5",
"implementations": [
"eth:0xebb393746A4Eee84Ad14EDFf3764c3F839D1034b"
]
}
],
"description": "Defines the prover whitelist queried by the inbox before accepting proofs. If the inbox is configured with this contract and the whitelist is non-empty, only whitelisted provers can prove proposals.\n* Roles:\n * **admin**: TaikoDAOController; ultimately SignerList (Security Council)\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)\n * **proverManager**: Taiko Multisig",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEa798547d97e345395dA071a0D7ED8144CD612Ae#code"
},
{
"name": "RiscZeroGroth16Verifier",
"isVerified": true,
"address": "eth:0xf70aBAb028Eb6F4100A24B203E113D94E87DE93C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for RISC Zero Groth16 proofs. This older implementation exposes control-root and selector constants but does not expose a VERSION getter.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf70aBAb028Eb6F4100A24B203E113D94E87DE93C#code"
},
{
"name": "QuotaManager",
"isVerified": true,
"address": "eth:0xBaCb003f0B13CeAF09Eb9Baf5915A640BD4Bc6cC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Defines withdrawal quotas for ETH and ERC20 releases from the shared bridge. A token quota of zero means unlimited withdrawals for that token.\n* Roles:\n * **bridge**: MainnetBridge\n * **erc20Vault**: MainnetERC20Vault\n * **owner**: Taiko Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xBaCb003f0B13CeAF09Eb9Baf5915A640BD4Bc6cC#code"
},
{
"name": "TaikoDAOController",
"isVerified": true,
"address": "eth:0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x9CDf589C941ee81D75F34d3755671d614f7cf261"
],
"implementations": [
"eth:0x4347df63bdC82b8835fC9FF47bC5a71a12cC0f06"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1748146475,
"transactionHash": "0x5da0579fa85d4712efb3d66c95ee884d73259ede79760d25f685e4c3c3c4c0c1",
"implementations": [
"eth:0x4347df63bdC82b8835fC9FF47bC5a71a12cC0f06"
]
}
],
"description": "Middleware contract that maintains ownership of DAO-controlled assets and contracts. Its token weight does not count towards the DAO quorum.\nMember of Taiko Foundation Treasury Multisig.\n* Roles:\n * **admin**: DAO; ultimately SignerList (Security Council)\n * **owner**: DAO",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a#code"
},
{
"name": "DAO",
"isVerified": true,
"address": "eth:0x9CDf589C941ee81D75F34d3755671d614f7cf261",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x52Af16664155608b845BE18aa29620EbF6eA2D3a"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1746111707,
"transactionHash": "0x8acf74d966e6eb99972a4a73382cf42aa918d4715eaf4b587d1007f24edf5208",
"implementations": [
"eth:0x52Af16664155608b845BE18aa29620EbF6eA2D3a"
]
}
],
"description": "The main contract and entrypoint of the Aragon-based DAO governance framework. Fine-grained DAO permissions, proposals, voting and thresholds are configured here.\n* Roles:\n * **currentSignerListPermissions**: SignerList (Security Council) (emergency proposals bypass the delay)\n * **daoPermissions**: DAO; ultimately SignerList (Security Council)",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9CDf589C941ee81D75F34d3755671d614f7cf261#code"
},
{
"name": "TaikoDAOController",
"isVerified": true,
"address": "eth:0xfC3C4ca95a8C4e5a587373f1718CD91301d6b2D3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x9CDf589C941ee81D75F34d3755671d614f7cf261"
],
"implementations": [
"eth:0xd1934807041B168f383870A0d8F565aDe2DF9D7D"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1746942803,
"transactionHash": "0x8328e607699f67108c9b259225d5316a079ad52e648e6188c3fce7bf99abec38",
"implementations": [
"eth:0xd1934807041B168f383870A0d8F565aDe2DF9D7D"
]
}
],
"description": "Middleware contract that maintains ownership of DAO-controlled assets and contracts. Its token weight does not count towards the DAO quorum.\n* Roles:\n * **admin**: DAO; ultimately SignerList (Security Council)\n * **owner**: DAO",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xfC3C4ca95a8C4e5a587373f1718CD91301d6b2D3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#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**: Safe\n * **defaultAdmin**: TimelockController; ultimately Safe\n * **executor**: Safe\n * **proposer**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0b144E07A0826182B6b59788c34b32Bfa86Fb711#code"
},
{
"name": "AutomataDcapV3Attestation",
"isVerified": true,
"address": "eth:0x0ffa4A625ED9DB32B70F99180FD00759fc3e9261",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a"
],
"implementations": [
"eth:0x5e46443bd131eB6d4c6Fb4849bAD29af9596dd72"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747268759,
"transactionHash": "0x3b734f101aeef12dbbef6a43abae4176ac967c5ab8ea0194c6d890dafd6573ad",
"implementations": [
"eth:0x5e46443bd131eB6d4c6Fb4849bAD29af9596dd72"
]
}
],
"description": "Contract managing SGX DCAP attestation policy, trusted measurements, and certificate revocation data.\n* Roles:\n * **admin**: TaikoDAOController; ultimately SignerList (Security Council)\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0ffa4A625ED9DB32B70F99180FD00759fc3e9261#code"
},
{
"name": "Taiko Token",
"isVerified": true,
"address": "eth:0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a"
],
"implementations": [
"eth:0x5C96Ff5B7F61b9E3436Ef04DA1377C8388dfC106"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1714033799,
"transactionHash": "0x4f7a1c6ad21fbfeaecab40ea36a3845bf67e22d7770d8a259d62b995cb93cb34",
"implementations": [
"eth:0x9ae1a067F9655DD0511390e3d70Bb25933AE61eb"
]
},
{
"timestamp": 1715406371,
"transactionHash": "0x7d82794932540ed9edd259e58f6ef8ae21a49beada7f0224638f888f7149c01c",
"implementations": [
"eth:0xea53c0f4b129Cf3f3FBA896F9f23ca18246e9B3c"
]
},
{
"timestamp": 1716969803,
"transactionHash": "0x56402f9fd928be890fbd29829b817faffc0780b85e83300a29962c969808cae2",
"implementations": [
"eth:0x7dF8bfBf0f09e94200b6a158b421e2CCaCc4830F"
]
},
{
"timestamp": 1717732931,
"transactionHash": "0x0bbf7d1258c646f41a02a92a55825b1ebfd3659577d0f2b57b462f8895e23a04",
"implementations": [
"eth:0x55833dA2962c2330ccCF043ff8037e6D2939bCF6"
]
},
{
"timestamp": 1719904547,
"transactionHash": "0xc9f468d33d8d55911e4e5b5c301ed244a5f81ab0f389d2b4f398eb5b89d417ef",
"implementations": [
"eth:0xcfe803378D79d1180EbF030455040EA6513869dF"
]
},
{
"timestamp": 1747097243,
"transactionHash": "0xdb7d5de46738ad3f676db47b61772db531f9858b7a01e8c3b5aee49fa74cac95",
"implementations": [
"eth:0x87C752b0F70cAa237Edd7571B0845470A37DE040"
]
},
{
"timestamp": 1747285931,
"transactionHash": "0x986fc2c7ae945cdd358b2f2ae54364b350026f965f5861ed470f78e145f12626",
"implementations": [
"eth:0x5C96Ff5B7F61b9E3436Ef04DA1377C8388dfC106"
]
}
],
"description": "ERC20 contract implementing the TAIKO token. It defines a list of addresses designated as non-voting.\n* Roles:\n * **admin**: TaikoDAOController; ultimately SignerList (Security Council)",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x10dea67478c5F8C5E2D90e5E9B26dBe60c54d800#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0x1efDd13f831ceeEa14940806705A53D3211CD698",
"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**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1efDd13f831ceeEa14940806705A53D3211CD698#code"
},
{
"name": "EmergencyMultisig",
"isVerified": true,
"address": "eth:0x2AffADEb2ef5e1F2a7F58964ee191F1e88317ECd",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x437E450452E8Bc142bd5317199296EcB187c514b"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1746111707,
"transactionHash": "0x8acf74d966e6eb99972a4a73382cf42aa918d4715eaf4b587d1007f24edf5208",
"implementations": [
"eth:0x437E450452E8Bc142bd5317199296EcB187c514b"
]
}
],
"description": "Modular Governance contract allowing for proposing, voting on and executing encrypted proposals (e.g. for Security Council emergency proposals).\n* Roles:\n * **dao**: DAO; ultimately SignerList (Security Council)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2AffADEb2ef5e1F2a7F58964ee191F1e88317ECd#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SecureSgxVerifier",
"isVerified": true,
"address": "eth:0x41e79EB4F03aBB5DF8716B759528dc5d8f6a84Ee",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SGX proven blocks. Registered SGX instances can sign accepted proofs until their instance expiry.\n* Roles:\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)\n * **registrar**: Taiko Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x41e79EB4F03aBB5DF8716B759528dc5d8f6a84Ee#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0x44c220f0598345195cE99AD6A57aDfFcb9Ea33e7",
"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 10",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x44c220f0598345195cE99AD6A57aDfFcb9Ea33e7#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/0x5005aBa3DFf7C940fcc1e48DccCAD611a80eEB85#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0x68dC2cB4e61774873971c499D9b239ec5Ac540E3",
"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**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x68dC2cB4e61774873971c499D9b239ec5Ac540E3#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**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x844D5f01161E3559d36f23d0Aa9E9620949aF782#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "AutomataDcapV3Attestation",
"isVerified": true,
"address": "eth:0x8d7C954960a36a7596d7eA4945dDf891967ca8A3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a"
],
"implementations": [
"eth:0x5f73f0AdC7dAA6134Fe751C4a78d524f9384e0B5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1714550639,
"transactionHash": "0x207dec76298211a2d988b0de3e9a3f8da0edb4524a011e72f28200be08edd4c6",
"implementations": [
"eth:0xEE8FC1dbb8D345f5bF35dFb939C6f9EdC5fCDAFc"
]
},
{
"timestamp": 1715408795,
"transactionHash": "0x416560cd96dc75ccffebe889e8d1ab3e08b33f814dc4a2bf7c6f9555071d1f6f",
"implementations": [
"eth:0xde1b1FBe7D721af4A56651272ef91A59B7303323"
]
},
{
"timestamp": 1715787263,
"transactionHash": "0x46a6d47c15505a1259c64d1e09353680e525b2706dd9e095e15019dda7c1b295",
"implementations": [
"eth:0x5f73f0AdC7dAA6134Fe751C4a78d524f9384e0B5"
]
}
],
"description": "Contract managing SGX DCAP attestation policy, trusted measurements, and certificate revocation data.\n* Roles:\n * **admin**: TaikoDAOController; ultimately SignerList (Security Council)\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8d7C954960a36a7596d7eA4945dDf891967ca8A3#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 Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8EaB2D97Dfce405A1692a21b3ff3A172d593D319#code"
},
{
"name": "DefaultResolver",
"isVerified": true,
"address": "eth:0x8Efa01564425692d0a0838DC10E300BD310Cb43e",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a"
],
"implementations": [
"eth:0xFca4F0Ab7B95EEf2e3A60EF2Bc0c42DdAA62E66D"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747268711,
"transactionHash": "0xe402a650eb9f8443ae3fb86d2ef4bc6105140c85774c56a3932fe097ea6f6c19",
"implementations": [
"eth:0xFca4F0Ab7B95EEf2e3A60EF2Bc0c42DdAA62E66D"
]
}
],
"description": "Maps chainId-name pairs to contract addresses. Bridge and vault contracts resolve their counterparties through this registry, so changes in this mapping effectively act as contract upgrades. The pause function is intentionally disabled in this implementation.\n* Roles:\n * **admin**: TaikoDAOController; ultimately SignerList (Security Council)\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8Efa01564425692d0a0838DC10E300BD310Cb43e#code"
},
{
"name": "OptimisticTokenVotingPlugin",
"isVerified": true,
"address": "eth:0x989E348275b659d36f8751ea1c10D146211650BE",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x5B0Da2FB08754a5dDf32e28887D2F5437485f085"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1746111707,
"transactionHash": "0x8acf74d966e6eb99972a4a73382cf42aa918d4715eaf4b587d1007f24edf5208",
"implementations": [
"eth:0x5B0Da2FB08754a5dDf32e28887D2F5437485f085"
]
}
],
"description": "An optimistic governance module. Standard proposals pass and can be executed unless 10% of votable TAIKO veto them within 7d. Emergency proposals can be executed without delay.\n* Roles:\n * **dao**: DAO; ultimately SignerList (Security Council)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x989E348275b659d36f8751ea1c10D146211650BE#code"
},
{
"name": "SecureSgxVerifier",
"isVerified": true,
"address": "eth:0x9D3C595BFf6Ff7D2b2CbdEcF94aD917eB2fCFFd8",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SGX proven blocks. Registered SGX instances can sign accepted proofs until their instance expiry.\n* Roles:\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)\n * **registrar**: Taiko Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9D3C595BFf6Ff7D2b2CbdEcF94aD917eB2fCFFd8#code"
},
{
"name": "SignalService",
"isVerified": true,
"address": "eth:0x9e0a24964e5397B566c1ed39258e21aB5E35C77C",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a"
],
"implementations": [
"eth:0x1A06832992785766a105838C95c1E13a0045AC85"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1714550603,
"transactionHash": "0x0898d14da2f38d677085073d2decfb7ca32902406df2e7a84f6615d9c92d4516",
"implementations": [
"eth:0xE1d91bAE44B70bD66e8b688B8421fD62dcC33c72"
]
},
{
"timestamp": 1715408795,
"transactionHash": "0x416560cd96dc75ccffebe889e8d1ab3e08b33f814dc4a2bf7c6f9555071d1f6f",
"implementations": [
"eth:0xB11Cd7bA46a12F238b4Ad831f6F296262C1e652d"
]
},
{
"timestamp": 1717663871,
"transactionHash": "0x8de1631a25b337c1e702f9ce9d9ab8a3b626922441855e959b2d79dae40bd131",
"implementations": [
"eth:0x3d59c18b31A7D950EF9bd15eD285b6c182E0f0bb"
]
},
{
"timestamp": 1717749635,
"transactionHash": "0xdb5e926c96d112ce1389da77a927fba6c7d04a711839b9e14777530ebcf83914",
"implementations": [
"eth:0xB11Cd7bA46a12F238b4Ad831f6F296262C1e652d"
]
},
{
"timestamp": 1721140223,
"transactionHash": "0x7d584f0a645cad61e634f64ffaf7e1bbfb92749878eb25b39ce0e5cf698897c7",
"implementations": [
"eth:0xDF8642a1FBFc2014de27E8E87283D6f3eEF315DF"
]
},
{
"timestamp": 1730452835,
"transactionHash": "0x13ea4d044a313cf667d16514465e6b96227ef7198bda7b19c70eefee44e9bccd",
"implementations": [
"eth:0x45fed11Ba70D4217545F18E27DDAF7D76Ff499f3"
]
},
{
"timestamp": 1747298447,
"transactionHash": "0x97789b6668d0a287b1f57bb6c8e23cce62308fb887139faeb0f06b77855995fd",
"implementations": [
"eth:0x0783Ee019C9b0f918A741469bD488A88827b3617"
]
},
{
"timestamp": 1747578311,
"transactionHash": "0x0ae99d24b294622e3d3868c8dca911a5936231ce1f97254ec0c6a6f65f7aa81c",
"implementations": [
"eth:0x42Ec977eb6B09a8D78c6D486c3b0e63569bA851c"
]
},
{
"timestamp": 1774964687,
"transactionHash": "0xb132692b255fb1ff670b37d162af03de5151fa1e77811bf009ba276e4a9a2f36",
"implementations": [
"eth:0x6a4B15E4b0296B2ECE03Ee9Ed74E4A3E3ECA68D6"
]
},
{
"timestamp": 1777562051,
"transactionHash": "0xfcd6ca82025b847a3508db2d3c82327a19e3c4afda867acae8c09da147667036",
"implementations": [
"eth:0xBC442F342FE247Dc7981AC7Fbe8293c8891F8752"
]
},
{
"timestamp": 1782739115,
"transactionHash": "0xae7122add731c935d54d726ebe542e7d4f9f7321e3bdf4ec794309f813d981f7",
"implementations": [
"eth:0x1A06832992785766a105838C95c1E13a0045AC85"
]
}
],
"description": "Facilitates secure cross-chain message passing by storing signals and state-root checkpoints. Bridge escrows and other applications use it to prove that a specific L1<->L2 signal or checkpointed state transition occurred via Merkle proofs. Pausing disables signal proof verification.\n* Roles:\n * **admin**: TaikoDAOController; ultimately SignerList (Security Council)\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)\n * **pauser**: Taiko Multisig",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9e0a24964e5397B566c1ed39258e21aB5E35C77C#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**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9F9994Eb4Cb5200198FEfb470f8b50301662e696#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
},
{
"name": "Multisig",
"isVerified": true,
"address": "eth:0xD7dA1C25E915438720692bC55eb3a7170cA90321",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x8510d389236d7213eE9B9C38CAaBc0aD24853C25"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1746111707,
"transactionHash": "0x8acf74d966e6eb99972a4a73382cf42aa918d4715eaf4b587d1007f24edf5208",
"implementations": [
"eth:0x8510d389236d7213eE9B9C38CAaBc0aD24853C25"
]
}
],
"description": "Modular Governance contract allowing for proposing, voting on and executing proposals (e.g. for Security Council standard proposals).\n* Roles:\n * **dao**: DAO; ultimately SignerList (Security Council)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD7dA1C25E915438720692bC55eb3a7170cA90321#code"
},
{
"name": "RiscZeroVerifierEmergencyStop",
"isVerified": true,
"address": "eth:0xDa8f3de6fBBdb261Ac771B813a578A7aBdA6B2b1",
"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**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xDa8f3de6fBBdb261Ac771B813a578A7aBdA6B2b1#code"
},
{
"name": "PreconfWhitelist",
"isVerified": true,
"address": "eth:0xFD019460881e6EeC632258222393d5821029b2ac",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x75Ba76403b13b26AD1beC70D6eE937314eeaCD0a"
],
"implementations": [
"eth:0xDBae46E35C18719E6c78aaBF9c8869c4eC84c149"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1753275179,
"transactionHash": "0x2d127d401f9d22fd4c4f8c14773f2e98e9a3e87837f78bb1d2881a8fcb91cd59",
"implementations": [
"eth:0x86f0AeFA26A1447bbE62bd2bE1D30ff3353B88fB"
]
},
{
"timestamp": 1754913371,
"transactionHash": "0x1000b14e86d8db17931f65e877e2eb13cb3990d0a129eee1aff21ce6ba96d2cf",
"implementations": [
"eth:0x44eC275996BD69361EF062ed488882a58256CF11"
]
},
{
"timestamp": 1756244927,
"transactionHash": "0x27f89b30a14fdf2c6adb42c5722f4ac403eefde7d26f6a64bdfd4a86458a0c00",
"implementations": [
"eth:0x54FeDc114D78dcbDb8c7b2DeA433f9749E8fd0Fc"
]
},
{
"timestamp": 1774964687,
"transactionHash": "0xb132692b255fb1ff670b37d162af03de5151fa1e77811bf009ba276e4a9a2f36",
"implementations": [
"eth:0xDBae46E35C18719E6c78aaBF9c8869c4eC84c149"
]
}
],
"description": "Contains the whitelist of addresses eligible to propose batches on L1 and issue preconfirmations. It dynamically selects a single active operator for each epoch using a delayed Ethereum beacon block root as randomness. There is no fallback proposer path in this contract: non-selected operators cannot propose for the current epoch.\n* Roles:\n * **_ejectorManager**: Taiko Multisig\n * **admin**: TaikoDAOController; ultimately SignerList (Security Council)\n * **ejecters**: EOA 2, EOA 5\n * **operatorMapping**: EOA 1, EOA 3, EOA 6\n * **owner**: TaikoDAOController; ultimately SignerList (Security Council)",
"upgradableBy": [
{
"name": "SignerList (Security Council)",
"delay": "7d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFD019460881e6EeC632258222393d5821029b2ac#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0xd60247c6848B7Ca29eDdF63AA924E53dB6Ddd8EC",
"sinceTimestamp": 1714550603,
"tokens": [
"ETH"
],
"chain": "ethereum",
"chainId": 1
},
{
"address": "0x996282cA11E5DEb6B5D122CC3B9A1FcAAD4415Ab",
"sinceTimestamp": 1714550603,
"tokens": "*",
"chain": "ethereum",
"chainId": 1
}
],
"programHashes": [
{
"title": "Proposal program of Raiko2 v0.5.1",
"description": "Proves a Taiko Shasta proposal state transition with Raiko2.",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/taikoxyz/raiko2/blob/v0.5.1/guests/sp1/src/shasta_proposal.rs",
"verificationStatus": "successful",
"verificationSteps": "\nDependencies: Git, Rust/Cargo, Docker with a running daemon, and either `just` or the equivalent Cargo command below. The build pulls Docker images and locked Rust/git dependencies.\n\n1. Check out the correct tag in [raiko2](https://github.com/taikoxyz/raiko2):\n```\ngit clone https://github.com/taikoxyz/raiko2.git\ncd raiko2\ngit checkout v0.5.1\n```\nCommit hash should be `b08f4c57cd69a0f8dc1316a21f4ce4b08eddbebe`.\n2. From the `raiko2` root dir, rebuild the Shasta guest ELFs from source:\n```\njust build-guest all\n```\nIf `just` is unavailable, run the equivalent command:\n```\ncargo run -r -p xtask-build-guest --bin xtask-build-guest -- all\n```\nThis exports fresh ELFs to `crates/guests/elf`.\n3. Generate the guest digest summary from the rebuilt ELFs:\n```\ncargo run -r -p xtask-build-guest --bin guest-digests --features digests -- \\\n --output /tmp/raiko2-v0.5.1-guest-digests.json\n```\n4. In `/tmp/raiko2-v0.5.1-guest-digests.json`, find the entry with `object_name: \"sp1_shasta_proposal\"` and `digest_source: \"vk_bn254\"`. Its `digest` field should match this program hash.\n\nReference: [Taiko Proposal0017 recovery bundle](https://github.com/taikoxyz/taiko-mono/blob/0603e070589a091db61e95b883a007bd271886ac/packages/protocol/script/layer1/proposals/Proposal0017.md) from [taiko-mono#21833](https://github.com/taikoxyz/taiko-mono/pull/21833).\n",
"hash": "0x007594632ec31fae9d44799b97316fcbcaa3ff6b5db268c7a5d8025b3bbb487e"
},
{
"title": "Proposal program of Raiko2 v0.5.1",
"description": "Proves a Taiko Shasta proposal state transition with Raiko2.",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/taikoxyz/raiko2/blob/v0.5.1/guests/sp1/src/shasta_proposal.rs",
"verificationStatus": "successful",
"verificationSteps": "\nDependencies: Git, Rust/Cargo, Docker with a running daemon, and either `just` or the equivalent Cargo command below. The build pulls Docker images and locked Rust/git dependencies.\n\n1. Check out the correct tag in [raiko2](https://github.com/taikoxyz/raiko2):\n```\ngit clone https://github.com/taikoxyz/raiko2.git\ncd raiko2\ngit checkout v0.5.1\n```\nCommit hash should be `b08f4c57cd69a0f8dc1316a21f4ce4b08eddbebe`.\n2. From the `raiko2` root dir, rebuild the Shasta guest ELFs from source:\n```\njust build-guest all\n```\nIf `just` is unavailable, run the equivalent command:\n```\ncargo run -r -p xtask-build-guest --bin xtask-build-guest -- all\n```\nThis exports fresh ELFs to `crates/guests/elf`.\n3. Generate the guest digest summary from the rebuilt ELFs:\n```\ncargo run -r -p xtask-build-guest --bin guest-digests --features digests -- \\\n --output /tmp/raiko2-v0.5.1-guest-digests.json\n```\n4. In `/tmp/raiko2-v0.5.1-guest-digests.json`, find the entry with `object_name: \"sp1_shasta_proposal\"` and `digest_source: \"vk_hash_bytes\"`. Its `digest` field should match this program hash.\n\nReference: [Taiko Proposal0017 recovery bundle](https://github.com/taikoxyz/taiko-mono/blob/0603e070589a091db61e95b883a007bd271886ac/packages/protocol/script/layer1/proposals/Proposal0017.md) from [taiko-mono#21833](https://github.com/taikoxyz/taiko-mono/pull/21833).\n",
"hash": "0x3aca319730c7eba7288f33727316fcbc551ffb5a76c9a31e4bb004b63bbb487e"
},
{
"title": "Aggregation program of Raiko2 v0.5.1",
"description": "Aggregates Raiko2 proofs for multiple Taiko Shasta proposals.",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/taikoxyz/raiko2/blob/v0.5.1/guests/sp1/src/shasta_aggregation.rs",
"verificationStatus": "successful",
"verificationSteps": "\nDependencies: Git, Rust/Cargo, Docker with a running daemon, and either `just` or the equivalent Cargo command below. The build pulls Docker images and locked Rust/git dependencies.\n\n1. Check out the correct tag in [raiko2](https://github.com/taikoxyz/raiko2):\n```\ngit clone https://github.com/taikoxyz/raiko2.git\ncd raiko2\ngit checkout v0.5.1\n```\nCommit hash should be `b08f4c57cd69a0f8dc1316a21f4ce4b08eddbebe`.\n2. From the `raiko2` root dir, rebuild the Shasta guest ELFs from source:\n```\njust build-guest all\n```\nIf `just` is unavailable, run the equivalent command:\n```\ncargo run -r -p xtask-build-guest --bin xtask-build-guest -- all\n```\nThis exports fresh ELFs to `crates/guests/elf`.\n3. Generate the guest digest summary from the rebuilt ELFs:\n```\ncargo run -r -p xtask-build-guest --bin guest-digests --features digests -- \\\n --output /tmp/raiko2-v0.5.1-guest-digests.json\n```\n4. In `/tmp/raiko2-v0.5.1-guest-digests.json`, find the entry with `object_name: \"sp1_shasta_aggregation\"` and `digest_source: \"vk_bn254\"`. Its `digest` field should match this program hash.\n\nReference: [Taiko Proposal0017 recovery bundle](https://github.com/taikoxyz/taiko-mono/blob/0603e070589a091db61e95b883a007bd271886ac/packages/protocol/script/layer1/proposals/Proposal0017.md) from [taiko-mono#21833](https://github.com/taikoxyz/taiko-mono/pull/21833).\n",
"hash": "0x00e91cb391c22d6fd015e4c6041dbbe6efb2d8be6d4046eec28f12acba5a17bc"
},
{
"title": "Aggregation program of Raiko2 v0.5.1",
"description": "Aggregates Raiko2 proofs for multiple Taiko Shasta proposals.",
"proverSystemProject": "sp1hypercube",
"programUrl": "https://github.com/taikoxyz/raiko2/blob/v0.5.1/guests/sp1/src/shasta_aggregation.rs",
"verificationStatus": "successful",
"verificationSteps": "\nDependencies: Git, Rust/Cargo, Docker with a running daemon, and either `just` or the equivalent Cargo command below. The build pulls Docker images and locked Rust/git dependencies.\n\n1. Check out the correct tag in [raiko2](https://github.com/taikoxyz/raiko2):\n```\ngit clone https://github.com/taikoxyz/raiko2.git\ncd raiko2\ngit checkout v0.5.1\n```\nCommit hash should be `b08f4c57cd69a0f8dc1316a21f4ce4b08eddbebe`.\n2. From the `raiko2` root dir, rebuild the Shasta guest ELFs from source:\n```\njust build-guest all\n```\nIf `just` is unavailable, run the equivalent command:\n```\ncargo run -r -p xtask-build-guest --bin xtask-build-guest -- all\n```\nThis exports fresh ELFs to `crates/guests/elf`.\n3. Generate the guest digest summary from the rebuilt ELFs:\n```\ncargo run -r -p xtask-build-guest --bin guest-digests --features digests -- \\\n --output /tmp/raiko2-v0.5.1-guest-digests.json\n```\n4. In `/tmp/raiko2-v0.5.1-guest-digests.json`, find the entry with `object_name: \"sp1_shasta_aggregation\"` and `digest_source: \"vk_hash_bytes\"`. Its `digest` field should match this program hash.\n\nReference: [Taiko Proposal0017 recovery bundle](https://github.com/taikoxyz/taiko-mono/blob/0603e070589a091db61e95b883a007bd271886ac/packages/protocol/script/layer1/proposals/Proposal0017.md) from [taiko-mono#21833](https://github.com/taikoxyz/taiko-mono/pull/21833).\n",
"hash": "0x748e59c8708b5bf402bc98c041dbbe6e7d96c5f335011bbb051e25593a5a17bc"
},
{
"title": "Proposal program of Raiko2 v0.5.1",
"description": "Proves a Taiko Shasta proposal state transition with Raiko2.",
"proverSystemProject": "risc0",
"programUrl": "https://github.com/taikoxyz/raiko2/blob/v0.5.1/guests/risc0/src/shasta_proposal.rs",
"verificationStatus": "successful",
"verificationSteps": "\nDependencies: Git, Rust/Cargo, Docker with a running daemon, and either `just` or the equivalent Cargo command below. The build pulls Docker images and locked Rust/git dependencies.\n\n1. Check out the correct tag in [raiko2](https://github.com/taikoxyz/raiko2):\n```\ngit clone https://github.com/taikoxyz/raiko2.git\ncd raiko2\ngit checkout v0.5.1\n```\nCommit hash should be `b08f4c57cd69a0f8dc1316a21f4ce4b08eddbebe`.\n2. From the `raiko2` root dir, rebuild the Shasta guest ELFs from source:\n```\njust build-guest all\n```\nIf `just` is unavailable, run the equivalent command:\n```\ncargo run -r -p xtask-build-guest --bin xtask-build-guest -- all\n```\nThis exports fresh ELFs to `crates/guests/elf`.\n3. Generate the guest digest summary from the rebuilt ELFs:\n```\ncargo run -r -p xtask-build-guest --bin guest-digests --features digests -- \\\n --output /tmp/raiko2-v0.5.1-guest-digests.json\n```\n4. In `/tmp/raiko2-v0.5.1-guest-digests.json`, find the entry with `object_name: \"risc0_shasta_proposal\"` and `digest_source: \"image_id\"`. Its `digest` field should match this program hash.\n\nReference: [Taiko Proposal0017 recovery bundle](https://github.com/taikoxyz/taiko-mono/blob/0603e070589a091db61e95b883a007bd271886ac/packages/protocol/script/layer1/proposals/Proposal0017.md) from [taiko-mono#21833](https://github.com/taikoxyz/taiko-mono/pull/21833).\n",
"hash": "0xa38d1fac63aa6a553fdb6fea01fdc96534564c31de916aaafe5f5a1dd3bb908b"
},
{
"title": "Aggregation program of Raiko2 v0.5.1",
"description": "Aggregates Raiko2 proofs for multiple Taiko Shasta proposals.",
"proverSystemProject": "risc0",
"programUrl": "https://github.com/taikoxyz/raiko2/blob/v0.5.1/guests/risc0/src/shasta_aggregation.rs",
"verificationStatus": "successful",
"verificationSteps": "\nDependencies: Git, Rust/Cargo, Docker with a running daemon, and either `just` or the equivalent Cargo command below. The build pulls Docker images and locked Rust/git dependencies.\n\n1. Check out the correct tag in [raiko2](https://github.com/taikoxyz/raiko2):\n```\ngit clone https://github.com/taikoxyz/raiko2.git\ncd raiko2\ngit checkout v0.5.1\n```\nCommit hash should be `b08f4c57cd69a0f8dc1316a21f4ce4b08eddbebe`.\n2. From the `raiko2` root dir, rebuild the Shasta guest ELFs from source:\n```\njust build-guest all\n```\nIf `just` is unavailable, run the equivalent command:\n```\ncargo run -r -p xtask-build-guest --bin xtask-build-guest -- all\n```\nThis exports fresh ELFs to `crates/guests/elf`.\n3. Generate the guest digest summary from the rebuilt ELFs:\n```\ncargo run -r -p xtask-build-guest --bin guest-digests --features digests -- \\\n --output /tmp/raiko2-v0.5.1-guest-digests.json\n```\n4. In `/tmp/raiko2-v0.5.1-guest-digests.json`, find the entry with `object_name: \"risc0_shasta_aggregation\"` and `digest_source: \"image_id\"`. Its `digest` field should match this program hash.\n\nReference: [Taiko Proposal0017 recovery bundle](https://github.com/taikoxyz/taiko-mono/blob/0603e070589a091db61e95b883a007bd271886ac/packages/protocol/script/layer1/proposals/Proposal0017.md) from [taiko-mono#21833](https://github.com/taikoxyz/taiko-mono/pull/21833).\n",
"hash": "0x868b5154ae01a9a045051da2d7ba2e21d4132c7ec096da343fa24149407fefef"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"eth:0x20ff7C2Cf391a5F096A2Cc181cb41916680f8E97",
"eth:0x2a098988600d87650Fb061FfAff08B97149Fa84D",
"eth:0x54aCE3ED46529B4d4F3770C8Bad5dDC48717B9bF",
"eth:0xafB31f5b70623CDF4b20Ada3f7230916A5A79df9",
"eth:0xf70aBAb028Eb6F4100A24B203E113D94E87DE93C"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Validium",
"isVerified": true,
"address": "eth:0x7fF0B5fF6Eb8B789456639AC2A02487c338c1789",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x427113ae6F319BfFb4459bfF96eb8B6BDe1A127F"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1735650935,
"transactionHash": "0x6fa3d7225201238d78388fafabea13b5a54c4f1f037d51071c39c624aa072511",
"implementations": [
"eth:0x427113ae6F319BfFb4459bfF96eb8B6BDe1A127F"
]
}
],
"description": "The main system contract defining the Ternoa Layer 2 logic. Entry point for sequencing batches.\n* Roles:\n * **admin**: EOA 1\n * **forceBatchAddress**: EOA 1\n * **trustedSequencer**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7fF0B5fF6Eb8B789456639AC2A02487c338c1789#code"
},
{
"name": "Verifier",
"isVerified": true,
"address": "eth:0x9B9671dB83CfcB4508bF361942488C5cA2b1286D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies ZK proofs for state roots of this Layer 2 via the PolygonRollupManager.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9B9671dB83CfcB4508bF361942488C5cA2b1286D#code"
},
{
"name": "PolygonDataCommittee",
"isVerified": true,
"address": "eth:0xB408a216927d31A27fd96176dbF1B825630f0301",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xE390FB0dd0Ea7684F59210d791D63E7fc28BbF9b"
],
"implementations": [
"eth:0x0f32d8C0eB1cE4C5FFb1A6C4bb3b879D2184Ed11"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1735824851,
"transactionHash": "0xa1d4a7b4eaff3accd51899984230d34d5219786f1de408d9ac6174552d852dad",
"implementations": [
"eth:0x0f32d8C0eB1cE4C5FFb1A6C4bb3b879D2184Ed11"
]
}
],
"description": "Manages the members of the data availability committee (DAC) and the threshold for accepting commitments from them (Currently 1/1).\n* Roles:\n * **admin**: ProxyAdmin; ultimately EOA 1\n * **owner**: EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xB408a216927d31A27fd96176dbF1B825630f0301#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 3, EOA 4\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xE390FB0dd0Ea7684F59210d791D63E7fc28BbF9b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE390FB0dd0Ea7684F59210d791D63E7fc28BbF9b#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1679653127,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherWrapped",
"wethAddress": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c",
"tokensToAssignFromL1": [
"CAPS"
]
},
"chainId": 1
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 3d delay on code upgrades unless upgrade is initiated by the PolygonSecurityCouncil in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0x9B9671dB83CfcB4508bF361942488C5cA2b1286D"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "AvailBridgeV1",
"isVerified": true,
"address": "eth:0x054fd961708D8E2B9c10a63F6157c74458889F0a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x36194271a00dBBBae314E83dA56d0FF75fDa367B"
],
"implementations": [
"eth:0x737539737b44493F65c17eAfE165197b6410d254"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720568903,
"transactionHash": "0x980ea7f295336624f103c47b5ec482f90c2c90f4b7d05140ceb5d40aa077963c",
"implementations": [
"eth:0x737539737b44493F65c17eAfE165197b6410d254"
]
}
],
"description": "Bridge contract that verifies merkle proofs of inclusion in the proven data of the Vector DA- and arbitrary message bridge. Also used for token- and arbitrary message transfers between Avail and Ethereum.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Avail Multisig 1\n * **defaultAdmin**: TimelockController; ultimately Avail Multisig 1\n * **pauser**: Avail Multisig 2",
"upgradableBy": [
{
"name": "Avail Multisig 1",
"delay": "1d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x054fd961708D8E2B9c10a63F6157c74458889F0a#code"
},
{
"name": "Vector",
"isVerified": true,
"address": "eth:0x02993cdC11213985b9B13224f3aF289F03bf298d",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0xc6217f1549Cab6f22ac4AC56d42e6C248731a33D"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720128227,
"transactionHash": "0x6c2c609d7a13fbdad53b1530d34d740ffa36653f29b5f14220429d7c0d6a3ffc",
"implementations": [
"eth:0x2434564f3524b44258B11643729343Ef57D60989"
]
},
{
"timestamp": 1721438975,
"transactionHash": "0x13d7977b9fca12882ea6ba47ce1b20a87de540c358b5e260584e0d921e786f5e",
"implementations": [
"eth:0xc6217f1549Cab6f22ac4AC56d42e6C248731a33D"
]
}
],
"description": "The Vector bridge contract that accepts and stores Avail data availability commitments on Ethereum.\n* Roles:\n * **guardians**: Avail Multisig 1\n * **relayers**: EOA 1\n * **timelocks**: Avail Multisig 1",
"upgradableBy": [
{
"name": "Avail Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x02993cdC11213985b9B13224f3aF289F03bf298d#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x36194271a00dBBBae314E83dA56d0FF75fDa367B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: TimelockController",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x36194271a00dBBBae314E83dA56d0FF75fDa367B#code"
},
{
"name": "TimelockController",
"isVerified": true,
"address": "eth:0x45828180bbE489350D621d002968A0585406d487",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. The current minimum delay is 1d.\n* Roles:\n * **canceller**: Avail Multisig 1\n * **defaultAdmin**: Avail Multisig 1, TimelockController; ultimately Avail Multisig 1\n * **executor**: Avail Multisig 1\n * **proposer**: Avail Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x45828180bbE489350D621d002968A0585406d487#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"programHashes": [
{
"title": "Avail VectorX DA bridge program",
"description": "ZK-friendly implementation of Avail Vector DA bridge that proves that a given data root was finalized on Avail.",
"programUrl": "https://github.com/availproject/sp1-vector/tree/1378db51be7634593f2bbb6301e5adf7590d03ab/program",
"proverSystemProject": "sp1hypercube",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain v5.0.0: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up -v v5.0.0` (the toolchain version must match the program's `sp1-zkvm = \"5.0.0\"` dependency and the docker tag used below).\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [availproject/sp1-vector](https://github.com/availproject/sp1-vector/tree/main) repo: `git checkout 1378db51be7634593f2bbb6301e5adf7590d03ab`.\n2. Make sure docker is running by running `docker ps`.\n3. From the `sp1-vector/program` dir run: `cargo prove build --docker --tag v5.0.0 --elf-name vector-elf --output-directory ../elf` to build the vector program elf within a docker container and place it in `sp1-vector/elf`.\n4. From `sp1-vector` run: `cargo run --bin vkey --release` to print the vkey of the `vector-elf` program.",
"hash": "0x0057b7de6dcd8ff25e7b41089f4b5fa586067fbb107756d1f66d92fe71dd6ad1"
}
],
"risks": [
{
"category": "Funds can be lost if",
"text": "the bridge contract or its dependencies receive a malicious code upgrade. There is no delay on code upgrades."
},
{
"category": "Funds can be frozen if",
"text": "the bridge contract is frozen by the Guardian (AvailMultisig)."
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
+1 -1
{
"addresses": {
"arbitrum": [
{
"name": "ChallengeManager",
"isVerified": true,
"address": "arb1:0x0E40E41E6095A4f0607144a52d31C2F11a3FF1a1",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x802c7B6585d20cb69524EF23fCbF919F671F808a"
],
"implementations": [
"arb1:0x78C5D1C5794C61122d2F4fEfc441B5d69e0a1Df0"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1715799374,
"transactionHash": "0x42fc27511b05dc35424565463d5dd348283c330d05c963396ee1a68526ac56a5",
"implementations": [
"arb1:0x5cA988F213EfbCB86ED7e2AACB0C15c91e648f8d"
]
},
{
"timestamp": 1737569829,
"transactionHash": "0xf99dd58af041164dc6a225a760822c2d28d41e836754dd84eefd9e4445a49791",
"implementations": [
"arb1:0x5AA806015FEC88669bF7DAd746BB4ADC1E79BcED"
]
},
{
"timestamp": 1747088324,
"transactionHash": "0xe3dc71cb07fe7af204af6862884be9162b11cc7455660ff2be9562a12afd604c",
"implementations": [
"arb1:0x78C5D1C5794C61122d2F4fEfc441B5d69e0a1Df0"
]
}
],
"description": "Contract that allows challenging state roots. Can be called through the RollupProxy by Validators or the UpgradeExecutor.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 2, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Conduit Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x0E40E41E6095A4f0607144a52d31C2F11a3FF1a1#code"
},
{
"name": "RollupProxy",
"isVerified": true,
"address": "arb1:0x2633ea91d15BeE85105C9b27E068f406F2F36a4a",
"upgradeability": {
"proxyType": "Arbitrum proxy",
"admins": [
"arb1:0xc5d17f6e0025a23c0AAFf7832Cc531B3034602DA"
],
"implementations": [
"arb1:0xdD91f6e88576fEc4A38A518DA39C92e13CBB6446",
"arb1:0x1BeD37FeDFE8B2721a69A559313D2b58d16Ecd77"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1715799374,
"transactionHash": "0x42fc27511b05dc35424565463d5dd348283c330d05c963396ee1a68526ac56a5",
"implementations": [
"arb1:0xEe9E5546A11Cb5b4A86e92DA05f2ef75C26E4754",
"arb1:0x0aE4dD666748bF0F6dB5c149Eab1D8aD27820A6A"
]
},
{
"timestamp": 1737569829,
"transactionHash": "0xf99dd58af041164dc6a225a760822c2d28d41e836754dd84eefd9e4445a49791",
"implementations": [
"arb1:0xdD91f6e88576fEc4A38A518DA39C92e13CBB6446",
"arb1:0x1BeD37FeDFE8B2721a69A559313D2b58d16Ecd77"
]
}
],
"description": "Central contract for the project's configuration like its execution logic hash (`wasmModuleRoot`) and addresses of the other system contracts. Entry point for Proposers creating new Rollup Nodes (state commitments) and Challengers submitting fraud proofs (In the Orbit stack, these two roles are both held by the Validators).\n* Roles:\n * **admin**: UpgradeExecutor; ultimately Conduit Multisig 2, EOA 1\n * **anyTrustFastConfirmer**: WinrFastconfirmerMultisig; ultimately EOA 2\n * **owner**: UpgradeExecutor; ultimately Conduit Multisig 2, EOA 1\n * **validators**: EOA 11, EOA 13, EOA 15, EOA 18, EOA 2, EOA 20, EOA 23, EOA 25, EOA 27, EOA 28, EOA 29, EOA 3, EOA 4, EOA 5, WinrFastconfirmerMultisig; ultimately EOA 2",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Conduit Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x2633ea91d15BeE85105C9b27E068f406F2F36a4a#code"
},
{
"name": "SequencerInbox",
"isVerified": true,
"address": "arb1:0x8AeDdE55Cb361e73a0B0c0cF2A5bB35E97a20456",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x802c7B6585d20cb69524EF23fCbF919F671F808a"
],
"implementations": [
"arb1:0x2CBa47e7734De9568C568C5b1b238B491Afbf73b"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1715799374,
"transactionHash": "0x42fc27511b05dc35424565463d5dd348283c330d05c963396ee1a68526ac56a5",
"implementations": [
"arb1:0x7a299aD29499736994Aa3a9aFa3f476445FAEB2c"
]
},
{
"timestamp": 1745618146,
"transactionHash": "0xb219997f52a5ffaeb50fb6de4b69cefdd4f1844879a102820ce0878df63bc80b",
"implementations": [
"arb1:0x7be08B013de2b23a6329De51C4994f841dcE1a10"
]
},
{
"timestamp": 1747088324,
"transactionHash": "0xe3dc71cb07fe7af204af6862884be9162b11cc7455660ff2be9562a12afd604c",
"implementations": [
"arb1:0x2CBa47e7734De9568C568C5b1b238B491Afbf73b"
]
}
],
"description": "A sequencer (registered in this contract) can submit transaction batches or commitments here.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 2, EOA 1\n * **batchPosters**: EOA 10, EOA 12, EOA 14, EOA 16, EOA 17, EOA 19, EOA 21, EOA 22, EOA 24, EOA 26, EOA 6, EOA 7, EOA 8, EOA 9",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Conduit Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x8AeDdE55Cb361e73a0B0c0cF2A5bB35E97a20456#code"
},
{
"name": "Bridge",
"isVerified": true,
"address": "arb1:0xF3f01622Ac969156760c32190995F9dC5b3eb7FA",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x802c7B6585d20cb69524EF23fCbF919F671F808a"
],
"implementations": [
"arb1:0xdF0eaCC3F37356DF320e5B5db16C7eD7A6b596dd"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1715799374,
"transactionHash": "0x42fc27511b05dc35424565463d5dd348283c330d05c963396ee1a68526ac56a5",
"implementations": [
"arb1:0x2a6DD4433ffa96dc1755814FC0d9cc83A5F68DeC"
]
},
{
"timestamp": 1745618146,
"transactionHash": "0xb219997f52a5ffaeb50fb6de4b69cefdd4f1844879a102820ce0878df63bc80b",
"implementations": [
"arb1:0xdF0eaCC3F37356DF320e5B5db16C7eD7A6b596dd"
]
}
],
"description": "Escrow contract for the project's gas token (can be different from ETH). Keeps a list of allowed Inboxes and Outboxes for canonical bridge messaging.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 2, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Conduit Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xF3f01622Ac969156760c32190995F9dC5b3eb7FA#code"
},
{
"name": "UpgradeExecutor",
"isVerified": true,
"address": "arb1:0xc5d17f6e0025a23c0AAFf7832Cc531B3034602DA",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x802c7B6585d20cb69524EF23fCbF919F671F808a"
],
"implementations": [
"arb1:0x660ea1675F7323dC3Ba0c8dDFB593225Eb01E3C1"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1715799374,
"transactionHash": "0x42fc27511b05dc35424565463d5dd348283c330d05c963396ee1a68526ac56a5",
"implementations": [
"arb1:0x660ea1675F7323dC3Ba0c8dDFB593225Eb01E3C1"
]
}
],
"description": "Central contract defining the access control permissions for upgrading the system contract implementations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 2, EOA 1\n * **executors**: Conduit Multisig 2, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Conduit Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xc5d17f6e0025a23c0AAFf7832Cc531B3034602DA#code"
},
{
"name": "Inbox",
"isVerified": true,
"address": "arb1:0x4FeBaEF286Ca477402dafCEeB17C64de481aFB42",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x802c7B6585d20cb69524EF23fCbF919F671F808a"
],
"implementations": [
"arb1:0x2d682d33762eCd73fF07d1a7Ad95a06faE40CF44"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1715799374,
"transactionHash": "0x42fc27511b05dc35424565463d5dd348283c330d05c963396ee1a68526ac56a5",
"implementations": [
"arb1:0x7EfcB76D0e2E776A298aAa603d433336e5F8b6ab"
]
},
{
"timestamp": 1745618146,
"transactionHash": "0xb219997f52a5ffaeb50fb6de4b69cefdd4f1844879a102820ce0878df63bc80b",
"implementations": [
"arb1:0xD87f160f8c414d834cBDd9477c3D8c3ad1802255"
]
},
{
"timestamp": 1747088324,
"transactionHash": "0xe3dc71cb07fe7af204af6862884be9162b11cc7455660ff2be9562a12afd604c",
"implementations": [
"arb1:0x2d682d33762eCd73fF07d1a7Ad95a06faE40CF44"
]
}
],
"description": "Facilitates sending L1 to L2 messages like depositing ETH, but does not escrow funds.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 2, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Conduit Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x4FeBaEF286Ca477402dafCEeB17C64de481aFB42#code"
},
{
"name": "Outbox",
"isVerified": true,
"address": "arb1:0xBA99217992620b76aae0D574c70bD313B30D3D1d",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x802c7B6585d20cb69524EF23fCbF919F671F808a"
],
"implementations": [
"arb1:0x302275067251F5FcdB9359Bda735fD8f7A4A54c0"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1715799374,
"transactionHash": "0x42fc27511b05dc35424565463d5dd348283c330d05c963396ee1a68526ac56a5",
"implementations": [
"arb1:0x302275067251F5FcdB9359Bda735fD8f7A4A54c0"
]
}
],
"description": "Facilitates L2 to L1 contract calls: Messages initiated from L2 (for example withdrawal messages) eventually resolve in execution on L1.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 2, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Conduit Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xBA99217992620b76aae0D574c70bD313B30D3D1d#code"
},
{
"name": "OneStepProverMemory",
"isVerified": true,
"address": "arb1:0x07d24d32D8F522793faEEebA16BbB97441664374",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x07d24d32D8F522793faEEebA16BbB97441664374#code"
},
{
"name": "OneStepProver0",
"isVerified": true,
"address": "arb1:0x3524251c60e04889bB578fE6B2e2Ad86C6Fc48ad",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x3524251c60e04889bB578fE6B2e2Ad86C6Fc48ad#code"
},
{
"name": "ValidatorUtils",
"isVerified": true,
"address": "arb1:0x6c21303F5986180B1394d2C89f3e883890E2867b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "This contract implements view only utilities for validators.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x6c21303F5986180B1394d2C89f3e883890E2867b#code"
},
{
"name": "OneStepProverHostIo",
"isVerified": true,
"address": "arb1:0x74D50DbaCfef02d3dAC141b0bC40195886d7ECF7",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine. This version uses the Blobstream DA bridge (ArbitrumBlobstream) as source of truth for the DA referenced by the fault proof.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x74D50DbaCfef02d3dAC141b0bC40195886d7ECF7#code"
},
{
"name": "OneStepProofEntry",
"isVerified": true,
"address": "arb1:0x759dbcB5E12E6bA091919c94BAa70A4797fd3D0d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x759dbcB5E12E6bA091919c94BAa70A4797fd3D0d#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "arb1:0x802c7B6585d20cb69524EF23fCbF919F671F808a",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "* Roles:\n * **owner**: UpgradeExecutor",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x802c7B6585d20cb69524EF23fCbF919F671F808a#code"
},
{
"name": "RollupEventInbox",
"isVerified": true,
"address": "arb1:0xe966442c0E8F28C48eF4F02BfF7a29876Dcd30CC",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x802c7B6585d20cb69524EF23fCbF919F671F808a"
],
"implementations": [
"arb1:0x18FD37A4FB9E1F06d9383958aFd236771F15A8cb"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1715799374,
"transactionHash": "0x42fc27511b05dc35424565463d5dd348283c330d05c963396ee1a68526ac56a5",
"implementations": [
"arb1:0x18FD37A4FB9E1F06d9383958aFd236771F15A8cb"
]
}
],
"description": "Helper contract sending configuration data over the bridge during the systems initialization.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 2, EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
},
{
"name": "Conduit Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xe966442c0E8F28C48eF4F02BfF7a29876Dcd30CC#code"
},
{
"name": "OneStepProverMath",
"isVerified": true,
"address": "arb1:0xf951C50162Ce1aEC93464aCFe90F755EC9878b5f",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "One of the modular contracts used for the last step of a fraud proof, which is simulated inside a WASM virtual machine.\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xf951C50162Ce1aEC93464aCFe90F755EC9878b5f#code"
},
{
"name": "ArbitrumBlobstream",
"isVerified": true,
"address": "arb1:0xA83ca7775Bc2889825BcDeDfFa5b758cf69e8794",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x738a9b55304f9fcF776B3BA285e50c0f9eF77997"
],
"implementations": [
"arb1:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1710651080,
"transactionHash": "0x58059198a17ae1d8dd73b4d0f0ce7169f4e55d901a8fea59b4ef12d005a41f0a",
"implementations": [
"arb1:0x7C3A9b466FF5c02582fa32d4aD1b2Cb431fB7c9b"
]
},
{
"timestamp": 1710724776,
"transactionHash": "0xf45e346ddbedef1ea3f828954c979adcb205b4b1c0ca72e49e7e2ef5b1c43192",
"implementations": [
"arb1:0xfb19439fBa9f16aA720be6bE0e53465a9733C964"
]
},
{
"timestamp": 1724698402,
"transactionHash": "0x746e21628ccec4d5b4da96595f852a6398defcc360cb9f13aa2d84ebe4e7403f",
"implementations": [
"arb1:0x47fd660D5252Bd6F9D2c71507E46aa1d6e957c23"
]
},
{
"timestamp": 1733166545,
"transactionHash": "0x07dbff15e24a8c124a927a2881cb4d471ace180488a56a56b43b47d1da68a130",
"implementations": [
"arb1:0x46EbfC399d3913BB9b99E73675722417F9c5d416"
]
}
],
"description": "The Blobstream DA bridge. This contract is used to bridge data commitments between Celestia and the destination chain. It specifies relayers that commit block ranges, but due to the lack of emitted events, there may be more relayers than are presented here.\n* Roles:\n * **admin**: BlobstreamMultisig\n * **guardians**: BlobstreamMultisig\n * **relayers**: EOA 30, EOA 31",
"upgradableBy": [
{
"name": "BlobstreamMultisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xA83ca7775Bc2889825BcDeDfFa5b758cf69e8794#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGatewayArb",
"isVerified": true,
"address": "arb1:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "arb1:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "arbitrum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://arbiscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0xF3f01622Ac969156760c32190995F9dC5b3eb7FA",
"sinceTimestamp": 1715799374,
"tokens": [
"WINR"
],
"contract": {
"isVerified": true,
"address": "arb1:0xF3f01622Ac969156760c32190995F9dC5b3eb7FA",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x802c7B6585d20cb69524EF23fCbF919F671F808a"
],
"implementations": [
"arb1:0xdF0eaCC3F37356DF320e5B5db16C7eD7A6b596dd"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1715799374,
"transactionHash": "0x42fc27511b05dc35424565463d5dd348283c330d05c963396ee1a68526ac56a5",
"implementations": [
"arb1:0x2a6DD4433ffa96dc1755814FC0d9cc83A5F68DeC"
]
},
{
"timestamp": 1745618146,
"transactionHash": "0xb219997f52a5ffaeb50fb6de4b69cefdd4f1844879a102820ce0878df63bc80b",
"implementations": [
"arb1:0xdF0eaCC3F37356DF320e5B5db16C7eD7A6b596dd"
]
}
],
"description": "Contract managing Inboxes and Outboxes. It escrows WINR sent to L2.",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"url": "https://arbiscan.io/address/0xF3f01622Ac969156760c32190995F9dC5b3eb7FA#code"
},
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
},
{
"address": "0x8E83aED64a0Ad5d7d3A57B6172F14FcA5bfADE56",
"sinceTimestamp": 1722608545,
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "Socket bridge",
"slug": "socket"
}
]
},
"tokens": [
"USDC.e"
],
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
},
{
"address": "0x6aDFbA9e45b5c1685007Fe48A784e971e412f839",
"sinceTimestamp": 1722608646,
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "Socket bridge",
"slug": "socket"
}
]
},
"tokens": [
"USDC"
],
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
},
{
"address": "0x8b961A67f49bc6334CBA09dbd70a2F14Fc8226a1",
"sinceTimestamp": 1722608661,
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "Socket bridge",
"slug": "socket"
}
]
},
"tokens": [
"WETH"
],
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
},
{
"address": "0x88FA3A8624065f3Bf2eDe507b6Fd554C58e5b785",
"sinceTimestamp": 1722608675,
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "Socket bridge",
"slug": "socket"
}
]
},
"tokens": [
"wBTC"
],
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
},
{
"address": "0x3222f0F281F1630C50f86fFaA29A29A06559eca8",
"sinceTimestamp": 1722608690,
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "Socket bridge",
"slug": "socket"
}
]
},
"tokens": [
"USDT"
],
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
},
{
"address": "0x0aE2F220cE9698b1c9853f7288aC882150291dca",
"sinceTimestamp": 1722608704,
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "Socket bridge",
"slug": "socket"
}
]
},
"tokens": [
"ETH"
],
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
},
{
"address": "0x023d27390aEd70aA39823A1e1e06a0b075400214",
"sinceTimestamp": 1724262320,
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "Socket bridge",
"slug": "socket"
}
]
},
"tokens": [
"ARB"
],
"chain": "arbitrum",
"includeInTotal": false,
"chainId": 42161
}
],
"programHashes": [
{
"title": "ArbOS wasmModuleRoot v40",
"description": "A commitment to the exact WASM binary version used for Orbit stack optimistic dispute games.",
"verificationStatus": "successful",
"programUrl": "https://github.com/OffchainLabs/nitro/tree/consensus-v40/arbos",
"verificationSteps": "L2BEAT team was able to independently regenerate this program hash. However currently the following steps for hash regeneration produce an error, so the process could not be independently verified.\n\n1. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/).\n2. Checkout the correct branch in [nitro](https://github.com/OffchainLabs/nitro) repo: `git checkout consensus-v40` . Commit hash should be `37ae61f20f8efdbc7e2f6af7f21c309bc09086a1`.\n3. Update git submodules `git submodule update --init --recursive --force`.\n4. Generate wasm module root in docker: `docker buildx build --target nitro-node-dev -t nitro-node-dev .`. Currently this step fails with an error.\n5. Export the value from the docker: `docker run --rm --entrypoint cat nitro-node-dev /home/user/target/machines/latest/module-root.txt`.",
"hash": "0xdb698a2576298f25448bc092e52cf13b1e24141c997135d70f217d674bbeb69a"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": []
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Verifier",
"isVerified": true,
"address": "eth:0x0775e11309d75aA6b0967917fB0213C5673eDf81",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies ZK proofs for state roots of this Layer 2 via the PolygonRollupManager.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0775e11309d75aA6b0967917fB0213C5673eDf81#code"
},
{
"name": "PolygonDataCommittee",
"isVerified": true,
"address": "eth:0x755e9A5B4BAEFc78Bb82BA7E6d2386CCB2F238a5",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x2B966b9824c11f274aa39f2f72cF25C4b47c3A78"
],
"implementations": [
"eth:0xAce9269EaC3419937093154dea0AD44C36Df6963"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720547183,
"transactionHash": "0xf72b5eafd4612b45278a8d49041d0736c6c4a6de6069160dec9a086e08027762",
"implementations": [
"eth:0xAce9269EaC3419937093154dea0AD44C36Df6963"
]
}
],
"description": "Manages the members of the data availability committee (DAC) and the threshold for accepting commitments from them (Currently 2/1).\n* Roles:\n * **admin**: ProxyAdmin; ultimately EOA 2\n * **owner**: EOA 1",
"upgradableBy": [
{
"id": "EOA-2",
"name": "EOA 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x755e9A5B4BAEFc78Bb82BA7E6d2386CCB2F238a5#code"
},
{
"name": "Validium",
"isVerified": true,
"address": "eth:0x78253E2E6120164bd826668A4C96Db20f78A94c9",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x427113ae6F319BfFb4459bfF96eb8B6BDe1A127F"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720089623,
"transactionHash": "0xb727fee71f71c51e9d5fe335b8c6382b80f576364002f5986149004578a16af9",
"implementations": [
"eth:0x10D296e8aDd0535be71639E5D1d1c30ae1C6bD4C"
]
},
{
"timestamp": 1758525947,
"transactionHash": "0x23960a8fc591368d7d73c22322e32c5c287f44cc412fd5ccd03916238f12400b",
"implementations": [
"eth:0x427113ae6F319BfFb4459bfF96eb8B6BDe1A127F"
]
}
],
"description": "The main system contract defining the pay-chain Layer 2 logic. Entry point for sequencing batches.\n* Roles:\n * **admin**: EOA 1\n * **forceBatchAddress**: EOA 4\n * **trustedSequencer**: EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x78253E2E6120164bd826668A4C96Db20f78A94c9#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 5, EOA 6\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x2B966b9824c11f274aa39f2f72cF25C4b47c3A78",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2B966b9824c11f274aa39f2f72cF25C4b47c3A78#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1679653127,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherPreminted",
"premintedAmount": "340282366920938463463374607431768211455"
},
"chainId": 1
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 3d delay on code upgrades unless upgrade is initiated by the PolygonSecurityCouncil in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0x0775e11309d75aA6b0967917fB0213C5673eDf81"
]
}
+1 -1
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Verifier",
"isVerified": true,
"address": "eth:0x0775e11309d75aA6b0967917fB0213C5673eDf81",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies ZK proofs for state roots of this Layer 2 via the PolygonRollupManager.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0775e11309d75aA6b0967917fB0213C5673eDf81#code"
},
{
"name": "Validium",
"isVerified": true,
"address": "eth:0x42Ac57F24EC4C3AAC843f6DBAcd9282DAaeE9238",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x10D296e8aDd0535be71639E5D1d1c30ae1C6bD4C"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1718558735,
"transactionHash": "0x059ddb2af7337bacc9f85aed058936b67c1c439d56744b05336952c1792d811d",
"implementations": [
"eth:0x10D296e8aDd0535be71639E5D1d1c30ae1C6bD4C"
]
}
],
"description": "The main system contract defining the witnesschain Layer 2 logic. Entry point for sequencing batches.\n* Roles:\n * **admin**: EOA 1\n * **forceBatchAddress**: EOA 1\n * **trustedSequencer**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x42Ac57F24EC4C3AAC843f6DBAcd9282DAaeE9238#code"
},
{
"name": "PolygonDataCommittee",
"isVerified": true,
"address": "eth:0xB0FD8Ba20B1C178b14Dd2a02f4e72c03fdA626f8",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x8cC10554B5C7D322E6a7F33CBb584c7C5fdBA039"
],
"implementations": [
"eth:0xD26B535AD58715C4c2ffFAC32908b13674533DAe"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1718630207,
"transactionHash": "0x189f2f8a9bf53ece3537b3b9a10ec0a98d7e6b506c2fa368cf818e2344f7b9ad",
"implementations": [
"eth:0xD26B535AD58715C4c2ffFAC32908b13674533DAe"
]
}
],
"description": "Manages the members of the data availability committee (DAC) and the threshold for accepting commitments from them (Currently 2/1).\n* Roles:\n * **admin**: ProxyAdmin; ultimately EOA 3\n * **owner**: EOA 1",
"upgradableBy": [
{
"id": "EOA-3",
"name": "EOA 3",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xB0FD8Ba20B1C178b14Dd2a02f4e72c03fdA626f8#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 4, EOA 5\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x8cC10554B5C7D322E6a7F33CBb584c7C5fdBA039",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EOA 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8cC10554B5C7D322E6a7F33CBb584c7C5fdBA039#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 3d delay on code upgrades unless upgrade is initiated by the PolygonSecurityCouncil in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0x0775e11309d75aA6b0967917fB0213C5673eDf81"
]
}
+94 -66
+1 -1
{
"architectureImage": "xlayer",
"dataAvailability": [
{
"name": "Data is posted on Ethereum",
"description": "Transaction data is posted to Ethereum L1 as compressed calldata or blobs through the OP Stack batch inbox.",
"risks": [],
"references": []
}
],
"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 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": []
},
"otherConsiderations": [
{
"name": "Agglayer shared bridge and OP Stack state validation",
"description": "X Layer uses OP Stack dispute games for state validation and withdrawal finalization. Separately, the Agglayer shared bridge uses pessimistic proofs to constrain cross-chain bridge accounting for assets in the shared bridge.",
"risks": [
{
"category": "Funds can be lost if",
"text": "the Agglayer pessimistic proof system for shared bridge accounting is implemented incorrectly."
},
{
"category": "Funds can be frozen if",
"text": "the OP Succinct Lite proof system or verifier gateway cannot accept valid proofs during a challenge."
}
],
"references": [
{
"title": "Pessimistic Proof - Polygon Knowledge Layer",
"url": "https://docs.polygon.technology/cdk/concepts/pessimistic-proofs"
}
]
}
],
"stateValidation": {
"categories": [
{
"title": "Fraud proofs",
"description": "State roots are proposed by whitelisted proposers who create dispute games via the DisputeGameFactory by posting a bond of 0.00000001 ETH. Once created, the game enters a challenge period of 1h during which whitelisted challengers can dispute the proposal by posting a bond of 0.00000001 ETH. If challenged, anyone can submit a ZK proof to prove the correct state within the proving period of 7d. After the challenge period passes without a successful challenge, or after a valid proof is submitted, anyone can resolve the game and finalize the state root.",
"references": [
{
"title": "OP Succinct Lite architecture",
"url": "https://succinctlabs.github.io/op-succinct/fault_proofs/fault_proof_architecture.html"
},
{
"title": "OPSuccinctFaultDisputeGame.sol - Etherscan source code",
"url": "https://etherscan.io/address/0x8841FA06099FEdfE7DB6962926C6A281e9E1e607#code"
},
{
"title": "SP1VerifierGateway.sol - Etherscan source code",
"url": "https://etherscan.io/address/0x397A5f7f3dBd538f23DE225B51f532c34448dA9B#code"
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "the validity proof cryptography is broken or implemented incorrectly."
},
{
"category": "Funds can be stolen if",
"text": "no whitelisted challenger disputes an invalid state root before the challenge window expires."
},
{
"category": "Funds can be stolen if",
"text": "the SP1 verifier gateway owner routes proof verification through a malicious or faulty verifier."
},
{
"category": "Funds can be frozen if",
"text": "the permissioned proposer fails to publish state roots to L1."
}
]
}
]
},
"stateValidationImage": "opsuccinct",
"upgradesAndGovernance": {
"content": "The regular upgrade process for shared system contracts and L2-specific validium contracts 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 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. Chains using pessimistic proofs often have completely sovereign upgrade paths from the ones described here, but the shared contracts still remain relevant to them because they use them as escrow.\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 Aggchain can manage their chain by choosing the trusted sequencer, manage forced batches and set the data availability config. For sovereign chains using pessimistic proofs they can manage any proof logic that might be used on top of the minimal pessimistic one. 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.",
"image": "agglayer"
}
}
+1 -1
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "Xlayer Multisig",
"name": "Xlayer Multisig",
"description": "A Multisig with 2/3 threshold. \n* Can upgrade **with no delay**\n * AnchorStateRegistry [via: ProxyAdmin]\n * DelayedWETH [via: ProxyAdmin]\n * SystemConfig [via: ProxyAdmin]\n * OptimismMintableERC20Factory [via: ProxyAdmin]\n * OptimismPortal2 [via: ProxyAdmin]\n * L1ERC721Bridge_neutered [via: ProxyAdmin]\n * DisputeGameFactory [via: ProxyAdmin]\n * L1StandardBridge_neutered [via: ProxyAdmin]\n * L1CrossDomainMessenger [via: ProxyAdmin]\n* Can interact with AddressManager\n * set and change address mappings [via: ProxyAdmin]",
"accounts": [
{
"address": "eth:0xC290bE56089BCC83c6993583ce2cF51a7951D45A",
"type": "Contract",
"isVerified": true,
"name": "0xC290…D45A",
"url": "https://etherscan.io/address/0xC290bE56089BCC83c6993583ce2cF51a7951D45A"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x6eE7BDa7AF04F61ccf93aB4b8DB2289aBe76C6aA",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-3"
},
{
"address": "eth:0xD3C6821DE67A5c0345EC5A41e4C83739f7043972",
"type": "EOA",
"isVerified": true,
"name": "0xD3C6…3972",
"url": "https://etherscan.io/address/0xD3C6821DE67A5c0345EC5A41e4C83739f7043972"
},
{
"address": "eth:0x11CAA37c9e9Da2621bB45Af77cB7debEE3881d2E",
"type": "EOA",
"isVerified": true,
"name": "0x11CA…1d2E",
"url": "https://etherscan.io/address/0x11CAA37c9e9Da2621bB45Af77cB7debEE3881d2E"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "SP1VerifierGatewayMultisig",
"name": "SP1VerifierGatewayMultisig",
"description": "A Multisig with 2/3 threshold. \n* Can interact with SP1VerifierGateway\n * affect the liveness and safety of the gateway - can transfer ownership, add and freeze verifier routes ",
"description": "A Multisig with 2/3 threshold. \n* Can interact with SP1VerifierGatewayOlder\n * affect the liveness and safety of the gateway - can transfer ownership, add and freeze verifier routes ",
"accounts": [
{
"address": "eth:0xCafEf00d348Adbd57c37d1B77e0619C6244C6878",
"type": "Contract",
"isVerified": true,
"name": "0xCafE…6878",
"url": "https://etherscan.io/address/0xCafEf00d348Adbd57c37d1B77e0619C6244C6878"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126",
"type": "EOA",
"isVerified": true,
"name": "0xBaB2…1126",
"url": "https://etherscan.io/address/0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x9395e83720bf2D8ac6435f9c520b48E289Cb8885",
"type": "EOA",
"isVerified": true,
"name": "0x9395…8885",
"url": "https://etherscan.io/address/0x9395e83720bf2D8ac6435f9c520b48E289Cb8885"
}
],
"discoveryDrivenData": true
},
{
"id": "OwnerContract",
"name": "OwnerContract",
"accounts": [
{
"address": "eth:0xe58C365Da30c746204022e61482bBE828cAA9091",
"type": "Contract",
"isVerified": false,
"name": "0xe58C…9091",
"url": "https://etherscan.io/address/0xe58C365Da30c746204022e61482bBE828cAA9091"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * SuperchainConfig [via: ProxyAdmin]",
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x491619874b866c3cDB7C8553877da223525ead01",
"type": "EOA",
"isVerified": true,
"name": "0x4916…ad01",
"url": "https://etherscan.io/address/0x491619874b866c3cDB7C8553877da223525ead01",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sole address that can force batches ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x610DE9141a2c51A9A9624278AA97fbE54b27c102",
"type": "EOA",
"isVerified": true,
"name": "0x610D…c102",
"url": "https://etherscan.io/address/0x610DE9141a2c51A9A9624278AA97fbE54b27c102",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sign state transitions (replaces state validation for this aggchain) ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x6eE7BDa7AF04F61ccf93aB4b8DB2289aBe76C6aA",
"type": "EOA",
"isVerified": true,
"name": "0x6eE7…C6aA",
"url": "https://etherscan.io/address/0x6eE7BDa7AF04F61ccf93aB4b8DB2289aBe76C6aA",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "Member of Xlayer Multisig.\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 AccessManager\n * Allowed to add or remove proposers and challengers, and transfer ownership of the AccessManager ",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0x98245d0ADF4595C66F0a9Db8E13c44CBFF6be459",
"type": "EOA",
"isVerified": true,
"name": "0x9824…e459",
"url": "https://etherscan.io/address/0x98245d0ADF4595C66F0a9Db8E13c44CBFF6be459",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with SystemConfig\n * Allowed to commit transactions from the current layer to the host chain ",
"discoveryDrivenData": true
},
{
"id": "EOA-5",
"name": "EOA 5",
"accounts": [
{
"address": "eth:0xa90B4C8B8807569980F6cC958c8905383136B5eA",
"type": "EOA",
"isVerified": true,
"name": "0xa90B…B5eA",
"url": "https://etherscan.io/address/0xa90B4C8B8807569980F6cC958c8905383136B5eA",
"displayName": "EOA 5"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * set the trusted sequencer address ",
"discoveryDrivenData": true
},
{
"id": "EOA-6-and-EOA-7",
"name": "EOA 6 and EOA 7",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 6"
},
{
"address": "eth:0xD7e6c31750838Ef895fBe0c57f7Fd881a14482Fb",
"type": "EOA",
"isVerified": true,
"name": "0xD7e6…82Fb",
"url": "https://etherscan.io/address/0xD7e6c31750838Ef895fBe0c57f7Fd881a14482Fb",
"displayName": "EOA 7"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
},
{
"id": "EOA-8",
"name": "EOA 8",
"accounts": [
{
"address": "eth:0x736E68Af2CbF2aB0E46E4310fE5Ae568b3642FF6",
"type": "EOA",
"isVerified": true,
"name": "0x736E…2FF6",
"url": "https://etherscan.io/address/0x736E68Af2CbF2aB0E46E4310fE5Ae568b3642FF6",
"displayName": "EOA 8"
}
],
"chain": "ethereum",
"description": "* Can interact with AccessManager\n * Allowed to challenge or delete state roots proposed by a Proposer \n* Can interact with PermissionedDisputeGame\n * Allowed to challenge or delete state roots proposed by a Proposer ",
"discoveryDrivenData": true
},
{
"id": "EOA-9",
"name": "EOA 9",
"accounts": [
{
"address": "eth:0xE43944421681170648E10007f73816e04F74394F",
"type": "EOA",
"isVerified": true,
"name": "0xE439…394F",
"url": "https://etherscan.io/address/0xE43944421681170648E10007f73816e04F74394F",
"displayName": "EOA 9"
}
],
"chain": "ethereum",
"description": "* Can interact with AccessManager\n * Allowed to post new state roots of the current layer to the host chain \n* Can interact with PermissionedDisputeGame\n * Allowed to post new state roots of the current layer to the host chain ",
"discoveryDrivenData": true
}
]
}
}
+92 -64
{
"addresses": {
"ethereum": [
{
"name": "AggchainECDSAMultisig",
"isVerified": true,
"address": "eth:0x2B0ee28D4D51bC9aDde5E58E295873F61F4a0507",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
],
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1711785755,
"transactionHash": "0x35215d1a6f4ad41bedfbfc481d53b9d508864a6ace025f243264978e1a755f81",
"implementations": [
"eth:0x10D296e8aDd0535be71639E5D1d1c30ae1C6bD4C"
]
},
{
"timestamp": 1736257283,
"transactionHash": "0x9d23f56225d22a2a1b82c2aa6122b1a29896686b30bb1f3def0189043699d46f",
"implementations": [
"eth:0x427113ae6F319BfFb4459bfF96eb8B6BDe1A127F"
]
},
{
"timestamp": 1754397707,
"transactionHash": "0xab579dbf426db0badfaef925504105088f3300b51f1362a4084c57d7e13c0fb1",
"implementations": [
"eth:0x18C45DD422f6587357a6d3b23307E75D42b2bc5B"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x0D49fD0d79723e4D24AaC83f604ED2D3d5fC0f21"
]
}
],
"description": "System contract defining the X Layer Aggchain logic. It only enforces bridge accounting (pessimistic) proofs to protect the shared bridge while the Aggchain state transitions are not proven. They must instead be signed by 1 aggchainSigner(s).\n* Roles:\n * **admin**: EOA 5\n * **aggchainSigners**: EOA 2\n * **forceBatchAddress**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2B0ee28D4D51bC9aDde5E58E295873F61F4a0507#code"
},
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0x5065809Af286321a05fBF85713B5D5De7C8f0433",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6"
],
"implementations": [
"eth:0xfCA51bf5bDc5aC16B86F859d6BEe90cfdF6fEb72"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1761567143,
"transactionHash": "0x548809f75e4988d16e41bd323e76519cf64ad325a7840911cdf865f67ffd284f",
"implementations": [
"eth:0xee63dC4B835b2790A171fd0149566B1D51E5ae73"
]
},
{
"timestamp": 1764577007,
"transactionHash": "0xdfa2991d716c87991504d3a2e76fd06bc0c7cd2db5d2ce83d910aaf184123487",
"implementations": [
"eth:0xfCA51bf5bDc5aC16B86F859d6BEe90cfdF6fEb72"
]
}
],
"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 Xlayer Multisig\n * **batcherHash**: EOA 4\n * **owner**: EOA 3",
"upgradableBy": [
{
"name": "Xlayer Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5065809Af286321a05fBF85713B5D5De7C8f0433#code"
},
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0x64057ad1DdAc804d0D26A7275b193D9DACa19993",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6"
],
"implementations": [
"eth:0xa0fEfC3A457F6A1aE2d81FC172D6dE090a9F4033"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1761567143,
"transactionHash": "0x548809f75e4988d16e41bd323e76519cf64ad325a7840911cdf865f67ffd284f",
"implementations": [
"eth:0xa0fEfC3A457F6A1aE2d81FC172D6dE090a9F4033"
]
}
],
"description": "Central message and gas token (dOKB) bridge of the OP stack part of this deployment. It finalizes withdrawals against the currently respected OP Succinct Lite dispute game and allows forced transactions.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Xlayer Multisig",
"upgradableBy": [
{
"name": "Xlayer Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x64057ad1DdAc804d0D26A7275b193D9DACa19993#code"
},
{
"name": "DisputeGameFactory",
"isVerified": true,
"address": "eth:0x9D4c8FAEadDdDeeE1Ed0c92dAbAD815c2484f675",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6"
],
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1761567143,
"transactionHash": "0x548809f75e4988d16e41bd323e76519cf64ad325a7840911cdf865f67ffd284f",
"implementations": [
"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50"
]
}
],
"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 Xlayer Multisig",
"upgradableBy": [
{
"name": "Xlayer Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9D4c8FAEadDdDeeE1Ed0c92dAbAD815c2484f675#code"
},
{
"name": "AgglayerGateway",
"isVerified": true,
"address": "eth:0x046Bb8bb98Db4ceCbB2929542686B74b516274b3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750087643,
"transactionHash": "0xe7c64d567589723d0920e6104296a434fb24193d2ccd33814d0b3fd753be5db2",
"implementations": [
"eth:0x7bB0e8f1950722694929dB392abA805AAc6e9346"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0xD062B7f9fbB89bdA59262E77015C34a27Dc9aB49"
]
}
],
"description": "A verifier gateway for pessimistic proofs. Manages a map of chains and their verifier keys and is used to route proofs based on the first 4 bytes of proofBytes data in a proof submission. The SP1 verifier is used for all proofs.\n* Roles:\n * **addPpRoute**: Timelock; ultimately PolygonAdminMultisig\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **aggchainDefaultVKey**: PolygonAdminMultisig\n * **alMultisig**: PolygonAdminMultisig\n * **freezePpRoute**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x046Bb8bb98Db4ceCbB2929542686B74b516274b3#code"
},
{
"name": "AgglayerBridge",
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"description": "The shared bridge contract, escrowing user funds sent to Agglayer chains. It is usually mirrored on each chain and can be used to transfer both ERC20 assets and arbitrary messages.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **proxiedTokensManager**: Timelock; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
{
"name": "AgglayerManager",
"isVerified": true,
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653163,
"transactionHash": "0xe34243804e1f7257acb09c97d0d6f023663200c39ee85a1e6927b0b391710bbb",
"implementations": [
"eth:0xe262Ea2782e2e8dbFe354048c3B5d6DE9603EfEF"
]
},
{
"timestamp": 1695198635,
"transactionHash": "0x25c342d7c5b4137b5439c16fd5fa1577c116277859202b2c68fcd9f73b3fc2ac",
"implementations": [
"eth:0x301442aA888701c8B86727d42F3C55Fb0dd9eF7F"
]
},
{
"timestamp": 1699521779,
"transactionHash": "0x1db1400138d6778d303b9a13e816432d11f8dfca00ef6ec6ffcb6698cb447a31",
"implementations": [
"eth:0xb1585916487AcEdD99952086f2950763D253b923"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x3b82Da772c825283d85d5d6717A77C6Ff582053b"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x103388f5661d224F4aFb555C7E4a8FB52d0b752d"
]
},
{
"timestamp": 1738594559,
"transactionHash": "0xb499c5a8f315d72886e44eabcbf6428fb9672f3ea8eb55adcbfda0ae0612233e",
"implementations": [
"eth:0xA33619940bceb9be7c9679Dd80FA2918C2476382"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x9ab2cB2107d3E737f7977B2E5042C58dE98326ab"
]
},
{
"timestamp": 1753882523,
"transactionHash": "0x289865ea6d92cdf5be21123b6ce61447f500ba14c229f02153113f8419af1695",
"implementations": [
"eth:0x42B9fF0644741e3353162678596e7D6aA6a13240"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x15cAF18dEd768e3620E0f656221Bf6B400ad2618"
]
}
],
"description": "The central shared managing contract for Polygon Agglayer chains. This contract coordinates chain deployments and proof validation. All connected Layer 2s can be globally paused by activating the 'Emergency State'. This can be done by the PolygonSecurityCouncil or by anyone after 1 week of inactive verifiers.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig\n * **createRollup**: PolygonAdminMultisig, PolygonCreateRollupMultisig\n * **defaultAdmin**: Timelock; ultimately PolygonAdminMultisig\n * **emergencyCouncilAdmin**: PolygonSecurityCouncil\n * **trustedAggregator**: EOA 6, EOA 7\n * **tweakParameters**: PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2#code"
},
{
"name": "AgglayerGER",
"isVerified": true,
"address": "eth:0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653151,
"transactionHash": "0x9946be78d6c6d19dd1c6c7134a8fac27e76d32cad36dae2398d28fe6ff838f10",
"implementations": [
"eth:0xbc1ea504fC54D078514eFCCA1F6860B5219B6BC3"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x2E38cD55163137483E30580Cb468C2dFf1d85077"
]
},
{
"timestamp": 1730286719,
"transactionHash": "0x8c1be5b5d844d6e04b2c224cd810cda091d70e6d5c2e5e0464993f7df1ab8403",
"implementations": [
"eth:0x9Bdda421219900454E94e01d641fE64c60D8f4C8"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0xc38C76aE3C8A7dee99d07f1A39246ABe18919a48"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x7F1655d9d570167B2a3FfD1Ef809D3Fdd74427C5"
]
}
],
"description": "A merkle tree storage contract aggregating state roots of each participating Layer 2, thus creating a single global merkle root representing the global state of the Agglayer, the 'global exit root'. The global exit root is synchronized to all connected Layer 2s to help with their interoperability.\n* Roles:\n * **admin**: SharedProxyAdmin; ultimately PolygonAdminMultisig",
"upgradableBy": [
{
"name": "PolygonAdminMultisig",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x580bda1e7A0CFAe92Fa7F6c20A3794F169CE3CFb#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. In the case of an activated emergency state in the AgglayerManager, all transactions through this timelock are immediately executable. The current minimum delay is 3d.\n* Roles:\n * **timelockAdmin**: PolygonAdminMultisig (no delay if in emergency state), Timelock (no delay if in emergency state); ultimately PolygonAdminMultisig (no delay if in emergency state)",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0xF94B553F3602a03931e5D10CaB343C0968D793e3",
"upgradeability": {
"proxyType": "resolved delegate proxy",
"admins": [
"eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6"
],
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1761567143,
"transactionHash": "0x548809f75e4988d16e41bd323e76519cf64ad325a7840911cdf865f67ffd284f",
"implementations": [
"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0"
]
}
],
"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 Xlayer Multisig",
"upgradableBy": [
{
"name": "Xlayer Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF94B553F3602a03931e5D10CaB343C0968D793e3#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0x000590BB65ab1864a7AD46d6B957cC9a4F2C149d",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6"
],
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1761567143,
"transactionHash": "0x548809f75e4988d16e41bd323e76519cf64ad325a7840911cdf865f67ffd284f",
"implementations": [
"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E"
]
}
],
"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 OPSuccinctFaultDisputeGame. Variant for chains using OPSuccinct (SP1) games instead of Cannon, which omits Cannon-specific cross-contract fields (vm, oracle, weth, challengePeriod, absolutePrestate from game).\n* Roles:\n * **admin**: ProxyAdmin; ultimately Xlayer Multisig",
"upgradableBy": [
{
"name": "Xlayer Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x000590BB65ab1864a7AD46d6B957cC9a4F2C149d#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0x1B8A252A71bC8997d3871aF420895B5845212fC6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6"
],
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1761567143,
"transactionHash": "0x548809f75e4988d16e41bd323e76519cf64ad325a7840911cdf865f67ffd284f",
"implementations": [
"eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998"
]
}
],
"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 Xlayer Multisig",
"upgradableBy": [
{
"name": "Xlayer Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1B8A252A71bC8997d3871aF420895B5845212fC6#code"
},
{
"name": "PreimageOracle",
"isVerified": true,
"address": "eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3",
"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",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0x305D1C0EED9a0291686f3BfDf1F5E54aaeeF80e4",
"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/0x305D1C0EED9a0291686f3BfDf1F5E54aaeeF80e4#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Xlayer Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x397A5f7f3dBd538f23DE225B51f532c34448dA9B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x397A5f7f3dBd538f23DE225B51f532c34448dA9B#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5#code"
},
{
"name": "OptimismMintableERC20Factory",
"isVerified": true,
"address": "eth:0x62e1Aaeba9A8AA4654980653dB4B21FC82C61c15",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6"
],
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1761567143,
"transactionHash": "0x548809f75e4988d16e41bd323e76519cf64ad325a7840911cdf865f67ffd284f",
"implementations": [
"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB"
]
}
],
"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 Xlayer Multisig",
"upgradableBy": [
{
"name": "Xlayer Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x62e1Aaeba9A8AA4654980653dB4B21FC82C61c15#code"
},
{
"name": "L1ERC721Bridge_neutered",
"isVerified": true,
"address": "eth:0x85d37236f063C687d056b3604CBEe4B60d124858",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6"
],
"implementations": [
"eth:0xFbd06fCb2a023d89a7ae9BeE89d157C5264cf42b"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1761567143,
"transactionHash": "0x548809f75e4988d16e41bd323e76519cf64ad325a7840911cdf865f67ffd284f",
"implementations": [
"eth:0xFbd06fCb2a023d89a7ae9BeE89d157C5264cf42b"
]
}
],
"description": "Used to bridge ERC-721 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Xlayer Multisig",
"upgradableBy": [
{
"name": "Xlayer Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x85d37236f063C687d056b3604CBEe4B60d124858#code"
},
{
"name": "OPSuccinctFaultDisputeGame",
"isVerified": true,
"address": "eth:0x8841FA06099FEdfE7DB6962926C6A281e9E1e607",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Logic of the dispute game. When a state root is proposed, a dispute game contract is deployed. Challengers can use such contracts to challenge the proposed state root.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8841FA06099FEdfE7DB6962926C6A281e9E1e607#code"
},
{
"name": "AccessManager",
"isVerified": true,
"address": "eth:0x98BA64d8c8Dd33bD75F2154214BFd849d0D5c17B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract managing access control for proposers and challengers in OPSuccinct.\n* Roles:\n * **challengers**: EOA 8\n * **owner**: EOA 3\n * **proposers**: EOA 9",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x98BA64d8c8Dd33bD75F2154214BFd849d0D5c17B#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508#code"
},
{
"name": "L1StandardBridge_neutered",
"isVerified": true,
"address": "eth:0xAecF995ABf9E7eDE7ae0CE65E60622C9eD84823a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6"
],
"implementations": [
"eth:0x2978527d5D1372C32fEdC182FDE7559c0471d051"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "This OP stack bridge contract has been modified to disallow ETH and ERC-20 bridging.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Xlayer Multisig",
"upgradableBy": [
{
"name": "Xlayer Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xAecF995ABf9E7eDE7ae0CE65E60622C9eD84823a#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xb69f2584CBcFf99a58C4e7002E8b89Af54a6f4e2",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb69f2584CBcFf99a58C4e7002E8b89Af54a6f4e2#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xC6901aBf8D39079d6b028dA550BB643f10840552",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: OwnerContract",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC6901aBf8D39079d6b028dA550BB643f10840552#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0xEeDa796a23bc98726e47934ca9B54fDDa5a608e8",
"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**: EOA 8\n * **proposer**: EOA 9",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEeDa796a23bc98726e47934ca9B54fDDa5a608e8#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SharedProxyAdmin",
"isVerified": true,
"address": "eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A#code"
},
{
"name": "BridgeLib",
"isVerified": true,
"address": "eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Extension contract of the AgglayerBridge for asset metadata..\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459#code"
},
{
"name": "SP1VerifierGatewayOlder",
"isVerified": true,
"address": "eth:0x397A5f7f3dBd538f23DE225B51f532c34448dA9B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"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* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x397A5f7f3dBd538f23DE225B51f532c34448dA9B#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v5.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.0.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xb69f2584CBcFf99a58C4e7002E8b89Af54a6f4e2",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb69f2584CBcFf99a58C4e7002E8b89Af54a6f4e2#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
}
]
},
"escrows": [
{
"address": "0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"sinceTimestamp": 1712620800,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A"
],
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1679653127,
"transactionHash": "0x28f93532243dd8a8cc92ce630ef1920f40de15af7db2903efbf42f21fdf8152c",
"implementations": [
"eth:0x5ac4182A1dd41AeEf465E40B82fd326BF66AB82C"
]
},
{
"timestamp": 1707822059,
"transactionHash": "0xb83824c7eb1e87bd12222d98cf1cbff317b0853ba1e5beda1e3e3d8a4cfd1b24",
"implementations": [
"eth:0x0FeB850B183C57534b56b7d56520133C8f9BDB65"
]
},
{
"timestamp": 1750689983,
"transactionHash": "0xcdd772d0b4764da67b80a72af2da7230f4f70f8c810cb8c4fe3882b8c4506ff3",
"implementations": [
"eth:0x75D28BfDfF93B3e4f20184b442d2634DC01cA48b"
]
},
{
"timestamp": 1761747071,
"transactionHash": "0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939",
"implementations": [
"eth:0x66E0120e3c965552a89AcC37b03f762624baC5Ad"
]
}
],
"url": "https://etherscan.io/address/0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "AggLayer",
"nativeAsset": "etherWrapped",
"wethAddress": "0x5A77f1443D16ee5761d310e38b62f77f726bC71c",
"tokensToAssignFromL1": [
"OKB"
]
},
"chainId": 1
}
],
"programHashes": [
{
"title": "Pessimistic program of agglayer 0.3.3-post4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct branch in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.3.3-post.4`. Commit hash should be `df072abc86fa89e12b17204246325983272a1141`\n2. Make sure docker is running by running `docker ps`\n3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer v0.4.4",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.4.4`. Commit hash should be `caac9f06bc7cb1cf89912dbb4dffa4d594a00bd5`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
},
{
"title": "Pessimistic program of agglayer v0.5.1",
"description": "Verifies that a chain connected to Polygon Agglayer does not bridge out more tokens that were bridged in, thus preventing stealing tokens from other Agglayer chains. Also verifies aggchain proof for this chain.",
"proverSystemProject": "sp1turbo",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.5.1/crates/pessimistic-proof",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install cargo make: `cargo install --debug --locked cargo-make`\n2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n\nVerify:\n\n1. Checkout the correct tag in [agglayer repo](https://github.com/agglayer/agglayer/tree/main): `git checkout v0.5.1`. Commit hash should be `f7bb86695b03d363c3d0d15ff7f2d8b386e58c91`.\n2. Make sure docker is running by running `docker ps`.\n3. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources.\n4. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv64im-succinct-zkvm-elf` to check the verification key of this elf.",
"hash": "0x00d14f977a6ec393014f300ad78d0761dc29435d3fa1e2626fa466bd3343578e"
},
{
"title": "Aggregation program of OP Succinct Lite",
"description": "Aggregates proofs of correct execution for several consecutive block ranges of OP L2 client in fault dispute proof mode. Data availability layer is set to Ethereum blobs.",
"proverSystemProject": "sp1hypercube",
"verificationStatus": "notVerified",
"hash": "0x00d9be2980d484ba29aaa1e0d27648b8182df8616a4ec85c3c2b528b29d1a085"
},
{
"title": "Range program of OP Succinct Lite",
"description": "Proves correct state transition function within an OP L2 client over a range of consecutive L2 blocks in fault dispute proof mode. Data availability layer is set to Ethereum blobs.",
"proverSystemProject": "sp1hypercube",
"verificationStatus": "notVerified",
"hash": "0x464b1e81672b12e60eb509f54a13aaa877abafda1a015a9339285a381e4146fc"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
},
{
"category": "Funds can be stolen if",
"text": "the source code of unverified contracts contains malicious code.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x0459d576A6223fEeA177Fb3DF53C9c77BF84C459",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"eth:0x50ACFBEdecf4cbe350E1a86fC6f03a821772f1e5",
"eth:0x99A74A05a0FaBEB217C1A329b0dac59a1FA52508",
"eth:0xb69f2584CBcFf99a58C4e7002E8b89Af54a6f4e2"
"eth:0x8a0fd5e825D14368d90Fe68F31fceAe3E17AFc5C"
]
}