515d3131 (main)
and
b2f322ed (PR)
+1 -1
+1 -1
{
"baseTimestamp": 1766146814,
"baseTimestamp": 1767003412,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+19 -12
+17 -10
{
"ethereum": {
"roles": [
{
"id": "Operator",
"name": "Operator",
"description": "Permissioned to regularly update the state of the L2 on L1. Each state update must have been proven via the SHARP verifier and contains state diffs for data availability.",
"accounts": [
{
"address": "eth:0x17b287122363a0a6dBA7F185347DFcfb9816dA6e",
"type": "EOA",
"isVerified": true,
"name": "EOA 1",
"url": "#EOA-1-and-EOA-3"
},
{
"address": "eth:0xCBe6fbf5e3c427013688E04D0fDE56705890c4bE",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-1-and-EOA-3"
}
],
"chain": "ethereum",
"discoveryDrivenData": true
},
{
"id": "Governor",
"name": "Governor",
"description": "Permissioned to manage the Operator role, finalize state and change critical parameters like the programHash, configHash, or message cancellation delay in the core contract.",
"accounts": [
{
"address": "eth:0x57814cC6e075f517781cB7c3B42897B3Bb2C54d8",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "#Safe"
}
],
"chain": "ethereum",
"discoveryDrivenData": true
}
],
"actors": [
{
"id": "Safe",
"name": "Safe",
"description": "A Multisig with 3/5 threshold. \n* Can upgrade **with no delay**\n * StarkPerpetual \n* Can interact with StarkPerpetual\n * manage the token admin role \n* A Governor - acting directly",
"accounts": [
{
"address": "eth:0x57814cC6e075f517781cB7c3B42897B3Bb2C54d8",
"type": "Contract",
"isVerified": true,
"name": "0x5781…54d8",
"url": "https://etherscan.io/address/0x57814cC6e075f517781cB7c3B42897B3Bb2C54d8"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xb8E3c28e88F33B9F61a37E0eE86d29C48f1cAE09",
"type": "EOA",
"isVerified": true,
"name": "0xb8E3…AE09",
"url": "https://etherscan.io/address/0xb8E3c28e88F33B9F61a37E0eE86d29C48f1cAE09"
},
{
"address": "eth:0x656A28457C85483AA80499A4E8A739129CC77247",
"type": "EOA",
"isVerified": true,
"name": "0x656A…7247",
"url": "https://etherscan.io/address/0x656A28457C85483AA80499A4E8A739129CC77247"
},
{
"address": "eth:0xDcaA8bfe9644c27eF3b40EaCB7cE7535D3223798",
"type": "EOA",
"isVerified": true,
"name": "0xDcaA…3798",
"url": "https://etherscan.io/address/0xDcaA8bfe9644c27eF3b40EaCB7cE7535D3223798"
},
{
"address": "eth:0x0a7B0Ac8d40754545D5C1fD3607Ba64678a6CBC5",
"type": "EOA",
"isVerified": true,
"name": "0x0a7B…CBC5",
"url": "https://etherscan.io/address/0x0a7B0Ac8d40754545D5C1fD3607Ba64678a6CBC5"
},
{
"address": "eth:0x2818035FC753cAf8843C440919cc183bF7Da3742",
"type": "EOA",
"isVerified": true,
"name": "0x2818…3742",
"url": "https://etherscan.io/address/0x2818035FC753cAf8843C440919cc183bF7Da3742"
}
],
"discoveryDrivenData": true
},
{
"id": "SHARP Multisig",
"name": "SHARP Multisig",
"description": "A Multisig with 2/4 threshold. \n* Can upgrade **with 8d delay**\n * SHARPVerifierCallProxy [via: - acting directly with 8d delay]\n* Can interact with SHARPVerifierCallProxy\n * manage the upgrade admin amd access control roles \n * set custom implementations for specific operators (changes the verifier based on who calls it) ",
"accounts": [
{
"address": "eth:0x21F9eC47b19d95b5C2DDFB6Ae5D4F92fAdacAEc4",
"type": "Contract",
"isVerified": true,
"name": "0x21F9…AEc4",
"url": "https://etherscan.io/address/0x21F9eC47b19d95b5C2DDFB6Ae5D4F92fAdacAEc4"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x0405107a60391Eb51821be373ff978115Ee58488",
"type": "EOA",
"isVerified": true,
"name": "0x0405…8488",
"url": "https://etherscan.io/address/0x0405107a60391Eb51821be373ff978115Ee58488"
},
{
"address": "eth:0x59232aC80E6d403b6381393e52f4665ECA328558",
"type": "EOA",
"isVerified": true,
"name": "0x5923…8558",
"url": "https://etherscan.io/address/0x59232aC80E6d403b6381393e52f4665ECA328558"
},
{
"address": "eth:0xebc8416179fE90854fe8B3f774801165572cfD7F",
"type": "EOA",
"isVerified": true,
"name": "0xebc8…fD7F",
"url": "https://etherscan.io/address/0xebc8416179fE90854fe8B3f774801165572cfD7F"
},
{
"address": "eth:0x955B978F3ee7818dA71fA25c676062E6BC462Fec",
"type": "EOA",
"isVerified": true,
"name": "0x955B…2Fec",
"url": "https://etherscan.io/address/0x955B978F3ee7818dA71fA25c676062E6BC462Fec"
}
],
"discoveryDrivenData": true
},
{
"id": "GnosisSafe",
"name": "GnosisSafe",
"description": "A Multisig with 2/3 threshold. \n* Can interact with AggregationRouterV5\n * destroy the contract and rescue funds from it ",
"id": "Safe",
"name": "Safe",
"description": "A Multisig with 3/4 threshold. \n* Can interact with AggregationRouterV5\n * destroy the contract and rescue funds from it ",
"accounts": [
{
"address": "eth:0x5E89f8d81C74E311458277EA1Be3d3247c7cd7D1",
"type": "Contract",
"isVerified": true,
"name": "0x5E89…d7D1",
"url": "https://etherscan.io/address/0x5E89f8d81C74E311458277EA1Be3d3247c7cd7D1"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xD8A6A3ca1739423de5F634dFAa8BA224EAf16d0e",
"type": "EOA",
"isVerified": true,
"name": "0xD8A6…6d0e",
"url": "https://etherscan.io/address/0xD8A6A3ca1739423de5F634dFAa8BA224EAf16d0e"
},
{
"address": "eth:0x223c0EF36fEe905a40175d92704b1d3624218EE7",
"type": "EOA",
"isVerified": true,
"name": "0x223c…8EE7",
"url": "https://etherscan.io/address/0x223c0EF36fEe905a40175d92704b1d3624218EE7"
},
{
"address": "eth:0xB1A308e7F02798377b7acF685E997E3D774c5863",
"type": "EOA",
"isVerified": true,
"name": "0xB1A3…5863",
"url": "https://etherscan.io/address/0xB1A308e7F02798377b7acF685E997E3D774c5863"
},
{
"address": "eth:0x3A6ED6885608Ead8174789a81Eb2B05600ca89F8",
"type": "EOA",
"isVerified": true,
"name": "0x3A6E…89F8",
"url": "https://etherscan.io/address/0x3A6ED6885608Ead8174789a81Eb2B05600ca89F8"
},
{
"address": "eth:0x2BB718a3986C36c6E02D8d15cdA4370820D08169",
"type": "EOA",
"isVerified": true,
"name": "0x2BB7…8169",
"url": "https://etherscan.io/address/0x2BB718a3986C36c6E02D8d15cdA4370820D08169"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1-and-EOA-3",
"name": "EOA 1 and EOA 3",
"accounts": [
{
"address": "eth:0x17b287122363a0a6dBA7F185347DFcfb9816dA6e",
"type": "EOA",
"isVerified": true,
"name": "0x17b2…dA6e",
"url": "https://etherscan.io/address/0x17b287122363a0a6dBA7F185347DFcfb9816dA6e"
},
{
"address": "eth:0xCBe6fbf5e3c427013688E04D0fDE56705890c4bE",
"type": "EOA",
"isVerified": true,
"name": "0xCBe6…c4bE",
"url": "https://etherscan.io/address/0xCBe6fbf5e3c427013688E04D0fDE56705890c4bE"
}
],
"chain": "ethereum",
"description": "* An Operator - acting directly",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x8847c33C6AEB53bf9a43D6b5579e9146478e6D3a",
"type": "EOA",
"isVerified": true,
"name": "0x8847…6D3a",
"url": "https://etherscan.io/address/0x8847c33C6AEB53bf9a43D6b5579e9146478e6D3a"
}
],
"chain": "ethereum",
"description": "* Can interact with StarkPerpetual\n * manage supported tokens ",
"discoveryDrivenData": true
},
{
"id": "EOA-4,-EOA-5-and-EOA-6",
"name": "EOA 4, EOA 5 and EOA 6",
"accounts": [
{
"address": "eth:0x38ACC82ED19e303841e222d7e933846001F969F8",
"type": "EOA",
"isVerified": true,
"name": "0x38AC…69F8",
"url": "https://etherscan.io/address/0x38ACC82ED19e303841e222d7e933846001F969F8"
},
{
"address": "eth:0x5C37D9fCD71F8d0D9E11a58b73D49148cf3A0323",
"type": "EOA",
"isVerified": true,
"name": "0x5C37…0323",
"url": "https://etherscan.io/address/0x5C37D9fCD71F8d0D9E11a58b73D49148cf3A0323"
},
{
"address": "eth:0x811aBa59F2486A0a6D93b8c708086d9A789dcFe2",
"type": "EOA",
"isVerified": true,
"name": "0x811a…cFe2",
"url": "https://etherscan.io/address/0x811aBa59F2486A0a6D93b8c708086d9A789dcFe2"
}
],
"chain": "ethereum",
"description": "* Can interact with EdgeXDepositor\n * withdraw any funds from this deposit wrapper contract by reaching a threshold of 2 signers ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "StarkPerpetual",
"isVerified": true,
"address": "eth:0xfAaE2946e846133af314d1Df13684c89fA7d83DD",
"upgradeability": {
"proxyType": "StarkWare diamond",
"admins": [
"eth:0x57814cC6e075f517781cB7c3B42897B3Bb2C54d8"
],
"implementations": [
"eth:0x8C43C9bec15d82D153C52518030e0a9590ABD35d",
"eth:0x540Ad8576d2F90f28994ab001622F964945854A8",
"eth:0x1BC9C618B7FA6b5EfAAD31DC801eB55c608B9310",
"eth:0x45de249eEa8f9CDB70943B17CceDeb42F5BA0175",
"eth:0x31e2d974BaC547101413c24C23443AD488423f64"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720435943,
"transactionHash": "0xb4a37a973c29b0213d2622a6ab1faac67ac73ca271c14664818b3f9604cb7eaf",
"implementations": [
"eth:0x8C43C9bec15d82D153C52518030e0a9590ABD35d",
"eth:0x540Ad8576d2F90f28994ab001622F964945854A8",
"eth:0x1BC9C618B7FA6b5EfAAD31DC801eB55c608B9310",
"eth:0x45de249eEa8f9CDB70943B17CceDeb42F5BA0175",
"eth:0x31e2d974BaC547101413c24C23443AD488423f64"
]
}
],
"description": "Central Validium contract. Receives (verified) state roots from the Operator, allows users to consume L2 -> L1 messages and send L1 -> L2 messages. Critical configuration values for the L2's logic are defined here by various governance roles.\n* Roles:\n * **admin**: Safe\n * **operators**: EOA 1, EOA 3\n * **tokenAdmins**: EOA 2",
"upgradableBy": [
{
"name": "Safe",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xfAaE2946e846133af314d1Df13684c89fA7d83DD#code"
},
{
"name": "SHARPVerifierCallProxy",
"isVerified": true,
"address": "eth:0x47312450B3Ac8b5b8e247a6bB6d523e7605bDb60",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x21F9eC47b19d95b5C2DDFB6Ae5D4F92fAdacAEc4"
],
"implementations": [
"eth:0x3597c5CBCbCB30079a0bD2A68cDE5f98272f9feb"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1635080785,
"transactionHash": "0x80ebb7a22a207d00e26464db2f8a719d43eb3b836740a693aad13d5ef922f5e4",
"implementations": [
"eth:0xD4C4044ACa68ebBcB81B13cC2699e1Bca2d3F458"
]
},
{
"timestamp": 1651510161,
"transactionHash": "0x604e235c6207b7909f6fc8dc0bd86b410e935dcf2f6f6bd37a5567a89379353a",
"implementations": [
"eth:0xD4C4044ACa68ebBcB81B13cC2699e1Bca2d3F458"
]
},
{
"timestamp": 1659869409,
"transactionHash": "0xc31b74237a0c68aa1b95fe2ed28ad54cf6d7df42a8beab1ea947532c95dda20a",
"implementations": [
"eth:0xD4C4044ACa68ebBcB81B13cC2699e1Bca2d3F458"
]
},
{
"timestamp": 1678106063,
"transactionHash": "0xbaa8ffb1b7e5177dbf75de753b9b2ff2fc313b244ff910cfd6d7f1f6254b6e1a",
"implementations": [
"eth:0xD4C4044ACa68ebBcB81B13cC2699e1Bca2d3F458"
]
},
{
"timestamp": 1708939523,
"transactionHash": "0x31e3caf3940dde662a1e98580259f79963dc5e098793b6519311e201d4e19312",
"implementations": [
"eth:0xD4C4044ACa68ebBcB81B13cC2699e1Bca2d3F458"
]
},
{
"timestamp": 1708939523,
"transactionHash": "0x31e3caf3940dde662a1e98580259f79963dc5e098793b6519311e201d4e19312",
"implementations": [
"eth:0xD4C4044ACa68ebBcB81B13cC2699e1Bca2d3F458"
]
},
{
"timestamp": 1722161267,
"transactionHash": "0x7c71592ea4c455371365d843f1a21bbf647aad7d6fae12f7187650ce24805f00",
"implementations": [
"eth:0xD4C4044ACa68ebBcB81B13cC2699e1Bca2d3F458"
]
},
{
"timestamp": 1722197315,
"transactionHash": "0x4b25445a8e86b4620b9a19f747122b518d8973975ea73aa474b210395e277b66",
"implementations": [
"eth:0xD4C4044ACa68ebBcB81B13cC2699e1Bca2d3F458"
]
},
{
"timestamp": 1747066175,
"transactionHash": "0x0764cd09cc5c9a96b151dd222bf14b9c33111c80bdddf27721a6406f4c0e1f3f",
"implementations": [
"eth:0xD4C4044ACa68ebBcB81B13cC2699e1Bca2d3F458"
]
},
{
"timestamp": 1760862467,
"transactionHash": "0x7b4a25af246b28b6d5bed86942696273a84e57abc629b83072be370df2bdb797",
"implementations": [
"eth:0x3597c5CBCbCB30079a0bD2A68cDE5f98272f9feb"
]
},
{
"timestamp": 1765192091,
"transactionHash": "0xed93cf713d33ac63297d8c7e2eafc0d9f277b718b4074600536eb9a4205bcb81",
"implementations": [
"eth:0x3597c5CBCbCB30079a0bD2A68cDE5f98272f9feb"
]
}
],
"description": "Upgradable call proxy contract through which the SHARPVerifier can be called. A call proxy does not delegatecall and the storage context remains at the target contract. It allows SHARP Multisig to change the otherwise immutable verifier contract with 8d delay.\n* Roles:\n * **admin**: SHARP Multisig\n * **appGovernor**: SHARP Multisig\n * **governanceAdmin**: SHARP Multisig",
"upgradableBy": [
{
"name": "SHARP Multisig",
"delay": "8d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x47312450B3Ac8b5b8e247a6bB6d523e7605bDb60#code"
},
{
"name": "SHARPVerifier",
"isVerified": true,
"address": "eth:0xFE5e5b24FfE981C9faA0d4F36Ce346c3B22B0066",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Shared Starkware SHARP verifier used collectively by Starknet and other SN stack and StarkEx projects. It receives STARK proofs from the Prover and verifies the integrity of the offchain execution including a correctly computed state root which is part of the Program Output.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xFE5e5b24FfE981C9faA0d4F36Ce346c3B22B0066#code"
},
{
"name": "AggregationRouterV5",
"isVerified": true,
"address": "eth:0x1111111254EEB25477B68fb85Ed929f73A960582",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "1inch DEX aggregator supporting RFQ fills, limit-order fills and direct DEX swaps.\n* Roles:\n * **owner**: GnosisSafe",
"description": "1inch DEX aggregator supporting RFQ fills, limit-order fills and direct DEX swaps.\n* Roles:\n * **owner**: Safe",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x1111111254EEB25477B68fb85Ed929f73A960582#code"
},
{
"name": "FinalizableCommittee",
"isVerified": true,
"address": "eth:0x23bf3dcc14680162b7f5355aAbb56D31823c946e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "DAC with admin funtions to manage members. Admins are not discoverable and thus not shown here.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x23bf3dcc14680162b7f5355aAbb56D31823c946e#code"
},
{
"name": "GpsFactRegistryAdapter",
"isVerified": true,
"address": "eth:0x4abBc1826389aC0FEaA49E70c30a041b665e8562",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Adapter between the core contract and the SHARPVerifierCallProxy. Stores the Cairo programHash (`2530337539466159944237001094809327283009177793361359619481044346150483328860`).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x4abBc1826389aC0FEaA49E70c30a041b665e8562#code"
},
{
"name": "PerpetualEscapeVerifier",
"isVerified": true,
"address": "eth:0xaadFdB9CAc145c65f2284fBe24600d07fb37F7BD",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Special verifier for the escape() function.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xaadFdB9CAc145c65f2284fBe24600d07fb37F7BD#code"
},
{
"name": "EdgeXDepositor",
"isVerified": true,
"address": "eth:0xC0a1a1e4AF873E9A37a0caC37F3aB81152432Cc5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A deposit wrapper that allows users to deposit arbitrary tokens to EdgeX. Tokens are swapped to USDT via 1inch and deposited to edgeX. This deposit wrapper also has fast withdrawal support using liquidity providers, but it seems deprecated in practice. Standard direct deposits and withdrawals of USDT at the StarkPerpetual contract are fully supported.\n* Roles:\n * **signers**: EOA 4, EOA 5, EOA 6",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xC0a1a1e4AF873E9A37a0caC37F3aB81152432Cc5#code"
},
{
"name": "MemoryPageFactRegistry",
"isVerified": true,
"address": "eth:0xe583BcDE0160b637330b27a3ea1F3c02ba2eC460",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Auxiliary to the SHARPVerifier contract: Verified 'memory fact pages' get stored here. This is important as it registers all necessary onchain data produced by the verifier.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xe583BcDE0160b637330b27a3ea1F3c02ba2eC460#code"
}
]
},
"escrows": [
{
"address": "0xfAaE2946e846133af314d1Df13684c89fA7d83DD",
"sinceTimestamp": 1720435859,
"tokens": [
"USDT"
],
"contract": {
"isVerified": true,
"address": "eth:0xfAaE2946e846133af314d1Df13684c89fA7d83DD",
"upgradeability": {
"proxyType": "StarkWare diamond",
"admins": [
"eth:0x57814cC6e075f517781cB7c3B42897B3Bb2C54d8"
],
"implementations": [
"eth:0x8C43C9bec15d82D153C52518030e0a9590ABD35d",
"eth:0x540Ad8576d2F90f28994ab001622F964945854A8",
"eth:0x1BC9C618B7FA6b5EfAAD31DC801eB55c608B9310",
"eth:0x45de249eEa8f9CDB70943B17CceDeb42F5BA0175",
"eth:0x31e2d974BaC547101413c24C23443AD488423f64"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720435943,
"transactionHash": "0xb4a37a973c29b0213d2622a6ab1faac67ac73ca271c14664818b3f9604cb7eaf",
"implementations": [
"eth:0x8C43C9bec15d82D153C52518030e0a9590ABD35d",
"eth:0x540Ad8576d2F90f28994ab001622F964945854A8",
"eth:0x1BC9C618B7FA6b5EfAAD31DC801eB55c608B9310",
"eth:0x45de249eEa8f9CDB70943B17CceDeb42F5BA0175",
"eth:0x31e2d974BaC547101413c24C23443AD488423f64"
]
}
],
"url": "https://etherscan.io/address/0xfAaE2946e846133af314d1Df13684c89fA7d83DD#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": "StarkEx program used by ApeX and EdgeX",
"description": "Cairo program that implements an application-specific L2 with spot and perpetual trading functionality.",
"proverSystemProject": "stone",
"verificationStatus": "notVerified",
"hash": "2530337539466159944237001094809327283009177793361359619481044346150483328860"
},
{
"title": "Simple bootloader Cairo program (StarkWare_GpsStatementVerifier_2025_11)",
"description": "Cairo program that can sequentially run multiple programs to reduce the size of the public inputs, and recursively verify bootloader proofs.",
"proverSystemProject": "stwo",
"verificationStatus": "notVerified",
"hash": "37889379279861089970868356983774360253508326951064758033885675883862334778"
},
{
"title": "Applicative bootloader Cairo program (StarkWare_GpsStatementVerifier_2025_11)",
"description": "Cairo program that verifies the correct aggregation of several proofs of a base program.",
"proverSystemProject": "stwo",
"verificationStatus": "notVerified",
"hash": "3480185788024326007166778030599498673382667448173974782477620863541158415714"
}
]
}
+1 -1
{
"baseTimestamp": 1765205910,
"baseTimestamp": 1767004364,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+120 -87
+2 -2
{
"architectureImage": "zkstack-validium",
"dataAvailability": [
{
"name": "Data is not stored on chain",
"description": "The transaction data is not recorded on the Ethereum main chain. Transaction data is stored off-chain and only the hashes are posted onchain by the centralized Sequencer.",
"risks": [
{
"category": "Funds can be lost if",
"text": "the external data becomes unavailable.",
"isCritical": true
}
],
"references": [
{
"title": "ExecutorFacet - _commitOneBatch() function",
"url": "https://etherscan.io/address/0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A#code#F1#L50"
"url": "https://etherscan.io/address/0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691#code#F1#L50"
}
]
}
],
"exitMechanisms": [
{
"name": "Regular messaging",
"description": "The user initiates L2->L1 messages by submitting a regular transaction on this chain. When the block containing that transaction is settled, the message becomes available for processing on L1. ZK proofs are required to settle blocks.",
"risks": [],
"references": [
{
"title": "Withdrawing funds - ZKsync documentation",
"url": "https://docs.zksync.io/zksync-protocol/rollup/bridging-assets"
}
]
},
{
"name": "Forced messaging",
"description": "If the user experiences censorship from the operator with regular L2->L1 messaging they can submit their messages directly on L1. The system is then obliged to service this request or halt all messages from L1, including all forced withdrawals and deposits. Once the force operation is submitted and if the request is serviced, the operation follows the flow of a regular message.",
"risks": [],
"references": []
}
],
"forceTransactions": {
"name": "Users can't force all transactions",
"description": "If a user is censored by the L2 Sequencer, they cannot by default force their transaction via the L1 queue. An active TransactionFilterer contract which allows only whitelisted accounts to enqueue, prevents it. Even if a user was specifically whitelisted, there is no mechanism that forces L2 Sequencer to include transactions from the queue in an L2 block, as they have the choice to process the queue in order or not at all.",
"risks": [
{
"category": "Users can be censored if",
"text": "the operator refuses to include their transactions."
},
{
"category": "Users can be censored if",
"text": "the Operator does not specifically whitelist them in the TransactionFilterer."
}
],
"references": [
{
"title": "L1 - L2 interoperability - Developer's documentation",
"url": "https://docs.zksync.io/zksync-protocol/rollup/l1_l2_communication#priority-operations-1"
},
{
"title": "Mailbox facet",
"url": "https://etherscan.io/address/0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec#code#F1#L472"
"url": "https://etherscan.io/address/0x1e34aB39a9682149165ddeCc0583d238A5448B45#code#F1#L472"
},
{
"title": "TransactionFilterer",
"url": "https://etherscan.io/address/0x8319fede99061c6723c86d366a903e8fa3a0f541#code#F1#L29"
}
]
},
"operator": {
"name": "The system has a centralized operator",
"description": "The operator is the only entity that can propose blocks. A live and trustworthy operator is vital to the health of the system.",
"risks": [
{
"category": "MEV can be extracted if",
"text": "the operator exploits their centralized position and frontruns user transactions."
}
],
"references": []
},
"stateValidation": {
"description": "Each update to the system state must be accompanied by a ZK proof that ensures that the new state was derived by correctly applying a series of valid user transactions to the previous state. These proofs are then verified on Ethereum by a smart contract.",
"categories": [
{
"title": "Prover Architecture",
"description": "ZKsync Era proof system Boojum can be found [here](https://github.com/matter-labs/era-boojum/tree/main) and contains essential tools like the Prover, the Verifier, and other backend components. The specs of the system can be found [here](https://github.com/matter-labs/zksync-era/tree/main/prover)."
},
{
"title": "ZK Circuits",
"description": "ZKsync Era circuits are built from Boojum and are designed to replicate the behavior of the EVM. The source code can be found [here](https://github.com/matter-labs/era-zkevm_circuits/tree/main). The circuits are checked against tests that can be found [here](https://github.com/matter-labs/era-zkevm_test_harness/tree/main).",
"risks": [
{
"category": "Funds can be lost if",
"text": "the proof system is implemented incorrectly."
}
]
},
{
"title": "Verification Keys Generation",
"description": "SNARK verification keys can be generated and checked against the Ethereum verifier contract using [this tool](https://github.com/matter-labs/zksync-era/tree/main/prover/crates/bin/vk_setup_data_generator_server_fri). The system requires a trusted setup."
}
],
"proofVerification": {
"shortDescription": "ZKsync Era is a ZK-EVM rollup on Ethereum.",
"aggregation": true,
"requiredTools": [
{
"name": "Custom tool",
"version": "v14.2.0",
"link": "https://github.com/matter-labs/zksync-era/tree/prover-v14.2.0/prover/vk_setup_data_generator_server_fri"
}
],
"verifiers": [
{
"name": "ZKsyncEraVerifier",
"description": "ZKsync Era utilizes [Boojum](https://github.com/matter-labs/zksync-crypto/tree/main/crates/boojum) as the main proving stack for their system. Boojum is an implementation of the [Redshift](https://eprint.iacr.org/2019/1400.pdf) protocol. The protocol makes use of recursive proof aggregation. The final Redshift proof is wrapped in a SNARK (Plonk + KZG) proof.",
"verified": "no",
"contractAddress": "0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66",
"chainId": 1,
"subVerifiers": [
{
"name": "Final wrap",
"proofSystem": "Plonk SNARK",
"mainArithmetization": "Plonkish",
"mainPCS": "KZG",
"trustedSetup": "Aztec ceremony",
"link": "https://github.com/matter-labs/zksync-protocol/blob/main/crates/circuit_definitions/src/circuit_definitions/aux_layer/wrapper.rs"
},
{
"name": "Aggregation circuit",
"proofSystem": "Redshift",
"mainArithmetization": "Plonkish",
"mainPCS": "LPC",
"trustedSetup": "None",
"link": "https://github.com/matter-labs/zksync-protocol/blob/7dfcc81eccc3984793646a5a47e4cd68757955a2/crates/circuit_definitions/src/circuit_definitions/recursion_layer/mod.rs#L45"
},
{
"name": "Main circuit",
"proofSystem": "Redshift",
"mainArithmetization": "Plonkish",
"mainPCS": "LPC",
"trustedSetup": "None",
"link": "https://github.com/matter-labs/zksync-protocol/tree/main/crates/zkevm_circuits"
}
]
}
]
}
},
"upgradesAndGovernance": "\nThere are two main paths for contract upgrades in the shared ZK stack ecosystem - standard and emergency - both converging on the shared upgrade management contract ProtocolUpgradeHandler.\nThe standard path involves a governance proposal and voting through the DAO, multiple timelock delays and finally approval by the Guardians or 6 SecurityCouncil participants.\nThe emergency path allows for contract upgrades without any delay by the EmergencyUpgradeBoard, which acts as a 3/3 Multisig between SecurityCouncil, Guardians and the FoundationMultisig.\n## Standard path\n### On ZKsync Era\nDelegates can start new proposals by reaching a threshold of 21M ZK tokens on the ZKsync Era Rollup's ZkProtocolGovernor contract.\nThis launches a 3d 'voting delay' after which the 7d voting period starts. During these first two periods, the proposal can be canceled by the proposer or if it falls below the proposing threshold.\nA proposal is only successful if it reaches both quorum (630M ZK tokens) and simple majority. When it reaches quorum, a remaining voting period of 3d is guaranteed by a potential late quorum vote extension.\nIn the successful case, it can be queued in the 0s timelock which forwards it via the Gateway to Ethereum as an L2->L1 log.\n### On Ethereum\nAfter the execution of the proposal-containing batch (3h delay), the proposal is now picked up by the ProtocolUpgradeHandler and enters the 3d 'legal veto period'.\nThis serves as a window in which a veto could be coordinated offchain, to be then enforced by non-approval of Guardians and SecurityCouncil. A threshold of 2 Guardians can extend the veto period to 7d.\nAfter this a proposal enters a *waiting* state of 1mo, from which it can be immediately approved (cancelling the delay) by 6 participants of the SecurityCouncil.\nFor the unlikely case that the Security Council does not approve here, the Guardians can instead approve the proposal, or nobody. In the two latter cases, the waiting period is enforced in full.\nA proposal cannot be actively cancelled in the ProtocolUpgradeHandler, but will expire if not approved within the waiting period. An approved proposal now enters the *pendingExecution* state for a final delay of 1d and can then be executed.\n### Other governance tracks\nThere are two other tracks of Governance also starting with DAO Delegate proposals the ZKsync Era rollup: 1) Token Program Proposals that add new minters, allocations or upgrade the ZK token and\n2) Governance Advisory Proposals that e.g. change the ZK Credo or other offchain Governance Procedures without onchain targets.\nThe protocol for these two other tracks is similar to the first part of the standard path described above (albeit having different quorum and timelock values), and not passing over to the Ethereum L1.\nFurther customizations are that the ZkFoundationMultisig can propose to the ZkTokenGovernor without a threshold and that the Guardians' L2 alias can cancel proposals in the ZkTokenGovernor and the ZkGovOpsGovernor.\n## Emergency path\nSecurityCouncil (9/12), Guardians (5/8) and ZkFoundationMultisig (3/5) form a de-facto 3/3 Multisig\nby pushing an immediate upgrade proposal through the EmergencyUpgradeBoard, which circumvents all delays and executes immediately via the ProtocolUpgradeHandler.\n## Upgrade Delays\nThe cumulative duration of the upgrade paths from the moment of a voted 'successful' proposal is 4d 3h or 8d 3h (depending on Guardians extending the LegalVetoPeriod) for Standard, 0 for Emergency and 1mo 4d for the path in which the SecurityCouncil is not approving the proposal.\n## Freezing\nThe SecurityCouncil can freeze (pause withdrawals and settlement) all chains connected to the current ChainTypeManager.\nEither for a softFreeze of 12h or a hardFreeze of 7d.\nAfter a softFreeze and / or a hardFreeze, a proposal from the EmergencyUpgradeBoard has to be passed before subsequent freezes are possible.\nOnly the SecurityCouncil can unfreeze an active freeze.\n## ZK cluster Admin and Chain Admin\nApart from the paths that can upgrade all shared implementations, the ZK stack governance system defines other roles that can modify the system:\nA single *ZK cluster Admin* role who governs parameters in the shared contracts and a *Chain Admin* role (defined in each chain-specific diamond contract) for managing parameters of each individual ZK chain that builds on the stack.\nThese chain-specific actions include critical operations like setting a transaction filterer that can censor L1 -> L2 messages, changing the DA mode, migrating the chain to a different settlement layer and standard operations like setting fee parameters and adding / removing Validators in the ValidatorTimelock.\nFor rollups, data availability on Ethereum is validated by a RollupL1DAValidator contract (or a RelayedSLDAValidator on the Gateway). Each rollup can become a permanent rollup (through their Chain Admin) which disallows DA changes to non-whitelisted sources or settlement layers in the future.\nThe source of truth for rollup-compliant DA validator contracts is the RollupDAManager contract, which is administered via the ProtocolUpgradeHandler.\nZKsync Era's Chain Admin differs from the others as it also has the above *ZK cluster Admin* role in the shared ZK stack contracts.",
"upgradesAndGovernanceImage": "zkstack"
}
+70 -0
[
{
"projectId": "grvt",
"sinceTimestamp": 1742808587,
"untilTimestamp": 1766777387,
"type": "l2costs",
"subtype": "batchSubmissions",
"params": {
"formula": "sharedBridge",
"address": "0x8c0Bfc04AdA21fd496c55B8C50331f904306F564",
"signature": "function commitBatchesSharedBridge(uint256 _chainId, uint256 _processBatchFrom, uint256 _processBatchTo, bytes)",
"selector": "0x98f81962",
"firstParameter": 325
}
},
{
"projectId": "grvt",
"sinceTimestamp": 1766777387,
"type": "l2costs",
"subtype": "batchSubmissions",
"params": {
"formula": "sharedBridge",
"address": "0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"signature": "function commitBatchesSharedBridge(address _chainAddress, uint256 _processBatchFrom, uint256 _processBatchTo, bytes)",
"selector": "0x0db9eb87",
"firstParameter": "0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E"
}
},
{
"projectId": "grvt",
"sinceTimestamp": 1742808587,
"untilTimestamp": 1766777387,
"type": "liveness",
"subtype": "proofSubmissions",
"params": {
"formula": "sharedBridge",
"address": "0x8c0Bfc04AdA21fd496c55B8C50331f904306F564",
"signature": "function proveBatchesSharedBridge(uint256 _chainId, uint256, uint256, bytes)",
"selector": "0xe12a6137",
"firstParameter": 325
}
},
{
"projectId": "grvt",
"sinceTimestamp": 1742808587,
"untilTimestamp": 1766777387,
"type": "l2costs",
"subtype": "proofSubmissions",
"params": {
"formula": "sharedBridge",
"address": "0x8c0Bfc04AdA21fd496c55B8C50331f904306F564",
"signature": "function proveBatchesSharedBridge(uint256 _chainId, uint256, uint256, bytes)",
"selector": "0xe12a6137",
"firstParameter": 325
}
},
{
"projectId": "grvt",
"sinceTimestamp": 1766777387,
"type": "liveness",
"subtype": "proofSubmissions",
"params": {
"formula": "sharedBridge",
"address": "0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"signature": "function proveBatchesSharedBridge(address _chainAddress, uint256, uint256, bytes)",
"selector": "0x9271e450",
"firstParameter": "0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E"
}
},
{
"projectId": "grvt",
"sinceTimestamp": 1766777387,
"type": "l2costs",
"subtype": "proofSubmissions",
"params": {
"formula": "sharedBridge",
"address": "0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"signature": "function proveBatchesSharedBridge(address _chainAddress, uint256, uint256, bytes)",
"selector": "0x9271e450",
"firstParameter": "0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E"
}
},
{
"projectId": "grvt",
"sinceTimestamp": 1742808587,
"untilTimestamp": 1766777387,
"type": "liveness",
"subtype": "stateUpdates",
"params": {
"formula": "sharedBridge",
"address": "0x8c0Bfc04AdA21fd496c55B8C50331f904306F564",
"signature": "function executeBatchesSharedBridge(uint256 _chainId, uint256 _processBatchFrom, uint256 _processBatchTo, bytes)",
"selector": "0xcf02827d",
"firstParameter": 325
}
},
{
"projectId": "grvt",
"sinceTimestamp": 1742808587,
"untilTimestamp": 1766777387,
"type": "l2costs",
"subtype": "stateUpdates",
"params": {
"formula": "sharedBridge",
"address": "0x8c0Bfc04AdA21fd496c55B8C50331f904306F564",
"signature": "function executeBatchesSharedBridge(uint256 _chainId, uint256 _processBatchFrom, uint256 _processBatchTo, bytes)",
"selector": "0xcf02827d",
"firstParameter": 325
}
},
{
"projectId": "grvt",
"sinceTimestamp": 1766777387,
"type": "liveness",
"subtype": "stateUpdates",
"params": {
"formula": "sharedBridge",
"address": "0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"signature": "function executeBatchesSharedBridge(address _chainAddress, uint256 _processBatchFrom, uint256 _processBatchTo, bytes)",
"selector": "0xa085344d",
"firstParameter": "0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E"
}
},
{
"projectId": "grvt",
"sinceTimestamp": 1766777387,
"type": "l2costs",
"subtype": "stateUpdates",
"params": {
"formula": "sharedBridge",
"address": "0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"signature": "function executeBatchesSharedBridge(address _chainAddress, uint256 _processBatchFrom, uint256 _processBatchTo, bytes)",
"selector": "0xa085344d",
"firstParameter": "0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E"
}
}
]
+19 -66
{
"ethereum": {
"roles": [
{
"id": "Validator",
"name": "Validator",
"description": "Permissioned to call the functions to commit, prove, execute and revert L2 batches through the ValidatorTimelock in the main Diamond contract.",
"accounts": [
{
"address": "eth:0x0b114d4675Cb79507e68F2616c93e124122c6ef0",
"type": "EOA",
"isVerified": true,
"name": "EOA 1",
"url": "#EOA-1-and-EOA-2"
},
{
"address": "eth:0x58D14960E0a2be353eDdE61ad719196A2b816522",
"type": "EOA",
"isVerified": true,
"name": "EOA 2",
"url": "#EOA-1-and-EOA-2"
}
],
"chain": "ethereum",
"discoveryDrivenData": true
}
],
"roles": [],
"actors": [
{
"id": "EmergencyUpgradeBoard",
"name": "EmergencyUpgradeBoard",
"accounts": [
{
"address": "eth:0xECE8e30bFc92c2A8e11e6cb2e17B70868572E3f6",
"type": "Contract",
"isVerified": true,
"name": "0xECE8…E3f6",
"url": "https://etherscan.io/address/0xECE8e30bFc92c2A8e11e6cb2e17B70868572E3f6"
}
],
"chain": "ethereum",
"description": "A custom contract allowing a 3/3 of SecurityCouncil, ZK Foundation Multisig and Guardians to `executeEmergencyUpgrade()` via the ProtocolUpgradeHandler.\n* Can upgrade **with no delay**\n * BridgeHub [via: ProtocolUpgradeHandler → ProxyAdmin]\n * MessageRoot [via: ProtocolUpgradeHandler → ProxyAdmin]\n * CTMDeploymentTracker [via: ProtocolUpgradeHandler → ProxyAdmin]\n * L1AssetRouter [via: ProtocolUpgradeHandler → ProxyAdmin]\n * L1NativeTokenVault [via: ProtocolUpgradeHandler → ProxyAdmin]\n * ChainTypeManager [via: ProtocolUpgradeHandler → ProxyAdmin]\n * L1Nullifier [via: ProtocolUpgradeHandler → ProxyAdmin]\n * ChainAssetHandler [via: ProtocolUpgradeHandler → ProxyAdmin]\n * ProtocolUpgradeHandler [via: ProtocolUpgradeHandler → ProxyAdmin]\n* Can interact with BridgeHub\n * set critical contract addresses for the shared cluster, register settlement layers, pause and unpause migrations and the bridge and manage zk chain registration [via: ProtocolUpgradeHandler]\n* Can interact with L1NativeTokenVault\n * pause / unpause the bridge [via: ProtocolUpgradeHandler]\n* Can interact with ChainTypeManager\n * manage the shared ValidatorTimelock contract address and the admin role, register and execute upgrades (and set their deadlines), freeze, revert batches and set permissioned validators and fee params for all connected chains [via: ProtocolUpgradeHandler]\n* Can interact with L1Nullifier\n * pause, unpause and set critical escrow address references [via: ProtocolUpgradeHandler]\n* Can interact with ChainAssetHandler\n * pause, resume chain migrations [via: ProtocolUpgradeHandler]\n* Can interact with RollupDAManager\n * manage allowed rollup DA pairs (allowed to be used by rollups in permanent rollup mode) [via: ProtocolUpgradeHandler]",
"discoveryDrivenData": true
},
{
"id": "GrvtChainAdminMultisig",
"name": "GrvtChainAdminMultisig",
"description": "A Multisig with 2/3 threshold. \n* Can upgrade **with no delay**\n * GRVTTransactionFilterer \n * GRVTBridgeProxy \n* Can interact with GrvtZkEvmAdmin\n * set the conversion factor for gas token deposits \n* Can interact with Diamond\n * administrate operator roles for this chain in the ValidatorTimelock, manage fees, apply predefined upgrades, manage censorship through a TransactionFilterer, set DA mode, migrate the chain to whitelisted settlement layers (Chain Admin role) [via: GrvtZkEvmAdmin]",
"accounts": [
{
"address": "eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5",
"type": "Contract",
"isVerified": true,
"name": "0x3a23…19e5",
"url": "https://etherscan.io/address/0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b",
"type": "EOA",
"isVerified": true,
"name": "EOA 4",
"url": "#EOA-4"
"name": "EOA 2",
"url": "#EOA-2"
},
{
"address": "eth:0x29496817aB0820A5aDa4d5C656Ea8DF79Ba05F3A",
"type": "EOA",
"isVerified": true,
"name": "0x2949…5F3A",
"url": "https://etherscan.io/address/0x29496817aB0820A5aDa4d5C656Ea8DF79Ba05F3A"
},
{
"address": "eth:0x9A4484BBDae765A84c802Cf0A4777D8b16AB1270",
"type": "EOA",
"isVerified": true,
"name": "0x9A44…1270",
"url": "https://etherscan.io/address/0x9A4484BBDae765A84c802Cf0A4777D8b16AB1270"
}
],
"discoveryDrivenData": true
},
{
"id": "Matter Labs Multisig",
"name": "Matter Labs Multisig",
"description": "A Multisig with 5/8 threshold. \n* Can upgrade **with no delay**\n * ServerNotifier [via: EraChainAdminProxy → ProxyAdmin]\n* Can interact with BridgeHub\n * create new zk chains (based on the current version), register tokens (ZK cluster Admin role) [via: EraChainAdminProxy]\n* Can interact with ChainTypeManager\n * revert batches for any connected chain (ZK cluster Admin role) [via: EraChainAdminProxy]",
"accounts": [
{
"address": "eth:0x4e4943346848c4867F81dFb37c4cA9C5715A7828",
"type": "Contract",
"isVerified": true,
"name": "0x4e49…7828",
"url": "https://etherscan.io/address/0x4e4943346848c4867F81dFb37c4cA9C5715A7828"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x4A333c167Ce76C46149c6B0197977ae02aaeC929",
"type": "EOA",
"isVerified": true,
"name": "0x4A33…C929",
"url": "https://etherscan.io/address/0x4A333c167Ce76C46149c6B0197977ae02aaeC929"
},
{
"address": "eth:0x3F0009D00cc78979d00Eb635490F23E8d6aCc481",
"type": "EOA",
"isVerified": true,
"name": "0x3F00…c481",
"url": "https://etherscan.io/address/0x3F0009D00cc78979d00Eb635490F23E8d6aCc481"
},
{
"address": "eth:0x5C7E59Dba6557C7dAB3B69ccd3E309d1965Cf1B1",
"type": "EOA",
"isVerified": true,
"name": "0x5C7E…f1B1",
"url": "https://etherscan.io/address/0x5C7E59Dba6557C7dAB3B69ccd3E309d1965Cf1B1"
},
{
"address": "eth:0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc",
"type": "EOA",
"isVerified": true,
"name": "0x3068…d2Bc",
"url": "https://etherscan.io/address/0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc"
},
{
"address": "eth:0x702caCafA54B88e9c54449563Fb2e496e85c78b7",
"type": "EOA",
"isVerified": true,
"name": "0x702c…78b7",
"url": "https://etherscan.io/address/0x702caCafA54B88e9c54449563Fb2e496e85c78b7"
},
{
"address": "eth:0xFAdb20191Ab38362C50f52909817B74214CA79AE",
"type": "EOA",
"isVerified": true,
"name": "0xFAdb…79AE",
"url": "https://etherscan.io/address/0xFAdb20191Ab38362C50f52909817B74214CA79AE"
},
{
"address": "eth:0xfd03dA3aeb6807a98db96C1704Ea4CFf031BaEd2",
"type": "EOA",
"isVerified": true,
"name": "0xfd03…aEd2",
"url": "https://etherscan.io/address/0xfd03dA3aeb6807a98db96C1704Ea4CFf031BaEd2"
},
{
"address": "eth:0x7408A268e5E6e8F08917c5b71015F4B9044970C7",
"type": "EOA",
"isVerified": true,
"name": "0x7408…70C7",
"url": "https://etherscan.io/address/0x7408A268e5E6e8F08917c5b71015F4B9044970C7"
}
],
"discoveryDrivenData": true
},
{
"id": "Guardians",
"name": "Guardians",
"description": "A Multisig with 5/8 threshold. \nCustom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n* Can interact with ProtocolUpgradeHandler\n * extend the legal veto period, approve a protocol upgrade \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0x600dA620Ab29F41ABC6596a15981e14cE58c86b8",
"type": "Contract",
"isVerified": true,
"name": "0x600d…86b8",
"url": "https://etherscan.io/address/0x600dA620Ab29F41ABC6596a15981e14cE58c86b8"
}
],
"chain": "ethereum",
"references": [
{
"title": "Guardians - ZK Nation docs",
"url": "https://docs.zknation.io/zksync-governance/schedule-4-zksync-guardians"
}
],
"participants": [
{
"address": "eth:0x015318c16AE443a20DE0A776dB06a59F0D279057",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x015318c16AE443a20DE0A776dB06a59F0D279057"
},
{
"address": "eth:0x178D8Eb1A1fb81B5102808A83318Bb04C6a9fC6D",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x178D8Eb1A1fb81B5102808A83318Bb04C6a9fC6D"
},
{
"address": "eth:0x2A90830083C5Ca1f18d7AA7fCDC2998f93475384",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x2A90830083C5Ca1f18d7AA7fCDC2998f93475384"
},
{
"address": "eth:0x538612F6eba6ff80FBD95D60dCDee16b8FfF2c0f",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x538612F6eba6ff80FBD95D60dCDee16b8FfF2c0f"
},
{
"address": "eth:0x55c671BcE13120387Ded710A1d1b80C0e3d8E857",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x55c671BcE13120387Ded710A1d1b80C0e3d8E857"
},
{
"address": "eth:0x590926dBCDfD19627c3BbD2A6Eb96DeC7a3AbF69",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x590926dBCDfD19627c3BbD2A6Eb96DeC7a3AbF69"
},
{
"address": "eth:0x6D26874130A174839b9cd8CB87Ed4E09D0c1a5f0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x6D26874130A174839b9cd8CB87Ed4E09D0c1a5f0"
},
{
"address": "eth:0xCe7a3dFcc35602155809920Ff65e093aa726f6cf",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xCe7a3dFcc35602155809920Ff65e093aa726f6cf"
}
],
"discoveryDrivenData": true
},
{
"id": "SecurityCouncil",
"name": "SecurityCouncil",
"description": "A Multisig with 9/12 threshold. \nCustom Multisig implementation that has a general threshold of 9 but also specific thresholds for upgrade approvals (6) or soft freezes (3).\n* Can interact with ProtocolUpgradeHandler\n * soft freeze, hard freeze, approve a protocol upgrade \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0x66E4431266DC7E04E7d8b7FE9d2181253df7F410",
"type": "Contract",
"isVerified": true,
"name": "0x66E4…F410",
"url": "https://etherscan.io/address/0x66E4431266DC7E04E7d8b7FE9d2181253df7F410"
}
],
"chain": "ethereum",
"references": [
{
"title": "Security Council members - ZK Nation docs",
"url": "https://docs.zknation.io/zksync-governance/schedule-3-zksync-security-council"
}
],
"participants": [
{
"address": "eth:0x13f07d9BF17615f6a17F272fe1A913168C275A66",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x13f07d9BF17615f6a17F272fe1A913168C275A66"
},
{
"address": "eth:0x34Ea62D4b9bBB8AD927eFB6ab31E3Ab3474aC93a",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x34Ea62D4b9bBB8AD927eFB6ab31E3Ab3474aC93a"
},
{
"address": "eth:0x35eA56fd9eAd2567F339Eb9564B6940b9DD5653F",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x35eA56fd9eAd2567F339Eb9564B6940b9DD5653F"
},
{
"address": "eth:0x3888777686F0b0d8c3108fc22ad8DE9E049bE26F",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x3888777686F0b0d8c3108fc22ad8DE9E049bE26F"
},
{
"address": "eth:0x69462a81ba94D64c404575f1899a464F123497A2",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x69462a81ba94D64c404575f1899a464F123497A2"
},
{
"address": "eth:0x725065b4eB99294BaaE57AdDA9c32e42F453FA8A",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x725065b4eB99294BaaE57AdDA9c32e42F453FA8A"
},
{
"address": "eth:0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0"
},
{
"address": "eth:0x9B39Ea22e838B316Ea7D74e7C4B07d91D51ccA88",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x9B39Ea22e838B316Ea7D74e7C4B07d91D51ccA88"
},
{
"address": "eth:0x9B8Be3278B7F0168D82059eb6BAc5991DcdfA803",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x9B8Be3278B7F0168D82059eb6BAc5991DcdfA803"
},
{
"address": "eth:0xB7aC3A79A23B148c85fba259712c5A1e7ad0ca44",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xB7aC3A79A23B148c85fba259712c5A1e7ad0ca44"
},
{
"address": "eth:0xc3Abc9f9AA75Be8341E831482cdA0125a7B1A23e",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xc3Abc9f9AA75Be8341E831482cdA0125a7B1A23e"
},
{
"address": "eth:0xFB90Da9DC45378A1B50775Beb03aD10C7E8DC231",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xFB90Da9DC45378A1B50775Beb03aD10C7E8DC231"
}
],
"discoveryDrivenData": true
},
{
"id": "GRVTTransactionFilterer",
"name": "GRVTTransactionFilterer",
"id": "ValidatorTimelock",
"name": "ValidatorTimelock",
"accounts": [
{
"address": "eth:0x3Cd52B238Ac856600b22756133eEb31ECb25109a",
"address": "eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"type": "Contract",
"isVerified": true,
"name": "0x3Cd5…109a",
"url": "https://etherscan.io/address/0x3Cd52B238Ac856600b22756133eEb31ECb25109a"
"name": "0x2e51…b776",
"url": "https://etherscan.io/address/0x2e5110cF18678Ec99818bFAa849B8C881744b776"
}
],
"chain": "ethereum",
"description": "* Can interact with Diamond\n * define addresses that can send transactions from L1 to L2 (e.g. for deposits, withdrawals, queued transactions). This is enforced in the Mailbox Facet ",
"description": "Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n* Can interact with Diamond\n * commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock ",
"discoveryDrivenData": true
},
{
"id": "ValidatorTimelock",
"name": "ValidatorTimelock",
"id": "GRVTTransactionFilterer",
"name": "GRVTTransactionFilterer",
"accounts": [
{
"address": "eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564",
"address": "eth:0x3Cd52B238Ac856600b22756133eEb31ECb25109a",
"type": "Contract",
"isVerified": true,
"name": "0x8c0B…F564",
"url": "https://etherscan.io/address/0x8c0Bfc04AdA21fd496c55B8C50331f904306F564"
"name": "0x3Cd5…109a",
"url": "https://etherscan.io/address/0x3Cd52B238Ac856600b22756133eEb31ECb25109a"
}
],
"chain": "ethereum",
"description": "Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n* Can interact with Diamond\n * commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock ",
"description": "* Can interact with Diamond\n * define addresses that can send transactions from L1 to L2 (e.g. for deposits, withdrawals, queued transactions). This is enforced in the Mailbox Facet ",
"discoveryDrivenData": true
},
{
"id": "ZK Foundation Multisig",
"name": "ZK Foundation Multisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0xbC1653bd3829dfEc575AfC3816D4899cd103B51c",
"type": "Contract",
"isVerified": true,
"name": "0xbC16…B51c",
"url": "https://etherscan.io/address/0xbC1653bd3829dfEc575AfC3816D4899cd103B51c"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xA10fcD4B012467FAC48ce63838B7bE56AB16bE52",
"type": "EOA",
"isVerified": true,
"name": "0xA10f…bE52",
"url": "https://etherscan.io/address/0xA10fcD4B012467FAC48ce63838B7bE56AB16bE52"
},
{
"address": "eth:0x56B3120c32AE9C3188fafc5Cc542F9c53B0b2222",
"type": "EOA",
"isVerified": true,
"name": "0x56B3…2222",
"url": "https://etherscan.io/address/0x56B3120c32AE9C3188fafc5Cc542F9c53B0b2222"
},
{
"address": "eth:0x441e5c8910Ef39996B2D01499509861228cbc2d1",
"type": "EOA",
"isVerified": true,
"name": "0x441e…c2d1",
"url": "https://etherscan.io/address/0x441e5c8910Ef39996B2D01499509861228cbc2d1"
},
{
"address": "eth:0x0B2E7ffbcD1E3e6f5034555Fb638889FE7564709",
"type": "EOA",
"isVerified": true,
"name": "0x0B2E…4709",
"url": "https://etherscan.io/address/0x0B2E7ffbcD1E3e6f5034555Fb638889FE7564709"
},
{
"address": "eth:0x610e45F112e0c8a9aA7137677C83E7A198A1b991",
"type": "EOA",
"isVerified": true,
"name": "0x610e…b991",
"url": "https://etherscan.io/address/0x610e45F112e0c8a9aA7137677C83E7A198A1b991"
}
],
"discoveryDrivenData": true
},
{
"id": "Governance",
"name": "Governance",
"accounts": [
{
"address": "eth:0xbdC07D62fA117B195E579c2e299f037b158E7335",
"type": "Contract",
"isVerified": true,
"name": "0xbdC0…7335",
"url": "https://etherscan.io/address/0xbdC07D62fA117B195E579c2e299f037b158E7335"
}
],
"chain": "ethereum",
"description": "Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n* Can interact with GRVTTransactionFilterer\n * address is part of the GRVTTransactionFilterer whitelist ",
"discoveryDrivenData": true
},
{
"id": "GRVTBridgeProxy",
"name": "GRVTBridgeProxy",
"accounts": [
{
"address": "eth:0xE17aeD2fC55f4A876315376ffA49FE6358113a65",
"type": "Contract",
"isVerified": true,
"name": "0xE17a…3a65",
"url": "https://etherscan.io/address/0xE17aeD2fC55f4A876315376ffA49FE6358113a65"
}
],
"chain": "ethereum",
"description": "Checks the signature of the DepositApprover for each deposit and, on succeeding, forwards the user's funds and bridging request to the L1SharedBridge contract to deposit to GRVT.\n* Can interact with GRVTTransactionFilterer\n * address is part of the GRVTTransactionFilterer whitelist ",
"discoveryDrivenData": true
},
{
"id": "Governance",
"name": "Governance",
"accounts": [
{
"address": "eth:0xe81d64195072e4d09639b31Abb257d0096FEa9d1",
"type": "Contract",
"isVerified": true,
"name": "0xe81d…a9d1",
"url": "https://etherscan.io/address/0xe81d64195072e4d09639b31Abb257d0096FEa9d1"
}
],
"chain": "ethereum",
"description": "* Can interact with GRVTTransactionFilterer\n * address is part of the GRVTTransactionFilterer whitelist ",
"discoveryDrivenData": true
},
{
"id": "ProtocolTimelockController(L2->L1)",
"name": "ProtocolTimelockController(L2->L1)",
"accounts": [
{
"address": "eth:0x085b8B6407f150D62adB1EF926F7f304600ec714",
"type": "EOA",
"isVerified": true,
"name": "0x085b…c714",
"url": "https://etherscan.io/address/0x085b8B6407f150D62adB1EF926F7f304600ec714"
}
],
"chain": "ethereum",
"description": "* Can interact with ProtocolUpgradeHandler\n * start (queue) upgrades ",
"discoveryDrivenData": true
},
{
"id": "EOA-1-and-EOA-2",
"name": "EOA 1 and EOA 2",
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x0b114d4675Cb79507e68F2616c93e124122c6ef0",
"type": "EOA",
"isVerified": true,
"name": "0x0b11…6ef0",
"url": "https://etherscan.io/address/0x0b114d4675Cb79507e68F2616c93e124122c6ef0"
},
{
"address": "eth:0x58D14960E0a2be353eDdE61ad719196A2b816522",
"type": "EOA",
"isVerified": true,
"name": "0x58D1…6522",
"url": "https://etherscan.io/address/0x58D14960E0a2be353eDdE61ad719196A2b816522"
}
],
"chain": "ethereum",
"description": "* A Validator - acting directly",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x5c8de5821dd9263F124E8ddbff11C3368Ff86a37",
"type": "EOA",
"isVerified": true,
"name": "0x5c8d…6a37",
"url": "https://etherscan.io/address/0x5c8de5821dd9263F124E8ddbff11C3368Ff86a37"
}
],
"chain": "ethereum",
"description": "* Can interact with GRVTBridgeProxy\n * approve deposits to GRVT via the GRVTBridgeProxy ",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b",
"type": "EOA",
"isVerified": true,
"name": "0xF29b…550b",
"url": "https://etherscan.io/address/0xF29bFff344c7ef0186432fE30C39fda0cca0550b"
}
],
"chain": "ethereum",
"description": "Member of GrvtChainAdminMultisig.\n* Can interact with GRVTTransactionFilterer\n * address is part of the GRVTTransactionFilterer whitelist \n * manage the whitelist of addresses ",
"discoveryDrivenData": true
}
]
},
"zksync2": {
"roles": [],
"actors": [
{
"id": "ZkProtocolGovernor",
"name": "ZkProtocolGovernor",
"accounts": [
{
"address": "zksync:0x76705327e682F2d96943280D99464Ab61219e34f",
"type": "Contract",
"isVerified": true,
"name": "0x7670…e34f",
"url": "https://era.zksync.network/address/0x76705327e682F2d96943280D99464Ab61219e34f"
}
],
"chain": "zksync2",
"description": "Main Governance contract allowing for token voting (simple majority) with the ZK token through delegates. This contract is used for protocol upgrade proposals (ZIPs) that start on ZKsync Era, go through Ethereum Layer 1 and can - from there - target all L1 and L2 contracts. At least 21M ZK tokens are necessary to start a proposal and a 630M quorum of voted tokens must be met to succeed.\n* Can interact with ProtocolTimelockController\n * cancel queued transactions \n * execute transactions that are ready \n * manage all access control roles and change the minimum delay [via: ProtocolTimelockController]\n * propose transactions ",
"discoveryDrivenData": true
},
{
"id": "ZkTokenGovernor",
"name": "ZkTokenGovernor",
"accounts": [
{
"address": "zksync:0xb83FF6501214ddF40C91C9565d095400f3F45746",
"type": "Contract",
"isVerified": true,
"name": "0xb83F…5746",
"url": "https://era.zksync.network/address/0xb83FF6501214ddF40C91C9565d095400f3F45746"
}
],
"chain": "zksync2",
"description": "Governance contract allowing for token voting (simple majority) with the ZK token through delegates. This contract is used for Token Program Proposals (TPPs) usually targeting the ZK token on ZKsync Era. At least 21M ZK tokens are necessary to start a proposal (for delegates) and a 630M quorum of voted tokens must be met to succeed.\n* Can interact with ZkToken\n * grant the MINTER_ROLE to arbitrary addresses, thus controlling the minting of the ZK token **with 3d delay** [via: ZkTokenTimelockController with 3d delay]\n* Can interact with ZkTokenTimelockController\n * manage all access control roles and change the minimum delay **with 6d delay** [via: ZkTokenTimelockController with 3d delay with 3d delay]\n * cancel queued transactions \n * execute transactions that are ready \n * propose transactions ",
"discoveryDrivenData": true
},
{
"id": "ZkGovOpsGovernor",
"name": "ZkGovOpsGovernor",
"accounts": [
{
"address": "zksync:0xEEEa739a8b6fB1b8f703E23C9Be03CeeA643b160",
"type": "Contract",
"isVerified": true,
"name": "0xEEEa…b160",
"url": "https://era.zksync.network/address/0xEEEa739a8b6fB1b8f703E23C9Be03CeeA643b160"
}
],
"chain": "zksync2",
"description": "Governance contract allowing for token voting (simple majority) with the ZK token through delegates. This contract is used for Governance Advisory Proposals (GAPs) that are not executable onchain. At least 21M ZK tokens are necessary to start a proposal and a 630M quorum of voted tokens must be met to succeed.\n* Can interact with GovOpsTimelockController\n * manage all access control roles and change the minimum delay **with 6d delay** [via: GovOpsTimelockController with 3d delay with 3d delay]\n * cancel queued transactions \n * execute transactions that are ready \n * propose transactions ",
"discoveryDrivenData": true
},
{
"id": "Guardians_l2Alias",
"name": "Guardians_l2Alias",
"accounts": [
{
"address": "zksync:0x711ea620AB29f41AbC6596a15981e14ce58C97c9",
"type": "EOA",
"isVerified": true,
"name": "0x711e…97c9",
"url": "https://era.zksync.network/address/0x711ea620AB29f41AbC6596a15981e14ce58C97c9"
}
],
"chain": "zksync2",
"description": "* Can interact with ZkTokenGovernor\n * cancel proposals while they are pending (after having been proposed) or active (during the voting period) \n* Can interact with ZkGovOpsGovernor\n * cancel proposals while they are pending (after having been proposed) or active (during the voting period) ",
"discoveryDrivenData": true
},
{
"id": "ZKFoundationMultisig_l2Alias",
"name": "ZKFoundationMultisig_l2Alias",
"accounts": [
{
"address": "zksync:0xcd2753Bd3829dfeC575AFC3816d4899CD103C62D",
"type": "EOA",
"isVerified": true,
"name": "0xcd27…C62D",
"url": "https://era.zksync.network/address/0xcd2753Bd3829dfeC575AFC3816d4899CD103C62D"
}
],
"chain": "zksync2",
"description": "* Can interact with ZkTokenGovernor\n * make direct proposals without owning ZK tokens. In propose-guarded mode, this address is the ONLY allowed proposer. Propose-guarded mode is currently set to false ",
"discoveryDrivenData": true
},
{
"id": "ProtocolUpgradeHandler_l2Alias",
"name": "ProtocolUpgradeHandler_l2Alias",
"accounts": [
{
"address": "zksync:0xF41EcA3047B37dc7d88849de4a4dc07937Ad6bc4",
"type": "EOA",
"isVerified": true,
"name": "0xF41E…6bc4",
"url": "https://era.zksync.network/address/0xF41EcA3047B37dc7d88849de4a4dc07937Ad6bc4"
}
],
"chain": "zksync2",
"description": "* Can upgrade **with no delay**\n * ZkToken [via: ZkTokenProxyAdmin]\n* Can interact with ZkToken\n * control all roles in the ZkToken access control, including the minter roles ",
"discoveryDrivenData": true
}
]
}
}
+28 -18
{
"addresses": {
"ethereum": [
{
"name": "Diamond",
"isVerified": true,
"address": "eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E",
"upgradeability": {
"proxyType": "EIP2535 diamond proxy",
"admins": [],
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1731379871,
"transactionHash": "0x0bbe1288b6184a2f0e7b1205c695f28f5dad249904447e05a841fbfbab1af41d",
"implementations": [
"eth:0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a",
"eth:0xE60E94fCCb18a81D501a38959E532C0A85A1be89",
"eth:0xCDB6228b616EEf8Df47D69A372C4f725C43e718C",
"eth:0xaD193aDe635576d8e9f7ada71Af2137b16c64075"
]
},
{
"timestamp": 1731379871,
"transactionHash": "0x0bbe1288b6184a2f0e7b1205c695f28f5dad249904447e05a841fbfbab1af41d",
"implementations": [
"eth:0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a",
"eth:0xE60E94fCCb18a81D501a38959E532C0A85A1be89",
"eth:0xCDB6228b616EEf8Df47D69A372C4f725C43e718C",
"eth:0xaD193aDe635576d8e9f7ada71Af2137b16c64075"
]
},
{
"timestamp": 1738042691,
"transactionHash": "0x733c89da487edb502dc65f5115ada9cef6b44128a85cf36adbde4821e13abe31",
"implementations": [
"eth:0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a",
"eth:0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9",
"eth:0x5575218cECd370E1d630d1AdB03c254B0B376821",
"eth:0xBB13642F795014E0EAC2b0d52ECD5162ECb66712"
]
},
{
"timestamp": 1742808587,
"transactionHash": "0xd442b78fb0d2ccccea791f60de88cc4d7214fff454429c552be59c8778cbb9f3",
"implementations": [
"eth:0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb",
"eth:0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1",
"eth:0x36b026c39125964D99596CE302866B5A59E4dE27",
"eth:0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800"
]
},
{
"timestamp": 1747639079,
"transactionHash": "0xf21daa11dac7aa6d48bcf8f8d76d8c43900db3022d183389a8e16858cabdd0cb",
"implementations": [
"eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4",
"eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4",
"eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f",
"eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490"
]
},
{
"timestamp": 1752209807,
"transactionHash": "0x50482c232f408d2e39fcaf30df79e587c0859e2f36e476b9d4deda048e3f1a45",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1766780987,
"transactionHash": "0x85dba00b8749a3bac358b1b3c0c62dc9b3eb7d00b5e0da81955fad460360395b",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
}
],
"description": "The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n* Roles:\n * **getAdmin**: GrvtZkEvmAdmin; ultimately GrvtChainAdminMultisig\n * **getTransactionFilterer**: GRVTTransactionFilterer\n * **validators**: ValidatorTimelock, ValidatorTimelock2",
"description": "The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n* Roles:\n * **getAdmin**: GrvtZkEvmAdmin; ultimately GrvtChainAdminMultisig\n * **getTransactionFilterer**: GRVTTransactionFilterer\n * **validators**: ValidatorTimelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E#code"
},
{
"name": "ValidiumL1DAValidator",
"isVerified": true,
"address": "eth:0x907b30407249949521Bf0c89A43558dae200146A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract that 'verifies' the data availability for validiums. This implementation only checks the correct formatting and does not serve as a DA oracle. Can be used by ZK stack validiums as the L1 part of a DAValidator pair.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x907b30407249949521Bf0c89A43558dae200146A#code"
},
{
"name": "BridgeHub",
"isVerified": true,
"address": "eth:0x303a465B659cBB0ab36eE643eA362c509EEb5213",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717520639,
"transactionHash": "0xdbb03a14ea223de3db4ac0916e78123bd0a1dde68e98952326d8382d29ac4d61",
"implementations": [
"eth:0x12f893689f9603991a8c22C249FFd0509Be95661"
]
},
{
"timestamp": 1725887363,
"transactionHash": "0x21aec24a9df97ce4886d699314be627b0818da4d1987349421fb3df102c43f2b",
"implementations": [
"eth:0x509dA1BE24432F8804C4A9FF4a3c3f80284CDd13"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0x0029e562c0b54C0b88cB22adF4346DbfEC87400c"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xb720523EC3c615b069453bF4B0584CEbF034706f"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xcdd748d4A80CE6831080f1dA2CA9084CDa87Cc87"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x08A98B1048Fb61E9Fff7d7d98305aC6286Ae9F32"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
}
],
"description": "The main registry (hub) for all the contracts in the ZK stack cluster and central entrypoint for bridge transactions. Stores important mappings like from chainId to diamond address, from chainId to parent CTM, from chainId to base token etc. A clone of Bridgehub is also deployed on each L2 chain, but this clone is only used on settlement layers.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x303a465B659cBB0ab36eE643eA362c509EEb5213#code"
},
{
"name": "MessageRoot",
"isVerified": true,
"address": "eth:0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109035,
"transactionHash": "0xc47e24e8cc6c7a493bbb1a46b74f1ff113fad2e35d7596aa688df5bf0402fc65",
"implementations": [
"eth:0x19347Fb8eD3E8e35eb4a01c8B18Bd330194Cf0ad"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x382fb241396eA915108e7B7Ce1adE1322bA73aeE"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
}
],
"description": "Aggregates remote bridge message roots from all ZK stack chains. To be used with the Gateway when deployed.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD#code"
},
{
"name": "CTMDeploymentTracker",
"isVerified": true,
"address": "eth:0x6078F6B379f103de1Aa912dc46bb8Df0c8809860",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109203,
"transactionHash": "0x8b5a21b3473a638022e84097a99c4668bb0a454686b737e87957729c4822741b",
"implementations": [
"eth:0x1E405E5cdF127Dc98Eb490AB0e97345f892Ff7E1"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
}
],
"description": "Asset deployment tracker where the 'asset' is a ChainTypeManager. The registering of asset IDs for ChainTypeManagers is necessary to be able to migrate them to a given settlement layer, for example the Gateway.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x6078F6B379f103de1Aa912dc46bb8Df0c8809860#code"
},
{
"name": "RollupL1DAValidator",
"isVerified": true,
"address": "eth:0x72213dfe8CA61B0A782970dCFebFb877778f9119",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract that verifies the data availability of ethereum calldata and blobs. Can be used by ZK stack rollups as the L1 part of a DAValidator pair.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x72213dfe8CA61B0A782970dCFebFb877778f9119#code"
},
{
"name": "ChainTypeManager",
"isVerified": true,
"address": "eth:0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x4aB7204e4205c96C32E23ADa9191720976dC084f"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717520663,
"transactionHash": "0x514bbf46d227eee8567825bf5c8ee1855aa8a1916f7fee7b191e2e3d5ecba849",
"implementations": [
"eth:0x8279B7E48fA074f966385d87AEf29Bd031e54fD5"
]
},
{
"timestamp": 1722934619,
"transactionHash": "0xc1e73b06359759201b76ab7654e0bd49011f33c0230dfc24423985fbf36ea817",
"implementations": [
"eth:0xed1Dc7F0Be2B19cb02a2476150C8ea24A37c5274"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0xb39B175a5E0945F2FB6A7F31764c0e31D9cF5b75"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xA3bCcAEe38cb0273A979118a0DE483E47D50F6Cb"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0x6D598c77AF57Bfa17201483400615c61819dD45A"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x345314c7E4af84B763d98d23f772622E23AfB5CE"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x4aB7204e4205c96C32E23ADa9191720976dC084f"
]
}
],
"description": "Defines L2 diamond contract versions, creation and upgrade data and the proof system for all ZK stack chains connected to it. ZK chains are children of this central contract and can only upgrade to versions that were previously registered here. The current protocol version is 0,29,2.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C#code"
},
{
"name": "L1Nullifier",
"isVerified": true,
"address": "eth:0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717521479,
"transactionHash": "0xce3d72f23297a281cb58502dcc6a6c029489316a2faf9c4ef83141b1b254017c",
"implementations": [
"eth:0xCba1aF8f0bB223b2544F8eB8f69d1c7960f788dB"
]
},
{
"timestamp": 1724658671,
"transactionHash": "0xaec33529b74f8f9d56d7aa568c6358be299228a85e49ea85cb106eca5af7367c",
"implementations": [
"eth:0xb56A8225A745756DD215faf22E4796f373561AcD"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0xF5A14DCdde1143443f06033200D345c2a2828A99"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xda2866AF0e170d0867a3F3bB52Db10D6E09Df78A"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0x3B4FD84B27fE7B9247d5B8C6d1A29B2889C81518"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xC6f08EFb7BA78f40d00F41aFAC00211d59eb9431"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
}
],
"description": "Contract responsible for bookkeeping L1 bridging transactions. Used to finalize withdrawals and reclaim failed deposits. Does not escrow funds.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB#code"
},
{
"name": "ProtocolUpgradeHandler",
"isVerified": true,
"address": "eth:0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e"
],
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1738855967,
"transactionHash": "0xa3d1fa107e6dc4ce67d92a5af74aa7dc34602c2a1d46727790819c1f974bed95",
"implementations": [
"eth:0xD5e9D3d483a93d03D8d604CC79dC9f2F4B78C604"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0x0A67f0Fd2f7523057039F14969Fe23a5f620f19A"
]
},
{
"timestamp": 1760519471,
"transactionHash": "0x2309df20dd1cb3f3a3289e97517d10d399989292f966578240ec387246a13e61",
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
}
],
"description": "The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2 and emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **emergencyUpgradeBoard**: EmergencyUpgradeBoard\n * **guardians**: Guardians\n * **l2_protocol_governor**: ProtocolTimelockController(L2->L1)\n * **securityCouncil**: SecurityCouncil",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3#code"
},
{
"name": "RollupDAManager",
"isVerified": true,
"address": "eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Simple registry for allowed DA address pairs for the 'rollup' data availability mode (can be permanently enforced with isPermanentRollup=true). Rollup DA address pairs (especially the L1 part) usually point to contracts that validate if data was made available on Ethereum.\n* Roles:\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45#code"
},
{
"name": "GrvtZkEvmAdmin",
"isVerified": true,
"address": "eth:0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets GrvtChainAdminMultisig act through it.\n* Roles:\n * **owner**: GrvtChainAdminMultisig\n * **tokenMultiplierSetter**: GrvtChainAdminMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D#code"
},
{
"name": "EraChainAdminProxy",
"isVerified": true,
"address": "eth:0x2cf3bD6a9056b39999F3883955E183F655345063",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets Matter Labs Multisig act through it.\n* Roles:\n * **owner**: Matter Labs Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x2cf3bD6a9056b39999F3883955E183F655345063#code"
},
{
"name": "DualVerifier",
"isVerified": true,
"address": "eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579",
"address": "eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A router contract for verifiers. Routes verification requests to L1VerifierFflonk or L1VerifierPlonk depending on the supplied proof type.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579#code"
"url": "https://etherscan.io/address/eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3#code"
},
{
"name": "L1VerifierPlonk",
"name": "L1VerifierFflonk",
"isVerified": true,
"address": "eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1",
"address": "eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n",
"description": "Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1#code"
"url": "https://etherscan.io/address/eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c#code"
},
{
"name": "L1VerifierFflonk",
"name": "L1VerifierPlonk",
"isVerified": true,
"address": "eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b",
"address": "eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n",
"description": "Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b#code"
"url": "https://etherscan.io/address/eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EraChainAdminProxy",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B#code"
},
{
"name": "L1NativeTokenVault",
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Canonical central asset escrow for all ZK stack chains.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1#code"
},
{
"name": "ChainAssetHandler",
"isVerified": true,
"address": "eth:0xDd5CB8B9037357B4cD37391A073798f8aaB61076",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1758286391,
"transactionHash": "0x960c2e5bb98f4b9a07087b3b50fdc4681bbea1467aab3748dbb0050311f54ede",
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
}
],
"description": "Specialized contract for managing chain assets, i.e. chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xDd5CB8B9037357B4cD37391A073798f8aaB61076#code"
},
{
"name": "ServerNotifier",
"isVerified": true,
"address": "eth:0xfca808A744735D9919EEBe4660B8Fd897456Ce31",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B"
],
"implementations": [
"eth:0x555D040F4A089D1dF14B372a87C5aF8FA37BDB7A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747199375,
"transactionHash": "0xbeb7447fc88b154a4730b01cb1a75b7093095056e88818c3659253111d06e66f",
"implementations": [
"eth:0x555D040F4A089D1dF14B372a87C5aF8FA37BDB7A"
]
}
],
"description": "A simple contract that can be called by the ChainAdmin to emit notifications about chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Matter Labs Multisig",
"upgradableBy": [
{
"name": "Matter Labs Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/eth:0xfca808A744735D9919EEBe4660B8Fd897456Ce31#code"
}
],
"zksync2": [
{
"name": "ProtocolTimelockController",
"isVerified": true,
"address": "zksync:0x085b8B6407f150D62adB1EF926F7f304600ec714",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 0s.\n* Roles:\n * **canceller**: ZkProtocolGovernor\n * **executor**: ZkProtocolGovernor\n * **proposer**: ZkProtocolGovernor\n * **timelockAdmin**: ProtocolTimelockController; ultimately ZkProtocolGovernor",
"discoveryDrivenData": true,
"url": "https://era.zksync.network/address/zksync:0x085b8B6407f150D62adB1EF926F7f304600ec714#code"
},
{
"name": "ZkToken",
"isVerified": true,
"address": "zksync:0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC"
],
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
},
"chain": "zksync2",
"pastUpgrades": [
{
"timestamp": 1716317326,
"transactionHash": "0x5bfce59c2ad18019ef20d58a3f1ec496cdc85537fc9564c932f7dcbbb2a15b56",
"implementations": [
"zksync:0x3931e73ebA79a7C898D3b0e02c7C62bA4F11cB14"
]
},
{
"timestamp": 1718011538,
"transactionHash": "0xa6bc022ba0f60ac6f10a6efb84b261e9ca1b327a611bdd7a1f4d37cc9b027a3c",
"implementations": [
"zksync:0x01a6715d3560241E09E865a46122bf347A576c09"
]
},
{
"timestamp": 1765195612,
"transactionHash": "0x749b9e6eed328052d679eb86639be807b4acf811ac8786f730b45258ba41ce6f",
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
}
],
"description": "The ZK token contract on ZKsync Era. Mintable through access control roles. Used for voting in the ZK stack governance system.\n* Roles:\n * **admin**: ZkTokenProxyAdmin; ultimately ProtocolUpgradeHandler_l2Alias\n * **defaultAdmin**: ProtocolUpgradeHandler_l2Alias\n * **minterAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"upgradableBy": [
{
"id": "ProtocolUpgradeHandler_l2Alias",
"name": "ProtocolUpgradeHandler_l2Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://era.zksync.network/address/zksync:0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E#code"
},
{
"name": "GovOpsTimelockController",
"isVerified": true,
"address": "zksync:0xC9E442574958f96C026DeF9a50C3236cab17428a",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 3d.\n* Roles:\n * **canceller**: ZkGovOpsGovernor\n * **executor**: ZkGovOpsGovernor\n * **proposer**: ZkGovOpsGovernor\n * **timelockAdmin**: GovOpsTimelockController; ultimately ZkGovOpsGovernor",
"discoveryDrivenData": true,
"url": "https://era.zksync.network/address/zksync:0xC9E442574958f96C026DeF9a50C3236cab17428a#code"
},
{
"name": "ZkTokenProxyAdmin",
"isVerified": true,
"address": "zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler_l2Alias",
"discoveryDrivenData": true,
"url": "https://era.zksync.network/address/zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC#code"
},
{
"name": "ZkTokenTimelockController",
"isVerified": true,
"address": "zksync:0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 3d.\n* Roles:\n * **canceller**: ZkTokenGovernor\n * **executor**: ZkTokenGovernor\n * **proposer**: ZkTokenGovernor\n * **timelockAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"discoveryDrivenData": true,
"url": "https://era.zksync.network/address/zksync:0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d#code"
}
]
},
"escrows": [],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 4d 3h - 8d 3h delay on code upgrades unless upgrade is initiated by the EmergencyUpgradeBoard in which case there is no delay."
}
],
"zkProgramHashes": [
{
"title": "Boojum L2 Bootloader program",
"description": "EraVM program that proves the correct execution of a batch of ZK Stack L2 blocks.",
"programUrl": "https://github.com/matter-labs/era-contracts/blob/v0.28.0/system-contracts/bootloader/bootloader.yul",
"programUrl": "https://github.com/matter-labs/era-contracts/blob/v0.29.2/system-contracts/bootloader/bootloader.yul",
"proverSystemProject": "boojum",
"verificationStatus": "successful",
"verificationSteps": "\nPrepare:\n\n1. Install npm and yarn: `npm install --global yarn`\n2. Install hardhat: `npm install -g hardhat`\n3. Install foundry-zksync: `curl -L https://raw.githubusercontent.com/matter-labs/foundry-zksync/main/install-foundry-zksync | bash` from [here](https://foundry-book.zksync.io/introduction/installation/).\n\nVerify:\n\n1. Checkout the correct branch in [era-contracts](https://github.com/matter-labs/era-contracts) repo: `git checkout v0.28.0`. Commit hash should be `cfd77cb6bc9ab3d751d42c6161f1b393a9c51647`.\n2. Execute recompute_hashes.sh script: `chmod +x recompute_hashes.sh` and `./recompute_hashes.sh`. Note that the script may require a specific version of `foundryup-zksync` and it will suggest the command to install it. However you might need to manually clear git working tree in the repo foundry-zksync (probably in ~/.foundry/matter-labs/foundry-zksync) to change versions.\n ",
"hash": "0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35"
"verificationSteps": "\nPrepare:\n\n1. Install npm and yarn: `npm install --global yarn`\n2. Install hardhat: `npm install -g hardhat`\n3. Install foundry-zksync: `curl -L https://raw.githubusercontent.com/matter-labs/foundry-zksync/main/install-foundry-zksync | bash` from [here](https://foundry-book.zksync.io/introduction/installation/).\n\nVerify:\n\n1. Checkout the correct branch in [era-contracts](https://github.com/matter-labs/era-contracts) repo: `git checkout v0.29.2`. Commit hash should be `dbfc9b5a40d68007dc405a9b669230104c1646e4`.\n2. Execute recompute_hashes.sh script: `chmod +x recompute_hashes.sh` and `./recompute_hashes.sh`. Note that the script may require a specific version of `foundryup-zksync` and it will suggest the command to install it. However you might need to manually clear git working tree in the repo foundry-zksync (probably in ~/.foundry/matter-labs/foundry-zksync) to change versions.\n ",
"hash": "0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6"
}
]
}
+1 -1
{
"baseTimestamp": 1766407495,
"baseTimestamp": 1767005527,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+4 -4
+2 -2
{
"self": {
"stateValidation": {
"value": "None",
"description": "Currently the system permits invalid state roots. More details in project overview.",
"sentiment": "bad",
"orderHint": null
},
"dataAvailability": {
"value": "PoS network",
"description": "Data is guaranteed to be available by an external proof of stake network of validators. On Ethereum, DA is attested via signed block headers.",
"sentiment": "warning"
},
"exitWindow": {
"value": "None",
"description": "There is no window for users to exit in case of an unwanted regular upgrade since contracts are instantly upgradable.",
"sentiment": "bad",
"orderHint": 0
},
"sequencerFailure": {
"value": "Enqueue via L1",
"description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone. In Polygon PoS, the sequencers network corresponds to the PoS validators network, which is composed of 104 members.",
"description": "Users can submit transactions to an L1 queue, but can't force them. The sequencers cannot selectively skip transactions but can stop processing the queue entirely. In other words, if the sequencers censor or are down, they are so for everyone. In Polygon PoS, the sequencers network corresponds to the PoS validators network, which is composed of 103 members.",
"sentiment": "warning"
},
"proposerFailure": {
"value": "Cannot withdraw",
"description": "The PoS network is composed of 104 validators. Blocks are included in the chain only if signed by 2/3+1 of the network stake. It's currently not possible to join the set if the validator cap is reached. The current validator cap is set to 105. In the event of a failure in reaching consensus, withdrawals are frozen.",
"description": "The PoS network is composed of 103 validators. Blocks are included in the chain only if signed by 2/3+1 of the network stake. It's currently not possible to join the set if the validator cap is reached. The current validator cap is set to 105. In the event of a failure in reaching consensus, withdrawals are frozen.",
"sentiment": "warning"
}
}
}
+1 -1
[
{
"layer": {
"value": "Polygon PoS DA",
"sentiment": "warning",
"description": "The data is guaranteed to be available by Polygon proof of stake validators. On Ethereum, the data is indirectly referenced in the signed block header."
},
"bridge": {
"value": "104 validators",
"value": "103 validators",
"sentiment": "warning",
"description": "The bridge verifies that at least 2/3+1 of the Polygon PoS stake has signed off on the checkpoint. The StakeManager contract is the source of truth for the current validator set."
},
"mode": {
"value": "Transaction data"
}
}
]
+1 -1
{
"baseTimestamp": 1766409364,
"baseTimestamp": 1767007913,
"contractsDiscoDriven": false,
"hasDiscoUi": true,
"isDiscoDriven": false,
"permissionsDiscoDriven": false
}
+47 -13
+24 -0
[
{
"projectId": "xlayer",
"sinceTimestamp": 1761304367,
"untilTimestamp": 1766565023,
"type": "liveness",
"subtype": "batchSubmissions",
"params": {
"formula": "transfer",
"from": "0xdfd6C636Dcb5a013c2431316c4A0762B84e70a5d",
"to": "0x002bdE9b0c0857AEE2cFFDea6b8723eAF5989449"
}
},
{
"projectId": "xlayer",
"sinceTimestamp": 1761304367,
"untilTimestamp": 1766565023,
"type": "l2costs",
"subtype": "batchSubmissions",
"params": {
"formula": "transfer",
"from": "0xdfd6C636Dcb5a013c2431316c4A0762B84e70a5d",
"to": "0x002bdE9b0c0857AEE2cFFDea6b8723eAF5989449"
}
},
{
"projectId": "xlayer",
"sinceTimestamp": 1766565023,
"type": "liveness",
"subtype": "batchSubmissions",
"params": {
"formula": "transfer",
"from": "0x98245d0ADF4595C66F0a9Db8E13c44CBFF6be459",
"to": "0x002bdE9b0c0857AEE2cFFDea6b8723eAF5989449"
}
},
{
"projectId": "xlayer",
"sinceTimestamp": 1766565023,
"type": "l2costs",
"subtype": "batchSubmissions",
"params": {
"formula": "transfer",
"from": "0x98245d0ADF4595C66F0a9Db8E13c44CBFF6be459",
"to": "0x002bdE9b0c0857AEE2cFFDea6b8723eAF5989449"
}
},
{
"projectId": "xlayer",
"sinceTimestamp": 1761304367,
"type": "liveness",
"subtype": "stateUpdates",
"params": {
"formula": "functionCall",
"address": "0x9D4c8FAEadDdDeeE1Ed0c92dAbAD815c2484f675",
"selector": "0x82ecf2f6",
"signature": "function create(uint32 _gameType, bytes32 _rootClaim, bytes _extraData) payable returns (address proxy_)"
}
},
{
"projectId": "xlayer",
"sinceTimestamp": 1761304367,
"type": "l2costs",
"subtype": "stateUpdates",
"params": {
"formula": "functionCall",
"address": "0x9D4c8FAEadDdDeeE1Ed0c92dAbAD815c2484f675",
"selector": "0x82ecf2f6",
"signature": "function create(uint32 _gameType, bytes32 _rootClaim, bytes _extraData) payable returns (address proxy_)"
}
}
]
+10 -0
[
{
"type": "ethereum",
"daLayer": "ethereum",
"sinceBlock": 23668700,
"untilBlock": 24081293,
"inbox": "0x002bdE9b0c0857AEE2cFFDea6b8723eAF5989449",
"sequencers": [
"0xdfd6C636Dcb5a013c2431316c4A0762B84e70a5d"
]
},
{
"type": "ethereum",
"daLayer": "ethereum",
"sinceBlock": 24081293,
"inbox": "0x002bdE9b0c0857AEE2cFFDea6b8723eAF5989449",
"sequencers": [
"0x98245d0ADF4595C66F0a9Db8E13c44CBFF6be459"
]
}
]
+11 -11
{
"ethereum": {
"roles": [
{
"id": "Challenger",
"name": "Challenger",
"description": "Allowed to challenge or delete state roots proposed by a Proposer.",
"accounts": [
{
"address": "eth:0x736E68Af2CbF2aB0E46E4310fE5Ae568b3642FF6",
"type": "EOA",
"isVerified": true,
"name": "EOA 8",
"url": "#EOA-8"
}
],
"chain": "ethereum",
"discoveryDrivenData": true
},
{
"id": "Proposer",
"name": "Proposer",
"description": "Allowed to post new state roots of the current layer to the host chain.",
"accounts": [
{
"address": "eth:0xE43944421681170648E10007f73816e04F74394F",
"type": "EOA",
"isVerified": true,
"name": "EOA 9",
"url": "#EOA-9"
}
],
"chain": "ethereum",
"discoveryDrivenData": true
},
{
"id": "Sequencer",
"name": "Sequencer",
"description": "Allowed to commit transactions from the current layer to the host chain.",
"accounts": [
{
"address": "eth:0xdfd6C636Dcb5a013c2431316c4A0762B84e70a5d",
"address": "eth:0x98245d0ADF4595C66F0a9Db8E13c44CBFF6be459",
"type": "EOA",
"isVerified": true,
"name": "EOA 5",
"url": "#EOA-5"
"name": "EOA 4",
"url": "#EOA-4"
}
],
"chain": "ethereum",
"discoveryDrivenData": true
},
{
"id": "Trusted Aggregator (Proposer)",
"name": "Trusted Aggregator (Proposer)",
"description": "Permissioned to post new state roots and global exit roots accompanied by ZK proofs.",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "EOA 6",
"url": "#EOA-6-and-EOA-7"
},
{
"address": "eth:0xD7e6c31750838Ef895fBe0c57f7Fd881a14482Fb",
"type": "EOA",
"isVerified": true,
"name": "EOA 7",
"url": "#EOA-6-and-EOA-7"
}
],
"chain": "ethereum",
"discoveryDrivenData": true
}
],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xcAB31b6A7b4d2eCd562A09e2BfA46535a18862f9",
"type": "EOA",
"isVerified": true,
"name": "0xcAB3…62f9",
"url": "https://etherscan.io/address/0xcAB31b6A7b4d2eCd562A09e2BfA46535a18862f9"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xED7cC82235A7757702475c8f77c7830c095FB5a2",
"type": "EOA",
"isVerified": true,
"name": "0xED7c…B5a2",
"url": "https://etherscan.io/address/0xED7cC82235A7757702475c8f77c7830c095FB5a2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0xA0B02B28920812324f1cC3255bd8840867d3f227",
"type": "EOA",
"isVerified": true,
"name": "0xA0B0…f227",
"url": "https://etherscan.io/address/0xA0B02B28920812324f1cC3255bd8840867d3f227"
},
{
"address": "eth:0xEad77b01ea770839F7f576Cd1516Ff6A298d9dB2",
"type": "EOA",
"isVerified": true,
"name": "0xEad7…9dB2",
"url": "https://etherscan.io/address/0xEad77b01ea770839F7f576Cd1516Ff6A298d9dB2"
}
],
"discoveryDrivenData": true
},
{
"id": "OwnerContract",
"name": "OwnerContract",
"accounts": [
{
"address": "eth:0xe58C365Da30c746204022e61482bBE828cAA9091",
"type": "Contract",
"isVerified": false,
"name": "0xe58C…9091",
"url": "https://etherscan.io/address/0xe58C365Da30c746204022e61482bBE828cAA9091"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * AnchorStateRegistry [via: ProxyAdmin]\n * DelayedWETH [via: ProxyAdmin]\n * SystemConfig [via: ProxyAdmin]\n * OptimismMintableERC20Factory [via: ProxyAdmin]\n * OptimismPortal2 [via: ProxyAdmin]\n * SuperchainConfig [via: ProxyAdmin]\n * L1ERC721Bridge_neutered [via: ProxyAdmin]\n * DisputeGameFactory [via: ProxyAdmin]\n * L1StandardBridge_neutered [via: ProxyAdmin]\n * L1CrossDomainMessenger [via: ProxyAdmin]\n* Can interact with AddressManager\n * set and change address mappings [via: ProxyAdmin]",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/7 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xa43901c63f7702C407378E55E0d0EB4064a2AE31",
"type": "EOA",
"isVerified": true,
"name": "0xa439…AE31",
"url": "https://etherscan.io/address/0xa43901c63f7702C407378E55E0d0EB4064a2AE31"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xCE27d8BCee45dB3E457EcF8629264Ca7893AAaAc",
"type": "EOA",
"isVerified": true,
"name": "0xCE27…AaAc",
"url": "https://etherscan.io/address/0xCE27d8BCee45dB3E457EcF8629264Ca7893AAaAc"
},
{
"address": "eth:0x0185fb2F27f2Acda3e2a6B8530b342333e9f22A6",
"type": "EOA",
"isVerified": true,
"name": "0x0185…22A6",
"url": "https://etherscan.io/address/0x0185fb2F27f2Acda3e2a6B8530b342333e9f22A6"
},
{
"address": "eth:0x7316DeD96c4Ff756c74D1D9c4178f6921Aff4496",
"type": "EOA",
"isVerified": true,
"name": "0x7316…4496",
"url": "https://etherscan.io/address/0x7316DeD96c4Ff756c74D1D9c4178f6921Aff4496"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x491619874b866c3cDB7C8553877da223525ead01",
"type": "EOA",
"isVerified": true,
"name": "0x4916…ad01",
"url": "https://etherscan.io/address/0x491619874b866c3cDB7C8553877da223525ead01"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sole address that can force batches ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x610DE9141a2c51A9A9624278AA97fbE54b27c102",
"type": "EOA",
"isVerified": true,
"name": "0x610D…c102",
"url": "https://etherscan.io/address/0x610DE9141a2c51A9A9624278AA97fbE54b27c102"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sign state transitions (replaces state validation for this aggchain) ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x6eE7BDa7AF04F61ccf93aB4b8DB2289aBe76C6aA",
"type": "EOA",
"isVerified": true,
"name": "0x6eE7…C6aA",
"url": "https://etherscan.io/address/0x6eE7BDa7AF04F61ccf93aB4b8DB2289aBe76C6aA"
}
],
"chain": "ethereum",
"description": "* Can interact with SystemConfig\n * it can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system ",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0xa90B4C8B8807569980F6cC958c8905383136B5eA",
"address": "eth:0x98245d0ADF4595C66F0a9Db8E13c44CBFF6be459",
"type": "EOA",
"isVerified": true,
"name": "0xa90B…B5eA",
"url": "https://etherscan.io/address/0xa90B4C8B8807569980F6cC958c8905383136B5eA"
"name": "0x9824…e459",
"url": "https://etherscan.io/address/0x98245d0ADF4595C66F0a9Db8E13c44CBFF6be459"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * set the trusted sequencer address ",
"description": "* A Sequencer - acting directly",
"discoveryDrivenData": true
},
{
"id": "EOA-5",
"name": "EOA 5",
"accounts": [
{
"address": "eth:0xdfd6C636Dcb5a013c2431316c4A0762B84e70a5d",
"address": "eth:0xa90B4C8B8807569980F6cC958c8905383136B5eA",
"type": "EOA",
"isVerified": true,
"name": "0xdfd6…0a5d",
"url": "https://etherscan.io/address/0xdfd6C636Dcb5a013c2431316c4A0762B84e70a5d"
"name": "0xa90B…B5eA",
"url": "https://etherscan.io/address/0xa90B4C8B8807569980F6cC958c8905383136B5eA"
}
],
"chain": "ethereum",
"description": "* A Sequencer - acting directly",
"description": "* Can interact with AggchainECDSAMultisig\n * set the trusted sequencer address ",
"discoveryDrivenData": true
},
{
"id": "EOA-6-and-EOA-7",
"name": "EOA 6 and EOA 7",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE"
},
{
"address": "eth:0xD7e6c31750838Ef895fBe0c57f7Fd881a14482Fb",
"type": "EOA",
"isVerified": true,
"name": "0xD7e6…82Fb",
"url": "https://etherscan.io/address/0xD7e6c31750838Ef895fBe0c57f7Fd881a14482Fb"
}
],
"chain": "ethereum",
"description": "* A trusted Aggregator - acting directly",
"discoveryDrivenData": true
},
{
"id": "EOA-8",
"name": "EOA 8",
"accounts": [
{
"address": "eth:0x736E68Af2CbF2aB0E46E4310fE5Ae568b3642FF6",
"type": "EOA",
"isVerified": true,
"name": "0x736E…2FF6",
"url": "https://etherscan.io/address/0x736E68Af2CbF2aB0E46E4310fE5Ae568b3642FF6"
}
],
"chain": "ethereum",
"description": "* A Challenger - acting directly",
"discoveryDrivenData": true
},
{
"id": "EOA-9",
"name": "EOA 9",
"accounts": [
{
"address": "eth:0xE43944421681170648E10007f73816e04F74394F",
"type": "EOA",
"isVerified": true,
"name": "0xE439…394F",
"url": "https://etherscan.io/address/0xE43944421681170648E10007f73816e04F74394F"
}
],
"chain": "ethereum",
"description": "* A Proposer - acting directly",
"discoveryDrivenData": true
}
]
}
}
+2 -2
{
"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",
"description": "System contract defining the X Layer Aggchain logic. It only enforces bridge accounting (pessimistic) proofs to protect the shared bridge while the Aggchain state transitions are not proven. They must instead be signed by 1 aggchainSigner(s).\n* Roles:\n * **admin**: EOA 5\n * **aggchainSigners**: EOA 2\n * **forceBatchAddress**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/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",
"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 4\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": "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 -1
+1 -1
{
"baseTimestamp": 1759932670,
"baseTimestamp": 1767007984,
"contractsDiscoDriven": false,
"hasDiscoUi": true,
"isDiscoDriven": false,
"permissionsDiscoDriven": false
}