5667b32e (main)
and
a4c9c235 (PR)
+2 -2
+2 -2
{
"addresses": {
"ethereum": [
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0x89E31965D844a309231B1f17759Ccaf1b7c09861",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x9c61C5a8FF9408B83ac92571278550097A9d2BB5"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0x5852f5888f0563ac1d7e3bf2b566e63fa981394e24b9753a41416a2ba6bdbfbc",
"implementations": [
"eth:0x7b5a84F818B6fC3F079EE87c214F369062188D2A"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x911EA44d22EB903515378625dA3a0E09D2E1B074"
]
},
{
"timestamp": 1751884031,
"transactionHash": "0xa9816c6dcbbe126e3b5c56f26ecfeebcb2dc03ab78535a7d5ed2bcdeea7ccf39",
"implementations": [
"eth:0x9c61C5a8FF9408B83ac92571278550097A9d2BB5"
]
}
],
"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**: CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x89E31965D844a309231B1f17759Ccaf1b7c09861#code"
},
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0xc5c5D157928BDBD2ACf6d0777626b6C75a9EAEDC",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x215A5fF85308A72A772F09B520dA71D3520e9aC7"
]
},
"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"
]
}
],
"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/eth:0xc5c5D157928BDBD2ACf6d0777626b6C75a9EAEDC#code"
},
{
"name": "DisputeGameFactory",
"isVerified": true,
"address": "eth:0xFbAC162162f4009Bb007C6DeBC36B1dAC10aF683",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0xb42846aca12a846645e69e61c48c9b8de7078117c710ff124b04c18f735fbc5e",
"implementations": [
"eth:0xe8b013bEE7Bd603e2f0B4825638559d645A4C4CB"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0"
]
}
],
"description": "The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\n* Roles:\n * **admin**: ProxyAdmin; ultimately CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xFbAC162162f4009Bb007C6DeBC36B1dAC10aF683#code"
},
{
"name": "SuperchainConfigLocal",
"isVerified": true,
"address": "eth:0xa440975E5A6BB19Bc3Bee901d909BB24b0f43D33",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x693cFD911523ccaE1a14AdE2501ae4a0A463b446"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879559,
"transactionHash": "0x427e785add84f7429e78dc82c39e2b3b6e2c3e224f8abd6f4b67795f16e45357",
"implementations": [
"eth:0x693cFD911523ccaE1a14AdE2501ae4a0A463b446"
]
}
],
"description": "A local contract acting as source of truth for the paused status and the guardian role for the local chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately CeloProxyAdminOwner\n * **guardian**: EOA 2\n * **superchainConfig**: SuperchainConfig if the (global) SuperchainConfig is paused",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xa440975E5A6BB19Bc3Bee901d909BB24b0f43D33#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0x1AC1181fc4e4F877963680587AEAa2C90D7EbB95",
"upgradeability": {
"proxyType": "resolved delegate proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x807124F75FF2120b2f26D7e6f9e39C03ee9DE212"
],
"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"
]
}
],
"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/eth:0x1AC1181fc4e4F877963680587AEAa2C90D7EbB95#code"
},
{
"name": "L1ERC721Bridge",
"isVerified": true,
"address": "eth:0x3C519816C5BdC0a0199147594F83feD4F5847f13",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0x088ae685dbdd16320c9d3f99e7feea6c823156f69ab0da7dc48ce6c38498c55e",
"implementations": [
"eth:0xad5D111e961A5E451C8172034115bcc0551b6551"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x276d3730f219f7ec22274f7263180b8452B46d47"
]
},
{
"timestamp": 1751884031,
"transactionHash": "0xa9816c6dcbbe126e3b5c56f26ecfeebcb2dc03ab78535a7d5ed2bcdeea7ccf39",
"implementations": [
"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013"
]
}
],
"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/eth:0x3C519816C5BdC0a0199147594F83feD4F5847f13#code"
},
{
"name": "L1StandardBridge",
"isVerified": true,
"address": "eth:0x9C4955b92F34148dbcfDCD82e9c9eCe5CF2badfe",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x28841965B26d41304905A836Da5C0921DA7dBB84"
]
},
"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/eth: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/eth: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/eth: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/eth:0x057898f3C43F129a17517B9056D23851F124b19f#code"
},
{
"name": "OPSuccinctFaultDisputeGame",
"isVerified": true,
"address": "eth:0x113f434f82FF82678AE7f69Ea122791FE1F6b73e",
"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/eth:0x113f434f82FF82678AE7f69Ea122791FE1F6b73e#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/eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0x25c2e07A24a74F9FA54f7CA5ddAfedB2264a5d02",
"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/eth:0x25c2e07A24a74F9FA54f7CA5ddAfedB2264a5d02#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/eth: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/eth:0x543bA4AADBAb8f9025686Bd03993043599c6fB04#code"
},
{
"name": "OptimismMintableERC20Factory",
"isVerified": true,
"address": "eth:0x6f0E4f1EB98A52EfaCF7BE11d48B9d9d6510A906",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x5493f4677A186f64805fe7317D6993ba4863988F"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0x0297053983c066511596ec9542fd1d217b46039efc3d729f4e4468ecfff47b6b",
"implementations": [
"eth:0x0B3004b843dA84FE5D4C46AeB5E80F826e5CD69A"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x5493f4677A186f64805fe7317D6993ba4863988F"
]
}
],
"description": "A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintableERC20 as this chain's representation of a token on the host chain, or vice-versa.\n* Roles:\n * **admin**: ProxyAdmin; ultimately CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x6f0E4f1EB98A52EfaCF7BE11d48B9d9d6510A906#code"
},
{
"name": "DeputyPauseModule",
"isVerified": true,
"address": "eth:0x76fC2F971FB355D0453cF9F64d3F9E4f640E1754",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Allows 0x352f1defB49718e7Ea411687E850aA8d6299F7aC, 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/eth: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/eth:0x783A434532Ee94667979213af1711505E8bFE374#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0x9c314E8057025F2982aa4B3923Abd741A8e8DE91",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x1e121E21E1A11Ae47C0EFE8A7E13ae3eb4923796"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0x265553a76e8c52912e8a4511e9ab4ae344736ebd5f26f3ec97986307c37f28ed",
"implementations": [
"eth:0xDFBB69681F217aB3221E94AFCA4fEa51f5c6a779"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x1e121E21E1A11Ae47C0EFE8A7E13ae3eb4923796"
]
}
],
"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\n * **owner**: EOA 9",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x9c314E8057025F2982aa4B3923Abd741A8e8DE91#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0x9F18D91949731E766f294A14027bBFE8F28328CC",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x7b465370BB7A333f99edd19599EB7Fb1c2D3F8D2"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x7b465370BB7A333f99edd19599EB7Fb1c2D3F8D2"
]
}
],
"description": "Contains the latest confirmed state root that can be used as a starting point in a dispute game.\n* Roles:\n * **admin**: ProxyAdmin; ultimately CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x9F18D91949731E766f294A14027bBFE8F28328CC#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0xa316D42E8Fd98D2Ec364b8bF853d2623E768f95a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x1e121E21E1A11Ae47C0EFE8A7E13ae3eb4923796"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1741879595,
"transactionHash": "0x3fba113c724de4de010b1dd0a044c8d0970effb4a12a9e4eb5450199cd8f0749",
"implementations": [
"eth:0xDFBB69681F217aB3221E94AFCA4fEa51f5c6a779"
]
},
{
"timestamp": 1751883851,
"transactionHash": "0x14663947fe932e8ad6d57fe9aa61910d8d2e5fc37ac5e16e4345c3f8e2f7b2d2",
"implementations": [
"eth:0x1e121E21E1A11Ae47C0EFE8A7E13ae3eb4923796"
]
}
],
"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\n * **owner**: CeloProxyAdminOwner",
"upgradableBy": [
{
"name": "CeloProxyAdminOwner",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xa316D42E8Fd98D2Ec364b8bF853d2623E768f95a#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0xaA59A0777648BC75cd10364083e878c1cCd6112a",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xaA59A0777648BC75cd10364083e878c1cCd6112a#code"
},
{
"name": "FaultDisputeGame",
"isVerified": true,
"address": "eth:0xcc744008aD3306a716fED303b0A6eA5b5d0690a5",
"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/eth:0xcc744008aD3306a716fED303b0A6eA5b5d0690a5#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 10, EOA 11, EOA 4, EOA 5, EOA 6, EOA 7\n * **proposers**: EOA 3, EOA 8",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xF59a19c5578291cB7fd22618D16281aDf76f2816#code"
}
]
},
"escrows": [
{
"address": "0xc5c5D157928BDBD2ACf6d0777626b6C75a9EAEDC",
"sinceTimestamp": 1741879559,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xc5c5D157928BDBD2ACf6d0777626b6C75a9EAEDC",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x783A434532Ee94667979213af1711505E8bFE374"
],
"implementations": [
"eth:0x215A5fF85308A72A772F09B520dA71D3520e9aC7"
]
},
"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"
]
}
],
"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:0x28841965B26d41304905A836Da5C0921DA7dBB84"
]
},
"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
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkProgramHashes": [
{
"title": "Aggregation program of OP Succinct FDP",
"description": "Aggregates proofs of correct execution for several consecutive block ranges of OP L2 client in fault dispute proof mode.",
"proverSystemProject": "sp1",
"programUrl": "https://github.com/celo-org/op-succinct/tree/celo/v1.0.1/programs/aggregation",
"verificationStatus": "successful",
"verificationSteps": "\n Prepare:\n \n 1. Install cargo make: `cargo install --debug --locked cargo-make`\n 2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n 3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n \n Verify:\n \n 1. Checkout the correct branch in [celo-org/op-succinct](https://github.com/celo-org/op-succinct) repo: `git checkout celo/v1.0.1 ` . Commit hash should be `4408f080e40526eaf2e327ac651e106842478523 `.\n 2. Make sure docker is running by running `docker ps `\n 3. From the `op-succinct` dir: `cargo run --bin config --release --features eigenda` to build the SP1 programs for EigenDA features and generate and print verification key hashes.\n ",
"verificationSteps": "\n Prepare:\n \n 1. Install cargo make: `cargo install --debug --locked cargo-make`\n 2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n 3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n \n Verify:\n \n 1. Checkout the correct branch in [celo-org/op-succinct](https://github.com/celo-org/op-succinct) repo: `git checkout celo/v1.0.1` . Commit hash should be `4408f080e40526eaf2e327ac651e106842478523`.\n 2. Make sure docker is running by running `docker ps`\n 3. From the `op-succinct` dir: `cargo run --bin config --release --features eigenda` to build the SP1 programs for EigenDA features and generate and print verification key hashes.\n ",
"hash": "0x0075c7ec424df1386508596dc886e528c733a5f2c7728e7a81ad7676495ff31c"
},
{
"title": "Range program of OP Succinct FDP",
"description": "Proves correct state transition function within an OP L2 client over a range of consecutive L2 blocks in fault dispute proof mode.",
"programUrl": "https://github.com/celo-org/op-succinct/tree/celo/v1.0.1/programs/range/eigenda",
"proverSystemProject": "sp1",
"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/v1.0.1 ` . Commit hash should be `4408f080e40526eaf2e327ac651e106842478523 `.\n2. Make sure docker is running by running `docker ps `\n3. From the `op-succinct` dir: `cargo run --bin config --release --features eigenda` to build the SP1 programs for EigenDA features and generate and print verification key hashes.\n ",
"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/v1.0.1` . Commit hash should be `4408f080e40526eaf2e327ac651e106842478523`.\n2. Make sure docker is running by running `docker ps`\n3. From the `op-succinct` dir: `cargo run --bin config --release --features eigenda` to build the SP1 programs for EigenDA features and generate and print verification key hashes.\n ",
"hash": "0x223fe2ba07be84da6afb2e3c1ed5c76b182aed383ad45aee40970cd30bcf9a83"
}
]
}
+2 -1
+2 -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/eth:0x2f3d687e02dbe83B6cDaE02aeb66C0e8E69CcA4b#code"
},
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0x5D2952EAe032aa33e977c52f810e0089261efB27",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647"
]
}
],
"description": "Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n* Roles:\n * **admin**: ProxyAdmin; ultimately 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/eth:0x5D2952EAe032aa33e977c52f810e0089261efB27#code"
},
{
"name": "DisputeGameFactory",
"isVerified": true,
"address": "eth:0xAa47071585ee92Fa9AE314C87d3d12a25c241EeD",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0"
]
}
],
"description": "The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xAa47071585ee92Fa9AE314C87d3d12a25c241EeD#code"
},
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0xD7cF5ce4688663e057E99D9f880599Ce88757695",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4"
]
},
{
"timestamp": 1756903199,
"transactionHash": "0xc33c7857ae90704d7d21f1670457a6889b8d3ac1b4f02e23f9f156a8ec3a51f9",
"implementations": [
"eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc"
]
}
],
"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 fork of the standard contract **disables the depositTransaction() function**, which prevents 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/eth: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/eth: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/eth: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/eth: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/eth: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/eth:0xEf1462451C30Ea7aD8555386226059Fe837CA4EF#code"
},
{
"name": "L1StandardBridge",
"isVerified": true,
"address": "eth:0x6C82EEE75Bb8b957C12FaaF8CAb549BE4b0fD5af",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x0b09ba359A106C9ea3b181CBc5F394570c7d2a7A"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "The main entry point to deposit ERC20 tokens from host chain to this chain.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x6C82EEE75Bb8b957C12FaaF8CAb549BE4b0fD5af#code"
},
{
"name": "L1CrossDomainMessenger",
"isVerified": true,
"address": "eth:0xB847cf7F5CE23cBaF76E751C066bfE732951501f",
"upgradeability": {
"proxyType": "resolved delegate proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B"
]
}
],
"description": "Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xB847cf7F5CE23cBaF76E751C066bfE732951501f#code"
},
{
"name": "L1ERC721Bridge",
"isVerified": true,
"address": "eth:0xd1cFFdEF1dc379372CB06f3dEdC6debeF6059E82",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013"
]
}
],
"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/eth:0xd1cFFdEF1dc379372CB06f3dEdC6debeF6059E82#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0x010DEBD63B170821ae1b4ba93Fe46005aaaB1692",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x7b465370BB7A333f99edd19599EB7Fb1c2D3F8D2"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x7b465370BB7A333f99edd19599EB7Fb1c2D3F8D2"
]
}
],
"description": "Contains the latest confirmed state root that can be used as a starting point in a dispute game.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x010DEBD63B170821ae1b4ba93Fe46005aaaB1692#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/eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3#code"
},
{
"name": "OptimismMintableERC20Factory",
"isVerified": true,
"address": "eth:0x514795090ceA49c14f65b45c4403A36b3576AE03",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x5493f4677A186f64805fe7317D6993ba4863988F"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x5493f4677A186f64805fe7317D6993ba4863988F"
]
}
],
"description": "A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintableERC20 as this chain's representation of a token on the host chain, or vice-versa.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x514795090ceA49c14f65b45c4403A36b3576AE03#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/eth:0xb4899FF43Ae727B1E9CB19AC44660e4A43Fad0b5#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0xd102e395aA8b4710db44B33F14Ae0038F318C2AC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger. In the context of this permissioned aggkit deployment, there are no state proposals made here and the op stack fault proof system is not used.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xd102e395aA8b4710db44B33F14Ae0038F318C2AC#code"
},
{
"name": "DelayedWETH",
"isVerified": true,
"address": "eth:0xe0fCd317cbF59bA23205ab1662811E631AcbCE29",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0"
],
"implementations": [
"eth:0x5e40B9231B86984b5150507046e354dbFbeD3d9e"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1756893611,
"transactionHash": "0x53d6644e17ea2b137c56349e0309465a9fb974aa17a056e14acd46527b864ba9",
"implementations": [
"eth:0x5e40B9231B86984b5150507046e354dbFbeD3d9e"
]
}
],
"description": "Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Conduit Multisig 1\n * **owner**: Conduit Multisig 1",
"upgradableBy": [
{
"name": "Conduit Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xe0fCd317cbF59bA23205ab1662811E631AcbCE29#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/eth:0xEfBb0af25B3bE24347f17916fda058795f36a5A0#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0xF027F4A985560fb13324e943edf55ad6F1d15Dc1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xF027F4A985560fb13324e943edf55ad6F1d15Dc1#code"
},
{
"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/eth: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/eth: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/eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#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
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkProgramHashes": [
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "notVerified",
"verificationStatus": "successful",
"verificationSteps": "\n Prepare:\n \n 1. Install cargo make: `cargo install --debug --locked cargo-make`\n 2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n 3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n \n Verify:\n \n 1. 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`\n 2. Make sure docker is running by running `docker ps`\n 3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n 4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n 5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf\n ",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"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 [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.\n ",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
}
]
}
+2 -1
+2 -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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#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
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkProgramHashes": [
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "notVerified",
"verificationStatus": "successful",
"verificationSteps": "\n Prepare:\n \n 1. Install cargo make: `cargo install --debug --locked cargo-make`\n 2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n 3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n \n Verify:\n \n 1. 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`\n 2. Make sure docker is running by running `docker ps`\n 3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n 4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n 5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf\n ",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"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 [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.\n ",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
}
]
}
+12 -6
+12 -6
{
"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**: Katana Foundation Engineering/Security Multisig\n * **aggchainSigners**: EOA 2 optimisticMode is enabled by the optimisticModeManager\n * **optimisticModeManager**: Katana Foundation Engineering/Security Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666#code"
},
{
"name": "OptimismPortal2",
"isVerified": true,
"address": "eth:0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832"
],
"implementations": [
"eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc"
]
},
"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"
]
}
],
"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 fork of the standard contract **disables the depositTransaction() function**, which prevents 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 Katana Foundation Engineering/Security Multisig",
"upgradableBy": [
{
"name": "Katana Foundation Engineering/Security Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E#code"
},
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832"
],
"implementations": [
"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647"
]
},
"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"
]
}
],
"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 Katana Foundation Engineering/Security Multisig\n * **batcherHash**: EOA 1\n * **owner**: Katana Foundation Engineering/Security Multisig",
"upgradableBy": [
{
"name": "Katana Foundation Engineering/Security Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth:0x14Be6579A41342ca6B402ec85E7be538e6Ade951#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Katana Foundation Engineering/Security Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832#code"
},
{
"name": "AnchorStateRegistry",
"isVerified": true,
"address": "eth:0x1AaA08d577cbC3da3b955DC1B7a281D7b8fE3372",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832"
],
"implementations": [
"eth:0x7b465370BB7A333f99edd19599EB7Fb1c2D3F8D2"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1753290299,
"transactionHash": "0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2",
"implementations": [
"eth:0x7b465370BB7A333f99edd19599EB7Fb1c2D3F8D2"
]
}
],
"description": "Contains the latest confirmed state root that can be used as a starting point in a dispute game.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Katana Foundation Engineering/Security Multisig",
"upgradableBy": [
{
"name": "Katana Foundation Engineering/Security Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x1AaA08d577cbC3da3b955DC1B7a281D7b8fE3372#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/eth: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/eth: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/eth: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/eth:0x420693B32113a0e00Eb9f3315D5D5ec3b32C2d69#code"
},
{
"name": "PermissionedDisputeGame",
"isVerified": true,
"address": "eth:0x667b7DA73DA7B2A75286378FF45637eEaE9B4793",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger. In the context of this permissioned aggkit deployment, there are no state proposals made here and the op stack fault proof system is not used.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x667b7DA73DA7B2A75286378FF45637eEaE9B4793#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x6d0ff67fb427422AfF35EEa8596949B374b09a52",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Katana Foundation Engineering/Security Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth: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/eth:0x8970650CF3f1E57cA804C65B4DBcFf698789FE30#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/eth:0xD1e389c046FB734D2a0c7C390312210c408ba832#code"
},
{
"name": "MIPS",
"isVerified": true,
"address": "eth:0xF027F4A985560fb13324e943edf55ad6F1d15Dc1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xF027F4A985560fb13324e943edf55ad6F1d15Dc1#code"
},
{
"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/eth: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/eth: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/eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#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": "the contracts or their dependencies (e.g. AggLayerGateway) receive a malicious code upgrade. There is no delay on upgrades."
}
],
"zkProgramHashes": [
{
"title": "Aggregation program of OP Succinct",
"description": "Aggregates proofs of correct execution for several consecutive block ranges of OP L2 client.",
"proverSystemProject": "sp1",
"verificationStatus": "notVerified",
"programUrl": "https://github.com/succinctlabs/op-succinct/tree/v3.4.0-rc.1/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`\n3. Make sure the correct version of sp1 toolchain is installed: `sp1up -v v5.2.4`\n4. 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 [succinctlabs/op-succinct](https://github.com/succinctlabs/op-succinct) repo: `git checkout v3.4.0-rc.1` . Commit hash should be `c010f100c50ed226c86762b1a2845b13da0280bd `.\n2. Make sure docker is running by running `docker ps `\n3. From the `op-succinct/programs/aggregation ` dir: `cargo prove build --elf-name aggregation-elf --docker --tag v5.2.0 --output-directory ../../elf` to generate aggregation program elf from sources\n4. From op-succinct/elf dir: `cargo prove vkey --elf aggregation-elf ` to check the verification key of this elf.\n ",
"hash": "0x007efdd073c9845bbc446e0e62018af999bde96ecec416725391efa4a3f0a44d"
},
{
"title": "Range program of OP Succinct",
"description": "Proves correct state transition function within an OP L2 client over a range of consecutive L2 blocks.",
"proverSystemProject": "sp1",
"verificationStatus": "notVerified",
"hash": "0x64c8517c14f10577381d8961139a4420420e90e528d02be96e2b0961671db248"
},
{
"title": "Aggchain program of agglayer",
"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.",
"programUrl": "https://github.com/agglayer/provers/tree/v1.1.3/crates/aggchain-proof-program",
"programUrl": "https://github.com/agglayer/provers/tree/v1.1.2/crates/aggchain-proof-program",
"proverSystemProject": "sp1",
"verificationStatus": "notVerified",
"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 [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```\n ",
"hash": "0x713f8a687452545141b6cd852472c67742a5c61474b97a136d0d107804affa1f"
},
{
"title": "Aggchain program of agglayer",
"description": "Verifies state transition of an Agglayer-based chain either by checking a full validity proof or just by checking a registered multisig signature. Also checks that L1 information on the chain aligns with the values stored on Agglayer.",
"proverSystemProject": "sp1",
"programUrl": "https://github.com/agglayer/provers/tree/v1.5.0/crates/aggchain-proof-program",
"verificationStatus": "notVerified",
"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 [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```\n ",
"hash": "0x374ee73950cdb07d1b8779d90a8467df232639c13f9536b03f1ba76a2aa5dac6"
},
{
"title": "Aggchain program of agglayer",
"description": "Verifies state transition of an Agglayer-based chain either by checking a full validity proof or just by checking a registered multisig signature. Also checks that L1 information on the chain aligns with the values stored on Agglayer.",
"proverSystemProject": "sp1",
"programUrl": "https://github.com/agglayer/provers/tree/v1.8.0/crates/aggchain-proof-program",
"verificationStatus": "notVerified",
"verificationStatus": "successful",
"verificationSteps": "\n Prepare:\n \n 1. Install cargo make: `cargo install --debug --locked cargo-make`\n 2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n 3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n \n\n Verify:\n \n 1. Checkout the correct branch in [provers repo](https://github.com/agglayer/provers): `git checkout v1.8.0`. Commit hash should be `df2e48ad8432a863bdc0a939108d37a69f4bea4e`\n 2. Make sure docker is running by running `docker ps`\n 3. From the root dir: `cargo make ap-elf` to generate aggchain program elf from sources\n 4. 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 ```\n use sp1_sdk::{HashableKey, Prover, CpuProver};\n \n fn 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 ```\n ",
"hash": "0x6e38caa6114ac4b9779f647547de9e8f09e9f5cd6194e7134110760d3aa31b53"
},
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "notVerified",
"verificationStatus": "successful",
"verificationSteps": "\n Prepare:\n \n 1. Install cargo make: `cargo install --debug --locked cargo-make`\n 2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n 3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n \n Verify:\n \n 1. 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`\n 2. Make sure docker is running by running `docker ps`\n 3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n 4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n 5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf\n ",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"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 [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.\n ",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
}
]
}
+2 -1
+2 -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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#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
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkProgramHashes": [
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "notVerified",
"verificationStatus": "successful",
"verificationSteps": "\n Prepare:\n \n 1. Install cargo make: `cargo install --debug --locked cargo-make`\n 2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n 3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n \n Verify:\n \n 1. 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`\n 2. Make sure docker is running by running `docker ps`\n 3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n 4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n 5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf\n ",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"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 [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.\n ",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
}
]
}
+2 -1
+2 -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/eth:0x519E42c24163192Dca44CD3fBDCEBF6be9130987#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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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/eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#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
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkProgramHashes": [
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "notVerified",
"verificationStatus": "successful",
"verificationSteps": "\n Prepare:\n \n 1. Install cargo make: `cargo install --debug --locked cargo-make`\n 2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n 3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n \n Verify:\n \n 1. 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`\n 2. Make sure docker is running by running `docker ps`\n 3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n 4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n 5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf\n ",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"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 [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.\n ",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
}
]
}
+1 -0
+1 -0
{
"addresses": {
"ethereum": [
{
"name": "MultipleVersionRollupVerifier",
"isVerified": true,
"address": "eth:0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract used to update the verifier and keep track of current and old versions.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F#code"
},
{
"name": "L1MessageQueueV2",
"isVerified": true,
"address": "eth:0x56971da63A3C0205184FEF096E9ddFc7A8C2D18a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x39C36c9026ac18104839A50c61a4507ea5052ECa"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1742476139,
"transactionHash": "0xa44917bb285df86b23937d2180e5e2d21d47407803736797bc8cdbaf59d8f256",
"implementations": [
"eth:0xFAf8f72e54d1089fa1882b6f597BfDFF59a8AFca"
]
},
{
"timestamp": 1745301695,
"transactionHash": "0x2c09704f5717cd65e31ea854b8c6a5229b841fcabc5bcbbbb1117f13b9f60d21",
"implementations": [
"eth:0xEfA158006b072793a49E622B26761cD0eC38591d"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0x39C36c9026ac18104839A50c61a4507ea5052ECa"
]
}
],
"description": "Contains the array of queued L1 -> L2 messages, either appended using the L1ScrollMessenger or the EnforcedTxGateway.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x56971da63A3C0205184FEF096E9ddFc7A8C2D18a#code"
},
{
"name": "L1ScrollMessenger",
"isVerified": true,
"address": "eth:0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x79b6eAbfFAa958FDF2Aa2Bf632878bD323DCbF69"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0xcad9f31340db6aca3a5da0d704ee33a9b6c43a5b1be4406cc0ed33edbdd7c92e",
"implementations": [
"eth:0xAf2F898a8680cb52766ABE0588ebe6b9bFe37845"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0x72981fD00087fF4F60aBFdE9f353cB1912A37fb6"
]
},
{
"timestamp": 1745301695,
"transactionHash": "0x2c09704f5717cd65e31ea854b8c6a5229b841fcabc5bcbbbb1117f13b9f60d21",
"implementations": [
"eth:0xc6326109E33465d6d61e4Cb7AFCe7B1bE7cfF868"
]
},
{
"timestamp": 1745564819,
"transactionHash": "0x783703d4e94de48edb75261149a540cbf7abb7ef077865c11080e622a508ab86",
"implementations": [
"eth:0x84791281EF5cb8Af5dCd4c122f7A42FeD38Fef5b"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0x79b6eAbfFAa958FDF2Aa2Bf632878bD323DCbF69"
]
}
],
"description": "Contract used to send L1 -> L2 and relay messages from L2. It allows to replay failed messages and to drop skipped messages. L1 -> L2 messages sent using this contract pay for L2 gas on L1 and will have the aliased address of this contract as the sender.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367#code"
},
{
"name": "EnforcedTxGateway",
"isVerified": true,
"address": "eth:0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x7e87c75BBe7991bbCEBd2C7a56f4cFC923BDDBcc"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0xd2e3c3d2839a35492419c5a1ae863e7a23d963cb4853c59e8e20832e0ee4ed3e",
"implementations": [
"eth:0x642af405bF64660665B37977449C9C536B806318"
]
},
{
"timestamp": 1745301695,
"transactionHash": "0x2c09704f5717cd65e31ea854b8c6a5229b841fcabc5bcbbbb1117f13b9f60d21",
"implementations": [
"eth:0x7e87c75BBe7991bbCEBd2C7a56f4cFC923BDDBcc"
]
}
],
"description": "Contracts to force L1 -> L2 messages with the proper sender.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d#code"
},
{
"name": "ScrollOwner",
"isVerified": true,
"address": "eth:0x798576400F7D662961BA15C6b3F3d813447a26a6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n* Roles:\n * **opsFast**: TimelockFast; ultimately Scroll Multisig 3\n * **opsNoDelay**: TimelockEmergency; ultimately Scroll Multisig 2\n * **scMinorityNoDelay**: Scroll Security Council Minority\n * **scNoDelay**: TimelockSCEmergency; ultimately Scroll Security Council",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x798576400F7D662961BA15C6b3F3d813447a26a6#code"
},
{
"name": "SystemConfig",
"isVerified": true,
"address": "eth:0x8432728A257646449245558B8b7Dbe51A16c7a4D",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0xf15a4b6D1fE2Ca6eE38BC3fb957f43F58b515eeE"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1742476115,
"transactionHash": "0x693533d50e553bb88df2025b2f294549a13cc6ed266de233429ac8742314c77a",
"implementations": [
"eth:0xFAf8f72e54d1089fa1882b6f597BfDFF59a8AFca"
]
},
{
"timestamp": 1745301695,
"transactionHash": "0x2c09704f5717cd65e31ea854b8c6a5229b841fcabc5bcbbbb1117f13b9f60d21",
"implementations": [
"eth:0x6A124779fDf107c3F6BcB992731dCAaD09f2276A"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0xf15a4b6D1fE2Ca6eE38BC3fb957f43F58b515eeE"
]
}
],
"description": "System configuration contract for Scroll, contains enforcedBatchParameters and messageQueueParameters determining permissionless mode.\n* Roles:\n * **admin**: ProxyAdmin\n * **owner**: ScrollOwner",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x8432728A257646449245558B8b7Dbe51A16c7a4D#code"
},
{
"name": "ScrollChain",
"isVerified": true,
"address": "eth:0xa13BAF47339d63B743e7Da8741db5456DAc1E556",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x0a20703878E68E587c59204cc0EA86098B8c3bA7"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0xecc94033ca66ea9068acde109b0c9e3c539191645916a35952bb6d9fd2be3a02",
"implementations": [
"eth:0x2E07f0FBA71709bb5e1f045b02152E45B451D75f"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0xFA148514d03420b7b1a13eC74da06D2Ca875539C"
]
},
{
"timestamp": 1714341995,
"transactionHash": "0x6eb161ed649cf22771e586a8546eec157717e2dec4c871e7ad4e4d2c5c59a905",
"implementations": [
"eth:0xaa6d0F2490AC3957B97e11afEC6F0f250593CaC8"
]
},
{
"timestamp": 1719915047,
"transactionHash": "0x87f533704b3cdac75c20bbdcd202a97ee62075c188ccea27ab7ff494cdeea247",
"implementations": [
"eth:0x4F250B05262240C787a1eE222687C6eC395C628A"
]
},
{
"timestamp": 1724196995,
"transactionHash": "0x3928e0223337a112ea68c84db95441185a3e1da809638be13c0135761aa19ee7",
"implementations": [
"eth:0x9bB163401E8C72573854c4Cd968aFA7A7b02D25f"
]
},
{
"timestamp": 1744728443,
"transactionHash": "0xa1faad1ccd2c390641b46d50d93c26b7369137f021e528acfec78385494b2fb0",
"implementations": [
"eth:0x8f339292d2b3909574B2bEB051a613a987dB538f"
]
},
{
"timestamp": 1745301695,
"transactionHash": "0x2c09704f5717cd65e31ea854b8c6a5229b841fcabc5bcbbbb1117f13b9f60d21",
"implementations": [
"eth:0xb7c8833F5627a8a12558cAFa0d0EBD1ACBDce43f"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0x0a20703878E68E587c59204cc0EA86098B8c3bA7"
]
}
],
"description": "The main contract of the Scroll chain. Allows to post transaction data and state roots, along with proofs. Sequencing and proposing are behind a whitelist unless enforcedBatchMode is activated.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xa13BAF47339d63B743e7Da8741db5456DAc1E556#code"
},
{
"name": "TimelockSCEmergency",
"isVerified": true,
"address": "eth:0x0CD4c0F24a0A9f3E2Fe80ed385D8AD5a2FfECA44",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by the anyone.\n* Roles:\n * **canceller**: Scroll Security Council\n * **executor**: Scroll Multisig 1, Scroll Security Council; ultimately EOA 1, EOA 2, EOA 3, EOA 4\n * **proposer**: Scroll Security Council\n * **timelockAdmin**: Scroll Security Council, TimelockSCEmergency; ultimately Scroll Security Council",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x0CD4c0F24a0A9f3E2Fe80ed385D8AD5a2FfECA44#code"
},
{
"name": "TimelockFast",
"isVerified": true,
"address": "eth:0x0e58939204eEDa84F796FBc86840A50af10eC4F4",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. The current minimum delay is 1d. Proposals that passed their minimum delay can be executed by the anyone.\n* Roles:\n * **canceller**: Scroll Multisig 3\n * **executor**: Scroll Multisig 1; ultimately EOA 1, EOA 2, EOA 3, EOA 4\n * **proposer**: Scroll Multisig 3\n * **timelockAdmin**: Scroll Multisig 3, TimelockFast; ultimately Scroll Multisig 3",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x0e58939204eEDa84F796FBc86840A50af10eC4F4#code"
},
{
"name": "TimelockSCSlow",
"isVerified": true,
"address": "eth:0x3f9041350B661c74C6CbE440c8Bd6BC4C168a9fd",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. The current minimum delay is 3d. Proposals that passed their minimum delay can be executed by the anyone.\n* Roles:\n * **canceller**: Scroll Security Council\n * **executor**: Scroll Multisig 1, Scroll Security Council; ultimately EOA 1, EOA 2, EOA 3, EOA 4\n * **proposer**: Scroll Security Council\n * **timelockAdmin**: Scroll Security Council, TimelockSCSlow; ultimately Scroll Security Council",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x3f9041350B661c74C6CbE440c8Bd6BC4C168a9fd#code"
},
{
"name": "TimelockEmergency",
"isVerified": true,
"address": "eth:0x826714adD4dDA2b8750794A467C892c0Cd49216b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by the anyone.\n* Roles:\n * **canceller**: Scroll Multisig 2\n * **executor**: Scroll Multisig 1; ultimately EOA 1, EOA 2, EOA 3, EOA 4\n * **proposer**: Scroll Multisig 2\n * **timelockAdmin**: Scroll Multisig 2, TimelockEmergency; ultimately Scroll Multisig 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x826714adD4dDA2b8750794A467C892c0Cd49216b#code"
},
{
"name": "L1ERC721Gateway",
"isVerified": true,
"address": "eth:0x6260aF48e8948617b8FA17F4e5CEa2d21D21554B",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x79F1bF1906B63b56E08c3ada4c51De11F145a27A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0x5cb06c63fb2583db9eba85a73ca794a9d36eace7f91925962b8cc97fd06b9b7d",
"implementations": [
"eth:0xDE3be7C2AA151D1E152DDfcBf0962FcDf5323DAe"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0xd1841c5756428812233eEA78afC17cb2D3e392bb"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0x79F1bF1906B63b56E08c3ada4c51De11F145a27A"
]
}
],
"description": "Contract used to bridge ERC721 tokens from L1 to L2.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x6260aF48e8948617b8FA17F4e5CEa2d21D21554B#code"
},
{
"name": "L1ETHGateway",
"isVerified": true,
"address": "eth:0x7F2b8C31F88B6006c382775eea88297Ec1e3E905",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x1fee6a6dC49095FB9C84D61aa4b8A07284b2A1d0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0xbd63d1902c6343a9cdb81aa8944621690e4dd62a82640fded7f7c3d969e3647a",
"implementations": [
"eth:0x1fcbE079c4Bbab37406daB7Dfd35AcAe37D5C55d"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0x546E0bF31FB6e7babD493452e4e6999191367B42"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0x1fee6a6dC49095FB9C84D61aa4b8A07284b2A1d0"
]
}
],
"description": "Contract used to bridge ETH from L1 to L2.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x7F2b8C31F88B6006c382775eea88297Ec1e3E905#code"
},
{
"name": "pufETHEscrow",
"isVerified": true,
"address": "eth:0xA033Ff09f2da45f0e9ae495f525363722Df42b2a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x9eBf2f33526CD571f8b2ad312492cb650870CFd6"
],
"implementations": [
"eth:0x08D77Ea90DB9BF6c0d3f66E6b8394DA2E81B9a03"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1713173507,
"transactionHash": "0xa2ff9275d6280e3cc298653463c5d8423c44cfbc66a52a9a138becbb106dc0f8",
"implementations": [
"eth:0xc4d46E8402F476F269c379677C99F18E22Ea030e"
]
},
{
"timestamp": 1713173507,
"transactionHash": "0xe03abd155a10591ed1fa4a1e2ad0d6042549bfd67769dbf6bd66d25743950905",
"implementations": [
"eth:0x08D77Ea90DB9BF6c0d3f66E6b8394DA2E81B9a03"
]
},
{
"timestamp": 1713173507,
"transactionHash": "0xb367f770c26a72ea837a51c2c1fc84a3396914db1d58c020177b207e0f876a79",
"implementations": [
"eth:0x08D77Ea90DB9BF6c0d3f66E6b8394DA2E81B9a03"
]
}
],
"description": "Contract used to bridge ERC20 tokens from L1 to L2. It allows to change the token mappings.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xA033Ff09f2da45f0e9ae495f525363722Df42b2a#code"
},
{
"name": "L1CustomERC20Gateway",
"isVerified": true,
"address": "eth:0xb2b10a289A229415a124EFDeF310C10cb004B6ff",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x40c3C3dEa3B7D6d117E6713377144fD8EE6D6c97"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0x12f874f5ca5a8dbdc5162db5179a4e4b753f4fcff8dab3f416bd1ce707ecb9ff",
"implementations": [
"eth:0xBAd002fB13adFfcbCba57a4d4a43886f3F4C56cb"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0x7F512E2E9dfC4552941D99A5b2405BBcF5781C2c"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0x40c3C3dEa3B7D6d117E6713377144fD8EE6D6c97"
]
}
],
"description": "Contract used to bridge ERC20 tokens from L1 to L2. It allows to change the token mappings.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xb2b10a289A229415a124EFDeF310C10cb004B6ff#code"
},
{
"name": "L1ERC1155Gateway",
"isVerified": true,
"address": "eth:0xb94f7F6ABcb811c5Ac709dE14E37590fcCd975B6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0xcA46358D5F01E4F865885514DAe6275087Ffe38E"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0xe6cabeddb49c286b33e0e6d4a43af76e1a2108ac9fc91afb508a5ea86a8fc646",
"implementations": [
"eth:0xCb4638620E4C6DeCef26374e71b0dd4871863593"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0x244BF7aEf29F03916569470a51fA0794B62F8cd7"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0xcA46358D5F01E4F865885514DAe6275087Ffe38E"
]
}
],
"description": "Contract used to bridge ERC1155 tokens from L1 to L2.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xb94f7F6ABcb811c5Ac709dE14E37590fcCd975B6#code"
},
{
"name": "L1StandardERC20Gateway",
"isVerified": true,
"address": "eth:0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0xfF8238be22cC583b3d69A76da9d84Da7788c0ee9"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0x85d366c40632340d9e835fdd0a1646909a56d60c680373f15f9d36878ff13029",
"implementations": [
"eth:0x9218732389D80f9b8723C3f32a38865B7a63564A"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0x4015Fc868C06689ABEba4a9dC8FA43B804F6239c"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0xfF8238be22cC583b3d69A76da9d84Da7788c0ee9"
]
}
],
"description": "Contract used to bridge ERC20 tokens from L1 to L2. It uses a fixed token list.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9#code"
},
{
"name": "L1GatewayRouter",
"isVerified": true,
"address": "eth:0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0xb93Ac04010Bd61F45BF492022A5b49a902F798F3"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0x8f6851c707737c446ee55f39be1442ce8cfa50ef8522b34bac247c0bb39a14ec",
"implementations": [
"eth:0xb93Ac04010Bd61F45BF492022A5b49a902F798F3"
]
}
],
"description": "Main entry point for depositing ETH and ERC20 tokens, which are then forwarded to the correct gateway.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6#code"
},
{
"name": "wstETHescrowLido",
"isVerified": true,
"address": "eth:0x6625C6332c9F91F2D27c304E729B86db87A3f504",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCC2C53556Bc75217cf698721b29071d6f12628A9"
],
"implementations": [
"eth:0xF4f2066EE72D62e3caF9678459149BA7FCf2262F"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696920503,
"transactionHash": "0xec5c25ea4b3e6d1dc9fa4cb7b7dd37a7a245a171cd3d16fb312628b5ecc9e841",
"implementations": [
"eth:0xBAd002fB13adFfcbCba57a4d4a43886f3F4C56cb"
]
},
{
"timestamp": 1709624939,
"transactionHash": "0xd755174ba6bacec85b68b77c9ec2a8b966955746be59a6efa932f47c37dda482",
"implementations": [
"eth:0xF4f2066EE72D62e3caF9678459149BA7FCf2262F"
]
}
],
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x6625C6332c9F91F2D27c304E729B86db87A3f504#code"
},
{
"name": "DaiEscrow",
"isVerified": true,
"address": "eth:0x67260A8B73C5B77B55c1805218A42A7A6F98F515",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0xBAd002fB13adFfcbCba57a4d4a43886f3F4C56cb"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696920095,
"transactionHash": "0x9776779beb429ea826a81a8c1c5f782933bfc8ce568afa1c6f2c2b866be2a3a5",
"implementations": [
"eth:0xBAd002fB13adFfcbCba57a4d4a43886f3F4C56cb"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x67260A8B73C5B77B55c1805218A42A7A6F98F515#code"
},
{
"name": "L1WETHGateway",
"isVerified": true,
"address": "eth:0x7AC440cAe8EB6328de4fA621163a792c1EA9D4fE",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0xE25EfFEFd08c4a57556d47eF96471Cb567A86c24"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0x0f1df3c211e6b201b0bb0cc41c87c2fbb36683f2a24080d935ffdc587723c033",
"implementations": [
"eth:0xd3c42158682D55E082EaBe08a29F7515A97cA307"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0xa4F400593DFfc0ae02F940ab58f6e3Cc6fb9FB49"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0xE25EfFEFd08c4a57556d47eF96471Cb567A86c24"
]
}
],
"description": "Contract used to bridge WETH from L1 to L2.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x7AC440cAe8EB6328de4fA621163a792c1EA9D4fE#code"
},
{
"name": "L1USDCGateway",
"isVerified": true,
"address": "eth:0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x56ce8A8E8399f6cD5e7e4f549E8BfD673f2AfF5e"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696919351,
"transactionHash": "0x394b36151c614a7dfd048ddc1085046d2a50e5fd54af4c335d4a08aa79dd773d",
"implementations": [
"eth:0x6667123b5017AAB9945F73345848B82D7A953AA8"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0x56ce8A8E8399f6cD5e7e4f549E8BfD673f2AfF5e"
]
}
],
"description": "Contract used to bridge USDC tokens from L1 to L2.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B#code"
},
{
"name": "PlonkVerifierPostEuclid-2",
"isVerified": true,
"address": "eth:0x39854DF30b3482Ef546F68B8981Fae5A2C426eA4",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"references": [
{
"title": "Source Code",
"url": "https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/0.5.2/bundle/verifier.bin"
}
],
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x39854DF30b3482Ef546F68B8981Fae5A2C426eA4#code"
},
{
"name": "ZkEvmVerifierPostFeynman",
"isVerified": true,
"address": "eth:0x4AF7f3aBd780Fbd319c4356a219100A45F85DDb5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x4AF7f3aBd780Fbd319c4356a219100A45F85DDb5#code"
},
{
"name": "ZkEvmVerifierPostFeynman",
"isVerified": true,
"address": "eth:0x4F438522956c8826B9e29B4c775b2d8a6a803181",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x4F438522956c8826B9e29B4c775b2d8a6a803181#code"
},
{
"name": "PlonkVerifierGalileo",
"isVerified": true,
"address": "eth:0x749fC77A1a131632a8b88e8703E489557660C75e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"references": [
{
"title": "Source Code",
"url": "https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/v0.7.1/verifier/verifier.bin"
}
],
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x749fC77A1a131632a8b88e8703E489557660C75e#code"
},
{
"name": "ZkEvmVerifierPostFeynman",
"isVerified": true,
"address": "eth:0xa8d4702Aa5c09AF5dD1323E1842a43789021F485",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xa8d4702Aa5c09AF5dD1323E1842a43789021F485#code"
},
{
"name": "PauseController",
"isVerified": true,
"address": "eth:0xb8f7eA9998530833Cbb7E0EF4f0D945957229D8b",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x57e26d997852e7e94915e250446C3bf43F41d98D"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1753067003,
"transactionHash": "0x3decf466a6c0dfc015f7496b5737f597ae7f90073bce2e83a5660b5de64ffe4b",
"implementations": [
"eth:0x57e26d997852e7e94915e250446C3bf43F41d98D"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xb8f7eA9998530833Cbb7E0EF4f0D945957229D8b#code"
},
{
"name": "ZkEvmVerifierPostEuclid-2",
"isVerified": true,
"address": "eth:0xc084a6De8b0F2742396572d6f110eC87ca9329bA",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xc084a6De8b0F2742396572d6f110eC87ca9329bA#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ScrollOwner",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072#code"
}
],
"scroll": [
{
"name": "ScrollOwner",
"isVerified": true,
"address": "scr:0x13D24a7Ff6F5ec5ff0e9C40Fc3B8C9c01c65437B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n* Roles:\n * **scNoDelay**: TimelockSCEmergencyScroll; ultimately Scroll Security Council",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x13D24a7Ff6F5ec5ff0e9C40Fc3B8C9c01c65437B#code"
},
{
"name": "L2GatewayRouter",
"isVerified": true,
"address": "scr:0xE2b4795039517653c5Ae8C2A9BFdd783b48f447A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0x3ffe801a43D25d0288683237A848e14f73a226f0"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1696917917,
"transactionHash": "0xaac223f86591581be57fc2296c6895a55d4f5488340e63577fa0b909e950747d",
"implementations": [
"scr:0xCaa86d504B7670f4BCe0B323c2AaF7002CF6C478"
]
},
{
"timestamp": 1708589325,
"transactionHash": "0x92f480d8c9796a31dbe6bcf1be126d1d2cd44d43b3672d578b21c9412a36e3d9",
"implementations": [
"scr:0x3ffe801a43D25d0288683237A848e14f73a226f0"
]
}
],
"description": "Contract used to withdraw ERC20 tokens on L2 and finalize deposit the tokens from L1.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0xE2b4795039517653c5Ae8C2A9BFdd783b48f447A#code"
},
{
"name": "TimelockSCEmergencyScroll",
"isVerified": true,
"address": "scr:0x1f807E2E8ab2e61230a0A9C271F90242831278b4",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by the anyone.\n* Roles:\n * **canceller**: Scroll Security Council\n * **executor**: Scroll Multisig 1, Scroll Security Council; ultimately EOA 5, EOA 6, EOA 7, EOA 8\n * **proposer**: Scroll Security Council\n * **timelockAdmin**: Scroll Security Council, TimelockSCEmergencyScroll; ultimately Scroll Security Council",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x1f807E2E8ab2e61230a0A9C271F90242831278b4#code"
},
{
"name": "TimelockFast",
"isVerified": true,
"address": "scr:0x2b14d0E4b042d11C7e3Fc653132a2c82EFa7d376",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "A timelock with access control. The current minimum delay is 1d. Proposals that passed their minimum delay can be executed by the anyone.\n* Roles:\n * **canceller**: Scroll Multisig 3\n * **executor**: Scroll Multisig 1; ultimately EOA 5, EOA 6, EOA 7, EOA 8\n * **proposer**: Scroll Multisig 3\n * **timelockAdmin**: Scroll Multisig 3, TimelockFast; ultimately Scroll Multisig 3",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x2b14d0E4b042d11C7e3Fc653132a2c82EFa7d376#code"
},
{
"name": "AgoraGovernor",
"isVerified": true,
"address": "scr:0x2f3F2054776bd3C2fc30d750734A8F539Bb214f0",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0x82e58e20Da6ecF4B07649C9B2237FAf27f02bC81"
],
"implementations": [
"scr:0xd74aD535faE370Ec0762ECe045EeB8970Be378F7"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1725377334,
"transactionHash": "0xb450d90f0a2025a932ff6a536cd7a0b30ce3c20e150b1f15d5f0216dd7824998",
"implementations": [
"scr:0x4dCEC34886014C1a2E1Ca742B5Bd7B9952B7f4A2"
]
},
{
"timestamp": 1729119781,
"transactionHash": "0x8a9a791104181ad063e9b300950ae9bff21d152e544c0313650398ab672db5ba",
"implementations": [
"scr:0xd74aD535faE370Ec0762ECe045EeB8970Be378F7"
]
}
],
"description": "Used to propose and manage onchain governance proposals.\n* Roles:\n * **admin**: ProxyAdmin\n * **manager**: GnosisSafeL2\n * **timelock**: TimelockSCSlow; ultimately Scroll Security Council",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x2f3F2054776bd3C2fc30d750734A8F539Bb214f0#code"
},
{
"name": "TimelockEmergency",
"isVerified": true,
"address": "scr:0xA77D19C1F2B06C9aeA9bE88C17B771a33892734f",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by the anyone.\n* Roles:\n * **canceller**: Scroll Multisig 2\n * **executor**: Scroll Multisig 1; ultimately EOA 5, EOA 6, EOA 7, EOA 8\n * **proposer**: Scroll Multisig 2\n * **timelockAdmin**: Scroll Multisig 2, TimelockEmergency; ultimately Scroll Multisig 2",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0xA77D19C1F2B06C9aeA9bE88C17B771a33892734f#code"
},
{
"name": "Scroll USDC",
"isVerified": true,
"address": "scr:0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4",
"upgradeability": {
"proxyType": "ZeppelinOS proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0x72e2451a2da1535DBf0E7CB1e8C69F56E00A7B7b"
],
"immutable": false
},
"chain": "scroll",
"pastUpgrades": [],
"description": "Contract of the USDC token on Scroll.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4#code"
},
{
"name": "L2USDCGateway",
"isVerified": true,
"address": "scr:0x33B60d5Dd260d453cAC3782b0bDC01ce84672142",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0x6E0618d128d2d861994DF7a725743F69b53C2804"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1696919404,
"transactionHash": "0x53dca8476e9bb314c9ac8008f2e33460eea3cde5798aeaf1327feba43f2af2ee",
"implementations": [
"scr:0x02812d966B5cdeeb9aCBbBae51cA2d5d0f86A086"
]
},
{
"timestamp": 1708589325,
"transactionHash": "0x92f480d8c9796a31dbe6bcf1be126d1d2cd44d43b3672d578b21c9412a36e3d9",
"implementations": [
"scr:0x6E0618d128d2d861994DF7a725743F69b53C2804"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x33B60d5Dd260d453cAC3782b0bDC01ce84672142#code"
},
{
"name": "L2GatewayRouter",
"isVerified": true,
"address": "scr:0x4C0926FF5252A435FD19e10ED15e5a249Ba19d79",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0x3808d0F2F25839E73e0Fbf711368fC4aE80c7763"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1696917917,
"transactionHash": "0xa2062a4530b194a438bb9f9e87cdce59f70775a52e8336892364445847c43ca2",
"implementations": [
"scr:0x3808d0F2F25839E73e0Fbf711368fC4aE80c7763"
]
}
],
"description": "Counterpart to the L1GatewayRouter contract.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x4C0926FF5252A435FD19e10ED15e5a249Ba19d79#code"
},
{
"name": "L2MessageQueue",
"isVerified": true,
"address": "scr:0x5300000000000000000000000000000000000000",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "Used to append messages to the L2MessageQueue from the L2ScrollMessenger.\n",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x5300000000000000000000000000000000000000#code"
},
{
"name": "L2ERC1155Gateway",
"isVerified": true,
"address": "scr:0x62597Cc19703aF10B58feF87B0d5D29eFE263bcc",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0xAc92E88bAc1848A5FeEA5cf5A60e0abc3bD5Df94"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1696917920,
"transactionHash": "0x81ea4d0324828c7bd1a25754601e471f5707cf09af3f267fabf1aa43f2c45907",
"implementations": [
"scr:0x4a1b3D103801F0E1400046aE1948B9808e9b043b"
]
},
{
"timestamp": 1708589325,
"transactionHash": "0x92f480d8c9796a31dbe6bcf1be126d1d2cd44d43b3672d578b21c9412a36e3d9",
"implementations": [
"scr:0xAc92E88bAc1848A5FeEA5cf5A60e0abc3bD5Df94"
]
}
],
"description": "Counterpart to the L1ERC1155Gateway contract.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x62597Cc19703aF10B58feF87B0d5D29eFE263bcc#code"
},
{
"name": "L2CustomERC20Gateway",
"isVerified": true,
"address": "scr:0x64CCBE37c9A82D85A1F2E74649b7A42923067988",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0x1D40306EEfCF6EBd496d6048F6edf8892346e558"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1696917920,
"transactionHash": "0xcfb787fe58eeb8a0f1d7ebb1360968111e84cd6f64d929a3277a1fb5e232ccd3",
"implementations": [
"scr:0xc568B5dcCeBE52073Fa783EAdacDE0a30fA4c2c9"
]
},
{
"timestamp": 1708589325,
"transactionHash": "0x92f480d8c9796a31dbe6bcf1be126d1d2cd44d43b3672d578b21c9412a36e3d9",
"implementations": [
"scr:0x1D40306EEfCF6EBd496d6048F6edf8892346e558"
]
}
],
"description": "Counterpart to the L1CustomERC20Gateway contract.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x64CCBE37c9A82D85A1F2E74649b7A42923067988#code"
},
{
"name": "ScrollStandardERC20Factory",
"isVerified": true,
"address": "scr:0x66e5312EDeEAef6e80759A0F789e7914Fb401484",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "Contract used to deploy ScrollStandardERC20 tokens for L2StandardERC20Gateway.\n",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x66e5312EDeEAef6e80759A0F789e7914Fb401484#code"
},
{
"name": "L2ETHGateway",
"isVerified": true,
"address": "scr:0x6EA73e05AdC79974B931123675ea8F78FfdacDF0",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0x191770c52309dff2c52FfEcf059ECC3862f5D721"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1696917917,
"transactionHash": "0xf1505df71efbf7c12e1f48f4d17675e39d9797b1cac73ccbc6b610481313e750",
"implementations": [
"scr:0xE0a0509a66C509f55c85A20EB8c60676135081f7"
]
},
{
"timestamp": 1708589325,
"transactionHash": "0x92f480d8c9796a31dbe6bcf1be126d1d2cd44d43b3672d578b21c9412a36e3d9",
"implementations": [
"scr:0x191770c52309dff2c52FfEcf059ECC3862f5D721"
]
}
],
"description": "Contract of the L2ScrollMessenger contract.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x6EA73e05AdC79974B931123675ea8F78FfdacDF0#code"
},
{
"name": "L2WETHGateway",
"isVerified": true,
"address": "scr:0x7003E7B7186f0E6601203b99F7B8DECBfA391cf9",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0x86c5CBfC03ffFC7faf5dfC7D781A9adfA9f47dD1"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1696917917,
"transactionHash": "0x9021d0900bd824774d2fa08d23a47d61a94d83563cfc81ca834b54bd690e0539",
"implementations": [
"scr:0x4966c037D653E31dB2c1F9727dd50dC679d51d65"
]
},
{
"timestamp": 1708589325,
"transactionHash": "0x92f480d8c9796a31dbe6bcf1be126d1d2cd44d43b3672d578b21c9412a36e3d9",
"implementations": [
"scr:0x86c5CBfC03ffFC7faf5dfC7D781A9adfA9f47dD1"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x7003E7B7186f0E6601203b99F7B8DECBfA391cf9#code"
},
{
"name": "L2ScrollMessenger",
"isVerified": true,
"address": "scr:0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0x6fa66EeD8e8086f4c77204B5484D26F4e9AB7772"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1696917917,
"transactionHash": "0xced82475ea905f72d0cb7ed5731aa1c801d62249a92fbad6724dd3f223b83e96",
"implementations": [
"scr:0x485149079c421f9e4c465276BbaBB2fE0748d138"
]
},
{
"timestamp": 1708589325,
"transactionHash": "0x92f480d8c9796a31dbe6bcf1be126d1d2cd44d43b3672d578b21c9412a36e3d9",
"implementations": [
"scr:0x6fa66EeD8e8086f4c77204B5484D26F4e9AB7772"
]
}
],
"description": "ETH is pre-minted to this contract in the genesis block and released on Scroll whenever corresponding deposits are made on Ethereum.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC#code"
},
{
"name": "TimelockSCSlow",
"isVerified": true,
"address": "scr:0x79D83D1518e2eAA64cdc0631df01b06e2762CC14",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "* Roles:\n * **timelockAdmin**: Scroll Security Council, TimelockSCSlow",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x79D83D1518e2eAA64cdc0631df01b06e2762CC14#code"
},
{
"name": "L2ERC721Gateway",
"isVerified": true,
"address": "scr:0x7bC08E1c04fb41d75F1410363F0c5746Eae80582",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0x0894150DB82B912105F6D0907B5c69E72F1Df279"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1696917920,
"transactionHash": "0x56af44f6a76a5788776564b7d36720e0e9f5cd4695653d0f83871259c1480325",
"implementations": [
"scr:0x71d7F43617CEaE99A43B7727151267A9919288F6"
]
},
{
"timestamp": 1708589325,
"transactionHash": "0x92f480d8c9796a31dbe6bcf1be126d1d2cd44d43b3672d578b21c9412a36e3d9",
"implementations": [
"scr:0x0894150DB82B912105F6D0907B5c69E72F1Df279"
]
}
],
"description": "Counterpart to the L1ERC721Gateway contract.\n* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x7bC08E1c04fb41d75F1410363F0c5746Eae80582#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "scr:0x82e58e20Da6ecF4B07649C9B2237FAf27f02bC81",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "* Roles:\n * **owner**: ScrollOwner",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x82e58e20Da6ecF4B07649C9B2237FAf27f02bC81#code"
},
{
"name": "L2LidoGateway",
"isVerified": true,
"address": "scr:0x8aE8f22226B9d789A36AC81474e633f8bE2856c9",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0x8e34D07Eb348716a1f0a48A507A9de8a3A6DcE45"
],
"implementations": [
"scr:0x2B9beB2890DBeFC7cA25Af3164100d139B623C24"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1696920429,
"transactionHash": "0x516429c9961880b285703de647f4f884068a31be7341f8ed54b799d0a1fb3e7b",
"implementations": [
"scr:0xc568B5dcCeBE52073Fa783EAdacDE0a30fA4c2c9"
]
},
{
"timestamp": 1709625145,
"transactionHash": "0x64c28a89bdfa47a14998cdaaa4d85113e72c451e817a294930f93bdee4a3d598",
"implementations": [
"scr:0x2B9beB2890DBeFC7cA25Af3164100d139B623C24"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin",
"upgradableBy": [
{
"name": "ProxyAdmin",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0x8aE8f22226B9d789A36AC81474e633f8bE2856c9#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "* Roles:\n * **owner**: ScrollOwner",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026#code"
},
{
"name": "L2PauseController",
"isVerified": true,
"address": "scr:0xAf9a61Aa21aB4a2fdbc88e81363D2e3D359749dd",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xA76acF000C890b0DD7AEEf57627d9899F955d026"
],
"implementations": [
"scr:0x105B9baaF75dA556c0206159481243163fAea1c9"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1753067278,
"transactionHash": "0x00b655406a3deb852f16f951030e57119d4b49d018f61718f4784f7fdc325880",
"implementations": [
"scr:0x105B9baaF75dA556c0206159481243163fAea1c9"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0xAf9a61Aa21aB4a2fdbc88e81363D2e3D359749dd#code"
},
{
"name": "MasterMinter",
"isVerified": true,
"address": "scr:0xb5cE5F2277CFc547F48aA8263838FAEd424ae4BE",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": " Contract that uses controllers to manage minters for USDC on Scroll.\n",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0xb5cE5F2277CFc547F48aA8263838FAEd424ae4BE#code"
},
{
"name": "ScrollStandardERC20",
"isVerified": true,
"address": "scr:0xC7d86908ccf644Db7C69437D5852CedBC1aD3f69",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "Contract of the ERC20 standard token used by the ERC20 factory.\n",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0xC7d86908ccf644Db7C69437D5852CedBC1aD3f69#code"
},
{
"name": "SCRToken",
"isVerified": true,
"address": "scr:0xd29687c813D741E2F938F4aC377128810E217b1b",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xde4972789EA56c4e7ac7Ba655EaFe73a30155F1e"
],
"implementations": [
"scr:0x7600174E2a730a05da046fFA8Fc32DEC27FfdDC8"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1725336741,
"transactionHash": "0xeef949ed328baf69a9b8cb4e33f652f4f5047ef736aa53324acf6a00c8b64b31",
"implementations": [
"scr:0x7600174E2a730a05da046fFA8Fc32DEC27FfdDC8"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0xd29687c813D741E2F938F4aC377128810E217b1b#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "scr:0xde4972789EA56c4e7ac7Ba655EaFe73a30155F1e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "scroll",
"description": "* Roles:\n * **owner**: ScrollOwner",
"discoveryDrivenData": true,
"url": "https://scrollscan.com/address/scr:0xde4972789EA56c4e7ac7Ba655EaFe73a30155F1e#code"
}
]
},
"escrows": [
{
"address": "0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9",
"sinceTimestamp": 1696782323,
"tokens": "*",
"excludedTokens": [
"rsETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0xfF8238be22cC583b3d69A76da9d84Da7788c0ee9"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0x85d366c40632340d9e835fdd0a1646909a56d60c680373f15f9d36878ff13029",
"implementations": [
"eth:0x9218732389D80f9b8723C3f32a38865B7a63564A"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0x4015Fc868C06689ABEba4a9dC8FA43B804F6239c"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0xfF8238be22cC583b3d69A76da9d84Da7788c0ee9"
]
}
],
"upgradableBy": [
{
"name": "Scroll Security Council",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367",
"sinceTimestamp": 1696782323,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x79b6eAbfFAa958FDF2Aa2Bf632878bD323DCbF69"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0xcad9f31340db6aca3a5da0d704ee33a9b6c43a5b1be4406cc0ed33edbdd7c92e",
"implementations": [
"eth:0xAf2F898a8680cb52766ABE0588ebe6b9bFe37845"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0x72981fD00087fF4F60aBFdE9f353cB1912A37fb6"
]
},
{
"timestamp": 1745301695,
"transactionHash": "0x2c09704f5717cd65e31ea854b8c6a5229b841fcabc5bcbbbb1117f13b9f60d21",
"implementations": [
"eth:0xc6326109E33465d6d61e4Cb7AFCe7B1bE7cfF868"
]
},
{
"timestamp": 1745564819,
"transactionHash": "0x783703d4e94de48edb75261149a540cbf7abb7ef077865c11080e622a508ab86",
"implementations": [
"eth:0x84791281EF5cb8Af5dCd4c122f7A42FeD38Fef5b"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0x79b6eAbfFAa958FDF2Aa2Bf632878bD323DCbF69"
]
}
],
"upgradableBy": [
{
"name": "Scroll Security Council",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0xb2b10a289A229415a124EFDeF310C10cb004B6ff",
"sinceTimestamp": 1696782323,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0xb2b10a289A229415a124EFDeF310C10cb004B6ff",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x40c3C3dEa3B7D6d117E6713377144fD8EE6D6c97"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696782323,
"transactionHash": "0x12f874f5ca5a8dbdc5162db5179a4e4b753f4fcff8dab3f416bd1ce707ecb9ff",
"implementations": [
"eth:0xBAd002fB13adFfcbCba57a4d4a43886f3F4C56cb"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0x7F512E2E9dfC4552941D99A5b2405BBcF5781C2c"
]
},
{
"timestamp": 1755485183,
"transactionHash": "0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c",
"implementations": [
"eth:0x40c3C3dEa3B7D6d117E6713377144fD8EE6D6c97"
]
}
],
"upgradableBy": [
{
"name": "Scroll Security Council",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0xb2b10a289A229415a124EFDeF310C10cb004B6ff#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B",
"sinceTimestamp": 1696919351,
"tokens": [
"USDC"
],
"contract": {
"isVerified": true,
"address": "eth:0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0x56ce8A8E8399f6cD5e7e4f549E8BfD673f2AfF5e"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696919351,
"transactionHash": "0x394b36151c614a7dfd048ddc1085046d2a50e5fd54af4c335d4a08aa79dd773d",
"implementations": [
"eth:0x6667123b5017AAB9945F73345848B82D7A953AA8"
]
},
{
"timestamp": 1708590023,
"transactionHash": "0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826",
"implementations": [
"eth:0x56ce8A8E8399f6cD5e7e4f549E8BfD673f2AfF5e"
]
}
],
"upgradableBy": [
{
"name": "Scroll Security Council",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x67260A8B73C5B77B55c1805218A42A7A6F98F515",
"sinceTimestamp": 1696920095,
"tokens": [
"DAI"
],
"contract": {
"isVerified": true,
"address": "eth:0x67260A8B73C5B77B55c1805218A42A7A6F98F515",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072"
],
"implementations": [
"eth:0xBAd002fB13adFfcbCba57a4d4a43886f3F4C56cb"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696920095,
"transactionHash": "0x9776779beb429ea826a81a8c1c5f782933bfc8ce568afa1c6f2c2b866be2a3a5",
"implementations": [
"eth:0xBAd002fB13adFfcbCba57a4d4a43886f3F4C56cb"
]
}
],
"upgradableBy": [
{
"name": "Scroll Security Council",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x67260A8B73C5B77B55c1805218A42A7A6F98F515#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x6625C6332c9F91F2D27c304E729B86db87A3f504",
"sinceTimestamp": 1696920503,
"tokens": [
"wstETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x6625C6332c9F91F2D27c304E729B86db87A3f504",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xCC2C53556Bc75217cf698721b29071d6f12628A9"
],
"implementations": [
"eth:0xF4f2066EE72D62e3caF9678459149BA7FCf2262F"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1696920503,
"transactionHash": "0xec5c25ea4b3e6d1dc9fa4cb7b7dd37a7a245a171cd3d16fb312628b5ecc9e841",
"implementations": [
"eth:0xBAd002fB13adFfcbCba57a4d4a43886f3F4C56cb"
]
},
{
"timestamp": 1709624939,
"transactionHash": "0xd755174ba6bacec85b68b77c9ec2a8b966955746be59a6efa932f47c37dda482",
"implementations": [
"eth:0xF4f2066EE72D62e3caF9678459149BA7FCf2262F"
]
}
],
"description": "Custom token escrow with third-party governance, using the canonical bridge only for messaging.",
"url": "https://etherscan.io/address/0x6625C6332c9F91F2D27c304E729B86db87A3f504#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "Custom escrow"
}
]
},
"chainId": 1
},
{
"address": "0xA033Ff09f2da45f0e9ae495f525363722Df42b2a",
"sinceTimestamp": 1713173507,
"tokens": [
"pufETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xA033Ff09f2da45f0e9ae495f525363722Df42b2a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x9eBf2f33526CD571f8b2ad312492cb650870CFd6"
],
"implementations": [
"eth:0x08D77Ea90DB9BF6c0d3f66E6b8394DA2E81B9a03"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1713173507,
"transactionHash": "0xa2ff9275d6280e3cc298653463c5d8423c44cfbc66a52a9a138becbb106dc0f8",
"implementations": [
"eth:0xc4d46E8402F476F269c379677C99F18E22Ea030e"
]
},
{
"timestamp": 1713173507,
"transactionHash": "0xe03abd155a10591ed1fa4a1e2ad0d6042549bfd67769dbf6bd66d25743950905",
"implementations": [
"eth:0x08D77Ea90DB9BF6c0d3f66E6b8394DA2E81B9a03"
]
},
{
"timestamp": 1713173507,
"transactionHash": "0xb367f770c26a72ea837a51c2c1fc84a3396914db1d58c020177b207e0f876a79",
"implementations": [
"eth:0x08D77Ea90DB9BF6c0d3f66E6b8394DA2E81B9a03"
]
}
],
"description": "Custom token escrow with third-party governance, using the canonical bridge only for messaging.",
"url": "https://etherscan.io/address/0xA033Ff09f2da45f0e9ae495f525363722Df42b2a#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "Custom escrow"
}
]
},
"chainId": 1
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkProgramHashes": [
{
"title": "Scroll program",
"description": "Proves the correct STF of Scroll L2 before the Euclid upgrade (V2).",
"proverSystemProject": "openvmprover",
"verificationStatus": "notVerified",
"hash": "0x30513ba1873ce1b9598c4faf101dccd32498e93c39e1f31a423390cbb1f81f7a"
},
{
"title": "Scroll program",
"description": "Proves the correct STF of Scroll L2 before the Euclid upgrade (V2).",
"proverSystemProject": "openvmprover",
"verificationStatus": "notVerified",
"hash": "0x0a1904dbfff4614fb090b4b3864af4874f12680c32f07889e9ede8665097e5ec"
},
{
"title": "Executable of the Scroll bundle program",
"description": "Proves the correct execution of a bundle of Scroll L2 blocks, which is the unit of L2 state finalisation from L1’s perspective.",
"proverSystemProject": "openvmprover",
"verificationStatus": "notVerified",
"hash": "0x001e7bcb266824cb08ad303990e90a9c4b901eaaa52e562e513df47d4c168949"
},
{
"title": "Config of the Scroll bundle program",
"description": "This is not a ZK program, but a commitment to the config of Scroll bundle program (bundle leaf commitment). It also needs to be checked to verify the expected ZK verification.",
"programUrl": "https://github.com/scroll-tech/zkvm-prover/tree/v0.2.0/crates/circuits/bundle-circuit",
"proverSystemProject": "openvmprover",
"verificationStatus": "notVerified",
"hash": "0x0038553adf417a6a3df35d2fdfd14b892f1e49ba18937ece7960c1e7cee6e3dc"
},
{
"title": "Executable of the Scroll bundle program",
"description": "Proves the correct execution of a bundle of Scroll L2 blocks, which is the unit of L2 state finalisation from L1’s perspective.",
"programUrl": "https://github.com/scroll-tech/zkvm-prover/tree/0.5.2/crates/circuits/bundle-circuit",
"proverSystemProject": "openvmprover",
"verificationStatus": "successful",
"verificationSteps": "\nSteps due to the guide here: [https://scrollzkp.notion.site/Prover-Architecture-Post-Euclid-1de7792d22af80e3a8ecdd03b5f02174](https://scrollzkp.notion.site/Prover-Architecture-Post-Euclid-1de7792d22af80e3a8ecdd03b5f02174).\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 `docker ps`.\n2. Checkout the correct branch in [zkvm-prover](https://github.com/scroll-tech/zkvm-prover/tree/master) repo: `git checkout 0.5.2` Commit hash should be `8f29f60cc73495e8586338a67433a812097427c4`.\n3. Build the guest programs from the root repo dir: `make build-guest`. It will regenerate `bundle_exe_commit.rs`. \n4. Run `compress_commitment` function from [https://scrollzkp.notion.site/Prover-Architecture-Post-Euclid-1de7792d22af80e3a8ecdd03b5f02174](https://scrollzkp.notion.site/Prover-Architecture-Post-Euclid-1de7792d22af80e3a8ecdd03b5f02174) on the `COMMIT` array from the previous step to generate `digest_2` value. A sample rust implementation is: \n ```\nuse openvm_stark_sdk::p3_baby_bear::BabyBear;\nuse openvm_stark_sdk::p3_bn254_fr::Bn254Fr;\nuse openvm_stark_sdk::openvm_stark_backend::p3_field::FieldAlgebra;\nuse openvm_stark_sdk::openvm_stark_backend::p3_field::PrimeField32;\n\nfn compress_commitment(commitment: &[u32; 8]) -> Bn254Fr {\n let order = Bn254Fr::from_canonical_u64(BabyBear::ORDER_U32 as u64);\n\n let mut base = Bn254Fr::ONE; // from PrimeCharacteristicRing\n let mut compressed = Bn254Fr::ZERO; // from PrimeCharacteristicRing\n\n for val in commitment {\n compressed += Bn254Fr::from_canonical_u64(*val as u64) * base;\n base *= order;\n }\n\n compressed\n} \n```\n ",
"hash": "0x003ac2e012d8a7fb1495d94839fe36559b52fd6d60a532884c7558de2b88bf72"
},
{
"title": "Config of the Scroll bundle program",
"description": "This is not a ZK program, but a commitment to the config of Scroll bundle program (bundle leaf commitment). It also needs to be checked to verify the expected ZK verification.",
"programUrl": "https://github.com/scroll-tech/zkvm-prover/tree/0.5.2/crates/circuits/bundle-circuit",
"proverSystemProject": "openvmprover",
"verificationStatus": "successful",
"verificationSteps": "\nSteps due to the guide here: [https://scrollzkp.notion.site/Prover-Architecture-Post-Euclid-1de7792d22af80e3a8ecdd03b5f02174](https://scrollzkp.notion.site/Prover-Architecture-Post-Euclid-1de7792d22af80e3a8ecdd03b5f02174).\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 `docker ps`.\n2. Checkout the correct branch in [zkvm-prover](https://github.com/scroll-tech/zkvm-prover/tree/master) repo: `git checkout 0.5.2` Commit hash should be `8f29f60cc73495e8586338a67433a812097427c4`.\n3. Build the guest programs from the root repo dir: `make build-guest`. It will regenerate `circuits/bundle-circuit/bundle_leaf_commit.rs`. \n4. Run `compress_commitment` function from [https://scrollzkp.notion.site/Prover-Architecture-Post-Euclid-1de7792d22af80e3a8ecdd03b5f02174](https://scrollzkp.notion.site/Prover-Architecture-Post-Euclid-1de7792d22af80e3a8ecdd03b5f02174) on the `COMMIT` array from the previous step to generate `digest_2` value. A sample rust implementation is: \n ```\nuse openvm_stark_sdk::p3_baby_bear::BabyBear;\nuse openvm_stark_sdk::p3_bn254_fr::Bn254Fr;\nuse openvm_stark_sdk::openvm_stark_backend::p3_field::FieldAlgebra;\nuse openvm_stark_sdk::openvm_stark_backend::p3_field::PrimeField32;\n\nfn compress_commitment(commitment: &[u32; 8]) -> Bn254Fr {\n let order = Bn254Fr::from_canonical_u64(BabyBear::ORDER_U32 as u64);\n\n let mut base = Bn254Fr::ONE; // from PrimeCharacteristicRing\n let mut compressed = Bn254Fr::ZERO; // from PrimeCharacteristicRing\n\n for val in commitment {\n compressed += Bn254Fr::from_canonical_u64(*val as u64) * base;\n base *= order;\n }\n\n compressed\n} \n```\n ",
"hash": "0x009305f0762291e3cdd805ff6d6e81f1d135dbfdeb3ecf30ad82c3855dde7909"
},
{
"title": "Executable of the Scroll bundle program",
"description": "Proves the correct execution of a bundle of Scroll L2 blocks, which is the unit of L2 state finalisation from L1's perspective.",
"programUrl": "https://github.com/scroll-tech/zkvm-prover/tree/v0.7.1/crates/circuits/bundle-circuit",
"proverSystemProject": "openvmprover",
"verificationStatus": "notVerified",
"hash": "0x0062333dc88631be7af046cc8d3c24f346de172aa2030a28b445ab500889d297"
}
]
}
+2 -1
+2 -1
{
"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 4\n * **aggchainSigners**: EOA 2\n * **forceBatchAddress**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth: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 OwnerContract\n * **batcherHash**: EOA 5\n * **owner**: EOA 3",
"upgradableBy": [
{
"name": "OwnerContract",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth: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 allows for permissioned state proposals without public challenges, and forced transactions.\n* Roles:\n * **admin**: ProxyAdmin; ultimately OwnerContract",
"upgradableBy": [
{
"name": "OwnerContract",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth: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 OwnerContract",
"upgradableBy": [
{
"name": "OwnerContract",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth: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/eth: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/eth: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/eth: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/eth: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/eth: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 OwnerContract",
"upgradableBy": [
{
"name": "OwnerContract",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth: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 PermissionedDisputeGame.\n* Roles:\n * **admin**: ProxyAdmin; ultimately OwnerContract",
"upgradableBy": [
{
"name": "OwnerContract",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth: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 OwnerContract",
"upgradableBy": [
{
"name": "OwnerContract",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth: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/eth: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/eth:0x305D1C0EED9a0291686f3BfDf1F5E54aaeeF80e4#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: OwnerContract",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x313ce9Cec2070B519f13BDaFe07eabb4f215FEE6#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 OwnerContract",
"upgradableBy": [
{
"name": "OwnerContract",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth: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 OwnerContract",
"upgradableBy": [
{
"name": "OwnerContract",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x85d37236f063C687d056b3604CBEe4B60d124858#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 OwnerContract",
"upgradableBy": [
{
"name": "OwnerContract",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xAecF995ABf9E7eDE7ae0CE65E60622C9eD84823a#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/eth: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/eth: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/eth: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/eth: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/eth:0x3622Fcf450ca40a340b7492Ae5F60E7c7Ea68aB3#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
}
],
"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
}
],
"zkProgramHashes": [
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.3.3-post.4/crates/pessimistic-proof-program",
"verificationStatus": "notVerified",
"verificationStatus": "successful",
"verificationSteps": "\n Prepare:\n \n 1. Install cargo make: `cargo install --debug --locked cargo-make`\n 2. Install sp1 toolchain: `curl -L https://sp1up.succinct.xyz/ | bash`, then `sp1up`\n 3. Install docker [https://docs.docker.com/get-started/get-docker/](https://docs.docker.com/get-started/get-docker/)\n \n Verify:\n \n 1. 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`\n 2. Make sure docker is running by running `docker ps`\n 3. From the root dir: `cargo make install-cargo-prove` to install the correct version of sp1 toolchain\n 4. From the root dir: `cargo make pp-elf` to generate pessimistic program elf from sources\n 5. From the pessimistic-proof/elf dir: `cargo prove vkey --elf riscv32im-succinct-zkvm-elf` to check the verification key of this elf\n ",
"hash": "0x00eff0b6998df46ec388bb305618089ae3dc74e513e7676b2e1909694f49cc30"
},
{
"title": "Pessimistic program of agglayer",
"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": "sp1",
"programUrl": "https://github.com/agglayer/agglayer/tree/v0.4.4/crates/pessimistic-proof",
"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 [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.\n ",
"hash": "0x000055f14384bdb5bb092fd7e5152ec31856321c5a30306ab95836bdf5cdb639"
}
]
}