057e1be0 (main)
and
cc1ae524 (PR)
+7 -7
+4 -4
{
"self": {
"stateValidation": {
"value": "Validity proofs (ST, SN)",
"description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup.",
"sentiment": "good",
"orderHint": null,
"permissioned": true,
"executionDelay": 10800,
"secondLine": "3h execution delay"
"executionDelay": 86400,
"secondLine": "1d execution delay"
},
"dataAvailability": {
"value": "Onchain (SD)",
"description": "All of the data (SD = state diffs) needed for proof construction is published onchain.",
"sentiment": "good",
"orderHint": null
},
"exitWindow": {
"value": "None",
"description": "There is no window for users to exit in case of an unwanted upgrade since contracts are instantly upgradable.",
"sentiment": "bad",
"orderHint": 0,
"regular": {
"value": "4d 3h",
"value": "5d",
"sentiment": "warning",
"description": "Non-emergency upgrades go through a 4d 3h delay, but the central operator can still censor withdrawal transactions by implementing a TransactionFilterer with no delay."
"description": "Non-emergency upgrades go through a 5d delay, but the central operator can still censor withdrawal transactions by implementing a TransactionFilterer with no delay."
}
},
"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.",
"sentiment": "warning"
},
"proposerFailure": {
"value": "Replace proposer",
"description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade.",
"sentiment": "warning",
"orderHint": null
}
}
}
+1 -1
{
"architectureImage": "zkstack-rollup",
"dataAvailability": [
{
"name": "All data required for proofs is published on chain",
"description": "All the data that is used to construct the system state is published on chain in the form of cheap blobs or calldata. This ensures that it will be available for enough time.",
"risks": [],
"references": []
}
],
"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 force any transaction via L1",
"description": "If a user is censored by the L2 Sequencer, they can try to force their transaction via an L1 queue. Right now there is no mechanism that forces L2 Sequencer to include transactions from the queue in an L2 block. The operator can implement a TransactionFilterer that censors forced transactions.",
"risks": [
{
"category": "Users can be censored if",
"text": "the operator refuses to include their transactions."
},
{
"category": "Users can be censored if",
"text": "the operator implements a TransactionFilterer, which is possible without delay."
}
],
"references": [
{
"title": "L1 - L2 interoperability - Developer's documentation",
"url": "https://docs.zksync.io/zksync-protocol/era-vm/contracts/handling-l1-l2-ops"
}
]
},
"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.\n\nBatch execution is initiated by permissioned executor EOAs, but each batch also requires approval from the sufficient number of EraMultisigValidator members before it can be executed on L1.",
"risks": [
{
"category": "MEV can be extracted if",
"text": "the operator exploits their centralized position and frontruns user transactions."
},
{
"category": "Users can be censored if",
"text": "the validator multisig does not approve batch execution."
}
],
"references": [
{
"title": "EraMultisigValidator - Etherscan proxy contract",
"url": "https://etherscan.io/address/0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83"
}
]
},
"stateDerivation": {
"nodeSoftware": "The node software is open-source, and its source code can be found [here](https://github.com/matter-labs/zksync-era).\n The main node software does not rely on Layer 1 (L1) to reconstruct the state, but you can use [this tool](https://github.com/eqlabs/zksync-state-reconstruct) for that purpose. Currently, there is no straightforward method to inject the state into the main node, but ZKsync is actively working on a solution for this.",
"compressionScheme": "Bytecodes undergo compression before deployment on Layer 1 (L1). You can find additional information on this process [here](https://github.com/matter-labs/zksync-era/blob/main/docs/src/guides/advanced/11_compression.md).",
"genesisState": "There have been neither genesis states nor regenesis.",
"dataFormat": "Details on data format can be found [here](https://github.com/matter-labs/zksync-era/blob/main/docs/src/guides/advanced/09_pubdata.md)."
},
"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."
}
]
},
"upgradesAndGovernance": {
"content": "There 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 4 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 4 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 (6/8), Guardians (5/8) and ZkFoundationMultisig (3/6) 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.",
"content": "There 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 4 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 (1d 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 4 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 (6/8), Guardians (5/8) and ZkFoundationMultisig (3/6) 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 5d or 9d (depending on Guardians extending the LegalVetoPeriod) for Standard, 0 for Emergency and 1mo 5d 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.",
"image": "zkstack"
}
}
+1 -1
{
"explanation": "Abstract is a ZK rollup that posts state diffs to the L1. Transactions within a state diff can be considered final when proven on L1 using a ZK proof, except that an operator can revert them if not executed yet. Currently, there is at least a 3h delay between state diffs verification and the execution of the corresponding state actions."
"explanation": "Abstract is a ZK rollup that posts state diffs to the L1. Transactions within a state diff can be considered final when proven on L1 using a ZK proof, except that an operator can revert them if not executed yet. Currently, there is at least a 1d delay between state diffs verification and the execution of the corresponding state actions."
}
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Diamond",
"isVerified": true,
"address": "eth:0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9",
"upgradeability": {
"proxyType": "EIP2535 diamond proxy",
"admins": [],
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1729680467,
"transactionHash": "0x19c7d643ec805bc5785ad2447af0fe01286db18018d08c3e1d2680e96cf5490f",
"implementations": [
"eth:0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a",
"eth:0xE60E94fCCb18a81D501a38959E532C0A85A1be89",
"eth:0xCDB6228b616EEf8Df47D69A372C4f725C43e718C",
"eth:0xaD193aDe635576d8e9f7ada71Af2137b16c64075"
]
},
{
"timestamp": 1729680467,
"transactionHash": "0x19c7d643ec805bc5785ad2447af0fe01286db18018d08c3e1d2680e96cf5490f",
"implementations": [
"eth:0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a",
"eth:0xE60E94fCCb18a81D501a38959E532C0A85A1be89",
"eth:0xCDB6228b616EEf8Df47D69A372C4f725C43e718C",
"eth:0xaD193aDe635576d8e9f7ada71Af2137b16c64075"
]
},
{
"timestamp": 1736869259,
"transactionHash": "0x6b99ca6cca224747e1e7475ef027d2d504830f43b946a9a9649ab69e3bb21c83",
"implementations": [
"eth:0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a",
"eth:0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9",
"eth:0x5575218cECd370E1d630d1AdB03c254B0B376821",
"eth:0xBB13642F795014E0EAC2b0d52ECD5162ECb66712"
]
},
{
"timestamp": 1742940287,
"transactionHash": "0xe27e320246920e2b0a486e2f09ef847d15e79b1364930ba960f158fa8d05f9ca",
"implementations": [
"eth:0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb",
"eth:0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1",
"eth:0x36b026c39125964D99596CE302866B5A59E4dE27",
"eth:0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800"
]
},
{
"timestamp": 1747078811,
"transactionHash": "0xc63fb7bdd8acc5852d262a14f0630fbf0a1a00b48890f389adad34ced6bfd241",
"implementations": [
"eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4",
"eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4",
"eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f",
"eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490"
]
},
{
"timestamp": 1747400387,
"transactionHash": "0xcaefda7f4c6e29f90b34a0b68817feeb9fac3da2cb66538ea15fbeed434a7201",
"implementations": [
"eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4",
"eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4",
"eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f",
"eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490"
]
},
{
"timestamp": 1751397995,
"transactionHash": "0x5baabf6f89fd91775efbaa3fcf547e344999ed8550560828e6d02511c220b7bc",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1755018191,
"transactionHash": "0x6748f394d7dbce205a1a2b85f8d2896ae4d6e68653193498b54ad6d3e18ef194",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1761601727,
"transactionHash": "0x1e0981b58494e533e348c55373907e8d29a478dd38d081c3e1f4e0213339008c",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1769463923,
"transactionHash": "0x8dacb39adb60b416058d5965b00fc4c83ec955ba60c160b0c766840b08584453",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1771005779,
"transactionHash": "0xa1b9a5968d7a9dd2d0c811f4e381780c2f21cb2628199f65abe9d1621010f3ff",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1785842723,
"transactionHash": "0xb0fa77c3fac001aff58b0cbeef7894fd44b89b3f62a4bd72df9de38072811092",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1786221011,
"transactionHash": "0x7b15fc436b4e0afacf42accd854927504dc817cfc752ce1a4fad75b7631d8071",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1786883903,
"transactionHash": "0x3039621e033e2274d2efc899e880c6ccf4834e956a2c757c65295526e5fc5204",
"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**: ChainAdmin; ultimately Abstract Multisig\n * **validators**: ValidatorTimelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9#code"
},
{
"name": "BridgeHub",
"isVerified": true,
"address": "eth:0x303a465B659cBB0ab36eE643eA362c509EEb5213",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717520639,
"transactionHash": "0xdbb03a14ea223de3db4ac0916e78123bd0a1dde68e98952326d8382d29ac4d61",
"implementations": [
"eth:0x12f893689f9603991a8c22C249FFd0509Be95661"
]
},
{
"timestamp": 1725887363,
"transactionHash": "0x21aec24a9df97ce4886d699314be627b0818da4d1987349421fb3df102c43f2b",
"implementations": [
"eth:0x509dA1BE24432F8804C4A9FF4a3c3f80284CDd13"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0x0029e562c0b54C0b88cB22adF4346DbfEC87400c"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xb720523EC3c615b069453bF4B0584CEbF034706f"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xcdd748d4A80CE6831080f1dA2CA9084CDa87Cc87"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x08A98B1048Fb61E9Fff7d7d98305aC6286Ae9F32"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
}
],
"description": "The main registry (hub) for all the contracts in the ZK stack cluster and central entrypoint for bridge transactions. Stores important mappings like from chainId to diamond address, from chainId to parent CTM, from chainId to base token etc. A clone of Bridgehub is also deployed on each L2 chain, but this clone is only used on settlement layers.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x303a465B659cBB0ab36eE643eA362c509EEb5213#code"
},
{
"name": "MessageRoot",
"isVerified": true,
"address": "eth:0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109035,
"transactionHash": "0xc47e24e8cc6c7a493bbb1a46b74f1ff113fad2e35d7596aa688df5bf0402fc65",
"implementations": [
"eth:0x19347Fb8eD3E8e35eb4a01c8B18Bd330194Cf0ad"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x382fb241396eA915108e7B7Ce1adE1322bA73aeE"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
}
],
"description": "Aggregates remote bridge message roots from all ZK stack chains. To be used with the Gateway when deployed.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD#code"
},
{
"name": "CTMDeploymentTracker",
"isVerified": true,
"address": "eth:0x6078F6B379f103de1Aa912dc46bb8Df0c8809860",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109203,
"transactionHash": "0x8b5a21b3473a638022e84097a99c4668bb0a454686b737e87957729c4822741b",
"implementations": [
"eth:0x1E405E5cdF127Dc98Eb490AB0e97345f892Ff7E1"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
}
],
"description": "Asset deployment tracker where the 'asset' is a ChainTypeManager. The registering of asset IDs for ChainTypeManagers is necessary to be able to migrate them to a given settlement layer, for example the Gateway.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6078F6B379f103de1Aa912dc46bb8Df0c8809860#code"
},
{
"name": "RollupL1DAValidator",
"isVerified": true,
"address": "eth:0x72213dfe8CA61B0A782970dCFebFb877778f9119",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract that verifies the data availability of ethereum calldata and blobs. Can be used by ZK stack rollups as the L1 part of a DAValidator pair.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x72213dfe8CA61B0A782970dCFebFb877778f9119#code"
},
{
"name": "L1AssetRouter",
"isVerified": true,
"address": "eth:0x8829AD80E425C646DAB305381ff105169FeEcE56",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x2386Bc2E26f39b72f0D4FDE0c07D68e4eEFfC725"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109071,
"transactionHash": "0x2c945c00f7a9f08b1a0bc749a08d76ca4cd5ee6f8890011ab43898e9fa1fcdf2",
"implementations": [
"eth:0x20E17D0280DeaBb78f7c193E3Ef05F62adC0936E"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xcaD49896F3d54d9A93eDdBFd370c8A4a1b239315"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x0cb7f11BA981E13598D70625dF8f4597d59f2F4F"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x2386Bc2E26f39b72f0D4FDE0c07D68e4eEFfC725"
]
}
],
"description": "Canonical central asset router for all ZK stack chains. Routes deposits and withdrawals to the respective asset handlers (like the L1NativeTokenVault); does not escrow funds itself.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8829AD80E425C646DAB305381ff105169FeEcE56#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,30,1.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C#code"
},
{
"name": "L1Nullifier",
"isVerified": true,
"address": "eth:0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717521479,
"transactionHash": "0xce3d72f23297a281cb58502dcc6a6c029489316a2faf9c4ef83141b1b254017c",
"implementations": [
"eth:0xCba1aF8f0bB223b2544F8eB8f69d1c7960f788dB"
]
},
{
"timestamp": 1724658671,
"transactionHash": "0xaec33529b74f8f9d56d7aa568c6358be299228a85e49ea85cb106eca5af7367c",
"implementations": [
"eth:0xb56A8225A745756DD215faf22E4796f373561AcD"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0xF5A14DCdde1143443f06033200D345c2a2828A99"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xda2866AF0e170d0867a3F3bB52Db10D6E09Df78A"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0x3B4FD84B27fE7B9247d5B8C6d1A29B2889C81518"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xC6f08EFb7BA78f40d00F41aFAC00211d59eb9431"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
}
],
"description": "Contract responsible for bookkeeping L1 bridging transactions. Used to finalize withdrawals and reclaim failed deposits. Does not escrow funds.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB#code"
},
{
"name": "ProtocolUpgradeHandler",
"isVerified": true,
"address": "eth:0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e"
],
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1738855967,
"transactionHash": "0xa3d1fa107e6dc4ce67d92a5af74aa7dc34602c2a1d46727790819c1f974bed95",
"implementations": [
"eth:0xD5e9D3d483a93d03D8d604CC79dC9f2F4B78C604"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0x0A67f0Fd2f7523057039F14969Fe23a5f620f19A"
]
},
{
"timestamp": 1760519471,
"transactionHash": "0x2309df20dd1cb3f3a3289e97517d10d399989292f966578240ec387246a13e61",
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
}
],
"description": "The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2 and emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **emergencyUpgradeBoard**: EmergencyUpgradeBoard\n * **guardians**: Guardians\n * **l2_protocol_governor**: ProtocolTimelockController; ultimately ZkProtocolGovernor\n * **securityCouncil**: SecurityCouncil",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3#code"
},
{
"name": "RollupDAManager",
"isVerified": true,
"address": "eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Simple registry for allowed DA address pairs for the 'rollup' data availability mode (can be permanently enforced with isPermanentRollup=true). Rollup DA address pairs (especially the L1 part) usually point to contracts that validate if data was made available on Ethereum.\n* Roles:\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45#code"
},
{
"name": "ChainAdmin",
"isVerified": true,
"address": "eth:0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets Abstract Multisig act through it.\n* Roles:\n * **owner**: Abstract Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661#code"
},
{
"name": "EraChainAdminProxy",
"isVerified": true,
"address": "eth:0x2cf3bD6a9056b39999F3883955E183F655345063",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets Matter Labs Multisig act through it.\n* Roles:\n * **owner**: Matter Labs Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2cf3bD6a9056b39999F3883955E183F655345063#code"
},
{
"name": "EraVerifierPlonk",
"isVerified": true,
"address": "eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0DAAB2B7b38ab48712996E760152c569FA356DbF#code"
},
{
"name": "EraVerifierFflonk",
"isVerified": true,
"address": "eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x9B9256E7D5b696F7BD7525F42238Ba3d9BBD9cDA",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Abstract Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9B9256E7D5b696F7BD7525F42238Ba3d9BBD9cDA#code"
},
{
"name": "EraDualVerifier",
"isVerified": true,
"address": "eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A router contract for verifiers. Routes verification requests to EraVerifierFflonk or EraVerifierPlonk depending on the supplied proof type.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EraChainAdminProxy",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B#code"
},
{
"name": "L1NativeTokenVault",
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Canonical central asset escrow for all ZK stack chains.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1#code"
},
{
"name": "ChainAssetHandler",
"isVerified": true,
"address": "eth:0xDd5CB8B9037357B4cD37391A073798f8aaB61076",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1758286391,
"transactionHash": "0x960c2e5bb98f4b9a07087b3b50fdc4681bbea1467aab3748dbb0050311f54ede",
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
}
],
"description": "Specialized contract for managing chain assets, i.e. chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xDd5CB8B9037357B4cD37391A073798f8aaB61076#code"
},
{
"name": "ServerNotifier",
"isVerified": true,
"address": "eth:0xfca808A744735D9919EEBe4660B8Fd897456Ce31",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B"
],
"implementations": [
"eth:0x260813B0DAf35dda95c41F39c6Cc3F24dc87028A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747199375,
"transactionHash": "0xbeb7447fc88b154a4730b01cb1a75b7093095056e88818c3659253111d06e66f",
"implementations": [
"eth:0x555D040F4A089D1dF14B372a87C5aF8FA37BDB7A"
]
},
{
"timestamp": 1784714999,
"transactionHash": "0xdbd5285f559e4ae32457b8425f67e1dfe76575c40999499e0b55d5cf985b85d8",
"implementations": [
"eth:0x260813B0DAf35dda95c41F39c6Cc3F24dc87028A"
]
}
],
"description": "A simple contract that can be called by the ChainAdmin to emit notifications about chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Matter Labs Multisig",
"upgradableBy": [
{
"name": "Matter Labs Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xfca808A744735D9919EEBe4660B8Fd897456Ce31#code"
}
],
"zksync2": [
{
"name": "ProtocolTimelockController",
"isVerified": true,
"address": "zksync:0x085b8B6407f150D62adB1EF926F7f304600ec714",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 0s.\n* Roles:\n * **canceller**: ZkProtocolGovernor\n * **executor**: ZkProtocolGovernor\n * **proposer**: ZkProtocolGovernor\n * **timelockAdmin**: ProtocolTimelockController; ultimately ZkProtocolGovernor",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0x085b8B6407f150D62adB1EF926F7f304600ec714#code"
},
{
"name": "ZkToken",
"isVerified": true,
"address": "zksync:0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC"
],
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
},
"chain": "zksync2",
"pastUpgrades": [
{
"timestamp": 1716317326,
"transactionHash": "0x5bfce59c2ad18019ef20d58a3f1ec496cdc85537fc9564c932f7dcbbb2a15b56",
"implementations": [
"zksync:0x3931e73ebA79a7C898D3b0e02c7C62bA4F11cB14"
]
},
{
"timestamp": 1718011538,
"transactionHash": "0xa6bc022ba0f60ac6f10a6efb84b261e9ca1b327a611bdd7a1f4d37cc9b027a3c",
"implementations": [
"zksync:0x01a6715d3560241E09E865a46122bf347A576c09"
]
},
{
"timestamp": 1765195612,
"transactionHash": "0x749b9e6eed328052d679eb86639be807b4acf811ac8786f730b45258ba41ce6f",
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
}
],
"description": "The ZK token contract on ZKsync Era. Mintable through access control roles. Used for voting in the ZK stack governance system.\n* Roles:\n * **admin**: ZkTokenProxyAdmin; ultimately ProtocolUpgradeHandler_l2Alias\n * **defaultAdmin**: ProtocolUpgradeHandler_l2Alias\n * **minterAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"upgradableBy": [
{
"id": "ProtocolUpgradeHandler_l2Alias",
"name": "ProtocolUpgradeHandler_l2Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E#code"
},
{
"name": "ZkTokenProxyAdmin",
"isVerified": true,
"address": "zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler_l2Alias",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0xdB1E46B448e68a5E35CB693a99D59f784aD115CC#code"
},
{
"name": "ZkTokenTimelockController",
"isVerified": true,
"address": "zksync:0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 3d.\n* Roles:\n * **canceller**: ZkTokenGovernor\n * **executor**: ZkTokenGovernor\n * **proposer**: ZkTokenGovernor\n * **timelockAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d#code"
}
]
},
"escrows": [
{
"address": "0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"sinceTimestamp": 1739109131,
"tokens": [
"ETH",
"YGG"
],
"contract": {
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Shared bridge for depositing tokens to Abstract and other ZK stack chains.",
"url": "https://etherscan.io/address/0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "ElasticChain",
"l2BridgeAddress": "0x954ba8223a6BFEC1Cc3867139243A02BA0Bc66e4",
"l2EtherAddress": "0x000000000000000000000000000000000000800A"
},
"chainId": 1
}
],
"programHashes": [
{
"title": "Boojum L2 Bootloader program v0.29.2",
"description": "EraVM program that proves the correct execution of a batch of ZK Stack L2 blocks.",
"proverSystemProject": "boojum",
"programUrl": "https://github.com/matter-labs/era-contracts/blob/v0.29.2/system-contracts/bootloader/bootloader.yul",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install npm and yarn: `npm install --global yarn`\n2. Install hardhat: `npm install -g hardhat`\n3. Install foundry-zksync: `curl -L https://raw.githubusercontent.com/matter-labs/foundry-zksync/main/install-foundry-zksync | bash` from [here](https://foundry-book.zksync.io/introduction/installation/).\n\nVerify:\n\n1. Checkout the correct branch in [era-contracts](https://github.com/matter-labs/era-contracts) repo: `git checkout v0.29.2`. Commit hash should be `dbfc9b5a40d68007dc405a9b669230104c1646e4`.\n2. Execute recompute_hashes.sh script: `chmod +x recompute_hashes.sh` and `./recompute_hashes.sh`. Note that the script may require a specific version of `foundryup-zksync` and it will suggest the command to install it. However you might need to manually clear git working tree in the repo foundry-zksync (probably in ~/.foundry/matter-labs/foundry-zksync) to change versions.",
"hash": "0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 4d 3h - 8d 3h delay on code upgrades unless upgrade is initiated by the EmergencyUpgradeBoard in which case there is no delay."
"text": "a contract receives a malicious code upgrade. There is a 5d - 9d delay on code upgrades unless upgrade is initiated by the EmergencyUpgradeBoard in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9",
"eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF"
]
}
+14 -0
+14 -0
[
{
"id": "cb3f3b12",
"date": "Fri, 16 Oct 2026 09:52:47 GMT",
"timestamp": 1792144273,
"description": "Gateway (OP Mainnet) upgrade: minor (6 lines) changes, permissions and trust assumptions unchanged.\n- https://disco.l2beat.com/diff/oeth:0xd9E79B648e42B660d9943A2861aa5d0e4D5CDD3e/oeth:0x64cFa63aCd51ab86fF1F4f2ADb3C8dA1D7D42aB0",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Gateway (oeth:0x998d7c178A1F9607b47eA3A8e22426451b3ce707) [acrossv3/Gateway] {\n +++ description: Entry point for Across V5 intent executions. Anyone can submit a user-signed execution path: the Gateway pulls the depositor's funds via standing token approvals or signed permits (Permit2 witness permits, EIP-3009, ERC-2612, EIP-712 transfer authorizations), then calls the committed executor. While executing, it exposes the execution context (submitter, executor, step commitment) that the SpokePool trusts to authenticate V5 fills.\n sourceHashes.1:\n- \"0xf2ee0aa25d03ecbb1796a6eac55e023884760df22fda47dedfaed361c1ec6c35\"\n+ \"0x758d7b789b8c7d62dd988d0b7d796f9811d75afa480252b92492fe28259d538f\"\n values.$implementation:\n- \"oeth:0xd9E79B648e42B660d9943A2861aa5d0e4D5CDD3e\"\n+ \"oeth:0x64cFa63aCd51ab86fF1F4f2ADb3C8dA1D7D42aB0\"\n values.$pastUpgrades.2:\n+ [\"2026-10-14T00:29:47.000Z\",\"0x40abecfcbb47eb482a6bd29d464e77aedc689b06b6fe75af4f92db1f7e92f106\",[\"oeth:0x64cFa63aCd51ab86fF1F4f2ADb3C8dA1D7D42aB0\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.oeth:0xd9E79B648e42B660d9943A2861aa5d0e4D5CDD3e:\n- \"Gateway\"\n implementationNames.oeth:0x64cFa63aCd51ab86fF1F4f2ADb3C8dA1D7D42aB0:\n+ \"Gateway\"\n }\n```"
}
]
},
{
"id": "879a6192",
"date": "Mon, 12 Oct 2026 07:57:23 GMT",
"timestamp": 1791789448,
"description": "Gateway now forwards only the execution's msg.value, preventing executors from sweeping residual ETH. One authorized EOA also removed its EIP-7702 delegation.\n\n[Gateway diff](https://disco.l2beat.com/diff/eth:0xd9E79B648e42B660d9943A2861aa5d0e4D5CDD3e/eth:0x64cFa63aCd51ab86fF1F4f2ADb3C8dA1D7D42aB0).",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Gateway (eth:0x998d7c178A1F9607b47eA3A8e22426451b3ce707) [acrossv3/Gateway] {\n +++ description: Entry point for Across V5 intent executions. Anyone can submit a user-signed execution path: the Gateway pulls the depositor's funds via standing token approvals or signed permits (Permit2 witness permits, EIP-3009, ERC-2612, EIP-712 transfer authorizations), then calls the committed executor. While executing, it exposes the execution context (submitter, executor, step commitment) that the SpokePool trusts to authenticate V5 fills.\n sourceHashes.1:\n- \"0xf2ee0aa25d03ecbb1796a6eac55e023884760df22fda47dedfaed361c1ec6c35\"\n+ \"0x758d7b789b8c7d62dd988d0b7d796f9811d75afa480252b92492fe28259d538f\"\n values.$implementation:\n- \"eth:0xd9E79B648e42B660d9943A2861aa5d0e4D5CDD3e\"\n+ \"eth:0x64cFa63aCd51ab86fF1F4f2ADb3C8dA1D7D42aB0\"\n values.$pastUpgrades.2:\n+ [\"2026-10-09T18:50:23.000Z\",\"0x5a6a80fbc687552b0200c7830e52a3e4d216cab337b65e456d50771b6f009651\",[\"eth:0x64cFa63aCd51ab86fF1F4f2ADb3C8dA1D7D42aB0\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.eth:0xd9E79B648e42B660d9943A2861aa5d0e4D5CDD3e:\n- \"Gateway\"\n implementationNames.eth:0x64cFa63aCd51ab86fF1F4f2ADb3C8dA1D7D42aB0:\n+ \"Gateway\"\n }\n```\n\n```diff\n EOA (eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D) {\n +++ description: None\n sourceHashes:\n- [\"0x1f44812af62d28f019e30e8eb2af596fb36c7db9d34576972c0405e110a6ef45\"]\n proxyType:\n- \"EIP7702 EOA\"\n+ \"EOA\"\n values:\n- {\"$implementation\":\"eth:0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B\",\"delegationManager\":\"eth:0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3\",\"DOMAIN_VERSION\":\"1\",\"eip712Domain\":{\"fields\":\"0x0f\",\"name\":\"EIP7702StatelessDeleGator\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]},\"entryPoint\":\"eth:0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"getDeposit\":0,\"getDomainHash\":\"0x3818b9766109877e09a9c427e7b310cde355550731129529095a7e6b02cf55ab\",\"getNonce\":0,\"NAME\":\"EIP7702StatelessDeleGator\",\"PACKED_USER_OP_TYPEHASH\":\"0xbc37962d8bd1d319c95199bdfda6d3f92baa8903a61b32d5f4ec1f4b36a3bc18\",\"VERSION\":\"1.3.0\"}\n }\n```"
}
]
},
{
"id": "2945753d",
"date": "Tue, 15 Sep 2026 11:29:53 GMT",
"timestamp": 1789471699,
"description": "Some rebalance routes removed (this allowed relayers to get refunded in these token/chain combinations) and 7702 delegation.",
"isHighSeverity": true,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D) {\n +++ description: None\n proxyType:\n- \"EOA\"\n+ \"EIP7702 EOA\"\n sourceHashes:\n+ [\"0x1f44812af62d28f019e30e8eb2af596fb36c7db9d34576972c0405e110a6ef45\"]\n values:\n+ {\"$implementation\":\"eth:0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B\",\"delegationManager\":\"eth:0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3\",\"DOMAIN_VERSION\":\"1\",\"eip712Domain\":{\"fields\":\"0x0f\",\"name\":\"EIP7702StatelessDeleGator\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]},\"entryPoint\":\"eth:0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"getDeposit\":0,\"getDomainHash\":\"0x3818b9766109877e09a9c427e7b310cde355550731129529095a7e6b02cf55ab\",\"getNonce\":0,\"NAME\":\"EIP7702StatelessDeleGator\",\"PACKED_USER_OP_TYPEHASH\":\"0xbc37962d8bd1d319c95199bdfda6d3f92baa8903a61b32d5f4ec1f4b36a3bc18\",\"VERSION\":\"1.3.0\"}\n }\n```\n\n```diff\n contract HubPool (eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda) [acrossv3/HubPool] {\n +++ description: The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n values.poolRebalanceRoutes.Mode.0.destinationToken:\n- \"eth:0x4200000000000000000000000000000000000006\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Mode.1.destinationToken:\n- \"eth:0xd988097fb8612cc24eeC14542bC03424c656005f\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Mode.2.destinationToken:\n- \"eth:0xf0F161fDA2712DB8b566946122a5af183995e2eD\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Mode.3.destinationToken:\n- \"eth:0xcDd475325D6F564d27247D1DddBb0DAc6fA0a5CF\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "d16a4058",
"date": "Tue, 25 Aug 2026 08:51:00 GMT",
"timestamp": 1787647766,
"description": "7702 auth removed.",
"isHighSeverity": true,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D) {\n +++ description: None\n sourceHashes:\n- [\"0x3e6b48b0583e724b7006fcec0d9a021abd698deb8f7699582cdfee96bd65db4f\"]\n proxyType:\n- \"EIP7702 EOA\"\n+ \"EOA\"\n values:\n- {\"$implementation\":\"eth:0x69007702764179f14F51cdce752f4f775d74E139\",\"accountId\":\"alchemy.sma-7702.1.0.0\",\"entryPoint\":\"eth:0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"getFallbackSignerData\":[\"eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D\",false]}\n }\n```"
}
]
},
{
"id": "93b9a0e8",
"date": "Mon, 17 Aug 2026 09:13:05 GMT",
"timestamp": 1786957091,
"description": "Across V5 upgrade: new Gateway contract and two new fill entrypoints for v5 deposits. In executor mode, the SpokePool pulls the output tokens from the Gateway's current solver using the relayer's standing approvals to the SpokePool.\n\nThe Gateway executes user-signed intent 'paths': anyone can submit one, and the Gateway pulls the depositor's funds via standing allowances or signed permits (Permit2 witness, EIP-3009, ERC-2612, EIP-712 transferFrom auths). It is owned and upgradable (no delay) by a new 3/5 'Across Gateway Multisig'.",
"isHighSeverity": true,
"changeCount": 21,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Ethereum_SpokePool (eth:0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5) [acrossv3/SpokePool] {\n +++ description: The user-facing contract on each connected chain where funds are deposited to initiate a bridge transfer. It also receives settlement data from the HubPool to process refunds for the relayers who fulfilled those transfers. Since the V5 upgrade, deposits tagged with a special message prefix can only be filled through the Across V5 Gateway, which authenticates the fill and identifies the relayer paying for it.\n sourceHashes.1:\n- \"0x7c82111265c69f8a894d8029e30766541164d55fb1e814bf29ddacecaeee12c1\"\n+ \"0x667fb3db67749e9488a6511b73f11c5acfa08bd66fa64944fe1d3064fa551c6e\"\n values.$implementation:\n- \"eth:0x5E5B726C81f43B953a62AD87E2835C85c4D9Dd3B\"\n+ \"eth:0x456Ac26E5ec083EE9889eBa0d1a0A582502B8e84\"\n values.$pastUpgrades.11:\n+ [\"2026-08-14T18:02:35.000Z\",\"0x8149765132e15fb4f1dce1cab83f087ca099d778fee49191dff408069b734ad3\",[\"eth:0x456Ac26E5ec083EE9889eBa0d1a0A582502B8e84\"]]\n values.$upgradeCount:\n- 11\n+ 12\n values.gateway:\n+ \"eth:0x998d7c178A1F9607b47eA3A8e22426451b3ce707\"\n values.V5_MAGIC_PREFIX:\n+ \"0x89ae4bc75915265a3f10e926c3894a29534f1d6362ee8959cb0e5be00f3527fd\"\n implementationNames.eth:0x5E5B726C81f43B953a62AD87E2835C85c4D9Dd3B:\n- \"Ethereum_SpokePool\"\n implementationNames.eth:0x456Ac26E5ec083EE9889eBa0d1a0A582502B8e84:\n+ \"Ethereum_SpokePool\"\n }\n```\n\n```diff\n contract OP_SpokePool (oeth:0x6f26Bf09B1C792e3228e5467807a900A503c0281) [acrossv3/SpokePool] {\n +++ description: The user-facing contract on each connected chain where funds are deposited to initiate a bridge transfer. It also receives settlement data from the HubPool to process refunds for the relayers who fulfilled those transfers. Since the V5 upgrade, deposits tagged with a special message prefix can only be filled through the Across V5 Gateway, which authenticates the fill and identifies the relayer paying for it.\n name:\n- \"Optimism_SpokePool\"\n+ \"OP_SpokePool\"\n sourceHashes.1:\n- \"0xa7af88e42066dce1580a5c39e3bd045de8511f8a453056cd46140e3df8b96f19\"\n+ \"0x63512362033eb12727887f57a9397e800b1fa1b98ff0fe2742abe67f53d493f1\"\n values.$implementation:\n- \"oeth:0x0966F5034261CC50926fB9D5C1603A5034Ffa81c\"\n+ \"oeth:0x60674c53a4cC4ED350659C95fb8020B5AC61cA1D\"\n values.$pastUpgrades.15:\n+ [\"2026-08-14T17:51:57.000Z\",\"0x5ef940d028891d65c1ab1383d1cf63e514e1906c1a4f7483c1bdb6e2b9ca39bd\",[\"oeth:0x60674c53a4cC4ED350659C95fb8020B5AC61cA1D\"]]\n values.$upgradeCount:\n- 15\n+ 16\n values.gateway:\n+ \"oeth:0x998d7c178A1F9607b47eA3A8e22426451b3ce707\"\n values.V5_MAGIC_PREFIX:\n+ \"0x89ae4bc75915265a3f10e926c3894a29534f1d6362ee8959cb0e5be00f3527fd\"\n implementationNames.oeth:0x0966F5034261CC50926fB9D5C1603A5034Ffa81c:\n- \"Optimism_SpokePool\"\n implementationNames.oeth:0x60674c53a4cC4ED350659C95fb8020B5AC61cA1D:\n+ \"OP_SpokePool\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Across Gateway Multisig (eth:0x4c45F70B1d9a7A6D1984daccAd74D0E973B73F01) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Gateway (eth:0x998d7c178A1F9607b47eA3A8e22426451b3ce707) [acrossv3/Gateway]\n +++ description: Entry point for Across V5 intent executions. Anyone can submit a user-signed execution path: the Gateway pulls the depositor's funds via standing token approvals or signed permits (Permit2 witness permits, EIP-3009, ERC-2612, EIP-712 transfer authorizations), then calls the committed executor. While executing, it exposes the execution context (submitter, executor, step commitment) that the SpokePool trusts to authenticate V5 fills.\n```\n\n```diff\n+ Status: CREATED\n contract Gateway (oeth:0x998d7c178A1F9607b47eA3A8e22426451b3ce707) [acrossv3/Gateway]\n +++ description: Entry point for Across V5 intent executions. Anyone can submit a user-signed execution path: the Gateway pulls the depositor's funds via standing token approvals or signed permits (Permit2 witness permits, EIP-3009, ERC-2612, EIP-712 transfer authorizations), then calls the committed executor. While executing, it exposes the execution context (submitter, executor, step commitment) that the SpokePool trusts to authenticate V5 fills.\n```\n\n```diff\n+ Status: CREATED\n contract Across Gateway Multisig (oeth:0xd396CcB6770EAB84045c9Bce2939c478639E2A7F) [GnosisSafe]\n +++ description: None\n```"
}
]
},
{
"id": "fba25291",
"date": "Wed, 12 Aug 2026 12:22:05 GMT",
"timestamp": 1786537235,
"description": "More pool rebalance routes were disabled (see below for explanation).",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract HubPool (eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda) [acrossv3/HubPool] {\n +++ description: The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n values.poolRebalanceRoutes.Ethereum.4.destinationToken:\n- \"eth:0x6B175474E89094C44Da98b954EedeAC495271d0F\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Lens.0.destinationToken:\n- \"eth:0xE5ecd226b3032910CEaa43ba92EE8232f8237553\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Lens.2.destinationToken:\n- \"eth:0x88F08E304EC4f90D644Cec3Fb69b8aD414acf884\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.ZKsync Era.0.destinationToken:\n- \"eth:0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.ZKsync Era.1.destinationToken:\n- \"eth:0x493257fD37EDB34451f62EDf8D2a0C418852bA4C\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.ZKsync Era.2.destinationToken:\n- \"eth:0xBBeB516fb02a01611cBBE0453Fe3c580D7281011\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.ZKsync Era.3.destinationToken:\n- \"eth:0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "bcdea11c",
"date": "Mon, 10 Aug 2026 08:54:12 GMT",
"timestamp": 1786351959,
"description": "More pool rebalance routes across ten destination chains were disabled (see below for explanation).",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract HubPool (eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda) [acrossv3/HubPool] {\n +++ description: The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n values.poolRebalanceRoutes.Ink.1.destinationToken:\n- \"eth:0x2D270e6886d130D724215A266106e6832161EAEd\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Blast.0.destinationToken:\n- \"eth:0x4300000000000000000000000000000000000004\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Blast.1.destinationToken:\n- \"eth:0xF7bc58b8D8f97ADC129cfC4c9f45Ce3C0E1D2692\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Blast.2.destinationToken:\n- \"eth:0x4300000000000000000000000000000000000003\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "a3cfd192",
"date": "Wed, 29 Jul 2026 11:40:27 GMT",
"timestamp": 1785325146,
"description": "13 pool rebalance routes across ten destination chains were disabled by setting their destination token to the zero address. HubPool rejects root-bundle execution for disabled routes, so these token/chain pairs can no longer be used for pool rebalances and relayer refunds.",
"isHighSeverity": false,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract HubPool (eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda) [acrossv3/HubPool] {\n +++ description: The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n values.poolRebalanceRoutes.OP Mainnet.1.destinationToken:\n- \"eth:0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Unichain.1.destinationToken:\n- \"eth:0x078D782b760474a361dDA0AF3839290b0EF57AD6\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Polygon PoS.1.destinationToken:\n- \"eth:0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Polygon PoS.7.destinationToken:\n- \"eth:0xc2132D05D31c914a87C6611C10748AEb04B58e8F\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Monad.0.destinationToken:\n- \"eth:0x754704Bc059F8C67012fEd69BC8A327a5aafb603\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Monad.1.destinationToken:\n- \"eth:0xe7cd86e13AC4309349F30B3435a9d337750fC82D\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.World Chain.2.destinationToken:\n- \"eth:0x79A02482A880bCE3F13e09Da970dC34db4CD24d1\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.HyperEVM.0.destinationToken:\n- \"eth:0xb88339CB7199b77E23DB6E890353E22632Ba630f\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Base.1.destinationToken:\n- \"eth:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Plasma.0.destinationToken:\n- \"eth:0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Arbitrum One.1.destinationToken:\n- \"eth:0xaf88d065e77c8cC2239327C5EDb3A432268e5831\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Arbitrum One.7.destinationToken:\n- \"eth:0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Solana.0.destinationToken:\n- \"eth:0xaBc97431B1Bbe4C2D2f6E0E47ca60203452f5d61\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "8bfe499c",
"date": "Thu, 23 Jul 2026 13:55:34 GMT",
"timestamp": 1784814834,
"description": "22 pool rebalance routes were disabled by setting their destination tokens to the zero address.",
"isHighSeverity": false,
"changeCount": 22,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract HubPool (eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda) [acrossv3/HubPool] {\n +++ description: The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n values.poolRebalanceRoutes.Ethereum.5.destinationToken:\n- \"eth:0x42bBFa2e77757C645eeaAd1655E0911a7553Efbc\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.OP Mainnet.4.destinationToken:\n- \"eth:0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Polygon PoS.4.destinationToken:\n- \"eth:0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Polygon PoS.5.destinationToken:\n- \"eth:0x1FcbE5937B0cc2adf69772D228fA4205aCF4D9b2\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Boba.0.destinationToken:\n- \"eth:0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Boba.1.destinationToken:\n- \"eth:0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Boba.2.destinationToken:\n- \"eth:0xdc0486f8bf31DF57a952bcd3c1d3e166e3d9eC8b\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Boba.3.destinationToken:\n- \"eth:0x780f33Ad21314d9A1Ffb6867Fe53d48a76Ec0D16\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Boba.4.destinationToken:\n- \"eth:0xf74195Bb8a5cf652411867c5C2C5b8C2a402be35\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Boba.5.destinationToken:\n- \"eth:0xa18bF3994C0Cc6E3b63ac420308E5383f53120D7\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Boba.6.destinationToken:\n- \"eth:0x5DE1677344D3Cb0D7D465c10b72A8f60699C062d\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Boba.7.destinationToken:\n- \"eth:0x96821b258955587069F680729cD77369C0892B40\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.ZKsync Era.4.destinationToken:\n- \"eth:0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Lisk.0.destinationToken:\n- \"eth:0x4200000000000000000000000000000000000006\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Lisk.1.destinationToken:\n- \"eth:0x05D032ac25d322df992303dCa074EE7392C117b9\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Lisk.3.destinationToken:\n- \"eth:0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Lisk.4.destinationToken:\n- \"eth:0xF242275d3a6527d877f2c927a82D9b057609cc71\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Base.2.destinationToken:\n- \"eth:0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Arbitrum One.3.destinationToken:\n- \"eth:0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Linea.0.destinationToken:\n- \"eth:0x4AF15ec2A0BD43Db75dd04E62FAA3B8EF36b00d5\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Zora.0.destinationToken:\n- \"eth:0x4200000000000000000000000000000000000006\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Zora.1.destinationToken:\n- \"eth:0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "d76372e0",
"date": "Wed, 08 Jul 2026 12:42:41 GMT",
"timestamp": 1783509971,
"description": "7702 delegation of the `protocolFeeCaptureAddress` EOA.\n\nsome `poolRebalanceRoutes` (UMA v1, ACX,..) are routed to the zero address, meaning they are now unsupported.",
"isHighSeverity": true,
"changeCount": 26,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D) {\n +++ description: None\n sourceHashes.0:\n- \"0x1f44812af62d28f019e30e8eb2af596fb36c7db9d34576972c0405e110a6ef45\"\n+ \"0x3e6b48b0583e724b7006fcec0d9a021abd698deb8f7699582cdfee96bd65db4f\"\n values.$implementation:\n- \"eth:0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B\"\n+ \"eth:0x69007702764179f14F51cdce752f4f775d74E139\"\n values.delegationManager:\n- \"eth:0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3\"\n values.DOMAIN_VERSION:\n- \"1\"\n values.eip712Domain:\n- {\"fields\":\"0x0f\",\"name\":\"EIP7702StatelessDeleGator\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]}\n values.getDeposit:\n- 0\n values.getDomainHash:\n- \"0x3818b9766109877e09a9c427e7b310cde355550731129529095a7e6b02cf55ab\"\n values.getNonce:\n- 0\n values.NAME:\n- \"EIP7702StatelessDeleGator\"\n values.PACKED_USER_OP_TYPEHASH:\n- \"0xbc37962d8bd1d319c95199bdfda6d3f92baa8903a61b32d5f4ec1f4b36a3bc18\"\n values.VERSION:\n- \"1.3.0\"\n values.accountId:\n+ \"alchemy.sma-7702.1.0.0\"\n values.getFallbackSignerData:\n+ [\"eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D\",false]\n }\n```\n\n```diff\n contract HubPool (eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda) [acrossv3/HubPool] {\n +++ description: The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n values.Adapters.Avalanche:\n+ \"eth:0x1af659333172DC502bD71Cf5b889521C97751838\"\n values.CrossChainContracts.Avalanche:\n+ \"eth:0xFE9D541c92E4e90437C7152A00244886dE37a658\"\n values.poolRebalanceRoutes.Ethereum.3.destinationToken:\n- \"eth:0x04Fa0d235C4abf4BcF4787aF4CF447DE572eF828\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Ethereum.9.destinationToken:\n- \"eth:0x44108f0223A3C3028F5Fe7AEC7f9bb2E66beF82F\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Ethereum.13.destinationToken:\n- \"eth:0x1ff1dC3cB9eeDbC6Eb2d99C03b30A05cA625fB5a\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.OP Mainnet.3.destinationToken:\n- \"eth:0xE7798f023fC62146e8Aa1b36Da45fb70855a77Ea\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.OP Mainnet.7.destinationToken:\n- \"eth:0xFf733b2A3557a7ed6697007ab5D11B79FdD1b76B\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Polygon PoS.3.destinationToken:\n- \"eth:0x3066818837c5e6eD6601bd5a91B0762877A6B731\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Polygon PoS.8.destinationToken:\n- \"eth:0xF328b73B6c685831F238c30a23Fc19140CB4D8FC\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Lens.1.destinationToken:\n- \"eth:0x6bDc36E20D267Ff0dd6097799f82e78907105e2F\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Arbitrum One.5.destinationToken:\n- \"eth:0xd693Ec944A85eeca4247eC1c3b130DCa9B0C3b22\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Arbitrum One.8.destinationToken:\n- \"eth:0x53691596d1BCe8CEa565b84d4915e69e03d9C99d\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Avalance_Adapter (eth:0x1af659333172DC502bD71Cf5b889521C97751838) [acrossv3/universalAdapter]\n +++ description: This adapter can be used to send messages / root bundles to chains that do not have a canonical adapter. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n```"
}
]
},
{
"id": "78ab05fb",
"date": "Fri, 26 Jun 2026 09:06:40 GMT",
"timestamp": 1782464735,
"description": "Address PR review feedback:\n- `AcrossBondToken` proposers permission is deduped into a single description that clarifies the two-level settlement model: proposals are bonded with ABT and settle optimistically on the HubPool with no UMA involvement; UMA token voting only kicks in when a dispute is raised via `disputeRootBundle()` within the challenge period.\n- Universal-adapter descriptions: replace the `{{DATA_STORE}}` template placeholder, which was rendering as a raw `eth:0x…` address, with the literal contract name `HubPoolStore` so the prose reads naturally.\n\nAlso catches up to onchain state since the last main discovery: two newly registered chain mappings (`CrossChainContracts` + `Adapters`) and a couple of `poolRebalanceRoutes` re-points/disables.",
"isHighSeverity": false,
"changeCount": 25,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract HubPool (eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda) [acrossv3/HubPool] {\n +++ description: The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n values.Adapters.4663:\n+ \"eth:0xbc5E82035e2C8d4B335Ccb751D6BF47e44Dec678\"\n values.Adapters.5042:\n+ \"eth:0xCA5f9960022078F3585a188e06F910eeC29c7eBD\"\n values.CrossChainContracts.4663:\n+ \"eth:0xD29C85F15DF544bA632C9E25829fd29d767d7978\"\n values.CrossChainContracts.5042:\n+ \"eth:0x9b4A302A548c7e313c2b74C461db7b84d3074A84\"\n values.poolRebalanceRoutes.Ethereum.7.destinationToken:\n- \"eth:0xba100000625a3754423978a60c9317c58a424e3D\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Ethereum.10.destinationToken:\n- \"eth:0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Ethereum.11.destinationToken:\n- \"eth:0x0cEC1A9154Ff802e7934Fc916Ed7Ca50bDE6844e\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Ethereum.12.destinationToken:\n- \"eth:0x6033F7f88332B8db6ad452B7C6D5bB643990aE3f\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Ethereum.15.destinationToken:\n- \"eth:0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.OP Mainnet.5.destinationToken:\n- \"eth:0xFE8B128bA8C78aabC59d4c64cEE7fF28e9379921\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.OP Mainnet.8.destinationToken:\n- \"eth:0x8700dAec35aF8Ff88c16BdF0418774CB3D7599B4\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.OP Mainnet.9.destinationToken:\n- \"eth:0x395Ae52bB17aef68C2888d941736A71dC6d4e125\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.OP Mainnet.11.destinationToken:\n- \"eth:0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Polygon PoS.6.destinationToken:\n- \"eth:0x9a71012B13CA4d3D0Cdc72A177DF3ef03b0E76A3\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Polygon PoS.9.destinationToken:\n- \"eth:0x25788a1a171ec66Da6502f9975a15B609fF54CF6\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.World Chain.3.destinationToken:\n- \"eth:0x7077C71B4AF70737a08287E279B717Dcf64fdC57\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Lisk.2.destinationToken:\n- \"eth:0xac485391EB2d7D88253a7F1eF18C37f4242D1A24\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Base.3.destinationToken:\n- \"eth:0x4158734D47Fc9692176B5085E0F52ee0Da5d47F1\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Base.4.destinationToken:\n- \"eth:0xd652C5425aea2Afd5fb142e120FeCf79e18fafc3\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Base.5.destinationToken:\n- \"eth:0x4e107a0000DB66f0E9Fd2039288Bf811dD1f9c74\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Arbitrum One.6.destinationToken:\n- \"eth:0x040d1EdC9569d4Bab2D15287Dc5A4F10F56a56B8\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.poolRebalanceRoutes.Arbitrum One.9.destinationToken:\n- \"eth:0xCF934E2402A5e072928a39a956964eb8F2B5B79C\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Universal_Adapter (eth:0xbc5E82035e2C8d4B335Ccb751D6BF47e44Dec678) [acrossv3/universalAdapter]\n +++ description: This adapter can be used to send messages / root bundles to chains that do not have a canonical adapter. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n```\n\n```diff\n+ Status: CREATED\n contract Universal_Adapter (eth:0xCA5f9960022078F3585a188e06F910eeC29c7eBD) [acrossv3/universalAdapter]\n +++ description: This adapter can be used to send messages / root bundles to chains that do not have a canonical adapter. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Optimism_SpokePool (oeth:0x6f26Bf09B1C792e3228e5467807a900A503c0281) [acrossv3/SpokePool]\n +++ description: The user-facing contract on each connected chain where funds are deposited to initiate a bridge transfer. It also receives settlement data from the HubPool to process refunds for the relayers who fulfilled those transfers.\n```"
}
]
},
{
"id": "e255e5b0",
"date": "Thu, 21 May 2026 09:26:54 GMT",
"timestamp": 1779355521,
"description": "spoke contract on tron updated.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract HubPool (eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda) [acrossv3/HubPool] {\n +++ description: The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n values.CrossChainContracts.728126428:\n- \"eth:0x284352bb448C65b75EbE004862e4f4531042d628\"\n+ \"eth:0xc148aF9B50Bc03Cc0c616Cd85C66Aae9bD90cD80\"\n }\n```"
}
]
},
{
"id": "78920953",
"date": "Mon, 13 Apr 2026 09:14:19 GMT",
"timestamp": 1776070910,
"description": "add adapter for Tron.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract HubPool (eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda) {\n +++ description: The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n values.Adapters.728126428:\n+ \"eth:0xA1da1A70cc9F27F4aEDff1d515B1a0C47fb6c3Db\"\n values.CrossChainContracts.728126428:\n+ \"eth:0x284352bb448C65b75EbE004862e4f4531042d628\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Universal_Adapter (eth:0xA1da1A70cc9F27F4aEDff1d515B1a0C47fb6c3Db)\n +++ description: This adapter can be used to send messages / root bundles to Tron. It stores calldata in the eth:0x1Ace3BbD69b63063F859514Eca29C9BDd8310E61 on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n```"
}
]
},
{
"id": "ca0d1980",
"date": "Tue, 24 Mar 2026 12:01:22 GMT",
"timestamp": 1774353602,
"description": "7702 delegation.",
"isHighSeverity": true,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D) {\n +++ description: None\n proxyType:\n- \"EOA\"\n+ \"EIP7702 EOA\"\n sourceHashes:\n+ [\"0x41c6ce964a4ef3e910f9ddf78152734dae8d1b1094ffc8334c50249a3b112bbf\"]\n values:\n+ {\"$implementation\":\"eth:0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B\",\"delegationManager\":\"eth:0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3\",\"DOMAIN_VERSION\":\"1\",\"eip712Domain\":{\"fields\":\"0x0f\",\"name\":\"EIP7702StatelessDeleGator\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"eth:0x9A8f92a830A5cB89a3816e3D267CB7791c16b04D\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]},\"entryPoint\":\"eth:0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"getDeposit\":0,\"getDomainHash\":\"0x3818b9766109877e09a9c427e7b310cde355550731129529095a7e6b02cf55ab\",\"getNonce\":0,\"NAME\":\"EIP7702StatelessDeleGator\",\"PACKED_USER_OP_TYPEHASH\":\"0xbc37962d8bd1d319c95199bdfda6d3f92baa8903a61b32d5f4ec1f4b36a3bc18\",\"VERSION\":\"1.3.0\"}\n }\n```"
}
]
},
{
"id": "161a4ab4",
"date": "Mon, 02 Mar 2026 08:59:50 GMT",
"timestamp": 1772441911,
"description": "ms change.",
"isHighSeverity": false,
"changeCount": 48,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract VotingV2 (eth:0x004395edb43EFca9885CEdad51EC9fAf93Bd34ac)\n +++ description: Core smart contract for UMA's Data Verification Mechanism (DVM), serving as source of truth for disputed claims. UMA token holders collectively resolve price requests and earn rewards for correct participation. Commit- and reveal phases for the voting take 1d each.\n```\n\n```diff\n+ Status: CREATED\n contract Zora_Adapter (eth:0x024F2fC31CBDD8de17194b1892c834f98Ef5169b)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Soneium_Adapter (eth:0x0c9d064523177dBB55CFE52b9D0c485FBFc35FD2)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Universal_Adapter (eth:0x0ec70777Ac388774041dD5A1778Cdf3AF3134D2B)\n +++ description: This adapter can be used to send messages / root bundles to Hyperliquid. It stores calldata in the eth:0x1Ace3BbD69b63063F859514Eca29C9BDd8310E61 on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero.\n```\n\n```diff\n+ Status: CREATED\n contract Redstone_Adapter (eth:0x188F8C95B7cfB7993B53a4F643efa687916f73fA)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract HubPoolStore (eth:0x1Ace3BbD69b63063F859514Eca29C9BDd8310E61)\n +++ description: Simple data store used by the Universal_Adapter to store message calldata hashes. The content of this calldata can be proven by Ethereum zk light clients on remote chains and then executed to relay root bundles or arbitrary messages.\n```\n\n```diff\n+ Status: CREATED\n contract Scroll_Adapter (eth:0x2DA799c2223c6ffB595e578903AE6b95839160d8)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Boba_Adapter (eth:0x33B0Ec794c15D6Cc705818E70d4CaCe7bCfB5Af3)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Optimism_Adapter (eth:0x3562e309C6C79626E5F0Cf746FB5Bf4f6b8EebE5)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract AcrossConfigStore (eth:0x3B03509645713718B78951126E0A6de6f10043f5)\n +++ description: Simple, owner-controlled contract for storing protocol-wide, token-specific configuration data.\n```\n\n```diff\n+ Status: CREATED\n contract Registry (eth:0x3e532e6222afe9Bcf02DCB87216802c75D5113aE)\n +++ description: Registry for contracts that are allowed to call `requestPrice()` in the UMA voting contracts (ie. request dispute resolution by the UMA DVM).\n```\n\n```diff\n+ Status: CREATED\n contract Finder (eth:0x40f941E48A552bF496B154Af6bf55725f18D77c3)\n +++ description: Maps interface names to contract addresses (UMA protocol contracts).\n```\n\n```diff\n+ Status: CREATED\n contract AdapterStore (eth:0x42df4D71f35ffBD28ae217d52E83C1DA0007D63b)\n +++ description: A helper contract for chain adapters on the hub chain that support OFT messaging. Handles token -> messenger mapping.\n```\n\n```diff\n+ Status: CREATED\n contract Universal_Adapter (eth:0x4577980eBFCC6fC8ff516aC06dA9e729c40cA57c)\n +++ description: This adapter can be used to send messages / root bundles to chains that do not have a canonical adapter. It stores calldata in the eth:0x1Ace3BbD69b63063F859514Eca29C9BDd8310E61 on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n```\n\n```diff\n+ Status: CREATED\n contract ProposerV2 (eth:0x50efaC9619225d7fB4703C5872da978849B6E7cC)\n +++ description: Token governance contract allowing anyone to create a UMA governance proposal for a bond of 5,000 UMA tokens.\n```\n\n```diff\n+ Status: CREATED\n contract Ethereum_Adapter (eth:0x527E872a5c3f0C7c24Fe33F2593cFB890a285084)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Polygon_Adapter (eth:0x537abE038C223066B50312474409924487D2E655)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Ink_Adapter (eth:0x545E43B6eC2f9a44CAa531298699Ff05958670B5)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Store (eth:0x54f44eA3D2e7aA0ac089c4d8F7C93C27844057BF)\n +++ description: UMA protocol contract responsible for calculating and collecting regular and final fees for using the DVM.\n```\n\n```diff\n+ Status: CREATED\n contract Linea_Adapter (eth:0x5A44A32c13e2C43416bFDE5dDF5DCb3880c42787)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Ethereum_SpokePool (eth:0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5)\n +++ description: The user-facing contract on each connected chain where funds are deposited to initiate a bridge transfer. It also receives settlement data from the HubPool to process refunds for the relayers who fulfilled those transfers.\n```\n\n```diff\n+ Status: CREATED\n contract ZkStack_CustomGasToken_Adapter (eth:0x5e0B7e20a77BDf11812837D30F1326068Bcf24Cf)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Universal_Adapter (eth:0x6f1C9d3bcDF51316E7b515a62C02F601500b084b)\n +++ description: This adapter can be used to send messages / root bundles to Binance Smart Chain. It stores calldata in the eth:0x1Ace3BbD69b63063F859514Eca29C9BDd8310E61 on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero.\n```\n\n```diff\n+ Status: CREATED\n contract Alephzero_Adapter (eth:0x6F4083304C2cA99B077ACE06a5DcF670615915Af)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Base_Adapter (eth:0x799BDC55d91864b14B2eD63A34DeF5d502AA897f)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract GovernorV2 (eth:0x7b292034084A41B9D441B71b6E3557Edd0463fa8)\n +++ description: Central UMA governance contract. It executes administrative proposals that have been passed by UMA token holder votes.\n```\n\n```diff\n+ Status: CREATED\n contract UMA Multisig (eth:0x8180D59b7175d4064bDFA8138A58e9baBFFdA44a)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract OptimisticGovernor (eth:0x8692B776d1Ff0664177c90465038056Dc64f8991)\n +++ description: Optimistic Governance module allowing for proposals by anyone with a bond of 2 WETH. They become executable if not challenged within 2d. The rules for proposals can be read directly from the contract values.\n```\n\n```diff\n+ Status: CREATED\n contract DoctorWho_Adapter (eth:0x8956eFa31572E1d7ed5c8e36772F214A57DFA0D1)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract WorldChain_Adapter (eth:0x8bbdD67102D743b8533c1277a4ffdA04Dea158D1)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract EmergencyProposer (eth:0x91F1804aCaf87C2D34A34A70be1bb16bB85D6748)\n +++ description: Token governance contract allowing anyone to create a UMA governance proposal for a bond of 5,000,000 UMA tokens. This circumvents the UMA optimistic oracle but can only be executed or removed after 10d, and only by eth:0x8180D59b7175d4064bDFA8138A58e9baBFFdA44a.\n```\n\n```diff\n+ Status: CREATED\n contract FixedSlashSlashingLibrary (eth:0x9a406ba5a99983250Fd663947b3c968D387ce5cd)\n +++ description: Stores slashing parameters and calculates slashing amounts based on that (UMA protocol).\n```\n\n```diff\n+ Status: CREATED\n contract Solana_Adapter (eth:0x9F788694934fD2Ed34D5340B9a76EB34f2bFD7B3)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract ZkStack_Adapter (eth:0xA374585E6062517Ee367ee5044946A6fBe17724f)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Universal_Adapter (eth:0xb47fD69FE25878F4E43aAF2F9ad7D0A3A0B22363)\n +++ description: This adapter can be used to send messages / root bundles to Plasma Mainnet. It stores calldata in the eth:0x1Ace3BbD69b63063F859514Eca29C9BDd8310E61 on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero.\n```\n\n```diff\n+ Status: CREATED\n contract Across Multisig (eth:0xB524735356985D2f267FA010D681f061DfF03715)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Arbitrum_Adapter (eth:0xc0b6d2f794cc787C71f2cA5ceCD57102C32379B3)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract HubPool (eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda)\n +++ description: The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n```\n\n```diff\n+ Status: CREATED\n contract Monad_Adapter (eth:0xC29a3Ba0fBf477F16Fd53d2C438Eade024FD8452)\n +++ description: This adapter can be used to send messages / root bundles to chains that do not have a canonical adapter. It stores calldata in the eth:0x1Ace3BbD69b63063F859514Eca29C9BDd8310E61 on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n```\n\n```diff\n+ Status: CREATED\n contract IdentifierWhitelist (eth:0xcF649d9Da4D1362C4DAEa67573430Bd6f945e570)\n +++ description: Keeps a list of whitelisted identifiers that are accepted by the UMA v3 protocol. Across uses the identifier `ACROSS-V2` for its disputes.\n```\n\n```diff\n+ Status: CREATED\n contract AddressWhitelist (eth:0xdBF90434dF0B98219f87d112F37d74B1D90758c7)\n +++ description: A simple address whitelist for tokens that can be used as bonds and/or fees. This whitelist is checked and enforced by various smart contracts in the UMA ecosystem.\n```\n\n```diff\n+ Status: CREATED\n contract OP_Adapter (eth:0xE1f04404b74F996A311F13aE291849fC153578Ac)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract AcrossBondToken (ABT) (eth:0xee1DC6BCF1Ee967a350e9aC6CaaAA236109002ea)\n +++ description: A bond token wrapping ETH for usage in the Across protocol. Implements modified ERC20 logic to only allow permissioned proposers to use it as a bond for root bundle proposals.\n```\n\n```diff\n+ Status: CREATED\n contract SkinnyOptimisticOracle (eth:0xeE3Afe347D5C74317041E2618C49534dAf887c24)\n +++ description: Validates bridge messages by allowing proposers to make bonded assertions about crosschain events. It enforces a challenge period during which any invalid claims can be disputed and escalated to UMA's Data Verification Mechanism (DVM) for resolution.\n```\n\n```diff\n+ Status: CREATED\n contract Lisk_Adapter (eth:0xF039AdCC74936F90fE175e8b3FE0FdC8b8E0c73b)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Mode_Adapter (eth:0xf1B59868697f3925b72889ede818B9E7ba0316d0)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract Blast_Adapter (eth:0xF2bEf5E905AAE0295003ab14872F811E914EdD81)\n +++ description: Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n```\n\n```diff\n+ Status: CREATED\n contract OptimisticOracleV3 (eth:0xfb55F43fB9F48F63f9269DB7Dde3BbBe1ebDC0dE)\n +++ description: Standard UMA optimistic oracle contract that allows anyone to make an arbitrary claim by posting a bond. The claim is considered true unless it is successfully disputed within a challenge window, with UMA's DVM acting as the final arbiter for disputes.\n```"
}
]
}
]
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "AstarMultisig",
"name": "AstarMultisig",
"description": "A Multisig with 3/6 threshold. \n* Can upgrade **with no delay**\n * PolygonDataCommittee [via: ProxyAdmin]\n* Can interact with Validium\n * set core system parameters like the trusted sequencer and manage forced transactions/batches \n * sole address that can force batches \n* Can interact with PolygonDataCommittee\n * manage the members of the data availability committee and the threshold for valid commitments ",
"accounts": [
{
"address": "eth:0xf98ee8c46baEa2B11e4f0450AD9D01861265F76E",
"type": "Contract",
"isVerified": true,
"name": "0xf98e…F76E",
"url": "https://etherscan.io/address/0xf98ee8c46baEa2B11e4f0450AD9D01861265F76E"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xe4D4fBC6e27B3AE9D881BD9400071FB6c62E4dfa",
"type": "EOA",
"isVerified": true,
"name": "0xe4D4…4dfa",
"url": "https://etherscan.io/address/0xe4D4fBC6e27B3AE9D881BD9400071FB6c62E4dfa"
},
{
"address": "eth:0xEc24369A1269171e3cb0A323DD920F99Cb528Fb0",
"type": "EOA",
"isVerified": true,
"name": "0xEc24…8Fb0",
"url": "https://etherscan.io/address/0xEc24369A1269171e3cb0A323DD920F99Cb528Fb0"
},
{
"address": "eth:0x127Bae6Fc751dC92111a359500ae91EB437f3dCb",
"type": "EOA",
"isVerified": true,
"name": "0x127B…3dCb",
"url": "https://etherscan.io/address/0x127Bae6Fc751dC92111a359500ae91EB437f3dCb"
},
{
"address": "eth:0x83cC8195856b0463dEd5f052021009b7985FDa2C",
"type": "EOA",
"isVerified": true,
"name": "0x83cC…Da2C",
"url": "https://etherscan.io/address/0x83cC8195856b0463dEd5f052021009b7985FDa2C"
},
{
"address": "eth:0x4324c3960c7B2567D0C13ba17493bb364c407937",
"type": "EOA",
"isVerified": true,
"name": "0x4324…7937",
"url": "https://etherscan.io/address/0x4324c3960c7B2567D0C13ba17493bb364c407937"
},
{
"address": "eth:0x6c4876Ecb5de33f76700f44d547C593065806dAC",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "#GnosisSafe"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * Validium ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "GnosisSafe",
"name": "GnosisSafe",
"description": "A Multisig with 1/3 threshold. \nMember of AstarMultisig.\n",
"accounts": [
{
"address": "eth:0x6c4876Ecb5de33f76700f44d547C593065806dAC",
"type": "Contract",
"isVerified": true,
"name": "0x6c48…6dAC",
"url": "https://etherscan.io/address/0x6c4876Ecb5de33f76700f44d547C593065806dAC"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEc33045FA66cF43E9b5b9F332dc124dbc71c0917",
"type": "EOA",
"isVerified": true,
"name": "0xEc33…0917",
"url": "https://etherscan.io/address/0xEc33045FA66cF43E9b5b9F332dc124dbc71c0917"
},
{
"address": "eth:0x33f9b8ac59814E1A0a59e5d1a6125E5E7AF58BA8",
"type": "EOA",
"isVerified": true,
"name": "0x33f9…8BA8",
"url": "https://etherscan.io/address/0x33f9b8ac59814E1A0a59e5d1a6125E5E7AF58BA8"
},
{
"address": "eth:0x2b3Aa0Dc0622eFb9426F5A44015aE9151Bd8224C",
"type": "EOA",
"isVerified": true,
"name": "0x2b3A…224C",
"url": "https://etherscan.io/address/0x2b3Aa0Dc0622eFb9426F5A44015aE9151Bd8224C"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xA09F1c88C0194Da6b0a1c564CDBEcbF3AAd649E4",
"type": "EOA",
"isVerified": true,
"name": "0xA09F…49E4",
"url": "https://etherscan.io/address/0xA09F1c88C0194Da6b0a1c564CDBEcbF3AAd649E4",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with Validium\n * Allowed to commit transactions from the current layer to the host chain ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+36 -22
+21 -21
{
"dataAvailability": [
{
"name": "All transaction results (state diffs) are published in Ethereum blobs",
"description": "Each checkpoint proposal includes EIP-4844 blob commitments for state diffs, checked against the blob hashes in the proposing transaction. The epoch proof revalidates the accumulated commitments before finalization. Public transaction bodies and client CHONK proofs propagate offchain; withholding them can prevent permissionless proving, causing the pending checkpoint to expire and be pruned rather than finalized.",
"references": [
{
"title": "Rollup.sol - propose() on Etherscan",
"url": "https://etherscan.io/address/0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34#code"
},
{
"title": "Rollup.sol - validateBlobs() on Etherscan",
"url": "https://etherscan.io/address/0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34#code"
}
],
"risks": []
}
],
"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. Once the epoch root proof has been verified, the rollup inserts the epoch root into the Outbox, from which withdrawals and other L2->L1 messages can be consumed on Ethereum. Withdrawals can be initiated privately on L2, revealing only the L1-facing portion of the transaction. There is no canonical bridge escrow: only the canonical messaging layer is immutable, while each token bridged through a locking escrow may introduce additional trust assumptions tied to that specific escrow.",
"risks": [],
"references": [
{
"title": "Rollup.sol - submitEpochRootProof() on Etherscan",
"url": "https://etherscan.io/address/0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34#code"
},
{
"title": "Outbox.sol - consume() on Etherscan",
"url": "https://etherscan.io/address/0x5B062aB5fD3A66BC7e73b04CeD38587673b6A2D7#code"
}
]
}
],
"forceTransactions": {
"name": "Bonded, probabilistic self-sequencing",
"description": "There is no L1 forced-transaction queue. A censored user must wait for an honest regular committee or for an honest, sufficiently capitalized escape-hatch candidate to enroll, become eligible, be selected, include the transaction, and produce a valid proof.",
"risks": [
{
"category": "Users can be censored if",
"text": "no honest regular proposer or eligible bonded escape-hatch proposer includes and proves their transactions."
}
],
"references": [
{
"title": "EscapeHatch.sol on Etherscan",
"url": "https://etherscan.io/address/0xF459348962F5eA3A9A101826B03A2CE1F459E51A#code"
}
]
},
"operator": {
"name": "There is no central operator",
"description": "There is no privileged sequencer. Anyone can stake 200.00 K AZTEC to join the sequencer queue, and anyone can call flushEntryQueue() to activate queued sequencers once the queue rules allow it.",
"risks": [],
"references": [
{
"title": "Rollup.sol - deposit() on Etherscan",
"url": "https://etherscan.io/address/0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34#code"
},
{
"title": "Rollup.sol - flushEntryQueue() on Etherscan",
"url": "https://etherscan.io/address/0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34#code"
}
]
},
"otherConsiderations": [
{
"name": "Upgrades replace the canonical rollup",
"description": "The core contracts are immutable, but Governance owns the Registry and GSE and can register a new rollup version as canonical after the governance delay.",
"references": [
{
"title": "Registry.sol - addRollup() on Etherscan",
"url": "https://etherscan.io/address/0x35b22e09Ee0390539439E24f06Da43D83f90e298#code"
},
{
"title": "Governance.sol - execute() on Etherscan",
"url": "https://etherscan.io/address/0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e#code"
}
],
"risks": []
},
{
"name": "No canonical bridge escrow",
"description": "There is no default canonical escrow. The rollup is deployed only with an immutable canonical messaging bridge, which can be used by any escrow. As a result, each token bridged to Aztec via Ethereum lock-mint must be assessed individually by examining its specific locking escrow. The trust assumptions of a given escrow may differ from those of the immutable rollup itself. Gas tokens are bridged through the FeeJuicePortal, an immutable one-way portal that only supports bridging to public L2 addresses. Although the rollup and its canonical messaging bridge are immutable, an upgradeable escrow could migrate its funds to a new rollup version without requiring users to migrate, effectively trading immutability for convenience.",
"references": [
{
"title": "FeeJuicePortal.sol - on Etherscan",
"url": "https://etherscan.io/address/eth:0xaf73Dd51D1eb8a079BB097f39c832cDD00ac691c#code"
},
{
"title": "Outbox.sol - on Etherscan",
"url": "https://etherscan.io/address/0x5B062aB5fD3A66BC7e73b04CeD38587673b6A2D7#code"
}
],
"risks": []
},
{
"name": "Inclusion is probabilistic",
"description": "All protocol-level censorship-resistance tools are probabilistic. Unlike an L1 forced-transaction queue, they do not guarantee inclusion after a fixed delay. The launch-era decentralized-sequencer model estimated 20d to reach its target exit probability under its stated assumptions; it is not a current protocol guarantee and does not model validator-set changes, the escape hatch, or adversarial queue saturation. Private transactions and the bonded escape hatch can improve inclusion probability, but neither creates a deterministic deadline.",
"references": [
{
"title": "CRsim - Simulated inclusion probability on Aztec",
"url": "https://sekuba.github.io/crsim"
}
],
"risks": []
}
],
"sequencing": {
"name": "Transactions are ordered by a staked validator committee",
"description": "Joining the sequencer set is permissionless and requires staking 200.00 K AZTEC. For each epoch, the Rollup samples a 48-member committee from the active set of 3136 and selects one proposer per slot. The proposer for slot N builds the checkpoint and collects attestations during slot N-1, then submits the assembled checkpoint to Ethereum in slot N. More than two-thirds of the sampled committee must attest; the proof path verifies the attestation data before the checkpoint can become final.",
"description": "Joining the sequencer set is permissionless and requires staking 200.00 K AZTEC. For each epoch, the Rollup samples a 48-member committee from the active set of 3129 and selects one proposer per slot. The proposer for slot N builds the checkpoint and collects attestations during slot N-1, then submits the assembled checkpoint to Ethereum in slot N. More than two-thirds of the sampled committee must attest; the proof path verifies the attestation data before the checkpoint can become final.",
"sequencingSpec": {
"type": "sequencer-set",
"blockTime": {
"value": "6s",
"description": "Current expected interval between L2 block proposals. Multiple blocks can be produced by the same proposer within one slot, so this interval can differ from the proposer rotation interval."
},
"proposerRotationTime": {
"value": "1m 12s"
},
"committeeRotationTime": {
"value": "38m 24s",
"description": "A random committee is sampled from the sequencer set for each epoch, a random block producer is sampled from the committee for each slot in the epoch"
},
"sequencerCount": {
"value": "3136 sequencers",
"secondLine": "586.92 M AZTEC"
"value": "3129 sequencers",
"secondLine": "486.22 M AZTEC"
},
"blockProductionAccess": {
"value": "Open",
"sentiment": "good"
},
"stakePerValidator": {
"value": "200.00 K AZTEC, constant"
},
"rateLimit": {
"value": "4 sequencers / epoch",
"description": "Can be changed by onchain Governance, but the contract requires nonzero minimum, divisor, and maximum queue-flush parameters."
},
"deterministicCrGadget": {
"value": "No",
"sentiment": "warning"
},
"additionalCrGadgets": {
"value": "Bonded escape hatch, private transactions",
"secondLine": "332.00 M AZTEC; every 2d 23h",
"sentiment": "good",
"description": "Escape hatch: 332.00 M AZTEC bond to enter a set from which one proposer is periodically selected every 2d 23h to bypass the regular committee, include transactions, and prove the resulting checkpoints. 1.66 M AZTEC proposal tax. Private transactions: allow users to cheaply resist censorship based on transaction content while the chain is live."
},
"inclusionDelayChart": {
"type": "committeelike",
"validatorCount": 3136,
"validatorCount": 3129,
"committeeSize": 48,
"epochSlots": 32,
"slotSeconds": 72,
"blockingThreshold": 15,
"target": 0.99,
"maxCensorFraction": 0.5,
"stakeDistribution": {
"stakeToken": "AZTEC",
"dateType": "fetched",
"date": "2026-08-06T08:48:58.509Z",
"totalStake": 586930000,
"date": "2026-10-16T13:04:29.822Z",
"totalStake": 486228000,
"entities": [
{
"name": "Nethermind",
"stake": 106400000
"stake": 101400000
},
{
"name": "Nansen | Stake to Stack Points",
"stake": 72000000
"stake": 73000000
},
{
"name": "Sigma Prime",
"stake": 64600000
"stake": 67400000
},
{
"name": "P2P.org",
"stake": 38250000
"stake": 32058000
},
{
"name": "snoopfear|PON",
"stake": 37200000
"name": "DCG",
"stake": 25000000
},
{
"name": "ZKV",
"stake": 30816000
"name": "Nightwolf Labs",
"stake": 22800000
},
{
"name": "Wonderland",
"stake": 27308000
"stake": 19558000
},
{
"name": "GabbexNodes",
"stake": 27000000
"name": "nodemeister",
"stake": 17394000
},
{
"name": "Nightwolf Labs",
"stake": 23000000
"name": "Olla",
"stake": 14398000
},
{
"name": "DCG",
"stake": 22600000
"name": "snoopfear|PON",
"stake": 11600000
}
]
}
},
"inclusionDelayChartDescription": "The chart models live-chain selective censorship only. It does not model the escape hatch, validator-set changes, validator-set lag, and blanket-censorship resistance gadgets."
},
"censorshipResistance": "The regular committee can be circumvented by the escape hatch, which uses RANDAO to designate a previously enrolled bonded candidate that may publish checkpoints without committee attestations. Enrollment requires 332.00 M AZTEC, a high bond intended to protect the single-proof system while providing a last-resort path around the regular sequencer set. A designated candidate that fails to propose and prove loses 9.60 M AZTEC from their bond. Aztec's private execution environment can also make selective censorship harder because transaction contents are hidden.\n\n### Selective censorship\n\nOn a live network with some censoring sequencers, users can submit private transactions or wait for an honest committee and proposer to include their public transaction.\n\n### Blanket censorship\n\nIf the entire active set censors or stops producing checkpoints, a new sequencer can join through the permissionless staking queue, subject to its churn limits. A sufficiently capitalized account can instead enroll for the escape hatch, but enrollment, candidate-set snapshots, eligibility, and RANDAO selection are lagged. Specialized proving hardware is still required. Adversaries can also saturate the entry queue or candidate set and reduce an honest user's inclusion probability.\n\n### Walkaway\n\nHatch opportunities occur approximately every 2d 23h, but the candidate set can be empty and selection, proposal, and proving can fail. The protocol therefore provides no deterministic maximum inclusion delay; permissionless validator entry and the bonded hatch only improve the probability that the chain eventually recovers.",
"references": [
{
"title": "Aztec docs - Privacy considerations",
"url": "https://github.com/AztecProtocol/aztec-packages/blob/next/docs/docs-developers/docs/resources/considerations/privacy_considerations.md#function-fingerprints-and-tx-fingerprints"
},
{
"title": "Rollup.sol - getProposerAt() on Etherscan",
"url": "https://etherscan.io/address/0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34#code"
},
{
"title": "EscapeHatch.sol - selectCandidates() on Etherscan",
"url": "https://etherscan.io/address/0xF459348962F5eA3A9A101826B03A2CE1F459E51A#code"
}
],
"risks": []
},
"stateValidation": {
"description": "Each epoch root proof is verified by the HonkVerifier smart contract on Ethereum before the proven checkpoint number is advanced and the epoch outbox state root is inserted into the Outbox. Proving is permissionless, and a single proof can cover one Checkpoint (1m 12s) to one epoch (38m 24s). The current maximum proof window is 1h 16m; checkpoints later in an epoch have less time, and unproven checkpoints are pruned.",
"categories": [
{
"title": "State root proposals",
"description": "The rollup only advances the proven chain after submitEpochRootProof() succeeds. That call verifies the epoch proof and then inserts the epoch outbox state root for L2->L1 messaging.",
"references": [
{
"title": "Rollup.sol - submitEpochRootProof() on Etherscan",
"url": "https://etherscan.io/address/0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34#code"
}
],
"risks": []
},
{
"title": "Validity proofs",
"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.",
"risks": [],
"references": [
{
"title": "Rollup.sol - submitEpochRootProof() on Etherscan",
"url": "https://etherscan.io/address/0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34#code"
},
{
"title": "HonkVerifier.sol - verify() on Etherscan",
"url": "https://etherscan.io/address/0x098f47c00F4df22a8030746Eb11378236C24b4bC#code"
}
]
},
{
"title": "Slashing",
"description": "Each 200.00 K AZTEC stake used to join the sequencer set and vote in governance can be slashed. The designated proposer for each slot can submit one separate signed ballot on L1. Ballots are grouped into rounds spanning 4 epochs (2h 33m).\n\nSlashing conditions are implemented in sequencer-node software and can change when operators update or modify that software. The onchain `SlashingProposer` enforces the voting and execution rules:\n\n* Ballots in a round target committee members from 2 rounds earlier.\n* Quorum is evaluated separately for each validator position and penalty level, not for the round as a whole. At least 65 matching ballots out of up to 128 slots are required. Votes for a higher penalty also count toward every lower level, and each validator is slashed once at the highest level that reaches quorum.\n* A round becomes executable after more than 28 rounds (approximately 2d 23h) and expires at age 34 rounds, leaving a 6-round execution window.\n* Anyone can call `executeRound()` during that window. It verifies committee commitments, skips escape-hatch epochs, deploys a deterministic payload for the approved actions, and asks the authorized Slasher to execute it.\n\nThe current onchain penalty levels are large (5.00 K AZTEC), medium (5.00 K AZTEC), and small (2.00 K AZTEC). Offenses that node software can ballot for include:\n\n* **Inactivity:** a sequencer fails to attest or propose when selected.\n* **Data withholding:** a sequencer publishes state-diff blobs but withholds public transaction bodies or CHONK proofs needed for permissionless proving.\n* **Invalidity or equivocation:** a sequencer attests to an invalid proposal, signs conflicting proposals or attestations, or uses an invalid signature.\n\nThis list and the mapping of offenses to penalty levels are not exhaustive or defined by the L1 contracts; they depend on the software each sequencer runs.\n\nThe SlashVeto Council is a 5/9 Multisig. It can permanently veto a specific payload, repeatedly renew a global 3d pause, or re-enable slashing before a pause expires. Governance can submit Slasher payloads without ballot approval, but it cannot bypass these veto and pause checks.",
"references": [
{
"title": "SlashingProposer.sol on Etherscan",
"url": "https://etherscan.io/address/eth:0x8A36b8F2Ca71D8d8Bd98e03Ebf8B4D0939Daf0bA#code"
},
{
"title": "Slasher.sol on Etherscan",
"url": "https://etherscan.io/address/eth:0xCD6855470A01aBcd989126A1183Fb50673952548#code"
},
{
"title": "SlashVeto Council - Github",
"url": "https://github.com/aztec-slash-veto/council"
},
{
"title": "slashveto.me - Monitor Slashing",
"url": "https://slashveto.me"
}
],
"risks": []
}
]
},
"upgradesAndGovernance": {
"content": "# Standard path (sequencer signaling)\n\nSequencers stake AZTEC to secure the L2 and also participate in protocol governance. Every proposal is a smart contract payload on Ethereum. The public proposal flow takes at least 12d before execution, after which Governance can change the bounded parameters described below or deploy and register a new canonical rollup version.\n\n## 1. Signaling (`GovernanceProposer`)\n\nAztec uses an onchain \"Empire\" signaling system. The designated proposer for each slot on the canonical rollup can separately signal support for one payload on L1. A round consists of 1,000 slots. A payload that receives at least 600 signals wins the round and can be submitted to `Governance`.\n\n## 2. Token voting (`Governance`)\n\nOnce submitted, a proposal passes through these states:\n\n* **Pending (3d):** voting power is snapshotted at the end of this delay.\n* **Active (7d):** AZTEC holders vote. The snapshot must contain at least 100.00 M AZTEC of total voting power, at least 20% of that power must vote, and `yea` must be strictly greater than 66.5% of votes cast (the configured `yea`-minus-`nay` margin is 33%).\n* **Queued (2d):** a successful proposal waits before it can be executed. This final phase alone is shorter than the validator withdrawal delay, but the complete public process provides at least 12d of notice. Initiating an exit immediately removes a validator from the active set, while its stake becomes withdrawable after 4d.\n* **Executable (7d):** anyone can execute the proposal during this grace period; otherwise it expires.\n\n## Emergency proposal path\n\nIf sequencer signaling is unavailable, anyone can call `proposeWithLock()` directly on `Governance`. The proposer must lock **258.75 M AZTEC**, roughly 2.5% of the total supply, for 3mo. The payload then follows the same pending, voting, queued, and executable phases as a signaled proposal.\n\n## Immutable deployments and bounded ownership\n\nThe `Rollup`, verifier, `Inbox`, `Outbox`, and installed `EscapeHatch` code cannot be upgraded in place. Feature upgrades deploy a new stack and use Governance to register its Rollup in the `Registry` and GSE. Validators staked to the bonus instance (`0x9064Fb41156D300196d5Eb95E0B3c1f08eBc39a8`) follow the newest GSE Rollup automatically; validators explicitly bound to an older Rollup remain associated with it.\n\nGovernance owns the Rollup, but its setter surface is intentionally constrained: it can change the sequencer/prover reward split and checkpoint reward, only increase the mana target, change proving cost delayed and within bounds, and update validator-entry rate within non-zero values. It can queue a replacement Slasher with a 2mo delay. The outgoing Slasher then remains active for 1mo. The EscapeHatch, the reward distributor and reward-booster addresses are fixed for the deployment.\n\nGovernance also owns the GSE and can register a new latest Rollup or set the proof-of-possession gas limit too low for new validator deposits. These powers can move incentives and bonus-instance validators away from the current version, but they do not mutate this deployment's verifier, messaging contracts, or installed EscapeHatch.\n\n## Slashing and the SlashVeto Council\n\nAztec's onchain slashing path uses `SlashingProposer` ballots and the `Slasher`. Governance can bypass the proposer and submit a payload directly to the Slasher, and can rotate the authorized Slasher through the delayed Rollup process described above. Both the ballot and direct-governance paths remain subject to payload vetoes and global pauses by the SlashVeto Council.\n\nThe **Vetoer** role is held by the SlashVeto Council. It cannot upgrade the protocol or relay arbitrary calls. It can:\n\n* veto a specific payload permanently; and\n* disable all slashing for 3d. Calling the function again renews the pause, while the Council can also re-enable slashing early.\n\n## Economics and treasury\n\n* **CoinIssuer:** the owner can mint AZTEC within an annual cap of 20% of the current total supply.\n* **ProtocolTreasury:** the DAO's treasury is gated until approximately Nov 2026 and is additionally subject to an ATP-derived activation timestamp and proposal-ordering checks. Once every gate is satisfied, a Governance proposal can relay arbitrary calls and value through the treasury."
},
"warning": "Aztec v5 has a [known critical proving-system vulnerability](https://aztec.network/blog/alpha-v5-proving-system-vulnerability) that puts funds, applications, and contract state at risk. A fix is planned for v6."
}
+1 -1
{
"baseTimestamp": 1791877468,
"baseTimestamp": 1792144307,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "7b640c9b",
"date": "Fri, 16 Oct 2026 09:53:08 GMT",
"timestamp": 1792144307,
"description": "New governance proposal 5 (payload `V6UpgradePayload` eth:0xE8D663a8B355415f331A54d694F36685346b5433), pending. It adds a new Rollup (eth:0xE37A2663Cc9c119BA41572C40fAb0bbb23a5402f) to the Registry and the GSE, which makes it the canonical rollup, and sets an EscapeHatch (eth:0x613ff7d166c834816384feaea2b48568363a4d57) on it. It also changes the reward config of the old rollup and moves reward funds. If the vote passes, it is executable from 2026-10-26.\n- new rollup: https://disco.l2beat.com/diff/eth:0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34/eth:0xE37A2663Cc9c119BA41572C40fAb0bbb23a5402f",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e) [aztecnetwork/Governance] {\n +++ description: DAO contract used for proposals and token voting. Heavily interdependent with the GSE for voting power snapshots.\n values.proposalCount:\n- 5\n+ 6\n }\n```"
}
]
},
{
"id": "f06a5080",
"date": "Wed, 14 Oct 2026 08:25:21 GMT",
"timestamp": 1791877468,
"description": "Track the Aztec v5 verification key hash and add sUSDS escrow (zkmoney).",
"isHighSeverity": false,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZkMoneyPortal_sUSDS (eth:0xD7Ae00b91ba0B8e0240B22Cd75fE447d177C260f) [zkmoney/ZkMoneyPortal] {\n +++ description: Escrow of zk.money on the Aztec Network. A withdrawal needs both a proven Aztec L2->L1 message from the zk.money L2 contract and a signature from a registered TEE signer. Anyone can register a TEE signer with a fresh AWS Nitro attestation of an approved enclave image. Once the Aztec Registry's canonical rollup is no longer ROLLUP, anyone can permanently freeze the portal, stopping deposits and fixing the refund snapshot at the last proven checkpoint.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"immutable\"\n template:\n+ \"zkmoney/ZkMoneyPortal\"\n sourceHashes:\n+ [\"0x7020e3729f66f6c8ddada17eeb82b33ae8b7f623c0ffb3bb6c921bf966a7f6a8\"]\n description:\n+ \"Escrow of zk.money on the Aztec Network. A withdrawal needs both a proven Aztec L2->L1 message from the zk.money L2 contract and a signature from a registered TEE signer. Anyone can register a TEE signer with a fresh AWS Nitro attestation of an approved enclave image. Once the Aztec Registry's canonical rollup is no longer ROLLUP, anyone can permanently freeze the portal, stopping deposits and fixing the refund snapshot at the last proven checkpoint.\"\n critical:\n+ true\n deployerAddress:\n+ \"eth:0xa3533FD3dAC685D54df722B970772b54128a717C\"\n sinceTimestamp:\n+ 1791316739\n sinceBlock:\n+ 26135579\n values:\n+ {\"_$cachedAvailable\":\"49997504449688617568427\",\"_$freezeArchive\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"_$freezeCheckpointCount\":0,\"_$freezeCheckpointNumber\":0,\"_$freezeEpochNumber\":0,\"_$frozen\":false,\"_$initialized\":true,\"_$l2Portal\":\"0x2bb708cb67bbda3ec2c79b842ef5d3b3d55897663d29cac5b5518c2e9af7171b\",\"_$lastUpdatedTime\":1791874367,\"$immutable\":true,\"approvedPcr0Hashes\":[\"0xbfdd552587f517a9f18ef6ed588e3bd57a21ac2070fda39ac4612558df3e72c8\"],\"FPC_FUNDER\":\"eth:0x37cD81C39Bf276ea7e1c6a416A254f688c70eAFb\",\"FPC_FUNDING_CUT\":0,\"FROZEN_DEPOSIT_REFUND_VERIFIER\":\"eth:0x2E0C30821b9fcCf1CDB47F4e3a3A993593344522\",\"FROZEN_NOTES_REFUND_VERIFIER\":\"eth:0xd24a49321878AB82E46992ab853A11903882abf2\",\"getCurrentAvailable\":\"50000000000000000000000\",\"GLOBAL_LIMIT\":\"50000000000000000000000\",\"INBOX\":\"eth:0x7d4Ef0676c2032bbCC09227501D34d86641ab8cA\",\"L2_PORTAL\":\"0x2bb708cb67bbda3ec2c79b842ef5d3b3d55897663d29cac5b5518c2e9af7171b\",\"OUTBOX\":\"eth:0x5B062aB5fD3A66BC7e73b04CeD38587673b6A2D7\",\"owner\":\"eth:0x0000000000000000000000000000000000000000\",\"RATE\":\"578703703703703703\",\"REGISTRY\":\"eth:0x35b22e09Ee0390539439E24f06Da43D83f90e298\",\"ROLLUP\":\"eth:0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34\",\"ROLLUP_VERSION\":4248422647,\"TEE_ATTESTATION_MAX_AGE\":3600,\"TEE_CERT_MANAGER\":\"eth:0xdfe52FD98aa0Cc8Ce7778a2b00ac7B7Dc9595875\",\"TEE_NITRO_VALIDATOR\":\"eth:0x0119bC52a09Ac6e7998378BadC16D0e9A866Be56\",\"teeSigners\":[\"eth:0x367eD02480809f5020234181B61D9069a08974dD\",\"eth:0x5F03984126AdFDb72B2823b553988Ccebe1F781e\",\"eth:0x05406F53174EC1bFE5C94aF253CdD62A4adF2F29\"],\"UNDERLYING\":\"eth:0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD\",\"UNPROCESSED_DEPOSIT_REFUND_VERIFIER\":\"eth:0x8ACcBa3958cEF8E30b255c70A4C16CD2D14fb787\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"MEDIUM\"},\"approvedPcr0Hashes\":{\"severity\":\"HIGH\",\"description\":\"Hashes of the AWS Nitro enclave images (PCR0) whose attestations can register TEE signers.\"},\"teeSigners\":{\"description\":\"Registered TEE signers. Registrations are permanent.\"},\"_$l2Portal\":{\"description\":\"zk.money token contract on Aztec whose L2->L1 messages can release funds.\"},\"_$frozen\":{\"severity\":\"MEDIUM\",\"description\":\"Whether the portal is permanently frozen. A frozen portal accepts no deposits. Withdrawals within the frozen checkpoint and epoch bounds remain available alongside refunds against the frozen state. L2 transfers are not disabled but do not change refundable ownership.\"},\"REGISTRY\":{\"description\":\"Aztec Registry. If its canonical rollup is no longer ROLLUP, anyone can freeze this portal.\"},\"FPC_FUNDER\":{\"description\":\"Receives FPC_FUNDING_CUT from every deposit and withdrawal to fund Aztec fees for zk.money users.\"},\"GLOBAL_LIMIT\":{\"description\":\"Deposit capacity (wei), refilling at RATE per second. Withdrawals are only limited by a hardcoded per-transaction cap.\",\"type\":\"RISK_PARAMETER\"}}\n implementationNames:\n+ {\"eth:0xD7Ae00b91ba0B8e0240B22Cd75fE447d177C260f\":\"OxidePortal\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```"
}
]
},
{
"id": "32c985ef",
"date": "Wed, 30 Sep 2026 09:13:57 GMT",
"timestamp": 1790759557,
"description": "Config: Add the zk.money escrow (ZkMoneyPortal), which uses the Aztec canonical messaging bridge. The full discovery is in the zkmoney config and not shown here for clarity.",
"isHighSeverity": false,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZkMoneyPortal (eth:0xdf410ad448A0f7165181FBdB32f8896f4a0d9449) [zkmoney/ZkMoneyPortal] {\n +++ description: Escrow of zk.money on the Aztec Network. A withdrawal needs both a proven Aztec L2->L1 message from the zk.money L2 contract and a signature from a registered TEE signer. Anyone can register a TEE signer with a fresh AWS Nitro attestation of an approved enclave image. Once the Aztec Registry's canonical rollup is no longer ROLLUP, anyone can permanently freeze the portal, stopping deposits and fixing the refund snapshot at the last proven checkpoint. Withdrawals within the frozen checkpoint and epoch bounds remain available alongside refunds that need a zk proof and a TEE signature. L2 transfers are not disabled but do not change refundable ownership.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"immutable\"\n name:\n+ \"ZkMoneyPortal\"\n template:\n+ \"zkmoney/ZkMoneyPortal\"\n sourceHashes:\n+ [\"0x4abb439f2218670904cdae29f2663f412a1ca4d63284a05120c764dc8eed141e\"]\n description:\n+ \"Escrow of zk.money on the Aztec Network. A withdrawal needs both a proven Aztec L2->L1 message from the zk.money L2 contract and a signature from a registered TEE signer. Anyone can register a TEE signer with a fresh AWS Nitro attestation of an approved enclave image. Once the Aztec Registry's canonical rollup is no longer ROLLUP, anyone can permanently freeze the portal, stopping deposits and fixing the refund snapshot at the last proven checkpoint. Withdrawals within the frozen checkpoint and epoch bounds remain available alongside refunds that need a zk proof and a TEE signature. L2 transfers are not disabled but do not change refundable ownership.\"\n critical:\n+ true\n deployerAddress:\n+ \"eth:0x8c5EE3f90cA6D24eD2e2c1817f0caEE89e521601\"\n sinceTimestamp:\n+ 1790298635\n sinceBlock:\n+ 26051097\n values:\n+ {\"_$cachedAvailable\":\"49994487527849187076802\",\"_$freezeArchive\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"_$freezeCheckpointCount\":0,\"_$freezeCheckpointNumber\":0,\"_$freezeEpochNumber\":0,\"_$frozen\":false,\"_$initialized\":true,\"_$l2Portal\":\"0x015ca4a43f83d08a038c36c06ca92527f120dc1f9176ea85d1ea347decaf444d\",\"_$lastUpdatedTime\":1790759147,\"$immutable\":true,\"approvedPcr0Hashes\":[\"0x9c846102f8ac909695f7176cec0f60380ac770286bb9eec459d6152f6e676988\"],\"FPC_FUNDER\":\"eth:0x37cD81C39Bf276ea7e1c6a416A254f688c70eAFb\",\"FPC_FUNDING_CUT\":\"100000000000000000\",\"FROZEN_DEPOSIT_REFUND_VERIFIER\":\"eth:0xa2fd594dCA2d598aF231d615E5D34903154C3cCe\",\"FROZEN_NOTES_REFUND_VERIFIER\":\"eth:0x0694fF404DDA586C73EfCe21f34fe084541BB877\",\"getCurrentAvailable\":\"50000000000000000000000\",\"GLOBAL_LIMIT\":\"50000000000000000000000\",\"INBOX\":\"eth:0x7d4Ef0676c2032bbCC09227501D34d86641ab8cA\",\"L2_PORTAL\":\"0x015ca4a43f83d08a038c36c06ca92527f120dc1f9176ea85d1ea347decaf444d\",\"OUTBOX\":\"eth:0x5B062aB5fD3A66BC7e73b04CeD38587673b6A2D7\",\"owner\":\"eth:0x0000000000000000000000000000000000000000\",\"RATE\":\"578703703703703703\",\"REGISTRY\":\"eth:0x35b22e09Ee0390539439E24f06Da43D83f90e298\",\"ROLLUP\":\"eth:0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34\",\"ROLLUP_VERSION\":4248422647,\"TEE_ATTESTATION_MAX_AGE\":3600,\"TEE_CERT_MANAGER\":\"eth:0xdfe52FD98aa0Cc8Ce7778a2b00ac7B7Dc9595875\",\"TEE_NITRO_VALIDATOR\":\"eth:0x0119bC52a09Ac6e7998378BadC16D0e9A866Be56\",\"teeSigners\":[\"eth:0xdFd008642F54aCD44A2a03438A86A25f55c4D3Bc\",\"eth:0xefc45B71e9432a6149a7d52f11a125A19E3A11DC\"],\"UNDERLYING\":\"eth:0x6B175474E89094C44Da98b954EedeAC495271d0F\",\"UNPROCESSED_DEPOSIT_REFUND_VERIFIER\":\"eth:0x5C487AEb500BD0fE65fe52Be7e55a150c3220FA5\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\"},\"approvedPcr0Hashes\":{\"severity\":\"HIGH\",\"description\":\"Hashes of the AWS Nitro enclave images (PCR0) whose attestations can register TEE signers.\"},\"teeSigners\":{\"description\":\"Registered TEE signers. Registrations are permanent.\"},\"_$l2Portal\":{\"severity\":\"HIGH\",\"description\":\"zk.money token contract on Aztec whose L2->L1 messages can release funds.\"},\"_$frozen\":{\"severity\":\"HIGH\",\"description\":\"Whether the portal is permanently frozen. A frozen portal accepts no deposits. Withdrawals within the frozen checkpoint and epoch bounds remain available alongside refunds against the frozen state. L2 transfers are not disabled but do not change refundable ownership.\"},\"REGISTRY\":{\"description\":\"Aztec Registry. If its canonical rollup is no longer ROLLUP, anyone can freeze this portal.\"},\"FPC_FUNDER\":{\"description\":\"Receives FPC_FUNDING_CUT from every deposit and withdrawal to fund Aztec fees for zk.money users.\"},\"GLOBAL_LIMIT\":{\"description\":\"Deposit capacity (wei), refilling at RATE per second. Withdrawals are only limited by a hardcoded per-transaction cap.\",\"type\":\"RISK_PARAMETER\"}}\n implementationNames:\n+ {\"eth:0xdf410ad448A0f7165181FBdB32f8896f4a0d9449\":\"OxidePortal\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```"
}
]
},
{
"id": "4fc80441",
"date": "Tue, 15 Sep 2026 11:31:40 GMT",
"timestamp": 1789471807,
"description": "Revoker changed: This is used to revoke vesting token positions.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AztecTokenPositionRegistry_ProtocolTreasury (eth:0xD938bE4A2cB41105Bc2FbE707dca124A2e5d0c80) [aztecnetwork/AztecTokenPositionRegistry] {\n +++ description: AZTEC token-position Registry referenced by the ProtocolTreasury for its activation cutoff and by other ecosystem vesting contracts.\n+++ description: Address used by ATP positions as the revocation authority.\n values.getRevoker:\n- \"eth:0xA70D1A21b251eE5F15C4aD77179114d70917F0Bf\"\n+ \"eth:0x92Ba0FD39658105FaC4dF2B9BADE998B5816b350\"\n }\n```"
}
]
},
{
"id": "0eea7b7f",
"date": "Wed, 19 Aug 2026 14:30:13 GMT",
"timestamp": 1787149104,
"description": "The Registry owner (EOA) appointed a one-shot revocation payload, which then marked 29 milestone ATPs with a total allocation of 35,579,336 AZTEC as revoked. The ATPs are token vaults that vest over time to a given beneficiary address. This is Aztec Labs internal accounting, not DAO related.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AztecTokenPositionRegistry_ProtocolTreasury (eth:0xD938bE4A2cB41105Bc2FbE707dca124A2e5d0c80) [aztecnetwork/AztecTokenPositionRegistry] {\n +++ description: AZTEC token-position Registry referenced by the ProtocolTreasury for its activation cutoff and by other ecosystem vesting contracts.\n+++ description: Address used by ATP positions as the revocation authority.\n values.getRevoker:\n- \"eth:0x92Ba0FD39658105FaC4dF2B9BADE998B5816b350\"\n+ \"eth:0xA70D1A21b251eE5F15C4aD77179114d70917F0Bf\"\n }\n```"
}
]
},
{
"id": "574909e3",
"date": "Wed, 29 Jul 2026 11:40:44 GMT",
"timestamp": 1785325171,
"description": "The existing three-day slashing pause expired (the `slashingDisabledUntil` value did not change), so slash payload execution is enabled again.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Slasher (eth:0xCD6855470A01aBcd989126A1183Fb50673952548) [aztecnetwork/Slasher] {\n +++ description: Executes payload actions submitted by the authorized slashing proposer or Governance. Execution is blocked while slashing is disabled or when the vetoer has vetoed the payload; voting and execution-delay rules are enforced by the proposer, while Governance can bypass the proposer.\n+++ description: Whether slash payload execution is currently enabled.\n values.isSlashingEnabled:\n- false\n+ true\n }\n```"
}
]
},
{
"id": "04037c02",
"date": "Thu, 23 Jul 2026 13:54:50 GMT",
"timestamp": 1784814808,
"description": "Slashing was disabled for ~ three more days, until July 26.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Slasher (eth:0xCD6855470A01aBcd989126A1183Fb50673952548) [aztecnetwork/Slasher] {\n +++ description: Executes payload actions submitted by the authorized slashing proposer or Governance. Execution is blocked while slashing is disabled or when the vetoer has vetoed the payload; voting and execution-delay rules are enforced by the proposer, while Governance can bypass the proposer.\n+++ description: Timestamp until which slash payload execution is disabled.\n values.slashingDisabledUntil:\n- 1784800907\n+ 1785056291\n }\n```"
}
]
},
{
"id": "6c8519bf",
"date": "Tue, 21 Jul 2026 08:50:05 GMT",
"timestamp": 1784623722,
"description": "Slashing vetoed for 3d (will be extended to cover payloads targeting epochs until incl. july 21 10pm).\n\nReason: The grace period after the v5 upgrade was miscommunicated to be 1 week while it was actually 1 day only.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Slasher (eth:0xCD6855470A01aBcd989126A1183Fb50673952548) [aztecnetwork/Slasher] {\n +++ description: Executes payload actions submitted by the authorized slashing proposer or Governance. Execution is blocked while slashing is disabled or when the vetoer has vetoed the payload; voting and execution-delay rules are enforced by the proposer, while Governance can bypass the proposer.\n+++ description: Whether slash payload execution is currently enabled.\n values.isSlashingEnabled:\n- true\n+ false\n+++ description: Timestamp until which slash payload execution is disabled.\n values.slashingDisabledUntil:\n- 0\n+ 1784800907\n }\n```"
}
]
},
{
"id": "36d3cfc7",
"date": "Wed, 15 Jul 2026 14:36:45 GMT",
"timestamp": 1784111155,
"description": "Aztec v5 is canonical with its current verifier, messaging, reward, and slashing stack; The immutable escape patch via Escape Hatch remains and the Rollup config is hardened against malicious governance.",
"isHighSeverity": false,
"changeCount": 42,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GovernanceProposer (eth:0x06Ef1DcF87E419C48B94a331B252819FADbD63ef) [aztecnetwork/GovernanceProposer] {\n +++ description: Intermediary contract through which the designated proposer for each L2 slot can signal support for an L1 payload. A signalling round comprises 1000 slots. A payload that receives at least 600 signals can be submitted to the L1 Governance contract within the configured lifetime.\n+++ description: Rollup instance whose checkpoint proposers can signal proposals.\n values.getInstance:\n- \"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\"\n+ \"eth:0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34\"\n }\n```\n\n```diff\n contract Governance (eth:0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e) [aztecnetwork/Governance] {\n +++ description: DAO contract used for proposals and token voting. Heavily interdependent with the GSE for voting power snapshots.\n receivedPermissions.2:\n- {\"permission\":\"interact\",\"from\":\"eth:0x3D6A1B00C830C5f278FC5dFb3f6Ff0b74Db6dfe0\",\"description\":\"recover AZTEC from any implicit or earmarked accounting bucket and recover any non-AZTEC token held by the distributor.\",\"role\":\".registryOwner\"}\n receivedPermissions.3.condition:\n- \"slashing is enabled and the payload has not been vetoed.\"\n receivedPermissions.3.role:\n- \".GOVERNANCE\"\n+ \".registryOwner\"\n receivedPermissions.3.description:\n- \"execute arbitrary payload actions through the Slasher, bypassing all proposer validation including ballots, quorum, target construction, delay, and lifetime.\"\n+ \"recover AZTEC from any implicit or earmarked accounting bucket and recover any non-AZTEC token held by the distributor.\"\n receivedPermissions.3.from:\n- \"eth:0x64E6e9Bb9f1E33D319578B9f8a9C719Ca6D46eBb\"\n+ \"eth:0x555bAAc4757A89f1CE0c84fA35afE9dD7aa8E1d3\"\n receivedPermissions.4:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34\",\"description\":\"change the sequencer reward share and checkpoint reward, only increase the mana target, update proving cost within its step and cooldown bounds, update validator entry-queue limits subject to nonzero normal-phase limits and bounded bootstrap settings, queue or cancel a Slasher replacement subject to the replacement delay, set the EscapeHatch once if still unset, and transfer or renounce ownership.\",\"role\":\".owner\"}\n receivedPermissions.5:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34\",\"description\":\"slash and eject validators while this contract is configured as the active Slasher.\",\"role\":\".getSlasher\",\"condition\":\"the active Slasher authorizes the call under its own execution rules.\",\"via\":[{\"address\":\"eth:0xCD6855470A01aBcd989126A1183Fb50673952548\",\"condition\":\"slashing is enabled and the payload has not been vetoed.\"}]}\n receivedPermissions.7:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xCD6855470A01aBcd989126A1183Fb50673952548\",\"description\":\"execute arbitrary payload actions through the Slasher, bypassing all proposer validation including ballots, quorum, target construction, delay, and lifetime.\",\"role\":\".GOVERNANCE\",\"condition\":\"slashing is enabled and the payload has not been vetoed.\"}\n directlyReceivedPermissions.0:\n- {\"permission\":\"act\",\"from\":\"eth:0x64E6e9Bb9f1E33D319578B9f8a9C719Ca6D46eBb\",\"description\":\"execute arbitrary payload actions through the Slasher, bypassing all proposer validation including ballots, quorum, target construction, delay, and lifetime.\",\"role\":\".GOVERNANCE\",\"condition\":\"slashing is enabled and the payload has not been vetoed.\"}\n directlyReceivedPermissions.1:\n+ {\"permission\":\"act\",\"from\":\"eth:0xCD6855470A01aBcd989126A1183Fb50673952548\",\"description\":\"execute arbitrary payload actions through the Slasher, bypassing all proposer validation including ballots, quorum, target construction, delay, and lifetime.\",\"role\":\".GOVERNANCE\",\"condition\":\"slashing is enabled and the payload has not been vetoed.\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract RewardBooster (eth:0x1CbB707Bd7b4Fd2BcED6D96d84372fb428e93D80) [aztecnetwork/RewardBooster]\n +++ description: Calculates boosted reward shares for active provers based on a configured curve, incentivizing consistent participation.\n```\n\n```diff\n- Status: DELETED\n contract FeeJuicePortal (eth:0x2891F8b941067F8B5a3F34545A30Cf71E3E23617) [aztecnetwork/FeeJuicePortal]\n +++ description: One-way gas bridge: Escrows the fee asset (AZTEC) used to pay for L2 mana (gas). Users deposit tokens here, which are minted on L2 via the Inbox. The Rollup contract holds exclusive rights to withdraw tokens from this portal to distribute them as rewards to L1 sequencers and provers. Apart from that, this escrow does NOT afford a way to withdraw tokens.\n```\n\n```diff\n contract Registry (eth:0x35b22e09Ee0390539439E24f06Da43D83f90e298) [aztecnetwork/Registry] {\n +++ description: Central directory that tracks the current 'canonical' (active) Rollup contract address and key system contracts like the Reward Distributor.\n+++ description: The latest registered rollup instance, treated as canonical by the Aztec contracts.\n values.getCanonicalRollup:\n- \"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\"\n+ \"eth:0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34\"\n+++ description: The Registry-selected reward distributor. An existing Rollup keeps the distributor fixed at its deployment and is not retargeted when this pointer changes.\n values.getRewardDistributor:\n- \"eth:0x3D6A1B00C830C5f278FC5dFb3f6Ff0b74Db6dfe0\"\n+ \"eth:0x555bAAc4757A89f1CE0c84fA35afE9dD7aa8E1d3\"\n+++ description: Registered rollup version identifiers in insertion order.\n values.getVersion.2:\n+ 4248422647\n+++ description: Number of rollup versions registered in the registry.\n values.numberOfVersions:\n- 2\n+ 3\n }\n```\n\n```diff\n- Status: DELETED\n contract RewardDistributor (eth:0x3D6A1B00C830C5f278FC5dFb3f6Ff0b74Db6dfe0) [aztecnetwork/RewardDistributor]\n +++ description: Holds tokens allocated for protocol rewards. The canonical Rollup contract, as defined by the Registry, can draw from the implicit reward pool while any address can claim only funds explicitly earmarked to it.\n```\n\n```diff\n- Status: DELETED\n contract Slasher (eth:0x64E6e9Bb9f1E33D319578B9f8a9C719Ca6D46eBb) [aztecnetwork/Slasher]\n +++ description: Executes payload actions submitted by the authorized slashing proposer or Governance. Execution is blocked while slashing is disabled or when the vetoer has vetoed the payload; voting and execution-delay rules are enforced by the proposer, while Governance can bypass the proposer.\n```\n\n```diff\n- Status: DELETED\n contract EscapeHatch (eth:0x8c189ead28D5987A48e522162f9225124D50AD1B) [aztecnetwork/EscapeHatch]\n +++ description: Provides a fallback mechanism for block production if the primary sequencer committee fails or censors. Candidates post a bond of 332,000,000 AZTEC and enter the candidate set. For each hatch, the contract snapshots the eligible set and uses RANDAO to select one designated proposer; posting a bond does not grant immediate proposal rights. If the designated proposer fails to propose and prove, their bond is slashed by 9,600,000 AZTEC. The minimum tax deducted from their bond is 1,660,000 AZTEC, even if the proposal is successful. The escape hatch regularly opens every 112 epochs, given there are any eligible bonded candidates.\n```\n\n```diff\n- Status: DELETED\n contract Inbox (eth:0x8Dbf0b6ed495baAb6062f5D5365aF3C1B2ed4578) [aztecnetwork/Inbox]\n +++ description: Facilitates canonical L1 to L2 communication. It accepts messages (including fee asset deposits) from L1, accumulates them in an append-only frontier tree per checkpoint, and forces the Sequencers and the Rollup contract to sequentially consume the roots of these message trees, ensuring message inclusion.\n```\n\n```diff\n- Status: DELETED\n contract TallySlashingProposer (eth:0xa4a38fD0108C00983E75616b638Ff3321FD26958) [N/A]\n +++ description: None\n```\n\n```diff\n contract GSE (eth:0xa92ecFD0E70c9cd5E5cd76c50Af0F7Da93567a4f) [aztecnetwork/GSE] {\n +++ description: Central staking manager independent of Rollup implementations. Sequencers deposit stake here through their chosen Rollup contract. Their stake is then transferred to the Governance contract and activated for voting. The GSE tracks which rollup instance validators are securing, and gives them an option to automatically move to the latest Rollup version.\n+++ description: Latest rollup registered in the GSE. Validators assigned to the bonus instance follow this address.\n values.getLatestRollup:\n- \"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\"\n+ \"eth:0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34\"\n }\n```\n\n```diff\n- Status: DELETED\n contract SlashPayloadCloneable (eth:0xAA43220b7eb7c8Ffe75bc9C483f3C07b0a55B445) [aztecnetwork/SlashPayloadCloneable]\n +++ description: A template for specific slashing payload contracts deployed deterministically to encode one or more slashing actions (validators and amounts) that the Slasher executes.\n```\n\n```diff\n- Status: DELETED\n contract Rollup (eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962) [N/A]\n +++ description: None\n```\n\n```diff\n contract SlashVeto Council (eth:0xBbB4aF368d02827945748b28CD4b2D42e4A37480) [GnosisSafe] {\n +++ description: None\n receivedPermissions.0.from:\n- \"eth:0x64E6e9Bb9f1E33D319578B9f8a9C719Ca6D46eBb\"\n+ \"eth:0xCD6855470A01aBcd989126A1183Fb50673952548\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Outbox (eth:0xc9698B7AdEf9ee63F3Bf5cFF38086e4E836579f0) [aztecnetwork/Outbox]\n +++ description: Facilitates L2 to L1 communication. It stores the roots of L2 to L1 message trees per epoch, which are inserted by the Rollup contract. Users and portals can consume these messages on L1 by providing a Merkle proof against the stored root. A nullifier bitmap prevents double consumption.\n```\n\n```diff\n+ Status: CREATED\n contract HonkVerifier (eth:0x098f47c00F4df22a8030746Eb11378236C24b4bC) [aztecnetwork/HonkVerifier]\n +++ description: ZK proof verification contract.\n```\n\n```diff\n+ Status: CREATED\n contract RewardBooster (eth:0x4490cAb7Ce3499353E1b0090b9e530c1AD03B551) [aztecnetwork/RewardBooster]\n +++ description: Calculates boosted reward shares for active provers based on a configured curve, incentivizing consistent participation.\n```\n\n```diff\n+ Status: CREATED\n contract RollupOperationsExtLib (eth:0x516f010C9AB452d70E0c6f78b9E698249a66d2AC) [aztecnetwork/RollupOperationsExtLib]\n +++ description: Library immutably linked into the Rollup for checkpoint proposal, proof verification, pruning, and chain-tip operations. Its functions operate on the calling Rollup's storage through DELEGATECALL, so direct getter calls on the library are ignored.\n```\n\n```diff\n+ Status: CREATED\n contract RewardDistributor (eth:0x555bAAc4757A89f1CE0c84fA35afE9dD7aa8E1d3) [aztecnetwork/RewardDistributor]\n +++ description: Holds tokens allocated for protocol rewards. The canonical Rollup contract, as defined by the Registry, can draw from the implicit reward pool while any address can claim only funds explicitly earmarked to it.\n```\n\n```diff\n+ Status: CREATED\n contract SlashPayloadCloneable (eth:0x57576AbA1932df7Cc30F971ACC9d4Fc6E86B6e87) [aztecnetwork/SlashPayloadCloneable]\n +++ description: A template for specific slashing payload contracts deployed deterministically to encode one or more slashing actions (validators and amounts) that the Slasher executes.\n```\n\n```diff\n+ Status: CREATED\n contract Outbox (eth:0x5B062aB5fD3A66BC7e73b04CeD38587673b6A2D7) [aztecnetwork/Outbox]\n +++ description: Facilitates L2 to L1 communication. It stores the roots of L2 to L1 message trees per epoch, which are inserted by the Rollup contract. Users and portals can consume these messages on L1 by providing a Merkle proof against the stored root. A nullifier bitmap prevents double consumption.\n```\n\n```diff\n+ Status: CREATED\n contract Inbox (eth:0x7d4Ef0676c2032bbCC09227501D34d86641ab8cA) [aztecnetwork/Inbox]\n +++ description: Facilitates canonical L1 to L2 communication. It accepts messages (including fee asset deposits) from L1, accumulates them in an append-only frontier tree per checkpoint, and forces the Sequencers and the Rollup contract to sequentially consume the roots of these message trees, ensuring message inclusion.\n```\n\n```diff\n+ Status: CREATED\n contract SlashingProposer (eth:0x8A36b8F2Ca71D8d8Bd98e03Ebf8B4D0939Daf0bA) [aztecnetwork/SlashingProposer]\n +++ description: Collects one signed slashing ballot from the designated proposer in each slot. After the execution delay, anyone can tally the ballots per validator and penalty level, deploy the resulting payload, and ask the Slasher to execute it before the round expires.\n```\n\n```diff\n+ Status: CREATED\n contract Rollup (eth:0x91fF8bbD8Ebb07893010D50A48A1609e5EBd8E34) [aztecnetwork/Rollup]\n +++ description: Core rollup logic contract. It processes checkpoint proposals, verifies ZK proofs for state transitions, manages data availability, and coordinates validator selection and chain tip updates.\n```\n\n```diff\n+ Status: CREATED\n contract FeeJuicePortal (eth:0xaf73Dd51D1eb8a079BB097f39c832cDD00ac691c) [aztecnetwork/FeeJuicePortal]\n +++ description: One-way gas bridge: Escrows the fee asset (AZTEC) used to pay for L2 mana (gas). Users deposit tokens here, which are minted on L2 via the Inbox. The Rollup contract holds exclusive rights to withdraw tokens from this portal to distribute them as rewards to L1 sequencers and provers. Apart from that, this escrow does NOT afford a way to withdraw tokens.\n```\n\n```diff\n+ Status: CREATED\n contract Slasher (eth:0xCD6855470A01aBcd989126A1183Fb50673952548) [aztecnetwork/Slasher]\n +++ description: Executes payload actions submitted by the authorized slashing proposer or Governance. Execution is blocked while slashing is disabled or when the vetoer has vetoed the payload; voting and execution-delay rules are enforced by the proposer, while Governance can bypass the proposer.\n```\n\n```diff\n+ Status: CREATED\n contract RewardExtLib (eth:0xD6E890c615d6f99681a00771C20ed04516288898) [aztecnetwork/RewardExtLib]\n +++ description: Library immutably linked into the Rollup for sequencer and prover reward accounting. Its functions operate on the calling Rollup's storage through DELEGATECALL, so direct getter calls on the library are ignored.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorOperationsExtLib (eth:0xe4F0b9769Ca04a6E3d93b5BA732b5aD80797D411) [aztecnetwork/ValidatorOperationsExtLib]\n +++ description: Library immutably linked into the Rollup for validator entry, exits, slashing, and Slasher rotation. Its functions operate on the calling Rollup's storage through DELEGATECALL, so direct getter calls on the library are ignored.\n```\n\n```diff\n+ Status: CREATED\n contract EscapeHatch (eth:0xF459348962F5eA3A9A101826B03A2CE1F459E51A) [aztecnetwork/EscapeHatch]\n +++ description: Provides a fallback mechanism for block production if the primary sequencer committee fails or censors. Candidates post a bond of 332,000,000 AZTEC and enter the candidate set. For each hatch, the contract snapshots the eligible set and uses RANDAO to select one designated proposer; posting a bond does not grant immediate proposal rights. If the designated proposer fails to propose and prove, their bond is slashed by 9,600,000 AZTEC. The minimum tax deducted from their bond is 1,660,000 AZTEC, even if the proposal is successful. The escape hatch regularly opens every 112 epochs, given there are any eligible bonded candidates.\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract BaseStaker (eth:0x79075C8E314Ab4A84d54F90b1c7032Dc5469082d) [aztecnetwork/BaseStaker]\n +++ description: Implementation registered by the ATP Registry for upgradeable staker proxies that manage locked AZTEC positions.\n```"
}
]
},
{
"id": "c47b6119",
"date": "Wed, 08 Jul 2026 12:23:27 GMT",
"timestamp": 1783513321,
"description": "[v5 upgrade payload](https://aztecgov.nethermind.io/4) passes signaling and is proposed to the Governance contract.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e) [aztecnetwork/Governance] {\n +++ description: DAO contract used for proposals and token voting. Heavily interdependent with the GSE for voting power snapshots.\n values.proposalCount:\n- 4\n+ 5\n }\n```"
}
]
},
{
"id": "a96de870",
"date": "Mon, 22 Jun 2026 13:58:36 GMT",
"timestamp": 1782131482,
"description": "Execute 'cut the leash' upgrade. This revokes ownership of the current rollup contract. Gov execution delay is reduced to 2d (from 30d). Since gov cannot change the escape hatch or critical configs on the current rollup, Aztec Network is now Stage 2. At the same time, there are known vulnerabilities, which places all escrowed funds at risk.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e) [aztecnetwork/Governance] {\n +++ description: DAO contract used for proposals and token voting. Heavily interdependent with the GSE for voting power snapshots.\n values.getConfiguration.executionDelay:\n- 2592000\n+ 172800\n receivedPermissions.3:\n- {\"permission\":\"interact\",\"from\":\"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\",\"description\":\"change the escape hatch address and disable the escape hatch, change the slasher address which can slash arbitrary sequencers, change the sequencer queue config and disallow new sequencers joining, set the ejection threshold that exits sequencers from the active set, change various critical fee and reward configurations.\",\"role\":\".owner\"}\n }\n```\n\n```diff\n contract Rollup (eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962) [aztecnetwork/Rollup] {\n +++ description: Core rollup logic contract. It processes checkpoint proposals, verifies ZK proofs for state transitions, manages data availability, and coordinates validator selection and chain tip updates.\n values.owner:\n- \"eth:0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "90de911d",
"date": "Tue, 16 Jun 2026 09:58:16 GMT",
"timestamp": 1781603826,
"description": "Revoker switched back to EOA (see below).",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AztecTokenPositionRegistry_ProtocolTreasury (eth:0xD938bE4A2cB41105Bc2FbE707dca124A2e5d0c80) [aztecnetwork/AztecTokenPositionRegistry] {\n +++ description: Used to set the time at which AZTEC tokens owned by the ProtocolTreasury are unlocked. Is also used as source of truth for other vesting contracts in the Aztec ecosystem.\n values.getRevoker:\n- \"eth:0x79E5BD3BD5cfc52C718Fe0f83fEaab31691683cA\"\n+ \"eth:0x92Ba0FD39658105FaC4dF2B9BADE998B5816b350\"\n }\n```"
}
]
},
{
"id": "b3046f7e",
"date": "Tue, 02 Jun 2026 13:18:04 GMT",
"timestamp": 1780405492,
"description": "Revoker of the vesting contracts registry switched from EOA to a revocation payload. This does not affect the ProtocolTreasury but rather the external vesting contracts, which are not in disco.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AztecTokenPositionRegistry_ProtocolTreasury (eth:0xD938bE4A2cB41105Bc2FbE707dca124A2e5d0c80) [aztecnetwork/AztecTokenPositionRegistry] {\n +++ description: Used to set the time at which AZTEC tokens owned by the ProtocolTreasury are unlocked. Is also used as source of truth for other vesting contracts in the Aztec ecosystem.\n values.getRevoker:\n- \"eth:0x92Ba0FD39658105FaC4dF2B9BADE998B5816b350\"\n+ \"eth:0x79E5BD3BD5cfc52C718Fe0f83fEaab31691683cA\"\n }\n```"
}
]
},
{
"id": "4cf6ec20",
"date": "Wed, 13 May 2026 13:08:09 GMT",
"timestamp": 1778677605,
"description": "AZUP-1: Cut the Leash is queued after a successful sequencer signaling round. The proposal aims to make the escape hatch of the current rollup immutable and get it to Stage 2. Details here: https://aztecgov.nethermind.io/3. The executable payload address is https://etherscan.io/address/0xa156E3a14f45099ecdF9C6A393a118809C5d06e6#code and is simple:\n- revoke ownership of the rollup\n- gov execution delay 30d -> 2d",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e) [aztecnetwork/Governance] {\n +++ description: DAO contract used for proposals and token voting. Heavily interdependent with the GSE for voting power snapshots.\n values.proposalCount:\n- 3\n+ 4\n }\n```"
}
]
},
{
"id": "9f35a88f",
"date": "Wed, 22 Apr 2026 13:53:02 GMT",
"timestamp": 1776865911,
"description": "slashing is back after a slashveto council pause.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Slasher (eth:0x64E6e9Bb9f1E33D319578B9f8a9C719Ca6D46eBb) {\n +++ description: The executor contract for penalties. It receives authorization to slash validator stakes, subject to an execution delay and a vetoer.\n values.isSlashingEnabled:\n- false\n+ true\n }\n```"
}
]
},
{
"id": "bb632c3e",
"date": "Mon, 13 Apr 2026 09:17:59 GMT",
"timestamp": 1776071799,
"description": "the slashVeto council vetoes slashing for 3d because of [this request](https://github.com/aztec-slash-veto/council/issues/7). Affected payloads can be seen on https://slashveto.me. The argument is that v4.1.3 was a bugfix release on a friday and the wave of slashing can be attributed to people not having updated in time.\n\none slashVeto council member is replaced (https://forum.aztec.network/t/join-the-slashveto-council/8521).",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Slasher (eth:0x64E6e9Bb9f1E33D319578B9f8a9C719Ca6D46eBb) {\n +++ description: The executor contract for penalties. It receives authorization to slash validator stakes, subject to an execution delay and a vetoer.\n values.isSlashingEnabled:\n- true\n+ false\n values.slashingDisabledUntil:\n- 0\n+ 1776137255\n }\n```\n\n```diff\n contract SlashVeto Council (eth:0xBbB4aF368d02827945748b28CD4b2D42e4A37480) {\n +++ description: None\n values.$members.6:\n- \"eth:0xb31e6d9661720A93d54AF7D1815d9bb399280629\"\n+ \"eth:0x8138c46A572D989E54837d5e5dEB506889edFb5D\"\n }\n```"
}
]
},
{
"id": "2b94fb12",
"date": "Tue, 07 Apr 2026 11:42:01 GMT",
"timestamp": 1775561692,
"description": "Rollup contract has reached enough validators, so isBootstrapped is set to true.\nNow the rate of adding new validators is limited by the `getEntryQueueFlushSize` function (max 0.25% of the validator set growth per epoch, at least 1, at most 4).",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Rollup (eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962) {\n +++ description: Core rollup logic contract. It processes checkpoint proposals, verifies ZK proofs for state transitions, manages data availability, and coordinates validator selection and chain tip updates.\n values.getIsBootstrapped:\n- false\n+ true\n }\n```"
}
]
},
{
"id": "37b1d883",
"date": "Tue, 31 Mar 2026 10:55:10 GMT",
"timestamp": 1774847186,
"description": "config: forcibly register post-alpha contracts. remove from config.jsonc as soon as the payload is executed.",
"isHighSeverity": true,
"changeCount": 56,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GovernanceProposer (eth:0x06Ef1DcF87E419C48B94a331B252819FADbD63ef) {\n +++ description: Intermediary contract that allows the L2 Sequencers operating the canonical rollup (as defined by the Registry) to submit formal proposals to the L1 Governance contract by signalling their support of any smart contract payload on L1 with each checkpoint proposal. A signalling round comprises 1000 checkpoints. 600 signals or more during one round allow submitting the payload as a governance proposal.\n values.getInstance:\n- \"eth:0x603bb2c05D474794ea97805e8De69bCcFb3bCA12\"\n+ \"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\"\n }\n```\n\n```diff\n contract Governance (eth:0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e) {\n +++ description: DAO contract used for proposals and token voting. Heavily interdependent with the GSE for voting power snapshots.\n values.getConfiguration.executionDelay:\n- 604800\n+ 2592000\n values.proposalCount:\n- 2\n+ 3\n receivedPermissions.1.from:\n- \"eth:0x91A3745c685c220595B997E53311EbF660144889\"\n+ \"eth:0x64E6e9Bb9f1E33D319578B9f8a9C719Ca6D46eBb\"\n receivedPermissions.3:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\",\"description\":\"change the escape hatch address and disable the escape hatch, change the slasher address which can slash arbitrary sequencers, change the sequencer queue config and disallow new sequencers joining, set the ejection threshold that exits sequencers from the active set, change various critical fee and reward configurations.\",\"role\":\".owner\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract Inbox (eth:0x15c718C05B8c0dbec4D648b6711d6Ce8793969Ee)\n +++ description: Handles L1-to-L2 messaging. Users deposit funds or send messages here, which are organized into a Merkle tree for the sequencer to include in an L2 block.\n```\n\n```diff\n contract Registry (eth:0x35b22e09Ee0390539439E24f06Da43D83f90e298) {\n +++ description: Central directory that tracks the current 'canonical' (active) Rollup contract address and key system contracts like the Reward Distributor.\n values.getCanonicalRollup:\n- \"eth:0x603bb2c05D474794ea97805e8De69bCcFb3bCA12\"\n+ \"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\"\n values.getVersion.1:\n+ 2934756905\n values.numberOfVersions:\n- 1\n+ 2\n }\n```\n\n```diff\n contract RewardDistributor (eth:0x3D6A1B00C830C5f278FC5dFb3f6Ff0b74Db6dfe0) {\n +++ description: Holds tokens allocated for protocol rewards. The canonical Rollup contract (as defined by the Registry) calls this to distribute payments to sequencers and provers.\n values.canonicalRollup:\n- \"eth:0x603bb2c05D474794ea97805e8De69bCcFb3bCA12\"\n+ \"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Rollup (eth:0x603bb2c05D474794ea97805e8De69bCcFb3bCA12)\n +++ description: Core rollup logic contract. It processes block proposals, verifies ZK proofs for state transitions, manages data availability, and coordinates validator selection and chain tip updates.\n```\n\n```diff\n contract ProtocolTreasury (eth:0x662De311f94bdbB571D95B5909e9cC6A25a6802a) {\n +++ description: Holds the protocol's funds controlled by Governance. It acts as a timelocked executor for spending or relaying transactions approved by the DAO.\n values.getActivationTimestamp:\n- 1799366400\n+ 1795150800\n }\n```\n\n```diff\n- Status: DELETED\n contract RewardBooster (eth:0x7101a6703491A4D808aeAbE9F62bC1Dc6a20bdf4)\n +++ description: Calculates 'boosted' reward shares for active provers based on a configured curve, incentivizing consistent participation.\n```\n\n```diff\n- Status: DELETED\n contract HonkVerifier (eth:0x77e3bA096355510e0E9f60D292010B42d662d2B5)\n +++ description: ZK proof verification contract.\n```\n\n```diff\n- Status: DELETED\n contract TallySlashingProposer (eth:0x7a318c3DaA9f21f8fc8238c65755eB0394Fbf189)\n +++ description: Allows the validator committee to vote on slashing a specific peer. Once a quorum is reached, it proposes a slash action to the Slasher.\n```\n\n```diff\n- Status: DELETED\n contract SlashPayloadCloneable (eth:0x82c592b4Bb7E1f50f68E75d86743c3330beAaba4)\n +++ description: A template for specific slashing payload contracts deployed deterministically to encode a slashing action (who to slash and how much) that the Slasher executes.\n```\n\n```diff\n contract EscapeHatch (eth:0x8c189ead28D5987A48e522162f9225124D50AD1B) {\n +++ description: Provides a fallback mechanism for block production if the primary sequencer committee fails or censors. The committee is circumvented by allowing proposals by anyone who is able to post a large bond of 332,000,000 AZTEC. It maintains a set of bonded candidates and deterministically selects a designated proposer for a given 'hatch' period using RANDAO. If the designated proposer fails to propose and prove, their bond is slashed by 9,600,000 AZTEC. The minimum tax deducted from their bond is 1,660,000 AZTEC, even if the proposal is successful. The escape hatch regularly opens every 112 epochs, given there are any bonded candidates.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"immutable\"\n name:\n+ \"EscapeHatch\"\n template:\n+ \"aztecnetwork/EscapeHatch\"\n sourceHashes:\n+ [\"0x075ee4b441a07410b5aa3c5fc868789251bc02707bc5ba28a174648dafad785d\"]\n description:\n+ \"Provides a fallback mechanism for block production if the primary sequencer committee fails or censors. The committee is circumvented by allowing proposals by anyone who is able to post a large bond of 332,000,000 AZTEC. It maintains a set of bonded candidates and deterministically selects a designated proposer for a given 'hatch' period using RANDAO. If the designated proposer fails to propose and prove, their bond is slashed by 9,600,000 AZTEC. The minimum tax deducted from their bond is 1,660,000 AZTEC, even if the proposal is successful. The escape hatch regularly opens every 112 epochs, given there are any bonded candidates.\"\n sinceTimestamp:\n+ 1772654171\n sinceBlock:\n+ 24586323\n values:\n+ {\"$immutable\":true,\"getActiveDuration\":2,\"getBondSize\":\"332000000000000000000000000\",\"getBondSizeFmt\":\"332,000,000\",\"getBondToken\":\"eth:0xA27EC0006e59f245217Ff08CD52A7E8b169E62D2\",\"getCandidateCount\":0,\"getCurrentHatch\":8,\"getFailedHatchPunishment\":\"9600000000000000000000000\",\"getFailedHatchPunishmentFmt\":\"9,600,000\",\"getFrequency\":112,\"getLagInHatches\":1,\"getProposingExitDelay\":2592000,\"getRollup\":\"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\",\"getWithdrawalTax\":\"1660000000000000000000000\",\"getWithdrawalTaxFmt\":\"1,660,000\",\"LAG_IN_EPOCHS_FOR_RANDAO\":1,\"LAG_IN_EPOCHS_FOR_SET_SIZE\":2}\n fieldMeta:\n+ {\"getBondSizeFmt\":{\"description\":\"The amount of tokens required to join the candidate set.\"},\"getWithdrawalTaxFmt\":{\"description\":\"The amount deducted from the bond when a candidate exits the candidate set. This is the minimum that a candidate loses of their bond by becoming a candidate and cannot be circumvented.\"},\"getCandidateCount\":{\"severity\":\"HIGH\",\"description\":\"Hatch proposer candidates who posted the bond.\"},\"getBondToken\":{\"description\":\"The ERC20 token used for candidate bonds.\"},\"getFailedHatchPunishmentFmt\":{\"description\":\"The amount deducted from the bond if the designated proposer fails to fulfill their duties.\"},\"getFrequency\":{\"description\":\"The number of epochs between escape hatch windows.\"},\"getActiveDuration\":{\"description\":\"The number of epochs an escape hatch remains open.\"},\"getLagInHatches\":{\"description\":\"The number of hatches ahead for which candidates are deterministically selected.\"},\"getProposingExitDelay\":{\"description\":\"The additional time (in seconds) a proposer must wait after their hatch ends before they can exit.\"},\"LAG_IN_EPOCHS_FOR_RANDAO\":{\"description\":\"The number of epochs to look back from the start of the hatch for a stable RANDAO seed.\"},\"LAG_IN_EPOCHS_FOR_SET_SIZE\":{\"description\":\"The number of epochs to look back from the start of the hatch to snapshot the stable candidate set.\"},\"getRollup\":{\"description\":\"The address of the core Rollup contract.\"}}\n implementationNames:\n+ {\"eth:0x8c189ead28D5987A48e522162f9225124D50AD1B\":\"EscapeHatch\"}\n usedTypes:\n+ [{\"typeCaster\":\"Undecimal\",\"arg\":{\"decimals\":18}}]\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n- Status: DELETED\n contract Slasher (eth:0x91A3745c685c220595B997E53311EbF660144889)\n +++ description: The executor contract for penalties. It receives authorization to slash validator stakes, subject to an execution delay and a vetoer.\n```\n\n```diff\n contract TallySlashingProposer (eth:0xa4a38fD0108C00983E75616b638Ff3321FD26958) {\n +++ description: Allows the validator committee to vote on slashing a specific peer. Once a quorum is reached, it proposes a slash action to the Slasher.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"immutable\"\n name:\n+ \"TallySlashingProposer\"\n template:\n+ \"aztecnetwork/TallySlashingProposer\"\n sourceHashes:\n+ [\"0x0b4f1c707812b207e031a78710120f6962597aca1d9bfa47b0aa4c940fadbbdb\"]\n description:\n+ \"Allows the validator committee to vote on slashing a specific peer. Once a quorum is reached, it proposes a slash action to the Slasher.\"\n sinceTimestamp:\n+ 1772654159\n sinceBlock:\n+ 24586322\n values:\n+ {\"$immutable\":true,\"COMMITTEE_SIZE\":48,\"eip712Domain\":{\"fields\":\"0x0f\",\"name\":\"TallySlashingProposer\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"eth:0xa4a38fD0108C00983E75616b638Ff3321FD26958\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]},\"EXECUTION_DELAY_IN_ROUNDS\":28,\"getCurrentRound\":237,\"INSTANCE\":\"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\",\"LIFETIME_IN_ROUNDS\":34,\"MAX_ROUND_SIZE\":1024,\"QUORUM\":65,\"ROUND_SIZE\":128,\"ROUND_SIZE_IN_EPOCHS\":4,\"ROUNDABOUT_SIZE\":128,\"SLASH_AMOUNT_LARGE\":\"2000000000000000000000\",\"SLASH_AMOUNT_MEDIUM\":\"2000000000000000000000\",\"SLASH_AMOUNT_SMALL\":\"2000000000000000000000\",\"SLASH_OFFSET_IN_ROUNDS\":2,\"SLASH_PAYLOAD_IMPLEMENTATION\":\"eth:0xAA43220b7eb7c8Ffe75bc9C483f3C07b0a55B445\",\"SLASHER\":\"eth:0x64E6e9Bb9f1E33D319578B9f8a9C719Ca6D46eBb\",\"SLASHING_PROPOSER_TYPE\":1,\"VOTE_TYPEHASH\":\"0x18b6b90f234e6d028d4c9800043cedef34624eedddd14e60eba01934728014fe\"}\n implementationNames:\n+ {\"eth:0xa4a38fD0108C00983E75616b638Ff3321FD26958\":\"TallySlashingProposer\"}\n }\n```\n\n```diff\n contract GSE (eth:0xa92ecFD0E70c9cd5E5cd76c50Af0F7Da93567a4f) {\n +++ description: Central staking manager independent of Rollup implementations. Sequencers deposit stake here through their chosen Rollup contract. Their stake is then transfered to the Governance contract and activated for voting. The GSE tracks which rollup instance validators are securing, and gives them an option to automatically move to the latest Rollup version.\n values.getLatestRollup:\n- \"eth:0x603bb2c05D474794ea97805e8De69bCcFb3bCA12\"\n+ \"eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962\"\n }\n```\n\n```diff\n contract SlashVeto Council (eth:0xBbB4aF368d02827945748b28CD4b2D42e4A37480) {\n +++ description: None\n receivedPermissions.0.from:\n- \"eth:0x91A3745c685c220595B997E53311EbF660144889\"\n+ \"eth:0x64E6e9Bb9f1E33D319578B9f8a9C719Ca6D46eBb\"\n }\n```\n\n```diff\n contract AztecTokenPositionRegistry_ProtocolTreasury (eth:0xD938bE4A2cB41105Bc2FbE707dca124A2e5d0c80) {\n +++ description: Used to set the time at which AZTEC tokens owned by the ProtocolTreasury are unlocked.\n values.getExecuteAllowedAt:\n- 1798761600\n+ 1794546000\n values.getGlobalLockParams.startTime:\n- 1798761600\n+ 1794546000\n values.getRevoker:\n- \"eth:0x0000000000000000000000000000000000000000\"\n+ \"eth:0x92Ba0FD39658105FaC4dF2B9BADE998B5816b350\"\n+++ severity: HIGH\n values.getUnlockStartTime:\n- 1798761600\n+ 1794546000\n }\n```\n\n```diff\n- Status: DELETED\n contract FeeJuicePortal (eth:0xe05dc9D5969272831757181fFf1532B066254bf1)\n +++ description: A one-way public bridge to deposit AZTEC tokens to the Rollup.\n```\n\n```diff\n- Status: DELETED\n contract Outbox (eth:0xf006c41097861AFeb18b05e586B921c081411Ee9)\n +++ description: Handles L2-to-L1 messaging. It stores Merkle roots of messages exiting the rollup, allowing users to prove inclusion and finalize withdrawals or actions on L1.\n```\n\n```diff\n+ Status: CREATED\n contract RewardBooster (eth:0x1CbB707Bd7b4Fd2BcED6D96d84372fb428e93D80)\n +++ description: Calculates 'boosted' reward shares for active provers based on a configured curve, incentivizing consistent participation.\n```\n\n```diff\n+ Status: CREATED\n contract FeeJuicePortal (eth:0x2891F8b941067F8B5a3F34545A30Cf71E3E23617)\n +++ description: One-way gas bridge: Escrows the fee asset (AZTEC) used to pay for L2 mana (gas). Users deposit tokens here, which are minted on L2 via the Inbox. The Rollup contract holds exclusive rights to withdraw tokens from this portal to distribute them as rewards to L1 sequencers and provers. Apart from that, this escrow does NOT afford a way to withdraw tokens.\n```\n\n```diff\n+ Status: CREATED\n contract Slasher (eth:0x64E6e9Bb9f1E33D319578B9f8a9C719Ca6D46eBb)\n +++ description: The executor contract for penalties. It receives authorization to slash validator stakes, subject to an execution delay and a vetoer.\n```\n\n```diff\n+ Status: CREATED\n contract HonkVerifier (eth:0x70aEDda427f26480D240bc0f4308ceDec8d31348)\n +++ description: ZK proof verification contract.\n```\n\n```diff\n+ Status: CREATED\n contract Inbox (eth:0x8Dbf0b6ed495baAb6062f5D5365aF3C1B2ed4578)\n +++ description: Facilitates canonical L1 to L2 communication. It accepts messages (including fee asset deposits) from L1, accumulates them in an append-only frontier tree per checkpoint, and forces the Sequencers and the Rollup contract to sequentially consume the roots of these message trees, ensuring message inclusion.\n```\n\n```diff\n+ Status: CREATED\n contract SlashPayloadCloneable (eth:0xAA43220b7eb7c8Ffe75bc9C483f3C07b0a55B445)\n +++ description: A template for specific slashing payload contracts deployed deterministically to encode a slashing action (who to slash and how much) that the Slasher executes.\n```\n\n```diff\n+ Status: CREATED\n contract Rollup (eth:0xAe2001f7e21d5EcABf6234E9FDd1E76F50F74962)\n +++ description: Core rollup logic contract. It processes checkpoint proposals, verifies ZK proofs for state transitions, manages data availability, and coordinates validator selection and chain tip updates.\n```\n\n```diff\n+ Status: CREATED\n contract Outbox (eth:0xc9698B7AdEf9ee63F3Bf5cFF38086e4E836579f0)\n +++ description: Facilitates L2 to L1 communication. It stores the roots of L2 to L1 message trees per epoch, which are inserted by the Rollup contract. Users and portals can consume these messages on L1 by providing a Merkle proof against the stored root. A nullifier bitmap prevents double consumption.\n```"
}
]
},
{
"id": "d8113437",
"date": "Mon, 16 Feb 2026 15:13:21 GMT",
"timestamp": 1771254730,
"description": "TGE happened. Sequencers can claim block production rewards, AZTEC is transferable and tradable on uniswap. Token governance is launched.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Rollup (eth:0x603bb2c05D474794ea97805e8De69bCcFb3bCA12) {\n +++ description: Core rollup logic contract. It processes block proposals, verifies ZK proofs for state transitions, manages data availability, and coordinates validator selection and chain tip updates.\n values.isRewardsClaimable:\n- false\n+ true\n }\n```"
}
]
},
{
"id": "0c33a716",
"date": "Mon, 26 Jan 2026 13:07:34 GMT",
"timestamp": 1769432788,
"description": "TGE proposal active after passing signaling by sequencers. voting will start soon, proposal will become executable on 9.2 and cause TGE on 11.2. as [explained here](https://forum.aztec.network/t/reference-for-triggering-the-aztec-token-generation-event-tge/8366).",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e) {\n +++ description: DAO contract used for proposals and token voting. Heavily interdependent with the GSE for voting power snapshots.\n values.proposalCount:\n- 1\n+ 2\n }\n```"
}
]
},
{
"id": "66e1cfe0",
"date": "Wed, 21 Jan 2026 12:58:30 GMT",
"timestamp": 1769000209,
"description": "add TGEPayload for verification by governance.\n\nentry queue flush increase payload was executed.",
"isHighSeverity": false,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Rollup (eth:0x603bb2c05D474794ea97805e8De69bCcFb3bCA12) {\n +++ description: Core rollup logic contract. It processes block proposals, verifies ZK proofs for state transitions, manages data availability, and coordinates validator selection and chain tip updates.\n+++ description: number of sequencers flushable per epoch: will move from the entry queue to the active validator set if flushed\n values.getEntryQueueFlushSize:\n- 1\n+ 4\n }\n```\n\n```diff\n contract TGEPayload (eth:0x77A5EEF319E23615B848a09Ebd151744547b959C) {\n +++ description: None\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"immutable\"\n name:\n+ \"TGEPayload\"\n template:\n+ \"aztecnetwork/TGEPayload\"\n sourceHashes:\n+ [\"0xc2410dd48add80f68a5d7e354ca701a42d52f1a651c686a180e524179a08ed12\"]\n sinceTimestamp:\n+ 1768592243\n sinceBlock:\n+ 24249428\n values:\n+ {\"$immutable\":true,\"ATP_REGISTRY\":\"eth:0x63841bAD6B35b6419e15cA9bBBbDf446D4dC3dde\",\"AZTEC_TOKEN\":\"eth:0xA27EC0006e59f245217Ff08CD52A7E8b169E62D2\",\"DATE_GATED_RELAYER_SHORT\":\"eth:0x7d6DECF157E1329A20c4596eAf78D387E896aa4e\",\"END_DAY\":3,\"END_OF_WORKDAY\":54000,\"getURI\":\"https://github.com/AztecProtocol/ignition-contracts/\",\"JAN_1_2026_CET\":1767222000,\"ROLLUP\":\"eth:0x603bb2c05D474794ea97805e8De69bCcFb3bCA12\",\"ROLLUP_REGISTRY\":\"eth:0x35b22e09Ee0390539439E24f06Da43D83f90e298\",\"STAKER\":\"eth:0x11ED6b4a9D44cf8bC4e1763D08304eF20c998c95\",\"STAKING_REGISTRY\":\"eth:0x042dF8f42790d6943F41C25C2132400fd727f452\",\"START_DAY\":1,\"START_OF_WORKDAY\":28800,\"VIRTUAL_LBP_STRATEGY\":\"eth:0xd53006d1e3110fD319a79AEEc4c527a0d265E080\"}\n implementationNames:\n+ {\"eth:0x77A5EEF319E23615B848a09Ebd151744547b959C\":\"TGEPayload\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract ATPWithdrawableAndClaimableStakerV2 (eth:0x11ED6b4a9D44cf8bC4e1763D08304eF20c998c95)\n +++ description: Standard escrow implementation used to simplify and manage staking with locked AZTEC tokens.\n```\n\n```diff\n+ Status: CREATED\n contract BaseStaker (eth:0x6131D4900CD8dC328FB3CF6DFFEfbC628F02e7d9)\n +++ description: A template contract used for staker proxies within the StakingRegistry.\n```\n\n```diff\n+ Status: CREATED\n contract AztecTokenPositionRegistry_Sequencers (eth:0x63841bAD6B35b6419e15cA9bBBbDf446D4dC3dde)\n +++ description: A registry for contracts related to Sequencer staking and token unlock parameters.\n```\n\n```diff\n+ Status: CREATED\n contract GovernanceAcceleratedLock (eth:0x7d6DECF157E1329A20c4596eAf78D387E896aa4e)\n +++ description: None\n```"
}
]
},
{
"id": "c9a53a8f",
"date": "Wed, 07 Jan 2026 14:30:47 GMT",
"timestamp": 1767796183,
"description": "First gov proposal passed signalling phase:\n\n[Increase Ignition Queue Throughput](https://forum.aztec.network/t/increase-ignition-queue-throughput/8211)\n- does what it says, goal is to flush the entire queue until TGE and especially before the first upgrade of the rollup contract.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e) {\n +++ description: DAO contract used for proposals and token voting. Heavily interdependent with the GSE for voting power snapshots.\n values.proposalCount:\n- 0\n+ 1\n }\n```"
}
]
},
{
"id": "6ec23382",
"date": "Mon, 01 Dec 2025 15:07:20 GMT",
"timestamp": 1764601178,
"description": "config: add zk verifier from constructor vars.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract HonkVerifier (eth:0x77e3bA096355510e0E9f60D292010B42d662d2B5)\n +++ description: ZK proof verification contract.\n```"
}
]
},
{
"id": "57137267",
"date": "Mon, 24 Nov 2025 14:16:59 GMT",
"timestamp": 1763978160,
"description": "config: yeeted flushrewarder (not core contract), ignored more noisy vars, cleaned up the disco",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract StakingRegistry (eth:0x042dF8f42790d6943F41C25C2132400fd727f452)\n +++ description: Manages staking providers for delegation.\n```\n\n```diff\n+ Status: CREATED\n contract BaseStaker (eth:0x0Cb8fe28D35fD4763C4f3E3761904bAcF829BbF8)\n +++ description: A template contract used for staker proxies within the StakingRegistry.\n```\n\n```diff\n+ Status: CREATED\n contract ATPWithdrawableAndClaimableStaker (eth:0x7C009AE557234d094D798A03D21E3c1C1CAD3b42)\n +++ description: Standard escrow implementation used to simplify and manage staking with locked AZTEC tokens.\n```\n\n```diff\n+ Status: CREATED\n contract AztecTokenPositionRegistry_Sequencers (eth:0x8F778768aDed86AB778a47cd81b3b42B4b3F655B)\n +++ description: A registry for contracts related to Sequencer staking and token unlock parameters.\n```"
}
]
},
{
"id": "60e547bd",
"date": "Thu, 20 Nov 2025 14:51:30 GMT",
"timestamp": 1763649088,
"description": "config: silence disco.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract FlushRewarder (eth:0x7C9a7130379F1B5dd6e7A53AF84fC0fE32267B65) {\n +++ description: None\n values.rewardsAvailable:\n- \"1000000000000000000000000\"\n+ \"998300000000000000000000\"\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract FlushRewarder (eth:0x7C9a7130379F1B5dd6e7A53AF84fC0fE32267B65)\n +++ description: None\n```"
}
]
},
{
"id": "784bc3d2",
"date": "Wed, 19 Nov 2025 16:23:21 GMT",
"timestamp": 1763566766,
"description": "initial disco: aztec is in 'ignition' phase, network will launch with empty blocks for 3 months: https://aztec.network/aztec-roadmap.",
"isHighSeverity": false,
"changeCount": 19,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract CoinIssuer (eth:0x02FAdF157d551aa6d761b2A2237D03Af68E41CA6)\n +++ description: Manages the inflation and minting schedule of the Aztec token. It enforces an annual percentage cap and mints new tokens for the budget.\n```\n\n```diff\n+ Status: CREATED\n contract GovernanceProposer (eth:0x06Ef1DcF87E419C48B94a331B252819FADbD63ef)\n +++ description: Intermediary contract that allows the L2 system (or specific L2 signals) to submit formal proposals to the L1 Governance contract.\n```\n\n```diff\n+ Status: CREATED\n contract Governance (eth:0x1102471Eb3378FEE427121c9EfcEa452E4B6B75e)\n +++ description: DAO contract used for proposals and token voting\n```\n\n```diff\n+ Status: CREATED\n contract Inbox (eth:0x15c718C05B8c0dbec4D648b6711d6Ce8793969Ee)\n +++ description: Handles L1-to-L2 messaging. Users deposit funds or send messages here, which are organized into a Merkle tree for the sequencer to include in an L2 block.\n```\n\n```diff\n+ Status: CREATED\n contract Registry (eth:0x35b22e09Ee0390539439E24f06Da43D83f90e298)\n +++ description: Central directory that tracks the current 'canonical' (active) Rollup contract address and key system contracts like the Reward Distributor.\n```\n\n```diff\n+ Status: CREATED\n contract RewardDistributor (eth:0x3D6A1B00C830C5f278FC5dFb3f6Ff0b74Db6dfe0)\n +++ description: Holds tokens allocated for protocol rewards. The canonical Rollup contract calls this to distribute payments to sequencers and provers.\n```\n\n```diff\n+ Status: CREATED\n contract Rollup (eth:0x603bb2c05D474794ea97805e8De69bCcFb3bCA12)\n +++ description: Core rollup logic contract. It processes block proposals, verifies ZK proofs for state transitions, manages data availability, and coordinates validator selection and chain tip updates.\n```\n\n```diff\n+ Status: CREATED\n contract ProtocolTreasury (eth:0x662De311f94bdbB571D95B5909e9cC6A25a6802a)\n +++ description: Holds the protocol's funds controlled by Governance. It acts as a timelocked executor for spending or relaying transactions approved by the DAO.\n```\n\n```diff\n+ Status: CREATED\n contract RewardBooster (eth:0x7101a6703491A4D808aeAbE9F62bC1Dc6a20bdf4)\n +++ description: Calculates 'boosted' reward shares for active provers based on a configured curve, incentivizing consistent participation.\n```\n\n```diff\n+ Status: CREATED\n contract BaseStaker (eth:0x79075C8E314Ab4A84d54F90b1c7032Dc5469082d)\n +++ description: An template contract used for staker proxies within the StakingRegistry.\n```\n\n```diff\n+ Status: CREATED\n contract TallySlashingProposer (eth:0x7a318c3DaA9f21f8fc8238c65755eB0394Fbf189)\n +++ description: Allows the validator committee to vote on slashing a specific peer. Once a quorum is reached, it proposes a slash action to the Slasher.\n```\n\n```diff\n+ Status: CREATED\n contract SlashPayloadCloneable (eth:0x82c592b4Bb7E1f50f68E75d86743c3330beAaba4)\n +++ description: A template for specific slashing payload contracts deployed deterministically to encode a slashing action (who to slash and how much) that the Slasher executes.\n```\n\n```diff\n+ Status: CREATED\n contract Slasher (eth:0x91A3745c685c220595B997E53311EbF660144889)\n +++ description: The executor contract for penalties. It receives authorization to slash validator stakes, subject to an execution delay and a vetoer.\n```\n\n```diff\n+ Status: CREATED\n contract Aztec (eth:0xA27EC0006e59f245217Ff08CD52A7E8b169E62D2)\n +++ description: AZTEC token contract\n```\n\n```diff\n+ Status: CREATED\n contract GSE (eth:0xa92ecFD0E70c9cd5E5cd76c50Af0F7Da93567a4f)\n +++ description: Central staking hub. Validators (attesters) deposit stake here to register. It manages delegation of voting power and tracks which rollup instance validators are securing.\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0xBbB4aF368d02827945748b28CD4b2D42e4A37480)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StakingRegistry (eth:0xD938bE4A2cB41105Bc2FbE707dca124A2e5d0c80)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract FeeJuicePortal (eth:0xe05dc9D5969272831757181fFf1532B066254bf1)\n +++ description: A specific bridge allowing the Aztec token ('Fee Juice') to be deposited into L2 specifically for paying gas fees. AZTEC tokens accruing in this escrow can only be used as fees for sequencers.\n```\n\n```diff\n+ Status: CREATED\n contract Outbox (eth:0xf006c41097861AFeb18b05e586B921c081411Ee9)\n +++ description: Handles L2-to-L1 messaging. It stores Merkle roots of messages exiting the rollup, allowing users to prove inclusion and finalize withdrawals or actions on L1.\n```"
}
]
}
]
+19 -2
+4 -1
null
{
"unverifiedContracts": [],
"yellowWarning": "The bridge is paused during a [routing infrastructure upgrade](https://x.com/ButterNetworkio/status/2110682522564825340)."
}
+1 -1
{
"contracts": {
"addresses": {
"base": [
{
"name": "Butter AuthorityManager",
"isVerified": true,
"address": "base:0xACC31A6756B60304C03d6626fc98c062E4539CCA",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "base",
"description": "OpenZeppelin AccessManager-derived authority for Butter's restricted Bridge and FeeService functions. Its role configuration controls who can change bridge validation dependencies, relay and token settings, fee parameters, pause state, and implementation upgrades.\n* Roles:\n * **adminRole**: SafeL2",
"discoveryDrivenData": true
},
{
"name": "Butter Bridge",
"isVerified": true,
"address": "base:0x0000317Bec33Af037b5fAb2028f52d14658F6A56",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x0000000000000000000000000000000000000000"
],
"implementations": [
"base:0x862761D6D52E9e812A8c22E6e6A39E186e59a33d"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1730533685,
"transactionHash": "0x78c19b4c6a8113d02f4ef7fa4c9a9c8bb64cec8f7094d42043a9e4f826b103a6",
"implementations": [
"base:0xA8E357C8d4B4EC766E63bd1b73ECD4734eC3AAA4"
]
},
{
"timestamp": 1731387229,
"transactionHash": "0x0f790ff23e57c687aceeecc9922c677cf5b8c6c8883b5ba254e59757c90b6b43",
"implementations": [
"base:0x1FbC14ea7F2B6bf8DCaAF7eA3484E5C6F003dF0d"
]
},
{
"timestamp": 1754532237,
"transactionHash": "0x2419922339020bb0a82ba64dc820b3add2f4244fcdb8c87e17ace5649fb7f89c",
"implementations": [
"base:0x85E0d15EA312F999ad038e7f8E921D4743C12D43"
]
},
{
"timestamp": 1779342363,
"transactionHash": "0x1c21e691416e2adb3017aa56b4d21e434d6ad541124cd08ac85be6acd80fd784",
"implementations": [
"base:0x862761D6D52E9e812A8c22E6e6A39E186e59a33d"
]
},
{
"timestamp": 1779342481,
"transactionHash": "0x2d56c8102ef3cff82ebce01f64b4f33d299712db723c2992e5421b5bd12f72fa",
"implementations": [
"base:0x862761D6D52E9e812A8c22E6e6A39E186e59a33d"
]
}
],
"description": "Butter's Base bridge endpoint. Outbound transfers lock or burn assets and emit messages for the MAP relay chain; inbound transfers execute only after a LightNode-validated receipt proof for the configured MAP relay contract. The bridge can mint configured mintable tokens, release escrowed assets, and invoke receiver callbacks, so compromise of validation, relay configuration, or management authority can lead to loss of bridged funds.\n* Roles:\n * **authority**: Butter AuthorityManager",
"discoveryDrivenData": true
},
{
"name": "Butter MAP LightNode",
"isVerified": true,
"address": "base:0x0001805c0B57DBd48B5c5c26E237a135dDC678ae",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x7F4cBa3D7f20bF5146e4e5F8929b676CA05a5545"
],
"implementations": [
"base:0xF6366aD2361Df88E8815258948093C33d93d5374"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1712739617,
"transactionHash": "0xd3f44ff09982171f62d0c4bfd3513db8d49dd6d5012d81c51f45055e0ba89df4",
"implementations": [
"base:0x92649181CcF7775bE3b212fF2e02f8F57366bFF3"
]
},
{
"timestamp": 1725634383,
"transactionHash": "0x704ad684abf8327381ba478f02972d0af2b8d5a9c4c32eeab53e4c2e76a03814",
"implementations": [
"base:0xd5C45b145594a142605825DB3a4Df35450eDa901"
]
},
{
"timestamp": 1726460459,
"transactionHash": "0xe4fb346381ce69967553f7e83bc9cfef954c13ea62c4233bf538daffe233b733",
"implementations": [
"base:0x2C77024B4D7E2549C9303B46C0F95607472AbFCe"
]
},
{
"timestamp": 1727051593,
"transactionHash": "0x53838b8cb5bc53dc0fe72a902f3b51bbbdae31d23509e03657a28e90170c1495",
"implementations": [
"base:0xF6366aD2361Df88E8815258948093C33d93d5374"
]
}
],
"description": "Upgradeable MAP relay-chain light client used by Butter bridges. It verifies relay-chain headers with the stored BLS validator set and verifies receipt Merkle proofs against accepted headers. It is the destination-chain validation boundary for bridged messages.\n* Roles:\n * **admin**: EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
}
],
"discoveryDrivenData": true
},
{
"name": "Butter VerifyTool",
"isVerified": true,
"address": "base:0xc3393567DC2F1d071254E880c9f501641491471f",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "base",
"description": "Cryptographic and RLP/Merkle-proof helper contract called by the Butter MAP LightNode to validate relay-chain headers and transaction receipts.\n",
"discoveryDrivenData": true
},
{
"name": "Butter FeeService",
"isVerified": true,
"address": "base:0xfeE31a1FD7FcA0E05428ff751242e46F6D5769a6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "base",
"description": "Fee configuration contract used by Butter Bridge to calculate cross-chain message fees and select the fee recipient.\n* Roles:\n * **authority**: Butter AuthorityManager",
"discoveryDrivenData": true
}
]
},
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
]
},
"description": "Liquidity bridge and messaging protocol using the MAP relay chain (an alt-L1) and its light-client network to verify cross-chain messages.",
"intent": {
"color": "#F5A524",
"intentModel": {
"value": "Liquidity network",
"description": "Transfers are filled from bridge-owned liquidity on the destination chain after the message settles on the MAP relay chain. MAPO is the only token that is burned and minted instead."
},
"userRecovery": {
"value": "None",
"sentiment": "bad",
"description": "There is no onchain refund: once assets are locked on the source chain, no contract path returns them. Failed destination deliveries can be permissionlessly re-executed via retryMessageIn, and failed token payouts are swept to an admin-set failedReceiver address."
},
"solverAccess": {
"value": "Internal",
"sentiment": "bad",
"description": "There are no independent solvers or auctions: destination payouts come from bridge-held pool liquidity and only after settlement on the MAP relay chain. Anyone can trigger a payout by relaying the settled message with a receipt proof."
},
"settlement": {
"value": "Internal (sidechain)",
"sentiment": "bad",
"description": "Transfers settle through the MAP relay chain, an external proof-of-stake chain. Destination chains verify only BLS signatures of its validator set via onchain light clients."
}
},
"permissions": {
"base": {
"roles": [],
"actors": [
{
"id": "SafeL2",
"name": "SafeL2",
"description": "A Multisig with 3/5 threshold. \n* Can interact with Butter AuthorityManager\n * change AuthorityManager permissions and execute restricted Bridge and FeeService management operations ",
"accounts": [
{
"address": "base:0x9987463102993e177b107e0cE97a0420428D1999",
"type": "Contract",
"isVerified": true,
"name": "0x9987…1999",
"url": "https://basescan.org/address/0x9987463102993e177b107e0cE97a0420428D1999"
}
],
"chain": "base",
"references": [],
"participants": [
{
"address": "base:0xe8D95c201c20d759ed9429195F20767684Ebdf62",
"type": "EOA",
"isVerified": true,
"name": "0xe8D9…df62",
"url": "https://basescan.org/address/0xe8D95c201c20d759ed9429195F20767684Ebdf62"
},
{
"address": "base:0xe875f05e42ccFAFA8B64CA6344687E5cC60005Be",
"type": "EOA",
"isVerified": true,
"name": "0xe875…05Be",
"url": "https://basescan.org/address/0xe875f05e42ccFAFA8B64CA6344687E5cC60005Be"
},
{
"address": "base:0x378F2eC828DB2fD49D238c91e5A278cF30aBeb66",
"type": "EOA",
"isVerified": true,
"name": "0x378F…eb66",
"url": "https://basescan.org/address/0x378F2eC828DB2fD49D238c91e5A278cF30aBeb66"
},
{
"address": "base:0xEc624b9A64Be03E2DBAc8B78613A45955C855A87",
"type": "EOA",
"isVerified": true,
"name": "0xEc62…5A87",
"url": "https://basescan.org/address/0xEc624b9A64Be03E2DBAc8B78613A45955C855A87"
},
{
"address": "base:0xCE148A96B191C05414c9282c2C57e537100b40FE",
"type": "EOA",
"isVerified": true,
"name": "0xCE14…40FE",
"url": "https://basescan.org/address/0xCE148A96B191C05414c9282c2C57e537100b40FE"
}
],
"discoveryDrivenData": true
},
{
"id": "SafeL2",
"name": "SafeL2",
"description": "A Multisig with 2/3 threshold. \n* Can interact with Butter AuthorityManager\n * change AuthorityManager permissions and execute restricted Bridge and FeeService management operations ",
"accounts": [
{
"address": "base:0xAAAaEE7549a61282F2B4Ca1766f46249D9e71aaA",
"type": "Contract",
"isVerified": true,
"name": "0xAAAa…1aaA",
"url": "https://basescan.org/address/0xAAAaEE7549a61282F2B4Ca1766f46249D9e71aaA"
}
],
"chain": "base",
"references": [],
"participants": [
{
"address": "base:0xCE148A96B191C05414c9282c2C57e537100b40FE",
"type": "EOA",
"isVerified": true,
"name": "0xCE14…40FE",
"url": "https://basescan.org/address/0xCE148A96B191C05414c9282c2C57e537100b40FE"
},
{
"address": "base:0x0cDAe5da23b64bFeCD421d6487FFEABF6558828d",
"type": "EOA",
"isVerified": true,
"name": "0x0cDA…828d",
"url": "https://basescan.org/address/0x0cDAe5da23b64bFeCD421d6487FFEABF6558828d"
},
{
"address": "base:0x386ce1a187eC7329CFb8E467EB02FB07c698256A",
"type": "EOA",
"isVerified": false,
"isVerified": true,
"name": "0x386c…256A",
"url": "https://basescan.org/address/0x386ce1a187eC7329CFb8E467EB02FB07c698256A"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "base:0x7F4cBa3D7f20bF5146e4e5F8929b676CA05a5545",
"type": "EOA",
"isVerified": true,
"name": "0x7F4c…5545",
"url": "https://basescan.org/address/0x7F4cBa3D7f20bF5146e4e5F8929b676CA05a5545",
"displayName": "EOA 1"
}
],
"chain": "base",
"description": "* Can upgrade **with no delay**\n * Butter MAP LightNode \n* Can interact with Butter MAP LightNode\n * change the pending LightNode administrator or the VerifyTool used by proof verification ",
"discoveryDrivenData": true
}
]
}
},
"plugins": [
{
"plugin": "butternetwork",
"bridgeType": "burnAndMint"
},
{
"plugin": "butternetwork",
"bridgeType": "nonMinting"
}
],
"type": "intent"
}
+14 -0
[
{
"id": "7172ce00",
"date": "Fri, 16 Oct 2026 10:13:24 GMT",
"timestamp": 1792144328,
"description": "The Butter Bridge on Base is paused. The Safe at the same address paused the bridge on Ethereum, Arbitrum, Optimism, Polygon PoS and BSC within the same 2h. Linea and Avalanche have stayed paused since the May 2026 exploit. Outbound transfers and inbound message execution are halted. https://x.com/ButterNetworkio/status/2110682522564825340 .",
"isHighSeverity": true,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Butter Bridge (base:0x0000317Bec33Af037b5fAb2028f52d14658F6A56) [butternetwork/Bridge] {\n +++ description: Butter's Base bridge endpoint. Outbound transfers lock or burn assets and emit messages for the MAP relay chain; inbound transfers execute only after a LightNode-validated receipt proof for the configured MAP relay contract. The bridge can mint configured mintable tokens, release escrowed assets, and invoke receiver callbacks, so compromise of validation, relay configuration, or management authority can lead to loss of bridged funds.\n+++ description: Whether bridge transfers and message execution are paused. The authority can toggle this circuit breaker.\n+++ severity: HIGH\n values.paused:\n- false\n+ true\n }\n```"
}
]
},
{
"id": "c540e3bd",
"date": "Thu, 01 Oct 2026 11:10:27 GMT",
"timestamp": 1790850942,
"description": "7702 re-delegation of a multisig signer.",
"isHighSeverity": true,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (base:0x386ce1a187eC7329CFb8E467EB02FB07c698256A) {\n +++ description: None\n values.$implementation:\n- \"base:0xa845C74344Fc9405b1Fcf712f04668979573c1bf\"\n+ \"base:0xe40ccB2D94975c51bff0C004eFDfd9B3a5796fA4\"\n }\n```"
}
]
},
{
"id": "beb20722",
"date": "Wed, 05 Aug 2026 09:02:43 GMT",
"timestamp": 1785915246,
"description": "Butter interop protocol init disco: validation checks BLS sigs of a validator set on an external L1 (MAP Protocol). Validators can update the set with the discovered quorum. Each bridge tx verifies a merkle proof agains validator-signed block headers from the external L1. The L1 is supposed to run light clients of all participating chains.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract Butter Bridge (base:0x0000317Bec33Af037b5fAb2028f52d14658F6A56) [butternetwork/Bridge]\n +++ description: Butter's Base bridge endpoint. Outbound transfers lock or burn assets and emit messages for the MAP relay chain; inbound transfers execute only after a LightNode-validated receipt proof for the configured MAP relay contract. The bridge can mint configured mintable tokens, release escrowed assets, and invoke receiver callbacks, so compromise of validation, relay configuration, or management authority can lead to loss of bridged funds.\n```\n\n```diff\n+ Status: CREATED\n contract Butter MAP LightNode (base:0x0001805c0B57DBd48B5c5c26E237a135dDC678ae) [butternetwork/LightNode]\n +++ description: Upgradeable MAP relay-chain light client used by Butter bridges. It verifies relay-chain headers with the stored BLS validator set and verifies receipt Merkle proofs against accepted headers. It is the destination-chain validation boundary for bridged messages.\n```\n\n```diff\n+ Status: CREATED\n EOA (base:0x386ce1a187eC7329CFb8E467EB02FB07c698256A)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (base:0x9987463102993e177b107e0cE97a0420428D1999) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (base:0xAAAaEE7549a61282F2B4Ca1766f46249D9e71aaA) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Butter AuthorityManager (base:0xACC31A6756B60304C03d6626fc98c062E4539CCA) [butternetwork/AuthorityManager]\n +++ description: OpenZeppelin AccessManager-derived authority for Butter's restricted Bridge and FeeService functions. Its role configuration controls who can change bridge validation dependencies, relay and token settings, fee parameters, pause state, and implementation upgrades.\n```\n\n```diff\n+ Status: CREATED\n contract Butter VerifyTool (base:0xc3393567DC2F1d071254E880c9f501641491471f) [butternetwork/VerifyTool]\n +++ description: Cryptographic and RLP/Merkle-proof helper contract called by the Butter MAP LightNode to validate relay-chain headers and transaction receipts.\n```\n\n```diff\n+ Status: CREATED\n contract Butter FeeService (base:0xfeE31a1FD7FcA0E05428ff751242e46F6D5769a6) [butternetwork/FeeService]\n +++ description: Fee configuration contract used by Butter Bridge to calculate cross-chain message fees and select the fee recipient.\n```"
}
]
}
]
+22 -22
+22 -22
{
"sequencing": {
"name": "Transactions are ordered by Ethereum validators and builders",
"description": "Ethereum uses proof-of-stake with 12-second slots. In each slot, one validator index is pseudo-randomly selected to propose a block, with selection probability proportional to effective stake. The proposer can construct and order the execution payload locally or outsource construction to specialized builders through off-protocol software such as MEV-Boost. With outsourced construction, a builder chooses the transactions and their ordering inside a candidate payload, while the proposer chooses among the bids it receives and signs the winning block.\n\nValidators attest to blocks and apply fork choice, but the attestation committees do not co-produce or pre-approve the transactions in a block. Block-building rights are permissionless: anyone can deposit at least 32 ETH and enter the activation queue, subject to the protocol's effective-balance churn limit.",
"sequencingSpec": {
"type": "sequencer-set",
"blockTime": {
"value": "12 seconds"
},
"proposerRotationTime": {
"value": "12 seconds",
"description": "One validator index is selected for every slot with probability proportional to its effective balance. A missed proposal leaves the slot empty."
},
"sequencerCount": {
"value": "895,669 validator indices",
"secondLine": "41.52 M ETH",
"value": "837,150 validator indices",
"secondLine": "43.75 M ETH",
"description": "This snapshot is generated from Dune validator-day summaries and curated staking attribution. Lido stake is split among its node operators. Validator indices are not independent operators, and compounding validators can have different effective balances."
},
"blockProductionAccess": {
"value": "Open",
"sentiment": "good",
"description": "Anyone can deposit the minimum stake and join the activation queue without governance approval. Activation remains subject to protocol churn limits."
},
"stakePerValidator": {
"value": "32 ETH minimum, variable",
"description": "Compounding validators can have an effective balance of up to 2,048 ETH. Proposal probability is weighted by effective balance."
},
"rateLimit": {
"value": "256 ETH per epoch",
"description": "Validator activation is limited by an effective-balance churn cap. An epoch contains 32 slots and lasts 6m 24s."
},
"deterministicCrGadget": {
"value": "No",
"sentiment": "warning",
"description": "Ethereum mainnet does not currently enforce a forced-transaction queue or inclusion list. Inclusion-list proposals such as FOCIL are not live on mainnet."
},
"additionalCrGadgets": {
"value": "Local block building, diverse operators",
"sentiment": "warning",
"description": "A proposer can build locally to include public-mempool transactions instead of accepting an external builder bid. This bypasses censoring builders and relays, but users cannot compel the proposer to use the fallback. Combining a highly decentralized operator set with per-slot proposer rotation results in short inclusion delays under selective censorship."
},
"inclusionDelayChart": {
"type": "ethereumlike",
"validatorCount": 895669,
"validatorCount": 837150,
"slotSeconds": 12,
"target": 0.99,
"maxCensorFraction": 0.5,
"stakeDistribution": {
"stakeToken": "ETH",
"dateType": "snapshot",
"date": "2026-08-05",
"validatorCount": 895669,
"totalStake": 41527609,
"date": "2026-10-15",
"validatorCount": 837150,
"totalStake": 43758828,
"entities": [
{
"name": "Binance",
"stake": 3286314
"stake": 3290567
},
{
"name": "ether.fi",
"stake": 1670699
"name": "Kraken",
"stake": 1745806
},
{
"name": "Coinbase",
"stake": 1611518
"name": "ether.fi",
"stake": 1696173
},
{
"name": "Figment",
"stake": 1603374
"stake": 1566555
},
{
"name": "Kraken",
"stake": 1382551
"name": "Coinbase",
"stake": 1423367
},
{
"name": "Blockdaemon",
"stake": 1293324
"stake": 1337433
},
{
"name": "Everstake",
"stake": 944352
"name": "Kiln",
"stake": 834309
},
{
"name": "Kiln",
"stake": 722755
"name": "Everstake",
"stake": 822144
},
{
"name": "Upbit",
"stake": 611168
"stake": 642272
},
{
"name": "P2P.org",
"stake": 572913
"name": "OKX",
"stake": 612498
}
]
}
},
"inclusionDelayChartDescription": "The chart models live-chain selective censorship as independent stake-weighted proposer opportunities. It assumes an honest proposer can include the transaction, whether through an external builder or local block production. It excludes validator and builder concentration, finality, validator-set changes, inactivity leaks, and a full halt."
},
"censorshipResistance": "Ethereum has no deterministic forced-inclusion mechanism on mainnet. Its live-chain censorship resistance comes from rotating stake-weighted proposers and from a selected proposer retaining the option to construct a block locally instead of using an external builder.\n\n### Selective censorship\n\nA user can broadcast a transaction to the public mempool and wait for a proposer, or a builder selected by that proposer, that is willing to include it. Each non-censoring stake-weighted proposer slot is another probabilistic inclusion opportunity. An honest proposer can use local block production if its connected builders or relays censor the transaction, but the user cannot force this choice and there is no bounded protocol delay.\n\n### Blanket censorship\n\nIf the active proposer set continues producing blocks while coordinating to censor a transaction, Ethereum has no protocol queue or live inclusion list that the user can invoke to bypass it. Depositing 32 ETH only enters the activation queue and does not grant immediate proposal rights.\n\n### Walkaway\n\nIf enough validators go offline to stop finality while some blocks are still produced, inactivity penalties reduce the weight of offline validators until the remaining online stake can finalize again. If all block production stops, the chain cannot process new validator deposits or activations. Ethereum has no external settlement layer to exit to, so recovery from a complete halt requires existing validators to return or social coordination around a client restart or fork.",
"references": [
{
"title": "Ethereum.org - Block proposal",
"url": "https://ethereum.org/developers/docs/consensus-mechanisms/pos/block-proposal/"
},
{
"title": "Ethereum consensus specifications - Electra",
"url": "https://ethereum.github.io/consensus-specs/electra/beacon-chain/"
},
{
"title": "EIP-7251 - Increase the MAX_EFFECTIVE_BALANCE",
"url": "https://eips.ethereum.org/EIPS/eip-7251"
},
{
"title": "MEV-Boost",
"url": "https://github.com/flashbots/mev-boost"
},
{
"title": "Ethereum.org - Proof-of-stake rewards and penalties",
"url": "https://ethereum.org/developers/docs/consensus-mechanisms/pos/rewards-and-penalties/"
}
],
"risks": [
{
"category": "Users can be censored if",
"text": "proposers or their selected builders keep excluding their transactions, or block production halts and requires social recovery."
}
]
}
}
+2 -2
+1 -1
{
"adversaries": {
"promise": {
"protects": "recipient",
"text": "Hides which account a receiving Safe belongs to. The payer knows the address it was given; sender, asset, amount and where the funds go next are public."
},
"adversaries": [
{
"id": "publicObserver",
"label": "Public observer",
"description": "Everyone with a block explorer and some basic tools. Sees every public onchain event, but does no correlation beyond following links.",
"examples": "A curious counterparty, an employer, a journalist."
},
{
"id": "chainAnalyst",
"label": "Chain analyst",
"description": "Scrapes all public data and correlates it: timing, amounts, gas and wallet fingerprints, address clusters.",
"examples": "Chain analytics firms, ZachXBT, data brokers."
},
{
"id": "networkObserver",
"label": "Network observer",
"description": "Sits between the user and the services and sees traffic only: ISPs, VPNs, Tor exits, public RPCs and relayers. Learns IP addresses, timing, fingerprints and ciphertext. Services the operator runs count as the insider.",
"examples": "Infura or Alchemy, a Tornado relayer, a wallet vendor selling telemetry, Google captcha or analytics in the dapp frontend."
},
{
"id": "privilegedInsider",
"label": "Privileged insider",
"description": "Holds an operator role, custodies funds, receives keys or plaintext by design, or delivers the client: upgrade admin, custodian, view key holder, enclave operator, association set provider, hosted prover, registry, frontend host.",
"examples": "A compliance backdoor key, a DAO with an upgrade key, a KMS committee, an ASP operator, a custodial bridge."
},
{
"id": "futureAdversary",
"label": "Future adversary",
"description": "Harvest now, decrypt later. Holds every byte ever published and runs the known quantum attacks: elliptic curves, pairings and RSA fall. Hashes, symmetric ciphers and post-quantum schemes stand until an attack on them is known.",
"examples": "An intelligence agency archiving chain data today, then anyone once a break is public."
}
],
"fields": [
{
"id": "sender",
"label": "Sender",
"subject": "Sender",
"promiseLabel": "Sender privacy",
"description": "The Ethereum address that funds entered from, or that initiated a transfer."
},
{
"id": "recipient",
"label": "Recipient",
"subject": "Recipient",
"promiseLabel": "Recipient privacy",
"description": "Who receives the funds: the address they exit to, the receiver of a transfer, or whoever controls a one-time receiving address."
},
{
"id": "amount",
"label": "Amount",
"subject": "Amounts",
"promiseLabel": "Amount privacy",
"description": "The value moved."
},
{
"id": "asset",
"label": "Asset",
"subject": "Asset",
"promiseLabel": "Asset privacy",
"description": "Which token is moved."
},
{
"id": "linkage",
"label": "Link",
"subject": "Link",
"promiseLabel": "Link privacy",
"description": "Whether the entry and exit of the same funds, or sender and recipient of the same transfer, can be tied together."
}
],
"cells": {
"publicObserver": {
"sentiment": "good",
"exposureShort": "Each payment reaches a fresh Safe, and nothing onchain names the account behind it.",
"exposureContinued": "A send that draws from several of the user's Safes shows onchain that they belong together.",
"advice": "Generate a fresh address for each receive, label payments by payer and send from one label at a time, and send to destinations with no public link to the user.",
"sources": [
{
"title": "Counterfactual receiving Safe and one-time stealth signer",
"url": "https://docs.fluidkey.com/technical-documentation/technical-walkthrough/#3-stealth-accounts"
},
{
"title": "Safe owner and initialization data determine the address",
"url": "https://github.com/fluidkey/fluidkey-stealth-account-kit/blob/2a4ccfafef127165c11ba16fc16235c919698ec2/src/predictStealthSafeAddress.ts#L32-L104"
},
{
"title": "Labels limit which Safes fund a send",
"url": "https://docs.fluidkey.com/readme/labels/"
}
],
"id": "publicObserver",
"value": "Recipient private",
"alsoExposed": []
},
"chainAnalyst": {
"sentiment": "good",
"exposureShort": "At least 2,189 accounts have claimed Fluidkey's 'score' token, giving a lower bound of the anonymity set.",
"exposureShort": "At least 2,204 accounts have claimed Fluidkey's 'score' token, giving a lower bound of the anonymity set.",
"exposureContinued": "A Safe looks like any new address until Fluidkey's relayer spends from it or deposits its funds for auto-earn. A claimed score sits on its own stealth address that holds nothing else, and its amount grows partly with the account's balance.",
"advice": "Ask for a new address for each payment, also when it arrives on another chain.",
"sources": [
{
"contract": "FluidkeyScore",
"title": "Score holders, one address per claiming account"
},
{
"title": "Score claimed in the app, based partly on total balance",
"url": "https://docs.fluidkey.com/readme/score/"
},
{
"title": "The score accrues on a stealth address that holds nothing else",
"url": "https://www.fluidkey.com/blog/fluidkey-score"
},
{
"contract": "SmartAccountRelayer",
"title": "Fluidkey's relayer contract submits every send and auto-earn deposit"
},
{
"title": "Auto-earn setup records the Safe that installs it",
"url": "https://github.com/fluidkey/fluidkey-earn-module/blob/122cde19940d06b94c0027f4cd2e22e7fa19129a/src/FluidkeyEarnModule.sol#L243-L260"
},
{
"title": "Shared derivation path permits the same address on several chains",
"url": "https://docs.fluidkey.com/technical-documentation/technical-walkthrough/#3a-stealth-signer-derivation"
}
],
"id": "chainAnalyst",
"value": "Recipient private",
"alsoExposed": []
},
"networkObserver": {
"sentiment": "bad",
"exposureShort": "The app is closed source with no open alternative, so what it sends to third parties is up to Fluidkey and can change at any time.",
"exposureContinued": "Today, the web app reads the chain only through Fluidkey's servers and gives outside services just the user's login and username. A payer who looks up the user's name through a third-party RPC shows it that name and the new address.",
"sources": [
{
"title": "The app's content security policy lists every endpoint it contacts",
"url": "https://app.fluidkey.com"
},
{
"contract": "OffchainResolver",
"title": "Name lookups return the signed answer through the payer's RPC"
}
],
"id": "networkObserver",
"value": "Recipient exposed",
"alsoExposed": []
},
"privilegedInsider": {
"sentiment": "bad",
"exposureShort": "Fluidkey holds the viewing key, so it can regenerate every address and tie its activity to the user's account.",
"exposureContinued": "It also runs the closed-source app that handles the user's keys. With Google or Apple login on the web, Privy's code creates the signature the user's keys come from. Bank transfers add the user's verified identity, and Hide Trail shows the user's route to Houdini and two exchanges.",
"sources": [
{
"title": "Private viewing key shared with the service",
"url": "https://github.com/fluidkey/fluidkey-stealth-account-kit/blob/2a4ccfafef127165c11ba16fc16235c919698ec2/src/extractViewingPrivateKeyNode.ts#L14-L30"
},
{
"title": "Web keys are generated through a Privy embedded wallet",
"url": "https://docs.fluidkey.com/readme/account-set-up/"
},
{
"title": "Verification results and identity attributes",
"url": "https://www.fluidkey.com/privacy"
},
{
"title": "Hide Trail and its exchange intermediaries",
"url": "https://docs.fluidkey.com/readme/advanced-privacy/"
}
],
"id": "privilegedInsider",
"value": "Recipient exposed",
"alsoExposed": []
},
"futureAdversary": {
"sentiment": "good",
"exposureShort": "No announcement is published, so address derivations cannot be replayed from the chain alone.",
"exposureContinued": "Accounts created from a wallet signature reduce to that wallet's key plus a four-digit PIN.",
"advice": "Connect a new wallet that has never sent a transaction instead of logging in with Google or Apple.",
"sources": [
{
"title": "Stealth signer depends on a hashed shared secret",
"url": "https://github.com/fluidkey/fluidkey-stealth-account-kit/blob/2a4ccfafef127165c11ba16fc16235c919698ec2/src/generateStealthPrivateKey.ts#L11-L21"
},
{
"title": "Signature halves generate the viewing and spending keys",
"url": "https://github.com/fluidkey/fluidkey-stealth-account-kit/blob/2a4ccfafef127165c11ba16fc16235c919698ec2/src/generateKeysFromSignature.ts#L11-L36"
},
{
"title": "Wallet address and PIN determine the key-generation message",
"url": "https://github.com/fluidkey/fluidkey-stealth-account-kit/blob/2a4ccfafef127165c11ba16fc16235c919698ec2/src/utils/generateFluidkeyMessage.ts#L10-L32"
},
{
"title": "Recovery supports a four-digit PIN, defaulting to 0000",
"url": "https://github.com/fluidkey/sara/blob/e6e4fcd9e718722948b82fa0e819e0c4fca46e0d/src/components/GenerateKeysJourneyStep.tsx#L28-L90"
}
],
"id": "futureAdversary",
"value": "Recipient private",
"alsoExposed": []
}
}
},
"anonymitySet": {
"type": "not-applicable",
"description": "Fluidkey sends funds to individual stealth Safes instead of mixing deposits in a shared pool."
},
"attributes": [
{
"id": "stealthAddresses",
"label": "Stealth addresses",
"description": "Uses fresh, one-time recipient addresses to obscure who controls the receiving address."
},
{
"id": "anyAmount",
"label": "Any amount",
"description": "Deposits and withdrawals can have any size."
},
{
"id": "defi",
"label": "DeFi",
"description": "Interop with DeFi vaults through stealth Safes."
}
],
"category": {
"id": "stealthAddress",
"label": "Stealth address",
"description": "Payments land on fresh one-time addresses. Hides which recipient a payment is for."
},
"exitWindow": {
"value": "Infinite",
"sentiment": "good",
"orderHint": 9007199254740991,
"description": "The user's funds sit in Safes controlled only by their keys. The open recovery app finds and withdraws them without Fluidkey. Money in auto-earn vaults follows the vaults' withdrawal rules.",
"walkawayTest": {
"passed": false,
"reason": "Name lookups, new addresses in the app, finding the user's Safes and submitting sends all run on Fluidkey's servers."
}
},
"reproducibility": {
"value": "Partially reproducible",
"sentiment": "warning",
"description": "The web and mobile apps are closed source. The open stealth account kit and recovery app derive keys, verify addresses and recover funds without Fluidkey. The API, ENS gateway, indexer and relayer are closed."
},
"riskSummary": "## Funds can be stolen if\n1. the closed-source app is malicious or hacked and steals the user's spending keys.\n2. Privy's code or key share is compromised, for accounts created with Google or Apple login on the web.\n3. a Fluidkey signer returns an attacker's address when a payer looks up a Fluidkey name.\n4. Fluidkey's server marks a transfer as approved, and the open app signs it without showing the user.\n
\n## Funds can be lost if\n1. a user loses the login, wallet, PIN or backup needed to recover the spending key.\n2. Fluidkey's server gives out a wrong address, for example one built with a different Safe setup, and the user's keys cannot withdraw from it.\n3. an auto-earn vault loses funds or blocks withdrawals, or a service used by Hide Trail keeps the funds.\n
\n## Privacy can be lost if\n1. Fluidkey, or anyone who obtains its records, uses the viewing keys to link all Safes of every account (see privileged insider).\n2. Fluidkey changes its closed-source app to send account data to outside services, which users cannot check (see network observer).\n3. a user takes Hide Trail and Houdini or the exchanges link the route from their records (see privileged insider).\n4. Fluidkey's relayer marks every spend as a Fluidkey account's (see chain analyst).",
"tokens": [],
"trackedOn": [
"ethereum",
"base",
"arbitrum",
"optimism",
"polygonpos",
"gnosis"
],
"upgradesAndGovernance": {
"content": "Fluidkey changes its app, API, name gateway, indexer and relayer at will, without notice onchain.\n\nThe OffchainResolver is immutable. Its owner, the Fluidkey Resolver Multisig, can instantly change where name lookups are answered and which keys may sign the answers. A signer can return any address for a name. This affects new lookups only, since existing Safes stay under their owners' keys.\n\nThe Fluidkey Earn module is immutable on each chain. Its owner, the Fluidkey Earn Owner multisig, publishes vault sets and chooses the relayers, which can also add or remove other relayers. An existing Safe moves to a new vault set only by its own call."
}
}
+1 -1
{
"baseTimestamp": 1791549206,
"baseTimestamp": 1792144252,
"contractsDiscoDriven": false,
"hasDiscoUi": false,
"isDiscoDriven": false,
"permissionsDiscoDriven": false
}
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "Conduit Multisig 1",
"name": "Conduit Multisig 1",
"description": "A Multisig with 4/11 threshold. \n* Can upgrade **with no delay**\n * DelayedWETH [via: ProxyAdmin]\n * SuperchainConfig [via: ProxyAdmin]\n * OptimismMintableERC20Factory [via: ProxyAdmin]\n * SystemConfig [via: ProxyAdmin]\n * L1StandardBridge [via: ProxyAdmin]\n * DisputeGameFactory [via: ProxyAdmin]\n * L1CrossDomainMessenger [via: ProxyAdmin]\n * L1ERC721Bridge [via: ProxyAdmin]\n * OptimismPortal2 [via: ProxyAdmin]\n * AnchorStateRegistry [via: ProxyAdmin]\n* Can interact with AddressManager\n * set and change address mappings [via: ProxyAdmin]\n* Can interact with SystemConfig\n * it can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system \n* Can interact with DisputeGameFactory\n * set the dispute game implementation and initial bond for any game type ",
"accounts": [
{
"address": "eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746",
"type": "Contract",
"isVerified": true,
"name": "0x4a49…A746",
"url": "https://etherscan.io/address/0x4a4962275DF8C60a80d3a25faEc5AA7De116A746"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x9402c42dB162d5a0927c032136f40Cc9C71853F2",
"type": "EOA",
"isVerified": true,
"name": "0x9402…53F2",
"url": "https://etherscan.io/address/0x9402c42dB162d5a0927c032136f40Cc9C71853F2"
},
{
"address": "eth:0xcdC931935768c0562AfE989A366a3Dc4d52F4853",
"type": "EOA",
"isVerified": true,
"name": "0xcdC9…4853",
"url": "https://etherscan.io/address/0xcdC931935768c0562AfE989A366a3Dc4d52F4853"
},
{
"address": "eth:0xA9FCCc53F1c9095DA867Bd648683F8bdCcc78d09",
"type": "EOA",
"isVerified": true,
"name": "0xA9FC…8d09",
"url": "https://etherscan.io/address/0xA9FCCc53F1c9095DA867Bd648683F8bdCcc78d09"
},
{
"address": "eth:0x6BB4249858Ee19b6ABC071AD26bEe690baa783A6",
"type": "EOA",
"isVerified": true,
"name": "0x6BB4…83A6",
"url": "https://etherscan.io/address/0x6BB4249858Ee19b6ABC071AD26bEe690baa783A6"
},
{
"address": "eth:0x2103c69696CB2D3779f5445393808239034E911c",
"type": "EOA",
"isVerified": true,
"name": "0x2103…911c",
"url": "https://etherscan.io/address/0x2103c69696CB2D3779f5445393808239034E911c"
},
{
"address": "eth:0x81175155D85377C337d92f1FA52Da166C3A4E7Ac",
"type": "EOA",
"isVerified": true,
"name": "0x8117…E7Ac",
"url": "https://etherscan.io/address/0x81175155D85377C337d92f1FA52Da166C3A4E7Ac"
},
{
"address": "eth:0xA0737fea60F0601A192E3d2c98865A883ab0bda2",
"type": "EOA",
"isVerified": true,
"name": "0xA073…bda2",
"url": "https://etherscan.io/address/0xA0737fea60F0601A192E3d2c98865A883ab0bda2"
},
{
"address": "eth:0xF3313C48BD8E17b823d5498D62F37019dFEA647D",
"type": "EOA",
"isVerified": true,
"name": "0xF331…647D",
"url": "https://etherscan.io/address/0xF3313C48BD8E17b823d5498D62F37019dFEA647D"
},
{
"address": "eth:0xa0C600a6e85bf225958FFAcC70B5FDDF9A059038",
"type": "EOA",
"isVerified": true,
"name": "0xa0C6…9038",
"url": "https://etherscan.io/address/0xa0C600a6e85bf225958FFAcC70B5FDDF9A059038"
},
{
"address": "eth:0xefCf0c8faFB425997870f845e26fC6cA6EE6dD5C",
"type": "EOA",
"isVerified": true,
"name": "0xefCf…dD5C",
"url": "https://etherscan.io/address/0xefCf0c8faFB425997870f845e26fC6cA6EE6dD5C"
},
{
"address": "eth:0x4D8007a0E9f293e62E2b0F43C6Cf4C4B9e135BAe",
"type": "EOA",
"isVerified": true,
"name": "0x4D80…5BAe",
"url": "https://etherscan.io/address/0x4D8007a0E9f293e62E2b0F43C6Cf4C4B9e135BAe"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * AggchainECDSAMultisig ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xa4000bDD2bB92ce6750b31F1eeda47Bd1cB8e6e4",
"type": "EOA",
"isVerified": true,
"name": "0xa400…e6e4",
"url": "https://etherscan.io/address/0xa4000bDD2bB92ce6750b31F1eeda47Bd1cB8e6e4",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * replace the aggchainSigners and the signature threshold (which sign the state transitions of this aggchain), switch to the default signers of the AgglayerGateway, upgrade the aggchain to a newer rollup type of the same aggchain type registered in the AgglayerManager, set the aggchain metadata manager and transfer the aggchainManager role \n * set the trusted sequencer address ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x8839E742fd56ebC0d31d11DD5A2cA25aA61c54DA",
"type": "EOA",
"isVerified": true,
"name": "0x8839…54DA",
"url": "https://etherscan.io/address/0x8839E742fd56ebC0d31d11DD5A2cA25aA61c54DA",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with SystemConfig\n * Allowed to commit transactions from the current layer to the host chain ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0xaD06988A3aBD79DC9eD6c4E84d373Bd739E9d4b5",
"type": "EOA",
"isVerified": true,
"name": "0xaD06…d4b5",
"url": "https://etherscan.io/address/0xaD06988A3aBD79DC9eD6c4E84d373Bd739E9d4b5",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sign state transitions (replaces state validation for this aggchain) ",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+7 -7
+7 -7
{
"dataAvailability": [
{
"name": "Transaction data is stored on Gnosis Chain",
"description": "Gnosis Chain transaction data is published to Gnosis Chain and propagated by its validator and node network. The Ethereum bridge contracts do not verify data availability and only process bridge messages after bridge-validator signatures are submitted.",
"references": [
{
"title": "Gnosis specifications",
"url": "https://docs.gnosischain.com/about/specs/"
}
],
"risks": [
{
"category": "Funds can be frozen if",
"text": "transaction data is unavailable and bridge validators cannot reconstruct or sign the messages needed to exit."
}
]
}
],
"detailedDescription": "Gnosis chain in its current form does not derive or benefit from Ethereum's decentralisation apart from being developed as a close fork to re-use Ethereum tooling and infrastructure. Its censorship resistance relies on an open set of 52,352 active validator indices, although the clustering and stake distribution among entities is intransparent. Users who are censored selectively on an otherwise live network benefit from the fast 5s block time and non-committee-gated, stake-weighted proposer rotation, resulting in an inclusion probability of 99% in less than a minute even if up to 50% of the Gnosis stake is censoring them. There are also a few thousand validators who run custom 'shutter network' nodes that support threshold-encrypted transactions. For a case of active blanket censorship (>50% stake) by all current validators, users have no way apart from a hardfork to get their transactions included or save the chain. In the operator walkaway scenario, new sequencers could stake and join the set permissionlessly.",
"detailedDescription": "Gnosis chain in its current form does not derive or benefit from Ethereum's decentralisation apart from being developed as a close fork to re-use Ethereum tooling and infrastructure. Its censorship resistance relies on an open set of 32,790 active validator indices, although the clustering and stake distribution among entities is intransparent. Users who are censored selectively on an otherwise live network benefit from the fast 5s block time and non-committee-gated, stake-weighted proposer rotation, resulting in an inclusion probability of 99% in less than a minute even if up to 50% of the Gnosis stake is censoring them. There are also a few thousand validators who run custom 'shutter network' nodes that support threshold-encrypted transactions. For a case of active blanket censorship (>50% stake) by all current validators, users have no way apart from a hardfork to get their transactions included or save the chain. In the operator walkaway scenario, new sequencers could stake and join the set permissionlessly.",
"otherConsiderations": [
{
"name": "Encrypted mempool (Shutter Network Beta)",
"description": "A subset of Gnosis Chain validators is currently running a modified node version that supports threshold-encrypted transaction payloads. This allows to 'encrypt the mempool' and protect against malicious MEV and censorship with significant caveats. To encrypt the transaction, users have to either use custom wallets or a trusted encrypting rpc proxy. Decryption is handled by participating validators sharing their decryption key shares at the target block, allowing the proposer to decrypt the transaction and include and execute (or censor) it.",
"references": [
{
"title": "Shutterized Gnosis Chain Beta Release",
"url": "https://blog.shutter.network/shutterized-gnosis-chain-is-now-live/"
},
{
"title": "Gnosis Docs: Shutterized Gnosis Chain",
"url": "https://docs.gnosischain.com/shutterized-gc/"
}
],
"risks": []
},
{
"name": "Destination tokens can be upgradeable",
"description": "Omnibridge uses token factories to deploy wrapped ERC20 representations for assets native to the other chain. The token factory owner can change the implementation used for newly deployed wrapped tokens.",
"references": [
{
"title": "Omnibridge documentation",
"url": "https://docs.gnosischain.com/bridges/About%20Token%20Bridges/omnibridge"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a malicious or vulnerable wrapped token implementation is configured for newly bridged assets."
}
]
}
],
"sequencing": {
"name": "Transactions are ordered by Gnosis Chain validators",
"description": "Gnosis Chain uses a permissionless proof-of-stake validator set with stake-weighted proposer rotation and a 5 second slot time. The Ethereum-like committee-free block production architecture combined with the short block time lead to fast theoretical inclusion times, even with high rates of censorship. In contrast to Ethereum, blocks on Gnosis chain are usually built *locally*, meaning that validators do not delegate block production to specialised builders. There is no public information on the decentralisation of the Gnosis validator set.",
"sequencingSpec": {
"type": "sequencer-set",
"blockTime": {
"value": "5s"
},
"proposerRotationTime": {
"value": "5s",
"description": "Block production is not committee-based, sequencers rotate every block (epochs do not affect sequencer rotation)"
},
"sequencerCount": {
"value": "52,352 validator indices",
"secondLine": "300.64 K GNO",
"value": "32,790 validator indices",
"secondLine": "298.45 K GNO",
"description": "The active-ongoing validator count and effective stake snapshot are generated from the corresponding Gnosis Analytics endpoints for the same date. Validator indices are not independent operators."
},
"blockProductionAccess": {
"value": "Open",
"sentiment": "good"
},
"stakePerValidator": {
"value": "1 GNO minimum, variable",
"description": "stake-weighted block production rights, no maximum"
},
"rateLimit": {
"value": "~1-2 GNO per epoch",
"description": "defined by the consensus clients"
},
"deterministicCrGadget": {
"value": "No",
"sentiment": "warning"
},
"additionalCrGadgets": {
"value": "Shutter encrypted mempool beta",
"sentiment": "warning"
},
"inclusionDelayChart": {
"type": "ethereumlike",
"validatorCount": 52352,
"validatorCount": 32790,
"slotSeconds": 5,
"target": 0.99,
"maxCensorFraction": 0.5,
"stakeDistribution": {
"stakeToken": "GNO",
"dateType": "snapshot",
"date": "2026-08-05",
"validatorCount": 52352,
"totalStake": 300643
"date": "2026-10-15",
"validatorCount": 32790,
"totalStake": 298454
}
},
"inclusionDelayChartDescription": "The chart uses the Ethereum-style single-proposer formula with Gnosis-specific constants. It excludes finality, inactivity leaks, validator-set changes, hard forks, and blanket-censorship resistance gadgets."
},
"censorshipResistance": "Gnosis Chain does not have dedicated censorship resistance gadgets, but the sequencer set is open and there are no committees that can block inclusion.\n### Selective censorship\nEven with high percentages of stake censoring, users have very fast inclusion times. There are also initial tests of an out-of-protocol solution for encrypting transactions in the mempool (Shutterized Gnosis Chain).\n### Blanket censorship\nThere is no way to circumvent the validator set from Ethereum in a case of active censorship by all (or a majority of) validators.\n### Walkaway\nSince the validator set is open, new validators can join it in case validators passively stop block production. If all validators stop at the same time, a social recovery and hard fork would be necessary.",
"references": [
{
"title": "Gnosis Chain specifications",
"url": "https://docs.gnosischain.com/about/specs/"
}
],
"risks": [
{
"category": "Users can be censored if",
"text": "at least half of the active stake censors them, or if current validators coordinate blanket censorship and the chain requires social recovery."
}
]
},
"stateValidation": {
"categories": [
{
"title": "No state validation",
"description": "Gnosis Chain is an independent proof-of-stake chain. Ethereum contracts do not check whether Gnosis state transitions are valid. Cross-chain messages are executed when the relevant bridge contract receives enough validator signatures: 4/7 for the xDAI bridge and 4/7 for AMB and Omnibridge.",
"references": [
{
"title": "xDAI Bridge documentation",
"url": "https://docs.gnosischain.com/bridges/About%20Token%20Bridges/xdai-bridge"
},
{
"title": "Omnibridge documentation",
"url": "https://docs.gnosischain.com/bridges/About%20Token%20Bridges/omnibridge"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "bridge validators sign fraudulent messages that release more assets on Ethereum than were burned or locked on Gnosis."
},
{
"category": "Funds can be stolen if",
"text": "the Gnosis validator set finalizes an invalid chain state and the bridge validators sign messages derived from it."
},
{
"category": "Funds can be frozen if",
"text": "bridge validators stop signing messages or Gnosis Chain stops finalizing blocks."
}
]
}
]
}
}
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * Validium ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x5B8C9f36c8F84E49EC89Ae2881D920Ceb36D7F40",
"type": "EOA",
"isVerified": true,
"name": "0x5B8C…7F40",
"url": "https://etherscan.io/address/0x5B8C9f36c8F84E49EC89Ae2881D920Ceb36D7F40",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with PolygonDataCommittee\n * manage the members of the data availability committee and the threshold for valid commitments \n* Can interact with Validium\n * set core system parameters like the trusted sequencer and manage forced transactions/batches \n * sole address that can force batches ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x3451F208447c4D81346c10239eF92A1eB98b65C3",
"type": "EOA",
"isVerified": true,
"name": "0x3451…65C3",
"url": "https://etherscan.io/address/0x3451F208447c4D81346c10239eF92A1eB98b65C3",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with Validium\n * Allowed to commit transactions from the current layer to the host chain ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0xb8605297399baEb6628C9E8F5D3E52A056492cfe",
"type": "EOA",
"isVerified": true,
"name": "0xb860…2cfe",
"url": "https://etherscan.io/address/0xb8605297399baEb6628C9E8F5D3E52A056492cfe",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * PolygonDataCommittee [via: ProxyAdmin]",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+15 -1
+1 -1
{
"baseTimestamp": 1791896958,
"baseTimestamp": 1792144186,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "f81237dd",
"date": "Fri, 16 Oct 2026 10:35:07 GMT",
"timestamp": 1792144186,
"description": "Governance executed an L2 transaction on GRVT through the Bridgehub: https://tools.l2beat.com/decoder-new/?hash=0x6ecfb2cc39c3522d22e1083b402bbcd494385f32fe69e6615608b59a1f66d1a1&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 52\n+ 53\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 52\n+ 53\n }\n```"
}
]
},
{
"id": "77df2404",
"date": "Tue, 13 Oct 2026 13:07:39 GMT",
"timestamp": 1791896791,
"description": "Governance proposal to execute some L2 upgrade: https://tools.l2beat.com/decoder-new/?hash=0xc5846160840110f972ee0542b77cdf5744a3d374f58a308ded4b1de12b12131f&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 51\n+ 52\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 51\n+ 52\n }\n```"
}
]
},
{
"id": "74029814",
"date": "Fri, 02 Oct 2026 12:42:22 GMT",
"timestamp": 1790944823,
"description": "Executed this proposal: https://www.tally.xyz/gov/zksync/proposal/49883493212277767948924829453899549013679463473253620701602979414799679547598?govId=eip155%3A324%3A0x76705327e682F2d96943280D99464Ab61219e34f. Now each chain admin can increase the execution delay of its chain (`increaseChainExecutionDelay`), the owner can set it freely (`setChainExecutionDelay`). The effective delay for GRVT is tracked in `executionDelayGRVT` (still 3h).\n\nAlso adds a new `UPGRADER_ROLE` that can call `upgradeChainFromVersion()` through the VTL (forwarded to the diamond). Currently nobody holds the role for GRVT yet (tracked in `upgraderVTL`).",
"isHighSeverity": true,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_v31] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\n template:\n- \"shared-zk-stack/ValidatorTimelock_post29\"\n+ \"shared-zk-stack/ValidatorTimelock_v31\"\n sourceHashes.1:\n- \"0x5afea1019ac418e639ce9df65b9653bf0ca88ed81fb0abe0447e87328e39f10c\"\n+ \"0x51d6000b0e4437a2b99d13d332658fffb3da867cd56b05cbcb4bf4f954ff12ff\"\n description:\n- \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\"\n+ \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\"\n values.$implementation:\n- \"eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8\"\n+ \"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"\n values.$pastUpgrades.1:\n+ [\"2026-10-01T12:28:47.000Z\",\"0xdc4278c8b23d99f974a206dcaa1c1e20272c49095fa31eac842210ae97b435a8\",[\"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"]]\n values.$upgradeCount:\n- 1\n+ 2\n+++ severity: HIGH\n values.executionDelayGRVT:\n+ 10800\n+++ severity: HIGH\n values.executionDelayGRVT_fmt:\n+ \"3h\"\n values.MAX_EXECUTION_DELAY:\n+ 2592000\n values.OPTIONAL_UPGRADER_ADMIN_ROLE:\n+ \"0xa1426e789273bde4307f3302768d8e4eb615f0f4dea304f29cccd58ff644d640\"\n values.UPGRADER_ROLE:\n+ \"0x189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3\"\n errors:\n- {\"executionDelayGRVT\":\"Processing error occurred.\",\"executionDelayGRVT_fmt\":\"Processing error occurred.\"}\n fieldMeta.executionDelay.description:\n+ \"Ecosystem-wide minimum execution delay (in seconds), set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n fieldMeta.executionDelay_fmt.description:\n+ \"Ecosystem-wide minimum execution delay, set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n implementationNames.eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8:\n- \"ValidatorTimelock\"\n implementationNames.eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35:\n+ \"ValidatorTimelock\"\n }\n```"
}
]
},
{
"id": "cc5f6a14",
"date": "Fri, 04 Sep 2026 13:46:13 GMT",
"timestamp": 1788529510,
"description": "Governance proposal executed: https://tools.l2beat.com/decoder-new/?hash=0x91b14e9960db6c886e6b0294122f0c5b08398b371f83c83072cab0a00c3c153a&data=AwA. It uses metamask delegation manager to execute a ERC-20 approval + L2 bridgehub transaction that matches the standard grvt gov transaction (e.g. https://tools.l2beat.com/decoder-new/?hash=0x12872dd4becaa4cfd45173bad5b49b2d7d005450ce47e57d05e6346ca4039227&data=AwA).\n\nDecoding was done by chatgpt, our tooling does not support this `_executionCallDatas` format.",
"isHighSeverity": true,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 50\n+ 51\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 50\n+ 51\n }\n```\n\n```diff\n EOA (eth:0xC8552d52A6a8e92Ea37f3a305dE5e8dDbeB6e490) {\n +++ description: None\n proxyType:\n- \"EOA\"\n+ \"EIP7702 EOA\"\n sourceHashes:\n+ [\"0x1f44812af62d28f019e30e8eb2af596fb36c7db9d34576972c0405e110a6ef45\"]\n values:\n+ {\"$implementation\":\"eth:0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B\",\"delegationManager\":\"eth:0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3\",\"DOMAIN_VERSION\":\"1\",\"eip712Domain\":{\"fields\":\"0x0f\",\"name\":\"EIP7702StatelessDeleGator\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"eth:0xC8552d52A6a8e92Ea37f3a305dE5e8dDbeB6e490\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]},\"entryPoint\":\"eth:0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"getDeposit\":0,\"getDomainHash\":\"0xc536bcea32ae75ea8d0d6ee42dabc47d10f68ad66ef093bdae797c707b550513\",\"getNonce\":0,\"NAME\":\"EIP7702StatelessDeleGator\",\"PACKED_USER_OP_TYPEHASH\":\"0xbc37962d8bd1d319c95199bdfda6d3f92baa8903a61b32d5f4ec1f4b36a3bc18\",\"VERSION\":\"1.3.0\"}\n }\n```"
}
]
},
{
"id": "31e24746",
"date": "Fri, 21 Aug 2026 11:15:07 GMT",
"timestamp": 1787310844,
"description": "GrvtChainAdminMultisig upgraded the boojum verifiers to version v0.30.1 (the same version as zksync era). The new verifiers are not yet reproduced.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```\n\n```diff\n contract Diamond (eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) [shared-zk-stack/Diamond] {\n +++ 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 values.$pastUpgrades.11:\n+ [\"2026-08-20T08:51:47.000Z\",\"0x5de81926ab9765d4294a27405abf5bb82302196cce39c771c2005e9e7cb28611\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 11\n+ 12\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 128849018880\n+ 128849018881\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n+ \"eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierPlonk (eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierFflonk (eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraDualVerifier (eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9 or eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF depending on the supplied proof type.\n```"
}
]
},
{
"id": "60e1a804",
"date": "Mon, 17 Aug 2026 11:30:44 GMT",
"timestamp": 1786966181,
"description": "GrvtChainAdminMultisig upgraded the boojum verifiers to version v0.30.0 (one version behind zksync era). The new verifiers are not yet reproduced.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x9f5C39a2790f38542065E7854b90407371923375 or eth:0xd22cA89e8991FCE568456914c616d303e3142395 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x9f5C39a2790f38542065E7854b90407371923375) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xd22cA89e8991FCE568456914c616d303e3142395) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract Diamond (eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) [shared-zk-stack/Diamond] {\n +++ 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 values.$pastUpgrades.10:\n+ [\"2026-08-14T08:58:59.000Z\",\"0xba32e7c45d24c1e62cab727c08d3c0134210ba73c27299751060f9810f77427e\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 10\n+ 11\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051589\n+ 128849018880\n values.getSemverProtocolVersion.1:\n- 29\n+ 30\n values.getSemverProtocolVersion.2:\n- 5\n+ 0\n values.getVerifier:\n- \"eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e\"\n+ \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```"
}
]
},
{
"id": "d1472782",
"date": "Wed, 12 Aug 2026 09:57:21 GMT",
"timestamp": 1786528574,
"description": "Rotated two grvt ms members. \n\nUpgraded boojum verifier to v29.5, one version behind the latest zksync era verifier. It is not reproduced yet.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtChainAdminMultisig (eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0x293d3512083507664Ee5EDe44c0477f600e3A3BE\"\n+ \"eth:0x7C1B26554cF3A724613bF47B24f7C65F324702f9\"\n values.$members.1:\n- \"eth:0xe224125147fB0a3d0e1eC30Ed1573ed0632727CC\"\n+ \"eth:0x436694cf0Fb5BF20F96c1FBA1315B26B32f06F4b\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```\n\n```diff\n contract Diamond (eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) [shared-zk-stack/Diamond] {\n +++ 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 values.$pastUpgrades.9:\n+ [\"2026-08-11T09:38:47.000Z\",\"0xe93d3af0aeb00f811edd3077b734b5e76842842ea919aaeead2c19c4d0157a31\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 9\n+ 10\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051588\n+ 124554051589\n values.getSemverProtocolVersion.2:\n- 4\n+ 5\n values.getVerifier:\n- \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n+ \"eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x9f5C39a2790f38542065E7854b90407371923375 or eth:0xd22cA89e8991FCE568456914c616d303e3142395 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0x9f5C39a2790f38542065E7854b90407371923375) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xd22cA89e8991FCE568456914c616d303e3142395) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "82d2d628",
"date": "Wed, 05 Aug 2026 10:28:03 GMT",
"timestamp": 1785925620,
"description": "Executed 2 gov proposal with several upgrade transactions going to L2: https://tools.l2beat.com/decoder-new/?hash=0x12872dd4becaa4cfd45173bad5b49b2d7d005450ce47e57d05e6346ca4039227&data=AwA and https://tools.l2beat.com/decoder-new/?hash=0xc479b923d2614903ef0405eff70a31859ff0b516993d8d7872e93c4d2c14d2ee&data=AwA.\n\nAlso updated permissions and ownership of various contracts:\n- Expanded admin ms with 4 addresses 2/3 -> 4/7.\n- Created another ms with the same members as the admin for bridge-related contracts.\n- Governance, bridge and trx filterer ownership changed from EOA to 4/7 ms.",
"isHighSeverity": true,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtChainAdminMultisig (eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x293d3512083507664Ee5EDe44c0477f600e3A3BE\"\n values.$members.1:\n+ \"eth:0xe224125147fB0a3d0e1eC30Ed1573ed0632727CC\"\n values.$members.2:\n+ \"eth:0x79BfE9868a2613F3327FB2B9e3a39959165118F4\"\n values.$members.3:\n+ \"eth:0xC8552d52A6a8e92Ea37f3a305dE5e8dDbeB6e490\"\n values.$threshold:\n- 2\n+ 4\n values.multisigThreshold:\n- \"2 of 3 (67%)\"\n+ \"4 of 7 (57%)\"\n }\n```\n\n```diff\n contract GRVTTransactionFilterer (eth:0x3Cd52B238Ac856600b22756133eEb31ECb25109a) [N/A] {\n +++ description: None\n values.acAdmin.0:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x5CC33778d3aFa0979e6C59efEE27b73496c1B65c\"\n values.accessControl.DEFAULT_ADMIN_ROLE.members.0:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x5CC33778d3aFa0979e6C59efEE27b73496c1B65c\"\n }\n```\n\n```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 48\n+ 50\n+++ severity: HIGH\n values.owner:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5\"\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 48\n+ 50\n }\n```\n\n```diff\n contract GRVTBridgeProxy (eth:0xE17aeD2fC55f4A876315376ffA49FE6358113a65) [N/A] {\n +++ 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 values.owner:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x5CC33778d3aFa0979e6C59efEE27b73496c1B65c\"\n }\n```\n\n```diff\n contract Governance (eth:0xe81d64195072e4d09639b31Abb257d0096FEa9d1) [N/A] {\n +++ description: None\n values.owner:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5\"\n }\n```\n\n```diff\n EOA (eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"eth:0x3Cd52B238Ac856600b22756133eEb31ECb25109a\",\"description\":\"manage the whitelist of addresses.\",\"role\":\".acAdmin\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract GrvtBridgeAdminMultisig (eth:0x5CC33778d3aFa0979e6C59efEE27b73496c1B65c) [GnosisSafe]\n +++ description: None\n```"
}
]
},
{
"id": "5fae3b70",
"date": "Mon, 06 Jul 2026 10:04:22 GMT",
"timestamp": 1783332198,
"description": "Governance transaction from L1 -> L2: https://tools.l2beat.com/decoder-new/?hash=0xaca859883993dac67cc7049946aca729dd4287c2eefdc0fc2b465fdc1c2f6906&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 47\n+ 48\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 47\n+ 48\n }\n```"
}
]
},
{
"id": "2308cb89",
"date": "Wed, 01 Jul 2026 10:21:54 GMT",
"timestamp": 1782901251,
"description": "Governance transaction from L1 -> L2: https://tools.l2beat.com/decoder-new/?hash=0x188d7e979cc425fe64a3917bccf81bfc9601ecddc73be546a8d78410e3168846&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 46\n+ 47\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 46\n+ 47\n }\n```"
}
]
},
{
"id": "e5e851e7",
"date": "Thu, 18 Jun 2026 10:20:44 GMT",
"timestamp": 1781777978,
"description": "Upgraded boojum verifier to the latest version (same as zksync era). Also rotated admin ms member.",
"isHighSeverity": true,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtChainAdminMultisig (eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5) [GnosisSafe] {\n +++ description: None\n values.$members.1:\n- \"eth:0x29496817aB0820A5aDa4d5C656Ea8DF79Ba05F3A\"\n+ \"eth:0xE1Fd2981A9FbAAfBB73Cf253234516ECcaf4AFcE\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n contract GrvtZkEvmAdmin (eth:0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) [shared-zk-stack/ChainAdmin] {\n +++ description: A governance proxy that lets eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.6:\n+ {\"_protocolVersion\":124554051588,\"_upgradeTimestamp\":1781759700}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract Diamond (eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) [shared-zk-stack/Diamond] {\n +++ 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 values.$pastUpgrades.7:\n+ [\"2026-06-16T11:46:11.000Z\",\"0xedafd71bf96d2993dff23fca5d6d2e1ace52468cc10eed9e68cf260529156b7b\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$pastUpgrades.8:\n+ [\"2026-06-18T10:13:35.000Z\",\"0xa5133fa49c851e0a36f14a62515213fb1268e877a6ba35f0978f8c4e369074e9\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 7\n+ 9\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051586\n+ 124554051588\n values.getSemverProtocolVersion.2:\n- 2\n+ 4\n values.getVerifier:\n- \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n+ \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```"
}
]
},
{
"id": "5e48304a",
"date": "Tue, 16 Jun 2026 09:40:42 GMT",
"timestamp": 1781602758,
"description": "New scheduled tx targeting GBT (gas token) and contracts on L2: https://tools.l2beat.com/decoder-new/?hash=0xac73fadffe5aa2eb9b6d9b0ff4d9f1a4fa07eb147c3553d9e70718968bdb0139&data=AwA .",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtZkEvmAdmin (eth:0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) [shared-zk-stack/ChainAdmin] {\n +++ description: A governance proxy that lets eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.5:\n+ {\"_protocolVersion\":124554051587,\"_upgradeTimestamp\":1781074800}\n }\n```\n\n```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 45\n+ 46\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 45\n+ 46\n }\n```"
}
]
},
{
"id": "cc87ac25",
"date": "Wed, 20 May 2026 11:56:59 GMT",
"timestamp": 1779278156,
"description": "One gov-approved transaction to grvt L2: https://tools.l2beat.com/decoder-new/?hash=0x52609446fe9a7597280df6778648d25af4bf6f389765ef506f1f759d6e6d9b41&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 44\n+ 45\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 44\n+ 45\n }\n```"
}
]
},
{
"id": "6a817754",
"date": "Mon, 18 May 2026 10:00:55 GMT",
"timestamp": 1779097887,
"description": "Upgraded GRVT bridge to align with ZK stack state of the art: https://disco.l2beat.com/diff/eth:0xf7B67bDDb74B5eD3De49e1a6Da4D1d7460F00780/eth:0x7F9FCdaf7f65Fd5737De61d8bF5617A9AA8cFaF1. Changes are:\n\n- Interfaces upgraded to the same versions as zksync era has\n- Added bridging ETH\n- Switched to using standard L1AssetRouter\n- Also increased `L2_GAS_LIMIT_DEPOSIT` by the factor of two (the amount of gas that could be used to consume deposit trx on L2).",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GRVTBridgeProxy (eth:0xE17aeD2fC55f4A876315376ffA49FE6358113a65) [N/A] {\n +++ 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 sourceHashes.1:\n- \"0xf5ebf18a9d794626fa9f7aaa9d607e40298981f57ecc7ad15d41e03d8d756e4f\"\n+ \"0x5061251553a3aefbac60a53a4ca37e0da1a7979b38e33e09934e41db023506be\"\n values.$implementation:\n- \"eth:0xf7B67bDDb74B5eD3De49e1a6Da4D1d7460F00780\"\n+ \"eth:0x7F9FCdaf7f65Fd5737De61d8bF5617A9AA8cFaF1\"\n values.$pastUpgrades.1:\n+ [\"2026-05-14T06:34:35.000Z\",\"0xa6b1d1369e7a967309819edfff49e2b878bd97f58bcec51a1f9739c28f4163e3\",[\"eth:0xE9C6E19CaA23801B904335E20a7F2BDFE112CAF8\"]]\n values.$pastUpgrades.2:\n+ [\"2026-05-14T09:56:47.000Z\",\"0xbc38229556154bce739a2fc9f896f5360edb78dd453f44ed9b0284e9ac8d9a6d\",[\"eth:0x7F9FCdaf7f65Fd5737De61d8bF5617A9AA8cFaF1\"]]\n values.$upgradeCount:\n- 1\n+ 3\n values.L2_GAS_LIMIT_DEPOSIT:\n- 1200000\n+ 2400000\n values.ETH_TOKEN_ADDRESS:\n+ \"eth:0x0000000000000000000000000000000000000001\"\n implementationNames.eth:0xf7B67bDDb74B5eD3De49e1a6Da4D1d7460F00780:\n- \"GRVTBridgeProxy\"\n implementationNames.eth:0x7F9FCdaf7f65Fd5737De61d8bF5617A9AA8cFaF1:\n+ \"GRVTBridgeProxy\"\n }\n```"
}
]
},
{
"id": "cf6f885b",
"date": "Tue, 12 May 2026 09:45:26 GMT",
"timestamp": 1778579058,
"description": "Two gov-approved transactions to grvt L2: https://tools.l2beat.com/decoder-new/?hash=0x9c4720dca52947f376a85b3e00f1a8f4fd6866a2c128d5b6857fc77b604c832f&data=AwA, https://tools.l2beat.com/decoder-new/?hash=0xbb0d5b5663bccfe8a0b73211149f0a469e32f6dfaf348f88df8117623b26b2f5&data=AwA.\n\nConfig: use the new flattener implementation.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 42\n+ 44\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 42\n+ 44\n }\n```"
}
]
},
{
"id": "926af7eb",
"date": "Mon, 27 Apr 2026 13:19:10 GMT",
"timestamp": 1777295886,
"description": "Another trx to L2 via governance: https://tools.l2beat.com/decoder-new/?hash=0xeab9b42383251bb874b226fd6b1089763b429c60250c33b3c25dcfa24d1e64a2&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 41\n+ 42\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 41\n+ 42\n }\n```"
}
]
},
{
"id": "b1bc4c18",
"date": "Fri, 17 Apr 2026 09:37:51 GMT",
"timestamp": 1776418606,
"description": "A trx on L2 initiated via governance: https://tools.l2beat.com/decoder-new/?hash=0x6ac04a9181161aa6dcb9ad7ffc754e2cb8ffa280aa3b3c33848b8540fdd79bb6&data=AwA. Probably some L2 upgrade.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 40\n+ 41\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 40\n+ 41\n }\n```"
}
]
},
{
"id": "d51a0e22",
"date": "Wed, 08 Apr 2026 08:26:26 GMT",
"timestamp": 1775636722,
"description": "Two trxs on L2 initiated via the governance: https://tools.l2beat.com/decoder-new/?hash=0xa7d217b096fe11b935388c891811da7e9ac0c6c6e83ffa2b3fcc58d70660fabc&data=AwA and https://tools.l2beat.com/decoder-new/?hash=0xfe93a52cfe69dbe665ca3f562787dd5e47a81e5e3bc906b4bc20fe20d876596e&data=AwA.\nAlso rotated MS member.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtChainAdminMultisig (eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5) {\n +++ description: None\n values.$members.0:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x4738eDE7Fb2d3E5596867cf60c668779de7CE8C4\"\n }\n```\n\n```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 38\n+ 40\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 38\n+ 40\n }\n```"
}
]
},
{
"id": "8d67ffc2",
"date": "Wed, 01 Apr 2026 15:52:56 GMT",
"timestamp": 1775058712,
"description": "Another proposal https://tools.l2beat.com/decoder-new/?hash=0xc6e49ea96a2f8e5fa8c305588783139488df8199772c6e20c673f8fdd14f9c3a&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 37\n+ 38\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 37\n+ 38\n }\n```"
}
]
},
{
"id": "1a1717aa",
"date": "Mon, 30 Mar 2026 14:33:28 GMT",
"timestamp": 1774881143,
"description": "Another gov L2 upgrade: https://tools.l2beat.com/decoder-new/?hash=0x2ca64710efc0b4f21461ce86f124ce6cb1f7a8d5744cbf5c8d817fb6a36cfa9a&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 36\n+ 37\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 36\n+ 37\n }\n```"
}
]
},
{
"id": "89821927",
"date": "Wed, 25 Mar 2026 10:40:21 GMT",
"timestamp": 1774435159,
"description": "Gov upgrade on L2: https://tools.l2beat.com/decoder-new/?hash=0x923c6a7d1189587410f25b5dbbc9e1a424a86c9da4b0f6a92d84d0e75e062b0f&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 34\n+ 36\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 34\n+ 36\n }\n```"
}
]
},
{
"id": "d7ccc933",
"date": "Mon, 16 Mar 2026 12:10:51 GMT",
"timestamp": 1773662988,
"description": "Another upgrade on L2: https://tools.l2beat.com/decoder-new/?hash=0x7c1018383fb3497a7357518c6a597bf2e79feb352e370e3cea32b4e94ec9f634&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 33\n+ 34\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 33\n+ 34\n }\n```"
}
]
},
{
"id": "de5c499b",
"date": "Fri, 06 Mar 2026 11:04:40 GMT",
"timestamp": 1772795015,
"description": "Executed a proposal to make an upgrade on L2: https://tools.l2beat.com/decoder-new/?hash=0xe22d2c318e36651439ad07df6c3938a27c1bce71b982d13f8fc4593d8d317e03&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 32\n+ 33\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 32\n+ 33\n }\n```"
}
]
},
{
"id": "a0980859",
"date": "Wed, 04 Mar 2026 14:43:10 GMT",
"timestamp": 1772635326,
"description": "Executed a proposal to upgrade a contract on grvt L2: https://tools.l2beat.com/decoder-new/?hash=0x2d3eef6212fe42c32e6abf289e6f32c3ecb13393a1b82bc018333d62aabbb01d&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 31\n+ 32\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 31\n+ 32\n }\n```"
}
]
},
{
"id": "40fc8367",
"date": "Wed, 25 Feb 2026 16:56:38 GMT",
"timestamp": 1772038530,
"description": "Executed two proposals that made calls on L2: https://tools.l2beat.com/decoder-new/?hash=0x0c5a83ed2a512b4bef5e9df04b3059482d300133cd754caf275e7cc8d05d6057&data=AwA, https://tools.l2beat.com/decoder-new/?hash=0x5d5d42502fdf2db575600e2d4f87d7f7a150d10d7570a8a21a0244299396d9b6&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 29\n+ 31\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 29\n+ 31\n }\n```"
}
]
},
{
"id": "1dbe4c28",
"date": "Mon, 16 Feb 2026 14:18:48 GMT",
"timestamp": 1771251447,
"description": "Upgrade executed (target is some diamond contract on L2).",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 28\n+ 29\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 28\n+ 29\n }\n```"
}
]
},
{
"id": "a87ef236",
"date": "Mon, 02 Feb 2026 13:19:32 GMT",
"timestamp": 1770038308,
"description": "Governance executed some trx on L2, looks like some upgrade: https://tools.l2beat.com/decoder-new/?hash=0x90577ac34e4cc9776d6509341ba2cd1cf5e4c64f15b3d475e7eeca885b34e24a&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 27\n+ 28\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 27\n+ 28\n }\n```"
}
]
},
{
"id": "40017e40",
"date": "Wed, 28 Jan 2026 10:55:22 GMT",
"timestamp": 1769597659,
"description": "Scheduled and executed a transaction that probably performed some upgrade on grvt L2: https://tools.l2beat.com/decoder-new/?hash=0xfe573f7a11dfb09da81066b411bb043ee09c55b605c5d120dafcb7663aaa460d&data=AwA. I have not found a link to grvt block explorer to verify it on L2.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 26\n+ 27\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 26\n+ 27\n }\n```"
}
]
},
{
"id": "7deab157",
"date": "Tue, 20 Jan 2026 11:09:25 GMT",
"timestamp": 1768907301,
"description": "Scheduled and executed two proposals (https://etherscan.io/tx/0xb2ed029ae644311610a5c4bc16245ce1212b47763c5046f862e2e1bd8423a6a8#eventlog, https://etherscan.io/tx/0xdecb938d6e5f7e75786e854ded5d52eda3bc916cf536950baa6ba5f5167ae830#eventlog). These proposals initiated calls to L2.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 24\n+ 26\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 24\n+ 26\n }\n```"
}
]
},
{
"id": "9b5065b2",
"date": "Mon, 29 Dec 2025 10:53:11 GMT",
"timestamp": 1767005527,
"description": "Upgraded GRVT to zk stack v 29.2.",
"isHighSeverity": true,
"changeCount": 51,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock2 (eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ 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```\n\n```diff\n contract GrvtZkEvmAdmin (eth:0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) {\n +++ description: A governance proxy that lets eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.4:\n+ {\"_protocolVersion\":124554051586,\"_upgradeTimestamp\":1762315292}\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ 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```\n\n```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 21\n+ 24\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 21\n+ 24\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract Diamond (eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ 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 sourceHashes.1:\n- \"0xbc2380479529743c27e6ab96cdf08210319fadcbca0856cf50c6b1b54bf8437f\"\n+ \"0xc7513302e4e09efc907df5e645d9f8037b1d02409f9a9089f61061c8951ef1ff\"\n values.$implementation.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.$implementation.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.$implementation.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.$implementation.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.$pastUpgrades.6:\n+ [\"2025-12-26T20:29:47.000Z\",\"0x85dba00b8749a3bac358b1b3c0c62dc9b3eb7d00b5e0da81955fad460360395b\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 6\n+ 7\n values.facetAddresses.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.facetAddresses.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.facetAddresses.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.facetAddresses.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.facets.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"getRollupDAManager()\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2MessageInclusionShared(uint256,uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusionShared(uint256,uint256,uint256,bytes32,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusionShared(uint256,uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\"]\n values.facets.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ [\"precommitSharedBridge(address,uint256,bytes)\",\"commitBatchesSharedBridge(address,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(address,uint256,uint256,bytes)\",\"revertBatchesSharedBridge(address,uint256)\",\"proveBatchesSharedBridge(address,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n+ \"0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n+ \"0x010005f73e7c299ed73db937843643bdc276cbc2cc8596287e1e0cf3afc60252\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+ \"0x01000d8bae37b82f311186426184866498b357f41d7a02ced11f3e3fbfbacd63\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084288\n+ 124554051586\n values.getSemverProtocolVersion.1:\n- 28\n+ 29\n values.getSemverProtocolVersion.2:\n- 0\n+ 2\n values.getVerifier:\n- \"eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n+ \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n values.validators.0:\n- \"eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n values.validators.1:\n- \"eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\"\n values.getRollupDAManager:\n+ \"eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45\"\n implementationNames.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- \"AdminFacet\"\n implementationNames.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- \"GettersFacet\"\n implementationNames.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- \"MailboxFacet\"\n implementationNames.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- \"ExecutorFacet\"\n implementationNames.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ \"AdminFacet\"\n implementationNames.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ \"GettersFacet\"\n implementationNames.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ \"MailboxFacet\"\n implementationNames.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n reference ProxyAdmin (eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n reference RollupDAManager (eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45)\n +++ description: None\n```"
}
]
},
{
"id": "7eae4d8a",
"date": "Mon, 22 Dec 2025 12:46:00 GMT",
"timestamp": 1766407495,
"description": "New template was applied, changes are old.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 5\n+ 21\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 5\n+ 21\n }\n```"
}
]
},
{
"id": "0c073a95",
"date": "Mon, 14 Jul 2025 12:47:16 GMT",
"timestamp": 1752497236,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 13,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract GrvtChainAdminMultisig (0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GRVTTransactionFilterer (0x3Cd52B238Ac856600b22756133eEb31ECb25109a)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock2 (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract Governance (0xbdC07D62fA117B195E579c2e299f037b158E7335)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract GRVTBridgeProxy (0xE17aeD2fC55f4A876315376ffA49FE6358113a65)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract Governance (0xe81d64195072e4d09639b31Abb257d0096FEa9d1)\n +++ description: None\n```"
}
]
},
{
"id": "2207049e",
"date": "Fri, 11 Jul 2025 12:47:12 GMT",
"timestamp": 1752238032,
"description": "standard v28 upgrade.",
"isHighSeverity": true,
"changeCount": 42,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract GRVTTransactionFilterer (0x3Cd52B238Ac856600b22756133eEb31ECb25109a) {\n +++ description: None\n values.accessControl.L2_TX_SENDER_ROLE.members.5:\n+ \"0xbdC07D62fA117B195E579c2e299f037b158E7335\"\n values.whitelistedSender.5:\n+ \"0xbdC07D62fA117B195E579c2e299f037b158E7335\"\n }\n```\n\n```diff\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.3:\n+ {\"_protocolVersion\":120259084288,\"_upgradeTimestamp\":1738089540}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ 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 values.$implementation.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.$implementation.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.$implementation.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.$implementation.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.$pastUpgrades.5:\n+ [\"2025-07-11T04:56:47.000Z\",\"0x50482c232f408d2e39fcaf30df79e587c0859e2f36e476b9d4deda048e3f1a45\",[\"0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 5\n+ 6\n values.facetAddresses.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.facetAddresses.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.facetAddresses.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.facetAddresses.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n+ \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+ \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n+ \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 115964116992\n+ 120259084288\n values.getSemverProtocolVersion.1:\n- 27\n+ 28\n values.getVerifier:\n- \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n+ \"0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- \"ExecutorFacet\"\n implementationNames.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ \"AdminFacet\"\n implementationNames.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ \"GettersFacet\"\n implementationNames.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ \"MailboxFacet\"\n implementationNames.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to 0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or 0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract Governance (0xbdC07D62fA117B195E579c2e299f037b158E7335)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "ac1ce280",
"date": "Wed, 21 May 2025 12:10:12 GMT",
"timestamp": 1747829412,
"description": "v27 upgrade complete.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ 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 values.getL2SystemContractsUpgradeBatchNumber:\n- 3199\n+ 0\n values.getL2SystemContractsUpgradeBlockNumber:\n- 3199\n+ 0\n values.getL2SystemContractsUpgradeTxHash:\n- \"0x7ead5e3e088ce4a6d739a729550f453bdc83ca10104b1916d9b0ee8722946d4a\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "9a9d04f9",
"date": "Mon, 19 May 2025 15:25:39 GMT",
"timestamp": 1747668339,
"description": "v27 upgrade to standard contracts. Same filterer.",
"isHighSeverity": true,
"changeCount": 53,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.2:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1729793768}\n values.upgradeTimestamps.1._protocolVersion:\n- 107374182400\n+ 115964116992\n values.upgradeTimestamps.1._upgradeTimestamp:\n- 1729793768\n+ 1738089540\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ 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 sourceHashes.4:\n- \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n+ \"0xb3038139dce45f6c1aaedbfb1b321c230301b2d004da109b39a17d827c6b0e4f\"\n sourceHashes.3:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x1f9f7cd43747f5bcf879d544be0baca967245540e70592112cdc90c360f30486\"\n sourceHashes.2:\n- \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.1:\n- \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n+ \"0xab7812fa82c483b781aee4c2339b860fcdee4033de1e243370a77a20fc353ddc\"\n sourceHashes.0:\n- \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n+ \"0xca793d2e01bb37722ba48f56662e8602e693d6808ed9587867c2bac43c3dec25\"\n values.$implementation.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$implementation.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$implementation.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$implementation.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.4:\n+ [\"2025-03-24T09:29:47.000Z\",\"0xd442b78fb0d2ccccea791f60de88cc4d7214fff454429c552be59c8778cbb9f3\",[\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]]\n values.$pastUpgrades.3.2.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$pastUpgrades.3.2.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$pastUpgrades.3.2.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$pastUpgrades.3.2.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.3.1:\n- \"0xd442b78fb0d2ccccea791f60de88cc4d7214fff454429c552be59c8778cbb9f3\"\n+ \"2025-05-19T07:17:59.000Z\"\n values.$pastUpgrades.3.0:\n- \"2025-03-24T09:29:47.000Z\"\n+ \"0xf21daa11dac7aa6d48bcf8f8d76d8c43900db3022d183389a8e16858cabdd0cb\"\n values.$upgradeCount:\n- 4\n+ 5\n values.facetAddresses.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.facetAddresses.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.facetAddresses.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.facetAddresses.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n+ \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+ \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n values.getL2SystemContractsUpgradeBatchNumber:\n- 0\n+ 3199\n values.getL2SystemContractsUpgradeBlockNumber:\n- 0\n+ 3199\n values.getL2SystemContractsUpgradeTxHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x7ead5e3e088ce4a6d739a729550f453bdc83ca10104b1916d9b0ee8722946d4a\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 111669149696\n+ 115964116992\n values.getSemverProtocolVersion.0:\n- 26\n+ 27\n values.getVerifier:\n- \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n+ \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n values.getL2EvmEmulatorBytecodeHash:\n+ \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n implementationNames.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- \"AdminFacet\"\n implementationNames.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- \"GettersFacet\"\n implementationNames.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- \"MailboxFacet\"\n implementationNames.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- \"ExecutorFacet\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "2ad6c925",
"date": "Wed, 02 Apr 2025 15:08:26 GMT",
"timestamp": 1743606506,
"description": "shared zk stack contracts upgraded to v26: config related changes for all children chains.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ 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```"
}
]
},
{
"id": "d1f64a14",
"date": "Tue, 25 Mar 2025 10:35:35 GMT",
"timestamp": 1742898935,
"description": "Upgrade diamond to protocol v26.",
"isHighSeverity": true,
"changeCount": 69,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract undefined (0x0b114d4675Cb79507e68F2616c93e124122c6ef0) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n contract GRVTTransactionFilterer (0x3Cd52B238Ac856600b22756133eEb31ECb25109a) {\n +++ description: None\n values.accessControl.L2_TX_SENDER_ROLE.members.4:\n+ \"0xE17aeD2fC55f4A876315376ffA49FE6358113a65\"\n values.accessControl.L2_TX_SENDER_ROLE.members.3:\n- \"0xE17aeD2fC55f4A876315376ffA49FE6358113a65\"\n+ \"0xe81d64195072e4d09639b31Abb257d0096FEa9d1\"\n values.accessControl.L2_TX_SENDER_ROLE.members.2:\n- \"0xe81d64195072e4d09639b31Abb257d0096FEa9d1\"\n+ \"0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n values.accessControl.L2_TX_SENDER_ROLE.members.1:\n- \"0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"0x8829AD80E425C646DAB305381ff105169FeEcE56\"\n values.whitelistedSender.4:\n+ \"0xE17aeD2fC55f4A876315376ffA49FE6358113a65\"\n values.whitelistedSender.3:\n- \"0xE17aeD2fC55f4A876315376ffA49FE6358113a65\"\n+ \"0xe81d64195072e4d09639b31Abb257d0096FEa9d1\"\n values.whitelistedSender.2:\n- \"0xe81d64195072e4d09639b31Abb257d0096FEa9d1\"\n+ \"0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n values.whitelistedSender.1:\n- \"0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"0x8829AD80E425C646DAB305381ff105169FeEcE56\"\n }\n```\n\n```diff\n contract undefined (0x58D14960E0a2be353eDdE61ad719196A2b816522) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.1:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1729793768}\n values.upgradeTimestamps.0._protocolVersion:\n- 107374182400\n+ 111669149696\n values.upgradeTimestamps.0._upgradeTimestamp:\n- 1729793768\n+ 1738089540\n }\n```\n\n```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ 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 template:\n- \"shared-zk-stack/Diamond\"\n+ \"shared-zk-stack/Diamond_v26\"\n sourceHashes.4:\n- \"0xdf47c6cd4fcffcfa4a670e1544e2391acc365cd7fd9b8e7583d58b28dff50c40\"\n+ \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n sourceHashes.3:\n- \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.2:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n sourceHashes.1:\n- \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n+ \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n sourceHashes.0:\n- \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n+ \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n description:\n- \"The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\"\n+ \"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 issuedPermissions.3:\n+ {\"permission\":\"interact\",\"to\":\"0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5\",\"description\":\"manage fees, apply predefined upgrades and manage censorship through a TransactionFilterer (ChainAdmin role).\",\"via\":[{\"address\":\"0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D\"}]}\n issuedPermissions.2.to:\n- \"0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5\"\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n issuedPermissions.2.description:\n- \"manage fees, apply predefined upgrades and manage censorship through a TransactionFilterer (ChainAdmin role).\"\n+ \"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\"\n issuedPermissions.2.via.0:\n- {\"address\":\"0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D\"}\n values.$implementation.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.$implementation.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.$implementation.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.$implementation.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.$pastUpgrades.3:\n+ [\"2025-03-24T09:29:47.000Z\",\"0xd442b78fb0d2ccccea791f60de88cc4d7214fff454429c552be59c8778cbb9f3\",[\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.daMode:\n- 1\n values.facetAddresses.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.facetAddresses.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.facetAddresses.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.facetAddresses.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getBaseTokenBridge:\n- \"0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB\"\n values.getL2BootloaderBytecodeHash:\n- \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n+ \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n+ \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 107374182400\n+ 111669149696\n values.getSemverProtocolVersion.0:\n- 25\n+ 26\n values.getStateTransitionManager:\n- \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n values.getVerifier:\n- \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n+ \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n values.txFilterer:\n- [\"0x3Cd52B238Ac856600b22756133eEb31ECb25109a\"]\n values.validators.1:\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n values.getBaseTokenAssetId:\n+ \"0x655d55f4565c6519b560cef52332055302203549acc24d046264c1271fa724ae\"\n values.getChainId:\n+ 325\n values.getChainTypeManager:\n+ \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n+++ severity: HIGH\n values.getDAValidatorPair:\n+ [\"0x907b30407249949521Bf0c89A43558dae200146A\",\"0xFa30EAe30351A83809657299F6Cad9557c232e8C\"]\n values.getSettlementLayer:\n+ \"0x0000000000000000000000000000000000000000\"\n+++ description: This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\n+++ severity: HIGH\n values.getTransactionFilterer:\n+ \"0x3Cd52B238Ac856600b22756133eEb31ECb25109a\"\n values.isPriorityQueueActive:\n+ false\n fieldMeta.txFilterer:\n- {\"severity\":\"HIGH\",\"description\":\"This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\"}\n fieldMeta.getProtocolVersion.severity:\n- \"MEDIUM\"\n+ \"HIGH\"\n fieldMeta.getAdmin:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getTransactionFilterer:\n+ {\"severity\":\"HIGH\",\"description\":\"This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\"}\n fieldMeta.getDAValidatorPair:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getPendingAdmin:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getPubdataPricingMode:\n+ {\"severity\":\"HIGH\",\"description\":\"0 - Rollup, 1 - Validium\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```"
}
]
},
{
"id": "cf676239",
"date": "Tue, 11 Mar 2025 08:00:15 GMT",
"timestamp": 1741680015,
"description": "ValidatorTimelock governance transfer for ZIP 5.",
"isHighSeverity": false,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract undefined (0x3701fB675bCd4A85eb11A2467628BBe193F6e6A8)\n +++ description: None\n```\n\n```diff\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E) {\n +++ 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 values.owner:\n- \"0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897\"\n+ \"0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ProtocolUpgradeHandler (0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897)\n +++ description: The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2, emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n```\n\n```diff\n- Status: DELETED\n contract SecurityCouncil (0xBDFfCC71FE84020238F2990a6D2954e87355De0D)\n +++ description: Custom Multisig implementation that has a general threshold of 9 but also specific thresholds for upgrade approvals (6) or soft freezes (3).\n```\n\n```diff\n- Status: DELETED\n contract Guardians (0xD677e09324F8Bb3cC64F009973693f751c33A888)\n +++ description: Custom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n```\n\n```diff\n- Status: DELETED\n contract EmergencyUpgradeBoard (0xdEFd1eDEE3E8c5965216bd59C866f7f5307C9b29)\n +++ description: A custom contract allowing a 3/3 of 0xBDFfCC71FE84020238F2990a6D2954e87355De0D, 0xbC1653bd3829dfEc575AfC3816D4899cd103B51c and 0xD677e09324F8Bb3cC64F009973693f751c33A888 to `executeEmergencyUpgrade()` via the 0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897.\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract undefined (0x3701fB675bCd4A85eb11A2467628BBe193F6e6A8)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProtocolUpgradeHandler (0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897)\n +++ description: The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2, emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n```\n\n```diff\n+ Status: CREATED\n contract SecurityCouncil (0xBDFfCC71FE84020238F2990a6D2954e87355De0D)\n +++ description: Custom Multisig implementation that has a general threshold of 9 but also specific thresholds for upgrade approvals (6) or soft freezes (3).\n```\n\n```diff\n+ Status: CREATED\n contract Guardians (0xD677e09324F8Bb3cC64F009973693f751c33A888)\n +++ description: Custom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n```\n\n```diff\n+ Status: CREATED\n contract EmergencyUpgradeBoard (0xdEFd1eDEE3E8c5965216bd59C866f7f5307C9b29)\n +++ description: A custom contract allowing a 3/3 of 0xBDFfCC71FE84020238F2990a6D2954e87355De0D, 0xbC1653bd3829dfEc575AfC3816D4899cd103B51c and 0xD677e09324F8Bb3cC64F009973693f751c33A888 to `executeEmergencyUpgrade()` via the 0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897.\n```"
}
]
},
{
"id": "2121984c",
"date": "Mon, 03 Feb 2025 14:33:48 GMT",
"timestamp": 1738593228,
"description": "[ZIP-002] 'Reduce the execution delay from 21 hours to 3 hours' executed.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E) {\n +++ 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 description:\n- \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 21h.\"\n+ \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\"\n values.executionDelay:\n- 75600\n+ 10800\n values.executionDelay_fmt:\n- \"21h\"\n+ \"3h\"\n }\n```"
}
]
},
{
"id": "7ea87a0d",
"date": "Thu, 30 Jan 2025 10:43:17 GMT",
"timestamp": 1738233797,
"description": "upgrade completed.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ description: The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.getL2SystemContractsUpgradeBatchNumber:\n- 533\n+ 0\n values.getL2SystemContractsUpgradeBlockNumber:\n- 533\n+ 0\n values.getL2SystemContractsUpgradeTxHash:\n- \"0xd3086b71c95ce83e7f3d30ab1890ada2334695a05b65715e56f42d96b22c8674\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "455fac79",
"date": "Tue, 28 Jan 2025 06:33:43 GMT",
"timestamp": 1738046023,
"description": "upgrade to protocol version 25 (see zksync era for changelog).\n\ndiscodrive!",
"isHighSeverity": false,
"changeCount": 35,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.0:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1729793768}\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0x70F3FBf8a427155185Ec90BED8a3434203de9604)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ description: The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.4:\n- \"0xe521f6bd6250a2c92af323768ad8a2274cc334725b5ed8960d8421f063fc3285\"\n+ \"0xdf47c6cd4fcffcfa4a670e1544e2391acc365cd7fd9b8e7583d58b28dff50c40\"\n sourceHashes.3:\n- \"0x419cee160f60572fc9189007ec7c1e3c13e54d80bf1e78f837bc8fa001519685\"\n+ \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n sourceHashes.2:\n- \"0xd272def5b4e3f0a68e3019d7d40675ca6d3e3fc35500e9aafe864bce8c697de2\"\n+ \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n sourceHashes.1:\n- \"0x9ae32beaa5dc29055f75d3cd08fbec35ed3eee3e2ff35de263a78f7d63c610f9\"\n+ \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n values.$implementation.3:\n- \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n+ \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n values.$implementation.2:\n- \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n+ \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n values.$implementation.1:\n- \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n+ \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n values.$implementation.0:\n- \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n+ \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n values.$pastUpgrades.2:\n+ [\"2025-01-28T05:38:11.000Z\",\"0x733c89da487edb502dc65f5115ada9cef6b44128a85cf36adbde4821e13abe31\",[\"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\",\"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\",\"0x5575218cECd370E1d630d1AdB03c254B0B376821\",\"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.facetAddresses.3:\n- \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n+ \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n values.facetAddresses.2:\n- \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n+ \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n values.facetAddresses.1:\n- \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n+ \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n values.facetAddresses.0:\n- \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n+ \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n values.facets.0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0xE60E94fCCb18a81D501a38959E532C0A85A1be89:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0xCDB6228b616EEf8Df47D69A372C4f725C43e718C:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xaD193aDe635576d8e9f7ada71Af2137b16c64075:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n+ [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n+ [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n+ [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n+ [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x010008e742608b21bf7eb23c1a9d0602047e3618b464c9b59c0fba3b3d7ab66e\"\n+ \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x01000563374c277a2c1e34659a2a1e87371bb6d852ce142022d497bfb50b9e32\"\n+ \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n values.getL2SystemContractsUpgradeBatchNumber:\n- 0\n+ 533\n values.getL2SystemContractsUpgradeBlockNumber:\n- 0\n+ 533\n values.getL2SystemContractsUpgradeTxHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0xd3086b71c95ce83e7f3d30ab1890ada2334695a05b65715e56f42d96b22c8674\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: MEDIUM\n values.getProtocolVersion:\n- 103079215106\n+ 107374182400\n values.getSemverProtocolVersion.2:\n- 2\n+ 0\n values.getSemverProtocolVersion.1:\n- 24\n+ 25\n values.getVerifier:\n- \"0x70F3FBf8a427155185Ec90BED8a3434203de9604\"\n+ \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: Implements the ZK proof verification logic.\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 21h.\n```"
}
]
},
{
"id": "641fa953",
"date": "Fri, 10 Jan 2025 11:53:07 GMT",
"timestamp": 1736509987,
"description": "Initial discovery of a standard ZK stack Validium.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract GrvtChainAdminMultisig (0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GRVTTransactionFilterer (0x3Cd52B238Ac856600b22756133eEb31ECb25109a)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x70F3FBf8a427155185Ec90BED8a3434203de9604)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GRVTBaseToken (0xAB3B124052F0389D1cbED221d912026Ac995bb95)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GRVTBridgeProxy (0xE17aeD2fC55f4A876315376ffA49FE6358113a65)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Governance (0xe81d64195072e4d09639b31Abb257d0096FEa9d1)\n +++ description: None\n```"
}
]
}
]
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * AggchainECDSAMultisig ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xc68685bBcb11F05ACE5117f9693a073be5fb55Ca",
"type": "EOA",
"isVerified": true,
"name": "0xc686…55Ca",
"url": "https://etherscan.io/address/0xc68685bBcb11F05ACE5117f9693a073be5fb55Ca",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * replace the aggchainSigners and the signature threshold (which sign the state transitions of this aggchain), switch to the default signers of the AgglayerGateway, upgrade the aggchain to a newer rollup type of the same aggchain type registered in the AgglayerManager, set the aggchain metadata manager and transfer the aggchainManager role \n * set the trusted sequencer address ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0xd4eb5EcF61FF2eCFA9069787ED14820E9A53bF2b",
"type": "EOA",
"isVerified": true,
"name": "0xd4eb…bF2b",
"url": "https://etherscan.io/address/0xd4eb5EcF61FF2eCFA9069787ED14820E9A53bF2b",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sign state transitions (replaces state validation for this aggchain) ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+19 -19
+4 -18
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "Polygon Multisig 2",
"name": "Polygon Multisig 2",
"description": "A Multisig with 3/6 threshold. \nMember of Katana vaultBridge Multisig 1, Katana vaultBridge Multisig 2, Katana vaultBridge Multisig 3.\n* Can upgrade **with no delay**\n * L1ERC721Bridge [via: ProxyAdmin]\n * L1CrossDomainMessenger [via: ProxyAdmin]\n * OptimismPortal2 [via: ProxyAdmin]\n * SuperchainConfig [via: ProxyAdmin]\n * L1StandardBridge [via: ProxyAdmin]\n * DelayedWETH [via: ProxyAdmin]\n * OptimismMintableERC20Factory [via: ProxyAdmin]\n * AnchorStateRegistry [via: ProxyAdmin]\n * SystemConfig [via: ProxyAdmin]\n * DisputeGameFactory [via: ProxyAdmin]\n* Can interact with AggchainFEP\n * change verification keys (aggregationVkey, rangeVkeyCommitment, aggchainVkey) and the rollupConfigHash, manage multisig signers for permissioned state transitions and change critical configs for state validation \n * toggle the 'optimisticMode' \n* Can interact with SystemConfig\n * it can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system \n* Can interact with DisputeGameFactory\n * set the dispute game implementation and initial bond for any game type \n* Can interact with AddressManager\n * set and change address mappings [via: ProxyAdmin]",
"accounts": [
{
"address": "eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC",
"type": "Contract",
"isVerified": true,
"name": "0xd067…98CC",
"url": "https://etherscan.io/address/0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x21a2Db679b4e9f6183E3143cc7Dcfef955b400a6",
"type": "EOA",
"isVerified": true,
"name": "0x21a2…00a6",
"url": "https://etherscan.io/address/0x21a2Db679b4e9f6183E3143cc7Dcfef955b400a6"
},
{
"address": "eth:0x6f8CC67A7F6c61E4047aC4870583899CC1fBD08a",
"type": "EOA",
"isVerified": true,
"name": "0x6f8C…D08a",
"url": "https://etherscan.io/address/0x6f8CC67A7F6c61E4047aC4870583899CC1fBD08a"
},
{
"address": "eth:0x4A658D678804DD0a4Ad0A2c26AD4F4EB2517154b",
"type": "EOA",
"isVerified": true,
"name": "0x4A65…154b",
"url": "https://etherscan.io/address/0x4A658D678804DD0a4Ad0A2c26AD4F4EB2517154b"
},
{
"address": "eth:0xA697656ac37ee1f59A8a5318F61601B4C208960D",
"type": "EOA",
"isVerified": true,
"name": "0xA697…960D",
"url": "https://etherscan.io/address/0xA697656ac37ee1f59A8a5318F61601B4C208960D"
},
{
"address": "eth:0x73D8846324B30477EA3Ac055589e40F39DE497F8",
"type": "EOA",
"isVerified": true,
"name": "0x73D8…97F8",
"url": "https://etherscan.io/address/0x73D8846324B30477EA3Ac055589e40F39DE497F8"
},
{
"address": "eth:0xa43901c63f7702C407378E55E0d0EB4064a2AE31",
"type": "EOA",
"isVerified": true,
"name": "0xa439…AE31",
"url": "https://etherscan.io/address/0xa43901c63f7702C407378E55E0d0EB4064a2AE31"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * AggchainFEP ",
"discoveryDrivenData": true
},
{
"id": "Katana Foundation Engineering/Security Multisig",
"name": "Katana Foundation Engineering/Security Multisig",
"description": "A Multisig with 2/5 threshold. \n* Can interact with SuperchainConfig\n * pause the OptimismPortal and L1CrossDomainMessenger of Katana (pauses expire automatically after the configured pause expiry) ",
"accounts": [
{
"address": "eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a",
"type": "Contract",
"isVerified": true,
"name": "0x4e98…C38a",
"url": "https://etherscan.io/address/0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "Katana vaultBridge Multisig 1",
"name": "Katana vaultBridge Multisig 1",
"description": "A Multisig with 2/3 threshold. \n* Can upgrade **with no delay**\n * vbWBTC [via: ProxyAdmin]\n * vbETH [via: ProxyAdmin]\n * vbUSDT [via: ProxyAdmin]",
"accounts": [
{
"address": "eth:0x2De242e27386e224E5fbF110EA8406d5B70740ec",
"type": "Contract",
"isVerified": true,
"name": "0x2De2…40ec",
"url": "https://etherscan.io/address/0x2De242e27386e224E5fbF110EA8406d5B70740ec"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x4082A1D91A353b16e112FbE36b55d222bF417919",
"type": "EOA",
"isVerified": true,
"name": "0x4082…7919",
"url": "https://etherscan.io/address/0x4082A1D91A353b16e112FbE36b55d222bF417919"
},
{
"address": "eth:0x9d851f8b8751c5FbC09b9E74E6e68E9950949052",
"type": "Contract",
"isVerified": true,
"name": "Polygon Labs Engineering/Security Multisig",
"url": "#Polygon Labs Engineering/Security Multisig"
},
{
"address": "eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC",
"type": "Contract",
"isVerified": true,
"name": "Polygon Multisig 2",
"url": "#Polygon Multisig 2"
}
],
"discoveryDrivenData": true
},
{
"id": "Polygon Labs Engineering/Security Multisig",
"name": "Polygon Labs Engineering/Security Multisig",
"description": "A Multisig with 2/7 threshold. \nMember of Katana vaultBridge Multisig 1, Katana vaultBridge Multisig 2, Katana vaultBridge Multisig 3.\n* Can upgrade **with no delay**\n * MigrationManager [via: ProxyAdmin]",
"accounts": [
{
"address": "eth:0x9d851f8b8751c5FbC09b9E74E6e68E9950949052",
"type": "Contract",
"isVerified": true,
"name": "0x9d85…9052",
"url": "https://etherscan.io/address/0x9d851f8b8751c5FbC09b9E74E6e68E9950949052"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xFB2a738AE435610354b132c4a4ee647558f663eb",
"type": "EOA",
"isVerified": true,
"name": "0xFB2a…63eb",
"url": "https://etherscan.io/address/0xFB2a738AE435610354b132c4a4ee647558f663eb"
},
{
"address": "eth:0x6Ab87a62E250A5EB09a53Fca832B9Bda480c3890",
"type": "EOA",
"isVerified": true,
"name": "0x6Ab8…3890",
"url": "https://etherscan.io/address/0x6Ab87a62E250A5EB09a53Fca832B9Bda480c3890"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
}
],
"discoveryDrivenData": true
},
{
"id": "Katana vaultBridge Multisig 2",
"name": "Katana vaultBridge Multisig 2",
"description": "A Multisig with 2/3 threshold. \n* Can upgrade **with no delay**\n * vbUSDS [via: ProxyAdmin]",
"accounts": [
{
"address": "eth:0xA8C31B2edd84c654d06d626383f4154D1E40C5Ff",
"type": "Contract",
"isVerified": true,
"name": "0xA8C3…C5Ff",
"url": "https://etherscan.io/address/0xA8C31B2edd84c654d06d626383f4154D1E40C5Ff"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7",
"type": "Contract",
"isVerified": true,
"name": "Yearn Strategist Multisig",
"url": "#Yearn Strategist Multisig"
},
{
"address": "eth:0x9d851f8b8751c5FbC09b9E74E6e68E9950949052",
"type": "Contract",
"isVerified": true,
"name": "Polygon Labs Engineering/Security Multisig",
"url": "#Polygon Labs Engineering/Security Multisig"
},
{
"address": "eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC",
"type": "Contract",
"isVerified": true,
"name": "Polygon Multisig 2",
"url": "#Polygon Multisig 2"
}
],
"discoveryDrivenData": true
},
{
"id": "Katana vaultBridge Multisig 3",
"name": "Katana vaultBridge Multisig 3",
"description": "A Multisig with 2/3 threshold. \n* Can upgrade **with no delay**\n * vbUSDC [via: ProxyAdmin]",
"accounts": [
{
"address": "eth:0xf4F2f5F6bAdBE05433C4604320ecC56BbECBC04E",
"type": "Contract",
"isVerified": true,
"name": "0xf4F2…C04E",
"url": "https://etherscan.io/address/0xf4F2f5F6bAdBE05433C4604320ecC56BbECBC04E"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x9d851f8b8751c5FbC09b9E74E6e68E9950949052",
"type": "Contract",
"isVerified": true,
"name": "Polygon Labs Engineering/Security Multisig",
"url": "#Polygon Labs Engineering/Security Multisig"
},
{
"address": "eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC",
"type": "Contract",
"isVerified": true,
"name": "Polygon Multisig 2",
"url": "#Polygon Multisig 2"
},
{
"address": "eth:0x827e86072B06674a077f592A531dcE4590aDeCdB",
"type": "Contract",
"isVerified": true,
"name": "Katana Steakhouse Financial / Morpho Multisig",
"url": "#Katana Steakhouse Financial / Morpho Multisig"
}
],
"discoveryDrivenData": true
},
{
"id": "Yearn Strategist Multisig",
"name": "Yearn Strategist Multisig",
"description": "A Multisig with 3/8 threshold. \nMember of Katana vaultBridge Multisig 2.\n",
"description": "A Multisig with 3/6 threshold. \nMember of Katana vaultBridge Multisig 2.\n",
"accounts": [
{
"address": "eth:0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7",
"type": "Contract",
"isVerified": true,
"name": "0x1638…0ff7",
"url": "https://etherscan.io/address/0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x5E5D6f849Fa86c058f148E9D3f643C8F4c43f20b",
"type": "EOA",
"isVerified": true,
"name": "0x5E5D…f20b",
"url": "https://etherscan.io/address/0x5E5D6f849Fa86c058f148E9D3f643C8F4c43f20b"
},
{
"address": "eth:0x5250077c42627cBd112988f32D482acC9ff40bDB",
"type": "EOA",
"isVerified": true,
"name": "0x5250…0bDB",
"url": "https://etherscan.io/address/0x5250077c42627cBd112988f32D482acC9ff40bDB"
},
{
"address": "eth:0xC357eE8a8DdE88Dd5a3Ea54847Adef6846A28c51",
"type": "EOA",
"isVerified": true,
"name": "0xC357…8c51",
"url": "https://etherscan.io/address/0xC357eE8a8DdE88Dd5a3Ea54847Adef6846A28c51"
},
{
"address": "eth:0xFcc3796370e1538F8cC60bec19A8be5457f2C74F",
"type": "EOA",
"isVerified": true,
"name": "0xFcc3…C74F",
"url": "https://etherscan.io/address/0xFcc3796370e1538F8cC60bec19A8be5457f2C74F"
},
{
"address": "eth:0xFafFb75e14faFf9f11315E44a2E54A22872c7a34",
"type": "EOA",
"isVerified": true,
"name": "0xFafF…7a34",
"url": "https://etherscan.io/address/0xFafFb75e14faFf9f11315E44a2E54A22872c7a34"
},
{
"address": "eth:0x80a3887BA60F76acAb48EE4aEAd0a71A0774A8B2",
"type": "EOA",
"isVerified": true,
"name": "0x80a3…A8B2",
"url": "https://etherscan.io/address/0x80a3887BA60F76acAb48EE4aEAd0a71A0774A8B2"
},
{
"address": "eth:0xB13C8f58a233607569D2F8411B912148aeC4aEe2",
"type": "EOA",
"isVerified": true,
"name": "0xB13C…aEe2",
"url": "https://etherscan.io/address/0xB13C8f58a233607569D2F8411B912148aeC4aEe2"
},
{
"address": "eth:0x0Dca0FDC170baA4CA9c1dCd37Ffe01f97bCfD504",
"type": "EOA",
"isVerified": true,
"name": "0x0Dca…D504",
"url": "https://etherscan.io/address/0x0Dca0FDC170baA4CA9c1dCd37Ffe01f97bCfD504"
}
],
"discoveryDrivenData": true
},
{
"id": "Safe",
"name": "Safe",
"description": "A Multisig with 1/4 threshold. ",
"accounts": [
{
"address": "eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50",
"type": "Contract",
"isVerified": true,
"name": "0x261a…3B50",
"url": "https://etherscan.io/address/0x261a25ec6c396389B75B6b22BD4A8227070E3B50"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x3e86A8bcAF0A96DD16Ec8160532DA13b2C0f6e21",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "#Safe"
},
{
"address": "eth:0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c",
"type": "EOA",
"isVerified": true,
"name": "0x227D…238c",
"url": "https://etherscan.io/address/0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c"
},
{
"address": "eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756",
"type": "Contract",
"isVerified": true,
"name": "Katana yieldRecipient Mulsitig",
"url": "#Katana yieldRecipient Mulsitig"
},
{
"address": "eth:0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "#Safe"
}
],
"discoveryDrivenData": true
},
{
"id": "Safe",
"name": "Safe",
"description": "A Multisig with 2/4 threshold. \nMember of Safe.\n",
"accounts": [
{
"address": "eth:0x3e86A8bcAF0A96DD16Ec8160532DA13b2C0f6e21",
"type": "Contract",
"isVerified": true,
"name": "0x3e86…6e21",
"url": "https://etherscan.io/address/0x3e86A8bcAF0A96DD16Ec8160532DA13b2C0f6e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x23CDc4Bc7713A1a8cb2adBbb5BdfCd135F74Bd50",
"type": "EOA",
"isVerified": true,
"name": "0x23CD…Bd50",
"url": "https://etherscan.io/address/0x23CDc4Bc7713A1a8cb2adBbb5BdfCd135F74Bd50"
},
{
"address": "eth:0xeA54bCaD99a8Cdd385c903236149Da9585B89ed3",
"type": "EOA",
"isVerified": true,
"name": "0xeA54…9ed3",
"url": "https://etherscan.io/address/0xeA54bCaD99a8Cdd385c903236149Da9585B89ed3"
},
{
"address": "eth:0x64512f695BFf25FD1bCD0F88EbC45Af144f374CA",
"type": "EOA",
"isVerified": true,
"name": "0x6451…74CA",
"url": "https://etherscan.io/address/0x64512f695BFf25FD1bCD0F88EbC45Af144f374CA"
},
{
"address": "eth:0xe969B418F3F5EF9E2E96d05C05Cc1e14f111aE8b",
"type": "EOA",
"isVerified": true,
"name": "0xe969…aE8b",
"url": "https://etherscan.io/address/0xe969B418F3F5EF9E2E96d05C05Cc1e14f111aE8b"
}
],
"discoveryDrivenData": true
},
{
"id": "Conduit Multisig 1",
"name": "Conduit Multisig 1",
"description": "A Multisig with 4/11 threshold. ",
"accounts": [
{
"address": "eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746",
"type": "Contract",
"isVerified": true,
"name": "0x4a49…A746",
"url": "https://etherscan.io/address/0x4a4962275DF8C60a80d3a25faEc5AA7De116A746"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x9402c42dB162d5a0927c032136f40Cc9C71853F2",
"type": "EOA",
"isVerified": true,
"name": "0x9402…53F2",
"url": "https://etherscan.io/address/0x9402c42dB162d5a0927c032136f40Cc9C71853F2"
},
{
"address": "eth:0xcdC931935768c0562AfE989A366a3Dc4d52F4853",
"type": "EOA",
"isVerified": true,
"name": "0xcdC9…4853",
"url": "https://etherscan.io/address/0xcdC931935768c0562AfE989A366a3Dc4d52F4853"
},
{
"address": "eth:0xA9FCCc53F1c9095DA867Bd648683F8bdCcc78d09",
"type": "EOA",
"isVerified": true,
"name": "0xA9FC…8d09",
"url": "https://etherscan.io/address/0xA9FCCc53F1c9095DA867Bd648683F8bdCcc78d09"
},
{
"address": "eth:0x6BB4249858Ee19b6ABC071AD26bEe690baa783A6",
"type": "EOA",
"isVerified": true,
"name": "0x6BB4…83A6",
"url": "https://etherscan.io/address/0x6BB4249858Ee19b6ABC071AD26bEe690baa783A6"
},
{
"address": "eth:0x2103c69696CB2D3779f5445393808239034E911c",
"type": "EOA",
"isVerified": true,
"name": "0x2103…911c",
"url": "https://etherscan.io/address/0x2103c69696CB2D3779f5445393808239034E911c"
},
{
"address": "eth:0x81175155D85377C337d92f1FA52Da166C3A4E7Ac",
"type": "EOA",
"isVerified": true,
"name": "0x8117…E7Ac",
"url": "https://etherscan.io/address/0x81175155D85377C337d92f1FA52Da166C3A4E7Ac"
},
{
"address": "eth:0xA0737fea60F0601A192E3d2c98865A883ab0bda2",
"type": "EOA",
"isVerified": true,
"name": "0xA073…bda2",
"url": "https://etherscan.io/address/0xA0737fea60F0601A192E3d2c98865A883ab0bda2"
},
{
"address": "eth:0xF3313C48BD8E17b823d5498D62F37019dFEA647D",
"type": "EOA",
"isVerified": true,
"name": "0xF331…647D",
"url": "https://etherscan.io/address/0xF3313C48BD8E17b823d5498D62F37019dFEA647D"
},
{
"address": "eth:0xa0C600a6e85bf225958FFAcC70B5FDDF9A059038",
"type": "EOA",
"isVerified": true,
"name": "0xa0C6…9038",
"url": "https://etherscan.io/address/0xa0C600a6e85bf225958FFAcC70B5FDDF9A059038"
},
{
"address": "eth:0xefCf0c8faFB425997870f845e26fC6cA6EE6dD5C",
"type": "EOA",
"isVerified": true,
"name": "0xefCf…dD5C",
"url": "https://etherscan.io/address/0xefCf0c8faFB425997870f845e26fC6cA6EE6dD5C"
},
{
"address": "eth:0x4D8007a0E9f293e62E2b0F43C6Cf4C4B9e135BAe",
"type": "EOA",
"isVerified": true,
"name": "0x4D80…5BAe",
"url": "https://etherscan.io/address/0x4D8007a0E9f293e62E2b0F43C6Cf4C4B9e135BAe"
}
],
"discoveryDrivenData": true
},
{
"id": "Katana yieldRecipient Mulsitig",
"name": "Katana yieldRecipient Mulsitig",
"description": "A Multisig with 2/6 threshold. \nMember of Safe.\n",
"accounts": [
{
"address": "eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756",
"type": "Contract",
"isVerified": true,
"name": "0x67C9…3756",
"url": "https://etherscan.io/address/0x67C912fF560951526BffDff66dFbD4DF8AE23756"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x09f5F2592791208219A1F51e3855Be9419fF6bE4",
"type": "EOA",
"isVerified": true,
"name": "0x09f5…6bE4",
"url": "https://etherscan.io/address/0x09f5F2592791208219A1F51e3855Be9419fF6bE4"
},
{
"address": "eth:0xf2dc90d4645579f261cA36E81181986dB576BbEe",
"type": "EOA",
"isVerified": true,
"name": "0xf2dc…BbEe",
"url": "https://etherscan.io/address/0xf2dc90d4645579f261cA36E81181986dB576BbEe"
},
{
"address": "eth:0x54DFA4B635E7eB98515fEBA81d360A3871739277",
"type": "EOA",
"isVerified": true,
"name": "0x54DF…9277",
"url": "https://etherscan.io/address/0x54DFA4B635E7eB98515fEBA81d360A3871739277"
},
{
"address": "eth:0xb3dA4c1Ba8De9E04f22B1554a070189F518FDCac",
"type": "EOA",
"isVerified": true,
"name": "0xb3dA…DCac",
"url": "https://etherscan.io/address/0xb3dA4c1Ba8De9E04f22B1554a070189F518FDCac"
},
{
"address": "eth:0xa1a4C71024a0CAD6a1cEf85561f1B9a34E00ff62",
"type": "EOA",
"isVerified": true,
"name": "0xa1a4…ff62",
"url": "https://etherscan.io/address/0xa1a4C71024a0CAD6a1cEf85561f1B9a34E00ff62"
},
{
"address": "eth:0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c",
"type": "EOA",
"isVerified": true,
"name": "0x227D…238c",
"url": "https://etherscan.io/address/0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c"
}
],
"discoveryDrivenData": true
},
{
"id": "Katana Steakhouse Financial / Morpho Multisig",
"name": "Katana Steakhouse Financial / Morpho Multisig",
"description": "A Multisig with 3/9 threshold. \nMember of Katana vaultBridge Multisig 3.\n",
"accounts": [
{
"address": "eth:0x827e86072B06674a077f592A531dcE4590aDeCdB",
"type": "Contract",
"isVerified": true,
"name": "0x827e…eCdB",
"url": "https://etherscan.io/address/0x827e86072B06674a077f592A531dcE4590aDeCdB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x1710932cf538F38E7bcFC30AAae389B24dD004f6",
"type": "EOA",
"isVerified": true,
"name": "0x1710…04f6",
"url": "https://etherscan.io/address/0x1710932cf538F38E7bcFC30AAae389B24dD004f6"
},
{
"address": "eth:0x44e6E4152a60D594c175BFeD42E68ad62FFB5871",
"type": "EOA",
"isVerified": true,
"name": "0x44e6…5871",
"url": "https://etherscan.io/address/0x44e6E4152a60D594c175BFeD42E68ad62FFB5871"
},
{
"address": "eth:0xfB3e98B5d59505Ceb259E9874b4553fD27FCCe3c",
"type": "EOA",
"isVerified": true,
"name": "0xfB3e…Ce3c",
"url": "https://etherscan.io/address/0xfB3e98B5d59505Ceb259E9874b4553fD27FCCe3c"
},
{
"address": "eth:0x7307Bf07641a794fdBc2391d0983a7f1cFa36E4B",
"type": "EOA",
"isVerified": true,
"name": "0x7307…6E4B",
"url": "https://etherscan.io/address/0x7307Bf07641a794fdBc2391d0983a7f1cFa36E4B"
},
{
"address": "eth:0x1936552B58Be97fFD9c7c1DD28E675b7B022F16d",
"type": "EOA",
"isVerified": true,
"name": "0x1936…F16d",
"url": "https://etherscan.io/address/0x1936552B58Be97fFD9c7c1DD28E675b7B022F16d"
},
{
"address": "eth:0xd824031D4A115590e6Ff26e4e23fC346ab4cB2Db",
"type": "EOA",
"isVerified": true,
"name": "0xd824…B2Db",
"url": "https://etherscan.io/address/0xd824031D4A115590e6Ff26e4e23fC346ab4cB2Db"
},
{
"address": "eth:0x4c23E86A9D8506a43046C15Be1b7fA0B6F3427DE",
"type": "EOA",
"isVerified": true,
"name": "0x4c23…27DE",
"url": "https://etherscan.io/address/0x4c23E86A9D8506a43046C15Be1b7fA0B6F3427DE"
},
{
"address": "eth:0x5868aaa8d66023137365ADAe9634A9D8834d488d",
"type": "EOA",
"isVerified": true,
"name": "0x5868…488d",
"url": "https://etherscan.io/address/0x5868aaa8d66023137365ADAe9634A9D8834d488d"
},
{
"address": "eth:0x1Dc4354B39554251d4a2C4b571906e7EbAe535A3",
"type": "EOA",
"isVerified": true,
"name": "0x1Dc4…35A3",
"url": "https://etherscan.io/address/0x1Dc4354B39554251d4a2C4b571906e7EbAe535A3"
}
],
"discoveryDrivenData": true
},
{
"id": "Safe",
"name": "Safe",
"description": "A Multisig with 2/12 threshold. \nMember of Safe.\n",
"accounts": [
{
"address": "eth:0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb",
"type": "Contract",
"isVerified": true,
"name": "0xFA58…f9Cb",
"url": "https://etherscan.io/address/0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xfB948CB3fE208fd067d36768B2bACd5dCF886066",
"type": "EOA",
"isVerified": true,
"name": "0xfB94…6066",
"url": "https://etherscan.io/address/0xfB948CB3fE208fd067d36768B2bACd5dCF886066"
},
{
"address": "eth:0x28260fD38F737e98F1599eCd385d4eB13C5A7A1f",
"type": "EOA",
"isVerified": true,
"name": "0x2826…7A1f",
"url": "https://etherscan.io/address/0x28260fD38F737e98F1599eCd385d4eB13C5A7A1f"
},
{
"address": "eth:0x9f02595fBFD199C4cBC02878fc9B2b2E07b0840C",
"type": "EOA",
"isVerified": true,
"name": "0x9f02…840C",
"url": "https://etherscan.io/address/0x9f02595fBFD199C4cBC02878fc9B2b2E07b0840C"
},
{
"address": "eth:0x1319279d6d54dB0883F7bAF822191c7184Db0c3d",
"type": "EOA",
"isVerified": true,
"name": "0x1319…0c3d",
"url": "https://etherscan.io/address/0x1319279d6d54dB0883F7bAF822191c7184Db0c3d"
},
{
"address": "eth:0x6Ab87a62E250A5EB09a53Fca832B9Bda480c3890",
"type": "EOA",
"isVerified": true,
"name": "0x6Ab8…3890",
"url": "https://etherscan.io/address/0x6Ab87a62E250A5EB09a53Fca832B9Bda480c3890"
},
{
"address": "eth:0x573D7a729cfcF20B81D70732d625Ae31549B8b91",
"type": "EOA",
"isVerified": true,
"name": "0x573D…8b91",
"url": "https://etherscan.io/address/0x573D7a729cfcF20B81D70732d625Ae31549B8b91"
},
{
"address": "eth:0xF045025C845E786E343Df30cC6f67ec6BB822b34",
"type": "EOA",
"isVerified": true,
"name": "0xF045…2b34",
"url": "https://etherscan.io/address/0xF045025C845E786E343Df30cC6f67ec6BB822b34"
},
{
"address": "eth:0x6B2Ba82994A1606605af1F11E50DA0b2B0cee6e6",
"type": "EOA",
"isVerified": true,
"name": "0x6B2B…e6e6",
"url": "https://etherscan.io/address/0x6B2Ba82994A1606605af1F11E50DA0b2B0cee6e6"
},
{
"address": "eth:0x6624307a4f672ec5C289fBA196952902BB518dc0",
"type": "EOA",
"isVerified": true,
"name": "0x6624…8dc0",
"url": "https://etherscan.io/address/0x6624307a4f672ec5C289fBA196952902BB518dc0"
},
{
"address": "eth:0x54DFA4B635E7eB98515fEBA81d360A3871739277",
"type": "EOA",
"isVerified": true,
"name": "0x54DF…9277",
"url": "https://etherscan.io/address/0x54DFA4B635E7eB98515fEBA81d360A3871739277"
},
{
"address": "eth:0xFAc88BB6229F47A31A78F0Ba91E5a541Cb1866a3",
"type": "EOA",
"isVerified": true,
"name": "0xFAc8…66a3",
"url": "https://etherscan.io/address/0xFAc88BB6229F47A31A78F0Ba91E5a541Cb1866a3"
},
{
"address": "eth:0xdEb97974dfCC73178672205A1eadDc2BDeAc1Bd4",
"type": "EOA",
"isVerified": true,
"name": "0xdEb9…1Bd4",
"url": "https://etherscan.io/address/0xdEb97974dfCC73178672205A1eadDc2BDeAc1Bd4"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x1FFDA89C755f6D4Af069897D77CcAbb580Fd412a",
"type": "EOA",
"isVerified": true,
"name": "0x1FFD…412a",
"url": "https://etherscan.io/address/0x1FFDA89C755f6D4Af069897D77CcAbb580Fd412a",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with SystemConfig\n * Allowed to commit transactions from the current layer to the host chain ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0xC1E65a0cEbF95f56Cd8729f7e37CB33eD94d6439",
"type": "EOA",
"isVerified": true,
"name": "0xC1E6…6439",
"url": "https://etherscan.io/address/0xC1E65a0cEbF95f56Cd8729f7e37CB33eD94d6439",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainFEP\n * sign state transitions (replaces state validation for this aggchain) ",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
},
"katana": {
"roles": [],
"actors": [
{
"id": "GnosisSafeL2",
"name": "GnosisSafeL2",
"description": "A Multisig with 2/5 threshold. \n* Can upgrade **with 12h delay**\n * AgglayerBridgeL2 [via: L2Timelock with 12h delay (no delay if in emergency state) → ProxyAdmin]\n * GlobalExitRootManagerL2SovereignChain [via: L2Timelock with 12h delay (no delay if in emergency state) → ProxyAdmin]\n* Can interact with AgglayerBridgeL2\n * manage token mappings and deployments \n * own and upgrade default L2 token contracts deployed by the bridge \n * pause the bridge \n * unpause the bridge \n* Can interact with GlobalExitRootManagerL2SovereignChain\n * manage 'claimed' status of global deposit indexes (can freeze bridge transactions), remove global exit roots (used for L2 deposits) \n * roll back or insert leaves into the local exit tree (LET) that enables withdrawals from the L2. (can steal) \n* Can interact with L2Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 12h delay** [via: - acting directly with 12h delay (no delay if in emergency state)]",
"accounts": [
{
"address": "katana:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a",
"type": "Contract",
"isVerified": true,
"name": "0x4e98…C38a",
"url": "https://katanascan.com/address/0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a"
}
],
"chain": "katana",
"references": [],
"participants": [
{
"address": "katana:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://katanascan.com/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "katana:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://katanascan.com/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "katana:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://katanascan.com/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
},
{
"address": "katana:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://katanascan.com/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "katana:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://katanascan.com/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
}
],
"discoveryDrivenData": true
},
{
"id": "SafeL2",
"name": "SafeL2",
"description": "A Multisig with 3/5 threshold. \n* Can upgrade **with no delay**\n * DeployerWhitelist [via: L2ProxyAdmin]\n * L2CrossDomainMessenger [via: L2ProxyAdmin]\n * GasPriceOracle [via: L2ProxyAdmin]\n * L2StandardBridge [via: L2ProxyAdmin]\n * SequencerFeeVault [via: L2ProxyAdmin]\n * OptimismMintableERC20Factory [via: L2ProxyAdmin]\n * L1BlockNumber [via: L2ProxyAdmin]\n * L2ERC721Bridge [via: L2ProxyAdmin]\n * L1Block [via: L2ProxyAdmin]\n * L2ToL1MessagePasser [via: L2ProxyAdmin]\n * OptimismMintableERC721Factory [via: L2ProxyAdmin]\n * L2ProxyAdmin [via: L2ProxyAdmin]\n * BaseFeeVault [via: L2ProxyAdmin]\n * L1FeeVault [via: L2ProxyAdmin]\n * OperatorFeeVault [via: L2ProxyAdmin]\n * SchemaRegistry [via: L2ProxyAdmin]\n * EAS [via: L2ProxyAdmin]\n* Can upgrade **with 12h delay**\n * AgglayerBridgeL2 [via: L2Timelock with 12h delay (no delay if in emergency state) → ProxyAdmin]\n * GlobalExitRootManagerL2SovereignChain [via: L2Timelock with 12h delay (no delay if in emergency state) → ProxyAdmin]\n* Can interact with L2Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 12h delay** [via: - acting directly with 12h delay (no delay if in emergency state)]",
"accounts": [
{
"address": "katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC",
"type": "Contract",
"isVerified": true,
"name": "0xd067…98CC",
"url": "https://katanascan.com/address/0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC"
}
],
"chain": "katana",
"references": [],
"participants": [
{
"address": "katana:0x6f8CC67A7F6c61E4047aC4870583899CC1fBD08a",
"type": "EOA",
"isVerified": true,
"name": "0x6f8C…D08a",
"url": "https://katanascan.com/address/0x6f8CC67A7F6c61E4047aC4870583899CC1fBD08a"
},
{
"address": "katana:0x4A658D678804DD0a4Ad0A2c26AD4F4EB2517154b",
"type": "EOA",
"isVerified": true,
"name": "0x4A65…154b",
"url": "https://katanascan.com/address/0x4A658D678804DD0a4Ad0A2c26AD4F4EB2517154b"
},
{
"address": "katana:0xA697656ac37ee1f59A8a5318F61601B4C208960D",
"type": "EOA",
"isVerified": true,
"name": "0xA697…960D",
"url": "https://katanascan.com/address/0xA697656ac37ee1f59A8a5318F61601B4C208960D"
},
{
"address": "katana:0x73D8846324B30477EA3Ac055589e40F39DE497F8",
"type": "EOA",
"isVerified": true,
"name": "0x73D8…97F8",
"url": "https://katanascan.com/address/0x73D8846324B30477EA3Ac055589e40F39DE497F8"
},
{
"address": "katana:0xa43901c63f7702C407378E55E0d0EB4064a2AE31",
"type": "EOA",
"isVerified": true,
"name": "0xa439…AE31",
"url": "https://katanascan.com/address/0xa43901c63f7702C407378E55E0d0EB4064a2AE31"
}
],
"discoveryDrivenData": true
},
{
"id": "BaseFeeVault",
"name": "BaseFeeVault",
"accounts": [
{
"address": "katana:0x4200000000000000000000000000000000000019",
"type": "Contract",
"isVerified": true,
"name": "0x4200…0019",
"url": "https://katanascan.com/address/0x4200000000000000000000000000000000000019"
}
],
"chain": "katana",
"description": "Collects EIP-1559 base fees\n* Can interact with OperatorFeeVault\n * receive fees ",
"discoveryDrivenData": true
},
{
"id": "SafeL2",
"name": "SafeL2",
"description": "A Multisig with 3/6 threshold. \n* Can interact with SequencerFeeVault\n * receive fees \n* Can interact with BaseFeeVault\n * receive fees \n* Can interact with L1FeeVault\n * receive fees ",
"accounts": [
{
"address": "katana:0x7990513f4d64d57524a0B2519759f53B0cB1aEbd",
"type": "Contract",
"isVerified": true,
"name": "0x7990…aEbd",
"url": "https://katanascan.com/address/0x7990513f4d64d57524a0B2519759f53B0cB1aEbd"
}
],
"chain": "katana",
"references": [],
"participants": [
{
"address": "katana:0xb3dA4c1Ba8De9E04f22B1554a070189F518FDCac",
"type": "EOA",
"isVerified": true,
"name": "0xb3dA…DCac",
"url": "https://katanascan.com/address/0xb3dA4c1Ba8De9E04f22B1554a070189F518FDCac"
},
{
"address": "katana:0x73D8846324B30477EA3Ac055589e40F39DE497F8",
"type": "EOA",
"isVerified": true,
"name": "0x73D8…97F8",
"url": "https://katanascan.com/address/0x73D8846324B30477EA3Ac055589e40F39DE497F8"
},
{
"address": "katana:0xf2dc90d4645579f261cA36E81181986dB576BbEe",
"type": "EOA",
"isVerified": true,
"name": "0xf2dc…BbEe",
"url": "https://katanascan.com/address/0xf2dc90d4645579f261cA36E81181986dB576BbEe"
},
{
"address": "katana:0x4A658D678804DD0a4Ad0A2c26AD4F4EB2517154b",
"type": "EOA",
"isVerified": true,
"name": "0x4A65…154b",
"url": "https://katanascan.com/address/0x4A658D678804DD0a4Ad0A2c26AD4F4EB2517154b"
},
{
"address": "katana:0x02023f74ED12Df7752144aE8A23411776D4698b4",
"type": "EOA",
"isVerified": true,
"name": "0x0202…98b4",
"url": "https://katanascan.com/address/0x02023f74ED12Df7752144aE8A23411776D4698b4"
},
{
"address": "katana:0xa43901c63f7702C407378E55E0d0EB4064a2AE31",
"type": "EOA",
"isVerified": true,
"name": "0xa439…AE31",
"url": "https://katanascan.com/address/0xa43901c63f7702C407378E55E0d0EB4064a2AE31"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "katana:0x3138BBdAeAd339d34F084445192B2be9dd4B9f27",
"type": "EOA",
"isVerified": true,
"name": "0x3138…9f27",
"url": "https://katanascan.com/address/0x3138BBdAeAd339d34F084445192B2be9dd4B9f27",
"displayName": "EOA 3"
}
],
"chain": "katana",
"description": "* Can interact with GlobalExitRootManagerL2SovereignChain\n * update the global exit root (GER) that is used for L2 deposits ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "a6c713f2",
"date": "Fri, 16 Oct 2026 10:35:37 GMT",
"timestamp": 1792144034,
"description": "Yearn Strategist Multisig (a member of Katana vaultBridge Multisig 2) removed two signers, now 3 of 6.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Yearn Strategist Multisig (eth:0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7) [GnosisSafe] {\n +++ description: None\n values.$members.3:\n- \"eth:0xFcc3796370e1538F8cC60bec19A8be5457f2C74F\"\n values.$members.4:\n- \"eth:0xFafFb75e14faFf9f11315E44a2E54A22872c7a34\"\n values.multisigThreshold:\n- \"3 of 8 (38%)\"\n+ \"3 of 6 (50%)\"\n }\n```"
}
]
},
{
"id": "6eb37dd3",
"date": "Mon, 12 Oct 2026 07:12:12 GMT",
"timestamp": 1791788974,
"description": "The Steakhouse/Morpho Safe rotated all seven signers, added two more and raised its threshold from 2/7 to 3/9.",
"isHighSeverity": false,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana Steakhouse Financial / Morpho Multisig (eth:0x827e86072B06674a077f592A531dcE4590aDeCdB) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x1710932cf538F38E7bcFC30AAae389B24dD004f6\"\n values.$members.1:\n+ \"eth:0x44e6E4152a60D594c175BFeD42E68ad62FFB5871\"\n values.$members.0:\n- \"eth:0xfc615395336aADe67fd853a0157001a215Ea1279\"\n+ \"eth:0xfB3e98B5d59505Ceb259E9874b4553fD27FCCe3c\"\n values.$members.1:\n- \"eth:0xf83dB716A1Ff12F9005F98f678D8BE97B8Bc81d6\"\n+ \"eth:0x7307Bf07641a794fdBc2391d0983a7f1cFa36E4B\"\n values.$members.2:\n- \"eth:0x8AE8EE5ad6EaE89836B0070Ebc47AF06E3D7422b\"\n+ \"eth:0x1936552B58Be97fFD9c7c1DD28E675b7B022F16d\"\n values.$members.3:\n- \"eth:0x0D61C8b6CA9669A36F351De3AE335e9689dd9C5b\"\n+ \"eth:0xd824031D4A115590e6Ff26e4e23fC346ab4cB2Db\"\n values.$members.4:\n- \"eth:0xcC771952fdE840E30C6802734e5ad20479c2959f\"\n+ \"eth:0x4c23E86A9D8506a43046C15Be1b7fA0B6F3427DE\"\n values.$members.5:\n- \"eth:0x387Cde8598E1CBb297FDc5bAEbA5E5c5c2735344\"\n+ \"eth:0x5868aaa8d66023137365ADAe9634A9D8834d488d\"\n values.$members.6:\n- \"eth:0xE3fCEE6B6cd564E073346f71394f60eC9aDf5120\"\n+ \"eth:0x1Dc4354B39554251d4a2C4b571906e7EbAe535A3\"\n values.$threshold:\n- 2\n+ 3\n values.multisigThreshold:\n- \"2 of 7 (29%)\"\n+ \"3 of 9 (33%)\"\n }\n```"
}
]
},
{
"id": "45c9bef9",
"date": "Mon, 05 Oct 2026 16:18:28 GMT",
"timestamp": 1791217041,
"description": "Karst hardfork L2 activation on 2026-09-23 16:00:01 UTC: L2 predeploys upgraded to the standard OP Stack implementations.\n\nL2ToL1MessagePasser: the previous Katana-specific implementation reverted `initiateWithdrawal` with \"Withdrawals are disabled\"; the standard 1.2.0 has no such check, so withdrawals through the OP Stack path can be initiated on L2 again. The L1 OptimismPortal2 holds no ETH and the DisputeGameFactory has created no games.\n\nL2ProxyAdmin (1.0.0) adds `upgradePredeploys(address)`. FeeVault `recipient`, `minWithdrawalAmount` and `withdrawalNetwork` moved from immutables to storage, settable by the ProxyAdmin owner. L1Block adds `setFeature(bytes32)`, callable by the depositor account, the ProxyAdmin or its owner.\n\nVersion changes and implementation diffs:\n\n- L2CrossDomainMessenger 2.1.1-beta.1 -> 2.2.1: https://disco.l2beat.com/diff/katana:0xC0d3c0d3c0D3c0D3C0d3C0D3C0D3c0d3c0d30007/katana:0x250AF3f400cf8Aac8D410c90f1ba3968dD87DF96\n- L2StandardBridge 1.11.1-beta.1 -> 1.13.2: https://disco.l2beat.com/diff/katana:0xC0d3c0d3c0D3c0d3C0D3c0D3C0d3C0D3C0D30010/katana:0xAE9ed42f43a3ee45c3A9dEf8ae6B48cBb58Ed1a1\n- SequencerFeeVault 1.5.0-beta.5 -> 1.6.1: https://disco.l2beat.com/diff/katana:0x8A52Ca0E8459460C6861C117285E6973Ecf7EE3f/katana:0xb178cdAa8336f25624A63C049EdB5AF7ca36C2dA\n- OptimismMintableERC20Factory 1.10.1-beta.2 -> 1.11.0: https://disco.l2beat.com/diff/katana:0xc0D3c0d3C0d3c0d3c0D3c0d3c0D3c0D3c0D30012/katana:0xAF87f2Fd347aCb94656f9F715B4f2409B98e75b9\n- L2ERC721Bridge 1.7.1-beta.2 -> 1.10.1: https://disco.l2beat.com/diff/katana:0xC0D3c0d3c0d3c0d3c0D3C0d3C0D3C0D3c0d30014/katana:0x716eAd0Cf3e7FF86A02D4F8cb41a6D14922fA833\n- L1Block 1.7.0 -> 1.9.0: https://disco.l2beat.com/diff/katana:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C/katana:0x6a97C5D55A21265326150Efe12FC30Fb21cbff56\n- L2ToL1MessagePasser 1.1.1-beta.1 -> 1.2.0: https://disco.l2beat.com/diff/katana:0xFBF44D0341C03098A1D9C0336e3d5C34E8BFdf1A/katana:0x27E51B2254433A3284D9ba73Ea551C397DB2a124\n- OptimismMintableERC721Factory 1.4.1-beta.1 -> 1.5.1: https://disco.l2beat.com/diff/katana:0xc0d3C0d3C0d3C0d3C0d3c0d3C0D3C0d3C0D30017/katana:0xf43862B9d814BB4504158CecCB0b74b31265e4eE\n- ProxyAdmin -> L2ProxyAdmin 1.0.0: https://disco.l2beat.com/diff/katana:0xC0d3C0D3c0d3C0d3c0d3c0D3C0D3C0d3C0D30018/katana:0x893c2CEEb71D38514daF67728d3Ff1b213FC4B5F\n- BaseFeeVault 1.5.0-beta.6 -> 1.6.1: https://disco.l2beat.com/diff/katana:0x7e27d992B349B96ea8D32378B7c53b3D58139a2E/katana:0xf7bed7215EEF1003fac426682Cf2edeb958569f7\n- L1FeeVault 1.5.0-beta.5 -> 1.6.1: https://disco.l2beat.com/diff/katana:0x0ebC896698De72A444d00Dc3d046B432c555EB09/katana:0xf7bed7215EEF1003fac426682Cf2edeb958569f7\n- OperatorFeeVault 1.0.0 -> 1.1.1: https://disco.l2beat.com/diff/katana:0x4fa2Be8cd41504037F1838BcE3bCC93bC68Ff537/katana:0xEddf416c7159387cc6DF3015700F79Cfb8911373\n- SchemaRegistry 1.3.1-beta.1 -> 1.3.1-beta.2: https://disco.l2beat.com/diff/katana:0xc0d3c0d3c0d3C0d3c0d3C0D3C0D3c0d3C0D30020/katana:0x70DE55BC0bfBC52C5D0CCA1DA5816c2428886A34\n- EAS 1.4.1-beta.1 -> 1.4.1-beta.3: https://disco.l2beat.com/diff/katana:0xC0D3c0D3C0d3c0D3c0D3C0D3c0D3c0d3c0d30021/katana:0xbEc660b456B84A081E90aF29BE43385BDa5bF7b6\n- GasPriceOracle 1.6.0 (source unchanged): https://disco.l2beat.com/diff/katana:0x4f1db3c6AbD250ba86E0928471A8F7DB3AFd88F1/katana:0x547d0fba434877D7237d511cF87FABe2ee26b152\n\nAggchainFEP: new selected OP Succinct config (op-succinct v3.14.1).\n\nPolygon Multisig 2: member added; threshold 3/5 → 3/6.\n\nSafe: member added; threshold 2/11 → 2/12.",
"isHighSeverity": true,
"changeCount": 156,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) [katana/AggchainFEP_post035] {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.selectedOpSuccinctConfig.aggregationVkey:\n- \"0x00d68eb096f4c731512562f7a06e6bba104dbcb959261edd3eb3ec542c200c89\"\n+ \"0x00070992a03760456403e800b0bd1a0e907a85a5c2cffca292b5994b56b5363b\"\n values.selectedOpSuccinctConfig.rangeVkeyCommitment:\n- \"0x1f089f9d1cd3f727775788003d3e496037d3625e2e9de6e5005f1e9707ba3b8f\"\n+ \"0x5ae13fed447a94f57d6ee8fc44cce8075ef994485121dcd27e75577d264f75b1\"\n+++ description: currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\n+++ severity: HIGH\n values.selectedOpSuccinctConfigName:\n- \"0x0f30c0b6846b034a146a47c5185fb9a4321df3569376773238ef30c831019190\"\n+ \"0x78bea7db8aa3cf21062aa42ee79556258a369e6fbe39954760f92475ba39a06c\"\n }\n```\n\n```diff\n contract Polygon Multisig 2 (eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x21a2Db679b4e9f6183E3143cc7Dcfef955b400a6\"\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"3 of 6 (50%)\"\n }\n```\n\n```diff\n contract Safe (eth:0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0xfB948CB3fE208fd067d36768B2bACd5dCF886066\"\n values.multisigThreshold:\n- \"2 of 11 (18%)\"\n+ \"2 of 12 (17%)\"\n }\n```\n\n```diff\n contract L2CrossDomainMessenger (katana:0x4200000000000000000000000000000000000007) [opstack/Layer2/L2CrossDomainMessenger] {\n +++ description: The L2CrossDomainMessenger (L2xDM) contract sends messages from L2 to L1, and relays messages from L1 onto L2 with a system tx. In the event that a message sent from L2 to L1 is rejected for exceeding the L1 gas limit, it can be resubmitted via this contract’s replay function.\n sourceHashes.1:\n- \"0x1ef37a50dbdd57f7019208b81019e52087cb92379f963e1ec092bd3eb81ec978\"\n+ \"0x9e9ae8aec73e808e50f80bced53c3a020588eed516b310a10397596869dcd3b1\"\n values.$implementation:\n- \"katana:0xC0d3c0d3c0D3c0D3C0d3C0D3C0D3c0d3c0d30007\"\n+ \"katana:0x250AF3f400cf8Aac8D410c90f1ba3968dD87DF96\"\n values.$pastUpgrades.0:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x2A5A3eabB9Fd571A3Af0299eebdF8EaafE29a914\"]]\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x250AF3f400cf8Aac8D410c90f1ba3968dD87DF96\"]]\n values.$upgradeCount:\n- 0\n+ 2\n values.version:\n- \"2.1.1-beta.1\"\n+ \"2.2.1\"\n values.ENCODING_OVERHEAD:\n+ 260\n values.FLOOR_CALLDATA_OVERHEAD:\n+ 40\n values.proxyAdmin:\n+ \"katana:0x4200000000000000000000000000000000000018\"\n values.proxyAdminOwner:\n+ \"katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n values.TX_BASE_GAS:\n+ 21000\n implementationNames.katana:0xC0d3c0d3c0D3c0D3C0d3C0D3C0D3c0d3c0d30007:\n- \"L2CrossDomainMessenger\"\n implementationNames.katana:0x250AF3f400cf8Aac8D410c90f1ba3968dD87DF96:\n+ \"L2CrossDomainMessenger\"\n }\n```\n\n```diff\n contract GasPriceOracle (katana:0x420000000000000000000000000000000000000F) [opstack/Layer2/GasPriceOracle] {\n +++ description: Provides the current gas price for L2 transactions.\n values.$implementation:\n- \"katana:0x4f1db3c6AbD250ba86E0928471A8F7DB3AFd88F1\"\n+ \"katana:0x547d0fba434877D7237d511cF87FABe2ee26b152\"\n values.$pastUpgrades.2:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x547d0fba434877D7237d511cF87FABe2ee26b152\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.katana:0x4f1db3c6AbD250ba86E0928471A8F7DB3AFd88F1:\n- \"GasPriceOracle\"\n implementationNames.katana:0x547d0fba434877D7237d511cF87FABe2ee26b152:\n+ \"GasPriceOracle\"\n }\n```\n\n```diff\n contract L2StandardBridge (katana:0x4200000000000000000000000000000000000010) [opstack/Layer2/L2StandardBridge] {\n +++ description: The L2StandardBridge contract is the main entry point to deposit or withdraw ERC20 tokens from L2 to L1. This contract can store any token.\n sourceHashes.1:\n- \"0xe528a1a655ef22d36419f53488f5b31752c4ecc2efea627fc6be5b0d63fa5069\"\n+ \"0xf6ef848ca1cf88e27b5e3bb5e01b91ef79f302e5daad8ba5206c4dc60027d312\"\n values.$implementation:\n- \"katana:0xC0d3c0d3c0D3c0d3C0D3c0D3C0d3C0D3C0D30010\"\n+ \"katana:0xAE9ed42f43a3ee45c3A9dEf8ae6B48cBb58Ed1a1\"\n values.$pastUpgrades.0:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x2A5A3eabB9Fd571A3Af0299eebdF8EaafE29a914\"]]\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0xAE9ed42f43a3ee45c3A9dEf8ae6B48cBb58Ed1a1\"]]\n values.$upgradeCount:\n- 0\n+ 2\n values.version:\n- \"1.11.1-beta.1\"\n+ \"1.13.2\"\n values.proxyAdmin:\n+ \"katana:0x4200000000000000000000000000000000000018\"\n values.proxyAdminOwner:\n+ \"katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.katana:0xC0d3c0d3c0D3c0d3C0D3c0D3C0d3C0D3C0D30010:\n- \"L2StandardBridge\"\n implementationNames.katana:0xAE9ed42f43a3ee45c3A9dEf8ae6B48cBb58Ed1a1:\n+ \"L2StandardBridge\"\n }\n```\n\n```diff\n contract SequencerFeeVault (katana:0x4200000000000000000000000000000000000011) [opstack/Layer2/SequencerFeeVault] {\n +++ description: Collects the sequencer fees.\n sourceHashes.1:\n- \"0x93752bf6627e91f3f4f031a686b0a57c754db8b6b8b88401d16e26724cb44f08\"\n+ \"0xb45389729a8fffa7650568cd2922e482d03d3ed57b35f4819650d11174d9237a\"\n values.$implementation:\n- \"katana:0x8A52Ca0E8459460C6861C117285E6973Ecf7EE3f\"\n+ \"katana:0xb178cdAa8336f25624A63C049EdB5AF7ca36C2dA\"\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x2A5A3eabB9Fd571A3Af0299eebdF8EaafE29a914\"]]\n values.$pastUpgrades.2:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0xb178cdAa8336f25624A63C049EdB5AF7ca36C2dA\"]]\n values.$upgradeCount:\n- 1\n+ 3\n values.version:\n- \"1.5.0-beta.5\"\n+ \"1.6.1\"\n values.proxyAdmin:\n+ \"katana:0x4200000000000000000000000000000000000018\"\n values.proxyAdminOwner:\n+ \"katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.katana:0x8A52Ca0E8459460C6861C117285E6973Ecf7EE3f:\n- \"SequencerFeeVault\"\n implementationNames.katana:0xb178cdAa8336f25624A63C049EdB5AF7ca36C2dA:\n+ \"SequencerFeeVault\"\n }\n```\n\n```diff\n contract OptimismMintableERC20Factory (katana:0x4200000000000000000000000000000000000012) [opstack/OptimismMintableERC20Factory] {\n +++ description: A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintableERC20 as this chain's representation of a token on the host chain, or vice-versa.\n template:\n- \"opstack/Layer2/OptimismMintableERC20Factory\"\n+ \"opstack/OptimismMintableERC20Factory\"\n sourceHashes.1:\n- \"0x106f86d507a55d0f26e3683c910a71a9804d75ced3a4bb374e6a78978462274b\"\n+ \"0x11b0ed6f15cabf613492a8d54c55304a17cf60f4fd94a655d7e720d4556906d0\"\n description:\n- \"Factory contract to create bridge compliant ERC20 IOU token representations of bridged L1 ERC20 tokens.\"\n+ \"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 values.$implementation:\n- \"katana:0xc0D3c0d3C0d3c0d3c0D3c0d3c0D3c0D3c0D30012\"\n+ \"katana:0xAF87f2Fd347aCb94656f9F715B4f2409B98e75b9\"\n values.$pastUpgrades.0:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x2A5A3eabB9Fd571A3Af0299eebdF8EaafE29a914\"]]\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0xAF87f2Fd347aCb94656f9F715B4f2409B98e75b9\"]]\n values.$upgradeCount:\n- 0\n+ 2\n values.version:\n- \"1.10.1-beta.2\"\n+ \"1.11.0\"\n values.proxyAdmin:\n+ \"katana:0x4200000000000000000000000000000000000018\"\n values.proxyAdminOwner:\n+ \"katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.katana:0xc0D3c0d3C0d3c0d3c0D3c0d3c0D3c0D3c0D30012:\n- \"OptimismMintableERC20Factory\"\n implementationNames.katana:0xAF87f2Fd347aCb94656f9F715B4f2409B98e75b9:\n+ \"OptimismMintableERC20Factory\"\n }\n```\n\n```diff\n contract L2ERC721Bridge (katana:0x4200000000000000000000000000000000000014) [opstack/Layer2/L2ERC721Bridge] {\n +++ description: The L2ERC721Bridge contract is the main entry point to deposit or withdraw ERC721 tokens from L2 to L1. This contract can store any token.\n sourceHashes.1:\n- \"0x271f936ec1986057d9043b9961aa266e87908766814bdde8071f19a9de7484be\"\n+ \"0x0d8059378487e33161e0b838f622400642360f1e311eba8c7b8fbdb504aeee1e\"\n values.$implementation:\n- \"katana:0xC0D3c0d3c0d3c0d3c0D3C0d3C0D3C0D3c0d30014\"\n+ \"katana:0x716eAd0Cf3e7FF86A02D4F8cb41a6D14922fA833\"\n values.$pastUpgrades.0:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x2A5A3eabB9Fd571A3Af0299eebdF8EaafE29a914\"]]\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x716eAd0Cf3e7FF86A02D4F8cb41a6D14922fA833\"]]\n values.$upgradeCount:\n- 0\n+ 2\n values.version:\n- \"1.7.1-beta.2\"\n+ \"1.10.1\"\n values.proxyAdmin:\n+ \"katana:0x4200000000000000000000000000000000000018\"\n values.proxyAdminOwner:\n+ \"katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.katana:0xC0D3c0d3c0d3c0d3c0D3C0d3C0D3C0D3c0d30014:\n- \"L2ERC721Bridge\"\n implementationNames.katana:0x716eAd0Cf3e7FF86A02D4F8cb41a6D14922fA833:\n+ \"L2ERC721Bridge\"\n }\n```\n\n```diff\n contract L1Block (katana:0x4200000000000000000000000000000000000015) [opstack/Layer2/L1Block] {\n +++ description: Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain.\n sourceHashes.1:\n- \"0x399e57fff478211b47d61c5acb60592a4df8ffa5716959a1a6ee2ccabc44915e\"\n+ \"0xca6401a4032def95df36b0d432052526888ef8a396f7e4fc37cdda3690932646\"\n values.$implementation:\n- \"katana:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C\"\n+ \"katana:0x6a97C5D55A21265326150Efe12FC30Fb21cbff56\"\n values.$pastUpgrades.2:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x6a97C5D55A21265326150Efe12FC30Fb21cbff56\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.version:\n- \"1.7.0\"\n+ \"1.9.0\"\n values.proxyAdmin:\n+ \"katana:0x4200000000000000000000000000000000000018\"\n values.proxyAdminOwner:\n+ \"katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.katana:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C:\n- \"L1Block\"\n implementationNames.katana:0x6a97C5D55A21265326150Efe12FC30Fb21cbff56:\n+ \"L1Block\"\n }\n```\n\n```diff\n contract L2ToL1MessagePasser (katana:0x4200000000000000000000000000000000000016) [opstack/Layer2/L2ToL1MessagePasser] {\n +++ description: Contract used internally by the L2CrossDomainMessenger to send messages to L1, including withdrawals. It can also be used directly as a low-level interface.\n template:\n- \"katana/L2ToL1MessagePasser\"\n+ \"opstack/Layer2/L2ToL1MessagePasser\"\n sourceHashes.1:\n- \"0xa53da4d87c97c2504bf8feb43888b64bb6834cfc6f9cf0fb4e59b9e507466756\"\n+ \"0xb5be3cf9878e914d0b7feef281dbcc2b72d7c7e9106e44a7dfd516d48de8a62a\"\n description:\n- \"Contract used internally by the L2CrossDomainMessenger to send messages to L1. It can also be used directly as a low-level interface.\"\n+ \"Contract used internally by the L2CrossDomainMessenger to send messages to L1, including withdrawals. It can also be used directly as a low-level interface.\"\n values.$implementation:\n- \"katana:0xFBF44D0341C03098A1D9C0336e3d5C34E8BFdf1A\"\n+ \"katana:0x27E51B2254433A3284D9ba73Ea551C397DB2a124\"\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x27E51B2254433A3284D9ba73Ea551C397DB2a124\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.version:\n- \"1.1.1-beta.1\"\n+ \"1.2.0\"\n implementationNames.katana:0xFBF44D0341C03098A1D9C0336e3d5C34E8BFdf1A:\n- \"L2ToL1MessagePasser\"\n implementationNames.katana:0x27E51B2254433A3284D9ba73Ea551C397DB2a124:\n+ \"L2ToL1MessagePasser\"\n critical:\n+ true\n }\n```\n\n```diff\n contract OptimismMintableERC721Factory (katana:0x4200000000000000000000000000000000000017) [opstack/Layer2/OptimismMintableERC721Factory] {\n +++ description: Factory contract to create bridge compliant ERC721 IOU token representations of bridged L1 ERC721 tokens.\n sourceHashes.1:\n- \"0xec1bfae18ba5717949a6969cb01d743511c076e7bc6c78ed2c2b63232b97cc57\"\n+ \"0xf4fd8df9e9191098f5647a3568864aee248b011c092313bf392b57a4b0f43268\"\n values.$implementation:\n- \"katana:0xc0d3C0d3C0d3C0d3C0d3c0d3C0D3C0d3C0D30017\"\n+ \"katana:0xf43862B9d814BB4504158CecCB0b74b31265e4eE\"\n values.$pastUpgrades.0:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x2A5A3eabB9Fd571A3Af0299eebdF8EaafE29a914\"]]\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0xf43862B9d814BB4504158CecCB0b74b31265e4eE\"]]\n values.$upgradeCount:\n- 0\n+ 2\n values.version:\n- \"1.4.1-beta.1\"\n+ \"1.5.1\"\n values.bridge:\n+ \"katana:0x4200000000000000000000000000000000000014\"\n values.proxyAdmin:\n+ \"katana:0x4200000000000000000000000000000000000018\"\n values.proxyAdminOwner:\n+ \"katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n values.remoteChainID:\n+ 1\n implementationNames.katana:0xc0d3C0d3C0d3C0d3C0d3c0d3C0D3C0d3C0D30017:\n- \"OptimismMintableERC721Factory\"\n implementationNames.katana:0xf43862B9d814BB4504158CecCB0b74b31265e4eE:\n+ \"OptimismMintableERC721Factory\"\n }\n```\n\n```diff\n contract L2ProxyAdmin (katana:0x4200000000000000000000000000000000000018) [opstack/Layer2/L2ProxyAdmin_karst] {\n +++ description: Administration contract for the L2 predeploy proxies. Adds upgradePredeploys(address), which can only be called by the system depositor account and delegatecalls an L2ContractsManager to upgrade every predeploy in a single network upgrade transaction.\n name:\n- \"ProxyAdmin\"\n+ \"L2ProxyAdmin\"\n template:\n- \"global/ProxyAdmin\"\n+ \"opstack/Layer2/L2ProxyAdmin_karst\"\n sourceHashes.1:\n- \"0x96d2f0fa1bd83ebd61ba6a2351c64c7fda7aa580b11ea67bb6bf4338e5c28512\"\n+ \"0xc9307181d90f9b86ff913d1c365245cfb8622929939cbff0389acf7f428ddc4b\"\n values.$implementation:\n- \"katana:0xC0d3C0D3c0d3C0d3c0d3c0D3C0D3C0d3C0D30018\"\n+ \"katana:0x893c2CEEb71D38514daF67728d3Ff1b213FC4B5F\"\n values.$pastUpgrades.0:\n+ [\"2026-09-23T16:00:01.000Z\",\"0x48aa8d6a9d281bf0eaa204e895acdfe0ba38640c34f6d133b2f4ecb879f5c72c\",[\"katana:0x893c2CEEb71D38514daF67728d3Ff1b213FC4B5F\"]]\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x893c2CEEb71D38514daF67728d3Ff1b213FC4B5F\"]]\n values.$upgradeCount:\n- 0\n+ 2\n values.version:\n+ \"1.0.0\"\n implementationNames.katana:0xC0d3C0D3c0d3C0d3c0d3c0D3C0D3C0d3C0D30018:\n- \"ProxyAdmin\"\n implementationNames.katana:0x893c2CEEb71D38514daF67728d3Ff1b213FC4B5F:\n+ \"L2ProxyAdmin\"\n description:\n+ \"Administration contract for the L2 predeploy proxies. Adds upgradePredeploys(address), which can only be called by the system depositor account and delegatecalls an L2ContractsManager to upgrade every predeploy in a single network upgrade transaction.\"\n critical:\n+ true\n }\n```\n\n```diff\n contract BaseFeeVault (katana:0x4200000000000000000000000000000000000019) [opstack/Layer2/BaseFeeVault_karst] {\n +++ description: Collects EIP-1559 base fees\n template:\n- \"opstack/Layer2/BaseFeeVault\"\n+ \"opstack/Layer2/BaseFeeVault_karst\"\n sourceHashes.1:\n- \"0xe1e57baf3de85a14ad342b23be3bc829de637a5ac1336b089f49fcab12d6226a\"\n+ \"0xf7b9f825b6af20abb355da09822d54e6e3fa7243439293826bd7271f87747775\"\n values.$implementation:\n- \"katana:0x7e27d992B349B96ea8D32378B7c53b3D58139a2E\"\n+ \"katana:0xf7bed7215EEF1003fac426682Cf2edeb958569f7\"\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x2A5A3eabB9Fd571A3Af0299eebdF8EaafE29a914\"]]\n values.$pastUpgrades.2:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0xf7bed7215EEF1003fac426682Cf2edeb958569f7\"]]\n values.$upgradeCount:\n- 1\n+ 3\n values.version:\n- \"1.5.0-beta.6\"\n+ \"1.6.1\"\n values.proxyAdmin:\n+ \"katana:0x4200000000000000000000000000000000000018\"\n values.proxyAdminOwner:\n+ \"katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.katana:0x7e27d992B349B96ea8D32378B7c53b3D58139a2E:\n- \"BaseFeeVault\"\n implementationNames.katana:0xf7bed7215EEF1003fac426682Cf2edeb958569f7:\n+ \"BaseFeeVault\"\n }\n```\n\n```diff\n contract L1FeeVault (katana:0x420000000000000000000000000000000000001A) [opstack/Layer2/L1FeeVault_karst] {\n +++ description: Collects the L1 portion of the L2 transaction fees.\n template:\n- \"opstack/Layer2/L1FeeVault\"\n+ \"opstack/Layer2/L1FeeVault_karst\"\n sourceHashes.1:\n- \"0xe6ecd83f7dc6c3a0896d3311ac56023fae6df18d6b4059195c2dfc1d65717687\"\n+ \"0xf7b9f825b6af20abb355da09822d54e6e3fa7243439293826bd7271f87747775\"\n values.$implementation:\n- \"katana:0x0ebC896698De72A444d00Dc3d046B432c555EB09\"\n+ \"katana:0xf7bed7215EEF1003fac426682Cf2edeb958569f7\"\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x2A5A3eabB9Fd571A3Af0299eebdF8EaafE29a914\"]]\n values.$pastUpgrades.2:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0xf7bed7215EEF1003fac426682Cf2edeb958569f7\"]]\n values.$upgradeCount:\n- 1\n+ 3\n values.version:\n- \"1.5.0-beta.5\"\n+ \"1.6.1\"\n values.proxyAdmin:\n+ \"katana:0x4200000000000000000000000000000000000018\"\n values.proxyAdminOwner:\n+ \"katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.katana:0x0ebC896698De72A444d00Dc3d046B432c555EB09:\n- \"L1FeeVault\"\n implementationNames.katana:0xf7bed7215EEF1003fac426682Cf2edeb958569f7:\n+ \"BaseFeeVault\"\n }\n```\n\n```diff\n contract OperatorFeeVault (katana:0x420000000000000000000000000000000000001b) [opstack/Layer2/OperatorFeeVault] {\n +++ description: Collects the operator fees.\n sourceHashes.1:\n- \"0xee5dca77d41cb3095dbb6dbb7f542e32ec79f4ebfb289ca0622873a493080ffb\"\n+ \"0x0ba9b644913957c9f60eda0ab433da4523bb2437156e4dd8dadca627c884ba2a\"\n values.$implementation:\n- \"katana:0x4fa2Be8cd41504037F1838BcE3bCC93bC68Ff537\"\n+ \"katana:0xEddf416c7159387cc6DF3015700F79Cfb8911373\"\n values.$pastUpgrades.1:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x2A5A3eabB9Fd571A3Af0299eebdF8EaafE29a914\"]]\n values.$pastUpgrades.2:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0xEddf416c7159387cc6DF3015700F79Cfb8911373\"]]\n values.$upgradeCount:\n- 1\n+ 3\n values.version:\n- \"1.0.0\"\n+ \"1.1.1\"\n values.proxyAdmin:\n+ \"katana:0x4200000000000000000000000000000000000018\"\n values.proxyAdminOwner:\n+ \"katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.katana:0x4fa2Be8cd41504037F1838BcE3bCC93bC68Ff537:\n- \"OperatorFeeVault\"\n implementationNames.katana:0xEddf416c7159387cc6DF3015700F79Cfb8911373:\n+ \"OperatorFeeVault\"\n }\n```\n\n```diff\n contract SchemaRegistry (katana:0x4200000000000000000000000000000000000020) [opstack/Layer2/SchemaRegistry] {\n +++ description: Contracts to register schemas for the Ethereum Attestation Service (EAS).\n sourceHashes.1:\n- \"0x184ad3273d7e257c9f1b138ecff33286528599eae858abc182fdc3068060af90\"\n+ \"0xe2a60db541c987ffa9a6ed73b9100c7f62f2574966a20c903a73a8f730c7dfcc\"\n values.$implementation:\n- \"katana:0xc0d3c0d3c0d3C0d3c0d3C0D3C0D3c0d3C0D30020\"\n+ \"katana:0x70DE55BC0bfBC52C5D0CCA1DA5816c2428886A34\"\n values.$pastUpgrades.0:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0x70DE55BC0bfBC52C5D0CCA1DA5816c2428886A34\"]]\n values.$upgradeCount:\n- 0\n+ 1\n values.version:\n- \"1.3.1-beta.1\"\n+ \"1.3.1-beta.2\"\n implementationNames.katana:0xc0d3c0d3c0d3C0d3c0d3C0D3C0D3c0d3C0D30020:\n- \"SchemaRegistry\"\n implementationNames.katana:0x70DE55BC0bfBC52C5D0CCA1DA5816c2428886A34:\n+ \"SchemaRegistry\"\n }\n```\n\n```diff\n contract EAS (katana:0x4200000000000000000000000000000000000021) [opstack/Layer2/EAS] {\n +++ description: Contract containing the main logic for the Ethereum Attestation Service (EAS).\n sourceHashes.1:\n- \"0x565fcc3b9d0821e7893d6c738d9eafe13dc0e30795042c019bb419f2d6e32c78\"\n+ \"0x16924e7d7c1a311d6c9da93c6bf8bc7bd5454a0efde4d6e365e66c87ef4a0951\"\n values.$implementation:\n- \"katana:0xC0D3c0D3C0d3c0D3c0D3C0D3c0D3c0d3c0d30021\"\n+ \"katana:0xbEc660b456B84A081E90aF29BE43385BDa5bF7b6\"\n values.$pastUpgrades.0:\n+ [\"2026-09-23T16:00:01.000Z\",\"0xd2e9eb2ba77098610e7dda134e70f741f7456f4ec49912d667860c40988dfd8e\",[\"katana:0xbEc660b456B84A081E90aF29BE43385BDa5bF7b6\"]]\n values.$upgradeCount:\n- 0\n+ 1\n values.version:\n- \"1.4.1-beta.1\"\n+ \"1.4.1-beta.3\"\n implementationNames.katana:0xC0D3c0D3C0d3c0D3c0D3C0D3c0D3c0d3c0d30021:\n- \"EAS\"\n implementationNames.katana:0xbEc660b456B84A081E90aF29BE43385BDa5bF7b6:\n+ \"EAS\"\n }\n```"
}
]
},
{
"id": "7567e9b0",
"date": "Wed, 23 Sep 2026 05:47:11 GMT",
"timestamp": 1788793515,
"description": "Refresh config-derived discovery metadata at the main-branch block.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract PreimageOracle (eth:0x1E1d73536A081Ef2F355d29794547a9770Aeb1E0) [opstack/PreimageOracle]\n +++ description: The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n```\n\n```diff\n+ Status: CREATED\n contract MIPS (eth:0xaCc005DCd857B401e4732E6F7837135A22825cfA) [opstack/MIPS]\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```"
}
]
},
{
"id": "60da3e8b",
"date": "Mon, 07 Sep 2026 15:06:55 GMT",
"timestamp": 1788793515,
"description": "All OP-stack L1 contracts upgraded to the current OP stack release (Karst generation, same as the Superchain). The forked OptimismPortal2 still disables ETH and token bridging while allowing forced transactions.\n\nNo risk related changes.\n\nImplementation diffs:\n- OptimismPortal2: https://disco.l2beat.com/diff/eth:0x5dEcbEEEFeCc5353355CD79A8fECC4c03F61ce8a/eth:0x3160738db14B27EAe2D0d1b622259010308f4C38\n- SystemConfig: https://disco.l2beat.com/diff/eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED/eth:0x42Ad0173051225Ac784100e9acD43349707F4db9\n- SuperchainConfig: https://disco.l2beat.com/diff/eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957/eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550\n- DisputeGameFactory: https://disco.l2beat.com/diff/eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50/eth:0x72B971717E088B59F26d4236BE222ADB6ACD393b\n- AnchorStateRegistry: https://disco.l2beat.com/diff/eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E/eth:0x8F40Cc98D694AB986F026C5383A181FCc9B6B281\n- L1CrossDomainMessenger: https://disco.l2beat.com/diff/eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0/eth:0x59D497530b00062f40950ba8EaB88868bf7F86f0\n- L1StandardBridge: https://disco.l2beat.com/diff/eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A/eth:0xB37a11AadF167B2F0b8dD85372De4bC66CD4A891\n- L1ERC721Bridge: https://disco.l2beat.com/diff/eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9/eth:0x9F164f1d02A81e06D639E55F65a87f0070E3Cb2e\n- OptimismMintableERC20Factory: https://disco.l2beat.com/diff/eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB/eth:0xaAbEA75Da509fA518Fd8a91Eae4BE5813B829b12\n- DelayedWETH (new proxy, impl diff): https://disco.l2beat.com/diff/eth:0x33Dadc2d1aA9BB613A7AE6B28425eA00D44c6998/eth:0xE440CC08A71694C8229323803F59024E3144630e\n- PermissionedDisputeGame (replaced): https://disco.l2beat.com/diff/eth:0xA7A26BbA1191a064637d7B0b23896589F4e4d22D/eth:0xe1dFFCBE4e22B813F26d2106D943C102e7cAb87e\n- MIPS (replaced): https://disco.l2beat.com/diff/eth:0x6463dEE3828677F6270d83d45408044fc5eDB908/eth:0xaCc005DCd857B401e4732E6F7837135A22825cfA\n- PreimageOracle (replaced): https://disco.l2beat.com/diff/eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3/eth:0x1E1d73536A081Ef2F355d29794547a9770Aeb1E0",
"isHighSeverity": true,
"changeCount": 142,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1ERC721Bridge (eth:0x15a32FCeA89617Ff450F094cDE102CCa46598B7F) [opstack/L1ERC721Bridge] {\n +++ description: Used to bridge ERC-721 tokens from host chain to this chain.\n sourceHashes.1:\n- \"0x1f65fda230b6d0df44e466b06418b2e12a401ef82c07521ad18d2f4ae6c70fb2\"\n+ \"0xc5ed62b03fb7c1340609ace7ebb0c5bf8d43b1814b1ab4f10863bfa21d13b90b\"\n values.$implementation:\n- \"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9\"\n+ \"eth:0x9F164f1d02A81e06D639E55F65a87f0070E3Cb2e\"\n values.$pastUpgrades.5:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9\"]]\n values.$pastUpgrades.6:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.7:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x9F164f1d02A81e06D639E55F65a87f0070E3Cb2e\"]]\n values.$upgradeCount:\n- 5\n+ 8\n values.version:\n- \"2.9.0\"\n+ \"2.9.1\"\n implementationNames.eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9:\n- \"L1ERC721Bridge\"\n implementationNames.eth:0x9F164f1d02A81e06D639E55F65a87f0070E3Cb2e:\n+ \"L1ERC721Bridge\"\n }\n```\n\n```diff\n contract ProxyAdmin (eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832) [global/ProxyAdmin] {\n +++ description: None\n directlyReceivedPermissions.5:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x99e1fe97767683bbba69fF570b4BbEd7C3e0649e\",\"role\":\"admin\"}\n directlyReceivedPermissions.7:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0xb41151Bf2B989d3771caBd5BCb5C435949543322\",\"role\":\"admin\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract PreimageOracle (eth:0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3) [opstack/PreimageOracle]\n +++ description: The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n```\n\n```diff\n contract L1CrossDomainMessenger (eth:0x2008A6Ba8CAF85AaFAe7880664Dfe681D533ac2E) [opstack/L1CrossDomainMessenger] {\n +++ description: Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n sourceHashes.1:\n- \"0x1f2c13ad1144ce6548e578b834c33b0d65b1564aeb0d5c708ed4e7fb50535cc6\"\n+ \"0x694050f95b40e6d92ee91ca0f60acb9c4a74d1b0325c33fd4bd7445fde90e806\"\n values.$implementation:\n- \"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0\"\n+ \"eth:0x59D497530b00062f40950ba8EaB88868bf7F86f0\"\n values.$pastUpgrades.5:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0\"]]\n values.$pastUpgrades.6:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.7:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x59D497530b00062f40950ba8EaB88868bf7F86f0\"]]\n values.$upgradeCount:\n- 5\n+ 8\n values.version:\n- \"2.11.0\"\n+ \"2.11.1\"\n implementationNames.eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0:\n- \"L1CrossDomainMessenger\"\n implementationNames.eth:0x59D497530b00062f40950ba8EaB88868bf7F86f0:\n+ \"L1CrossDomainMessenger\"\n }\n```\n\n```diff\n contract OptimismPortal2 (eth:0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E) [katana/OptimismPortal2] {\n +++ description: Stores the configuration of the OP stack components and proof system. Specifies which game type is used for state validation, which currently is the PermissionedDisputeGame. This contract is modified to disable asset bridging, but it allows forced transactions.\n sourceHashes.1:\n- \"0xfcecb325a86c39482f8e9d29272f25089eec0b5fbefe21444fd1ea690c911f0c\"\n+ \"0xcdca45f93efdef12515a42464aa744c87143d83208163ef6a97317da454c7eac\"\n values.$implementation:\n- \"eth:0x5dEcbEEEFeCc5353355CD79A8fECC4c03F61ce8a\"\n+ \"eth:0x3160738db14B27EAe2D0d1b622259010308f4C38\"\n values.$pastUpgrades.9:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x97cEbbf8959e2A5476fbe9B98A21806Ec234609B\"]]\n values.$pastUpgrades.10:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.11:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0xe89F13c5ee4033B2D3cD76C9d6958eFBfe26D3C2\"]]\n values.$pastUpgrades.12:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x3160738db14B27EAe2D0d1b622259010308f4C38\"]]\n values.$upgradeCount:\n- 9\n+ 13\n values.version:\n- \"agg3.15.0\"\n+ \"5.6.1-agglayer\"\n implementationNames.eth:0x5dEcbEEEFeCc5353355CD79A8fECC4c03F61ce8a:\n- \"OptimismPortal2\"\n implementationNames.eth:0x3160738db14B27EAe2D0d1b622259010308f4C38:\n+ \"OptimismPortal2\"\n }\n```\n\n```diff\n contract SuperchainConfig (eth:0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811) [opstack/SuperchainConfigFake_expiry] {\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages pause states for each chain connected to it, as well as a global pause state for all chains. The guardian role can pause either separately, but each pause expires after 3mo 1d if left untouched.\n template:\n- \"opstack/SuperchainConfigNoGuard\"\n+ \"opstack/SuperchainConfigFake_expiry\"\n sourceHashes.1:\n- \"0x5fb525d1572fb90d060d122143b915059cbff39e0298b345857fd4267d7f6b28\"\n+ \"0x2cd597b7305a446a1df355e6909cbd75fe38aa045faf4876a8e5496eebc1734f\"\n description:\n- \"This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and `GUARDIAN_SLOT`, the address of the guardian which can pause and unpause the system. Since the OptimismPortal is not used for state root management in this setup, the guardian role and pausing may be inconsequential.\"\n+ \"This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages pause states for each chain connected to it, as well as a global pause state for all chains. The guardian role can pause either separately, but each pause expires after 3mo 1d if left untouched.\"\n values.$implementation:\n- \"eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957\"\n+ \"eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550\"\n values.$pastUpgrades.6:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.7:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550\"]]\n values.$upgradeCount:\n- 6\n+ 8\n values.version:\n- \"2.4.0\"\n+ \"2.4.2\"\n values.pauseExpiryFmt:\n+ \"3mo 1d\"\n implementationNames.eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957:\n- \"SuperchainConfig\"\n implementationNames.eth:0xE4F9779ab53070a55db24dFAeFf9AF147c6ED550:\n+ \"SuperchainConfig\"\n category.name:\n- \"Spam\"\n+ \"Shared Infrastructure\"\n category.priority:\n- -1\n+ 4\n fieldMeta:\n+ {\"paused\":{\"severity\":\"HIGH\"}}\n }\n```\n\n```diff\n- Status: DELETED\n contract MIPS (eth:0x6463dEE3828677F6270d83d45408044fc5eDB908) [opstack/MIPS]\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```\n\n```diff\n contract L1StandardBridge (eth:0x98906C3f90A06B5484DD67bf32938815d2993dBC) [opstack/L1StandardBridge] {\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n sourceHashes.1:\n- \"0xcacd38e7b52353ad3463da40b7e7a29b028f95500a82590d2b8f8ffd26b83f6d\"\n+ \"0x6469155800e1489607c8fa062550a362dfa8978885df4714ca4653e5f3d25b0c\"\n values.$implementation:\n- \"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A\"\n+ \"eth:0xB37a11AadF167B2F0b8dD85372De4bC66CD4A891\"\n values.version:\n- \"2.8.0\"\n+ \"2.8.2\"\n implementationNames.eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A:\n- \"L1StandardBridge\"\n implementationNames.eth:0xB37a11AadF167B2F0b8dD85372De4bC66CD4A891:\n+ \"L1StandardBridge\"\n }\n```\n\n```diff\n- Status: DELETED\n contract PermissionedDisputeGame (eth:0xA7A26BbA1191a064637d7B0b23896589F4e4d22D) [opstack/PermissionedDisputeGame]\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n```\n\n```diff\n contract OptimismMintableERC20Factory (eth:0xA84C37cD0b9bA1B43276C11976DBE9d1344C7f4E) [opstack/OptimismMintableERC20Factory] {\n +++ description: A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintableERC20 as this chain's representation of a token on the host chain, or vice-versa.\n sourceHashes.1:\n- \"0x307d4cb83e682629880fe9bb874a188805e3b93cb11a2cbf80095975f1e5b04e\"\n+ \"0x11b0ed6f15cabf613492a8d54c55304a17cf60f4fd94a655d7e720d4556906d0\"\n values.$implementation:\n- \"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB\"\n+ \"eth:0xaAbEA75Da509fA518Fd8a91Eae4BE5813B829b12\"\n values.$pastUpgrades.3:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB\"]]\n values.$pastUpgrades.4:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.5:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0xaAbEA75Da509fA518Fd8a91Eae4BE5813B829b12\"]]\n values.$upgradeCount:\n- 3\n+ 6\n values.version:\n- \"1.10.2\"\n+ \"1.11.0\"\n values.proxyAdmin:\n+ \"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"\n values.proxyAdminOwner:\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB:\n- \"OptimismMintableERC20Factory\"\n implementationNames.eth:0xaAbEA75Da509fA518Fd8a91Eae4BE5813B829b12:\n+ \"OptimismMintableERC20Factory\"\n }\n```\n\n```diff\n contract AnchorStateRegistry (eth:0xaA8a62563CFe4E36118ED479B5486F503b438376) [opstack/AnchorStateRegistry_post20] {\n +++ description: Contains the latest confirmed state root that can be used as a starting point in a dispute game. This variant stores respectedGameType, retirementTimestamp, and disputeGameFinalityDelaySeconds locally and drops the legacy *FromGame fields, since the AggregateVerifier model does not expose vm()/weth()/absolutePrestate() on its game implementation.\n template:\n- \"opstack/AnchorStateRegistry_post13\"\n+ \"opstack/AnchorStateRegistry_post20\"\n sourceHashes.1:\n- \"0xf808a203af41f7932eb8e39985e56a7c75c940a260fb17d76d1003a3793281b5\"\n+ \"0x10f64124093daab87c84d97148854054f9622bf86e09e98d496f123be3368122\"\n description:\n- \"Contains the latest confirmed state root that can be used as a starting point in a dispute game. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame.\"\n+ \"Contains the latest confirmed state root that can be used as a starting point in a dispute game. This variant stores respectedGameType, retirementTimestamp, and disputeGameFinalityDelaySeconds locally and drops the legacy *FromGame fields, since the AggregateVerifier model does not expose vm()/weth()/absolutePrestate() on its game implementation.\"\n values.$implementation:\n- \"eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E\"\n+ \"eth:0x8F40Cc98D694AB986F026C5383A181FCc9B6B281\"\n values.$pastUpgrades.1:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x36398155Cd17cfe804F69b233eDDA800DD4D5aA5\"]]\n values.$pastUpgrades.2:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.3:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x8F40Cc98D694AB986F026C5383A181FCc9B6B281\"]]\n values.$upgradeCount:\n- 1\n+ 4\n values.absolutePrestateFromGame:\n- \"eth:0x0000000000000000000000000000000000000000\"\n values.challengePeriodFromOracle:\n- \"eth:0x0000000000000000000000000000000000000000\"\n values.oracleFromVm:\n- \"eth:0x0000000000000000000000000000000000000000\"\n values.version:\n- \"3.5.0\"\n+ \"3.9.0\"\n values.vmFromGame:\n- \"eth:0x0000000000000000000000000000000000000000\"\n values.wethFromGame:\n- \"eth:0x0000000000000000000000000000000000000000\"\n values.getStartingAnchorRoot:\n+ {\"root\":\"0xdead000000000000000000000000000000000000000000000000000000000000\",\"l2SequenceNumber\":0}\n fieldMeta.retirementTimestamp:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.disputeGameFinalityDelaySeconds:\n+ {\"severity\":\"HIGH\"}\n implementationNames.eth:0xeb69cC681E8D4a557b30DFFBAd85aFfD47a2CF2E:\n- \"AnchorStateRegistry\"\n implementationNames.eth:0x8F40Cc98D694AB986F026C5383A181FCc9B6B281:\n+ \"AnchorStateRegistry\"\n usedTypes.0.arg.621:\n+ \"AggregateVerifier\"\n usedTypes.0.arg.8:\n+ \"FaultDisputeGame\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DelayedWETH (eth:0xb41151Bf2B989d3771caBd5BCb5C435949543322) [opstack/DelayedWETH]\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n```\n\n```diff\n contract SystemConfig (eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174) [opstack/SystemConfig] {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n sourceHashes.1:\n- \"0xaa1b3bedab4e63198240e9dea4503f0e615e4d18a545961c9f11b72143279fbc\"\n+ \"0x3d8e7cdbbdbf274bba0a11a060b01d5a50e3a478683af9ec079874d1758576d6\"\n values.$implementation:\n- \"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED\"\n+ \"eth:0x42Ad0173051225Ac784100e9acD43349707F4db9\"\n values.$pastUpgrades.6:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0xd392c27B84b1cA776528F2704BC67B82a62132d2\"]]\n values.$pastUpgrades.7:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.8:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x42Ad0173051225Ac784100e9acD43349707F4db9\"]]\n values.$upgradeCount:\n- 6\n+ 9\n values.getAddresses.delayedWETH:\n+ \"eth:0x99e1fe97767683bbba69fF570b4BbEd7C3e0649e\"\n values.getAddresses.opcm:\n+ \"eth:0x6FD5B86B93A0405c1eF082ED6Ed3b28e94f022f4\"\n values.version:\n- \"3.11.0\"\n+ \"3.14.2\"\n values.DELAYED_WETH_SLOT:\n+ \"0x51547f31a231e1007dca33017faa3da20d959b95087c588a7768bfb922fd58ff\"\n values.delayedWETH:\n+ \"eth:0x99e1fe97767683bbba69fF570b4BbEd7C3e0649e\"\n values.isCustomGasToken:\n+ false\n values.lastUsedOPCM:\n+ \"eth:0x6FD5B86B93A0405c1eF082ED6Ed3b28e94f022f4\"\n values.lastUsedOPCMVersion:\n+ \"7.1.17\"\n values.OPCM_SLOT:\n+ \"0x99f45962df4bc30de8d4c3c6d1ffc0f100edce16e80c7a5768b6d55ca463ff42\"\n implementationNames.eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED:\n- \"SystemConfig\"\n implementationNames.eth:0x42Ad0173051225Ac784100e9acD43349707F4db9:\n+ \"SystemConfig\"\n }\n```\n\n```diff\n contract Polygon Multisig 2 (eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) [GnosisSafe] {\n +++ description: None\n receivedPermissions.9:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x99e1fe97767683bbba69fF570b4BbEd7C3e0649e\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.11:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0xb41151Bf2B989d3771caBd5BCb5C435949543322\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n }\n```\n\n```diff\n contract DisputeGameFactory (eth:0xe06278351d120288eDfCB963F934113Ca3C21AFe) [opstack/DisputeGameFactory_v2] {\n +++ description: The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them. This variant exposes per-type reads only; the legacy array views (gameImpls[], initBonds[]) were removed in the new implementation.\n template:\n- \"opstack/DisputeGameFactory\"\n+ \"opstack/DisputeGameFactory_v2\"\n sourceHashes.1:\n- \"0x7daf6049672fd2ab7dc8dd3b6287e1d0a40958346c5e2857c4616a73dcac4da6\"\n+ \"0x8912e655e26f51d4384fc950df847ae65bccf1f5ec5458642402f385c3dadf78\"\n description:\n- \"The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\"\n+ \"The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them. This variant exposes per-type reads only; the legacy array views (gameImpls[], initBonds[]) were removed in the new implementation.\"\n values.$implementation:\n- \"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50\"\n+ \"eth:0x72B971717E088B59F26d4236BE222ADB6ACD393b\"\n values.$pastUpgrades.4:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0xc040F392E52Cb6970CA8E110c280fE24E07C5e2c\"]]\n values.$pastUpgrades.5:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x2476c911E6D4D9411E677D8Faf15a64ac1fDEEe8\"]]\n values.$pastUpgrades.6:\n+ [\"2026-09-01T06:51:23.000Z\",\"0xdc33ac095940c214c81adf08eda36e0a14d97f397597f4d8e5d2fbbc4cd20033\",[\"eth:0x72B971717E088B59F26d4236BE222ADB6ACD393b\"]]\n values.$upgradeCount:\n- 4\n+ 7\n values.challengerFromDGF:\n- \"UNRESOLVED\"\n+ \"eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n values.game2000:\n- \"eth:0x0000000000000000000000000000000000000000\"\n values.gameImpls:\n- [\"eth:0x0000000000000000000000000000000000000000\",\"eth:0xA7A26BbA1191a064637d7B0b23896589F4e4d22D\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\"]\n values.initBonds:\n- [0,0,0,0,0]\n values.proposerFromDGF:\n- \"UNRESOLVED\"\n+ \"eth:0x4A6f5889409Bf4Bf3Bff0Fef585D7A29FdA64258\"\n values.version:\n- \"1.3.0\"\n+ \"1.6.1\"\n values.wethFromDGF:\n- \"UNRESOLVED\"\n+ \"eth:0x99e1fe97767683bbba69fF570b4BbEd7C3e0649e\"\n+++ severity: HIGH\n values.game0:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n+++ severity: HIGH\n values.game1:\n+ \"eth:0xe1dFFCBE4e22B813F26d2106D943C102e7cAb87e\"\n+++ severity: HIGH\n values.game621:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n+++ severity: HIGH\n values.game8:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.game8Args:\n+ \"0x\"\n values.game8Vm:\n+ \"UNRESOLVED\"\n values.initBondGame0:\n+ 0\n values.initBondGame1:\n+ 0\n values.initBondGame621:\n+ 0\n values.initBondGame8:\n+ 0\n fieldMeta.gameImpls:\n- {\"severity\":\"HIGH\"}\n fieldMeta.game2000:\n- {\"severity\":\"HIGH\"}\n fieldMeta.game621:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game0:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game1:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.game8:\n+ {\"severity\":\"HIGH\"}\n implementationNames.eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50:\n- \"DisputeGameFactory\"\n implementationNames.eth:0x72B971717E088B59F26d4236BE222ADB6ACD393b:\n+ \"DisputeGameFactory\"\n usedTypes.0:\n+ {\"typeCaster\":\"SliceAddress\",\"arg\":{\"offset\":32}}\n }\n```\n\n```diff\n contract Safe (eth:0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x28260fD38F737e98F1599eCd385d4eB13C5A7A1f\"\n values.multisigThreshold:\n- \"2 of 10 (20%)\"\n+ \"2 of 11 (18%)\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DelayedWETH (eth:0x99e1fe97767683bbba69fF570b4BbEd7C3e0649e) [opstack/DelayedWETH]\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n```\n\n```diff\n+ Status: CREATED\n contract PermissionedDisputeGame (eth:0xe1dFFCBE4e22B813F26d2106D943C102e7cAb87e) [opstack/PermissionedDisputeGame]\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n```"
}
]
},
{
"id": "d922a712",
"date": "Tue, 25 Aug 2026 08:59:35 GMT",
"timestamp": 1787645431,
"description": "New selected op succinct config.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) [katana/AggchainFEP_post035] {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.selectedOpSuccinctConfig.aggregationVkey:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x00d68eb096f4c731512562f7a06e6bba104dbcb959261edd3eb3ec542c200c89\"\n values.selectedOpSuccinctConfig.rangeVkeyCommitment:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x1f089f9d1cd3f727775788003d3e496037d3625e2e9de6e5005f1e9707ba3b8f\"\n values.selectedOpSuccinctConfig.rollupConfigHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"Katana OP Succinct v3.12.0 rollup config (Kona v1.6.0)\"\n+++ description: currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\n+++ severity: HIGH\n values.selectedOpSuccinctConfigName:\n- \"0xe3fbe1170998c9f380d29247864dd07f2f17367a23ae5e0fa409ebd371d97d6f\"\n+ \"0x0f30c0b6846b034a146a47c5185fb9a4321df3569376773238ef30c831019190\"\n }\n```\n\n```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x9402c42dB162d5a0927c032136f40Cc9C71853F2\"\n values.multisigThreshold:\n- \"4 of 10 (40%)\"\n+ \"4 of 11 (36%)\"\n }\n```"
}
]
},
{
"id": "a3fbcb18",
"date": "Thu, 23 Jul 2026 13:53:56 GMT",
"timestamp": 1784814637,
"description": "One Polygon Labs Engineering/Security Multisig signer was rotated and another removed, changing it from 2-of-8 to 2-of-7.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Polygon Labs Engineering/Security Multisig (eth:0x9d851f8b8751c5FbC09b9E74E6e68E9950949052) [GnosisSafe] {\n +++ description: None\n values.$members.1:\n- \"eth:0xe0e8e6bBDef7bbcf8dF1F5Ac0ab9906BFe991d8B\"\n+ \"eth:0xFB2a738AE435610354b132c4a4ee647558f663eb\"\n values.$members.6:\n- \"eth:0xED7cC82235A7757702475c8f77c7830c095FB5a2\"\n values.multisigThreshold:\n- \"2 of 8 (25%)\"\n+ \"2 of 7 (29%)\"\n }\n```"
}
]
},
{
"id": "7f0f13c0",
"date": "Tue, 21 Jul 2026 08:43:22 GMT",
"timestamp": 1784623318,
"description": "4 multisig signers added.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Safe (eth:0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x9f02595fBFD199C4cBC02878fc9B2b2E07b0840C\"\n values.$members.1:\n+ \"eth:0x1319279d6d54dB0883F7bAF822191c7184Db0c3d\"\n values.$members.2:\n+ \"eth:0x6Ab87a62E250A5EB09a53Fca832B9Bda480c3890\"\n values.$members.3:\n+ \"eth:0x573D7a729cfcF20B81D70732d625Ae31549B8b91\"\n values.multisigThreshold:\n- \"2 of 6 (33%)\"\n+ \"2 of 10 (20%)\"\n }\n```"
}
]
},
{
"id": "c93bf0f0",
"date": "Fri, 17 Jul 2026 07:35:16 GMT",
"timestamp": 1784270104,
"description": "New op-succinct programHashes - reproduced from v3.10.0 . Add rollup config preimg and instructions to repro.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) [katana/AggchainFEP_post035] {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.selectedOpSuccinctConfig.aggregationVkey:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x0034587dfb1de8163284d39f3043f5fadfa92f9e03fb3e0315eb469c550fde40\"\n values.selectedOpSuccinctConfig.rangeVkeyCommitment:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x1b04822373ca65680026b5610c1edf424798421b032ef9117b2c264661de246f\"\n values.selectedOpSuccinctConfig.rollupConfigHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"Katana OP Succinct v3.10.0 rollup config (Kona v1.6.0)\"\n+++ description: currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\n+++ severity: HIGH\n values.selectedOpSuccinctConfigName:\n- \"0x3cb66b8472d88440173415d4d4a316b9df81ac208e63e02829f823fccbe3f547\"\n+ \"0xe3fbe1170998c9f380d29247864dd07f2f17367a23ae5e0fa409ebd371d97d6f\"\n }\n```\n\n```diff\n contract Katana Steakhouse Financial / Morpho Multisig (eth:0x827e86072B06674a077f592A531dcE4590aDeCdB) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0xfc615395336aADe67fd853a0157001a215Ea1279\"\n values.multisigThreshold:\n- \"2 of 6 (33%)\"\n+ \"2 of 7 (29%)\"\n }\n```"
}
]
},
{
"id": "67d3f4d9",
"date": "Wed, 08 Jul 2026 11:18:11 GMT",
"timestamp": 1783509417,
"description": "One multisig signer removed.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana yieldRecipient Mulsitig (eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0x34d23C4fb6542B467cA8724bAD30AC811399b184\"\n values.multisigThreshold:\n- \"2 of 7 (29%)\"\n+ \"2 of 6 (33%)\"\n }\n```\n\n```diff\n contract Safe (eth:0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb) [GnosisSafe] {\n +++ description: None\n values.$members.5:\n- \"eth:0x59cE4e1709c7E462F3b72Ca3e1256dFa7358FC29\"\n values.multisigThreshold:\n- \"2 of 7 (29%)\"\n+ \"2 of 6 (33%)\"\n }\n```"
}
]
},
{
"id": "870b374c",
"date": "Tue, 23 Jun 2026 12:57:22 GMT",
"timestamp": 1782219118,
"description": "Update op-succinct programs to v6.1.0.",
"isHighSeverity": true,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) [katana/AggchainFEP_post035] {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.selectedOpSuccinctConfig.aggregationVkey:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x0095c1f31a6e1003e1e3083ca45bf69b95c9a1468708df1029c9cf4bceb8a852\"\n values.selectedOpSuccinctConfig.rangeVkeyCommitment:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x3813362d038935ad6cb1e2566278975f08be38a92bfe7137505ef0c14a9d1972\"\n values.selectedOpSuccinctConfig.rollupConfigHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x352a9738897d236014fd5bd11986bf008b3b623b037405900ab338f93cdf5272\"\n+++ description: currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\n+++ severity: HIGH\n values.selectedOpSuccinctConfigName:\n- \"0xe719c402037f76346e69e021164101e16954889c052f75f16a29758815723dde\"\n+ \"0x3cb66b8472d88440173415d4d4a316b9df81ac208e63e02829f823fccbe3f547\"\n }\n```"
}
]
},
{
"id": "31762479",
"date": "Tue, 16 Jun 2026 09:07:56 GMT",
"timestamp": 1781600787,
"description": "Add multisig signer.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SafeL2 (katana:0x7990513f4d64d57524a0B2519759f53B0cB1aEbd) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"katana:0xb3dA4c1Ba8De9E04f22B1554a070189F518FDCac\"\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"3 of 6 (50%)\"\n }\n```"
}
]
},
{
"id": "f40af055",
"date": "Wed, 10 Jun 2026 14:34:54 GMT",
"timestamp": 1781102006,
"description": "Two conduit ms members removed.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) [GnosisSafe] {\n +++ description: None\n values.$members.4:\n- \"eth:0x65D1d44B8B2fE15d45A03708E0835C7E98a56007\"\n values.$members.8:\n- \"eth:0xa4000bDD2bB92ce6750b31F1eeda47Bd1cB8e6e4\"\n values.multisigThreshold:\n- \"4 of 12 (33%)\"\n+ \"4 of 10 (40%)\"\n }\n```"
}
]
},
{
"id": "25184f45",
"date": "Tue, 02 Jun 2026 13:01:35 GMT",
"timestamp": 1780404229,
"description": "Config ignores and conduit ms changes.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0xcdC931935768c0562AfE989A366a3Dc4d52F4853\"\n values.$members.8:\n- \"eth:0x3840f487A17A41100DD1Bf0946c34f132a57Fd5f\"\n }\n```\n\n```diff\n contract Polygon Labs Engineering/Security Multisig (eth:0x9d851f8b8751c5FbC09b9E74E6e68E9950949052) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2\"\n values.$members.1:\n+ \"eth:0xe0e8e6bBDef7bbcf8dF1F5Ac0ab9906BFe991d8B\"\n values.$members.2:\n+ \"eth:0x6Ab87a62E250A5EB09a53Fca832B9Bda480c3890\"\n values.multisigThreshold:\n- \"2 of 5 (40%)\"\n+ \"2 of 8 (25%)\"\n }\n```"
}
]
},
{
"id": "e7d986f3",
"date": "Fri, 29 May 2026 13:34:21 GMT",
"timestamp": 1780060245,
"description": "Standard L2 contract sources have been verified.",
"isHighSeverity": false,
"changeCount": 44,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AgglayerBridgeL2 (katana:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe) [katana/AgglayerBridgeL2] {\n +++ description: Agglayer bridge contract. Supports interop with Ethereum and blockchains connected to Agglayer. Escrows all preminted ETH because it cannot mint on the L2. The globalExitRootManager is used as an oracle to validate bridge messages against.\n values.claimedGlobalIndexHashChain:\n- \"0x5fede20963bde12c20e3076c4426550f570914a8a035c1381bc98f8bed306a46\"\n+ \"0xdef05ec6820a531b383dc3f9dbbc1aac9846e2eab7a821929b5a07cc51659e4c\"\n values.getRoot:\n- \"0x1d743ae7262c7410af3fb680660e6c1f336b2f49609f709a69a9fd8b9ad21bb2\"\n+ \"0x5ed5cfaf86b2b848194a0a9ebfa969a88ddee6b8f6f007a0ef658482f2665402\"\n }\n```\n\n```diff\n contract GlobalExitRootManagerL2SovereignChain (katana:0xa40D5f56745a118D0906a34E69aeC8C0Db1cB8fA) [katana/GlobalExitRootManagerL2SovereignChain] {\n +++ description: Manages Layer 2 and global merkle roots (exit roots). It stores exit roots written during bridge deposits, accepts imported global exit roots from a permissioned address, and manages historical roots.\n values.insertedGERHashChain:\n- \"0xaae24c57922b6453c1812383dba7b31cf9788b57cfc281e208b4e2911e5feee7\"\n+ \"0x59bc3b88b56a09b106e04e1ffe3fd6dc754bf81029ef9cfe2723275b8f5b347c\"\n values.lastRollupExitRoot:\n- \"0x1d743ae7262c7410af3fb680660e6c1f336b2f49609f709a69a9fd8b9ad21bb2\"\n+ \"0x5ed5cfaf86b2b848194a0a9ebfa969a88ddee6b8f6f007a0ef658482f2665402\"\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n contract ProxyAdmin (katana:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A) [global/ProxyAdmin] {\n +++ description: None\n name:\n- \"upgradeProxy\"\n+ \"ProxyAdmin\"\n unverified:\n- true\n receivedPermissions:\n- [{\"permission\":\"upgrade\",\"from\":\"katana:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe\",\"role\":\"admin\"},{\"permission\":\"upgrade\",\"from\":\"katana:0xa40D5f56745a118D0906a34E69aeC8C0Db1cB8fA\",\"role\":\"admin\"}]\n values.owner:\n+ \"katana:0xBBa0935Fa93Eb23de7990b47F0D96a8f75766d13\"\n implementationNames.katana:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A:\n- \"\"\n+ \"ProxyAdmin\"\n template:\n+ \"global/ProxyAdmin\"\n sourceHashes:\n+ [\"0xae641c7d7a83bba7fa913b9544f946dc23ca0527c2f4abb9c6a3496f49375218\"]\n directlyReceivedPermissions:\n+ [{\"permission\":\"upgrade\",\"from\":\"katana:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe\",\"role\":\"admin\"},{\"permission\":\"upgrade\",\"from\":\"katana:0xa40D5f56745a118D0906a34E69aeC8C0Db1cB8fA\",\"role\":\"admin\"}]\n }\n```\n\n```diff\n contract GasPriceOracle (katana:0x420000000000000000000000000000000000000F) [opstack/Layer2/GasPriceOracle] {\n +++ description: Provides the current gas price for L2 transactions.\n unverified:\n- true\n values.baseFee:\n+ 0\n values.baseFeeScalar:\n+ 1368\n values.decimals:\n+ 6\n values.DECIMALS:\n+ 6\n values.gasPrice:\n+ 0\n values.isEcotone:\n+ true\n values.isFjord:\n+ true\n values.isIsthmus:\n+ true\n values.isJovian:\n+ true\n values.version:\n+ \"1.6.0\"\n implementationNames.katana:0x4f1db3c6AbD250ba86E0928471A8F7DB3AFd88F1:\n- \"\"\n+ \"GasPriceOracle\"\n template:\n+ \"opstack/Layer2/GasPriceOracle\"\n sourceHashes:\n+ [\"0xdb44b7e73254e0314f233ca790b4d44a2f9e3cebc019945c0ef84b9e3579c77a\",\"0x2a3c7909036a30543d4aaa8e9501caab6f998a671d40cc3822f89c6239e6b8ab\"]\n description:\n+ \"Provides the current gas price for L2 transactions.\"\n }\n```\n\n```diff\n contract L1Block (katana:0x4200000000000000000000000000000000000015) [opstack/Layer2/L1Block] {\n +++ description: Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain.\n unverified:\n- true\n values.baseFeeScalar:\n+ 1368\n values.batcherHash:\n+ \"0x0000000000000000000000001ffda89c755f6d4af069897d77ccabb580fd412a\"\n values.daFootprintGasScalar:\n+ 400\n values.DEPOSITOR_ACCOUNT:\n+ \"katana:0xDeaDDEaDDeAdDeAdDEAdDEaddeAddEAdDEAd0001\"\n values.gasPayingToken:\n+ {\"addr_\":\"katana:0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\"decimals_\":18}\n values.gasPayingTokenName:\n+ \"Ether\"\n values.gasPayingTokenSymbol:\n+ \"ETH\"\n values.isCustomGasToken:\n+ false\n values.l1FeeOverhead:\n+ 0\n values.l1FeeScalar:\n+ 0\n values.version:\n+ \"1.7.0\"\n implementationNames.katana:0x3Ba4007f5C922FBb33C454B41ea7a1f11E83df2C:\n- \"\"\n+ \"L1Block\"\n template:\n+ \"opstack/Layer2/L1Block\"\n sourceHashes:\n+ [\"0xdb44b7e73254e0314f233ca790b4d44a2f9e3cebc019945c0ef84b9e3579c77a\",\"0x399e57fff478211b47d61c5acb60592a4df8ffa5716959a1a6ee2ccabc44915e\"]\n description:\n+ \"Simple contract that returns information about the latest L1 block, which is derived permissionlessly from the L1 chain.\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2Timelock (katana:0xBBa0935Fa93Eb23de7990b47F0D96a8f75766d13) [polygon-cdk/L2Timelock]\n +++ description: A timelock with access control. The current minimum delay is 12h.\n```"
}
]
},
{
"id": "4a509311",
"date": "Thu, 28 May 2026 12:57:31 GMT",
"timestamp": 1779956198,
"description": "minimal diff upgrade to the OptiPortal that adds deposited transactions! https://flat.l2beat.com/diff/ink:0xC0D3C0d3C0d3c0d3C0d3C0D3c0D3c0d3c0D30016/katana:0xFBF44D0341C03098A1D9C0336e3d5C34E8BFdf1A\n\nusers can now force transactions that do not relate to bridging (they still cannot force ETH- or token deposits). the force tx delay in op stack (or op-succinct) depends on the node config/programHash and both are unverified for katana. as soon as we have a source, we should look for `sequencerWindowSize` (OP stack standard is 3600). we will assume standard and show the delay as 12h but say that this is unverified.\n\nproposals are also still permissioned, meaning that, assuming sequencer and proposer/prover are the same entity, the system changed from 'sequencer can cherry-pick/censor' to 'proposer must blanket-censor, no cherry-pick'.\n\nthe agglayer bridge is separate from the OP stack proof system and bridge and has its own proof system and l2 smart contract. this includes the gas token (ETH) bridge. the oracle on L2 that allows to update the agglayer bridge state roots is permissioned to an EOA atm.",
"isHighSeverity": true,
"changeCount": 51,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Yearn Strategist Multisig (eth:0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x5E5D6f849Fa86c058f148E9D3f643C8F4c43f20b\"\n values.$members.1:\n+ \"eth:0x5250077c42627cBd112988f32D482acC9ff40bDB\"\n values.$members.2:\n+ \"eth:0xC357eE8a8DdE88Dd5a3Ea54847Adef6846A28c51\"\n values.$members.3:\n+ \"eth:0xFcc3796370e1538F8cC60bec19A8be5457f2C74F\"\n values.$members.4:\n+ \"eth:0xFafFb75e14faFf9f11315E44a2E54A22872c7a34\"\n values.$members.2:\n- \"eth:0xBD5f1429Ab467E69BEeba51E547C00A21F2a2092\"\n values.$members.3:\n- \"eth:0x787aba336583f4A1D4f8cBBFDFFD49f3a38De665\"\n values.$members.4:\n- \"eth:0x2C2dc95F8C8060a7e3B354c1B9540881AEa1613C\"\n values.$members.5:\n- \"eth:0xd0002c648CCa8DeE2f2b8D70D542Ccde8ad6EC03\"\n values.$members.6:\n- \"eth:0x1b5f15DCb82d25f91c65b53CEe151E8b9fBdD271\"\n }\n```\n\n```diff\n contract OptimismPortal2 (eth:0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E) [katana/OptimismPortal2] {\n +++ description: Stores the configuration of the OP stack components and proof system. Specifies which game type is used for state validation, which currently is the PermissionedDisputeGame. This contract is modified to disable asset bridging, but it allows forced transactions.\n name:\n- \"OptimismPortal2_neutered\"\n+ \"OptimismPortal2\"\n template:\n- \"opstack/OptimismPortal2_noForce\"\n+ \"katana/OptimismPortal2\"\n sourceHashes.1:\n- \"0x4cc0e4525ed77b81565c05c0e673e043a93d9878924197f772581f72c11c91c5\"\n+ \"0xfcecb325a86c39482f8e9d29272f25089eec0b5fbefe21444fd1ea690c911f0c\"\n description:\n- \"The OptimismPortal contract usually is the main entry point to deposit funds from L1 to L2 or for finalizing withdrawals. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame. This specific fork of the standard contract **disables the depositTransaction() function**, which prevents users from sending or forcing any transactions from L1 to L2, including token deposits. It is instead used for configuration and administration of the system.\"\n+ \"Stores the configuration of the OP stack components and proof system. Specifies which game type is used for state validation, which currently is the PermissionedDisputeGame. This contract is modified to disable asset bridging, but it allows forced transactions.\"\n values.$implementation:\n- \"eth:0x3e6753e6c0162061cfa7eEc88d8fdaE651160Bf4\"\n+ \"eth:0x5dEcbEEEFeCc5353355CD79A8fECC4c03F61ce8a\"\n values.$pastUpgrades.8:\n+ [\"2026-05-22T16:31:35.000Z\",\"0x46d8e0a3a5383c133292ef51e4d7eef96fddc443b892d38e62c39b1186055691\",[\"eth:0x5dEcbEEEFeCc5353355CD79A8fECC4c03F61ce8a\"]]\n values.$upgradeCount:\n- 8\n+ 9\n values.version:\n- \"5.1.1\"\n+ \"agg3.15.0\"\n fieldMeta.respectedGameType:\n+ {\"severity\":\"HIGH\"}\n implementationNames.eth:0x3e6753e6c0162061cfa7eEc88d8fdaE651160Bf4:\n- \"OptimismPortal2\"\n implementationNames.eth:0x5dEcbEEEFeCc5353355CD79A8fECC4c03F61ce8a:\n+ \"OptimismPortal2\"\n usedTypes.0.arg.1337:\n+ \"KailuaGame\"\n }\n```\n\n```diff\n contract AgglayerBridgeL2 (katana:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe) [katana/AgglayerBridgeL2] {\n +++ description: Agglayer bridge contract. Supports interop with Ethereum and blockchains connected to Agglayer. Escrows all preminted ETH because it cannot mint on the L2. The globalExitRootManager is used as an oracle to validate bridge messages against.\n values.claimedGlobalIndexHashChain:\n- \"0xfcb94fe6eae1dd3db9426645c49bdd5a55f574591df36333e3822c2e28a6aa5d\"\n+ \"0x5fede20963bde12c20e3076c4426550f570914a8a035c1381bc98f8bed306a46\"\n values.getRoot:\n- \"0x77b2c19aaa8daa89496903e91a84dfdf09cbc2821671eb351e953ed0c646be5b\"\n+ \"0x1d743ae7262c7410af3fb680660e6c1f336b2f49609f709a69a9fd8b9ad21bb2\"\n }\n```\n\n```diff\n contract GlobalExitRootManagerL2SovereignChain (katana:0xa40D5f56745a118D0906a34E69aeC8C0Db1cB8fA) [katana/GlobalExitRootManagerL2SovereignChain] {\n +++ description: Manages Layer 2 and global merkle roots (exit roots). It stores exit roots written during bridge deposits, accepts imported global exit roots from a permissioned address, and manages historical roots.\n values.insertedGERHashChain:\n- \"0x64bc5ca77fa29cfc3cd117f2314df1d7c1c5f3d01f31f2c58bd277f3e75b1016\"\n+ \"0xaae24c57922b6453c1812383dba7b31cf9788b57cfc281e208b4e2911e5feee7\"\n values.lastRollupExitRoot:\n- \"0x77b2c19aaa8daa89496903e91a84dfdf09cbc2821671eb351e953ed0c646be5b\"\n+ \"0x1d743ae7262c7410af3fb680660e6c1f336b2f49609f709a69a9fd8b9ad21bb2\"\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract upgradeProxy (katana:0x0F99738B2Fc14D77308337f3e2596b63aE7BCC4A) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract AgglayerBridgeL2 (katana:0x2a3DD3EB832aF982ec71669E178424b10Dca2EDe) [katana/AgglayerBridgeL2]\n +++ description: Agglayer bridge contract. Supports interop with Ethereum and blockchains connected to Agglayer. Escrows all preminted ETH because it cannot mint on the L2. The globalExitRootManager is used as an oracle to validate bridge messages against.\n```\n\n```diff\n+ Status: CREATED\n contract DeployerWhitelist (katana:0x4200000000000000000000000000000000000002) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2CrossDomainMessenger (katana:0x4200000000000000000000000000000000000007) [opstack/Layer2/L2CrossDomainMessenger]\n +++ description: The L2CrossDomainMessenger (L2xDM) contract sends messages from L2 to L1, and relays messages from L1 onto L2 with a system tx. In the event that a message sent from L2 to L1 is rejected for exceeding the L1 gas limit, it can be resubmitted via this contract’s replay function.\n```\n\n```diff\n+ Status: CREATED\n contract GasPriceOracle (katana:0x420000000000000000000000000000000000000F) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2StandardBridge (katana:0x4200000000000000000000000000000000000010) [opstack/Layer2/L2StandardBridge]\n +++ description: The L2StandardBridge contract is the main entry point to deposit or withdraw ERC20 tokens from L2 to L1. This contract can store any token.\n```\n\n```diff\n+ Status: CREATED\n contract SequencerFeeVault (katana:0x4200000000000000000000000000000000000011) [opstack/Layer2/SequencerFeeVault]\n +++ description: Collects the sequencer fees.\n```\n\n```diff\n+ Status: CREATED\n contract OptimismMintableERC20Factory (katana:0x4200000000000000000000000000000000000012) [opstack/Layer2/OptimismMintableERC20Factory]\n +++ description: Factory contract to create bridge compliant ERC20 IOU token representations of bridged L1 ERC20 tokens.\n```\n\n```diff\n+ Status: CREATED\n contract L1BlockNumber (katana:0x4200000000000000000000000000000000000013) [opstack/Layer2/L1BlockNumber]\n +++ description: Simple contract that returns the latest L1 block number.\n```\n\n```diff\n+ Status: CREATED\n contract L2ERC721Bridge (katana:0x4200000000000000000000000000000000000014) [opstack/Layer2/L2ERC721Bridge]\n +++ description: The L2ERC721Bridge contract is the main entry point to deposit or withdraw ERC721 tokens from L2 to L1. This contract can store any token.\n```\n\n```diff\n+ Status: CREATED\n contract L1Block (katana:0x4200000000000000000000000000000000000015) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2ToL1MessagePasser (katana:0x4200000000000000000000000000000000000016) [katana/L2ToL1MessagePasser]\n +++ description: Contract used internally by the L2CrossDomainMessenger to send messages to L1. It can also be used directly as a low-level interface.\n```\n\n```diff\n+ Status: CREATED\n contract OptimismMintableERC721Factory (katana:0x4200000000000000000000000000000000000017) [opstack/Layer2/OptimismMintableERC721Factory]\n +++ description: Factory contract to create bridge compliant ERC721 IOU token representations of bridged L1 ERC721 tokens.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (katana:0x4200000000000000000000000000000000000018) [global/ProxyAdmin]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract BaseFeeVault (katana:0x4200000000000000000000000000000000000019) [opstack/Layer2/BaseFeeVault]\n +++ description: Collects EIP-1559 base fees\n```\n\n```diff\n+ Status: CREATED\n contract L1FeeVault (katana:0x420000000000000000000000000000000000001A) [opstack/Layer2/L1FeeVault]\n +++ description: Collects the L1 portion of the L2 transaction fees.\n```\n\n```diff\n+ Status: CREATED\n contract OperatorFeeVault (katana:0x420000000000000000000000000000000000001b) [opstack/Layer2/OperatorFeeVault]\n +++ description: Holds the 'operator fees' for the L2 network, which are part of the L2 fees that users pay.\n```\n\n```diff\n+ Status: CREATED\n contract SchemaRegistry (katana:0x4200000000000000000000000000000000000020) [opstack/Layer2/SchemaRegistry]\n +++ description: Contracts to register schemas for the Ethereum Attestation Service (EAS).\n```\n\n```diff\n+ Status: CREATED\n contract EAS (katana:0x4200000000000000000000000000000000000021) [opstack/Layer2/EAS]\n +++ description: Contract containing the main logic for the Ethereum Attestation Service (EAS).\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafeL2 (katana:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (katana:0x7990513f4d64d57524a0B2519759f53B0cB1aEbd) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GlobalExitRootManagerL2SovereignChain (katana:0xa40D5f56745a118D0906a34E69aeC8C0Db1cB8fA) [katana/GlobalExitRootManagerL2SovereignChain]\n +++ description: Manages Layer 2 and global merkle roots (exit roots). It stores exit roots written during bridge deposits, accepts imported global exit roots from a permissioned address, and manages historical roots.\n```\n\n```diff\n+ Status: CREATED\n contract BridgeLib (katana:0xb30C032b183525de7427f04e79F45Cd19866E124) [katana/BridgeLib]\n +++ description: Utility library contract for the AgglayerBridgeL2.\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (katana:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TokenWrappedBridgeUpgradeable (katana:0xF0777a825470092b3Debc9af291634460b8E1a2c) [katana/TokenWrappedBridgeUpgradeable]\n +++ description: An ERC-20 implementation designed for cross-chain assets on the L2. It restricts token minting or burning strictly to the primary bridge contract.\n```"
}
]
},
{
"id": "dbd2c228",
"date": "Wed, 13 May 2026 12:37:16 GMT",
"timestamp": 1778675724,
"description": "ms member change.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Safe (eth:0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb) [GnosisSafe] {\n +++ description: None\n values.$members.4:\n- \"eth:0x6c20ea7778EA9F3Afd74Ce4538bc4D9d61E6ABb1\"\n+ \"eth:0xFAc88BB6229F47A31A78F0Ba91E5a541Cb1866a3\"\n }\n```"
}
]
},
{
"id": "af60feb7",
"date": "Wed, 29 Apr 2026 08:37:50 GMT",
"timestamp": 1777451715,
"description": "Two unrelated changes:\n\n1. **EOA `0x227D9Ea8...` set up an EIP-7702 delegation.** This EOA is a signer on two katana multisigs. It now delegates to `0x63c0c19a...` (MetaMask's `EIP7702StatelessDeleGator` v1.3.0) with `delegationManager = 0xdb9B1e94...` and `entryPoint = 0x00000000...da032` (ERC-4337 EntryPoint v0.7). No protocol change for katana — just the signer's own EOA upgrading to a smart-account setup that runs through ERC-4337.\n\n2. **Conduit Multisig 1 (`eth:0x4a496227...`)** — signer `0x381624F7` removed. Threshold unchanged at 4; total signers 13 → 12 (31% → 33%). Same shared multisig change observed on `forknet`.",
"isHighSeverity": true,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (eth:0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c) {\n +++ description: None\n proxyType:\n- \"EOA\"\n+ \"EIP7702 EOA\"\n sourceHashes:\n+ [\"0x41c6ce964a4ef3e910f9ddf78152734dae8d1b1094ffc8334c50249a3b112bbf\"]\n values:\n+ {\"$implementation\":\"eth:0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B\",\"delegationManager\":\"eth:0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3\",\"DOMAIN_VERSION\":\"1\",\"eip712Domain\":{\"fields\":\"0x0f\",\"name\":\"EIP7702StatelessDeleGator\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"eth:0x227D9Ea843910Edd305c42e7bB9Ce6D9f369238c\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]},\"entryPoint\":\"eth:0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"getDeposit\":0,\"getDomainHash\":\"0x876a24e12d1595ba43f838917743b4ea108e3957c4df5ec812cf3348b156d941\",\"getNonce\":0,\"NAME\":\"EIP7702StatelessDeleGator\",\"PACKED_USER_OP_TYPEHASH\":\"0xbc37962d8bd1d319c95199bdfda6d3f92baa8903a61b32d5f4ec1f4b36a3bc18\",\"VERSION\":\"1.3.0\"}\n }\n```\n\n```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) {\n +++ description: None\n values.$members.1:\n- \"eth:0x381624F7912BddD83dc67c6C53Ef6FE61B87Cf07\"\n values.multisigThreshold:\n- \"4 of 13 (31%)\"\n+ \"4 of 12 (33%)\"\n }\n```"
}
]
},
{
"id": "08710e37",
"date": "Fri, 24 Apr 2026 10:10:16 GMT",
"timestamp": 1777024331,
"description": "New opsuccinct config.",
"isHighSeverity": true,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.selectedOpSuccinctConfig.aggregationVkey:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x0065e407807b2b3610cc9ff6637ea16e815552bc34b48c206529d3cfcd9d1152\"\n values.selectedOpSuccinctConfig.rangeVkeyCommitment:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x5c7c05114bc5dd360fdb52ec2b4977a45f7e22806bc949a72759ea1172202229\"\n values.selectedOpSuccinctConfig.rollupConfigHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x352a9738897d236014fd5bd11986bf008b3b623b037405900ab338f93cdf5272\"\n+++ description: currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\n+++ severity: HIGH\n values.selectedOpSuccinctConfigName:\n- \"0x36e852219a68060b42e38154cd2c3e2b36ae97ea0445b1b9a034232cda5b3c00\"\n+ \"0xe719c402037f76346e69e021164101e16954889c052f75f16a29758815723dde\"\n }\n```"
}
]
},
{
"id": "388d9a35",
"date": "Wed, 22 Apr 2026 13:08:46 GMT",
"timestamp": 1776863221,
"description": "fee and multisig changes.",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana Steakhouse Financial / Morpho Multisig (eth:0x827e86072B06674a077f592A531dcE4590aDeCdB) {\n +++ description: None\n values.$members.0:\n+ \"eth:0xf83dB716A1Ff12F9005F98f678D8BE97B8Bc81d6\"\n values.multisigThreshold:\n- \"2 of 5 (40%)\"\n+ \"2 of 6 (33%)\"\n }\n```\n\n```diff\n contract SystemConfig (eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n values.minBaseFee:\n- 0\n+ 1000000\n values.operatorFeeConstant:\n- 1351351351351\n+ 0\n values.operatorFeeScalar:\n- 0\n+ 100000\n }\n```\n\n```diff\n contract Polygon Multisig 2 (eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x6f8CC67A7F6c61E4047aC4870583899CC1fBD08a\"\n values.multisigThreshold:\n- \"3 of 4 (75%)\"\n+ \"3 of 5 (60%)\"\n }\n```"
}
]
},
{
"id": "7769cde1",
"date": "Fri, 10 Apr 2026 08:24:59 GMT",
"timestamp": 1775809429,
"description": "Rotated one member, removed two members from Polygon admin ms.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Polygon Multisig 2 (eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) {\n +++ description: None\n values.$members.0:\n- \"eth:0x1B054e6c9F424879d8ad829EE254F88B4D3ac304\"\n+ \"eth:0x4A658D678804DD0a4Ad0A2c26AD4F4EB2517154b\"\n values.$members.3:\n- \"eth:0x34d23C4fb6542B467cA8724bAD30AC811399b184\"\n values.$members.4:\n- \"eth:0x1DD6473a6bb5fF9041D945C7d15AC8fBc2Ee1164\"\n values.multisigThreshold:\n- \"3 of 6 (50%)\"\n+ \"3 of 4 (75%)\"\n }\n```"
}
]
},
{
"id": "50934e46",
"date": "Tue, 07 Apr 2026 11:34:04 GMT",
"timestamp": 1775561575,
"description": "Rotated MS member.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana yieldRecipient Mulsitig (eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756) {\n +++ description: None\n values.$members.2:\n- \"eth:0x6c20ea7778EA9F3Afd74Ce4538bc4D9d61E6ABb1\"\n+ \"eth:0xf2dc90d4645579f261cA36E81181986dB576BbEe\"\n }\n```"
}
]
},
{
"id": "5acfd848",
"date": "Mon, 16 Mar 2026 12:53:36 GMT",
"timestamp": 1773665394,
"description": "progHashes changed, cannot find on githubs.",
"isHighSeverity": true,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.selectedOpSuccinctConfig.aggregationVkey:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x00987c64e3710bc9ab5f3a93f3f1249be821b1a6eedb14dbc1ae2d6fc4fd9337\"\n values.selectedOpSuccinctConfig.rangeVkeyCommitment:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x05f486d43f4066c24b8652cd52e122df59f0ea4c33c0df8155dc58de37f93330\"\n values.selectedOpSuccinctConfig.rollupConfigHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x352a9738897d236014fd5bd11986bf008b3b623b037405900ab338f93cdf5272\"\n+++ description: currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\n+++ severity: HIGH\n values.selectedOpSuccinctConfigName:\n- \"0xf7803dc0ac1322b6bff3d4f9a48ffd57102e4076d8e40333dd72084f0cf9cc68\"\n+ \"0x36e852219a68060b42e38154cd2c3e2b36ae97ea0445b1b9a034232cda5b3c00\"\n }\n```\n\n```diff\n contract Polygon Multisig 2 (eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x1B054e6c9F424879d8ad829EE254F88B4D3ac304\"\n values.$members.0:\n- \"eth:0x2483A0d6a3Bd89D5C17aA80B3f8f6102ac053361\"\n+ \"eth:0xA697656ac37ee1f59A8a5318F61601B4C208960D\"\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"3 of 6 (50%)\"\n }\n```"
}
]
},
{
"id": "d3280720",
"date": "Fri, 06 Mar 2026 08:59:26 GMT",
"timestamp": 1772786542,
"description": "progHash changed to op succinct 3.5.0.",
"isHighSeverity": true,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.selectedOpSuccinctConfig.aggregationVkey:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x0077f45ec2258cc98fa879d13a2773190bffb9cafb9f428ce3c5718dc768f03e\"\n values.selectedOpSuccinctConfig.rangeVkeyCommitment:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x0e5158b64c46007c04e5972727a2a26832337fbe765162294b0ce1ed0db36f9d\"\n values.selectedOpSuccinctConfig.rollupConfigHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x352a9738897d236014fd5bd11986bf008b3b623b037405900ab338f93cdf5272\"\n+++ description: currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\n+++ severity: HIGH\n values.selectedOpSuccinctConfigName:\n- \"0xfda6f1430e8363d3850cb5ff3f026f6ce01ad0fad017cb06a1dcbeb72c00304d\"\n+ \"0xf7803dc0ac1322b6bff3d4f9a48ffd57102e4076d8e40333dd72084f0cf9cc68\"\n }\n```"
}
]
},
{
"id": "a0780ac7",
"date": "Wed, 04 Mar 2026 08:43:04 GMT",
"timestamp": 1772612116,
"description": "Upgrade to known op-contracts version.\n\nOptimism portal is neutered, diff to standard: https://disco.l2beat.com/diff/eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202/eth:0x3e6753e6c0162061cfa7eEc88d8fdaE651160Bf4\n\nrest of the contracts are standard.",
"isHighSeverity": true,
"changeCount": 118,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1ERC721Bridge (eth:0x15a32FCeA89617Ff450F094cDE102CCa46598B7F) {\n +++ description: Used to bridge ERC-721 tokens from host chain to this chain.\n sourceHashes.1:\n- \"0x28669b49da3effd51f0f9424ca9cdd455c5b9327c09a40c65fc06f114a6eb837\"\n+ \"0x75cd470a9d1c1afc343b599b1c14731f55bb36fe8a4e844ddb88a0b791918795\"\n values.$implementation:\n- \"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013\"\n+ \"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9\"\n values.$pastUpgrades.3:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x7f1d12fB2911EB095278085f721e644C1f675696\"]]\n values.$pastUpgrades.4:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9\"]]\n values.$upgradeCount:\n- 3\n+ 5\n values.version:\n- \"2.4.0\"\n+ \"2.9.0\"\n values.initVersion:\n+ 3\n values.proxyAdmin:\n+ \"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"\n values.proxyAdminOwner:\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n values.systemConfig:\n+ \"eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174\"\n implementationNames.eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013:\n- \"L1ERC721Bridge\"\n implementationNames.eth:0x74f1aC50EB0BE98853805D381C884f5f9abDEcf9:\n+ \"L1ERC721Bridge\"\n }\n```\n\n```diff\n contract ProxyAdmin (eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832) {\n +++ description: None\n directlyReceivedPermissions.2:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x1AaA08d577cbC3da3b955DC1B7a281D7b8fE3372\",\"role\":\"admin\"}\n directlyReceivedPermissions.5:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x74034597d29613CC8C0BDc8780e1d292A553Bd32\",\"role\":\"admin\"}\n directlyReceivedPermissions.6:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xaA8a62563CFe4E36118ED479B5486F503b438376\",\"role\":\"admin\"}\n directlyReceivedPermissions.7:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xb41151Bf2B989d3771caBd5BCb5C435949543322\",\"role\":\"admin\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract AnchorStateRegistry (eth:0x1AaA08d577cbC3da3b955DC1B7a281D7b8fE3372)\n +++ description: Contains the latest confirmed state root that can be used as a starting point in a dispute game.\n```\n\n```diff\n contract L1CrossDomainMessenger (eth:0x2008A6Ba8CAF85AaFAe7880664Dfe681D533ac2E) {\n +++ description: Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n sourceHashes.1:\n- \"0x03bcdc719cb7bd0a1377c01bb50b30a6122b308f673b7d7b15a3bb8628e6bd8c\"\n+ \"0xfa9c986019a03bd66efb7584a7064e708f6fb71956643a9d4daa2c0972a29c03\"\n values.$implementation:\n- \"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B\"\n+ \"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0\"\n values.$pastUpgrades.3:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x22D12E0FAebD62d429514A65EBAe32dd316c12D6\"]]\n values.$pastUpgrades.4:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0\"]]\n values.$upgradeCount:\n- 3\n+ 5\n values.version:\n- \"2.6.0\"\n+ \"2.11.0\"\n values.initVersion:\n+ 3\n values.proxyAdmin:\n+ \"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"\n values.proxyAdminOwner:\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n values.systemConfig:\n+ \"eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174\"\n implementationNames.eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B:\n- \"L1CrossDomainMessenger\"\n implementationNames.eth:0xb686F13AfF1e427a1f993F29ab0F2E7383729FE0:\n+ \"L1CrossDomainMessenger\"\n }\n```\n\n```diff\n contract OptimismPortal2_neutered (eth:0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E) {\n +++ description: The OptimismPortal contract usually is the main entry point to deposit funds from L1 to L2 or for finalizing withdrawals. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame. This specific fork of the standard contract **disables the depositTransaction() function**, which prevents users from sending or forcing any transactions from L1 to L2, including token deposits. It is instead used for configuration and administration of the system.\n sourceHashes.1:\n- \"0x9cf3cb8a68c82a3a8328495d5f019daa51e9098a69b69ee8e349e3058b789338\"\n+ \"0x9b5cb94efaca7f6a941c6e29cd8f71079ec5ea2360e3f4948e59560dd107d7f9\"\n values.$implementation:\n- \"eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc\"\n+ \"eth:0x3e6753e6c0162061cfa7eEc88d8fdaE651160Bf4\"\n values.$pastUpgrades.5:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x381E729FF983FA4BCEd820e7b922d79bF653B999\"]]\n values.$pastUpgrades.6:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x7Cf803296662e8C72A6C1d6450572209aCF7f202\"]]\n values.$pastUpgrades.7:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x3e6753e6c0162061cfa7eEc88d8fdaE651160Bf4\"]]\n values.$upgradeCount:\n- 5\n+ 8\n values.respectedGameTypeUpdatedAt:\n- 1746742811\n+ 1772552963\n values.version:\n- \"3.14.0\"\n+ \"5.1.1\"\n values.anchorStateRegistry:\n+ \"eth:0xaA8a62563CFe4E36118ED479B5486F503b438376\"\n values.ethLockbox:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values.initVersion:\n+ 3\n values.proxyAdmin:\n+ \"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"\n values.proxyAdminOwner:\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc:\n- \"OptimismPortal2\"\n implementationNames.eth:0x3e6753e6c0162061cfa7eEc88d8fdaE651160Bf4:\n+ \"OptimismPortal2\"\n }\n```\n\n```diff\n contract SuperchainConfig (eth:0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811) {\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and `GUARDIAN_SLOT`, the address of the guardian which can pause and unpause the system. Since the OptimismPortal is not used for state root management in this setup, the guardian role and pausing may be inconsequential.\n sourceHashes.1:\n- \"0x03dba37173051b02bc81487e181c791bcf1aef664c249e5d035f11f488bdd686\"\n+ \"0x53a6b3db7f270298025bbfef7f6c77b420a9808341212fa9cf54a5e157a18567\"\n values.$implementation:\n- \"eth:0x4da82a327773965b8d4D85Fa3dB8249b387458E7\"\n+ \"eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957\"\n values.$pastUpgrades.4:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0xCe28685EB204186b557133766eCA00334EB441E4\"]]\n values.$pastUpgrades.5:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957\"]]\n values.$upgradeCount:\n- 4\n+ 6\n values.GUARDIAN_SLOT:\n- \"0xd30e835d3f35624761057ff5b27d558f97bd5be034621e62240e5c0b784abe68\"\n values.PAUSED_SLOT:\n- \"0x54176ff9944c4784e5857ec4e5ef560a462c483bf534eda43f91bb01a470b1b6\"\n values.version:\n- \"1.2.0\"\n+ \"2.4.0\"\n values.initVersion:\n+ 2\n values.pauseExpiry:\n+ 7884000\n values.proxyAdmin:\n+ \"eth:0x6d0ff67fb427422AfF35EEa8596949B374b09a52\"\n values.proxyAdminOwner:\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.eth:0x4da82a327773965b8d4D85Fa3dB8249b387458E7:\n- \"SuperchainConfig\"\n implementationNames.eth:0xb08Cc720F511062537ca78BdB0AE691F04F5a957:\n+ \"SuperchainConfig\"\n }\n```\n\n```diff\n- Status: DELETED\n contract PermissionedDisputeGame (eth:0x667b7DA73DA7B2A75286378FF45637eEaE9B4793)\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger. In the context of this permissioned aggkit deployment, there are no state proposals made here and the op stack fault proof system is not used.\n```\n\n```diff\n- Status: DELETED\n contract DelayedWETH (eth:0x74034597d29613CC8C0BDc8780e1d292A553Bd32)\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n```\n\n```diff\n contract L1StandardBridge (eth:0x98906C3f90A06B5484DD67bf32938815d2993dBC) {\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n sourceHashes.1:\n- \"0x4e15d99844dc5a4304c2396a66c95ec41218ea311c8e524b118fad7beed0bb53\"\n+ \"0x0114d3af66179d6404d14360203dc6bcf404f23e2db4ee1b5848e923e131bc00\"\n values.$implementation:\n- \"eth:0x0b09ba359A106C9ea3b181CBc5F394570c7d2a7A\"\n+ \"eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A\"\n values.version:\n- \"2.3.0\"\n+ \"2.8.0\"\n values.initVersion:\n+ 3\n values.proxyAdmin:\n+ \"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"\n values.proxyAdminOwner:\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n values.systemConfig:\n+ \"eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174\"\n implementationNames.eth:0x0b09ba359A106C9ea3b181CBc5F394570c7d2a7A:\n- \"L1StandardBridge\"\n implementationNames.eth:0x61525EaaCDdB97D9184aFc205827E6A4fd0Bf62A:\n+ \"L1StandardBridge\"\n }\n```\n\n```diff\n contract OptimismMintableERC20Factory (eth:0xA84C37cD0b9bA1B43276C11976DBE9d1344C7f4E) {\n +++ description: A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintableERC20 as this chain's representation of a token on the host chain, or vice-versa.\n sourceHashes.1:\n- \"0x9650b4bba6299e410f01a369a95a2c57e1c3ca35f0d80c13f4f59fc468f370e5\"\n+ \"0x25bad2bdb7df4347412a48e271dea1489299460192b43b8ca52ed191b4940992\"\n values.$implementation:\n- \"eth:0x5493f4677A186f64805fe7317D6993ba4863988F\"\n+ \"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB\"\n values.$pastUpgrades.2:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.version:\n- \"1.10.1\"\n+ \"1.10.2\"\n implementationNames.eth:0x5493f4677A186f64805fe7317D6993ba4863988F:\n- \"OptimismMintableERC20Factory\"\n implementationNames.eth:0x8ee6fB13c6c9a7e401531168E196Fbf8b05cEabB:\n+ \"OptimismMintableERC20Factory\"\n }\n```\n\n```diff\n contract SystemConfig (eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n sourceHashes.1:\n- \"0x921de6fc906d159fdcef862d2b9559063f5e7b9b7588fa5f33153360ddf296e7\"\n+ \"0x09e12b8c0307a4da75a8b84ed7c88ced81e386ec09025ec5b36873b4f69614d0\"\n values.$implementation:\n- \"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647\"\n+ \"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED\"\n values.$pastUpgrades.4:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x2bFE4A5Bd5A41e9d848d843ebCDFa15954e9A557\"]]\n values.$pastUpgrades.5:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED\"]]\n values.$upgradeCount:\n- 4\n+ 6\n values.DISPUTE_GAME_FACTORY_SLOT:\n- \"0x52322a25d9f59ea17656545543306b7aef62bc0cc53a0e65ccfa0c75b97aa906\"\n values.getAddresses.disputeGameFactory:\n- \"eth:0xe06278351d120288eDfCB963F934113Ca3C21AFe\"\n values.maximumGasLimit:\n- 200000000\n+ 500000000\n values.version:\n- \"2.5.0\"\n+ \"3.11.0\"\n values.daFootprintGasScalar:\n+ 0\n values.guardian:\n+ \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n values.initVersion:\n+ 3\n values.l2ChainId:\n+ 747474\n values.minBaseFee:\n+ 0\n values.paused:\n+ false\n values.proxyAdmin:\n+ \"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"\n values.proxyAdminOwner:\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n values.superchainConfig:\n+ \"eth:0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811\"\n implementationNames.eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647:\n- \"SystemConfig\"\n implementationNames.eth:0x2fA28989fc559836E9d66dFf3010C7F7f41c65ED:\n+ \"SystemConfig\"\n }\n```\n\n```diff\n contract Polygon Multisig 2 (eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) {\n +++ description: None\n receivedPermissions.2:\n- {\"permission\":\"interact\",\"from\":\"eth:0x74034597d29613CC8C0BDc8780e1d292A553Bd32\",\"description\":\"can pull funds from the contract in case of emergency.\",\"role\":\".owner\"}\n receivedPermissions.6:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x1AaA08d577cbC3da3b955DC1B7a281D7b8fE3372\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.10:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x74034597d29613CC8C0BDc8780e1d292A553Bd32\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.10:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xaA8a62563CFe4E36118ED479B5486F503b438376\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.11:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xb41151Bf2B989d3771caBd5BCb5C435949543322\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n }\n```\n\n```diff\n contract DisputeGameFactory (eth:0xe06278351d120288eDfCB963F934113Ca3C21AFe) {\n +++ description: The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\n sourceHashes.1:\n- \"0x85ca17941ef36ac6b28a4f8f89803d0d41ef419c47586dcd3acdb47ee9617285\"\n+ \"0x19f3f7c7ee3977705261bfb86f826d5f97b885796f2246be7cc3e815c3e95dca\"\n values.$implementation:\n- \"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0\"\n+ \"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50\"\n values.$pastUpgrades.2:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x33D1e8571a85a538ed3D5A4d88f46C112383439D\"]]\n values.$pastUpgrades.3:\n+ [\"2026-03-03T15:49:23.000Z\",\"0xa814ff1c6a02fa4a717875ed09e96cbd61874d85c896f3ddd8df290c73f34961\",[\"eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50\"]]\n values.$upgradeCount:\n- 2\n+ 4\n+++ severity: HIGH\n values.gameImpls.1:\n- \"eth:0x667b7DA73DA7B2A75286378FF45637eEaE9B4793\"\n+ \"eth:0xA7A26BbA1191a064637d7B0b23896589F4e4d22D\"\n values.version:\n- \"1.0.1\"\n+ \"1.3.0\"\n values.initVersion:\n+ 1\n values.proxyAdmin:\n+ \"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"\n values.proxyAdminOwner:\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n implementationNames.eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0:\n- \"DisputeGameFactory\"\n implementationNames.eth:0x74Fac1D45B98bae058F8F566201c9A81B85C7D50:\n+ \"DisputeGameFactory\"\n }\n```\n\n```diff\n- Status: DELETED\n contract MIPS (eth:0xF027F4A985560fb13324e943edf55ad6F1d15Dc1)\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```\n\n```diff\n+ Status: CREATED\n contract MIPS (eth:0x6463dEE3828677F6270d83d45408044fc5eDB908)\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```\n\n```diff\n+ Status: CREATED\n contract PermissionedDisputeGame (eth:0xA7A26BbA1191a064637d7B0b23896589F4e4d22D)\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n```\n\n```diff\n+ Status: CREATED\n contract AnchorStateRegistry (eth:0xaA8a62563CFe4E36118ED479B5486F503b438376)\n +++ description: Contains the latest confirmed state root that can be used as a starting point in a dispute game. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame.\n```\n\n```diff\n+ Status: CREATED\n contract DelayedWETH (eth:0xb41151Bf2B989d3771caBd5BCb5C435949543322)\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n```"
}
]
},
{
"id": "8237ac0a",
"date": "Mon, 02 Mar 2026 13:34:20 GMT",
"timestamp": 1772458371,
"description": "gas config change + ms member changes.",
"isHighSeverity": false,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana Foundation Engineering/Security Multisig (eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n values.$members.1:\n- \"eth:0xEad77b01ea770839F7f576Cd1516Ff6A298d9dB2\"\n+ \"eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72\"\n values.$members.2:\n- \"eth:0xAb76AE6926371B82Af3652cCBABefBBA56270adC\"\n+ \"eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B\"\n values.$members.3:\n- \"eth:0xAb3506507449bF1880f3337825efd19ac89E235E\"\n+ \"eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC\"\n values.$members.4:\n- \"eth:0xcAB31b6A7b4d2eCd562A09e2BfA46535a18862f9\"\n+ \"eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5\"\n values.$threshold:\n- 3\n+ 2\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"2 of 5 (40%)\"\n }\n```\n\n```diff\n- Status: DELETED\n reference (eth:0xAb3506507449bF1880f3337825efd19ac89E235E)\n +++ description: None\n```\n\n```diff\n contract SystemConfig (eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n+++ description: volatility param: lower denominator -> quicker fee changes on L2\n values.eip1559Denominator:\n- 250\n+ 50\n values.eip1559Elasticity:\n- 60\n+ 6\n+++ description: Gas limit for blocks on L2.\n+++ severity: LOW\n values.gasLimit:\n- 60000000\n+ 120000000\n }\n```\n\n```diff\n- Status: DELETED\n reference (eth:0xcAB31b6A7b4d2eCd562A09e2BfA46535a18862f9)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n reference (eth:0xEad77b01ea770839F7f576Cd1516Ff6A298d9dB2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n reference (eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n reference (eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC)\n +++ description: None\n```"
}
]
},
{
"id": "b182e3dc",
"date": "Thu, 19 Feb 2026 08:41:37 GMT",
"timestamp": 1771490328,
"description": "optimistic mode manager moved to Polygon Multisig 2.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.optimisticModeManager:\n- \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n values.pendingOptimisticModeManager:\n- \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n contract Katana Foundation Engineering/Security Multisig (eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n receivedPermissions:\n- [{\"permission\":\"interact\",\"from\":\"eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666\",\"description\":\"toggle the 'optimisticMode'.\",\"role\":\".optimisticModeManager\"}]\n }\n```\n\n```diff\n contract Polygon Multisig 2 (eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666\",\"description\":\"toggle the 'optimisticMode'.\",\"role\":\".optimisticModeManager\"}\n }\n```"
}
]
},
{
"id": "5c066b30",
"date": "Mon, 16 Feb 2026 13:57:07 GMT",
"timestamp": 1771250113,
"description": "Move aggchain and op mode manager to Polygon Multisig 2.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.aggchainManager:\n- \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n values.pendingOptimisticModeManager:\n- \"eth:0x0000000000000000000000000000000000000000\"\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n }\n```\n\n```diff\n contract Katana Foundation Engineering/Security Multisig (eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n receivedPermissions.0:\n- {\"permission\":\"interact\",\"from\":\"eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666\",\"description\":\"change verification keys (aggregationVkey, rangeVkeyCommitment, aggchainVkey) and the rollupConfigHash, manage multisig signers for permissioned state transitions and change critical configs for state validation.\",\"role\":\".aggchainManager\"}\n }\n```\n\n```diff\n contract Polygon Multisig 2 (eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) {\n +++ description: None\n receivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666\",\"description\":\"change verification keys (aggregationVkey, rangeVkeyCommitment, aggchainVkey) and the rollupConfigHash, manage multisig signers for permissioned state transitions and change critical configs for state validation.\",\"role\":\".aggchainManager\"}\n }\n```"
}
]
},
{
"id": "092d0a96",
"date": "Wed, 11 Feb 2026 12:54:49 GMT",
"timestamp": 1770814418,
"description": "Owner changes (Polygon Multisig 2 claiming more permissions).",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana Foundation Engineering/Security Multisig (eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n receivedPermissions.2:\n- {\"permission\":\"interact\",\"from\":\"eth:0x74034597d29613CC8C0BDc8780e1d292A553Bd32\",\"description\":\"can pull funds from the contract in case of emergency.\",\"role\":\".owner\"}\n receivedPermissions.3:\n- {\"permission\":\"interact\",\"from\":\"eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174\",\"description\":\"it can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system.\",\"role\":\".owner\"}\n }\n```\n\n```diff\n contract DelayedWETH (eth:0x74034597d29613CC8C0BDc8780e1d292A553Bd32) {\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n values.owner:\n- \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n }\n```\n\n```diff\n contract SystemConfig (eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n values.owner:\n- \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n }\n```\n\n```diff\n contract Polygon Multisig 2 (eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) {\n +++ description: None\n receivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x74034597d29613CC8C0BDc8780e1d292A553Bd32\",\"description\":\"can pull funds from the contract in case of emergency.\",\"role\":\".owner\"}\n receivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174\",\"description\":\"it can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system.\",\"role\":\".owner\"}\n }\n```\n\n```diff\n contract DisputeGameFactory (eth:0xe06278351d120288eDfCB963F934113Ca3C21AFe) {\n +++ description: The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\n values.owner:\n- \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n }\n```"
}
]
},
{
"id": "2760d96c",
"date": "Mon, 02 Feb 2026 14:49:25 GMT",
"timestamp": 1770035635,
"description": "upgrade admin change.",
"isHighSeverity": false,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ProxyAdmin (eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832) {\n +++ description: None\n values.owner:\n- \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n }\n```\n\n```diff\n contract Katana Foundation Engineering/Security Multisig (eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n receivedPermissions.4:\n- {\"permission\":\"interact\",\"from\":\"eth:0xEaB94275eD336D80d4F46EA8Ea0427e351f11D65\",\"description\":\"set and change address mappings.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.5:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x15a32FCeA89617Ff450F094cDE102CCa46598B7F\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.6:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x1AaA08d577cbC3da3b955DC1B7a281D7b8fE3372\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.7:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x2008A6Ba8CAF85AaFAe7880664Dfe681D533ac2E\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.8:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.9:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x6d0ff67fb427422AfF35EEa8596949B374b09a52\"}]}\n receivedPermissions.10:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x74034597d29613CC8C0BDc8780e1d292A553Bd32\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.11:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x98906C3f90A06B5484DD67bf32938815d2993dBC\",\"description\":\"upgrading the bridge implementation can give access to all funds escrowed therein.\",\"role\":\".$admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.12:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0xA84C37cD0b9bA1B43276C11976DBE9d1344C7f4E\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.13:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.14:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0xe06278351d120288eDfCB963F934113Ca3C21AFe\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n directlyReceivedPermissions:\n- [{\"permission\":\"act\",\"from\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\",\"role\":\".owner\"},{\"permission\":\"act\",\"from\":\"eth:0x6d0ff67fb427422AfF35EEa8596949B374b09a52\",\"role\":\".owner\"}]\n }\n```\n\n```diff\n contract ProxyAdmin (eth:0x6d0ff67fb427422AfF35EEa8596949B374b09a52) {\n +++ description: None\n values.owner:\n- \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n }\n```\n\n```diff\n contract Polygon Multisig 2 (eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) {\n +++ description: None\n receivedPermissions:\n+ [{\"permission\":\"interact\",\"from\":\"eth:0xEaB94275eD336D80d4F46EA8Ea0427e351f11D65\",\"description\":\"set and change address mappings.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"eth:0x15a32FCeA89617Ff450F094cDE102CCa46598B7F\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"eth:0x1AaA08d577cbC3da3b955DC1B7a281D7b8fE3372\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"eth:0x2008A6Ba8CAF85AaFAe7880664Dfe681D533ac2E\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"eth:0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"eth:0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x6d0ff67fb427422AfF35EEa8596949B374b09a52\"}]},{\"permission\":\"upgrade\",\"from\":\"eth:0x74034597d29613CC8C0BDc8780e1d292A553Bd32\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"eth:0x98906C3f90A06B5484DD67bf32938815d2993dBC\",\"description\":\"upgrading the bridge implementation can give access to all funds escrowed therein.\",\"role\":\".$admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"eth:0xA84C37cD0b9bA1B43276C11976DBE9d1344C7f4E\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"eth:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"eth:0xe06278351d120288eDfCB963F934113Ca3C21AFe\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}]\n directlyReceivedPermissions:\n+ [{\"permission\":\"act\",\"from\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\",\"role\":\".owner\"},{\"permission\":\"act\",\"from\":\"eth:0x6d0ff67fb427422AfF35EEa8596949B374b09a52\",\"role\":\".owner\"}]\n }\n```"
}
]
},
{
"id": "7217acf2",
"date": "Tue, 27 Jan 2026 12:37:20 GMT",
"timestamp": 1769516922,
"description": "New member added to Conduit Multisig 1, increasing from 4 of 12 to 4 of 13 threshold.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) {\n +++ description: None\n values.$members.0:\n+ \"eth:0xA9FCCc53F1c9095DA867Bd648683F8bdCcc78d09\"\n values.multisigThreshold:\n- \"4 of 12 (33%)\"\n+ \"4 of 13 (31%)\"\n }\n```"
}
]
},
{
"id": "ff6e8897",
"date": "Wed, 21 Jan 2026 12:34:25 GMT",
"timestamp": 1768998796,
"description": "conduit ms change.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x381624F7912BddD83dc67c6C53Ef6FE61B87Cf07\"\n values.multisigThreshold:\n- \"4 of 11 (36%)\"\n+ \"4 of 12 (33%)\"\n }\n```"
}
]
},
{
"id": "5ff094a2",
"date": "Mon, 19 Jan 2026 09:54:14 GMT",
"timestamp": 1768816385,
"description": "admin change and multisig member change.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.admin:\n- \"eth:0xa4000bDD2bB92ce6750b31F1eeda47Bd1cB8e6e4\"\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n }\n```\n\n```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x6BB4249858Ee19b6ABC071AD26bEe690baa783A6\"\n values.multisigThreshold:\n- \"4 of 10 (40%)\"\n+ \"4 of 11 (36%)\"\n }\n```\n\n```diff\n contract Safe (eth:0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb) {\n +++ description: None\n values.$members.6:\n- \"eth:0xfd5E854b73a239c9052d89C53D1313f5AfB860ac\"\n+ \"eth:0xdEb97974dfCC73178672205A1eadDc2BDeAc1Bd4\"\n values.$threshold:\n- 3\n+ 2\n values.multisigThreshold:\n- \"3 of 7 (43%)\"\n+ \"2 of 7 (29%)\"\n }\n```"
}
]
},
{
"id": "83b025ef",
"date": "Wed, 14 Jan 2026 06:06:21 GMT",
"timestamp": 1768370407,
"description": "new pending admin: the admin can change the trusted sequencer address, which in turn can finalize state by signature, but only in optimistic mode, managed by the optimistic mode manager address.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.pendingAdmin:\n- \"eth:0x0000000000000000000000000000000000000000\"\n+ \"eth:0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC\"\n }\n```"
}
]
},
{
"id": "e17f828d",
"date": "Mon, 15 Dec 2025 07:24:43 GMT",
"timestamp": 1765783036,
"description": "new opsuccinct vkeys:\n\naggregationVkey\n- unchanged: 0x007efdd073c9845bbc446e0e62018af999bde96ecec416725391efa4a3f0a44d\n\nrangeVkeyCommitment\n- old: 0x4b8234c47685b3361b22399702416a8010783b1b701b279073b4f0831e55da63\n- new: 0x64c8517c14f10577381d8961139a4420420e90e528d02be96e2b0961671db248\n\non gh this corresponds to [this pr](https://github.com/agglayer/provers/pull/316/changes)\n- update sp1 to 5.2.2\n- update alloy to 1.0\n- update agglayer to 0.12.0",
"isHighSeverity": true,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.selectedOpSuccinctConfig.aggregationVkey:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x007efdd073c9845bbc446e0e62018af999bde96ecec416725391efa4a3f0a44d\"\n values.selectedOpSuccinctConfig.rangeVkeyCommitment:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x64c8517c14f10577381d8961139a4420420e90e528d02be96e2b0961671db248\"\n values.selectedOpSuccinctConfig.rollupConfigHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x7179e8c558e26751a56fc2fe9ce0a84ce248cfc98cb5b7a5178655b0c5c42ea5\"\n+++ description: currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\n+++ severity: HIGH\n values.selectedOpSuccinctConfigName:\n- \"0x4a6e8c6abb9ec46b76062d422b6d87bb4b7e0304b4b06d554037828ce3006650\"\n+ \"0xfda6f1430e8363d3850cb5ff3f026f6ce01ad0fad017cb06a1dcbeb72c00304d\"\n }\n```\n\n```diff\n contract Katana Foundation Engineering/Security Multisig (eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n values.$members.2:\n- \"eth:0x54c401eD03D086fE13221E5422165f3b024265d9\"\n+ \"eth:0xAb76AE6926371B82Af3652cCBABefBBA56270adC\"\n }\n```"
}
]
},
{
"id": "83414157",
"date": "Fri, 05 Dec 2025 11:22:21 GMT",
"timestamp": 1764933676,
"description": "Conduit multisig key rotation.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x2103c69696CB2D3779f5445393808239034E911c\"\n values.$members.0:\n- \"eth:0xFe0ab87ebE03DD0bF52DaF34Dfda6639c335e2d4\"\n+ \"eth:0x65D1d44B8B2fE15d45A03708E0835C7E98a56007\"\n values.$members.4:\n- \"eth:0xF0B77EaE7F2dabCC2571c7418406A0dCA3afA4f0\"\n }\n```"
}
]
},
{
"id": "c1c0c241",
"date": "Wed, 26 Nov 2025 13:37:44 GMT",
"timestamp": 1764164180,
"description": "ms change in yearn.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Yearn Strategist Multisig (eth:0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x80a3887BA60F76acAb48EE4aEAd0a71A0774A8B2\"\n values.$members.6:\n- \"eth:0x254f44F45ac892730e511f143DEd3Cd920b075aF\"\n+ \"eth:0x0Dca0FDC170baA4CA9c1dCd37Ffe01f97bCfD504\"\n values.multisigThreshold:\n- \"3 of 7 (43%)\"\n+ \"3 of 8 (38%)\"\n }\n```"
}
]
},
{
"id": "64df4461",
"date": "Tue, 25 Nov 2025 08:37:28 GMT",
"timestamp": 1764059644,
"description": "New opsuccinct vkeys.",
"isHighSeverity": true,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n values.selectedOpSuccinctConfig.aggregationVkey:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x007efdd073c9845bbc446e0e62018af999bde96ecec416725391efa4a3f0a44d\"\n values.selectedOpSuccinctConfig.rangeVkeyCommitment:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x4b8234c47685b3361b22399702416a8010783b1b701b279073b4f0831e55da63\"\n values.selectedOpSuccinctConfig.rollupConfigHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x7179e8c558e26751a56fc2fe9ce0a84ce248cfc98cb5b7a5178655b0c5c42ea5\"\n+++ description: currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\n+++ severity: HIGH\n values.selectedOpSuccinctConfigName:\n- \"0x622142ba8035695383551428b698950d3d4a6a53629c90a86d7192cfb221ae4e\"\n+ \"0x4a6e8c6abb9ec46b76062d422b6d87bb4b7e0304b4b06d554037828ce3006650\"\n }\n```"
}
]
},
{
"id": "edc85324",
"date": "Mon, 17 Nov 2025 11:29:07 GMT",
"timestamp": 1763378838,
"description": "New multisig member.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Safe (eth:0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb) {\n +++ description: None\n values.$members.0:\n+ \"eth:0xF045025C845E786E343Df30cC6f67ec6BB822b34\"\n values.multisigThreshold:\n- \"3 of 6 (50%)\"\n+ \"3 of 7 (43%)\"\n }\n```"
}
]
},
{
"id": "819eb143",
"date": "Tue, 04 Nov 2025 13:55:22 GMT",
"timestamp": 1762264436,
"description": "ms signer added.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana Steakhouse Financial / Morpho Multisig (eth:0x827e86072B06674a077f592A531dcE4590aDeCdB) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x8AE8EE5ad6EaE89836B0070Ebc47AF06E3D7422b\"\n values.multisigThreshold:\n- \"2 of 4 (50%)\"\n+ \"2 of 5 (40%)\"\n }\n```"
}
]
},
{
"id": "f0f02b3e",
"date": "Fri, 31 Oct 2025 13:46:31 GMT",
"timestamp": 1761895573,
"description": "Agglayer 0.3.5 upgrade:\n\nAggchainFEP - https://disco.l2beat.com/diff/eth:0xe7FE45579D784DC83B0feD844A65f4cEEFDe5682/eth:0x9532A2F35fc9B18BD4FE8315D9C5B1C1Cf6Ac660\n- aggchainManager added\n- vkey manager removed, new aggchainManager has inherited their permissions\n- oppsuccinctConfig is now a single struct with range, agg vkeys and the confighash (all keys changed)\n- aggchainVkey changed, still defined in the AgglayerGateway and not in this contract",
"isHighSeverity": true,
"changeCount": 43,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (eth:0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\n template:\n- \"polygon-cdk/AggchainFEP\"\n+ \"katana/AggchainFEP_post035\"\n sourceHashes.1:\n- \"0xe893ad152fe92e36431300818c1be2ef9c1d514a53c4ea4beba3dc0f4f9b8e4f\"\n+ \"0xd4a4d01788e8425e9dc0f2cd6f1954d521d3d0b021487bb0daeec6d8e26091c9\"\n description:\n- \"The main system contract defining the katana Layer 2 logic. As this contract is based on the OP-Succinct L2OutputOracle, OP stack outputRoots (L2 state roots) are saved here.\"\n+ \"The main system contract defining the katana Aggchain logic. This contract, based on the OP-Succinct L2OutputOracle, supports validity proofs and OP stack outputRoots (L2 state roots) are saved here.\"\n values.$implementation:\n- \"eth:0xe7FE45579D784DC83B0feD844A65f4cEEFDe5682\"\n+ \"eth:0x9532A2F35fc9B18BD4FE8315D9C5B1C1Cf6Ac660\"\n values.$pastUpgrades.3:\n+ [\"2025-10-29T14:11:11.000Z\",\"0x7be3301b763f904f5076e22914b0ea13e101ed3cff6480b23a7757e7b9875939\",[\"eth:0x9532A2F35fc9B18BD4FE8315D9C5B1C1Cf6Ac660\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.pendingVKeyManager:\n- \"eth:0x0000000000000000000000000000000000000000\"\n values.useDefaultGateway:\n- true\n values.version:\n- \"v2.0.0\"\n+ \"v3.0.0\"\n values.vKeyManager:\n- \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n values._legacypendingVKeyManager:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n values._legacyvKeyManager:\n+ \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n values.AGGCHAIN_FEP_VERSION:\n+ \"v3.0.0\"\n values.aggchainMetadataManager:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n+++ severity: HIGH\n values.aggchainMultisigHash:\n+ \"0xa57d26181a2caeea2b3fd5057d852d665445bd502aac8281622f922335bcc7d7\"\n values.aggchainSigners:\n+ [\"eth:0xC1E65a0cEbF95f56Cd8729f7e37CB33eD94d6439\"]\n values.GENESIS_CONFIG_NAME:\n+ \"0xae8304f40f7123e0c87b97f8a600e94ff3a3a25be588fc66b8a3717c8959ce77\"\n values.getAggchainMultisigHash:\n+ \"0xa57d26181a2caeea2b3fd5057d852d665445bd502aac8281622f922335bcc7d7\"\n values.getAggchainSignerInfos:\n+ [{\"addr\":\"eth:0xC1E65a0cEbF95f56Cd8729f7e37CB33eD94d6439\",\"url\":\"https://rpc.katanarpc.com\"}]\n values.getAggchainSigners:\n+ [\"eth:0xC1E65a0cEbF95f56Cd8729f7e37CB33eD94d6439\"]\n values.getAggchainSignersCount:\n+ 1\n values.getThreshold:\n+ 1\n values.MAX_AGGCHAIN_SIGNERS:\n+ 255\n values.selectedOpSuccinctConfig:\n+ {\"aggregationVkey\":\"0x00afb45d8064ae10aa6a1793b8f39a24c27268efae2917b5c02950b2377fbf00\",\"rangeVkeyCommitment\":\"0x416d710344b6b6fa2a0b1a1445f3d6ba4fdd5ab43f0e863b1c522db20f28ad9b\",\"rollupConfigHash\":\"0x6cd1b72f40b6ddf464897d8d1b084241f38ae5fda17175ff45afb3307b2523e9\"}\n+++ description: currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\n+++ severity: HIGH\n values.selectedOpSuccinctConfigName:\n+ \"0x622142ba8035695383551428b698950d3d4a6a53629c90a86d7192cfb221ae4e\"\n values.threshold:\n+ 1\n+++ severity: HIGH\n values.useDefaultSigners:\n+ false\n+++ severity: HIGH\n values.useDefaultVkeys:\n+ true\n fieldMeta.optimisticMode.description:\n- \"degrades the system into a permissioned finalization mode without validity proofs. the state root in the aggchain proof in optimistic mode does not need an op succinct validity proof, but only a signature of the trustedSequencer.\"\n+ \"degrades the system into a permissioned finalization mode without validity proofs. The state root in the aggchain proof in optimistic mode does not need an op succinct validity proof, but only a signature of the trustedSequencer.\"\n fieldMeta.aggregationVkey.severity:\n- \"HIGH\"\n+ \"LOW\"\n fieldMeta.aggregationVkey.description:\n- \"Verification key for the aggregation step which aggregates multiple range proofs into a single proof. The aggregation proof ensures that all range proofs in a given block range are linked and use the `rangeVkeyCommitment` as the verification key. This proof is in turn wrapped by the aggchainVkey.\"\n+ \"DEPRECATED - Verification key for the aggregation step which aggregates multiple range proofs into a single proof. The aggregation proof ensures that all range proofs in a given block range are linked and use the `rangeVkeyCommitment` as the verification key. This proof is in turn wrapped by the aggchainVkey.\"\n fieldMeta.rangeVkeyCommitment.severity:\n- \"HIGH\"\n+ \"LOW\"\n fieldMeta.rangeVkeyCommitment.description:\n- \"Verification key for the OP Stack derivation + STF proof for a range of blocks. This proof is the bottom level proof, wrapped by the aggregationVkey.\"\n+ \"DEPRECATED - Verification key for the OP Stack derivation + STF proof for a range of blocks. This proof is the bottom level proof, wrapped by the aggregationVkey.\"\n fieldMeta.useDefaultGateway:\n- {\"severity\":\"HIGH\",\"description\":\"If set to false then aggchainVKey will be loaded from this contract and not from AggLayerGateway. In this case you can uncomment two handlers in this template to track ownedAggchainVKeys.\"}\n fieldMeta.aggchainMultisigHash:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.selectedOpSuccinctConfigName:\n+ {\"severity\":\"HIGH\",\"description\":\"currently enforced OpSuccinctConfig. update the call handler for the full config if this changes.\"}\n fieldMeta.useDefaultSigners:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.useDefaultVkeys:\n+ {\"severity\":\"HIGH\"}\n implementationNames.eth:0xe7FE45579D784DC83B0feD844A65f4cEEFDe5682:\n- \"AggchainFEP\"\n implementationNames.eth:0x9532A2F35fc9B18BD4FE8315D9C5B1C1Cf6Ac660:\n+ \"AggchainFEP\"\n }\n```\n\n```diff\n contract Katana Foundation Engineering/Security Multisig (eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n receivedPermissions.0.description:\n- \"change the op-succinct related verification keys (aggregationVkey, rangeVkeyCommitment) and the rollupConfigHash.\"\n+ \"change verification keys (aggregationVkey, rangeVkeyCommitment, aggchainVkey) and the rollupConfigHash, manage multisig signers for permissioned state transitions and change critical configs for state validation.\"\n }\n```\n\n```diff\n EOA (eth:0xC1E65a0cEbF95f56Cd8729f7e37CB33eD94d6439) {\n +++ description: None\n receivedPermissions.0.role:\n- \".trustedSequencer\"\n+ \".aggchainSigners\"\n receivedPermissions.0.description:\n- \"finalize any state root with only their signature.\"\n+ \"sign state transitions (replaces state validation for this aggchain).\"\n }\n```"
}
]
},
{
"id": "da765ddf",
"date": "Fri, 03 Oct 2025 08:42:02 GMT",
"timestamp": 1759480843,
"description": "Member removed from multisig.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) {\n +++ description: None\n values.$members.2:\n- \"eth:0x50930d652266EF4127FA3A1906B7Cb9951076628\"\n values.multisigThreshold:\n- \"4 of 11 (36%)\"\n+ \"4 of 10 (40%)\"\n }\n```"
}
]
},
{
"id": "bf919acb",
"date": "Fri, 29 Aug 2025 07:41:35 GMT",
"timestamp": 1756453226,
"description": "Msig changes.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana yieldRecipient Mulsitig (0x67C912fF560951526BffDff66dFbD4DF8AE23756) {\n +++ description: None\n values.$members.2:\n- \"eth:0x0A4857fD89ABfB7536a6D0Bd4400EF769E84Ec8b\"\n+ \"eth:0x6c20ea7778EA9F3Afd74Ce4538bc4D9d61E6ABb1\"\n }\n```\n\n```diff\n contract Safe (0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb) {\n +++ description: None\n values.$members.1:\n- \"eth:0x0A4857fD89ABfB7536a6D0Bd4400EF769E84Ec8b\"\n+ \"eth:0x6624307a4f672ec5C289fBA196952902BB518dc0\"\n }\n```"
}
]
},
{
"id": "3bbda47f",
"date": "Tue, 26 Aug 2025 13:28:38 GMT",
"timestamp": 1756214657,
"description": "Conduit msig: removed one address",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Conduit Multisig 1 (0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) {\n +++ description: None\n values.$members.2:\n- \"eth:0x860e06Fe384D1A3340111e7D142E02642178c053\"\n values.multisigThreshold:\n- \"4 of 12 (33%)\"\n+ \"4 of 11 (36%)\"\n }\n```"
}
]
},
{
"id": "c12d6309",
"date": "Wed, 20 Aug 2025 10:48:46 GMT",
"timestamp": 1755686907,
"description": "Updated the range program for proving L2 STF. I was not able to check the vkey commitment.",
"isHighSeverity": true,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AggchainFEP (0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666) {\n +++ description: The main system contract defining the katana Layer 2 logic. As this contract is based on the OP-Succinct L2OutputOracle, OP stack outputRoots (L2 state roots) are saved here.\n+++ description: Verification key for the OP Stack derivation + STF proof for a range of blocks. This proof is the bottom level proof, wrapped by the aggregationVkey.\n+++ severity: HIGH\n values.rangeVkeyCommitment:\n- \"0x2ebb1e0d5380158f22adf3750cc6056100a133d274fd7c5b457148ff29dfe173\"\n+ \"0x490685ea27adbbb83301073734f40a5656c984fe352359d54dd637e828e66872\"\n }\n```"
}
]
},
{
"id": "31d79549",
"date": "Thu, 14 Aug 2025 07:33:34 GMT",
"timestamp": 1755156807,
"description": "signer change.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Safe (0x261a25ec6c396389B75B6b22BD4A8227070E3B50) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x3e86A8bcAF0A96DD16Ec8160532DA13b2C0f6e21\"\n values.multisigThreshold:\n- \"1 of 3 (33%)\"\n+ \"1 of 4 (25%)\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x3e86A8bcAF0A96DD16Ec8160532DA13b2C0f6e21)\n +++ description: None\n```"
}
]
},
{
"id": "0802cea0",
"date": "Tue, 12 Aug 2025 14:40:13 GMT",
"timestamp": 1755009465,
"description": "Conduit Multisig 1 signer added.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Conduit Multisig 1 (0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) {\n +++ description: None\n values.$members.0:\n+ \"eth:0xFe0ab87ebE03DD0bF52DaF34Dfda6639c335e2d4\"\n values.multisigThreshold:\n- \"4 of 11 (36%)\"\n+ \"4 of 12 (33%)\"\n }\n```"
}
]
},
{
"id": "d298481e",
"date": "Mon, 11 Aug 2025 10:53:22 GMT",
"timestamp": 1754909593,
"description": "yield recipient changed.",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract vbWBTC (0x2C24B57e2CCd1f273045Af6A5f632504C432374F) {\n +++ description: This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge WBTC) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbWBTC-IOU but is sent to eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50.\n description:\n- \"This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge WBTC) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbWBTC-IOU but is sent to eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756.\"\n+ \"This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge WBTC) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbWBTC-IOU but is sent to eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50.\"\n }\n```\n\n```diff\n contract vbETH (0x2DC70fb75b88d2eB4715bc06E1595E6D97c34DFF) {\n +++ description: This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge ETH) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbETH-IOU but is sent to eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50.\n description:\n- \"This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge ETH) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbETH-IOU but is sent to eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756.\"\n+ \"This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge ETH) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbETH-IOU but is sent to eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50.\"\n }\n```\n\n```diff\n contract vbUSDS (0x3DD459dE96F9C28e3a343b831cbDC2B93c8C4855) {\n +++ description: This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDS) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDS-IOU but is sent to eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50.\n description:\n- \"This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDS) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDS-IOU but is sent to eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756.\"\n+ \"This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDS) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDS-IOU but is sent to eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50.\"\n }\n```\n\n```diff\n contract vbUSDC (0x53E82ABbb12638F09d9e624578ccB666217a765e) {\n +++ description: This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDC) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDC-IOU but is sent to eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50.\n description:\n- \"This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDC) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDC-IOU but is sent to eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756.\"\n+ \"This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDC) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDC-IOU but is sent to eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50.\"\n }\n```\n\n```diff\n contract vbUSDT (0x6d4f9f9f8f0155509ecd6Ac6c544fF27999845CC) {\n +++ description: This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDT) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDT-IOU but is sent to eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50.\n description:\n- \"This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDT) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDT-IOU but is sent to eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756.\"\n+ \"This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDT) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDT-IOU but is sent to eth:0x261a25ec6c396389B75B6b22BD4A8227070E3B50.\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x261a25ec6c396389B75B6b22BD4A8227070E3B50)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0xFA58659F64a393A6E1A548ABc70Ad2CfE1e8f9Cb)\n +++ description: None\n```"
}
]
},
{
"id": "e39f12d9",
"date": "Fri, 01 Aug 2025 13:23:05 GMT",
"timestamp": 1754054572,
"description": "op stack operator fee constant set.\n\nthree members added to multisig, threshold increased.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SystemConfig (0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n values.operatorFeeConstant:\n- 0\n+ 1351351351351\n }\n```\n\n```diff\n contract Polygon Multisig 2 (0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x2483A0d6a3Bd89D5C17aA80B3f8f6102ac053361\"\n values.$members.1:\n+ \"eth:0x73D8846324B30477EA3Ac055589e40F39DE497F8\"\n values.$members.2:\n+ \"eth:0x34d23C4fb6542B467cA8724bAD30AC811399b184\"\n values.$threshold:\n- 1\n+ 3\n values.multisigThreshold:\n- \"1 of 2 (50%)\"\n+ \"3 of 5 (60%)\"\n }\n```"
}
]
},
{
"id": "627293ca",
"date": "Thu, 24 Jul 2025 11:38:32 GMT",
"timestamp": 1753357112,
"description": "Upgrade op stack contracts to known versions. The only aberrant contract is the new OptiPortal2, which, like the old one, [disallows deposited transactions](https://disco.l2beat.com/diff/eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4/eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc).\n\nConfig: Kailua added to OptimismPortal2 and DisputeGameFactory.",
"isHighSeverity": true,
"changeCount": 90,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1ERC721Bridge (0x15a32FCeA89617Ff450F094cDE102CCa46598B7F) {\n +++ description: Used to bridge ERC-721 tokens from host chain to this chain.\n sourceHashes.1:\n- \"0x482ec6e91304ac39a3fb4505634427bddfddee23b8e93a4f7f995ca5083ae3c3\"\n+ \"0x28669b49da3effd51f0f9424ca9cdd455c5b9327c09a40c65fc06f114a6eb837\"\n values.$implementation:\n- \"eth:0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d\"\n+ \"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013\"\n values.$pastUpgrades.1:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x276d3730f219f7ec22274f7263180b8452B46d47\"]]\n values.$pastUpgrades.2:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013\"]]\n values.$upgradeCount:\n- 1\n+ 3\n values.version:\n- \"2.1.0\"\n+ \"2.4.0\"\n implementationNames.eth:0xAE2AF01232a6c4a4d3012C5eC5b1b35059caF10d:\n- \"L1ERC721Bridge\"\n implementationNames.eth:0x7aE1d3BD877a4C5CA257404ce26BE93A02C98013:\n+ \"L1ERC721Bridge\"\n }\n```\n\n```diff\n contract ProxyAdmin (0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832) {\n +++ description: None\n directlyReceivedPermissions.2:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x1AaA08d577cbC3da3b955DC1B7a281D7b8fE3372\",\"role\":\"admin\"}\n directlyReceivedPermissions.5:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x79ecD8d8040496014bcD3bA16AdF3914b23f8Fd5\",\"role\":\"admin\"}\n }\n```\n\n```diff\n contract L1CrossDomainMessenger (0x2008A6Ba8CAF85AaFAe7880664Dfe681D533ac2E) {\n +++ description: Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n sourceHashes.1:\n- \"0x1cc8a3b7de3d2c54c4706bb3f3015714d3b56647fc9fbfd6f8b068f5f63c1c25\"\n+ \"0x03bcdc719cb7bd0a1377c01bb50b30a6122b308f673b7d7b15a3bb8628e6bd8c\"\n values.$implementation:\n- \"eth:0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65\"\n+ \"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B\"\n values.$pastUpgrades.1:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x3eA6084748ED1b2A9B5D4426181F1ad8C93F6231\"]]\n values.$pastUpgrades.2:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B\"]]\n values.$upgradeCount:\n- 1\n+ 3\n values.version:\n- \"2.3.0\"\n+ \"2.6.0\"\n values.ENCODING_OVERHEAD:\n+ 260\n values.FLOOR_CALLDATA_OVERHEAD:\n+ 40\n values.TX_BASE_GAS:\n+ 21000\n implementationNames.eth:0xD3494713A5cfaD3F5359379DfA074E2Ac8C6Fd65:\n- \"L1CrossDomainMessenger\"\n implementationNames.eth:0x5D5a095665886119693F0B41d8DFeE78da033e8B:\n+ \"L1CrossDomainMessenger\"\n }\n```\n\n```diff\n contract OptimismPortal2 (0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E) {\n +++ description: The OptimismPortal contract usually is the main entry point to deposit funds from L1 to L2 or for finalizing withdrawals. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame. This specific fork of the standard contract **disables the depositTransaction() function**, which prevents users from sending or forcing any transactions from L1 to L2, including token deposits. It is instead used for configuration and administration of the system.\n sourceHashes.1:\n- \"0x1e6e48895b45b98acfe8b9c9f4568d3662e2932d82019f4ea721e2f7b57a58fc\"\n+ \"0x9cf3cb8a68c82a3a8328495d5f019daa51e9098a69b69ee8e349e3058b789338\"\n values.$implementation:\n- \"eth:0x9a6C2Dcc7e523f87716e17Ba36D10CCfFA0A60bb\"\n+ \"eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc\"\n values.$pastUpgrades.2:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x2D7e764a0D9919e16983a46595CfA81fc34fa7Cd\"]]\n values.$pastUpgrades.3:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0xB443Da3e07052204A02d630a8933dAc05a0d6fB4\"]]\n values.$pastUpgrades.4:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc\"]]\n values.$upgradeCount:\n- 2\n+ 5\n values.version:\n- \"3.11.0-beta.6\"\n+ \"3.14.0\"\n implementationNames.eth:0x9a6C2Dcc7e523f87716e17Ba36D10CCfFA0A60bb:\n- \"OptimismPortal2\"\n implementationNames.eth:0x51c852eC17062FB229A117Cb8abCBc7Eb171D5Bc:\n+ \"OptimismPortal2\"\n }\n```\n\n```diff\n- Status: DELETED\n contract PermissionedDisputeGame (0x2d4B822F8B74AdE7fcD5F740967f4dFcD2fef5e4)\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n```\n\n```diff\n contract SuperchainConfig (0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811) {\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and `GUARDIAN_SLOT`, the address of the guardian which can pause and unpause the system.\n sourceHashes.1:\n- \"0x3f0bcc82f3184c1cb2e9aa6d3ecdd7c863186eea851dda56dd7e100d9174b840\"\n+ \"0x03dba37173051b02bc81487e181c791bcf1aef664c249e5d035f11f488bdd686\"\n values.$implementation:\n- \"eth:0x838897A86Cb4F130D0eFC1203d7dA6D0db4bEd1A\"\n+ \"eth:0x4da82a327773965b8d4D85Fa3dB8249b387458E7\"\n values.$pastUpgrades.3:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x4da82a327773965b8d4D85Fa3dB8249b387458E7\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.version:\n- \"1.1.1-beta.1\"\n+ \"1.2.0\"\n implementationNames.eth:0x838897A86Cb4F130D0eFC1203d7dA6D0db4bEd1A:\n- \"SuperchainConfig\"\n implementationNames.eth:0x4da82a327773965b8d4D85Fa3dB8249b387458E7:\n+ \"SuperchainConfig\"\n }\n```\n\n```diff\n contract Katana Foundation Engineering/Security Multisig (0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n receivedPermissions.6:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x1AaA08d577cbC3da3b955DC1B7a281D7b8fE3372\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n receivedPermissions.10:\n- {\"permission\":\"upgrade\",\"from\":\"eth:0x79ecD8d8040496014bcD3bA16AdF3914b23f8Fd5\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}\n }\n```\n\n```diff\n- Status: DELETED\n contract MIPS (0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C)\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```\n\n```diff\n contract DelayedWETH (0x74034597d29613CC8C0BDc8780e1d292A553Bd32) {\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n sourceHashes.1:\n- \"0xfff6f4cca21febd4323222e2ca87ec8b78edfdeeca942468fbf331e537815484\"\n+ \"0x1c7d0fda5ed6d8fc7f5b5f7df5e307f0fcfd173fa5833ea9fce8875d5d44d86a\"\n values.$implementation:\n- \"eth:0x71e966Ae981d1ce531a7b6d23DC0f27B38409087\"\n+ \"eth:0x5e40B9231B86984b5150507046e354dbFbeD3d9e\"\n values.$pastUpgrades.1:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x5e40B9231B86984b5150507046e354dbFbeD3d9e\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.delay:\n- 604800\n+ 302400\n values.version:\n- \"1.1.0\"\n+ \"1.3.0\"\n implementationNames.eth:0x71e966Ae981d1ce531a7b6d23DC0f27B38409087:\n- \"DelayedWETH\"\n implementationNames.eth:0x5e40B9231B86984b5150507046e354dbFbeD3d9e:\n+ \"DelayedWETH\"\n }\n```\n\n```diff\n- Status: DELETED\n contract AnchorStateRegistry (0x79ecD8d8040496014bcD3bA16AdF3914b23f8Fd5)\n +++ description: Contains the latest confirmed state root that can be used as a starting point in a dispute game.\n```\n\n```diff\n contract L1StandardBridge (0x98906C3f90A06B5484DD67bf32938815d2993dBC) {\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n sourceHashes.1:\n- \"0x1010ff7f40ab4d53e6d9996aefa04423dabe9d0e22fac2d02b330ed3aa2c5740\"\n+ \"0x4e15d99844dc5a4304c2396a66c95ec41218ea311c8e524b118fad7beed0bb53\"\n values.$implementation:\n- \"eth:0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF\"\n+ \"eth:0x0b09ba359A106C9ea3b181CBc5F394570c7d2a7A\"\n values.version:\n- \"2.1.0\"\n+ \"2.3.0\"\n implementationNames.eth:0x64B5a5Ed26DCb17370Ff4d33a8D503f0fbD06CfF:\n- \"L1StandardBridge\"\n implementationNames.eth:0x0b09ba359A106C9ea3b181CBc5F394570c7d2a7A:\n+ \"L1StandardBridge\"\n }\n```\n\n```diff\n- Status: DELETED\n contract PreimageOracle (0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277)\n +++ description: The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n```\n\n```diff\n contract OptimismMintableERC20Factory (0xA84C37cD0b9bA1B43276C11976DBE9d1344C7f4E) {\n +++ description: A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintableERC20 as this chain's representation of a token on the host chain, or vice-versa.\n sourceHashes.1:\n- \"0x4c5ac4e53576924cabbd2a471f368a541bc3f4b1f53fa41a389692fcc62f6176\"\n+ \"0x9650b4bba6299e410f01a369a95a2c57e1c3ca35f0d80c13f4f59fc468f370e5\"\n values.$implementation:\n- \"eth:0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846\"\n+ \"eth:0x5493f4677A186f64805fe7317D6993ba4863988F\"\n values.$pastUpgrades.1:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x5493f4677A186f64805fe7317D6993ba4863988F\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.version:\n- \"1.9.0\"\n+ \"1.10.1\"\n implementationNames.eth:0xE01efbeb1089D1d1dB9c6c8b135C934C0734c846:\n- \"OptimismMintableERC20Factory\"\n implementationNames.eth:0x5493f4677A186f64805fe7317D6993ba4863988F:\n+ \"OptimismMintableERC20Factory\"\n }\n```\n\n```diff\n contract SystemConfig (0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n sourceHashes.1:\n- \"0xc7135dbd2a53312d36df3f3ee91ce0a5a459ab8fc7725880a3a9c55a5fa0ed6c\"\n+ \"0x921de6fc906d159fdcef862d2b9559063f5e7b9b7588fa5f33153360ddf296e7\"\n values.$implementation:\n- \"eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375\"\n+ \"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647\"\n values.$pastUpgrades.2:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x760C48C62A85045A6B69f07F4a9f22868659CbCc\"]]\n values.$pastUpgrades.3:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647\"]]\n values.$upgradeCount:\n- 2\n+ 4\n values.gasPayingToken:\n- {\"addr_\":\"eth:0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE\",\"decimals_\":18}\n values.gasPayingTokenName:\n- \"Ether\"\n values.gasPayingTokenSymbol:\n- \"ETH\"\n values.isCustomGasToken:\n- false\n values.version:\n- \"2.3.0\"\n+ \"2.5.0\"\n values.getAddresses:\n+ {\"l1CrossDomainMessenger\":\"eth:0x2008A6Ba8CAF85AaFAe7880664Dfe681D533ac2E\",\"l1ERC721Bridge\":\"eth:0x15a32FCeA89617Ff450F094cDE102CCa46598B7F\",\"l1StandardBridge\":\"eth:0x98906C3f90A06B5484DD67bf32938815d2993dBC\",\"disputeGameFactory\":\"eth:0xe06278351d120288eDfCB963F934113Ca3C21AFe\",\"optimismPortal\":\"eth:0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E\",\"optimismMintableERC20Factory\":\"eth:0xA84C37cD0b9bA1B43276C11976DBE9d1344C7f4E\"}\n values.operatorFeeConstant:\n+ 0\n values.operatorFeeScalar:\n+ 0\n implementationNames.eth:0xAB9d6cB7A427c0765163A7f45BB91cAfe5f2D375:\n- \"SystemConfig\"\n implementationNames.eth:0x340f923E5c7cbB2171146f64169EC9d5a9FfE647:\n+ \"SystemConfig\"\n }\n```\n\n```diff\n contract DisputeGameFactory (0xe06278351d120288eDfCB963F934113Ca3C21AFe) {\n +++ description: The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\n sourceHashes.1:\n- \"0x7f307d6191215a72b6c24c01b3c2fc87c84f7fb346790132e58736caa2d1dd14\"\n+ \"0x85ca17941ef36ac6b28a4f8f89803d0d41ef419c47586dcd3acdb47ee9617285\"\n values.$implementation:\n- \"eth:0xc641A33cab81C559F2bd4b21EA34C290E2440C2B\"\n+ \"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0\"\n values.$pastUpgrades.1:\n+ [\"2025-07-23T17:04:59.000Z\",\"0xc60a3166aa296b584f143a129ac53f156ee9946373ff5fb97b3785cc5fc092a2\",[\"eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.gameImpls.1:\n- \"eth:0x2d4B822F8B74AdE7fcD5F740967f4dFcD2fef5e4\"\n+ \"eth:0x667b7DA73DA7B2A75286378FF45637eEaE9B4793\"\n values.version:\n- \"1.0.0\"\n+ \"1.0.1\"\n implementationNames.eth:0xc641A33cab81C559F2bd4b21EA34C290E2440C2B:\n- \"DisputeGameFactory\"\n implementationNames.eth:0x4bbA758F006Ef09402eF31724203F316ab74e4a0:\n+ \"DisputeGameFactory\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract AnchorStateRegistry (0x1AaA08d577cbC3da3b955DC1B7a281D7b8fE3372)\n +++ description: Contains the latest confirmed state root that can be used as a starting point in a dispute game.\n```\n\n```diff\n+ Status: CREATED\n contract PreimageOracle (0x1fb8cdFc6831fc866Ed9C51aF8817Da5c287aDD3)\n +++ description: The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n```\n\n```diff\n+ Status: CREATED\n contract PermissionedDisputeGame (0x667b7DA73DA7B2A75286378FF45637eEaE9B4793)\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n```\n\n```diff\n+ Status: CREATED\n contract MIPS (0xF027F4A985560fb13324e943edf55ad6F1d15Dc1)\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```"
}
]
},
{
"id": "f8d1fbbf",
"date": "Mon, 21 Jul 2025 10:08:59 GMT",
"timestamp": 1753092539,
"description": "MS two members added.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana yieldRecipient Mulsitig (0x67C912fF560951526BffDff66dFbD4DF8AE23756) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x34d23C4fb6542B467cA8724bAD30AC811399b184\"\n values.$members.1:\n+ \"eth:0x09f5F2592791208219A1F51e3855Be9419fF6bE4\"\n values.multisigThreshold:\n- \"2 of 5 (40%)\"\n+ \"2 of 7 (29%)\"\n }\n```"
}
]
},
{
"id": "5f70de70",
"date": "Mon, 14 Jul 2025 12:45:14 GMT",
"timestamp": 1752497114,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 39,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract AggchainFEP (0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666)\n +++ description: The main system contract defining the katana Layer 2 logic. As this contract is based on the OP-Succinct L2OutputOracle, OP stack outputRoots (L2 state roots) are saved here.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x14Be6579A41342ca6B402ec85E7be538e6Ade951)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1ERC721Bridge (0x15a32FCeA89617Ff450F094cDE102CCa46598B7F)\n +++ description: Used to bridge ERC-721 tokens from host chain to this chain.\n```\n\n```diff\n+ Status: CREATED\n contract Yearn Strategist Multisig (0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1CrossDomainMessenger (0x2008A6Ba8CAF85AaFAe7880664Dfe681D533ac2E)\n +++ description: Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n```\n\n```diff\n+ Status: CREATED\n contract OptimismPortal2 (0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E)\n +++ description: The OptimismPortal contract usually is the main entry point to deposit funds from L1 to L2 or for finalizing withdrawals. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame. This specific fork of the standard contract **disables the depositTransaction() function**, which prevents users from sending or forcing any transactions from L1 to L2, including token deposits. It is instead used for configuration and administration of the system.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x263b251D67BB154DD6b8352539466ACE7948ED56)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract vbWBTC (0x2C24B57e2CCd1f273045Af6A5f632504C432374F)\n +++ description: This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge WBTC) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbWBTC-IOU but is sent to eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756.\n```\n\n```diff\n+ Status: CREATED\n contract PermissionedDisputeGame (0x2d4B822F8B74AdE7fcD5F740967f4dFcD2fef5e4)\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n```\n\n```diff\n+ Status: CREATED\n contract vbETH (0x2DC70fb75b88d2eB4715bc06E1595E6D97c34DFF)\n +++ description: This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge ETH) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbETH-IOU but is sent to eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756.\n```\n\n```diff\n+ Status: CREATED\n contract Katana vaultBridge Multisig 1 (0x2De242e27386e224E5fbF110EA8406d5B70740ec)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SuperchainConfig (0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811)\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and `GUARDIAN_SLOT`, the address of the guardian which can pause and unpause the system.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x377a9e5df2882DC1DF8A0bD162cbc640eA634010)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract vbUSDS (0x3DD459dE96F9C28e3a343b831cbDC2B93c8C4855)\n +++ description: This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDS) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDS-IOU but is sent to eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756.\n```\n\n```diff\n+ Status: CREATED\n contract MigrationManager (0x417d01B64Ea30C4E163873f3a1f77b727c689e02)\n +++ description: Helper contract for the vaultBridge tokens on Layer 2. If any vbTokens are minted 'natively' on Layer 2, this contract can receive the underlying assets and lock them in the Layer 1 vaults.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x420693B32113a0e00Eb9f3315D5D5ec3b32C2d69)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Conduit Multisig 1 (0x4a4962275DF8C60a80d3a25faEc5AA7De116A746)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Katana Foundation Engineering/Security Multisig (0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract vbUSDC (0x53E82ABbb12638F09d9e624578ccB666217a765e)\n +++ description: This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDC) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDC-IOU but is sent to eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756.\n```\n\n```diff\n+ Status: CREATED\n contract MIPS (0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C)\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```\n\n```diff\n+ Status: CREATED\n contract Katana yieldRecipient Mulsitig (0x67C912fF560951526BffDff66dFbD4DF8AE23756)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x6d0ff67fb427422AfF35EEa8596949B374b09a52)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract vbUSDT (0x6d4f9f9f8f0155509ecd6Ac6c544fF27999845CC)\n +++ description: This token contract uses a standard 'vault bridge token' implementation created by Agglayer CDK. It keeps deposited assets in a vault and issues an IOU token (Vault Bridge USDT) which can be deposited to Agglayer. The underlying asset is generating yield, which does not accrue to the vbUSDT-IOU but is sent to eth:0x67C912fF560951526BffDff66dFbD4DF8AE23756.\n```\n\n```diff\n+ Status: CREATED\n contract DelayedWETH (0x74034597d29613CC8C0BDc8780e1d292A553Bd32)\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n```\n\n```diff\n+ Status: CREATED\n contract AnchorStateRegistry (0x79ecD8d8040496014bcD3bA16AdF3914b23f8Fd5)\n +++ description: Contains the latest confirmed state root that can be used as a starting point in a dispute game.\n```\n\n```diff\n+ Status: CREATED\n contract Katana Steakhouse Financial / Morpho Multisig (0x827e86072B06674a077f592A531dcE4590aDeCdB)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x8970650CF3f1E57cA804C65B4DBcFf698789FE30)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1StandardBridge (0x98906C3f90A06B5484DD67bf32938815d2993dBC)\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n```\n\n```diff\n+ Status: CREATED\n contract PreimageOracle (0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277)\n +++ description: The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n```\n\n```diff\n+ Status: CREATED\n contract Polygon Labs Engineering/Security Multisig (0x9d851f8b8751c5FbC09b9E74E6e68E9950949052)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract OptimismMintableERC20Factory (0xA84C37cD0b9bA1B43276C11976DBE9d1344C7f4E)\n +++ description: A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintableERC20 as this chain's representation of a token on the host chain, or vice-versa.\n```\n\n```diff\n+ Status: CREATED\n contract Katana vaultBridge Multisig 2 (0xA8C31B2edd84c654d06d626383f4154D1E40C5Ff)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SystemConfig (0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174)\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n```\n\n```diff\n+ Status: CREATED\n contract Polygon Multisig 2 (0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xD1e389c046FB734D2a0c7C390312210c408ba832)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DisputeGameFactory (0xe06278351d120288eDfCB963F934113Ca3C21AFe)\n +++ description: The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\n```\n\n```diff\n+ Status: CREATED\n contract AddressManager (0xEaB94275eD336D80d4F46EA8Ea0427e351f11D65)\n +++ description: Legacy contract used to manage a mapping of string names to addresses. Modern OP stack uses a different standard proxy system instead, but this contract is still necessary for backwards compatibility with several older contracts.\n```\n\n```diff\n+ Status: CREATED\n contract Katana vaultBridge Multisig 3 (0xf4F2f5F6bAdBE05433C4604320ecC56BbECBC04E)\n +++ description: None\n```"
}
]
},
{
"id": "b3e7b2fc",
"date": "Fri, 11 Jul 2025 12:28:54 GMT",
"timestamp": 1752236934,
"description": "2 member added, 1 member switch.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana Foundation Engineering/Security Multisig (0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n values.$members.4:\n- \"0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37\"\n+ \"0xcAB31b6A7b4d2eCd562A09e2BfA46535a18862f9\"\n }\n```\n\n```diff\n contract Katana yieldRecipient Mulsitig (0x67C912fF560951526BffDff66dFbD4DF8AE23756) {\n +++ description: None\n values.$members.0:\n+ \"0x0A4857fD89ABfB7536a6D0Bd4400EF769E84Ec8b\"\n values.$members.1:\n+ \"0x54DFA4B635E7eB98515fEBA81d360A3871739277\"\n values.multisigThreshold:\n- \"2 of 3 (67%)\"\n+ \"2 of 5 (40%)\"\n }\n```"
}
]
},
{
"id": "9620535b",
"date": "Thu, 03 Jul 2025 09:54:26 GMT",
"timestamp": 1751536466,
"description": "add op stack gasconfig parameters.\n\nconfig: refine descriptions and permissions.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SystemConfig (0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n+++ description: volatility param: lower denominator -> quicker fee changes on L2\n values.eip1559Denominator:\n- 0\n+ 250\n values.eip1559Elasticity:\n- 0\n+ 60\n }\n```"
}
]
},
{
"id": "0682952c",
"date": "Tue, 01 Jul 2025 16:11:11 GMT",
"timestamp": 1751386271,
"description": "Predeposits ended (limit 0), chain is live.\n\nadd the AggchainFEP core contract of Katana.\n\nmove TVS to L2 configs.",
"isHighSeverity": false,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana Pre-Deposit USDT Token (0x48c03B6FfD0008460F8657Db1037C7e09dEedfcb) {\n +++ description: None\n values.deposit_limit:\n- \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n+ 0\n values.deposit_limit_module:\n- \"0x793D85F585145c050487c7AfBF0e9B97143fF1CB\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DepositModule (0x793D85F585145c050487c7AfBF0e9B97143fF1CB)\n +++ description: None\n```\n\n```diff\n contract Katana Pre-Deposit USDC Token (0x7B5A0182E400b241b317e781a4e9dEdFc1429822) {\n +++ description: None\n values.deposit_limit:\n- \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n+ 0\n values.deposit_limit_module:\n- \"0x793D85F585145c050487c7AfBF0e9B97143fF1CB\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n contract Katana Pre-Deposit WBTC Token (0x92C82f5F771F6A44CfA09357DD0575B81BF5F728) {\n +++ description: None\n values.deposit_limit:\n- \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n+ 0\n values.deposit_limit_module:\n- \"0x793D85F585145c050487c7AfBF0e9B97143fF1CB\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n contract Katana Pre-Deposit WETH Token (0xcc6a16Be713f6a714f68b0E1f4914fD3db15fBeF) {\n +++ description: None\n values.deposit_limit:\n- \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n+ 0\n values.deposit_limit_module:\n- \"0x793D85F585145c050487c7AfBF0e9B97143fF1CB\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x67C912fF560951526BffDff66dFbD4DF8AE23756)\n +++ description: None\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract AggchainFEP (0x100d3ca4f97776A40A7D93dB4AbF0FEA34230666)\n +++ description: The main system contract defining the katana Layer 2 logic. As this contract is based on the OP-Succinct L2OutputOracle, OP stack outputRoots (L2 state roots) are saved here.\n```"
}
]
},
{
"id": "41b0c8bb",
"date": "Mon, 30 Jun 2025 11:04:12 GMT",
"timestamp": 1751281452,
"description": "New owner / admin for the opstack contracts: tagged it katana multisig 2.\n\nmove project under review with activity, TVS.",
"isHighSeverity": false,
"changeCount": 20,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ProxyAdmin (0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832) {\n +++ description: None\n values.owner:\n- \"0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n+ \"0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n }\n```\n\n```diff\n contract OptimismPortal2 (0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E) {\n +++ description: [PAUSED] The OptimismPortal contract is the main entry point to deposit funds from L1 to L2. It also allows to prove and finalize withdrawals. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame. This specific fork of the standard contract **disables the depositTransaction() function**, which prevents users from sending or forcing any transactions from L1 to L2, including token deposits.\n values.guardian:\n- \"0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n+ \"0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n }\n```\n\n```diff\n contract GenericVaultBridgeToken (0x2C24B57e2CCd1f273045Af6A5f632504C432374F) {\n +++ description: None\n values.accessControl.YIELD_COLLECTOR_ROLE.members.1:\n+ \"0xcB1e45481461aeF38E6B0a34F1444E9C5D647645\"\n }\n```\n\n```diff\n contract VbETH (0x2DC70fb75b88d2eB4715bc06E1595E6D97c34DFF) {\n +++ description: None\n values.accessControl.YIELD_COLLECTOR_ROLE.members.1:\n+ \"0xcB1e45481461aeF38E6B0a34F1444E9C5D647645\"\n }\n```\n\n```diff\n contract SuperchainConfig (0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811) {\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and `GUARDIAN_SLOT`, the address of the guardian which can pause and unpause the system.\n values.$pastUpgrades.1:\n+ [\"2025-06-30T10:33:47.000Z\",\"0x56f6765801bec01f9aa2a5c9750daada809b1f7a3f5343800c0b76c6308b4558\",[\"0xd81f43eDBCAcb4c29a9bA38a13Ee5d79278270cC\"]]\n values.$pastUpgrades.2:\n+ [\"2025-06-30T10:33:47.000Z\",\"0x56f6765801bec01f9aa2a5c9750daada809b1f7a3f5343800c0b76c6308b4558\",[\"0x838897A86Cb4F130D0eFC1203d7dA6D0db4bEd1A\"]]\n values.$upgradeCount:\n- 1\n+ 3\n values.guardian:\n- \"0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n+ \"0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n }\n```\n\n```diff\n contract GenericVaultBridgeToken (0x3DD459dE96F9C28e3a343b831cbDC2B93c8C4855) {\n +++ description: None\n values.accessControl.YIELD_COLLECTOR_ROLE.members.1:\n+ \"0xcB1e45481461aeF38E6B0a34F1444E9C5D647645\"\n }\n```\n\n```diff\n contract Conduit Multisig 1 (0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) {\n +++ description: None\n receivedPermissions:\n- [{\"permission\":\"guard\",\"from\":\"ethereum:0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811\",\"role\":\".guardian\"},{\"permission\":\"interact\",\"from\":\"ethereum:0x74034597d29613CC8C0BDc8780e1d292A553Bd32\",\"description\":\"can pull funds from the contract in case of emergency.\",\"role\":\".owner\"},{\"permission\":\"interact\",\"from\":\"ethereum:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174\",\"description\":\"it can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system.\",\"role\":\".owner\"},{\"permission\":\"interact\",\"from\":\"ethereum:0xEaB94275eD336D80d4F46EA8Ea0427e351f11D65\",\"description\":\"set and change address mappings.\",\"role\":\".owner\",\"via\":[{\"address\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"ethereum:0x15a32FCeA89617Ff450F094cDE102CCa46598B7F\",\"role\":\"admin\",\"via\":[{\"address\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"ethereum:0x2008A6Ba8CAF85AaFAe7880664Dfe681D533ac2E\",\"role\":\"admin\",\"via\":[{\"address\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"ethereum:0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E\",\"role\":\"admin\",\"via\":[{\"address\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"ethereum:0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811\",\"role\":\"admin\",\"via\":[{\"address\":\"ethereum:0x6d0ff67fb427422AfF35EEa8596949B374b09a52\"}]},{\"permission\":\"upgrade\",\"from\":\"ethereum:0x74034597d29613CC8C0BDc8780e1d292A553Bd32\",\"role\":\"admin\",\"via\":[{\"address\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"ethereum:0x79ecD8d8040496014bcD3bA16AdF3914b23f8Fd5\",\"role\":\"admin\",\"via\":[{\"address\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"ethereum:0x98906C3f90A06B5484DD67bf32938815d2993dBC\",\"description\":\"upgrading the bridge implementation can give access to all funds escrowed therein.\",\"role\":\".$admin\",\"via\":[{\"address\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"ethereum:0xA84C37cD0b9bA1B43276C11976DBE9d1344C7f4E\",\"role\":\"admin\",\"via\":[{\"address\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"ethereum:0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174\",\"role\":\"admin\",\"via\":[{\"address\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]},{\"permission\":\"upgrade\",\"from\":\"ethereum:0xe06278351d120288eDfCB963F934113Ca3C21AFe\",\"role\":\"admin\",\"via\":[{\"address\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\"}]}]\n directlyReceivedPermissions:\n- [{\"permission\":\"act\",\"from\":\"ethereum:0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832\",\"role\":\".owner\"},{\"permission\":\"act\",\"from\":\"ethereum:0x6d0ff67fb427422AfF35EEa8596949B374b09a52\",\"role\":\".owner\"}]\n }\n```\n\n```diff\n contract GenericVaultBridgeToken (0x53E82ABbb12638F09d9e624578ccB666217a765e) {\n +++ description: None\n values.accessControl.YIELD_COLLECTOR_ROLE.members.1:\n+ \"0xcB1e45481461aeF38E6B0a34F1444E9C5D647645\"\n }\n```\n\n```diff\n contract ProxyAdmin (0x6d0ff67fb427422AfF35EEa8596949B374b09a52) {\n +++ description: None\n values.owner:\n- \"0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n+ \"0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n }\n```\n\n```diff\n contract GenericVaultBridgeToken (0x6d4f9f9f8f0155509ecd6Ac6c544fF27999845CC) {\n +++ description: None\n values.accessControl.YIELD_COLLECTOR_ROLE.members.1:\n+ \"0xcB1e45481461aeF38E6B0a34F1444E9C5D647645\"\n }\n```\n\n```diff\n contract DelayedWETH (0x74034597d29613CC8C0BDc8780e1d292A553Bd32) {\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n values.owner:\n- \"0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n+ \"0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n }\n```\n\n```diff\n contract Polygon Multisig 2 (0x9d851f8b8751c5FbC09b9E74E6e68E9950949052) {\n +++ description: None\n values.$threshold:\n- 3\n+ 2\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"2 of 5 (40%)\"\n }\n```\n\n```diff\n contract SystemConfig (0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174) {\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n values.owner:\n- \"0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n+ \"0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n }\n```\n\n```diff\n contract DisputeGameFactory (0xe06278351d120288eDfCB963F934113Ca3C21AFe) {\n +++ description: The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\n values.owner:\n- \"0x4a4962275DF8C60a80d3a25faEc5AA7De116A746\"\n+ \"0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Katana Multisig 2 (0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a)\n +++ description: None\n```"
}
]
},
{
"id": "042fcf4f",
"date": "Fri, 27 Jun 2025 10:25:59 GMT",
"timestamp": 1751019959,
"description": "found the opstack part of katana and some middleware between yearn, morpho and agglayer.\n\nkatana is using an OptiPortal2 that [denies all L1->L2 messages.](https://disco.l2beat.com/diff/eth:0x3Da872782f9fB696fD72Af2ec9313a56bDA6f06d/eth:0x9a6C2Dcc7e523f87716e17Ba36D10CCfFA0A60bb) It also does not have any state updates yet. The rest of the system is 'standard' opstack **with** custom gas token support (ETH is set atm, could only be changed with a major upgrade) and standard PermissionedDisputeGame without any games created. Notably this deployment also does not use the latest 7702 protections that the superchain does use.\n\nbehind its yearn vaults, katana seems to use a system of smart contracts written by polygon called vaultBridge. For each yielding asset, a vaultBridge contract (erc20 and vault standards) exists and a MigrationManager allows to migrate these derivative vbTokens to the lxly bridge (agglayer shared bridge), which has not happened yet. All user yields are currently accruing to three different Multisigs that have signers from Katana, Agglayer and Yearn (not sure abt morpho).",
"isHighSeverity": false,
"changeCount": 36,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ProxyAdmin (0x14Be6579A41342ca6B402ec85E7be538e6Ade951)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1ERC721Bridge (0x15a32FCeA89617Ff450F094cDE102CCa46598B7F)\n +++ description: Used to bridge ERC-721 tokens from host chain to this chain.\n```\n\n```diff\n+ Status: CREATED\n contract Yearn Strategist Multisig (0x16388463d60FFE0661Cf7F1f31a7D658aC790ff7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x19DbD16f0a8e706D817B7e3b7bcF72917Ebb8832)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1CrossDomainMessenger (0x2008A6Ba8CAF85AaFAe7880664Dfe681D533ac2E)\n +++ description: Sends messages from host chain to this chain, and relays messages back onto host chain. In the event that a message sent from host chain to this chain is rejected for exceeding this chain's epoch gas limit, it can be resubmitted via this contract's replay function.\n```\n\n```diff\n+ Status: CREATED\n contract OptimismPortal2 (0x250D30c523104bf0a06825e7eAdE4Dc46EdfE40E)\n +++ description: [PAUSED] The OptimismPortal contract is the main entry point to deposit funds from L1 to L2. It also allows to prove and finalize withdrawals. It specifies which game type can be used for withdrawals, which currently is the PermissionedDisputeGame. This specific fork of the standard contract **disables the depositTransaction() function**, which prevents users from sending or forcing any transactions from L1 to L2, including token deposits.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x263b251D67BB154DD6b8352539466ACE7948ED56)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GenericVaultBridgeToken (0x2C24B57e2CCd1f273045Af6A5f632504C432374F)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PermissionedDisputeGame (0x2d4B822F8B74AdE7fcD5F740967f4dFcD2fef5e4)\n +++ description: Same as FaultDisputeGame, but only two permissioned addresses are designated as proposer and challenger.\n```\n\n```diff\n+ Status: CREATED\n contract VbETH (0x2DC70fb75b88d2eB4715bc06E1595E6D97c34DFF)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x2De242e27386e224E5fbF110EA8406d5B70740ec)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SuperchainConfig (0x2F439B95fa789C5d3a5C99cc70EB3ee83D08a811)\n +++ description: This is NOT the shared SuperchainConfig contract of the OP stack Superchain but rather a local fork. It manages the `PAUSED_SLOT`, a boolean value indicating whether the local chain is paused, and `GUARDIAN_SLOT`, the address of the guardian which can pause and unpause the system.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x377a9e5df2882DC1DF8A0bD162cbc640eA634010)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GenericVaultBridgeToken (0x3DD459dE96F9C28e3a343b831cbDC2B93c8C4855)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MigrationManager (0x417d01B64Ea30C4E163873f3a1f77b727c689e02)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x420693B32113a0e00Eb9f3315D5D5ec3b32C2d69)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Conduit Multisig 1 (0x4a4962275DF8C60a80d3a25faEc5AA7De116A746)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GenericVaultBridgeToken (0x53E82ABbb12638F09d9e624578ccB666217a765e)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MIPS (0x5fE03a12C1236F9C22Cb6479778DDAa4bce6299C)\n +++ description: The MIPS contract is used to execute the final step of the dispute game which objectively determines the winner of the dispute.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x6d0ff67fb427422AfF35EEa8596949B374b09a52)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GenericVaultBridgeToken (0x6d4f9f9f8f0155509ecd6Ac6c544fF27999845CC)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DelayedWETH (0x74034597d29613CC8C0BDc8780e1d292A553Bd32)\n +++ description: Contract designed to hold the bonded ETH for each game. It is designed as a wrapper around WETH to allow an owner to function as a backstop if a game would incorrectly distribute funds.\n```\n\n```diff\n+ Status: CREATED\n contract AnchorStateRegistry (0x79ecD8d8040496014bcD3bA16AdF3914b23f8Fd5)\n +++ description: Contains the latest confirmed state root that can be used as a starting point in a dispute game.\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x827e86072B06674a077f592A531dcE4590aDeCdB)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x8970650CF3f1E57cA804C65B4DBcFf698789FE30)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1StandardBridge (0x98906C3f90A06B5484DD67bf32938815d2993dBC)\n +++ description: The main entry point to deposit ERC20 tokens from host chain to this chain.\n```\n\n```diff\n+ Status: CREATED\n contract PreimageOracle (0x9c065e11870B891D214Bc2Da7EF1f9DDFA1BE277)\n +++ description: The PreimageOracle contract is used to load the required data from L1 for a dispute game.\n```\n\n```diff\n+ Status: CREATED\n contract Polygon Multisig 2 (0x9d851f8b8751c5FbC09b9E74E6e68E9950949052)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract OptimismMintableERC20Factory (0xA84C37cD0b9bA1B43276C11976DBE9d1344C7f4E)\n +++ description: A helper contract that generates OptimismMintableERC20 contracts on the network it's deployed to. OptimismMintableERC20 is a standard extension of the base ERC20 token contract designed to allow the L1StandardBridge contracts to mint and burn tokens. This makes it possible to use an OptimismMintablERC20 as this chain's representation of a token on the host chain, or vice-versa.\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0xA8C31B2edd84c654d06d626383f4154D1E40C5Ff)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SystemConfig (0xb6e1f8B589A14B79DDD3aD7F0589AB548c70C174)\n +++ description: Contains configuration parameters such as the Sequencer address, gas limit on this chain and the unsafe block signer address.\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0xd0673F989bc3BA9314d0AAF28BfC84e99B7898CC)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xD1e389c046FB734D2a0c7C390312210c408ba832)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DisputeGameFactory (0xe06278351d120288eDfCB963F934113Ca3C21AFe)\n +++ description: The dispute game factory allows the creation of dispute games, used to propose state roots and eventually challenge them.\n```\n\n```diff\n+ Status: CREATED\n contract AddressManager (0xEaB94275eD336D80d4F46EA8Ea0427e351f11D65)\n +++ description: Legacy contract used to manage a mapping of string names to addresses. Modern OP stack uses a different standard proxy system instead, but this contract is still necessary for backwards compatibility with several older contracts.\n```\n\n```diff\n+ Status: CREATED\n contract Katana Multisig (0xf4F2f5F6bAdBE05433C4604320ecC56BbECBC04E)\n +++ description: None\n```"
}
]
},
{
"id": "19a3fae3",
"date": "Wed, 25 Jun 2025 07:57:08 GMT",
"timestamp": 1750838228,
"description": "deposit limit removed for a deposit module governed by yearn strategist MS.",
"isHighSeverity": false,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana Pre-Deposit USDT Token (0x48c03B6FfD0008460F8657Db1037C7e09dEedfcb) {\n +++ description: None\n values.deposit_limit:\n- 250000000000000\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n values.deposit_limit_module:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x793D85F585145c050487c7AfBF0e9B97143fF1CB\"\n }\n```\n\n```diff\n contract Katana Pre-Deposit USDC Token (0x7B5A0182E400b241b317e781a4e9dEdFc1429822) {\n +++ description: None\n values.deposit_limit:\n- 300000000000000\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n values.deposit_limit_module:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x793D85F585145c050487c7AfBF0e9B97143fF1CB\"\n }\n```\n\n```diff\n contract Katana Pre-Deposit WBTC Token (0x92C82f5F771F6A44CfA09357DD0575B81BF5F728) {\n +++ description: None\n values.deposit_limit:\n- 250000000000\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n values.deposit_limit_module:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x793D85F585145c050487c7AfBF0e9B97143fF1CB\"\n }\n```\n\n```diff\n contract Katana Pre-Deposit WETH Token (0xcc6a16Be713f6a714f68b0E1f4914fD3db15fBeF) {\n +++ description: None\n values.deposit_limit:\n- \"140000000000000000000000\"\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n values.deposit_limit_module:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x793D85F585145c050487c7AfBF0e9B97143fF1CB\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DepositModule (0x793D85F585145c050487c7AfBF0e9B97143fF1CB)\n +++ description: None\n```"
}
]
},
{
"id": "b83c8243",
"date": "Thu, 05 Jun 2025 12:10:05 GMT",
"timestamp": 1749125405,
"description": "initial katana predeposit disco.",
"isHighSeverity": false,
"changeCount": 10,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract Accountant (0x40a87104AEb279C061Af6b7C48F7E08c4A6e388D)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Katana Pre-Deposit USDT Token (0x48c03B6FfD0008460F8657Db1037C7e09dEedfcb)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Katana Pre-Deposit USDC Token (0x7B5A0182E400b241b317e781a4e9dEdFc1429822)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ShareReceiver (0x836304B832687f3811a0dF935934C724B40578eB)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Katana Pre-Deposit WBTC Token (0x92C82f5F771F6A44CfA09357DD0575B81BF5F728)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DepositRelayer (0xB01dADEC98308528ee57A17b24A473213c1704bb)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Katana Pre-Deposit WETH Token (0xcc6a16Be713f6a714f68b0E1f4914fD3db15fBeF)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract AllowanceModule (0xCFbFaC74C26F8647cBDb8c5caf80BB5b32E43134)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ERC20Router (0xeeeeee9eC4769A09a76A83C7bC42b185872860eE)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafe (0xFEB4acf3df3cDEA7399794D0869ef76A6EfAff52)\n +++ description: None\n```"
}
]
}
]
+14 -0
+14 -0
[
{
"id": "0185d817",
"date": "Fri, 16 Oct 2026 10:35:39 GMT",
"timestamp": 1792144369,
"description": "Nethermind DVN rotated its signers: one removed, two added. The quorum stays 1, so either key alone can verify messages.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Netherming DVN (eth:0xa59BA433ac34D2927232918Ef5B2eaAfcF130BA5) [layerzero/DVN] {\n +++ description: Defines the logic that validates LayerZero Packets for this DVN.\n values.signerSize:\n- 1\n+ 2\n }\n```"
}
]
},
{
"id": "88a5944c",
"date": "Mon, 12 Oct 2026 08:03:19 GMT",
"timestamp": 1791789568,
"description": "The Ethereum executor upgraded to an unverified implementation.\n\n[Executor diff](https://disco.l2beat.com/diff/eth:0xfE9AB78eD4f9f3DbB168d9f5E5213d78605C9805/eth:0x1Ed8E51E8AB2A00B2805aEcf2C6aC0BB6521eaE0).",
"isHighSeverity": true,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Executor (eth:0x173272739Bd7Aa6e4e214714048a9fE699453059) [N/A] {\n +++ description: Upgradeable contract referenced as an executor by LayerZero message libraries. Its current implementation is unverified, so execution and fee handling cannot be checked against source.\n template:\n- \"layerzero/LayerZeroExecutor\"\n sourceHashes:\n- [\"0x4a43bdaa7c21f911802bc9e3457cf5fef469f43b372ea6944d53823caf2f53f2\",\"0x914fbceaba4b6418a09bd2104433bfcb47eed119a783154a8f7f6301c06a6d2b\"]\n values.$implementation:\n- \"eth:0xfE9AB78eD4f9f3DbB168d9f5E5213d78605C9805\"\n+ \"eth:0x1Ed8E51E8AB2A00B2805aEcf2C6aC0BB6521eaE0\"\n values.$pastUpgrades.3:\n+ [\"2026-10-02T00:08:11.000Z\",\"0x682248f5070d80b5c52e90030913f204331e1f0516ed6a0e5d471e6417c3fb52\",[\"eth:0x1Ed8E51E8AB2A00B2805aEcf2C6aC0BB6521eaE0\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.allowlistSize:\n- 0\n values.DEFAULT_ADMIN_ROLE:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n values.defaultMultiplierBps:\n- 12000\n values.endpoint:\n- \"eth:0x1a44076050125825900e736c501f859c50fE728c\"\n values.localEidV2:\n- 30101\n values.paused:\n- false\n values.priceFeed:\n- \"eth:0xC03f31fD86a9077785b7bCf6598Ce3598Fa91113\"\n values.receiveUln301:\n- \"eth:0x245B6e8FFE9ea5Fc301e32d16F66bD4C2123eEfC\"\n values.workerFeeLib:\n- \"eth:0x4e9C57FD2Bd0f47C43F2D62642C1b05894fb9ed0\"\n implementationNames.eth:0xfE9AB78eD4f9f3DbB168d9f5E5213d78605C9805:\n- \"Executor\"\n implementationNames.eth:0x1Ed8E51E8AB2A00B2805aEcf2C6aC0BB6521eaE0:\n+ \"\"\n unverified:\n+ true\n }\n```"
}
]
},
{
"id": "13612088",
"date": "Mon, 10 Aug 2026 09:02:39 GMT",
"timestamp": 1786352489,
"description": "Multisig member change.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LayerZero Multisig (eth:0xBe010A7e3686FdF65E93344ab664D065A0B02478) [layerzero/OneSigMultisig] {\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n values.$members.5:\n+ \"eth:0xdFE4027209C795B84d39FfBfF86bf73572571BAd\"\n values.$members.6:\n+ \"eth:0x2be094F1C9AaF76aD3A789EA4f047BBE7D1DB552\"\n values.$threshold:\n- 3\n+ 5\n values.totalSigners:\n- 5\n+ 7\n }\n```"
}
]
},
{
"id": "6314d6c3",
"date": "Thu, 23 Jul 2026 13:56:17 GMT",
"timestamp": 1784814910,
"description": "One Safe signer was rotated.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafe (eth:0xCbcdd778AA25476F203814214dD3E9b9c46829A1) [GnosisSafe] {\n +++ description: None\n values.$members.3:\n- \"eth:0x86CbBAEB08861D005fD2147A5123E43e558db167\"\n+ \"eth:0xb859DD2Cb50F19a53Ad25b279750ba5DEC76D306\"\n }\n```"
}
]
},
{
"id": "9306b56d",
"date": "Fri, 17 Jul 2026 07:49:26 GMT",
"timestamp": 1784274500,
"description": "Single signer change.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafe (eth:0xCbcdd778AA25476F203814214dD3E9b9c46829A1) [GnosisSafe] {\n +++ description: None\n values.$members.5:\n- \"eth:0xFbF8084Fb81da2e24f9EdD821172efef1b74F218\"\n+ \"eth:0xa85B57bD7433dCC4679d638b87d80F155A689Fc1\"\n }\n```"
}
]
},
{
"id": "cc504a7b",
"date": "Tue, 16 Jun 2026 10:00:27 GMT",
"timestamp": 1781603942,
"description": "Unichain peer blocked in ethereum rsETH OApp.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract RsETHOFTAdapter (eth:0x85d456B2DfF1fd8245387C0BfB64Dfb700e98Ef3) [layerzero/OFTAdapter] {\n +++ description: An OApp in the LayerZero protocol that adapts an existing ERC20 token into the OFT standard. Its owner can configure peers and LayerZero security settings for connected routes.\n+++ description: The configured peer for the rsETH OFT route from Unichain.\n values.peerUnichain:\n- \"unichain:0xc3eACf0612346366Db554C991D7858716db09f58\"\n+ \"unichain:0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "4b6f822a",
"date": "Tue, 28 Apr 2026 10:00:05 GMT",
"timestamp": 1777285916,
"description": "tidy up config after ai changes and make it FE-ready.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Executor (eth:0x173272739Bd7Aa6e4e214714048a9fE699453059)\n +++ description: Used to execute LayerZero message payloads at the destination. Also manages fee logic, gas drop and access control.\n```\n\n```diff\n+ Status: CREATED\n contract ReadLib1002 (eth:0x74F55Bc2a79A27A0bF1D1A35dB5d0Fc36b9FDB9D)\n +++ description: LayerZero library used to read state from remote blockchains.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (eth:0xa36797bA947b378AefE5f726Cd87766CD3c25Ee3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SendUln302 (eth:0xbB2Ea70C9E858123480642Cf96acbcCE1372dCe1)\n +++ description: Send Library used by LayerZero, defining the protocol/execution of sent messages.\n```"
}
]
},
{
"id": "90949d16",
"date": "Mon, 27 Apr 2026 10:38:19 GMT",
"timestamp": 1777285916,
"description": "initial ai-disco with skill after revive.",
"isHighSeverity": false,
"changeCount": 10,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract EndpointV2 (eth:0x1a44076050125825900e736c501f859c50fE728c)\n +++ description: Part of the LayerZero messaging protocol. The rsETH OFT adapter owner can configure custom receive libraries and verification settings here.\n```\n\n```diff\n+ Status: CREATED\n contract BlockedMessageLib (eth:0x1ccBf0db9C192d969de57E25B3fF09A25bb1D862)\n +++ description: Simple LayerZero library that blocks all messages if configured.\n```\n\n```diff\n+ Status: CREATED\n contract DVN (eth:0x380275805876Ff19055EA900CDb2B46a94ecF20D)\n +++ description: Defines the logic that validates LayerZero Packets for this DVN.\n```\n\n```diff\n+ Status: CREATED\n contract DVN (eth:0x589dEDbD617e0CBcB916A9223F4d1300c294236b)\n +++ description: Defines the logic that validates LayerZero Packets for this DVN.\n```\n\n```diff\n+ Status: CREATED\n contract RsETHOFTAdapter (eth:0x85d456B2DfF1fd8245387C0BfB64Dfb700e98Ef3)\n +++ description: An OApp in the LayerZero protocol that adapts an existing ERC20 token into the OFT standard. Its owner can configure peers and LayerZero security settings for connected routes.\n```\n\n```diff\n+ Status: CREATED\n contract DVN (eth:0xa4fE5A5B9A846458a70Cd0748228aED3bF65c2cd)\n +++ description: Defines the logic that validates LayerZero Packets for this DVN.\n```\n\n```diff\n+ Status: CREATED\n contract DVN (eth:0xa59BA433ac34D2927232918Ef5B2eaAfcF130BA5)\n +++ description: Defines the logic that validates LayerZero Packets for this DVN.\n```\n\n```diff\n+ Status: CREATED\n contract LayerZero Multisig (eth:0xBe010A7e3686FdF65E93344ab664D065A0B02478)\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n```\n\n```diff\n+ Status: CREATED\n contract ReceiveUln302 (eth:0xc02Ab410f0734EFa3F14628780e6e695156024C2)\n +++ description: Receive Library used by LayerZero, defining the validation of received messages.\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafe (eth:0xCbcdd778AA25476F203814214dD3E9b9c46829A1)\n +++ description: None\n```"
}
]
}
]
+25 -11
+4 -4
{
"self": {
"stateValidation": {
"value": "Validity proofs (ST, SN)",
"description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup.",
"sentiment": "good",
"orderHint": null,
"permissioned": true,
"executionDelay": 10800,
"secondLine": "3h execution delay"
"executionDelay": 86400,
"secondLine": "1d execution delay"
},
"dataAvailability": {
"value": "External",
"description": "Proof construction and state derivation fully rely on data that is posted on Avail. Transaction data is checked against the Vector bridge data roots, signed off by Avail validators.",
"sentiment": "warning"
},
"exitWindow": {
"value": "None",
"description": "There is no window for users to exit in case of an unwanted upgrade since contracts are instantly upgradable.",
"sentiment": "bad",
"orderHint": 0,
"regular": {
"value": "4d 3h",
"value": "5d",
"sentiment": "warning",
"description": "Non-emergency upgrades go through a 4d 3h delay, but the central operator can still censor withdrawal transactions by implementing a TransactionFilterer with no delay."
"description": "Non-emergency upgrades go through a 5d delay, but the central operator can still censor withdrawal transactions by implementing a TransactionFilterer with no delay."
}
},
"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.",
"sentiment": "warning"
},
"proposerFailure": {
"value": "Replace proposer",
"description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade.",
"sentiment": "warning",
"orderHint": null
}
}
}
+1 -1
{
"architectureImage": "zkstack-validium-vector",
"dataAvailability": [
{
"name": "Data is posted to Avail",
"description": "Transactions roots are posted onchain and the full data is posted on Avail. The vector bridge is used to verify attestations from the Avail validator set that the data is indeed available.",
"risks": [
{
"category": "Funds can be lost if",
"text": "the sequencer posts an unavailable transaction root.",
"isCritical": true
},
{
"category": "Funds can be lost if",
"text": "the data is not available on the external provider.",
"isCritical": true
}
],
"references": [
{
"title": "AvailL1DAValidator - checkDA() function",
"url": "https://etherscan.io/address/0x8f50d93B9955B285f787043B30B5F51D09bE0120#code#F1#L16"
}
]
}
],
"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 force any transaction via L1",
"description": "If a user is censored by the L2 Sequencer, they can try to force their transaction via an L1 queue. Right now there is no mechanism that forces L2 Sequencer to include transactions from the queue in an L2 block. The operator can implement a TransactionFilterer that censors forced transactions.",
"risks": [
{
"category": "Users can be censored if",
"text": "the operator refuses to include their transactions."
},
{
"category": "Users can be censored if",
"text": "the operator implements a TransactionFilterer, which is possible without delay."
}
],
"references": [
{
"title": "L1 - L2 interoperability - Developer's documentation",
"url": "https://docs.zksync.io/zksync-protocol/era-vm/contracts/handling-l1-l2-ops"
}
]
},
"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."
}
]
},
"upgradesAndGovernance": {
"content": "There 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 4 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 4 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 (6/8), Guardians (5/8) and ZkFoundationMultisig (3/6) 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.",
"content": "There 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 4 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 (1d 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 4 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 (6/8), Guardians (5/8) and ZkFoundationMultisig (3/6) 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 5d or 9d (depending on Guardians extending the LegalVetoPeriod) for Standard, 0 for Emergency and 1mo 5d 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.",
"image": "zkstack"
}
}
+1 -1
{
"explanation": "Lens is a Validium that posts commitments to the L1. Transactions within a state diff can be considered final when proven on L1 using a ZK proof, except that an operator can revert them if not executed yet. Currently, there is at least a 3h delay between state diffs verification and the execution of the corresponding state actions."
"explanation": "Lens is a Validium that posts commitments to the L1. Transactions within a state diff can be considered final when proven on L1 using a ZK proof, except that an operator can revert them if not executed yet. Currently, there is at least a 1d delay between state diffs verification and the execution of the corresponding state actions."
}
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "EmergencyUpgradeBoard",
"name": "EmergencyUpgradeBoard",
"accounts": [
{
"address": "eth:0xF73a7dCfa68E52030ec39E41a23DCA51F3aAa111",
"type": "Contract",
"isVerified": true,
"name": "0xF73a…a111",
"url": "https://etherscan.io/address/0xF73a7dCfa68E52030ec39E41a23DCA51F3aAa111"
}
],
"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 * ValidatorTimelock [via: ProtocolUpgradeHandler → ProxyAdmin]\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 * L1USDCBridge [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": "Avail Multisig 1",
"name": "Avail Multisig 1",
"description": "A Multisig with 4/7 threshold. \n* Can upgrade **with no delay**\n * Vector \n* Can upgrade **with 1d delay**\n * AvailBridgeV1 [via: TimelockController with 1d delay → ProxyAdmin]\n* Can interact with Vector\n * can freeze the Vector contract and update the list of authorized relayers \n* Can interact with AvailBridgeV1\n * manage the pauser role and all other access control configurations, set the address of the target contract for DA verification, manage fees **with 1d delay** [via: TimelockController with 1d delay]\n* Can interact with TimelockController\n * cancel queued transactions \n * execute transactions that are ready \n * manage all access control roles **with 1d delay or with no delay** [via: TimelockController with 1d delay - or - acting directly]\n * propose transactions ",
"accounts": [
{
"address": "eth:0x7F2f87B0Efc66Fea0b7c30C61654E53C37993666",
"type": "Contract",
"isVerified": true,
"name": "0x7F2f…3666",
"url": "https://etherscan.io/address/0x7F2f87B0Efc66Fea0b7c30C61654E53C37993666"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x70a4F624A4E62C539abf0002634377b646612b1C",
"type": "EOA",
"isVerified": true,
"name": "0x70a4…2b1C",
"url": "https://etherscan.io/address/0x70a4F624A4E62C539abf0002634377b646612b1C"
},
{
"address": "eth:0x340e77D5e114A9D4891d3a1EbC7419CC85Ca8E4A",
"type": "EOA",
"isVerified": true,
"name": "0x340e…8E4A",
"url": "https://etherscan.io/address/0x340e77D5e114A9D4891d3a1EbC7419CC85Ca8E4A"
},
{
"address": "eth:0xAD379D3275a18bd4BB741C3b291a3778D51c3304",
"type": "EOA",
"isVerified": true,
"name": "0xAD37…3304",
"url": "https://etherscan.io/address/0xAD379D3275a18bd4BB741C3b291a3778D51c3304"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x1fbABAbDcFE0b40a9B5D2aDB054fB74F8fE985f5",
"type": "EOA",
"isVerified": true,
"name": "0x1fbA…85f5",
"url": "https://etherscan.io/address/0x1fbABAbDcFE0b40a9B5D2aDB054fB74F8fE985f5"
},
{
"address": "eth:0xBe1D614F13662Aff0a2Ec1e76f9c82D332Ae78A2",
"type": "EOA",
"isVerified": true,
"name": "0xBe1D…78A2",
"url": "https://etherscan.io/address/0xBe1D614F13662Aff0a2Ec1e76f9c82D332Ae78A2"
},
{
"address": "eth:0x4983A5ebE79c0570aa368cE84f281A8aAc50cE4d",
"address": "eth:0x50d0667992467421f3B359C8138928C0157cB444",
"type": "EOA",
"isVerified": true,
"name": "0x4983…cE4d",
"url": "https://etherscan.io/address/0x4983A5ebE79c0570aa368cE84f281A8aAc50cE4d"
"name": "0x50d0…B444",
"url": "https://etherscan.io/address/0x50d0667992467421f3B359C8138928C0157cB444"
}
],
"discoveryDrivenData": true
},
{
"id": "Matter Labs Multisig",
"name": "Matter Labs Multisig",
"description": "A Multisig with 4/7 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 * set the pending admin of this contract and the ServerNotifier contract address (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:0xEE7d66B84175cc423900595d1807A0371D66dE46",
"type": "EOA",
"isVerified": true,
"name": "0xEE7d…dE46",
"url": "https://etherscan.io/address/0xEE7d66B84175cc423900595d1807A0371D66dE46"
},
{
"address": "eth:0x3F0009D00cc78979d00Eb635490F23E8d6aCc481",
"type": "EOA",
"isVerified": true,
"name": "0x3F00…c481",
"url": "https://etherscan.io/address/0x3F0009D00cc78979d00Eb635490F23E8d6aCc481"
},
{
"address": "eth:0xC9A814A4dFE108A4d2b0C01abb4c196Ed7FB3D83",
"type": "EOA",
"isVerified": true,
"name": "0xC9A8…3D83",
"url": "https://etherscan.io/address/0xC9A814A4dFE108A4d2b0C01abb4c196Ed7FB3D83"
},
{
"address": "eth:0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc",
"type": "EOA",
"isVerified": true,
"name": "0x3068…d2Bc",
"url": "https://etherscan.io/address/0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc"
},
{
"address": "eth:0xFAdb20191Ab38362C50f52909817B74214CA79AE",
"type": "EOA",
"isVerified": true,
"name": "0xFAdb…79AE",
"url": "https://etherscan.io/address/0xFAdb20191Ab38362C50f52909817B74214CA79AE"
},
{
"address": "eth:0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28",
"type": "EOA",
"isVerified": true,
"name": "0xAf0B…9B28",
"url": "https://etherscan.io/address/0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28"
},
{
"address": "eth:0x7408A268e5E6e8F08917c5b71015F4B9044970C7",
"type": "EOA",
"isVerified": true,
"name": "0x7408…70C7",
"url": "https://etherscan.io/address/0x7408A268e5E6e8F08917c5b71015F4B9044970C7"
}
],
"discoveryDrivenData": true
},
{
"id": "SecurityCouncil",
"name": "SecurityCouncil",
"description": "A Multisig with 6/8 threshold. \nCustom Multisig implementation that has a general threshold of 6 but also specific thresholds for upgrade approvals (4) 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:0x59195219d1176E42f8e607e9AC114926D47f9035",
"type": "Contract",
"isVerified": true,
"name": "0x5919…9035",
"url": "https://etherscan.io/address/0x59195219d1176E42f8e607e9AC114926D47f9035"
}
],
"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: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:0x69462a81ba94D64c404575f1899a464F123497A2",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x69462a81ba94D64c404575f1899a464F123497A2"
},
{
"address": "eth:0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0"
},
{
"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": "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": "ValidatorTimelock",
"name": "ValidatorTimelock",
"accounts": [
{
"address": "eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"type": "Contract",
"isVerified": true,
"name": "0x2e51…b776",
"url": "https://etherscan.io/address/0x2e5110cF18678Ec99818bFAa849B8C881744b776"
}
],
"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 at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\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": "Lens Multisig",
"name": "Lens Multisig",
"description": "A Multisig with 2/3 threshold. \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: LensZkEvmAdmin]",
"accounts": [
{
"address": "eth:0x4968A0E4b025eD7d095753E54058377969b41abC",
"type": "Contract",
"isVerified": true,
"name": "0x4968…1abC",
"url": "https://etherscan.io/address/0x4968A0E4b025eD7d095753E54058377969b41abC"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x7CBba07e31Dc7b12bB69a1209C5B11A8aC50acf5",
"type": "EOA",
"isVerified": true,
"name": "0x7CBb…acf5",
"url": "https://etherscan.io/address/0x7CBba07e31Dc7b12bB69a1209C5B11A8aC50acf5"
},
{
"address": "eth:0x8f356fEC1793c4AEbd817A344C77310081Fa6917",
"type": "EOA",
"isVerified": true,
"name": "0x8f35…6917",
"url": "https://etherscan.io/address/0x8f356fEC1793c4AEbd817A344C77310081Fa6917"
},
{
"address": "eth:0xc5342CD71f67DAc44Bcfbc37df35700b5e4691e6",
"type": "EOA",
"isVerified": true,
"name": "0xc534…91e6",
"url": "https://etherscan.io/address/0xc5342CD71f67DAc44Bcfbc37df35700b5e4691e6"
}
],
"discoveryDrivenData": true
},
{
"id": "Avail Multisig 2",
"name": "Avail Multisig 2",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AvailBridgeV1\n * pause the bridge ",
"accounts": [
{
"address": "eth:0x1a5BA9447D02Ddaf7bcB5594Fc27dE2Daf588930",
"type": "Contract",
"isVerified": true,
"name": "0x1a5B…8930",
"url": "https://etherscan.io/address/0x1a5BA9447D02Ddaf7bcB5594Fc27dE2Daf588930"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xE458b870F2F59a49915591282f1Bb688901767AD",
"type": "EOA",
"isVerified": true,
"name": "0xE458…67AD",
"url": "https://etherscan.io/address/0xE458b870F2F59a49915591282f1Bb688901767AD"
},
{
"address": "eth:0x340e77D5e114A9D4891d3a1EbC7419CC85Ca8E4A",
"type": "EOA",
"isVerified": true,
"name": "0x340e…8E4A",
"url": "https://etherscan.io/address/0x340e77D5e114A9D4891d3a1EbC7419CC85Ca8E4A"
},
{
"address": "eth:0xAD379D3275a18bd4BB741C3b291a3778D51c3304",
"type": "EOA",
"isVerified": true,
"name": "0xAD37…3304",
"url": "https://etherscan.io/address/0xAD379D3275a18bd4BB741C3b291a3778D51c3304"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x1fbABAbDcFE0b40a9B5D2aDB054fB74F8fE985f5",
"type": "EOA",
"isVerified": true,
"name": "0x1fbA…85f5",
"url": "https://etherscan.io/address/0x1fbABAbDcFE0b40a9B5D2aDB054fB74F8fE985f5"
}
],
"discoveryDrivenData": true
},
{
"id": "ZK Foundation Multisig",
"name": "ZK Foundation Multisig",
"description": "A Multisig with 3/6 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:0x64FEca7976955a512aB9159f91E7dD1D55425293",
"type": "EOA",
"isVerified": true,
"name": "0x64FE…5293",
"url": "https://etherscan.io/address/0x64FEca7976955a512aB9159f91E7dD1D55425293"
},
{
"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": "SP1VerifierGatewayMultisig",
"name": "SP1VerifierGatewayMultisig",
"description": "A Multisig with 2/3 threshold. \n* Can interact with SP1VerifierGateway\n * affect the liveness and safety of the gateway - can transfer ownership, add and freeze verifier routes ",
"accounts": [
{
"address": "eth:0xCafEf00d348Adbd57c37d1B77e0619C6244C6878",
"type": "Contract",
"isVerified": true,
"name": "0xCafE…6878",
"url": "https://etherscan.io/address/0xCafEf00d348Adbd57c37d1B77e0619C6244C6878"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126",
"type": "EOA",
"isVerified": true,
"name": "0xBaB2…1126",
"url": "https://etherscan.io/address/0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x9395e83720bf2D8ac6435f9c520b48E289Cb8885",
"type": "EOA",
"isVerified": true,
"name": "0x9395…8885",
"url": "https://etherscan.io/address/0x9395e83720bf2D8ac6435f9c520b48E289Cb8885"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1-and-EOA-2",
"name": "EOA 1 and EOA 2",
"accounts": [
{
"address": "eth:0x9971903268BAED330DA9DD533D97924c725AB593",
"type": "EOA",
"isVerified": true,
"name": "0x9971…B593",
"url": "https://etherscan.io/address/0x9971903268BAED330DA9DD533D97924c725AB593",
"displayName": "EOA 1"
},
{
"address": "eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc",
"type": "EOA",
"isVerified": true,
"name": "0xBf02…36Bc",
"url": "https://etherscan.io/address/0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with ValidatorTimelock\n * Permissioned to call the functions to commit, prove, execute and revert L2 batches through the ValidatorTimelock in the main Diamond contract ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x7EBe0bf025ca5993551cE6CEe3f541B24FDF7c35",
"type": "EOA",
"isVerified": true,
"name": "0x7EBe…7c35",
"url": "https://etherscan.io/address/0x7EBe0bf025ca5993551cE6CEe3f541B24FDF7c35",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with Vector\n * it is a ‘Relayer’ and can call commitHeaderRange() to commit block ranges to the Vector contract. Since adding and removing Relayers emits no events, there can be more relayers than are presented here ",
"discoveryDrivenData": true
}
]
},
"zksync2": {
"roles": [],
"actors": [
{
"id": "ZkProtocolGovernor",
"name": "ZkProtocolGovernor",
"accounts": [
{
"address": "zksync:0x76705327e682F2d96943280D99464Ab61219e34f",
"type": "Contract",
"isVerified": true,
"name": "0x7670…e34f",
"url": "https://explorer.zksync.io/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 ProtocolUpgradeHandler\n * start (queue) upgrades [via: ProtocolTimelockController]\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://explorer.zksync.io/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": "Guardians_l2Alias",
"name": "Guardians_l2Alias",
"accounts": [
{
"address": "zksync:0x711ea620AB29f41AbC6596a15981e14ce58C97c9",
"type": "EOA",
"isVerified": true,
"name": "0x711e…97c9",
"url": "https://explorer.zksync.io/address/0x711ea620AB29f41AbC6596a15981e14ce58C97c9",
"displayName": "Guardians_l2Alias"
}
],
"chain": "zksync2",
"description": "* Can interact with ZkTokenGovernor\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://explorer.zksync.io/address/0xcd2753Bd3829dfeC575AFC3816d4899CD103C62D",
"displayName": "ZKFoundationMultisig_l2Alias"
}
],
"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://explorer.zksync.io/address/0xF41EcA3047B37dc7d88849de4a4dc07937Ad6bc4",
"displayName": "ProtocolUpgradeHandler_l2Alias"
}
],
"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
}
]
}
}
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Diamond",
"isVerified": true,
"address": "eth:0xc29d04A93F893700015138E3E334eB828dAC3cef",
"upgradeability": {
"proxyType": "EIP2535 diamond proxy",
"admins": [],
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1740009695,
"transactionHash": "0x303a3be5647b6474268d2c9bac62d2a4852abe503ad8eb2c71fc85c63881cfbd",
"implementations": [
"eth:0x0665d51e2342F5D5EAEaAaA175C6fdEEf122c542",
"eth:0xff6fb8160DC28260d4027C80eAd7e1eD147c963F",
"eth:0xbE8988304816cbbd36624567AFe1A223DBF58c82",
"eth:0x8480803516B7390Ff9C57eC4dD233B634FB493B8"
]
},
{
"timestamp": 1740009695,
"transactionHash": "0x303a3be5647b6474268d2c9bac62d2a4852abe503ad8eb2c71fc85c63881cfbd",
"implementations": [
"eth:0x0665d51e2342F5D5EAEaAaA175C6fdEEf122c542",
"eth:0xff6fb8160DC28260d4027C80eAd7e1eD147c963F",
"eth:0xbE8988304816cbbd36624567AFe1A223DBF58c82",
"eth:0x8480803516B7390Ff9C57eC4dD233B634FB493B8"
]
},
{
"timestamp": 1742293595,
"transactionHash": "0xc0985a7dad204c5f7efd6ac87d9877049570eee2fd4f9100f3258b6174cae43e",
"implementations": [
"eth:0x0665d51e2342F5D5EAEaAaA175C6fdEEf122c542",
"eth:0xff6fb8160DC28260d4027C80eAd7e1eD147c963F",
"eth:0xbE8988304816cbbd36624567AFe1A223DBF58c82",
"eth:0x8480803516B7390Ff9C57eC4dD233B634FB493B8"
]
},
{
"timestamp": 1742928599,
"transactionHash": "0x4b3cb9b8f9a1aea99e804b16f63ec89011315bde09b37ea60f77b2d1d1e2b572",
"implementations": [
"eth:0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb",
"eth:0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1",
"eth:0x36b026c39125964D99596CE302866B5A59E4dE27",
"eth:0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800"
]
},
{
"timestamp": 1747255211,
"transactionHash": "0x37a2cb789916112d5c2824569ee4f44d4078b9ab00b55017eebf83124309b54c",
"implementations": [
"eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4",
"eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4",
"eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f",
"eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490"
]
},
{
"timestamp": 1751481779,
"transactionHash": "0x8d2c504c58a659511bef547888186da42708e16923743741cd11acf4c6d908b3",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1755181427,
"transactionHash": "0xe1e89cb3eb4b704457d700ce847e9f682c50ef505c08b5ca0873a833e9d4ff2a",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1763413091,
"transactionHash": "0xd0833923639a4693c45fe165c6d30094dbfbc7c0b9e77b89981696519eb579a9",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1769715095,
"transactionHash": "0x54184d1aa0137620015290fe57ef7376cc15718acb77989eec3b7f4d0e0d14e5",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1780515515,
"transactionHash": "0x8f7d04ce7012bfb248543385dc44825a6d21c4752f98bff93eba04da47368d4e",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1786263395,
"transactionHash": "0x49096e35ef0401c7d2d263edf1e9441da8f0805ff3c1fa2677b99b90363aed86",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1786273499,
"transactionHash": "0xd00f75efe10c54a7f0df37b44b22205a3e3545b334856fe4bb3ba4f51687279c",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1786910003,
"transactionHash": "0xd346a85316db66f6ed0cde76b5a129fb23a52351118a15822e158bf59f693f34",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
}
],
"description": "The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n* Roles:\n * **getAdmin**: LensZkEvmAdmin; ultimately Lens Multisig\n * **validators**: ValidatorTimelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc29d04A93F893700015138E3E334eB828dAC3cef#code"
},
{
"name": "AvailBridgeV1",
"isVerified": true,
"address": "eth:0x054fd961708D8E2B9c10a63F6157c74458889F0a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x36194271a00dBBBae314E83dA56d0FF75fDa367B"
],
"implementations": [
"eth:0x737539737b44493F65c17eAfE165197b6410d254"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720568903,
"transactionHash": "0x980ea7f295336624f103c47b5ec482f90c2c90f4b7d05140ceb5d40aa077963c",
"implementations": [
"eth:0x737539737b44493F65c17eAfE165197b6410d254"
]
}
],
"description": "Bridge contract that verifies merkle proofs of inclusion in the proven data of the Vector DA- and arbitrary message bridge. Also used for token- and arbitrary message transfers between Avail and Ethereum.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Avail Multisig 1\n * **defaultAdmin**: TimelockController; ultimately Avail Multisig 1\n * **pauser**: Avail Multisig 2",
"upgradableBy": [
{
"name": "Avail Multisig 1",
"delay": "1d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x054fd961708D8E2B9c10a63F6157c74458889F0a#code"
},
{
"name": "AvailL1DAValidator",
"isVerified": true,
"address": "eth:0x8f50d93B9955B285f787043B30B5F51D09bE0120",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract that verifies that the validiums data was made available on Avail by querying the AvailBridgeV1 on Ethereum for a merkle proof of inclusion.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8f50d93B9955B285f787043B30B5F51D09bE0120#code"
},
{
"name": "BridgeHub",
"isVerified": true,
"address": "eth:0x303a465B659cBB0ab36eE643eA362c509EEb5213",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717520639,
"transactionHash": "0xdbb03a14ea223de3db4ac0916e78123bd0a1dde68e98952326d8382d29ac4d61",
"implementations": [
"eth:0x12f893689f9603991a8c22C249FFd0509Be95661"
]
},
{
"timestamp": 1725887363,
"transactionHash": "0x21aec24a9df97ce4886d699314be627b0818da4d1987349421fb3df102c43f2b",
"implementations": [
"eth:0x509dA1BE24432F8804C4A9FF4a3c3f80284CDd13"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0x0029e562c0b54C0b88cB22adF4346DbfEC87400c"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xb720523EC3c615b069453bF4B0584CEbF034706f"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xcdd748d4A80CE6831080f1dA2CA9084CDa87Cc87"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x08A98B1048Fb61E9Fff7d7d98305aC6286Ae9F32"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
}
],
"description": "The main registry (hub) for all the contracts in the ZK stack cluster and central entrypoint for bridge transactions. Stores important mappings like from chainId to diamond address, from chainId to parent CTM, from chainId to base token etc. A clone of Bridgehub is also deployed on each L2 chain, but this clone is only used on settlement layers.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x303a465B659cBB0ab36eE643eA362c509EEb5213#code"
},
{
"name": "MessageRoot",
"isVerified": true,
"address": "eth:0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109035,
"transactionHash": "0xc47e24e8cc6c7a493bbb1a46b74f1ff113fad2e35d7596aa688df5bf0402fc65",
"implementations": [
"eth:0x19347Fb8eD3E8e35eb4a01c8B18Bd330194Cf0ad"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x382fb241396eA915108e7B7Ce1adE1322bA73aeE"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
}
],
"description": "Aggregates remote bridge message roots from all ZK stack chains. To be used with the Gateway when deployed.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD#code"
},
{
"name": "CTMDeploymentTracker",
"isVerified": true,
"address": "eth:0x6078F6B379f103de1Aa912dc46bb8Df0c8809860",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109203,
"transactionHash": "0x8b5a21b3473a638022e84097a99c4668bb0a454686b737e87957729c4822741b",
"implementations": [
"eth:0x1E405E5cdF127Dc98Eb490AB0e97345f892Ff7E1"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
}
],
"description": "Asset deployment tracker where the 'asset' is a ChainTypeManager. The registering of asset IDs for ChainTypeManagers is necessary to be able to migrate them to a given settlement layer, for example the Gateway.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6078F6B379f103de1Aa912dc46bb8Df0c8809860#code"
},
{
"name": "RollupL1DAValidator",
"isVerified": true,
"address": "eth:0x72213dfe8CA61B0A782970dCFebFb877778f9119",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract that verifies the data availability of ethereum calldata and blobs. Can be used by ZK stack rollups as the L1 part of a DAValidator pair.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x72213dfe8CA61B0A782970dCFebFb877778f9119#code"
},
{
"name": "L1AssetRouter",
"isVerified": true,
"address": "eth:0x8829AD80E425C646DAB305381ff105169FeEcE56",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x2386Bc2E26f39b72f0D4FDE0c07D68e4eEFfC725"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109071,
"transactionHash": "0x2c945c00f7a9f08b1a0bc749a08d76ca4cd5ee6f8890011ab43898e9fa1fcdf2",
"implementations": [
"eth:0x20E17D0280DeaBb78f7c193E3Ef05F62adC0936E"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xcaD49896F3d54d9A93eDdBFd370c8A4a1b239315"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x0cb7f11BA981E13598D70625dF8f4597d59f2F4F"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x2386Bc2E26f39b72f0D4FDE0c07D68e4eEFfC725"
]
}
],
"description": "Canonical central asset router for all ZK stack chains. Routes deposits and withdrawals to the respective asset handlers (like the L1NativeTokenVault); does not escrow funds itself.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8829AD80E425C646DAB305381ff105169FeEcE56#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,30,1.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C#code"
},
{
"name": "L1Nullifier",
"isVerified": true,
"address": "eth:0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717521479,
"transactionHash": "0xce3d72f23297a281cb58502dcc6a6c029489316a2faf9c4ef83141b1b254017c",
"implementations": [
"eth:0xCba1aF8f0bB223b2544F8eB8f69d1c7960f788dB"
]
},
{
"timestamp": 1724658671,
"transactionHash": "0xaec33529b74f8f9d56d7aa568c6358be299228a85e49ea85cb106eca5af7367c",
"implementations": [
"eth:0xb56A8225A745756DD215faf22E4796f373561AcD"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0xF5A14DCdde1143443f06033200D345c2a2828A99"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xda2866AF0e170d0867a3F3bB52Db10D6E09Df78A"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0x3B4FD84B27fE7B9247d5B8C6d1A29B2889C81518"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xC6f08EFb7BA78f40d00F41aFAC00211d59eb9431"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
}
],
"description": "Contract responsible for bookkeeping L1 bridging transactions. Used to finalize withdrawals and reclaim failed deposits. Does not escrow funds.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB#code"
},
{
"name": "ProtocolUpgradeHandler",
"isVerified": true,
"address": "eth:0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e"
],
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1738855967,
"transactionHash": "0xa3d1fa107e6dc4ce67d92a5af74aa7dc34602c2a1d46727790819c1f974bed95",
"implementations": [
"eth:0xD5e9D3d483a93d03D8d604CC79dC9f2F4B78C604"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0x0A67f0Fd2f7523057039F14969Fe23a5f620f19A"
]
},
{
"timestamp": 1760519471,
"transactionHash": "0x2309df20dd1cb3f3a3289e97517d10d399989292f966578240ec387246a13e61",
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
}
],
"description": "The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2 and emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **emergencyUpgradeBoard**: EmergencyUpgradeBoard\n * **guardians**: Guardians\n * **l2_protocol_governor**: ProtocolTimelockController; ultimately ZkProtocolGovernor\n * **securityCouncil**: SecurityCouncil",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3#code"
},
{
"name": "RollupDAManager",
"isVerified": true,
"address": "eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Simple registry for allowed DA address pairs for the 'rollup' data availability mode (can be permanently enforced with isPermanentRollup=true). Rollup DA address pairs (especially the L1 part) usually point to contracts that validate if data was made available on Ethereum.\n* Roles:\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45#code"
},
{
"name": "LensZkEvmAdmin",
"isVerified": true,
"address": "eth:0x6bd8d33551077Ed281Cb047835a2aE4033eEc433",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets Lens Multisig act through it.\n* Roles:\n * **owner**: Lens Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6bd8d33551077Ed281Cb047835a2aE4033eEc433#code"
},
{
"name": "EraChainAdminProxy",
"isVerified": true,
"address": "eth:0x2cf3bD6a9056b39999F3883955E183F655345063",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets Matter Labs Multisig act through it.\n* Roles:\n * **owner**: Matter Labs Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2cf3bD6a9056b39999F3883955E183F655345063#code"
},
{
"name": "L1USDCBridge",
"isVerified": true,
"address": "eth:0xf553E6D903AA43420ED7e3bc2313bE9286A8F987",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x2ccD5486Ea1b2A52dcD387c01314F6A328f66cbB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1734114251,
"transactionHash": "0x5428361f75c29b1f0e9959bd21fef8fb179b22f009f314e6403a305770e8735f",
"implementations": [
"eth:0x86dF12f51E3531689e0615bb2F739ddf01337715"
]
},
{
"timestamp": 1737484199,
"transactionHash": "0x152dc623c52d7f2b058ec5b4dfb67f5e0fee14c04dc9c0db4ae02ed2dc4ab998",
"implementations": [
"eth:0x2ccD5486Ea1b2A52dcD387c01314F6A328f66cbB"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf553E6D903AA43420ED7e3bc2313bE9286A8F987#code"
},
{
"name": "Vector",
"isVerified": true,
"address": "eth:0x02993cdC11213985b9B13224f3aF289F03bf298d",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0xc6217f1549Cab6f22ac4AC56d42e6C248731a33D"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1720128227,
"transactionHash": "0x6c2c609d7a13fbdad53b1530d34d740ffa36653f29b5f14220429d7c0d6a3ffc",
"implementations": [
"eth:0x2434564f3524b44258B11643729343Ef57D60989"
]
},
{
"timestamp": 1721438975,
"transactionHash": "0x13d7977b9fca12882ea6ba47ce1b20a87de540c358b5e260584e0d921e786f5e",
"implementations": [
"eth:0xc6217f1549Cab6f22ac4AC56d42e6C248731a33D"
]
}
],
"description": "The Vector bridge contract that accepts and stores Avail data availability commitments on Ethereum.\n* Roles:\n * **guardians**: Avail Multisig 1\n * **relayers**: EOA 3\n * **timelocks**: Avail Multisig 1",
"upgradableBy": [
{
"name": "Avail Multisig 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x02993cdC11213985b9B13224f3aF289F03bf298d#code"
},
{
"name": "EraVerifierPlonk",
"isVerified": true,
"address": "eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0DAAB2B7b38ab48712996E760152c569FA356DbF#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x36194271a00dBBBae314E83dA56d0FF75fDa367B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: TimelockController",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x36194271a00dBBBae314E83dA56d0FF75fDa367B#code"
},
{
"name": "TimelockController",
"isVerified": true,
"address": "eth:0x45828180bbE489350D621d002968A0585406d487",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A timelock with access control. The current minimum delay is 1d.\n* Roles:\n * **canceller**: Avail Multisig 1\n * **defaultAdmin**: Avail Multisig 1, TimelockController; ultimately Avail Multisig 1\n * **executor**: Avail Multisig 1\n * **proposer**: Avail Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x45828180bbE489350D621d002968A0585406d487#code"
},
{
"name": "EraVerifierFflonk",
"isVerified": true,
"address": "eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9#code"
},
{
"name": "EraDualVerifier",
"isVerified": true,
"address": "eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A router contract for verifiers. Routes verification requests to EraVerifierFflonk or EraVerifierPlonk depending on the supplied proof type.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081#code"
},
{
"name": "SP1VerifierGateway",
"isVerified": true,
"address": "eth:0x3B6041173B80E77f038f3F2C0f9744f04837185e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "This contract is the router for zk proof verification. It stores the mapping between identifiers and the address of onchain verifier contracts, routing each identifier to the corresponding verifier contract.\n* Roles:\n * **owner**: SP1VerifierGatewayMultisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B6041173B80E77f038f3F2C0f9744f04837185e#code"
},
{
"name": "SP1Verifier",
"isVerified": true,
"address": "eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifier contract for SP1 proofs (v6.1.0).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EraChainAdminProxy",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B#code"
},
{
"name": "L1NativeTokenVault",
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Canonical central asset escrow for all ZK stack chains.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1#code"
},
{
"name": "ChainAssetHandler",
"isVerified": true,
"address": "eth:0xDd5CB8B9037357B4cD37391A073798f8aaB61076",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1758286391,
"transactionHash": "0x960c2e5bb98f4b9a07087b3b50fdc4681bbea1467aab3748dbb0050311f54ede",
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
}
],
"description": "Specialized contract for managing chain assets, i.e. chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xDd5CB8B9037357B4cD37391A073798f8aaB61076#code"
},
{
"name": "ServerNotifier",
"isVerified": true,
"address": "eth:0xfca808A744735D9919EEBe4660B8Fd897456Ce31",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B"
],
"implementations": [
"eth:0x260813B0DAf35dda95c41F39c6Cc3F24dc87028A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747199375,
"transactionHash": "0xbeb7447fc88b154a4730b01cb1a75b7093095056e88818c3659253111d06e66f",
"implementations": [
"eth:0x555D040F4A089D1dF14B372a87C5aF8FA37BDB7A"
]
},
{
"timestamp": 1784714999,
"transactionHash": "0xdbd5285f559e4ae32457b8425f67e1dfe76575c40999499e0b55d5cf985b85d8",
"implementations": [
"eth:0x260813B0DAf35dda95c41F39c6Cc3F24dc87028A"
]
}
],
"description": "A simple contract that can be called by the ChainAdmin to emit notifications about chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Matter Labs Multisig",
"upgradableBy": [
{
"name": "Matter Labs Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xfca808A744735D9919EEBe4660B8Fd897456Ce31#code"
}
],
"zksync2": [
{
"name": "ProtocolTimelockController",
"isVerified": true,
"address": "zksync:0x085b8B6407f150D62adB1EF926F7f304600ec714",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 0s.\n* Roles:\n * **canceller**: ZkProtocolGovernor\n * **executor**: ZkProtocolGovernor\n * **proposer**: ZkProtocolGovernor\n * **timelockAdmin**: ProtocolTimelockController; ultimately ZkProtocolGovernor",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0x085b8B6407f150D62adB1EF926F7f304600ec714#code"
},
{
"name": "ZkToken",
"isVerified": true,
"address": "zksync:0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC"
],
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
},
"chain": "zksync2",
"pastUpgrades": [
{
"timestamp": 1716317326,
"transactionHash": "0x5bfce59c2ad18019ef20d58a3f1ec496cdc85537fc9564c932f7dcbbb2a15b56",
"implementations": [
"zksync:0x3931e73ebA79a7C898D3b0e02c7C62bA4F11cB14"
]
},
{
"timestamp": 1718011538,
"transactionHash": "0xa6bc022ba0f60ac6f10a6efb84b261e9ca1b327a611bdd7a1f4d37cc9b027a3c",
"implementations": [
"zksync:0x01a6715d3560241E09E865a46122bf347A576c09"
]
},
{
"timestamp": 1765195612,
"transactionHash": "0x749b9e6eed328052d679eb86639be807b4acf811ac8786f730b45258ba41ce6f",
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
}
],
"description": "The ZK token contract on ZKsync Era. Mintable through access control roles. Used for voting in the ZK stack governance system.\n* Roles:\n * **admin**: ZkTokenProxyAdmin; ultimately ProtocolUpgradeHandler_l2Alias\n * **defaultAdmin**: ProtocolUpgradeHandler_l2Alias\n * **minterAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"upgradableBy": [
{
"id": "ProtocolUpgradeHandler_l2Alias",
"name": "ProtocolUpgradeHandler_l2Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E#code"
},
{
"name": "ZkTokenProxyAdmin",
"isVerified": true,
"address": "zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler_l2Alias",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0xdB1E46B448e68a5E35CB693a99D59f784aD115CC#code"
},
{
"name": "ZkTokenTimelockController",
"isVerified": true,
"address": "zksync:0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 3d.\n* Roles:\n * **canceller**: ZkTokenGovernor\n * **executor**: ZkTokenGovernor\n * **proposer**: ZkTokenGovernor\n * **timelockAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d#code"
}
]
},
"escrows": [
{
"address": "0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"sinceTimestamp": 1739109131,
"tokens": [
"LGHO",
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Shared bridge for depositing tokens to Lens and other ZK stack chains.",
"url": "https://etherscan.io/address/0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "ElasticChain",
"l2BridgeAddress": "0x8116A750e2091B2bA0D94223e7b20a6A65A279f4",
"l2EtherAddress": "0xE5ecd226b3032910CEaa43ba92EE8232f8237553",
"tokensToAssignFromL1": [
"LGHO"
]
},
"chainId": 1
}
],
"programHashes": [
{
"title": "Boojum L2 Bootloader program v0.29.2",
"description": "EraVM program that proves the correct execution of a batch of ZK Stack L2 blocks.",
"proverSystemProject": "boojum",
"programUrl": "https://github.com/matter-labs/era-contracts/blob/v0.29.2/system-contracts/bootloader/bootloader.yul",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install npm and yarn: `npm install --global yarn`\n2. Install hardhat: `npm install -g hardhat`\n3. Install foundry-zksync: `curl -L https://raw.githubusercontent.com/matter-labs/foundry-zksync/main/install-foundry-zksync | bash` from [here](https://foundry-book.zksync.io/introduction/installation/).\n\nVerify:\n\n1. Checkout the correct branch in [era-contracts](https://github.com/matter-labs/era-contracts) repo: `git checkout v0.29.2`. Commit hash should be `dbfc9b5a40d68007dc405a9b669230104c1646e4`.\n2. Execute recompute_hashes.sh script: `chmod +x recompute_hashes.sh` and `./recompute_hashes.sh`. Note that the script may require a specific version of `foundryup-zksync` and it will suggest the command to install it. However you might need to manually clear git working tree in the repo foundry-zksync (probably in ~/.foundry/matter-labs/foundry-zksync) to change versions.",
"hash": "0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 4d 3h - 8d 3h delay on code upgrades unless upgrade is initiated by the EmergencyUpgradeBoard in which case there is no delay."
"text": "a contract receives a malicious code upgrade. There is a 5d - 9d delay on code upgrades unless upgrade is initiated by the EmergencyUpgradeBoard in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9",
"eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF",
"eth:0xc3c6dDDAc8829b233Dc6536Ec024775a57b0AF2A"
]
}
+1 -1
{
"baseTimestamp": 1791896958,
"baseTimestamp": 1792144197,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "3e47563b",
"date": "Fri, 16 Oct 2026 10:35:42 GMT",
"timestamp": 1792144197,
"description": "The Lens execution delay in the ValidatorTimelock went from 3h to 1d via the new chain-specific delay. Lens batches now wait at least 1d between commitment and execution. Avail Multisig 1 swapped one signer.",
"isHighSeverity": true,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_v31] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\n+++ severity: HIGH\n values.executionDelayLens:\n- 10800\n+ 86400\n+++ severity: HIGH\n values.executionDelayLens_fmt:\n- \"3h\"\n+ \"1d\"\n }\n```\n\n```diff\n contract Avail Multisig 1 (eth:0x7F2f87B0Efc66Fea0b7c30C61654E53C37993666) [GnosisSafe] {\n +++ description: None\n values.$members.6:\n- \"eth:0x4983A5ebE79c0570aa368cE84f281A8aAc50cE4d\"\n+ \"eth:0x50d0667992467421f3B359C8138928C0157cB444\"\n }\n```"
}
]
},
{
"id": "c57de3e2",
"date": "Mon, 05 Oct 2026 10:54:18 GMT",
"timestamp": 1790944827,
"description": "Vector contracts are now discovered here instead of referenced from the vector project, which was removed with the rest of the alt-DA projects.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Avail Multisig 2 (eth:0x1a5BA9447D02Ddaf7bcB5594Fc27dE2Daf588930) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (eth:0x36194271a00dBBBae314E83dA56d0FF75fDa367B) [global/ProxyAdmin]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockController (eth:0x45828180bbE489350D621d002968A0585406d487) [global/TimelockController]\n +++ description: A timelock with access control. The current minimum delay is 1d.\n```\n\n```diff\n+ Status: CREATED\n contract Avail Multisig 1 (eth:0x7F2f87B0Efc66Fea0b7c30C61654E53C37993666) [GnosisSafe]\n +++ description: None\n```"
}
]
},
{
"id": "9c72ded5",
"date": "Fri, 02 Oct 2026 12:42:24 GMT",
"timestamp": 1790944827,
"description": "Executed this proposal: https://www.tally.xyz/gov/zksync/proposal/49883493212277767948924829453899549013679463473253620701602979414799679547598?govId=eip155%3A324%3A0x76705327e682F2d96943280D99464Ab61219e34f. Now each chain admin can increase the execution delay of its chain (`increaseChainExecutionDelay`), the owner can set it freely (`setChainExecutionDelay`). The effective delay for Lens is tracked in `executionDelayLens` (still 3h).\n\nAlso adds a new `UPGRADER_ROLE` that can call `upgradeChainFromVersion()` through the VTL (forwarded to the diamond). Currently nobody holds the role for Lens yet (tracked in `upgraderVTL`).",
"isHighSeverity": true,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_v31] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\n template:\n- \"shared-zk-stack/ValidatorTimelock_post29\"\n+ \"shared-zk-stack/ValidatorTimelock_v31\"\n sourceHashes.1:\n- \"0x5afea1019ac418e639ce9df65b9653bf0ca88ed81fb0abe0447e87328e39f10c\"\n+ \"0x51d6000b0e4437a2b99d13d332658fffb3da867cd56b05cbcb4bf4f954ff12ff\"\n description:\n- \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\"\n+ \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\"\n values.$implementation:\n- \"eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8\"\n+ \"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"\n values.$pastUpgrades.1:\n+ [\"2026-10-01T12:28:47.000Z\",\"0xdc4278c8b23d99f974a206dcaa1c1e20272c49095fa31eac842210ae97b435a8\",[\"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"]]\n values.$upgradeCount:\n- 1\n+ 2\n+++ severity: HIGH\n values.executionDelayLens:\n+ 10800\n+++ severity: HIGH\n values.executionDelayLens_fmt:\n+ \"3h\"\n values.MAX_EXECUTION_DELAY:\n+ 2592000\n values.OPTIONAL_UPGRADER_ADMIN_ROLE:\n+ \"0xa1426e789273bde4307f3302768d8e4eb615f0f4dea304f29cccd58ff644d640\"\n values.UPGRADER_ROLE:\n+ \"0x189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3\"\n errors:\n- {\"executionDelayLens\":\"Processing error occurred.\",\"executionDelayLens_fmt\":\"Processing error occurred.\"}\n fieldMeta.executionDelay.description:\n+ \"Ecosystem-wide minimum execution delay (in seconds), set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n fieldMeta.executionDelay_fmt.description:\n+ \"Ecosystem-wide minimum execution delay, set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n implementationNames.eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8:\n- \"ValidatorTimelock\"\n implementationNames.eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35:\n+ \"ValidatorTimelock\"\n }\n```"
}
]
},
{
"id": "3be3a85b",
"date": "Mon, 17 Aug 2026 11:30:47 GMT",
"timestamp": 1786966184,
"description": "Lens Multisig upgraded the boojum verifiers to version v0.30.1 (registered on the ChainTypeManager before). The new verifiers are not yet reproduced.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract Diamond (eth:0xc29d04A93F893700015138E3E334eB828dAC3cef) [shared-zk-stack/Diamond] {\n +++ 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 values.$pastUpgrades.12:\n+ [\"2026-08-16T19:53:23.000Z\",\"0xd346a85316db66f6ed0cde76b5a129fb23a52351118a15822e158bf59f693f34\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 12\n+ 13\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 128849018880\n+ 128849018881\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n+ \"eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierPlonk (eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierFflonk (eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraDualVerifier (eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9 or eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF depending on the supplied proof type.\n```"
}
]
},
{
"id": "63cc6f13",
"date": "Tue, 11 Aug 2026 07:46:55 GMT",
"timestamp": 1786434353,
"description": "Lens zkevm admin upgraded boojum verifier to v29.5 (same as zksync era, was registered on chain type manager before). Verifier is not yet reproduced.\n\nRemoved 7 members of Lens ms (2/10 -> 2/3).",
"isHighSeverity": true,
"changeCount": 21,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lens Multisig (eth:0x4968A0E4b025eD7d095753E54058377969b41abC) [GnosisSafe] {\n +++ description: None\n values.$members.2:\n- \"eth:0x71910321A1d3b3f743ca52569f5Aa82f09538A2e\"\n values.$members.3:\n- \"eth:0xfbDF62F0a73DED0BF5A264867cFD022E192B5526\"\n values.$members.4:\n- \"eth:0x5dc301EcD8Bd7694BB1074B3E58Aa0916EE7887d\"\n values.$members.5:\n- \"eth:0x62Ae8d9B6d0D9817bd9D41b9AfEAc301dBa713B8\"\n values.$members.6:\n- \"eth:0x2eD1df8F475b1f9c7493fC0eb0BFD4D1FD17f27b\"\n values.$members.7:\n- \"eth:0x2a80091816D7872850D500F6Ade835354238Af17\"\n values.$members.8:\n- \"eth:0x5063b3D23C3640d51c9E2aef41063B1d482C70ff\"\n values.multisigThreshold:\n- \"2 of 10 (20%)\"\n+ \"2 of 3 (67%)\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract Diamond (eth:0xc29d04A93F893700015138E3E334eB828dAC3cef) [shared-zk-stack/Diamond] {\n +++ 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 values.$pastUpgrades.10:\n+ [\"2026-08-09T08:16:35.000Z\",\"0x49096e35ef0401c7d2d263edf1e9441da8f0805ff3c1fa2677b99b90363aed86\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$pastUpgrades.11:\n+ [\"2026-08-09T11:04:59.000Z\",\"0xd00f75efe10c54a7f0df37b44b22205a3e3545b334856fe4bb3ba4f51687279c\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 10\n+ 12\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051588\n+ 128849018880\n values.getSemverProtocolVersion.1:\n- 29\n+ 30\n values.getSemverProtocolVersion.2:\n- 4\n+ 0\n values.getVerifier:\n- \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n+ \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```"
}
]
},
{
"id": "c8a41837",
"date": "Tue, 16 Jun 2026 09:43:54 GMT",
"timestamp": 1781602943,
"description": "Switch validator EOAs.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_post29] {\n +++ 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 values.validatorsVTL.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTL.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n }\n```"
}
]
},
{
"id": "a4ac0d0c",
"date": "Tue, 09 Jun 2026 10:11:44 GMT",
"timestamp": 1780999809,
"description": "Changed 7702 delegation.",
"isHighSeverity": true,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (eth:0x7CBba07e31Dc7b12bB69a1209C5B11A8aC50acf5) {\n +++ description: None\n sourceHashes.0:\n- \"0x7c13d2cfb57c882bc260e74dcb008156f303789097df3876ce6c099f1957c71b\"\n+ \"0x39d3c680bc45b2c9a848f9ffcd0355b99f65f6a6cd626699fdb311dec621e134\"\n values.$implementation:\n- \"eth:0x80296FF8D1ED46f8e3C7992664D13B833504c2Bb\"\n+ \"eth:0x612373D7003d694220f7800EeaF8E3924c0951D3\"\n values.ADDRESS_THIS:\n- \"eth:0x80296FF8D1ED46f8e3C7992664D13B833504c2Bb\"\n values.eip712Domain.fields:\n- \"0x0f\"\n+ \"0x1f\"\n values.eip712Domain.name:\n- \"wallet-core\"\n+ \"Calibur\"\n values.eip712Domain.salt:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x000000000000000000000000612373d7003d694220f7800eeaf8e3924c0951d3\"\n values.getMainStorage:\n- \"eth:0x08Bd365bb4908a93F778564B956d710e6858B063\"\n values.MAIN_STORAGE_IMPL:\n- \"eth:0x7DAF91DFe55FcAb363416A6E3bceb3Da34ff1d30\"\n values.SESSION_TYPEHASH:\n- \"0x162b80b4d2b49568d8cbb7ac5385094c9e5e14680ef0333beeddbfae562f0472\"\n values.CUSTOM_STORAGE_ROOT:\n+ \"0x3b86514c5c56b21f08d8e56ab090292e07c2483b3e667a2a45849dcb71368600\"\n values.domainBytes:\n+ \"0xc7e4f5b2d381bdfacf8506a24542052ab4e951573cab4ce34bb1c9509c84cbbf06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c00000000000000000000000000000000000000000000000000000000000000010000000000000000000000007cbba07e31dc7b12bb69a1209c5b11a8ac50acf5000000000000000000000000612373d7003d694220f7800eeaf8e3924c0951d3\"\n values.domainSeparator:\n+ \"0xb2c9668300ebd842c31e9ecddb570b09936392cb518ce4287a8a5668258738f3\"\n values.ENTRY_POINT:\n+ \"eth:0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108\"\n values.keyAt:\n+ []\n values.keyCount:\n+ 0\n values.keyHashes:\n+ 0\n values.namespaceAndVersion:\n+ \"Uniswap.Calibur.1.0.0\"\n }\n```"
}
]
},
{
"id": "a2f0f50a",
"date": "Thu, 04 Jun 2026 15:20:53 GMT",
"timestamp": 1780586386,
"description": "Lens migrated its verifiers (Plonk, Fflonk) to core-v29.11.1. Also, added two addresses to Lens Multisig.",
"isHighSeverity": true,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lens Multisig (eth:0x4968A0E4b025eD7d095753E54058377969b41abC) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x7CBba07e31Dc7b12bB69a1209C5B11A8aC50acf5\"\n values.$members.1:\n+ \"eth:0x8f356fEC1793c4AEbd817A344C77310081Fa6917\"\n values.$members.7:\n- \"eth:0xE0b3Ef5A61324acceE3798B6D9Da5B47b0312b7c\"\n+ \"eth:0xc5342CD71f67DAc44Bcfbc37df35700b5e4691e6\"\n values.multisigThreshold:\n- \"2 of 8 (25%)\"\n+ \"2 of 10 (20%)\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d or eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026 depending on the supplied proof type.\n```\n\n```diff\n contract LensZkEvmAdmin (eth:0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) [shared-zk-stack/ChainAdmin] {\n +++ description: A governance proxy that lets eth:0x4968A0E4b025eD7d095753E54058377969b41abC act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.6:\n+ {\"_protocolVersion\":124554051588,\"_upgradeTimestamp\":0}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract Diamond (eth:0xc29d04A93F893700015138E3E334eB828dAC3cef) [shared-zk-stack/Diamond] {\n +++ 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 values.$pastUpgrades.9:\n+ [\"2026-06-03T19:38:35.000Z\",\"0x8f7d04ce7012bfb248543385dc44825a6d21c4752f98bff93eba04da47368d4e\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 9\n+ 10\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051587\n+ 124554051588\n values.getSemverProtocolVersion.2:\n- 3\n+ 4\n values.getVerifier:\n- \"eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B\"\n+ \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n EOA (eth:0x7CBba07e31Dc7b12bB69a1209C5B11A8aC50acf5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```"
}
]
},
{
"id": "b912dfae",
"date": "Fri, 30 Jan 2026 10:15:51 GMT",
"timestamp": 1769768087,
"description": "Upgraded boojum verifier to the latest version.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n contract LensZkEvmAdmin (eth:0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: A governance proxy that lets eth:0x4968A0E4b025eD7d095753E54058377969b41abC act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.5:\n+ {\"_protocolVersion\":124554051587,\"_upgradeTimestamp\":0}\n }\n```\n\n```diff\n contract Diamond (eth:0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ 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 values.$pastUpgrades.8:\n+ [\"2026-01-29T19:31:35.000Z\",\"0x54184d1aa0137620015290fe57ef7376cc15718acb77989eec3b7f4d0e0d14e5\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 8\n+ 9\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051586\n+ 124554051587\n values.getSemverProtocolVersion.2:\n- 2\n+ 3\n values.getVerifier:\n- \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n+ \"eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d or eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "4015652c",
"date": "Wed, 19 Nov 2025 10:28:33 GMT",
"timestamp": 1763546230,
"description": "standard v29.2 upgrade.",
"isHighSeverity": true,
"changeCount": 48,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ 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```\n\n```diff\n contract LensZkEvmAdmin (eth:0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: A governance proxy that lets eth:0x4968A0E4b025eD7d095753E54058377969b41abC act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.4:\n+ {\"_protocolVersion\":124554051586,\"_upgradeTimestamp\":1762434000}\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ 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```\n\n```diff\n contract LensZkEvm (eth:0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ 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 sourceHashes.1:\n- \"0xbc2380479529743c27e6ab96cdf08210319fadcbca0856cf50c6b1b54bf8437f\"\n+ \"0xc7513302e4e09efc907df5e645d9f8037b1d02409f9a9089f61061c8951ef1ff\"\n values.$implementation.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.$implementation.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.$implementation.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.$implementation.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.$pastUpgrades.7:\n+ [\"2025-11-17T20:58:11.000Z\",\"0xd0833923639a4693c45fe165c6d30094dbfbc7c0b9e77b89981696519eb579a9\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 7\n+ 8\n values.facetAddresses.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.facetAddresses.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.facetAddresses.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.facetAddresses.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.facets.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"getRollupDAManager()\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2MessageInclusionShared(uint256,uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusionShared(uint256,uint256,uint256,bytes32,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusionShared(uint256,uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\"]\n values.facets.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ [\"precommitSharedBridge(address,uint256,bytes)\",\"commitBatchesSharedBridge(address,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(address,uint256,uint256,bytes)\",\"revertBatchesSharedBridge(address,uint256)\",\"proveBatchesSharedBridge(address,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n+ \"0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n+ \"0x010005f73e7c299ed73db937843643bdc276cbc2cc8596287e1e0cf3afc60252\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+ \"0x01000d8bae37b82f311186426184866498b357f41d7a02ced11f3e3fbfbacd63\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084289\n+ 124554051586\n values.getSemverProtocolVersion.1:\n- 28\n+ 29\n values.getSemverProtocolVersion.2:\n- 1\n+ 2\n values.getVerifier:\n- \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n+ \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n values.validators.1:\n- \"eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n values.validators.2:\n- \"eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\"\n values.getRollupDAManager:\n+ \"eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45\"\n implementationNames.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- \"AdminFacet\"\n implementationNames.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- \"GettersFacet\"\n implementationNames.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- \"MailboxFacet\"\n implementationNames.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- \"ExecutorFacet\"\n implementationNames.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ \"AdminFacet\"\n implementationNames.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ \"GettersFacet\"\n implementationNames.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ \"MailboxFacet\"\n implementationNames.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n reference RollupDAManager (eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45)\n +++ description: None\n```"
}
]
},
{
"id": "360b3311",
"date": "Fri, 15 Aug 2025 08:16:14 GMT",
"timestamp": 1755245760,
"description": "Standard zkstack v28.1 upgrade.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.3:\n+ {\"_protocolVersion\":120259084289,\"_upgradeTimestamp\":1754911800}\n }\n```\n\n```diff\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ 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 values.$pastUpgrades.6:\n+ [\"2025-08-14T14:23:47.000Z\",\"0xe1e89cb3eb4b704457d700ce847e9f682c50ef505c08b5ca0873a833e9d4ff2a\",[\"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 6\n+ 7\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084288\n+ 120259084289\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n+ \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```"
}
]
},
{
"id": "b0951e94",
"date": "Mon, 14 Jul 2025 12:47:16 GMT",
"timestamp": 1752497236,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 11,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Lens Multisig (0x4968A0E4b025eD7d095753E54058377969b41abC)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock3 (0x5C03468829A26981c410a7930bD4853622F0B2E5)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 0s.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock2 (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract AvailL1DAValidator (0x8f50d93B9955B285f787043B30B5F51D09bE0120)\n +++ description: Contract that verifies that the validiums data was made available on Avail by querying the eth:0x054fd961708D8E2B9c10a63F6157c74458889F0a on Ethereum for a merkle proof of inclusion.\n```\n\n```diff\n+ Status: CREATED\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987)\n +++ description: None\n```"
}
]
},
{
"id": "eda58c27",
"date": "Mon, 07 Jul 2025 06:48:55 GMT",
"timestamp": 1751870935,
"description": "standard zk stack v28 upgrade.",
"isHighSeverity": true,
"changeCount": 39,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.2:\n+ {\"_protocolVersion\":120259084288,\"_upgradeTimestamp\":1750942800}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ 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 values.$implementation.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.$implementation.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.$implementation.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.$implementation.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.$pastUpgrades.5:\n+ [\"2025-07-02T18:42:59.000Z\",\"0x8d2c504c58a659511bef547888186da42708e16923743741cd11acf4c6d908b3\",[\"0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 5\n+ 6\n values.facetAddresses.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.facetAddresses.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.facetAddresses.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.facetAddresses.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n+ \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+ \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n+ \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 115964116992\n+ 120259084288\n values.getSemverProtocolVersion.1:\n- 27\n+ 28\n values.getVerifier:\n- \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n+ \"0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- \"ExecutorFacet\"\n implementationNames.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ \"AdminFacet\"\n implementationNames.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ \"GettersFacet\"\n implementationNames.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ \"MailboxFacet\"\n implementationNames.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to 0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or 0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "b6ebaeca",
"date": "Thu, 19 Jun 2025 11:17:14 GMT",
"timestamp": 1750331834,
"description": "Upgrade to Vector DA bridge from Avail.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lens Multisig (0x4968A0E4b025eD7d095753E54058377969b41abC) {\n +++ description: None\n values.$members.7:\n+ \"0x2a80091816D7872850D500F6Ade835354238Af17\"\n values.$members.6:\n+ \"0x5063b3D23C3640d51c9E2aef41063B1d482C70ff\"\n values.$members.5:\n+ \"0x62Ae8d9B6d0D9817bd9D41b9AfEAc301dBa713B8\"\n values.$members.4:\n+ \"0x5dc301EcD8Bd7694BB1074B3E58Aa0916EE7887d\"\n values.$members.3:\n- \"0x2a80091816D7872850D500F6Ade835354238Af17\"\n+ \"0xfbDF62F0a73DED0BF5A264867cFD022E192B5526\"\n values.$members.2:\n- \"0x5063b3D23C3640d51c9E2aef41063B1d482C70ff\"\n+ \"0xE0b3Ef5A61324acceE3798B6D9Da5B47b0312b7c\"\n values.$members.1:\n- \"0xE0b3Ef5A61324acceE3798B6D9Da5B47b0312b7c\"\n+ \"0x2eD1df8F475b1f9c7493fC0eb0BFD4D1FD17f27b\"\n values.$members.0:\n- \"0x2eD1df8F475b1f9c7493fC0eb0BFD4D1FD17f27b\"\n+ \"0x71910321A1d3b3f743ca52569f5Aa82f09538A2e\"\n values.multisigThreshold:\n- \"2 of 4 (50%)\"\n+ \"2 of 8 (25%)\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ 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```\n\n```diff\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ 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+++ severity: HIGH\n values.getDAValidatorPair.1:\n- \"0xFa30EAe30351A83809657299F6Cad9557c232e8C\"\n+ \"0xdA6661Df15E79cFe1e679ccD138D813b955ba492\"\n+++ severity: HIGH\n values.getDAValidatorPair.0:\n- \"0x907b30407249949521Bf0c89A43558dae200146A\"\n+ \"0x8f50d93B9955B285f787043B30B5F51D09bE0120\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract AvailL1DAValidator (0x8f50d93B9955B285f787043B30B5F51D09bE0120)\n +++ description: Contract that verifies that the validiums data was made available on Avail by querying the 0x054fd961708D8E2B9c10a63F6157c74458889F0a on Ethereum for a merkle proof of inclusion.\n```"
}
]
},
{
"id": "d2aafb43",
"date": "Wed, 18 Jun 2025 12:24:52 GMT",
"timestamp": 1750249492,
"description": "2 valis removed.",
"isHighSeverity": false,
"changeCount": 10,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564) {\n +++ 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 values.validatorsVTL.3:\n- \"0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n values.validatorsVTL.2:\n- \"0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n values.validatorsVTL.1:\n- \"0xAaF7b278baC078AA4f9bdc8E0a93CDe604aA67d9\"\n+ \"0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n values.validatorsVTL.0:\n- \"0xb1a0c1F1B50436AC94B8Ce9Ae919B0e820aCb374\"\n+ \"0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n }\n```\n\n```diff\n EOA (0xAaF7b278baC078AA4f9bdc8E0a93CDe604aA67d9) {\n +++ description: None\n receivedPermissions.2:\n- {\"permission\":\"validateZkStack\",\"from\":\"ethereum:0x5C03468829A26981c410a7930bD4853622F0B2E5\",\"role\":\".validatorsVTL\"}\n receivedPermissions.1.from:\n- \"ethereum:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n+ \"ethereum:0x5C03468829A26981c410a7930bD4853622F0B2E5\"\n receivedPermissions.0.from:\n- \"ethereum:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"ethereum:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n }\n```\n\n```diff\n EOA (0xb1a0c1F1B50436AC94B8Ce9Ae919B0e820aCb374) {\n +++ description: None\n receivedPermissions.2:\n- {\"permission\":\"validateZkStack\",\"from\":\"ethereum:0x5C03468829A26981c410a7930bD4853622F0B2E5\",\"role\":\".validatorsVTL\"}\n receivedPermissions.1.from:\n- \"ethereum:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n+ \"ethereum:0x5C03468829A26981c410a7930bD4853622F0B2E5\"\n receivedPermissions.0.from:\n- \"ethereum:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"ethereum:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n }\n```"
}
]
},
{
"id": "c2b3659d",
"date": "Mon, 26 May 2025 15:03:44 GMT",
"timestamp": 1748271824,
"description": "validators added (via validatorTimelock).",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564) {\n +++ 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 values.validatorsVTL.3:\n+ \"0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n values.validatorsVTL.2:\n+ \"0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n }\n```"
}
]
},
{
"id": "127c8e53",
"date": "Fri, 16 May 2025 10:10:13 GMT",
"timestamp": 1747390213,
"description": "v27 upgrade to standard contracts.",
"isHighSeverity": true,
"changeCount": 41,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.1:\n+ {\"_protocolVersion\":115964116992,\"_upgradeTimestamp\":1747029600}\n }\n```\n\n```diff\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ 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 sourceHashes.3:\n- \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n+ \"0xb3038139dce45f6c1aaedbfb1b321c230301b2d004da109b39a17d827c6b0e4f\"\n sourceHashes.2:\n- \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n+ \"0x1f9f7cd43747f5bcf879d544be0baca967245540e70592112cdc90c360f30486\"\n sourceHashes.1:\n- \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n+ \"0xab7812fa82c483b781aee4c2339b860fcdee4033de1e243370a77a20fc353ddc\"\n sourceHashes.0:\n- \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n+ \"0xca793d2e01bb37722ba48f56662e8602e693d6808ed9587867c2bac43c3dec25\"\n values.$implementation.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$implementation.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$implementation.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$implementation.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.4:\n+ [\"2025-05-14T20:40:11.000Z\",\"0x37a2cb789916112d5c2824569ee4f44d4078b9ab00b55017eebf83124309b54c\",[\"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\",\"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\",\"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\",\"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.facetAddresses.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.facetAddresses.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.facetAddresses.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.facetAddresses.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n+ \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+ \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 111669149696\n+ 115964116992\n values.getSemverProtocolVersion.0:\n- 26\n+ 27\n values.getVerifier:\n- \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n+ \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n values.getL2EvmEmulatorBytecodeHash:\n+ \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n implementationNames.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- \"AdminFacet\"\n implementationNames.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- \"GettersFacet\"\n implementationNames.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- \"MailboxFacet\"\n implementationNames.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- \"ExecutorFacet\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "37978bfa",
"date": "Fri, 09 May 2025 11:15:27 GMT",
"timestamp": 1746789327,
"description": "New Lens owner MS.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: None\n values.owner:\n- \"0xca2938BdD6Bcf5860f7176fA092b0ac9510f09A3\"\n+ \"0x4968A0E4b025eD7d095753E54058377969b41abC\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Lens Multisig (0x4968A0E4b025eD7d095753E54058377969b41abC)\n +++ description: None\n```"
}
]
},
{
"id": "dcef561d",
"date": "Tue, 08 Apr 2025 09:32:43 GMT",
"timestamp": 1744104763,
"description": "Initial discovery of a standard ZK stack validium.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract ValidatorTimelock3 (0x5C03468829A26981c410a7930bD4853622F0B2E5)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 0s.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock2 (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987)\n +++ description: None\n```"
}
]
}
]
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * AggchainECDSAMultisig ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x258862dec9a77db57b398c441390783293E2a7A1",
"type": "EOA",
"isVerified": true,
"name": "0x2588…a7A1",
"url": "https://etherscan.io/address/0x258862dec9a77db57b398c441390783293E2a7A1",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * replace the aggchainSigners and the signature threshold (which sign the state transitions of this aggchain), switch to the default signers of the AgglayerGateway, upgrade the aggchain to a newer rollup type of the same aggchain type registered in the AgglayerManager, set the aggchain metadata manager and transfer the aggchainManager role \n * set the trusted sequencer address \n * sole address that can force batches ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x8F2D2Da3044B0A1ea54Ee26F7fe376cD9ec4393F",
"type": "EOA",
"isVerified": true,
"name": "0x8F2D…393F",
"url": "https://etherscan.io/address/0x8F2D2Da3044B0A1ea54Ee26F7fe376cD9ec4393F",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sign state transitions (replaces state validation for this aggchain) ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * AggchainECDSAMultisig ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x8499B48896660D549b3A55e6c68a3169B5f9B382",
"type": "EOA",
"isVerified": true,
"name": "0x8499…B382",
"url": "https://etherscan.io/address/0x8499B48896660D549b3A55e6c68a3169B5f9B382",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * replace the aggchainSigners and the signature threshold (which sign the state transitions of this aggchain), switch to the default signers of the AgglayerGateway, upgrade the aggchain to a newer rollup type of the same aggchain type registered in the AgglayerManager, set the aggchain metadata manager and transfer the aggchainManager role \n * set the trusted sequencer address \n * sole address that can force batches ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x34DaDcB5010ffB1E355B92AD53bbEbECe98af471",
"type": "EOA",
"isVerified": true,
"name": "0x34Da…f471",
"url": "https://etherscan.io/address/0x34DaDcB5010ffB1E355B92AD53bbEbECe98af471",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sign state transitions (replaces state validation for this aggchain) ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+90 -26
+7 -0
[
{
"title": "Permissioned validator entry",
"url": "https://forum.polygon.technology/t/permissioned-validator-entry-via-validatorpass/22108",
"date": "2026-10-13T00:00:00Z",
"description": "Each new validator needs approval from governance or a permissioned EOA.",
"type": "general"
},
{
"title": "Rio upgrade",
"url": "https://polygon.technology/blog/polygon-launches-major-payments-upgrade-with-rio-faster-lighter-and-easier-to-build",
"date": "2025-10-08T00:00:00Z",
"description": "Performance-focused Polygon PoS upgrade improving block production and network efficiency.",
"type": "general"
},
{
"title": "Heimdall v2 upgrade",
"url": "https://polygon.technology/blog/polygon-5-second-fast-finality-upgrade",
"date": "2025-07-10T00:00:00Z",
"description": "Major consensus upgrade replacing Heimdall v1 with Heimdall v2.",
"type": "general"
},
{
"title": "Ahmedabad hard fork",
"url": "https://polygon.technology/blog/polygon-pos-the-ahmedabad-upgrade-is-live-on-mainnet",
"date": "2024-09-26T00:00:00Z",
"description": "Hard fork increasing maximum contract size and improving bridge observability on Polygon PoS.",
"type": "general"
},
{
"title": "POL becomes native gas token",
"url": "https://polygon.technology/blog/matic-to-pol-migration-is-now-live-everything-you-need-to-know",
"date": "2024-09-04T00:00:00Z",
"description": "Migration from MATIC to POL as the native gas and staking token on Polygon PoS.",
"type": "general"
},
{
"title": "EIP-1559 activated on Polygon PoS",
"url": "https://polygon.technology/blog/eip-1559-upgrades-are-going-live-on-polygon-mainnet",
"date": "2022-01-17T00:00:00Z",
"description": "Polygon PoS implements EIP-1559, introducing base fee burn and a new gas fee mechanism.",
"type": "general"
},
{
"title": "Matic rebrands to Polygon",
"url": "https://polygon.technology/blog/matic-network-becomes-polygon-ethereums-internet-of-blockchains-expands-mission-and-tech-scope",
"date": "2021-02-09T00:00:00Z",
"description": "Launch of the Polygon Proof-of-Stake chain.",
"type": "general"
}
]
+1 -1
{
"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 upgrade since contracts are instantly upgradable.",
"sentiment": "bad",
"orderHint": 0
},
"sequencerFailure": {
"value": "Decentralized Sequencer Set",
"sentiment": "warning",
"description": "Although there is a sequencer set of 104 (called validators), if the cap of 105 is reached, no new stakers can join. A minimum of 100,000 POL stake is required to obtain block production rights. There is no specific censorship resistance mechanism against selective censorship by parts of the active validator set nor a way to force transactions from Ethereum L1. The canonical bridge between Polygon PoS and Ethereum allows for queuing transactions from the Ethereum and Polygon PoS sides, which cannot be skipped, except for halting the queue entirely."
"description": "There is a sequencer set of 104 (called validators), capped at 105. Validator entry is permissioned. A minimum of 100,000 POL stake is required to obtain block production rights. There is no specific censorship resistance mechanism against selective censorship by parts of the active validator set nor a way to force transactions from Ethereum L1. The canonical bridge between Polygon PoS and Ethereum allows for queuing transactions from the Ethereum and Polygon PoS sides, which cannot be skipped, except for halting the queue entirely."
},
"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.",
"sentiment": "warning"
}
}
}
+23 -23
{
"otherConsiderations": [
{
"name": "Destination tokens are upgradeable",
"description": "Tokens transferred end up as wrapped ERC20 proxies, some of them are upgradable. The contract is named UChildERC20Proxy.",
"references": [],
"risks": [
{
"category": "Funds can be stolen if",
"text": "destination token contract is maliciously upgraded."
}
],
"isIncomplete": true
}
],
"sequencing": {
"name": "Transactions are ordered by Polygon PoS validators",
"description": "Polygon PoS is operated by a closed proof-of-stake validator set with 104 active validators. Block production rights are given to validators randomly (stake-weighted) for the duration of a *span*. In practice, validators delegate the block production further to centralised validator-elected block producers (VeBloPs). Ethereum smart contracts accept checkpoints signed by more than two thirds of Polygon PoS validator stake.",
"sequencingSpec": {
"type": "sequencer-set",
"blockTime": {
"value": "2s"
},
"proposerRotationTime": {
"value": "3h 33m",
"description": "Randomly sampled validators delegate block production for the duration of a span: 6400 blocks"
},
"sequencerCount": {
"value": "104 validators",
"secondLine": "3.56 B POL"
"secondLine": "3.61 B POL"
},
"blockProductionAccess": {
"value": "Closed and capped",
"sentiment": "bad",
"description": "The current validator cap is 105. Joining the set is permissioned (Multisig)."
"description": "The current validator cap is 105. Validator entry is permissioned (Polygon Multisig or an EOA)."
},
"stakePerValidator": {
"value": "100,000 POL minimum, variable",
"description": "stake-weighted block production rights, no maximum"
},
"rateLimit": {
"value": "No (permissioned)"
},
"deterministicCrGadget": {
"value": "No",
"sentiment": "warning"
},
"additionalCrGadgets": {
"value": "No",
"sentiment": "bad"
},
"inclusionDelayChart": {
"type": "spanlike",
"validatorCount": 104,
"spanBlocks": 6400,
"blockSeconds": 2,
"target": 0.99,
"maxCensorFraction": 0.33,
"stakeDistribution": {
"stakeToken": "POL",
"dateType": "fetched",
"date": "2026-08-06T08:48:58.389Z",
"validatorCount": 105,
"totalStake": 3568595994,
"date": "2026-10-16T13:03:10.459Z",
"validatorCount": 104,
"totalStake": 3614655022,
"entities": [
{
"name": "Upbit Staking",
"stake": 417333126
"stake": 421533126
},
{
"name": "Coinbase",
"stake": 367924777
"stake": 355128740
},
{
"name": "Luganodes",
"stake": 257764644
},
{
"name": "Anonymous 194",
"stake": 245101958
"stake": 260114767
},
{
"name": "Binance Node",
"stake": 228831375
"name": "Figment",
"stake": 225211653
},
{
"name": "Figment",
"stake": 226258957
"name": "Blockdaemon",
"stake": 215228619
},
{
"name": "Matic Power",
"stake": 207786330
"stake": 207780686
},
{
"name": "Blockdaemon",
"stake": 181198908
"name": "Binance Node",
"stake": 191072868
},
{
"name": "Kraken",
"stake": 164408175
"stake": 174108004
},
{
"name": "Anonymous 95",
"stake": 150542747
"name": "Luganodes",
"stake": 167683386
},
{
"name": "Kiln x Ownest 🔸 Pro Staking 🔸",
"stake": 156809382
}
]
}
},
"inclusionDelayChartDescription": "The chart models live-chain selective censorship only. Since proposing is stake-weighted, the x-axis represents the censoring POL stake, and does not cover validator-set changes, or blanket-censorship resistance gadgets."
},
"censorshipResistance": "The validator set (on Polygon PoS, validators are both proposers and sequencers) is closed and capped, but includes a diverse set of known entities who share block production rights. There are no specific censorship resistance gadgets built into the protocol.\n### Selective censorship\nAs long as the Polygon PoS blockchain is producing blocks, users can expect to include their transactions due to the rotating, diverse block producers, even if they are censored by some of them. Unfortunately, the rotation is very slow (see *span* time) and even just a few entities censoring can cause long inclusion delays.\n### Blanket censorship\nValidators holding more than 1/3 of Polygon PoS stake among them can censor users if they actively refuse to attest to blocks with their transactions. Polygon Multisig controls the core smart contracts on Ethereum and can administer the validator set (including malicious changes) as a consequence.\n### Walkaway\nIf validators holding more than 1/3 of the stake on Polygon PoS stop block production, the chain stops and there is no way for users to include any transactions. As the validator set is currently closed by a permissioned smart contract setting on ethereum, walkaway of the permissioned actor would require social coordination and a hard fork to progress the chain.",
"censorshipResistance": "The validator set (on Polygon PoS, validators are both proposers and sequencers) is closed and capped, but includes a diverse set of known entities who share block production rights. There are no specific censorship resistance gadgets built into the protocol.\n### Selective censorship\nAs long as the Polygon PoS blockchain is producing blocks, users can expect to include their transactions due to the rotating, diverse block producers, even if they are censored by some of them. Unfortunately, the rotation is very slow (see *span* time) and even just a few entities censoring can cause long inclusion delays.\n### Blanket censorship\nValidators holding more than 1/3 of Polygon PoS stake among them can censor users if they actively refuse to attest to blocks with their transactions. Polygon Multisig controls the core smart contracts on Ethereum and can administer the validator set (including malicious changes) as a consequence.\n### Walkaway\nIf validators holding more than 1/3 of the stake on Polygon PoS stop block production, the chain stops and there is no way for users to include any transactions. As joining the validator set is gated by permissioned actors on Ethereum, walkaway of the permissioned actor would require social coordination and a hard fork to progress the chain.",
"references": [
{
"title": "Polygon PoS architecture documentation",
"url": "https://docs.polygon.technology/pos/architecture/"
}
],
"risks": [
{
"category": "Users can be censored if",
"text": "the active span proposer censors them, or if at least one third of Polygon PoS stake refuses to attest blocks that include their transactions."
}
]
},
"stateValidation": {
"categories": [
{
"title": "No state validation",
"description": "State updates are settled on Ethereum if signed by at least 2/3+1 of the Polygon PoS validators stake. Contracts on Ethereum do not check whether the state transitions are valid.",
"references": [],
"risks": [
{
"category": "Users can be censored if",
"text": "validators on Polygon decide to not mint tokens after observing an event on Ethereum."
},
{
"category": "Funds can be stolen if",
"text": "validators decide to mint more tokens than there are locked on Ethereum thus preventing some existing holders from being able to bring their funds back to Ethereum."
},
{
"category": "Funds can be stolen if",
"text": "validators submit a fraudulent checkpoint allowing themselves to withdraw all locked funds."
}
]
}
]
}
}
+22 -0
{
"ethereum": {
"actors": [
{
"id": "PolygonMultisig",
"name": "PolygonMultisig",
"description": "A Multisig with 5/9 threshold. \nCan propose and execute code upgrades. Can arbitrarily moves tokens out of the ERC20 escrow without a contract upgrade.",
"accounts": [
{
"address": "eth:0xFa7D2a996aC6350f4b56C043112Da0366a59b74c",
"type": "Contract",
"isVerified": true,
"name": "0xFa7D…b74c",
"url": "https://etherscan.io/address/0xFa7D2a996aC6350f4b56C043112Da0366a59b74c"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xAB4045C93e4eFFa9b325F706C9a690Ed00d08958",
"type": "EOA",
"isVerified": true,
"name": "0xAB40…8958",
"url": "https://etherscan.io/address/0xAB4045C93e4eFFa9b325F706C9a690Ed00d08958"
},
{
"address": "eth:0x1aE033D45ce93bbB0dDBF71a0Da9de01FeFD8529",
"type": "EOA",
"isVerified": true,
"name": "0x1aE0…8529",
"url": "https://etherscan.io/address/0x1aE033D45ce93bbB0dDBF71a0Da9de01FeFD8529"
},
{
"address": "eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a",
"type": "Contract",
"isVerified": true,
"name": "0x4e98…C38a",
"url": "https://etherscan.io/address/0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a"
},
{
"address": "eth:0x342EBaca3ACC54d6f5Ee78073FeC4af07f42B94e",
"type": "EOA",
"isVerified": true,
"name": "0x342E…B94e",
"url": "https://etherscan.io/address/0x342EBaca3ACC54d6f5Ee78073FeC4af07f42B94e"
},
{
"address": "eth:0x39415255619783A2E71fcF7d8f708A951d92e1b6",
"type": "EOA",
"isVerified": true,
"name": "0x3941…e1b6",
"url": "https://etherscan.io/address/0x39415255619783A2E71fcF7d8f708A951d92e1b6"
},
{
"address": "eth:0xb771380f912E4b5F6beDdf81314C383c13F16ab5",
"type": "EOA",
"isVerified": true,
"name": "0xb771…6ab5",
"url": "https://etherscan.io/address/0xb771380f912E4b5F6beDdf81314C383c13F16ab5"
},
{
"address": "eth:0x10cb290Fc4a5473460572ECF67B4C0cf06Da99A3",
"type": "EOA",
"isVerified": true,
"name": "0x10cb…99A3",
"url": "https://etherscan.io/address/0x10cb290Fc4a5473460572ECF67B4C0cf06Da99A3"
},
{
"address": "eth:0xdA66Df3920091eF4B54782B9463587c314DAdD41",
"type": "EOA",
"isVerified": true,
"name": "0xdA66…dD41",
"url": "https://etherscan.io/address/0xdA66Df3920091eF4B54782B9463587c314DAdD41"
},
{
"address": "eth:0x9d851f8b8751c5FbC09b9E74E6e68E9950949052",
"type": "Contract",
"isVerified": true,
"name": "0x9d85…9052",
"url": "https://etherscan.io/address/0x9d851f8b8751c5FbC09b9E74E6e68E9950949052"
}
]
},
{
"id": "Validator entry approvers",
"name": "Validator entry approvers",
"accounts": [
{
"address": "eth:0x6e7a5820baD6cebA8Ef5ea69c0C92EbbDAc9CE48",
"type": "Contract",
"isVerified": true,
"name": "0x6e7a…CE48",
"url": "https://etherscan.io/address/0x6e7a5820baD6cebA8Ef5ea69c0C92EbbDAc9CE48"
},
{
"address": "eth:0x4580559314cbBd84B595a6EC52e4dF5cdD54EFc4",
"type": "EOA",
"isVerified": true,
"name": "0x4580…EFc4",
"url": "https://etherscan.io/address/0x4580559314cbBd84B595a6EC52e4dF5cdD54EFc4"
}
],
"description": "Can approve new validators to join the Polygon PoS validator set. The Governance contract acts for the Polygon Multisig.",
"chain": "ethereum"
}
]
}
}
+22 -1
{
"addresses": {
"ethereum": [
{
"name": "RootChain",
"isVerified": true,
"address": "eth:0x86E4Dc95c7FBdBf52e33D563BbDB00823894C287",
"upgradeability": {
"proxyType": "EIP897 proxy",
"admins": [],
"implementations": [
"eth:0x536c55cFe4892E581806e10b38dFE8083551bd03"
],
"immutable": false
},
"chain": "ethereum",
"description": "Contract storing Polygon PoS chain checkpoints. Note that validity of these checkpoints is not verified, it is assumed to be valid if signed by 2/3 of the Polygon Validators.",
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x86E4Dc95c7FBdBf52e33D563BbDB00823894C287#code"
},
{
"name": "StateSender",
"isVerified": true,
"address": "eth:0x28e4F3a7f651294B9564800b2D01f35189A5bFbE",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Smart contract allowing whitelisted addresses to send messages to contracts on Polygon PoS chain.",
"url": "https://etherscan.io/address/0x28e4F3a7f651294B9564800b2D01f35189A5bFbE#code"
},
{
"name": "RootChainManager",
"isVerified": true,
"address": "eth:0xA0c68C638235ee32657e8f720a23ceC1bFc77C77",
"upgradeability": {
"proxyType": "Polygon proxy",
"admins": [
"eth:0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf"
],
"implementations": [
"eth:0xF0235dCa8fb0D3999685724dCBB9DD00c5d62DFa"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1598436550,
"transactionHash": "0x1457a23862a321795074e16b0e48a9a9d90bcdd480c35061a20b8ad977e55617",
"implementations": [
"eth:0xD4888faB8bd39A663B63161F5eE1Eae31a25B653"
]
},
{
"timestamp": 1605685682,
"transactionHash": "0xbacffdae190eb0d874ee203c3b9724675ba2ec9bd3e4718e3f10ddf6a3829750",
"implementations": [
"eth:0x0BfF34272aF650632236703a3D6d8e3c133421Cb"
]
},
{
"timestamp": 1611341408,
"transactionHash": "0x818eaf233a292714599882e5de3d254de791a15c5d5d2033d6f61e5ba1f76e18",
"implementations": [
"eth:0x4015ccad9218b109d3339B356392C6EE8438e5d0"
]
},
{
"timestamp": 1614166940,
"transactionHash": "0x8d16d130b5625edf8f807ce8c02303fa7a09154c4127e38b5c7e612658e67272",
"implementations": [
"eth:0xEcFdefe1D67f93d3C154B67FD9d4ba62aB820DeA"
]
},
{
"timestamp": 1619610767,
"transactionHash": "0x54f5399ff524598d12940be626bbfe5a407f288981f2ed7912f42a51da160516",
"implementations": [
"eth:0x296AC8fb39279BbcFF6eDc9FddF1d2f4aEa1631b"
]
},
{
"timestamp": 1628155648,
"transactionHash": "0x481ab61601843d6186c15a98f078ab273cf654b476e62a96d25fbe5ab3fcdf08",
"implementations": [
"eth:0x7CfA0f105a4922E89666D7D63689d9C9b1eA7a19"
]
},
{
"timestamp": 1632639667,
"transactionHash": "0x8e3021aef9032d2bf227d7b767d066ba56b38426551091a8367249b152e548d0",
"implementations": [
"eth:0x6866FE89723713282BF6aB2fb8f03b0ee1833ABE"
]
},
{
"timestamp": 1632639667,
"transactionHash": "0x8e3021aef9032d2bf227d7b767d066ba56b38426551091a8367249b152e548d0",
"implementations": [
"eth:0x6aBB753C1893194DE4a83c6e8B4EadFc105Fd5f5"
]
},
{
"timestamp": 1661067643,
"transactionHash": "0x537afb3b705a7458e31ea0b4ec7e317dbad36645460676ff6171fac0516093a0",
"implementations": [
"eth:0x37D26DC2890b35924b40574BAc10552794771997"
]
},
{
"timestamp": 1724602307,
"transactionHash": "0x0524bb8a888d645cfd326c307cf4503d6fa859add7f36433aac7410e1a8727d0",
"implementations": [
"eth:0x1633012a2cB27eFBC2944f2E43b9197Bc3964359"
]
},
{
"timestamp": 1724756543,
"transactionHash": "0xf81d8f7db4694015fc14426465cc2936dc03e3a07da3a879dcea009ef2cf384a",
"implementations": [
"eth:0x8F372f5404514cec63A3F88BAac772Cc620F2281"
]
},
{
"timestamp": 1730734727,
"transactionHash": "0xa6a8a4e53e07aaca3a49c554781538762a1457b47b82e3f4a0edd54b18676f7d",
"implementations": [
"eth:0x639f13D5f30B47c792b6851238c05D0b623C77DE"
]
},
{
"timestamp": 1756213871,
"transactionHash": "0xfd9678899c41baea6024682e80529ab4971f2ec9c3a36bd074d15e7a3a095718",
"implementations": [
"eth:0xF0235dCa8fb0D3999685724dCBB9DD00c5d62DFa"
]
}
],
"description": "Main configuration contract to manage tokens, token types, escrows (predicates) for given token types. It also serves as an entry point for deposits and withdrawals effectively acting as a token router.",
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0xA0c68C638235ee32657e8f720a23ceC1bFc77C77#code"
},
{
"name": "StakeManager",
"isVerified": true,
"address": "eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908",
"upgradeability": {
"proxyType": "Polygon proxy",
"admins": [
"eth:0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf"
],
"implementations": [
"eth:0x3AD88467E40399dc6Ae10427f8B0842348d9076c"
"eth:0x428D1067b33B2bCa826cF66344dbEcBd5AA6506e"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1594902721,
"transactionHash": "0x8ea380d0c2c5c3ae9758aa459f6420eeb02aa25f38a5e1c4c471574780119f31",
"implementations": [
"eth:0x9a6bC66Ce2E008D59654bc0053Ce2d01f09C8B90"
]
},
{
"timestamp": 1603799035,
"transactionHash": "0xa7c483e80f2b9cf86703aca7d2b6ee8251b10f7ecc271f954bb05d89abef0a1d",
"implementations": [
"eth:0xf58Ec2F599EC32f2aE104984F41C1fB1377ECEBa"
]
},
{
"timestamp": 1616775849,
"transactionHash": "0x8f97d868f67d22169634a7033183b2cdaef15be181748a4e9d5e5a822b94384d",
"implementations": [
"eth:0xB955EE20A7F1D6F9bD68805e6EefE2cBc5d8220D"
]
},
{
"timestamp": 1616778324,
"transactionHash": "0xaf367e1e4e24042e20ce96416275d4224cdc5d92a2c9b56a61ac812f4213c3ab",
"implementations": [
"eth:0xd8EeB76bf9FEc7Efe3772383d5f38fd02243E56C"
]
},
{
"timestamp": 1624021689,
"transactionHash": "0xa939d22dafe9a2c271fc4a1cee1dadd3a79f5694b4ab9cf5341a8de0bc7b8373",
"implementations": [
"eth:0xd6F5c46d4E1a02f9D145cEe41d2F8AF30D8d2d76"
]
},
{
"timestamp": 1643183231,
"transactionHash": "0xed78a9b4198f37563e5ba20f2596eb04400dca7ec921b8de3cfa014cead6629f",
"implementations": [
"eth:0x644A0A4a4a9892f57Af7dFF1Db23cE2A235A255e"
]
},
{
"timestamp": 1668529703,
"transactionHash": "0xa60b52f74a37a43795e7e04abb7de4059e5f32e54e80d197128d0b3de5cd46b9",
"implementations": [
"eth:0xbA9Ac3C9983a3e967f0f387c75cCbD38Ad484963"
]
},
{
"timestamp": 1725467495,
"transactionHash": "0x74d19c35b5b4e6be7946db761b9365e3feb2c1914ae281ac7f6943c4d36e4bd5",
"implementations": [
"eth:0x97a3500083348A147F419b8a65717909762c389f"
]
},
{
"timestamp": 1730734727,
"transactionHash": "0xa6a8a4e53e07aaca3a49c554781538762a1457b47b82e3f4a0edd54b18676f7d",
"implementations": [
"eth:0x3AD88467E40399dc6Ae10427f8B0842348d9076c"
]
},
{
"timestamp": 1791885479,
"transactionHash": "0x53ddccd09c36bde3691fc33282b54679019dad1f4f8aa9fdee0d44cd45b1ab65",
"implementations": [
"eth:0x428D1067b33B2bCa826cF66344dbEcBd5AA6506e"
]
}
],
"description": "Main configuration contract to manage stakers and their voting power and validate checkpoint signatures.",
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908#code"
},
{
"name": "StakingInfo",
"isVerified": true,
"address": "eth:0xa59C847Bd5aC0172Ff4FE912C5d29E5A71A7512B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contains logging and getter functions about staking on Polygon.",
"url": "https://etherscan.io/address/0xa59C847Bd5aC0172Ff4FE912C5d29E5A71A7512B#code"
},
{
"name": "ValidatorPass",
"isVerified": true,
"address": "eth:0x938529C189525e9a03c66C417D337BE9B5762bA4",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Gates entry into the validator set. Only approved validators can join.",
"url": "https://etherscan.io/address/0x938529C189525e9a03c66C417D337BE9B5762bA4#code"
},
{
"name": "Registry",
"isVerified": true,
"address": "eth:0x33a02E6cC863D393d6Bf231B697b82F6e499cA71",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Maintains the addresses of the contracts used in the system.",
"url": "https://etherscan.io/address/0x33a02E6cC863D393d6Bf231B697b82F6e499cA71#code"
},
{
"name": "DepositManager",
"isVerified": true,
"address": "eth:0x401F6c983eA34274ec46f84D70b31C151321188b",
"upgradeability": {
"proxyType": "EIP897 proxy",
"admins": [],
"implementations": [
"eth:0xb00aa68b87256E2F22058fB2Ba3246EEc54A44fc"
],
"immutable": false
},
"chain": "ethereum",
"description": "Contract to deposit and escrow ETH, ERC20 or ERC721 tokens. Currently only used for POL.",
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x401F6c983eA34274ec46f84D70b31C151321188b#code"
},
{
"name": "WithdrawManager",
"isVerified": true,
"address": "eth:0x2A88696e0fFA76bAA1338F2C74497cC013495922",
"upgradeability": {
"proxyType": "EIP897 proxy",
"admins": [],
"implementations": [
"eth:0x6F8a42cf6f3CE657B66A9d5849f1251dE7a35168"
],
"immutable": false
},
"chain": "ethereum",
"description": "Contract handling users' withdrawal finalization for tokens escrowed in DepositManager.",
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x2A88696e0fFA76bAA1338F2C74497cC013495922#code"
},
{
"name": "ERC20PredicateBurnOnly",
"isVerified": true,
"address": "eth:0x4EeA1780c06709D7FA0BCaA6D0f1aB29673586c0",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract used to initiate ERC20 token withdrawals. The function to handle Plasma proofs is empty, meaning exits cannot be challenged.",
"url": "https://etherscan.io/address/0x4EeA1780c06709D7FA0BCaA6D0f1aB29673586c0#code"
},
{
"name": "ERC721PredicateBurnOnly",
"isVerified": true,
"address": "eth:0x36C2503d53C6948331144b85D1e74a3B96731d1b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract used to initiate ERC721 token withdrawals. The function to handle Plasma proofs is empty, meaning exits cannot be challenged.",
"url": "https://etherscan.io/address/0x36C2503d53C6948331144b85D1e74a3B96731d1b#code"
},
{
"name": "EventsHub",
"isVerified": true,
"address": "eth:0x6dF5CB08d3f0193C768C8A01f42ac4424DC5086b",
"upgradeability": {
"proxyType": "Polygon proxy",
"admins": [
"eth:0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf"
],
"implementations": [
"eth:0x0672777617CAA1E778083a4f74eBC997262C9EdD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1616774484,
"transactionHash": "0xa059a7a9e6d3a970d4c560decf0a819ffb712d5b0042f65a4a1d7fa288bc2aea",
"implementations": [
"eth:0x762540dB57aBdB6d32E5B5b8856986C0418A3b82"
]
},
{
"timestamp": 1638425391,
"transactionHash": "0x56107de4b0cfb9f1e22a05f4f4e3b6b18331288256f68001c2a90f0c4a43ce5f",
"implementations": [
"eth:0x0672777617CAA1E778083a4f74eBC997262C9EdD"
]
}
],
"description": "Contains events used by other contracts in the system.",
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x6dF5CB08d3f0193C768C8A01f42ac4424DC5086b#code"
},
{
"name": "ExitNFT",
"isVerified": true,
"address": "eth:0xDF74156420Bd57ab387B195ed81EcA36F9fABAca",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "NFTs used to represent a withdrawal in the withdrawal PriorityQueue (Only used for tokens initially deposited via DepositManager).",
"url": "https://etherscan.io/address/0xDF74156420Bd57ab387B195ed81EcA36F9fABAca#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract enforcing delay on code upgrades. The current delay is 0s.",
"url": "https://etherscan.io/address/0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf#code"
}
]
},
"escrows": [
{
"address": "0x401F6c983eA34274ec46f84D70b31C151321188b",
"sinceTimestamp": 1590850640,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x401F6c983eA34274ec46f84D70b31C151321188b",
"upgradeability": {
"proxyType": "EIP897 proxy",
"admins": [],
"implementations": [
"eth:0xb00aa68b87256E2F22058fB2Ba3246EEc54A44fc"
],
"immutable": false
},
"chain": "ethereum",
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x401F6c983eA34274ec46f84D70b31C151321188b#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf",
"sinceTimestamp": 1598436664,
"tokens": "*",
"premintedTokens": [
"TRADE"
],
"contract": {
"isVerified": true,
"address": "eth:0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf",
"upgradeability": {
"proxyType": "Polygon proxy",
"admins": [
"eth:0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf"
],
"implementations": [
"eth:0x1F4c1E0afBeb5b5B86d7722549274434b29884F6"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1598436681,
"transactionHash": "0xd7497c770cd4812ca146b91a14ba1bac4198ff8dc7b9e5c3444906d297f275a1",
"implementations": [
"eth:0xC760DefB87E5194E62b282c2a76CBCe4766d7345"
]
},
{
"timestamp": 1605685682,
"transactionHash": "0xbacffdae190eb0d874ee203c3b9724675ba2ec9bd3e4718e3f10ddf6a3829750",
"implementations": [
"eth:0x608669d4914Eec1E20408Bc4c9eFFf27BB8cBdE5"
]
},
{
"timestamp": 1724602307,
"transactionHash": "0x0524bb8a888d645cfd326c307cf4503d6fa859add7f36433aac7410e1a8727d0",
"implementations": [
"eth:0xb774EBbeF817390483FEA5bEd0F0cB0EDEBE4065"
]
},
{
"timestamp": 1724756543,
"transactionHash": "0xf81d8f7db4694015fc14426465cc2936dc03e3a07da3a879dcea009ef2cf384a",
"implementations": [
"eth:0xB1fd4ae726c64A793588001EB465c46BD1BdF1cB"
]
},
{
"timestamp": 1756213871,
"transactionHash": "0xfd9678899c41baea6024682e80529ab4971f2ec9c3a36bd074d15e7a3a095718",
"implementations": [
"eth:0x1F4c1E0afBeb5b5B86d7722549274434b29884F6"
]
}
],
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x9923263fA127b3d1484cFD649df8f1831c2A74e4",
"sinceTimestamp": 1613100777,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x9923263fA127b3d1484cFD649df8f1831c2A74e4",
"upgradeability": {
"proxyType": "Polygon proxy",
"admins": [
"eth:0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf"
],
"implementations": [
"eth:0x94D40724d6aA4AB313065006E4bA8CA448dcDfae"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1613101382,
"transactionHash": "0x7e108d7b6c1a76278a8270dceaeff6ac65029a12cef33d12b6b83c848f5a8609",
"implementations": [
"eth:0xFdc26CDA2d2440d0E83CD1DeE8E8bE48405806DC"
]
},
{
"timestamp": 1632639667,
"transactionHash": "0x8e3021aef9032d2bf227d7b767d066ba56b38426551091a8367249b152e548d0",
"implementations": [
"eth:0x0f92D459B20D21F6bf9E02056EA9165d3f78bA62"
]
},
{
"timestamp": 1724602307,
"transactionHash": "0x0524bb8a888d645cfd326c307cf4503d6fa859add7f36433aac7410e1a8727d0",
"implementations": [
"eth:0xab00328234bC22430c78847094A68a6836574fFB"
]
},
{
"timestamp": 1724756543,
"transactionHash": "0xf81d8f7db4694015fc14426465cc2936dc03e3a07da3a879dcea009ef2cf384a",
"implementations": [
"eth:0x94D40724d6aA4AB313065006E4bA8CA448dcDfae"
]
}
],
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x9923263fA127b3d1484cFD649df8f1831c2A74e4#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30",
"sinceTimestamp": 1598437971,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30",
"upgradeability": {
"proxyType": "Polygon proxy",
"admins": [
"eth:0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf"
],
"implementations": [
"eth:0xeB185ED8f664D105903EF434E5becd214a8AC874"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1598438008,
"transactionHash": "0x9c64c32cd9c5ce9902b43fda233d5a9aa7a40659521c2a2e440831269b65758c",
"implementations": [
"eth:0xb6a508B418d49080Ce4AE4F140e585A0f95C1326"
]
},
{
"timestamp": 1605685682,
"transactionHash": "0xbacffdae190eb0d874ee203c3b9724675ba2ec9bd3e4718e3f10ddf6a3829750",
"implementations": [
"eth:0x499a865ac595e6167482d2bd5A224876baB85ab4"
]
},
{
"timestamp": 1632639667,
"transactionHash": "0x8e3021aef9032d2bf227d7b767d066ba56b38426551091a8367249b152e548d0",
"implementations": [
"eth:0x54006763154c764da4AF42a8c3cfc25Ea29765D5"
]
},
{
"timestamp": 1724602307,
"transactionHash": "0x0524bb8a888d645cfd326c307cf4503d6fa859add7f36433aac7410e1a8727d0",
"implementations": [
"eth:0x3129B90fB7bF58A0B36226f2e6547B89C0BbdE42"
]
},
{
"timestamp": 1724756543,
"transactionHash": "0xf81d8f7db4694015fc14426465cc2936dc03e3a07da3a879dcea009ef2cf384a",
"implementations": [
"eth:0xeB185ED8f664D105903EF434E5becd214a8AC874"
]
}
],
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x21ada4D8A799c4b0ADF100eB597a6f1321bCD3E4",
"sinceTimestamp": 1627373890,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x21ada4D8A799c4b0ADF100eB597a6f1321bCD3E4",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"upgradableBy": [
{
"name": "PolygonMultisig",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x21ada4D8A799c4b0ADF100eB597a6f1321bCD3E4#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0xa45b966996374E9e65ab991C6FE4Bfce3a56DDe8",
"sinceTimestamp": 1590840981,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xa45b966996374E9e65ab991C6FE4Bfce3a56DDe8",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"url": "https://etherscan.io/address/0xa45b966996374E9e65ab991C6FE4Bfce3a56DDe8#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
]
}
+1 -1
{
"baseTimestamp": 1790851314,
"baseTimestamp": 1792144380,
"contractsDiscoDriven": false,
"hasDiscoUi": true,
"isDiscoDriven": false,
"permissionsDiscoDriven": false
}
+14 -0
[
{
"id": "f07f7540",
"date": "Fri, 16 Oct 2026 10:10:31 GMT",
"timestamp": 1792144380,
"description": "StakeManager upgrade (PIP-91): joining the validator set now needs a single-use pass from the ValidatorPass module registered in the Registry. The pass binds the validator address, consensus key and delegation choice, and expires. Polygon governance (Polygon Multisig via Timelock and Governance, no delay) and the EOA eth:0x4580559314cbBd84B595a6EC52e4dF5cdD54EFc4 can issue and revoke passes. Entry stays capped at `validatorThreshold`. Validator auctions (`startAuction`, `confirmAuctionBid`, `dethroneAndStake`), `slash`, `unjail`, the SlashingManager path in `transferFunds` and the initializers are removed. Removing the ValidatorPass from the Registry makes entry below the cap permissionless again.\n- https://disco.l2beat.com/diff/eth:0x3AD88467E40399dc6Ae10427f8B0842348d9076c/eth:0x428D1067b33B2bCa826cF66344dbEcBd5AA6506e",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) [polygon-pos/StakeManager] {\n +++ description: Manages the Polygon PoS validator set.\n sourceHashes.1:\n- \"0xc1bf1e1ffffdb1c23aebc663048d79f349bed55ade9d09b835d75d291c6d4f61\"\n+ \"0x8d3d310e7641961f0013dcc2f82e93a2956413df438a44b49c3f084f0167a0d9\"\n values.$implementation:\n- \"eth:0x3AD88467E40399dc6Ae10427f8B0842348d9076c\"\n+ \"eth:0x428D1067b33B2bCa826cF66344dbEcBd5AA6506e\"\n values.$pastUpgrades.9:\n+ [\"2026-10-13T09:57:59.000Z\",\"0x53ddccd09c36bde3691fc33282b54679019dad1f4f8aa9fdee0d44cd45b1ab65\",[\"eth:0x428D1067b33B2bCa826cF66344dbEcBd5AA6506e\"]]\n values.$upgradeCount:\n- 9\n+ 10\n values.implementation:\n- \"eth:0x3AD88467E40399dc6Ae10427f8B0842348d9076c\"\n+ \"eth:0x428D1067b33B2bCa826cF66344dbEcBd5AA6506e\"\n+++ description: Validator entry gate read from the Registry on every new stake. While set, a new validator must redeem a pass from it. The zero address makes entry permissionless up to the validator cap.\n+++ severity: HIGH\n values.validatorPass:\n- \"eth:0x0000000000000000000000000000000000000000\"\n+ \"eth:0x938529C189525e9a03c66C417D337BE9B5762bA4\"\n implementationNames.eth:0x3AD88467E40399dc6Ae10427f8B0842348d9076c:\n- \"StakeManager\"\n implementationNames.eth:0x428D1067b33B2bCa826cF66344dbEcBd5AA6506e:\n+ \"StakeManager\"\n }\n```\n\n```diff\n contract Governance (eth:0x6e7a5820baD6cebA8Ef5ea69c0C92EbbDAc9CE48) [polygonposbridge/Governance] {\n +++ description: Simple contract that allows the owner to call an `update` function on arbitrary contracts.\n directlyReceivedPermissions:\n+ [{\"permission\":\"interact\",\"from\":\"eth:0x938529C189525e9a03c66C417D337BE9B5762bA4\",\"description\":\"grant and revoke the role that issues validator passes.\",\"role\":\".defaultAdminAC\"},{\"permission\":\"interact\",\"from\":\"eth:0x938529C189525e9a03c66C417D337BE9B5762bA4\",\"description\":\"issue and revoke the single-use passes that new Polygon PoS validators need to join the validator set.\",\"role\":\".passIssuerAC\"}]\n }\n```\n\n```diff\n contract Timelock (eth:0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf) [N/A] {\n +++ description: None\n receivedPermissions.2:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x938529C189525e9a03c66C417D337BE9B5762bA4\",\"description\":\"grant and revoke the role that issues validator passes.\",\"role\":\".defaultAdminAC\",\"via\":[{\"address\":\"eth:0x6e7a5820baD6cebA8Ef5ea69c0C92EbbDAc9CE48\"}]}\n receivedPermissions.3:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x938529C189525e9a03c66C417D337BE9B5762bA4\",\"description\":\"issue and revoke the single-use passes that new Polygon PoS validators need to join the validator set.\",\"role\":\".passIssuerAC\",\"via\":[{\"address\":\"eth:0x6e7a5820baD6cebA8Ef5ea69c0C92EbbDAc9CE48\"}]}\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorPass (eth:0x938529C189525e9a03c66C417D337BE9B5762bA4) [polygon-pos/ValidatorPass]\n +++ description: Validator entry gate registered in the Registry under `validatorPass`. The StakeManager only admits a new validator who redeems a single-use pass bound to their address, consensus key and delegation choice.\n```"
}
]
},
{
"id": "b4dad704",
"date": "Thu, 01 Oct 2026 11:10:42 GMT",
"timestamp": 1790851314,
"description": "StakeManager `CHECKPOINT_REWARD` raised by the PolygonMultisig (via Governance) from ~25,213 to 64,500 POL per checkpoint (tx 0x2f5cad77ffd2601301287b7644cea34fe0d5b5424e620791c2aff83db484ae2c). The active validator set shrank from 105 to 104.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) [polygon-pos/StakeManager] {\n +++ description: Manages the Polygon PoS validator set.\n values.CHECKPOINT_REWARD:\n- \"25212785388127853881278\"\n+ \"64500000000000000000000\"\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "8890dcf7",
"date": "Tue, 15 Sep 2026 11:46:43 GMT",
"timestamp": 1789472720,
"description": "MS signer change.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafe (eth:0x424bDE99FCfB68c5a1218fd3215caFfD031f19C4) [GnosisSafe] {\n +++ description: None\n values.$members.3:\n- \"eth:0x1319279d6d54dB0883F7bAF822191c7184Db0c3d\"\n+ \"eth:0x28260fD38F737e98F1599eCd385d4eB13C5A7A1f\"\n }\n```"
}
]
},
{
"id": "e22bba33",
"date": "Wed, 29 Jul 2026 11:43:14 GMT",
"timestamp": 1785325317,
"description": "Two members were removed from the Safe that holds the Polygon RootChainManager's token-mapping role. The threshold remains 4, leaving a 4-of-12 Safe instead of 4-of-14.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafe (eth:0x424bDE99FCfB68c5a1218fd3215caFfD031f19C4) [GnosisSafe] {\n +++ description: None\n values.$members.7:\n- \"eth:0xF045025C845E786E343Df30cC6f67ec6BB822b34\"\n values.$members.9:\n- \"eth:0xe76c5A6DA94Ed348a80869f26eBd0e5e082664b9\"\n values.multisigThreshold:\n- \"4 of 14 (29%)\"\n+ \"4 of 12 (33%)\"\n }\n```"
}
]
},
{
"id": "bdb91f5f",
"date": "Thu, 23 Jul 2026 14:08:13 GMT",
"timestamp": 1784815601,
"description": "Two signers were rotated in one Safe. The Polygon Labs Engineering/Security Multisig rotated one signer and removed another, while the validator set grew from 102 to 105 (max).",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafe (eth:0x424bDE99FCfB68c5a1218fd3215caFfD031f19C4) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x2100482bc290716DE46e38046EeD343cfb1aC740\"\n values.$members.1:\n+ \"eth:0x61Cb29AF9E503f0e2d88717f388931f1d10DE768\"\n values.$members.5:\n- \"eth:0xdEb97974dfCC73178672205A1eadDc2BDeAc1Bd4\"\n values.$members.8:\n- \"eth:0x6624307a4f672ec5C289fBA196952902BB518dc0\"\n }\n```\n\n```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) [polygon-pos/StakeManager] {\n +++ description: Manages the Polygon PoS validator set.\n values.currentValidatorSetSize:\n- 102\n+ 105\n }\n```\n\n```diff\n contract Polygon Labs Engineering/Security Multisig (eth:0x9d851f8b8751c5FbC09b9E74E6e68E9950949052) [GnosisSafe] {\n +++ description: None\n values.$members.1:\n- \"eth:0xe0e8e6bBDef7bbcf8dF1F5Ac0ab9906BFe991d8B\"\n+ \"eth:0xFB2a738AE435610354b132c4a4ee647558f663eb\"\n values.$members.6:\n- \"eth:0xED7cC82235A7757702475c8f77c7830c095FB5a2\"\n values.multisigThreshold:\n- \"2 of 8 (25%)\"\n+ \"2 of 7 (29%)\"\n }\n```"
}
]
},
{
"id": "2e80391b",
"date": "Tue, 21 Jul 2026 08:56:45 GMT",
"timestamp": 1784624105,
"description": "Add 4 signers to Multisig.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafe (eth:0x424bDE99FCfB68c5a1218fd3215caFfD031f19C4) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x9f02595fBFD199C4cBC02878fc9B2b2E07b0840C\"\n values.$members.1:\n+ \"eth:0x1319279d6d54dB0883F7bAF822191c7184Db0c3d\"\n values.$members.2:\n+ \"eth:0x6Ab87a62E250A5EB09a53Fca832B9Bda480c3890\"\n values.$members.3:\n+ \"eth:0x573D7a729cfcF20B81D70732d625Ae31549B8b91\"\n values.multisigThreshold:\n- \"4 of 10 (40%)\"\n+ \"4 of 14 (29%)\"\n }\n```"
}
]
},
{
"id": "dee707e6",
"date": "Fri, 17 Jul 2026 07:50:25 GMT",
"timestamp": 1784274549,
"description": "Vali added, signer rotated.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafe (eth:0x424bDE99FCfB68c5a1218fd3215caFfD031f19C4) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0x6c20ea7778EA9F3Afd74Ce4538bc4D9d61E6ABb1\"\n+ \"eth:0xFAc88BB6229F47A31A78F0Ba91E5a541Cb1866a3\"\n }\n```\n\n```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) [polygon-pos/StakeManager] {\n +++ description: Manages the Polygon PoS validator set.\n values.currentValidatorSetSize:\n- 101\n+ 102\n }\n```"
}
]
},
{
"id": "fd0bd985",
"date": "Thu, 25 Jun 2026 12:43:40 GMT",
"timestamp": 1782391177,
"description": "Activate [Zurich hardfork](https://github.com/0xPolygon/heimdall-v2/releases/tag/v0.9.0) with new heimdall id `heimdallv2-137`.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) [polygon-pos/StakeManager] {\n +++ description: Manages the Polygon PoS validator set.\n values.currentValidatorSetSize:\n- 102\n+ 101\n }\n```\n\n```diff\n contract RootChain (eth:0x86E4Dc95c7FBdBf52e33D563BbDB00823894C287) [polygonposbridge/RootChain] {\n +++ description: Contract storing chain checkpoints. Note that validity of these checkpoints is not verified, it is assumed to be valid if signed by 2/3 of the validators.\n+++ description: Fork identifier for the heimdall state bridge to bor (polygon execution). Changes with hard forks.\n values.heimdallId:\n- \"0x7e10229e6df5851dc336f813dde0cf6559cd517f9ff1980e2e57e192ba3a2329\"\n+ \"0xd982b078cdb2c4f7afb14b52c5127dd9206472cebd6e13a45f50c113cb9401af\"\n }\n```"
}
]
},
{
"id": "f34d92a7",
"date": "Tue, 16 Jun 2026 10:02:11 GMT",
"timestamp": 1781604054,
"description": "3 valis removed: vali set is open to join with min stake.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) [polygon-pos/StakeManager] {\n +++ description: Manages the Polygon PoS validator set.\n values.CHECKPOINT_REWARD:\n- \"29414916286149162861491\"\n+ \"25212785388127853881278\"\n values.currentValidatorSetSize:\n- 105\n+ 102\n }\n```"
}
]
},
{
"id": "56c00a99",
"date": "Tue, 02 Jun 2026 13:22:27 GMT",
"timestamp": 1780406469,
"description": "Vali added, cap hit (validator set closed).",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) [polygon-pos/StakeManager] {\n +++ description: Manages the Polygon PoS validator set.\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```\n\n```diff\n contract Polygon Labs Engineering/Security Multisig (eth:0x9d851f8b8751c5FbC09b9E74E6e68E9950949052) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2\"\n values.$members.1:\n+ \"eth:0xe0e8e6bBDef7bbcf8dF1F5Ac0ab9906BFe991d8B\"\n values.$members.2:\n+ \"eth:0x6Ab87a62E250A5EB09a53Fca832B9Bda480c3890\"\n values.multisigThreshold:\n- \"2 of 5 (40%)\"\n+ \"2 of 8 (25%)\"\n }\n```"
}
]
},
{
"id": "d5ab965f",
"date": "Thu, 28 May 2026 10:20:54 GMT",
"timestamp": 1779963546,
"description": "vali added (permissioned).",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) [N/A] {\n +++ description: None\n values.currentValidatorSetSize:\n- 103\n+ 104\n }\n```"
}
]
},
{
"id": "7a7f56c8",
"date": "Wed, 13 May 2026 13:45:05 GMT",
"timestamp": 1778679802,
"description": "adjust staking reward.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) [N/A] {\n +++ description: None\n values.CHECKPOINT_REWARD:\n- \"34695980000000000000000\"\n+ \"29414916286149162861491\"\n }\n```"
}
]
},
{
"id": "a1d67fda",
"date": "Tue, 05 May 2026 06:55:33 GMT",
"timestamp": 1777964012,
"description": "formatting and minimal refactor for the ERC20PredicateBurnOnly: https://disco.l2beat.com/diff/eth:0x626fb210bf50e201ED62cA2705c16DE2a53DC966/eth:0x4EeA1780c06709D7FA0BCaA6D0f1aB29673586c0 .",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Registry (eth:0x33a02E6cC863D393d6Bf231B697b82F6e499cA71) {\n +++ description: Maintains the addresses of the contracts used in the system, part of the old 'plasma bridge'.\n values.erc20Predicate:\n- \"eth:0x626fb210bf50e201ED62cA2705c16DE2a53DC966\"\n+ \"eth:0x4EeA1780c06709D7FA0BCaA6D0f1aB29673586c0\"\n }\n```\n\n```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 103\n }\n```\n\n```diff\n- Status: DELETED\n contract ERC20PredicateBurnOnly (eth:0x626fb210bf50e201ED62cA2705c16DE2a53DC966)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ERC20PredicateBurnOnly (eth:0x4EeA1780c06709D7FA0BCaA6D0f1aB29673586c0)\n +++ description: None\n```"
}
]
},
{
"id": "051d5ae3",
"date": "Wed, 22 Apr 2026 13:57:02 GMT",
"timestamp": 1776866125,
"description": "vali removed.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "4c972992",
"date": "Tue, 07 Apr 2026 11:33:16 GMT",
"timestamp": 1775561522,
"description": "New validator.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```"
}
]
},
{
"id": "9301cdc3",
"date": "Tue, 24 Mar 2026 12:02:24 GMT",
"timestamp": 1774353663,
"description": "vali removed.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "b5df338d",
"date": "Mon, 02 Mar 2026 14:27:55 GMT",
"timestamp": 1772461597,
"description": "ms changes, new validatorShare address.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StateSender (eth:0x28e4F3a7f651294B9564800b2D01f35189A5bFbE) {\n +++ description: Smart contract allowing whitelisted addresses to send messages to contracts on the child chain.\n values.REGISTRATIONS.9:\n+ \"eth:0x0356e303B375D5a11D9Eb7d57DBF544FeE6972C9\"\n }\n```\n\n```diff\n contract Registry (eth:0x33a02E6cC863D393d6Bf231B697b82F6e499cA71) {\n +++ description: Maintains the addresses of the contracts used in the system, part of the old 'plasma bridge'.\n values.getValidatorShareAddress:\n- \"eth:0xFB3a3A64E12FA787a6b709BF57834bdAD958d797\"\n+ \"eth:0xBe63B977ABBAA99fC0243e208340c530Dd4ee9E8\"\n }\n```\n\n```diff\n contract Katana Foundation Engineering/Security Multisig (eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n values.$members.1:\n- \"eth:0xEad77b01ea770839F7f576Cd1516Ff6A298d9dB2\"\n+ \"eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72\"\n values.$members.2:\n- \"eth:0xAb76AE6926371B82Af3652cCBABefBBA56270adC\"\n+ \"eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B\"\n values.$members.3:\n- \"eth:0xAb3506507449bF1880f3337825efd19ac89E235E\"\n+ \"eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC\"\n values.$members.4:\n- \"eth:0xcAB31b6A7b4d2eCd562A09e2BfA46535a18862f9\"\n+ \"eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5\"\n values.$threshold:\n- 3\n+ 2\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"2 of 5 (40%)\"\n }\n```"
}
]
},
{
"id": "b4b2fb9e",
"date": "Thu, 26 Feb 2026 06:55:31 GMT",
"timestamp": 1772088852,
"description": "vali added, rewards decrease by 6.5%.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.CHECKPOINT_REWARD:\n- \"37108000000000000000000\"\n+ \"34695980000000000000000\"\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```"
}
]
},
{
"id": "a8a91ae5",
"date": "Mon, 16 Feb 2026 14:58:30 GMT",
"timestamp": 1771253818,
"description": "vali removo.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "d86784f1",
"date": "Wed, 11 Feb 2026 13:19:17 GMT",
"timestamp": 1770815888,
"description": "vali added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```"
}
]
},
{
"id": "98ffff2c",
"date": "Wed, 28 Jan 2026 13:28:40 GMT",
"timestamp": 1769606705,
"description": "add mappings for tokens via pos- / and plasma bridge (used in polygon interop plugin).",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "af87123b",
"date": "Wed, 21 Jan 2026 12:56:10 GMT",
"timestamp": 1769000103,
"description": "ms change.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafe (eth:0x424bDE99FCfB68c5a1218fd3215caFfD031f19C4) {\n +++ description: None\n values.$members.4:\n- \"eth:0xfd5E854b73a239c9052d89C53D1313f5AfB860ac\"\n+ \"eth:0x6624307a4f672ec5C289fBA196952902BB518dc0\"\n }\n```"
}
]
},
{
"id": "b7493110",
"date": "Mon, 19 Jan 2026 10:41:47 GMT",
"timestamp": 1768817836,
"description": "Upgrade of the ValidatorShare contract (the contract that implements the delegation token for each validator):\n- validator share tokens (dPOL___) are now transferable",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Registry (eth:0x33a02E6cC863D393d6Bf231B697b82F6e499cA71) {\n +++ description: None\n values.getValidatorShareAddress:\n- \"eth:0x7e94d6cAbb20114b22a088d828772645f68CC67B\"\n+ \"eth:0xFB3a3A64E12FA787a6b709BF57834bdAD958d797\"\n }\n```\n\n```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.minDeposit:\n- \"1000000000000000000\"\n+ \"100000000000000000000000\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidatorShare (eth:0x7e94d6cAbb20114b22a088d828772645f68CC67B)\n +++ description: None\n```\n\n```diff\n contract PolygonMultisig (eth:0xFa7D2a996aC6350f4b56C043112Da0366a59b74c) {\n +++ description: None\n values.$members.7:\n- \"eth:0x06f2caFB5276B11bAA6679ABE49D5A5C0A911f5B\"\n+ \"eth:0xdA66Df3920091eF4B54782B9463587c314DAdD41\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorShare (eth:0xFB3a3A64E12FA787a6b709BF57834bdAD958d797)\n +++ description: None\n```"
}
]
},
{
"id": "6b0bdee7",
"date": "Wed, 14 Jan 2026 06:29:46 GMT",
"timestamp": 1768372119,
"description": "Two members added to mapper multisig, vali added.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafe (eth:0x424bDE99FCfB68c5a1218fd3215caFfD031f19C4) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x6c20ea7778EA9F3Afd74Ce4538bc4D9d61E6ABb1\"\n values.$members.1:\n+ \"eth:0xdEb97974dfCC73178672205A1eadDc2BDeAc1Bd4\"\n values.multisigThreshold:\n- \"4 of 8 (50%)\"\n+ \"4 of 10 (40%)\"\n }\n```\n\n```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```"
}
]
},
{
"id": "64d52d19",
"date": "Wed, 07 Jan 2026 14:42:22 GMT",
"timestamp": 1767796862,
"description": "vali added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 103\n+ 104\n }\n```"
}
]
},
{
"id": "1922ce8e",
"date": "Mon, 29 Dec 2025 11:33:00 GMT",
"timestamp": 1767007913,
"description": "Added validator.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 103\n }\n```"
}
]
},
{
"id": "843363c8",
"date": "Mon, 22 Dec 2025 13:17:11 GMT",
"timestamp": 1766409364,
"description": "+1 vali.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 103\n+ 104\n }\n```"
}
]
},
{
"id": "4c35613e",
"date": "Mon, 15 Dec 2025 07:39:04 GMT",
"timestamp": 1765784278,
"description": "sub ms change.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Katana Foundation Engineering/Security Multisig (eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a) {\n +++ description: None\n values.$members.2:\n- \"eth:0x54c401eD03D086fE13221E5422165f3b024265d9\"\n+ \"eth:0xAb76AE6926371B82Af3652cCBABefBBA56270adC\"\n }\n```"
}
]
},
{
"id": "ebc0fa99",
"date": "Tue, 09 Dec 2025 11:49:51 GMT",
"timestamp": 1765280918,
"description": "vali removed.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 103\n }\n```"
}
]
},
{
"id": "bc768be5",
"date": "Mon, 24 Nov 2025 12:30:58 GMT",
"timestamp": 1763987381,
"description": "vali added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```"
}
]
},
{
"id": "1ac77900",
"date": "Tue, 28 Oct 2025 09:18:05 GMT",
"timestamp": 1761643008,
"description": "vali rm.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "500bf5e7",
"date": "Tue, 21 Oct 2025 15:21:26 GMT",
"timestamp": 1761060009,
"description": "multisig member change.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafe (eth:0x424bDE99FCfB68c5a1218fd3215caFfD031f19C4) {\n +++ description: None\n values.$members.0:\n+ \"eth:0xF045025C845E786E343Df30cC6f67ec6BB822b34\"\n values.$members.6:\n- \"eth:0x4Fb38Ca1b96f8694229486636cabe029BdcdbBe7\"\n }\n```"
}
]
},
{
"id": "c99fb2ba",
"date": "Wed, 15 Oct 2025 13:58:15 GMT",
"timestamp": 1760536617,
"description": "vali added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```"
}
]
},
{
"id": "536fd115",
"date": "Thu, 25 Sep 2025 12:25:32 GMT",
"timestamp": 1758802148,
"description": "vali removed.\n\nconfig: added act permission in the governance contract.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "0b694746",
"date": "Mon, 22 Sep 2025 10:39:57 GMT",
"timestamp": 1758537508,
"description": "one vali added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```"
}
]
},
{
"id": "75ea1b79",
"date": "Thu, 04 Sep 2025 14:18:29 GMT",
"timestamp": 1756995439,
"description": "- [ERC20Predicate](https://disco.l2beat.com/diff/eth:0xB1fd4ae726c64A793588001EB465c46BD1BdF1cB/eth:0x1F4c1E0afBeb5b5B86d7722549274434b29884F6): added a `migrateTokens` function that can be called by managers. [Here](https://app.blocksec.com/explorer/tx/eth/0x3b4c28808336605520ed240fee7ef8e7dd2cfd0f0509082cd9c099fd60c6e0f1) an example of a migration of a token (USDT). By looking at the example, a \"migration\" in this context means moving out funds from the bridge through an arbitrary call to the token contract, with the goal of migrating canonical tokens to a an external or native version.\n- The ERC20Predicate manager is the \"RootChainManager\" contract, so its implementation has been updated as well to allow for token migration. Upgrade [here](https://disco.l2beat.com/diff/eth:0x639f13D5f30B47c792b6851238c05D0b623C77DE/eth:0xF0235dCa8fb0D3999685724dCBB9DD00c5d62DFa). A \"migration manager\" role has been added. Only USDT can be migrated as it is hardcoded and the `updateTokenMigrationStatus` function checks that the `rootToken` is USDT. The migrator is ofc the PolygonMultisig.",
"isHighSeverity": true,
"changeCount": 23,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ERC20Predicate (eth:0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf) {\n +++ description: None\n sourceHashes.1:\n- \"0xdb2c7a7688883aa90817563334c9613daee6ccad8d086ff273d6b484340444ab\"\n+ \"0xf159b16a5d3a5070602bdcce59b317b67354f3e0daade4bd67d39fc4b7e11476\"\n values.$implementation:\n- \"eth:0xB1fd4ae726c64A793588001EB465c46BD1BdF1cB\"\n+ \"eth:0x1F4c1E0afBeb5b5B86d7722549274434b29884F6\"\n values.$pastUpgrades.4:\n+ [\"2025-08-26T13:11:11.000Z\",\"0xfd9678899c41baea6024682e80529ab4971f2ec9c3a36bd074d15e7a3a095718\",[\"eth:0x1F4c1E0afBeb5b5B86d7722549274434b29884F6\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.implementation:\n- \"eth:0xB1fd4ae726c64A793588001EB465c46BD1BdF1cB\"\n+ \"eth:0x1F4c1E0afBeb5b5B86d7722549274434b29884F6\"\n implementationNames.eth:0xB1fd4ae726c64A793588001EB465c46BD1BdF1cB:\n- \"ERC20Predicate\"\n implementationNames.eth:0x1F4c1E0afBeb5b5B86d7722549274434b29884F6:\n+ \"ERC20Predicate\"\n }\n```\n\n```diff\n contract StakeManager (eth:0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```\n\n```diff\n contract RootChainManager (eth:0xA0c68C638235ee32657e8f720a23ceC1bFc77C77) {\n +++ description: None\n template:\n- \"polygonposbridge/RootChainManager\"\n+ \"polygonposbridge/RootChainManagerMigrator\"\n sourceHashes.1:\n- \"0x0f4d3951fb826a28e98a0923400b0173d459b26141d47b08227689849ce11141\"\n+ \"0x4d461641f48e1fc41d08d5f5672126575c15044e75679ad3abcd25a23d4575d1\"\n description:\n- \"Main configuration contract to manage tokens, token types, escrows (predicates) for given token types. It also serves as an entry point for deposits and withdrawals effectively acting as a token router.\"\n values.$implementation:\n- \"eth:0x639f13D5f30B47c792b6851238c05D0b623C77DE\"\n+ \"eth:0xF0235dCa8fb0D3999685724dCBB9DD00c5d62DFa\"\n values.$pastUpgrades.12:\n+ [\"2025-08-26T13:11:11.000Z\",\"0xfd9678899c41baea6024682e80529ab4971f2ec9c3a36bd074d15e7a3a095718\",[\"eth:0xF0235dCa8fb0D3999685724dCBB9DD00c5d62DFa\"]]\n values.$upgradeCount:\n- 12\n+ 13\n values.implementation:\n- \"eth:0x639f13D5f30B47c792b6851238c05D0b623C77DE\"\n+ \"eth:0xF0235dCa8fb0D3999685724dCBB9DD00c5d62DFa\"\n values.accessControl:\n+ {\"DEFAULT_ADMIN_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"]},\"MAPPER_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\",\"eth:0x424bDE99FCfB68c5a1218fd3215caFfD031f19C4\"]},\"MIGRATION_MANAGER_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"]}}\n values.MIGRATION_MANAGER_ROLE:\n+ \"0x739a51874800ca2ea551f6738888eda63da7b0ffed906ab18243498239604e96\"\n values.migrator:\n+ [\"eth:0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"]\n values.USDT_ADDRESS:\n+ \"eth:0xdAC17F958D2ee523a2206206994597C13D831ec7\"\n implementationNames.eth:0x639f13D5f30B47c792b6851238c05D0b623C77DE:\n- \"RootChainManager\"\n implementationNames.eth:0xF0235dCa8fb0D3999685724dCBB9DD00c5d62DFa:\n+ \"RootChainManager\"\n }\n```\n\n```diff\n contract PolygonMultisig (eth:0xFa7D2a996aC6350f4b56C043112Da0366a59b74c) {\n +++ description: None\n receivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xA0c68C638235ee32657e8f720a23ceC1bFc77C77\",\"description\":\"can migrate the canonically bridged USDT token to a native or external version.\",\"role\":\".migrator\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafe (eth:0x424bDE99FCfB68c5a1218fd3215caFfD031f19C4)\n +++ description: None\n```"
}
]
},
{
"id": "ca37bde6",
"date": "Mon, 25 Aug 2025 13:11:30 GMT",
"timestamp": 1756124354,
"description": "Upgraded to Safe v1.4.1",
"isHighSeverity": true,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract PolygonMultisig (0xFa7D2a996aC6350f4b56C043112Da0366a59b74c) {\n +++ description: None\n sourceHashes.1:\n- \"0xd42bbf9f7dcd3720a7fc6bdc6edfdfae8800a37d6dd4decfa0ef6ca4a2e88940\"\n+ \"0x7d388119a66f3eae147d748f86136f073d907d6b36f7e87e9363c4c7a2899a8a\"\n values.$implementation:\n- \"eth:0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552\"\n+ \"eth:0x41675C099F32341bf84BFc5382aF534df5C7461a\"\n values.VERSION:\n- \"1.3.0\"\n+ \"1.4.1\"\n implementationNames.eth:0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552:\n- \"GnosisSafe\"\n implementationNames.eth:0x41675C099F32341bf84BFc5382aF534df5C7461a:\n+ \"Safe\"\n }\n```"
}
]
},
{
"id": "eb491a9a",
"date": "Wed, 20 Aug 2025 11:58:05 GMT",
"timestamp": 1755691047,
"description": "Increased validator set to 105.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```"
}
]
},
{
"id": "0fa04ca7",
"date": "Tue, 12 Aug 2025 14:56:55 GMT",
"timestamp": 1755010596,
"description": "vali set +1.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 103\n+ 104\n }\n```"
}
]
},
{
"id": "242e37fa",
"date": "Wed, 06 Aug 2025 12:20:02 GMT",
"timestamp": 1754482796,
"description": "polygon multisig members rotated.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract PolygonMultisig (0xFa7D2a996aC6350f4b56C043112Da0366a59b74c) {\n +++ description: None\n values.$members.0:\n- \"eth:0xA7499Aa6464c078EeB940da2fc95C6aCd010c3Cc\"\n+ \"eth:0xAB4045C93e4eFFa9b325F706C9a690Ed00d08958\"\n values.$members.2:\n- \"eth:0x0D2600C228D9Bcc9757B64bBb232F86A912B7b03\"\n+ \"eth:0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a\"\n values.$members.3:\n- \"eth:0xD0FD9303fe99EdFAF5eD4A2c1657a347d8053C9a\"\n+ \"eth:0x342EBaca3ACC54d6f5Ee78073FeC4af07f42B94e\"\n values.$members.6:\n- \"eth:0x803B74766D8f79195D4DaeCF6f2aac31Dba78F25\"\n+ \"eth:0x10cb290Fc4a5473460572ECF67B4C0cf06Da99A3\"\n values.$members.7:\n- \"eth:0x80D63799b1e08a80f73FB7a83264b5c31600bF3a\"\n+ \"eth:0x06f2caFB5276B11bAA6679ABE49D5A5C0A911f5B\"\n values.$members.8:\n- \"eth:0x8Eab5aEfe2755E1bAD2052944Ea096AEbdA1d602\"\n+ \"eth:0x9d851f8b8751c5FbC09b9E74E6e68E9950949052\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Katana Foundation Engineering/Security Multisig (0x4e981bAe8E3cd06Ca911ffFE5504B2653ac1C38a)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Polygon Labs Engineering/Security Multisig (0x9d851f8b8751c5FbC09b9E74E6e68E9950949052)\n +++ description: None\n```"
}
]
},
{
"id": "2f1bf5e4",
"date": "Tue, 15 Jul 2025 10:46:55 GMT",
"timestamp": 1752576415,
"description": "validator checkpoint reward decreased, 1 vali added.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.CHECKPOINT_REWARD:\n- \"53870967741900000000000\"\n+ \"37108000000000000000000\"\n values.currentValidatorSetSize:\n- 102\n+ 103\n }\n```"
}
]
},
{
"id": "60d5cb46",
"date": "Mon, 14 Jul 2025 12:45:56 GMT",
"timestamp": 1752497156,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 34,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ERC1155Predicate (0x0B9020d4E32990D67559b1317c7BF0C15D6EB88f)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract CustomPredicate (0x10ebE6EC94922F1c213E4C363C3BB66D4A9E9d35)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ERC20EscrowPredicate (0x21ada4D8A799c4b0ADF100eB597a6f1321bCD3E4)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StateSender (0x28e4F3a7f651294B9564800b2D01f35189A5bFbE)\n +++ description: Smart contract allowing whitelisted addresses to send messages to contracts on the child chain.\n```\n\n```diff\n+ Status: CREATED\n contract WithdrawManager (0x2A88696e0fFA76bAA1338F2C74497cC013495922)\n +++ description: Contract handling users’ withdrawal finalization for tokens escrowed in DepositManager.\n```\n\n```diff\n+ Status: CREATED\n contract MintableERC1155Predicate (0x2d641867411650cd05dB93B59964536b1ED5b1B7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Registry (0x33a02E6cC863D393d6Bf231B697b82F6e499cA71)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ERC721PredicateBurnOnly (0x36C2503d53C6948331144b85D1e74a3B96731d1b)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DepositManager (0x401F6c983eA34274ec46f84D70b31C151321188b)\n +++ description: Contract to deposit and escrow ETH, ERC20 or ERC721 tokens.\n```\n\n```diff\n+ Status: CREATED\n contract ERC20Predicate (0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PolygonERC20MintBurnPredicate (0x436f5Ba0DCf22f991475fC7A6DE75DAAE2f40cB5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StakingNFT (0x47Cbe25BbDB40a774cC37E1dA92d10C2C7Ec897F)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract RootChainInitialImplementation (0x5A09cD4601b66bc107D377AB81E0dbb5dFABaA84)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ERC20PredicateBurnOnly (0x626fb210bf50e201ED62cA2705c16DE2a53DC966)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract EventsHub (0x6dF5CB08d3f0193C768C8A01f42ac4424DC5086b)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Governance (0x6e7a5820baD6cebA8Ef5ea69c0C92EbbDAc9CE48)\n +++ description: Simple contract that allows the owner to call an `update` function on arbitrary contracts.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorShare (0x7e94d6cAbb20114b22a088d828772645f68CC67B)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract EtherPredicate (0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract RootChain (0x86E4Dc95c7FBdBf52e33D563BbDB00823894C287)\n +++ description: Contract storing chain checkpoints. Note that validity of these checkpoints is not verified, it is assumed to be valid if signed by 2/3 of the validators.\n```\n\n```diff\n+ Status: CREATED\n contract MintableERC721Predicate (0x932532aA4c0174b8453839A6E44eE09Cc615F2b7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MintableERC20Predicate (0x9923263fA127b3d1484cFD649df8f1831c2A74e4)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract RootChainManager (0xA0c68C638235ee32657e8f720a23ceC1bFc77C77)\n +++ description: Main configuration contract to manage tokens, token types, escrows (predicates) for given token types. It also serves as an entry point for deposits and withdrawals effectively acting as a token router.\n```\n\n```diff\n+ Status: CREATED\n contract MaticWETH (0xa45b966996374E9e65ab991C6FE4Bfce3a56DDe8)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StakingInfo (0xa59C847Bd5aC0172Ff4FE912C5d29E5A71A7512B)\n +++ description: Contains logging and getter functions about staking.\n```\n\n```diff\n+ Status: CREATED\n contract MerklePatriciaProof (0xA6FA4fB5f76172d178d61B04b0ecd319C5d1C0aa)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorShareFactory (0xc4FA447A0e77Eff9717b09C057B40570813bb642)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Timelock (0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract (0xD9c7C4ED4B66858301D0cb28Cc88bf655Fe34861)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ChainExitERC1155Predicate (0xDB2382413bCb9c2F1B6b62B52238558266361D68)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ExitNFT (0xDF74156420Bd57ab387B195ed81EcA36F9fABAca)\n +++ description: NFTs used to represent a withdrawal in the withdrawal PriorityQueue (Only used for tokens initially deposited via DepositManager).\n```\n\n```diff\n+ Status: CREATED\n contract ERC721Predicate (0xE6F45376f64e1F568BD1404C155e5fFD2F80F7AD)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StakeManagerExtension (0xef49Ea6996073752b6840CDA34773FFA78F78166)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PolygonMultisig (0xFa7D2a996aC6350f4b56C043112Da0366a59b74c)\n +++ description: None\n```"
}
]
},
{
"id": "ffe0503b",
"date": "Mon, 07 Jul 2025 06:52:33 GMT",
"timestamp": 1751871153,
"description": "minus 1 vali.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 103\n+ 102\n }\n```"
}
]
},
{
"id": "cf4b55fd",
"date": "Mon, 23 Jun 2025 15:16:53 GMT",
"timestamp": 1750691813,
"description": "-1 vali.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 103\n }\n```"
}
]
},
{
"id": "fc59667f",
"date": "Wed, 18 Jun 2025 11:34:58 GMT",
"timestamp": 1750246498,
"description": "vali removed.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "a811b346",
"date": "Mon, 02 Jun 2025 08:08:59 GMT",
"timestamp": 1748851739,
"description": "+1 polygon pos validator.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```"
}
]
},
{
"id": "30fbeccb",
"date": "Fri, 30 May 2025 05:40:38 GMT",
"timestamp": 1748583638,
"description": "vali removed.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "44affad7",
"date": "Tue, 25 Mar 2025 11:04:26 GMT",
"timestamp": 1742900666,
"description": "One validator added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 103\n+ 105\n }\n```"
}
]
},
{
"id": "a86746dc",
"date": "Fri, 21 Mar 2025 10:21:12 GMT",
"timestamp": 1742552472,
"description": "validator removed.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 103\n }\n```"
}
]
},
{
"id": "387c47b4",
"date": "Mon, 10 Mar 2025 16:49:34 GMT",
"timestamp": 1741625374,
"description": "Validator set -1.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "19f3c42c",
"date": "Mon, 20 Jan 2025 11:46:57 GMT",
"timestamp": 1737373617,
"description": "Vali added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 104\n+ 105\n }\n```"
}
]
},
{
"id": "f26eb82a",
"date": "Mon, 23 Dec 2024 13:21:40 GMT",
"timestamp": 1734960100,
"description": "Slashing Manager reference removed (the contract was unverified and unused).",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract SlashingManager (0x01F645DcD6C796F6BC6C982159B32fAaaebdC96A)\n +++ description: None\n```\n\n```diff\n contract Registry (0x33a02E6cC863D393d6Bf231B697b82F6e499cA71) {\n +++ description: None\n values.getSlashingManagerAddress:\n- \"0x01F645DcD6C796F6BC6C982159B32fAaaebdC96A\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.currentValidatorSetSize:\n- 105\n+ 104\n }\n```"
}
]
},
{
"id": "09e7e434",
"date": "Tue, 05 Nov 2024 14:19:22 GMT",
"timestamp": 1730816362,
"description": "Minor patch upgrade. Removes `drainValidatorShares()` and `drain()` permissioned functions from the StakeManager, the rest are lib changes.",
"isHighSeverity": true,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract ValidatorShare (0x053FA9b934b83E1E0ffc7e98a41aAdc3640bB462)\n +++ description: None\n```\n\n```diff\n contract WithdrawManager (0x2A88696e0fFA76bAA1338F2C74497cC013495922) {\n +++ description: None\n sourceHashes.1:\n- \"0xee5a9e827bcc91e480a2d03b37006a7a028e7785a3c351f49251fd7e6521ad30\"\n+ \"0xda0990aeeb22bcf3c867d4f398d00bd7d2f15aef3add8c60800711185b34a09c\"\n values.$implementation:\n- \"0x31f9c8c786aD7cc70ad10cF136B36681d340b792\"\n+ \"0x6F8a42cf6f3CE657B66A9d5849f1251dE7a35168\"\n values.implementation:\n- \"0x31f9c8c786aD7cc70ad10cF136B36681d340b792\"\n+ \"0x6F8a42cf6f3CE657B66A9d5849f1251dE7a35168\"\n }\n```\n\n```diff\n contract Registry (0x33a02E6cC863D393d6Bf231B697b82F6e499cA71) {\n +++ description: None\n values.getValidatorShareAddress:\n- \"0x053FA9b934b83E1E0ffc7e98a41aAdc3640bB462\"\n+ \"0x7e94d6cAbb20114b22a088d828772645f68CC67B\"\n }\n```\n\n```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n sourceHashes.1:\n- \"0xa084de5be3dc11f2a48e65491394d0ee5c3c2aecf08f90d10c9d1cce6faba01d\"\n+ \"0x5b260eb8b498c90359fa555e522f2fdd615857ea55e37c785de7da84915bfa7d\"\n values.$implementation:\n- \"0x97a3500083348A147F419b8a65717909762c389f\"\n+ \"0x3AD88467E40399dc6Ae10427f8B0842348d9076c\"\n values.$pastUpgrades.8:\n+ [\"2024-11-04T15:38:47.000Z\",\"0xa6a8a4e53e07aaca3a49c554781538762a1457b47b82e3f4a0edd54b18676f7d\",[\"0x3AD88467E40399dc6Ae10427f8B0842348d9076c\"]]\n values.$upgradeCount:\n- 8\n+ 9\n values.implementation:\n- \"0x97a3500083348A147F419b8a65717909762c389f\"\n+ \"0x3AD88467E40399dc6Ae10427f8B0842348d9076c\"\n }\n```\n\n```diff\n contract RootChainManager (0xA0c68C638235ee32657e8f720a23ceC1bFc77C77) {\n +++ description: None\n sourceHashes.1:\n- \"0xdc4360c93969702ab43800fb0154ca71259a30c57fa03a1f9567c3a3937c4b3e\"\n+ \"0x0f4d3951fb826a28e98a0923400b0173d459b26141d47b08227689849ce11141\"\n values.$implementation:\n- \"0x8F372f5404514cec63A3F88BAac772Cc620F2281\"\n+ \"0x639f13D5f30B47c792b6851238c05D0b623C77DE\"\n values.$pastUpgrades.11:\n+ [\"2024-11-04T15:38:47.000Z\",\"0xa6a8a4e53e07aaca3a49c554781538762a1457b47b82e3f4a0edd54b18676f7d\",[\"0x639f13D5f30B47c792b6851238c05D0b623C77DE\"]]\n values.$upgradeCount:\n- 11\n+ 12\n values.implementation:\n- \"0x8F372f5404514cec63A3F88BAac772Cc620F2281\"\n+ \"0x639f13D5f30B47c792b6851238c05D0b623C77DE\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorShare (0x7e94d6cAbb20114b22a088d828772645f68CC67B)\n +++ description: None\n```"
}
]
},
{
"id": "487c4984",
"date": "Sat, 19 Oct 2024 06:33:29 GMT",
"timestamp": 1729319609,
"description": "CHECKPOINT_REWARD (the base from which PoS validator reward is calculated) decreased by 25%.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.CHECKPOINT_REWARD:\n- \"71795000000000000000000\"\n+ \"53870967741900000000000\"\n }\n```"
}
]
},
{
"id": "40284c6a",
"date": "Mon, 30 Sep 2024 09:42:21 GMT",
"timestamp": 1727689341,
"description": "1 Polygon validator unstaked (removed).",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakingNFT (0x47Cbe25BbDB40a774cC37E1dA92d10C2C7Ec897F) {\n +++ description: None\n values.totalSupply:\n- 127\n+ 126\n }\n```"
}
]
},
{
"id": "93fd05a4",
"date": "Tue, 10 Sep 2024 11:43:09 GMT",
"timestamp": 1725968589,
"description": "Merge polygonpos and -plasma discoveries into this one.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract WithdrawManager (0x2A88696e0fFA76bAA1338F2C74497cC013495922)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DepositManager (0x401F6c983eA34274ec46f84D70b31C151321188b)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract RootChainInitialImplementation (0x5A09cD4601b66bc107D377AB81E0dbb5dFABaA84)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ExitNFT (0xDF74156420Bd57ab387B195ed81EcA36F9fABAca)\n +++ description: None\n```"
}
]
},
{
"id": "ba800daf",
"date": "Thu, 05 Sep 2024 15:30:36 GMT",
"timestamp": 1725550236,
"description": "[PIP-42](https://github.com/maticnetwork/Polygon-Improvement-Proposals/blob/63c54e7cf534bed44e034fe32a05ff0fafe75a47/PIPs/PIP-42.md) is executed onchain. This upgrade adds POL as a staking token in a backwards-compatible way.\n\n### ValidatorShare.sol\n- POL compatibility via new functions like `buyVoucherPOL()` and `sellVoucher_newPOL()`\n- permit compatibility (POL supports permit)\n\n### StakeManager.sol\n- POL compatibility via new functions with -POL suffix\n- contract can convert POL to MATIC and vice versa within a call via the new migration contract\n- `slash()` now just always reverts",
"isHighSeverity": true,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Registry (0x33a02E6cC863D393d6Bf231B697b82F6e499cA71) {\n +++ description: None\n values.getValidatorShareAddress:\n- \"0xf98864DA30a5bd657B13e70A57f5718aBf7BAB31\"\n+ \"0x053FA9b934b83E1E0ffc7e98a41aAdc3640bB462\"\n }\n```\n\n```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.$implementation:\n- \"0xbA9Ac3C9983a3e967f0f387c75cCbD38Ad484963\"\n+ \"0x97a3500083348A147F419b8a65717909762c389f\"\n values.implementation:\n- \"0xbA9Ac3C9983a3e967f0f387c75cCbD38Ad484963\"\n+ \"0x97a3500083348A147F419b8a65717909762c389f\"\n values.token:\n- \"0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0\"\n+ \"0x455e53CBB86018Ac2B8092FdCd39d8444aFFC3F6\"\n values.migration:\n+ \"0x29e7DF7b6A1B2b07b731457f499E1696c60E2C4e\"\n values.tokenMatic:\n+ \"0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidatorShareImpl (0xf98864DA30a5bd657B13e70A57f5718aBf7BAB31)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorShare (0x053FA9b934b83E1E0ffc7e98a41aAdc3640bB462)\n +++ description: None\n```"
}
]
},
{
"id": "ccdf2cf7",
"date": "Tue, 03 Sep 2024 12:18:09 GMT",
"timestamp": 1725365889,
"description": "TimeLock (with zero minDelay) has been restored",
"isHighSeverity": false,
"changeCount": 44,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ERC1155Predicate (0x0B9020d4E32990D67559b1317c7BF0C15D6EB88f) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.$admin:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.proxyOwner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract MintableERC1155Predicate (0x2d641867411650cd05dB93B59964536b1ED5b1B7) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.$admin:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.proxyOwner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract ERC20Predicate (0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.$admin:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.proxyOwner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.$admin:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.owner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract EventsHub (0x6dF5CB08d3f0193C768C8A01f42ac4424DC5086b) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.$admin:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.owner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract Governance (0x6e7a5820baD6cebA8Ef5ea69c0C92EbbDAc9CE48) {\n +++ description: None\n values.owner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract EtherPredicate (0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.$admin:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.proxyOwner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract RootChain (0x86E4Dc95c7FBdBf52e33D563BbDB00823894C287) {\n +++ description: None\n values.owner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract MintableERC721Predicate (0x932532aA4c0174b8453839A6E44eE09Cc615F2b7) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.$admin:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.proxyOwner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract MintableERC20Predicate (0x9923263fA127b3d1484cFD649df8f1831c2A74e4) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.$admin:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.proxyOwner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract RootChainManager (0xA0c68C638235ee32657e8f720a23ceC1bFc77C77) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.$admin:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.proxyOwner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract ERC721Predicate (0xE6F45376f64e1F568BD1404C155e5fFD2F80F7AD) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.$admin:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n values.proxyOwner:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n+ \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n }\n```\n\n```diff\n contract PolygonMultisig (0xFa7D2a996aC6350f4b56C043112Da0366a59b74c) {\n +++ description: None\n receivedPermissions.10:\n- {\"permission\":\"upgrade\",\"target\":\"0xE6F45376f64e1F568BD1404C155e5fFD2F80F7AD\"}\n receivedPermissions.9:\n- {\"permission\":\"upgrade\",\"target\":\"0xDB2382413bCb9c2F1B6b62B52238558266361D68\"}\n receivedPermissions.8:\n- {\"permission\":\"upgrade\",\"target\":\"0xA0c68C638235ee32657e8f720a23ceC1bFc77C77\"}\n receivedPermissions.7:\n- {\"permission\":\"upgrade\",\"target\":\"0x9923263fA127b3d1484cFD649df8f1831c2A74e4\"}\n receivedPermissions.6:\n- {\"permission\":\"upgrade\",\"target\":\"0x932532aA4c0174b8453839A6E44eE09Cc615F2b7\"}\n receivedPermissions.5:\n- {\"permission\":\"upgrade\",\"target\":\"0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30\"}\n receivedPermissions.4:\n- {\"permission\":\"upgrade\",\"target\":\"0x6dF5CB08d3f0193C768C8A01f42ac4424DC5086b\"}\n receivedPermissions.3:\n- {\"permission\":\"upgrade\",\"target\":\"0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908\"}\n receivedPermissions.2:\n- {\"permission\":\"upgrade\",\"target\":\"0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf\"}\n receivedPermissions.1:\n- {\"permission\":\"upgrade\",\"target\":\"0x2d641867411650cd05dB93B59964536b1ED5b1B7\"}\n receivedPermissions.0.target:\n- \"0x0B9020d4E32990D67559b1317c7BF0C15D6EB88f\"\n+ \"0xDB2382413bCb9c2F1B6b62B52238558266361D68\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Timelock (0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf)\n +++ description: None\n```"
}
]
},
{
"id": "9bf33ba7",
"date": "Wed, 28 Aug 2024 16:41:41 GMT",
"timestamp": 1724863301,
"description": "Predicates changed as ABI for exits got a new parameter. Insignificant change wrt to risks",
"isHighSeverity": true,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ERC1155Predicate (0x0B9020d4E32990D67559b1317c7BF0C15D6EB88f) {\n +++ description: None\n values.$implementation:\n- \"0xb86357daD9c3567dD70862a5b49fFFaFb0F094Ac\"\n+ \"0xCFA65db73cB45D458d0a98006d3d558b5e1F021d\"\n values.implementation:\n- \"0xb86357daD9c3567dD70862a5b49fFFaFb0F094Ac\"\n+ \"0xCFA65db73cB45D458d0a98006d3d558b5e1F021d\"\n }\n```\n\n```diff\n contract MintableERC1155Predicate (0x2d641867411650cd05dB93B59964536b1ED5b1B7) {\n +++ description: None\n values.$implementation:\n- \"0x985Dbac75cf625dD6baB03Da784CF0D51B4bEcef\"\n+ \"0xFD47E7d657b07B071C3362bBCe908a70895EE747\"\n values.implementation:\n- \"0x985Dbac75cf625dD6baB03Da784CF0D51B4bEcef\"\n+ \"0xFD47E7d657b07B071C3362bBCe908a70895EE747\"\n }\n```\n\n```diff\n contract ERC20Predicate (0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf) {\n +++ description: None\n values.$implementation:\n- \"0xb774EBbeF817390483FEA5bEd0F0cB0EDEBE4065\"\n+ \"0xB1fd4ae726c64A793588001EB465c46BD1BdF1cB\"\n values.implementation:\n- \"0xb774EBbeF817390483FEA5bEd0F0cB0EDEBE4065\"\n+ \"0xB1fd4ae726c64A793588001EB465c46BD1BdF1cB\"\n }\n```\n\n```diff\n contract EtherPredicate (0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30) {\n +++ description: None\n values.$implementation:\n- \"0x3129B90fB7bF58A0B36226f2e6547B89C0BbdE42\"\n+ \"0xeB185ED8f664D105903EF434E5becd214a8AC874\"\n values.implementation:\n- \"0x3129B90fB7bF58A0B36226f2e6547B89C0BbdE42\"\n+ \"0xeB185ED8f664D105903EF434E5becd214a8AC874\"\n }\n```\n\n```diff\n contract MintableERC721Predicate (0x932532aA4c0174b8453839A6E44eE09Cc615F2b7) {\n +++ description: None\n values.$implementation:\n- \"0x34AF15A166def1d89D38a70120Ea33CD8cc10C45\"\n+ \"0xba31389292f7EdfC7b60B937b97014b4C354689b\"\n values.implementation:\n- \"0x34AF15A166def1d89D38a70120Ea33CD8cc10C45\"\n+ \"0xba31389292f7EdfC7b60B937b97014b4C354689b\"\n }\n```\n\n```diff\n contract MintableERC20Predicate (0x9923263fA127b3d1484cFD649df8f1831c2A74e4) {\n +++ description: None\n values.$implementation:\n- \"0xab00328234bC22430c78847094A68a6836574fFB\"\n+ \"0x94D40724d6aA4AB313065006E4bA8CA448dcDfae\"\n values.implementation:\n- \"0xab00328234bC22430c78847094A68a6836574fFB\"\n+ \"0x94D40724d6aA4AB313065006E4bA8CA448dcDfae\"\n }\n```\n\n```diff\n contract RootChainManager (0xA0c68C638235ee32657e8f720a23ceC1bFc77C77) {\n +++ description: None\n values.$implementation:\n- \"0x1633012a2cB27eFBC2944f2E43b9197Bc3964359\"\n+ \"0x8F372f5404514cec63A3F88BAac772Cc620F2281\"\n values.implementation:\n- \"0x1633012a2cB27eFBC2944f2E43b9197Bc3964359\"\n+ \"0x8F372f5404514cec63A3F88BAac772Cc620F2281\"\n }\n```\n\n```diff\n contract ERC721Predicate (0xE6F45376f64e1F568BD1404C155e5fFD2F80F7AD) {\n +++ description: None\n values.$implementation:\n- \"0x9F5B43C0d6d57a76E5B24CE05E11b70C3C7eA8Ec\"\n+ \"0x02Bc987f54B54bf18Ca6E20a13e57508ec561072\"\n values.implementation:\n- \"0x9F5B43C0d6d57a76E5B24CE05E11b70C3C7eA8Ec\"\n+ \"0x02Bc987f54B54bf18Ca6E20a13e57508ec561072\"\n }\n```"
}
]
},
{
"id": "b31f777d",
"date": "Mon, 26 Aug 2024 11:36:43 GMT",
"timestamp": 1724672203,
"description": "- Timlock has been removed - now Polygon MultiSig is a direct owner\n- ERC20PredicateBurnOnly and ERC1155Predicate contracts have been replaced\n by new implementation. We don't track these as escrows (they are burn-only)\n so ignored\n- WithdrawManager is only used by the Plasma bridge, so its implementation\n upgrade is ignored here",
"isHighSeverity": true,
"changeCount": 53,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ERC1155Predicate (0x0B9020d4E32990D67559b1317c7BF0C15D6EB88f) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.$implementation:\n- \"0x62D7e87677ac7e3bd02c198e3FABeFFdBc5eB2A3\"\n+ \"0xb86357daD9c3567dD70862a5b49fFFaFb0F094Ac\"\n values.implementation:\n- \"0x62D7e87677ac7e3bd02c198e3FABeFFdBc5eB2A3\"\n+ \"0xb86357daD9c3567dD70862a5b49fFFaFb0F094Ac\"\n values.proxyOwner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ERC20PredicateBurnOnly (0x158d5fa3Ef8e4dDA8a5367deCF76b94E7efFCe95)\n +++ description: None\n```\n\n```diff\n contract WithdrawManager (0x2A88696e0fFA76bAA1338F2C74497cC013495922) {\n +++ description: None\n values.$implementation:\n- \"0x4ef5123a30e4CFeC02B3E2F5Ce97F1328B29f7de\"\n+ \"0xA376680d32Cece9756D9f1087318400DA2fd83dF\"\n values.implementation:\n- \"0x4ef5123a30e4CFeC02B3E2F5Ce97F1328B29f7de\"\n+ \"0xA376680d32Cece9756D9f1087318400DA2fd83dF\"\n values.owner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n contract MintableERC1155Predicate (0x2d641867411650cd05dB93B59964536b1ED5b1B7) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.$implementation:\n- \"0xDb161A896Be50a020B636D6B60DA7c59817412a5\"\n+ \"0x985Dbac75cf625dD6baB03Da784CF0D51B4bEcef\"\n values.implementation:\n- \"0xDb161A896Be50a020B636D6B60DA7c59817412a5\"\n+ \"0x985Dbac75cf625dD6baB03Da784CF0D51B4bEcef\"\n values.proxyOwner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n contract Registry (0x33a02E6cC863D393d6Bf231B697b82F6e499cA71) {\n +++ description: None\n values.erc20Predicate:\n- \"0x158d5fa3Ef8e4dDA8a5367deCF76b94E7efFCe95\"\n+ \"0x626fb210bf50e201ED62cA2705c16DE2a53DC966\"\n values.erc721Predicate:\n- \"0x54150f44c785D412Ec262fe895Cc3B689c72F49B\"\n+ \"0x36C2503d53C6948331144b85D1e74a3B96731d1b\"\n }\n```\n\n```diff\n contract ERC20Predicate (0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.$implementation:\n- \"0x608669d4914Eec1E20408Bc4c9eFFf27BB8cBdE5\"\n+ \"0xb774EBbeF817390483FEA5bEd0F0cB0EDEBE4065\"\n values.implementation:\n- \"0x608669d4914Eec1E20408Bc4c9eFFf27BB8cBdE5\"\n+ \"0xb774EBbeF817390483FEA5bEd0F0cB0EDEBE4065\"\n values.proxyOwner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ERC721PredicateBurnOnly (0x54150f44c785D412Ec262fe895Cc3B689c72F49B)\n +++ description: None\n```\n\n```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.owner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n contract EventsHub (0x6dF5CB08d3f0193C768C8A01f42ac4424DC5086b) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.owner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n contract Governance (0x6e7a5820baD6cebA8Ef5ea69c0C92EbbDAc9CE48) {\n +++ description: None\n values.owner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n contract EtherPredicate (0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.$implementation:\n- \"0x54006763154c764da4AF42a8c3cfc25Ea29765D5\"\n+ \"0x3129B90fB7bF58A0B36226f2e6547B89C0BbdE42\"\n values.implementation:\n- \"0x54006763154c764da4AF42a8c3cfc25Ea29765D5\"\n+ \"0x3129B90fB7bF58A0B36226f2e6547B89C0BbdE42\"\n values.proxyOwner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n contract RootChain (0x86E4Dc95c7FBdBf52e33D563BbDB00823894C287) {\n +++ description: None\n values.owner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n contract MintableERC721Predicate (0x932532aA4c0174b8453839A6E44eE09Cc615F2b7) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.$implementation:\n- \"0x7FBd00c577cAA70318BCF1c6c11e23732823b387\"\n+ \"0x34AF15A166def1d89D38a70120Ea33CD8cc10C45\"\n values.implementation:\n- \"0x7FBd00c577cAA70318BCF1c6c11e23732823b387\"\n+ \"0x34AF15A166def1d89D38a70120Ea33CD8cc10C45\"\n values.proxyOwner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.TRANSFER_WITH_METADATA_EVENT_SIG:\n+ \"0xf94915c6d1fd521cee85359239227480c7e8776d7caf1fc3bacad5c269b66a14\"\n values.WITHDRAW_BATCH_EVENT_SIG:\n+ \"0xf871896b17e9cb7a64941c62c188a4f5c621b86800e3d15452ece01ce56073df\"\n }\n```\n\n```diff\n contract MintableERC20Predicate (0x9923263fA127b3d1484cFD649df8f1831c2A74e4) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.$implementation:\n- \"0x0f92D459B20D21F6bf9E02056EA9165d3f78bA62\"\n+ \"0xab00328234bC22430c78847094A68a6836574fFB\"\n values.implementation:\n- \"0x0f92D459B20D21F6bf9E02056EA9165d3f78bA62\"\n+ \"0xab00328234bC22430c78847094A68a6836574fFB\"\n values.proxyOwner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n contract RootChainManager (0xA0c68C638235ee32657e8f720a23ceC1bFc77C77) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.$implementation:\n- \"0x37D26DC2890b35924b40574BAc10552794771997\"\n+ \"0x1633012a2cB27eFBC2944f2E43b9197Bc3964359\"\n values.implementation:\n- \"0x37D26DC2890b35924b40574BAc10552794771997\"\n+ \"0x1633012a2cB27eFBC2944f2E43b9197Bc3964359\"\n values.proxyOwner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Timelock (0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf)\n +++ description: None\n```\n\n```diff\n contract ChainExitERC1155Predicate (0xDB2382413bCb9c2F1B6b62B52238558266361D68) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.proxyOwner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n contract ERC721Predicate (0xE6F45376f64e1F568BD1404C155e5fFD2F80F7AD) {\n +++ description: None\n values.$admin:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.$implementation:\n- \"0xd515C8fF03eC79e7d5B3410c036f738e7f396C90\"\n+ \"0x9F5B43C0d6d57a76E5B24CE05E11b70C3C7eA8Ec\"\n values.implementation:\n- \"0xd515C8fF03eC79e7d5B3410c036f738e7f396C90\"\n+ \"0x9F5B43C0d6d57a76E5B24CE05E11b70C3C7eA8Ec\"\n values.proxyOwner:\n- \"0xCaf0aa768A3AE1297DF20072419Db8Bb8b5C8cEf\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```\n\n```diff\n contract PolygonMultisig (0xFa7D2a996aC6350f4b56C043112Da0366a59b74c) {\n +++ description: None\n assignedPermissions:\n+ {\"upgrade\":[\"0x0B9020d4E32990D67559b1317c7BF0C15D6EB88f\",\"0x2d641867411650cd05dB93B59964536b1ED5b1B7\",\"0x40ec5B33f54e0E8A33A975908C5BA1c14e5BbbDf\",\"0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908\",\"0x6dF5CB08d3f0193C768C8A01f42ac4424DC5086b\",\"0x8484Ef722627bf18ca5Ae6BcF031c23E6e922B30\",\"0x932532aA4c0174b8453839A6E44eE09Cc615F2b7\",\"0x9923263fA127b3d1484cFD649df8f1831c2A74e4\",\"0xA0c68C638235ee32657e8f720a23ceC1bFc77C77\",\"0xDB2382413bCb9c2F1B6b62B52238558266361D68\",\"0xE6F45376f64e1F568BD1404C155e5fFD2F80F7AD\"]}\n }\n```\n\n```diff\n+ Status: CREATED\n contract ERC721PredicateBurnOnly (0x36C2503d53C6948331144b85D1e74a3B96731d1b)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ERC20PredicateBurnOnly (0x626fb210bf50e201ED62cA2705c16DE2a53DC966)\n +++ description: None\n```"
}
]
},
{
"id": "101b4eb0",
"date": "Wed, 07 Aug 2024 12:22:45 GMT",
"timestamp": 1723033365,
"description": "Provide description of changes. This section will be preserved.",
"isHighSeverity": false,
"changeCount": 25,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StakingNFT (0x47Cbe25BbDB40a774cC37E1dA92d10C2C7Ec897F) {\n +++ description: None\n values.totalSupply:\n- 126\n+ 127\n }\n```\n\n```diff\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908) {\n +++ description: None\n values.NFTCounter:\n- 174\n+ 175\n values.totalHeimdallFee:\n- \"10101939209428901681108\"\n+ \"10132939209428901681108\"\n }\n```\n\n```diff\n contract MintableERC20Predicate (0x9923263fA127b3d1484cFD649df8f1831c2A74e4) {\n +++ description: None\n values.accessControl.DEFAULT_ADMIN_ROLE.members.1:\n- \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.accessControl.DEFAULT_ADMIN_ROLE.members.0:\n- \"0x63ec5767F54F6943750A70eB6117EA2D9Ca77313\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n values.accessControl.MANAGER_ROLE.members.1:\n- \"0xA0c68C638235ee32657e8f720a23ceC1bFc77C77\"\n values.accessControl.MANAGER_ROLE.members.0:\n- \"0x63ec5767F54F6943750A70eB6117EA2D9Ca77313\"\n+ \"0xA0c68C638235ee32657e8f720a23ceC1bFc77C77\"\n }\n```\n\n```diff\n contract StakingInfo (0xa59C847Bd5aC0172Ff4FE912C5d29E5A71A7512B) {\n +++ description: None\n values.owner:\n- \"0xA2D9846c352cA61dCb20D6AaD40Cec1d1b228a78\"\n+ \"0xFa7D2a996aC6350f4b56C043112Da0366a59b74c\"\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract SlashingManager (0x01F645DcD6C796F6BC6C982159B32fAaaebdC96A)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ERC20PredicateBurnOnly (0x158d5fa3Ef8e4dDA8a5367deCF76b94E7efFCe95)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract WithdrawManager (0x2A88696e0fFA76bAA1338F2C74497cC013495922)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Registry (0x33a02E6cC863D393d6Bf231B697b82F6e499cA71)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StakingNFT (0x47Cbe25BbDB40a774cC37E1dA92d10C2C7Ec897F)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ERC721PredicateBurnOnly (0x54150f44c785D412Ec262fe895Cc3B689c72F49B)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StakeManager (0x5e3Ef299fDDf15eAa0432E6e66473ace8c13D908)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract EventsHub (0x6dF5CB08d3f0193C768C8A01f42ac4424DC5086b)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Governance (0x6e7a5820baD6cebA8Ef5ea69c0C92EbbDAc9CE48)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MaticToken (0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MaticWETH (0xa45b966996374E9e65ab991C6FE4Bfce3a56DDe8)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StakingInfo (0xa59C847Bd5aC0172Ff4FE912C5d29E5A71A7512B)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorShareFactory (0xc4FA447A0e77Eff9717b09C057B40570813bb642)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract (0xD9c7C4ED4B66858301D0cb28Cc88bf655Fe34861)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ExitNFT (0xDF74156420Bd57ab387B195ed81EcA36F9fABAca)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StakeManagerExtension (0xef49Ea6996073752b6840CDA34773FFA78F78166)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorShareImpl (0xf98864DA30a5bd657B13e70A57f5718aBf7BAB31)\n +++ description: None\n```"
}
]
},
{
"id": "79b51a88",
"date": "Wed, 26 Jun 2024 10:30:17 GMT",
"timestamp": 1719397817,
"description": "The implementation of the GnosisSafe is upgraded to version 1.3.0.",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract PolygonMultisig (0xFa7D2a996aC6350f4b56C043112Da0366a59b74c) {\n +++ description: None\n upgradeability.masterCopy:\n- \"0x34CfAC646f301356fAa8B21e94227e3583Fe3F5F\"\n+ \"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552\"\n implementations.0:\n- \"0x34CfAC646f301356fAa8B21e94227e3583Fe3F5F\"\n+ \"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552\"\n values.domainSeparator:\n- \"0x3bc292918071cc597c13d3994268d3c83097b8388d750481c8cbce67a284ed5c\"\n+ \"0x1fedebc30994a7dba640edeed88b9bdc774c9f02b3797c8a6d3a2f17399477f4\"\n values.getModules:\n- []\n values.NAME:\n- \"Gnosis Safe\"\n values.VERSION:\n- \"1.1.1\"\n+ \"1.3.0\"\n values.getChainId:\n+ 1\n }\n```"
}
]
}
]
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with AggchainECDSAMultisig\n * replace the aggchainSigners and the signature threshold (which sign the state transitions of this aggchain), switch to the default signers of the AgglayerGateway, upgrade the aggchain to a newer rollup type of the same aggchain type registered in the AgglayerManager, set the aggchain metadata manager and transfer the aggchainManager role \n * set the trusted sequencer address \n * sole address that can force batches \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * AggchainECDSAMultisig ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "Polygon zkEVM Multisig",
"name": "Polygon zkEVM Multisig",
"description": "A Multisig with 5/10 threshold. \n* Can upgrade **with no delay**\n * daiBridge \n * usdcBridge \n * wstETHBridge ",
"accounts": [
{
"address": "eth:0xf694C9e3a34f5Fa48b6f3a0Ff186C1c6c4FcE904",
"type": "Contract",
"isVerified": true,
"name": "0xf694…E904",
"url": "https://etherscan.io/address/0xf694C9e3a34f5Fa48b6f3a0Ff186C1c6c4FcE904"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x099198353446A9E3a20672eDC1Bd461E978842c3",
"type": "EOA",
"isVerified": true,
"name": "0x0991…42c3",
"url": "https://etherscan.io/address/0x099198353446A9E3a20672eDC1Bd461E978842c3"
},
{
"address": "eth:0xb771380f912E4b5F6beDdf81314C383c13F16ab5",
"type": "EOA",
"isVerified": true,
"name": "0xb771…6ab5",
"url": "https://etherscan.io/address/0xb771380f912E4b5F6beDdf81314C383c13F16ab5"
},
{
"address": "eth:0xD09971D8ed6C6a5e57581e90d593ee5B94e348D4",
"type": "EOA",
"isVerified": true,
"name": "0xD099…48D4",
"url": "https://etherscan.io/address/0xD09971D8ed6C6a5e57581e90d593ee5B94e348D4"
},
{
"address": "eth:0xc4591c41e01a7a654B5427f39Bbd1dEe5bD45D1D",
"type": "EOA",
"isVerified": true,
"name": "0xc459…5D1D",
"url": "https://etherscan.io/address/0xc4591c41e01a7a654B5427f39Bbd1dEe5bD45D1D"
},
{
"address": "eth:0xE6Ee0F8D81170160d50ed77b9C91E6219473d43a",
"type": "EOA",
"isVerified": true,
"name": "0xE6Ee…d43a",
"url": "https://etherscan.io/address/0xE6Ee0F8D81170160d50ed77b9C91E6219473d43a"
},
{
"address": "eth:0xd1B856ee12Bd00922cae8DD86ab068f8c0F95224",
"type": "EOA",
"isVerified": true,
"name": "0xd1B8…5224",
"url": "https://etherscan.io/address/0xd1B856ee12Bd00922cae8DD86ab068f8c0F95224"
},
{
"address": "eth:0xF53D1fB2EeD22Cf1E8f7E90Da7f1CAe88344065F",
"type": "EOA",
"isVerified": true,
"name": "0xF53D…065F",
"url": "https://etherscan.io/address/0xF53D1fB2EeD22Cf1E8f7E90Da7f1CAe88344065F"
},
{
"address": "eth:0xf56AE6520776934127AB68438d1b4652BCe07F8f",
"type": "EOA",
"isVerified": true,
"name": "0xf56A…7F8f",
"url": "https://etherscan.io/address/0xf56AE6520776934127AB68438d1b4652BCe07F8f"
},
{
"address": "eth:0x4DE44Aa0Ef9DB64DF3eB3465d35D73d0409d44ed",
"type": "EOA",
"isVerified": true,
"name": "0x4DE4…44ed",
"url": "https://etherscan.io/address/0x4DE44Aa0Ef9DB64DF3eB3465d35D73d0409d44ed"
},
{
"address": "eth:0x4E83124eD15b13265240B61EC9627797CCE1032E",
"type": "EOA",
"isVerified": true,
"name": "0x4E83…032E",
"url": "https://etherscan.io/address/0x4E83124eD15b13265240B61EC9627797CCE1032E"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xD6f0FEEaAB8EAc205b182D51AE05B588a132Be5A",
"type": "EOA",
"isVerified": true,
"name": "0xD6f0…Be5A",
"url": "https://etherscan.io/address/0xD6f0FEEaAB8EAc205b182D51AE05B588a132Be5A",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sign state transitions (replaces state validation for this aggchain) ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * AggchainECDSAMultisig ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xef5D7af5dbBeE845860E75cE8f8e8fE7F6e8dBF7",
"type": "EOA",
"isVerified": true,
"name": "0xef5D…dBF7",
"url": "https://etherscan.io/address/0xef5D7af5dbBeE845860E75cE8f8e8fE7F6e8dBF7",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * replace the aggchainSigners and the signature threshold (which sign the state transitions of this aggchain), switch to the default signers of the AgglayerGateway, upgrade the aggchain to a newer rollup type of the same aggchain type registered in the AgglayerManager, set the aggchain metadata manager and transfer the aggchainManager role \n * set the trusted sequencer address ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x121EA966b6AA6A361CD4c0b01cb39C6dc65e1b71",
"type": "EOA",
"isVerified": true,
"name": "0x121E…1b71",
"url": "https://etherscan.io/address/0x121EA966b6AA6A361CD4c0b01cb39C6dc65e1b71",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sole address that can force batches ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x47ed9538faA1522be7abD8a8BCAEc8d9C04Ed60D",
"type": "EOA",
"isVerified": true,
"name": "0x47ed…d60D",
"url": "https://etherscan.io/address/0x47ed9538faA1522be7abD8a8BCAEc8d9C04Ed60D",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sign state transitions (replaces state validation for this aggchain) ",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+26 -5
+11 -4
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "EmergencyUpgradeBoard",
"name": "EmergencyUpgradeBoard",
"accounts": [
{
"address": "eth:0xF73a7dCfa68E52030ec39E41a23DCA51F3aAa111",
"type": "Contract",
"isVerified": true,
"name": "0xF73a…a111",
"url": "https://etherscan.io/address/0xF73a7dCfa68E52030ec39E41a23DCA51F3aAa111"
}
],
"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 * ValidatorTimelock [via: ProtocolUpgradeHandler → ProxyAdmin]\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 * L1USDCBridge [via: ProtocolUpgradeHandler → ProxyAdmin]\n* Can interact with SophonTransactionFilterer\n * call requestL2Transaction() with any target/calldata (whitelisted superuser sender) [via: ProtocolUpgradeHandler]\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": "Avail Multisig 1",
"name": "Avail Multisig 1",
"description": "A Multisig with 4/7 threshold. \n* Can upgrade **with no delay**\n * Vector \n* Can upgrade **with 1d delay**\n * AvailBridgeV1 [via: TimelockController with 1d delay → ProxyAdmin]\n* Can interact with Vector\n * can freeze the Vector contract and update the list of authorized relayers \n* Can interact with AvailBridgeV1\n * manage the pauser role and all other access control configurations, set the address of the target contract for DA verification, manage fees **with 1d delay** [via: TimelockController with 1d delay]\n* Can interact with TimelockController\n * cancel queued transactions \n * execute transactions that are ready \n * manage all access control roles **with 1d delay or with no delay** [via: TimelockController with 1d delay - or - acting directly]\n * propose transactions ",
"accounts": [
{
"address": "eth:0x7F2f87B0Efc66Fea0b7c30C61654E53C37993666",
"type": "Contract",
"isVerified": true,
"name": "0x7F2f…3666",
"url": "https://etherscan.io/address/0x7F2f87B0Efc66Fea0b7c30C61654E53C37993666"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x70a4F624A4E62C539abf0002634377b646612b1C",
"type": "EOA",
"isVerified": true,
"name": "0x70a4…2b1C",
"url": "https://etherscan.io/address/0x70a4F624A4E62C539abf0002634377b646612b1C"
},
{
"address": "eth:0x340e77D5e114A9D4891d3a1EbC7419CC85Ca8E4A",
"type": "EOA",
"isVerified": true,
"name": "0x340e…8E4A",
"url": "https://etherscan.io/address/0x340e77D5e114A9D4891d3a1EbC7419CC85Ca8E4A"
},
{
"address": "eth:0xAD379D3275a18bd4BB741C3b291a3778D51c3304",
"type": "EOA",
"isVerified": true,
"name": "0xAD37…3304",
"url": "https://etherscan.io/address/0xAD379D3275a18bd4BB741C3b291a3778D51c3304"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x1fbABAbDcFE0b40a9B5D2aDB054fB74F8fE985f5",
"type": "EOA",
"isVerified": true,
"name": "0x1fbA…85f5",
"url": "https://etherscan.io/address/0x1fbABAbDcFE0b40a9B5D2aDB054fB74F8fE985f5"
},
{
"address": "eth:0xBe1D614F13662Aff0a2Ec1e76f9c82D332Ae78A2",
"type": "EOA",
"isVerified": true,
"name": "0xBe1D…78A2",
"url": "https://etherscan.io/address/0xBe1D614F13662Aff0a2Ec1e76f9c82D332Ae78A2"
},
{
"address": "eth:0x4983A5ebE79c0570aa368cE84f281A8aAc50cE4d",
"address": "eth:0x50d0667992467421f3B359C8138928C0157cB444",
"type": "EOA",
"isVerified": true,
"name": "0x4983…cE4d",
"url": "https://etherscan.io/address/0x4983A5ebE79c0570aa368cE84f281A8aAc50cE4d"
"name": "0x50d0…B444",
"url": "https://etherscan.io/address/0x50d0667992467421f3B359C8138928C0157cB444"
}
],
"discoveryDrivenData": true
},
{
"id": "Matter Labs Multisig",
"name": "Matter Labs Multisig",
"description": "A Multisig with 4/7 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 * set the pending admin of this contract and the ServerNotifier contract address (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:0xEE7d66B84175cc423900595d1807A0371D66dE46",
"type": "EOA",
"isVerified": true,
"name": "0xEE7d…dE46",
"url": "https://etherscan.io/address/0xEE7d66B84175cc423900595d1807A0371D66dE46"
},
{
"address": "eth:0x3F0009D00cc78979d00Eb635490F23E8d6aCc481",
"type": "EOA",
"isVerified": true,
"name": "0x3F00…c481",
"url": "https://etherscan.io/address/0x3F0009D00cc78979d00Eb635490F23E8d6aCc481"
},
{
"address": "eth:0xC9A814A4dFE108A4d2b0C01abb4c196Ed7FB3D83",
"type": "EOA",
"isVerified": true,
"name": "0xC9A8…3D83",
"url": "https://etherscan.io/address/0xC9A814A4dFE108A4d2b0C01abb4c196Ed7FB3D83"
},
{
"address": "eth:0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc",
"type": "EOA",
"isVerified": true,
"name": "0x3068…d2Bc",
"url": "https://etherscan.io/address/0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc"
},
{
"address": "eth:0xFAdb20191Ab38362C50f52909817B74214CA79AE",
"type": "EOA",
"isVerified": true,
"name": "0xFAdb…79AE",
"url": "https://etherscan.io/address/0xFAdb20191Ab38362C50f52909817B74214CA79AE"
},
{
"address": "eth:0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28",
"type": "EOA",
"isVerified": true,
"name": "0xAf0B…9B28",
"url": "https://etherscan.io/address/0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28"
},
{
"address": "eth:0x7408A268e5E6e8F08917c5b71015F4B9044970C7",
"type": "EOA",
"isVerified": true,
"name": "0x7408…70C7",
"url": "https://etherscan.io/address/0x7408A268e5E6e8F08917c5b71015F4B9044970C7"
}
],
"discoveryDrivenData": true
},
{
"id": "SecurityCouncil",
"name": "SecurityCouncil",
"description": "A Multisig with 6/8 threshold. \nCustom Multisig implementation that has a general threshold of 6 but also specific thresholds for upgrade approvals (4) 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:0x59195219d1176E42f8e607e9AC114926D47f9035",
"type": "Contract",
"isVerified": true,
"name": "0x5919…9035",
"url": "https://etherscan.io/address/0x59195219d1176E42f8e607e9AC114926D47f9035"
}
],
"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: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:0x69462a81ba94D64c404575f1899a464F123497A2",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x69462a81ba94D64c404575f1899a464F123497A2"
},
{
"address": "eth:0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0"
},
{
"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": "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": "SophonTransactionFilterer",
"name": "SophonTransactionFilterer",
"accounts": [
{
"address": "eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41",
"type": "Contract",
"isVerified": true,
"name": "0x006e…5e41",
"url": "https://etherscan.io/address/0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41"
}
],
"chain": "ethereum",
"description": "A contract implementing the ITransactionFilterer interface, allows only trxs from whitelisted superusers. The whitelist is defined in AccessControl roles.\n* 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": "ValidatorTimelock",
"name": "ValidatorTimelock",
"accounts": [
{
"address": "eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"type": "Contract",
"isVerified": true,
"name": "0x2e51…b776",
"url": "https://etherscan.io/address/0x2e5110cF18678Ec99818bFAa849B8C881744b776"
}
],
"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 at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\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": "SophonChainAdminMultisig",
"name": "SophonChainAdminMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with SophonTransactionFilterer\n * call requestL2Transaction() with any target/calldata (whitelisted superuser sender) [via: SophonZkEvmAdmin]\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: SophonZkEvmAdmin]",
"description": "A Multisig with 2/6 threshold. \n* Can interact with SophonTransactionFilterer\n * call requestL2Transaction() with any target/calldata (whitelisted superuser sender) [via: SophonZkEvmAdmin]\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: SophonZkEvmAdmin]",
"accounts": [
{
"address": "eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1",
"type": "Contract",
"isVerified": true,
"name": "0xe464…52d1",
"url": "https://etherscan.io/address/0xe4644b6d106A18062344c0A853666bc0B8f052d1"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x3b6036d410cA018661324766680674921a8b2d89",
"type": "EOA",
"isVerified": true,
"name": "0x3b60…2d89",
"url": "https://etherscan.io/address/0x3b6036d410cA018661324766680674921a8b2d89"
},
{
"address": "eth:0x891F19CdefBce82e2F39f34C2322526c01E7A845",
"type": "EOA",
"isVerified": true,
"name": "0x891F…A845",
"url": "https://etherscan.io/address/0x891F19CdefBce82e2F39f34C2322526c01E7A845"
},
{
"address": "eth:0x4BBBaCCbA75dbb482619722FFE68bBddC9CCc336",
"type": "EOA",
"isVerified": true,
"name": "0x4BBB…c336",
"url": "https://etherscan.io/address/0x4BBBaCCbA75dbb482619722FFE68bBddC9CCc336"
},
{
"address": "eth:0x1B5a420Dc78290b0F30ED12634Fa9b068A22F96c",
"type": "EOA",
"isVerified": true,
"name": "0x1B5a…F96c",
"url": "https://etherscan.io/address/0x1B5a420Dc78290b0F30ED12634Fa9b068A22F96c"
},
{
"address": "eth:0x02266d7404AF55F39605Ea1D2b6bfff6DF74157d",
"type": "EOA",
"isVerified": true,
"name": "0x0226…157d",
"url": "https://etherscan.io/address/0x02266d7404AF55F39605Ea1D2b6bfff6DF74157d"
},
{
"address": "eth:0x45Bd9b1B0525C81778A0E4AE1f58eFA9e88E53f8",
"type": "EOA",
"isVerified": true,
"name": "0x45Bd…53f8",
"url": "https://etherscan.io/address/0x45Bd9b1B0525C81778A0E4AE1f58eFA9e88E53f8"
}
],
"discoveryDrivenData": true
},
{
"id": "Avail Multisig 2",
"name": "Avail Multisig 2",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AvailBridgeV1\n * pause the bridge ",
"accounts": [
{
"address": "eth:0x1a5BA9447D02Ddaf7bcB5594Fc27dE2Daf588930",
"type": "Contract",
"isVerified": true,
"name": "0x1a5B…8930",
"url": "https://etherscan.io/address/0x1a5BA9447D02Ddaf7bcB5594Fc27dE2Daf588930"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xE458b870F2F59a49915591282f1Bb688901767AD",
"type": "EOA",
"isVerified": true,
"name": "0xE458…67AD",
"url": "https://etherscan.io/address/0xE458b870F2F59a49915591282f1Bb688901767AD"
},
{
"address": "eth:0x340e77D5e114A9D4891d3a1EbC7419CC85Ca8E4A",
"type": "EOA",
"isVerified": true,
"name": "0x340e…8E4A",
"url": "https://etherscan.io/address/0x340e77D5e114A9D4891d3a1EbC7419CC85Ca8E4A"
},
{
"address": "eth:0xAD379D3275a18bd4BB741C3b291a3778D51c3304",
"type": "EOA",
"isVerified": true,
"name": "0xAD37…3304",
"url": "https://etherscan.io/address/0xAD379D3275a18bd4BB741C3b291a3778D51c3304"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x1fbABAbDcFE0b40a9B5D2aDB054fB74F8fE985f5",
"type": "EOA",
"isVerified": true,
"name": "0x1fbA…85f5",
"url": "https://etherscan.io/address/0x1fbABAbDcFE0b40a9B5D2aDB054fB74F8fE985f5"
}
],
"discoveryDrivenData": true
},
{
"id": "ZK Foundation Multisig",
"name": "ZK Foundation Multisig",
"description": "A Multisig with 3/6 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:0x64FEca7976955a512aB9159f91E7dD1D55425293",
"type": "EOA",
"isVerified": true,
"name": "0x64FE…5293",
"url": "https://etherscan.io/address/0x64FEca7976955a512aB9159f91E7dD1D55425293"
},
{
"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": "SP1VerifierGatewayMultisig",
"name": "SP1VerifierGatewayMultisig",
"description": "A Multisig with 2/3 threshold. \n* Can interact with SP1VerifierGateway\n * affect the liveness and safety of the gateway - can transfer ownership, add and freeze verifier routes ",
"accounts": [
{
"address": "eth:0xCafEf00d348Adbd57c37d1B77e0619C6244C6878",
"type": "Contract",
"isVerified": true,
"name": "0xCafE…6878",
"url": "https://etherscan.io/address/0xCafEf00d348Adbd57c37d1B77e0619C6244C6878"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126",
"type": "EOA",
"isVerified": true,
"name": "0xBaB2…1126",
"url": "https://etherscan.io/address/0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x9395e83720bf2D8ac6435f9c520b48E289Cb8885",
"type": "EOA",
"isVerified": true,
"name": "0x9395…8885",
"url": "https://etherscan.io/address/0x9395e83720bf2D8ac6435f9c520b48E289Cb8885"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1-and-EOA-2",
"name": "EOA 1 and EOA 2",
"accounts": [
{
"address": "eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B",
"type": "EOA",
"isVerified": true,
"name": "0xa7Fc…A13B",
"url": "https://etherscan.io/address/0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B",
"displayName": "EOA 1"
},
{
"address": "eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3",
"type": "EOA",
"isVerified": true,
"name": "0xE2DD…AbF3",
"url": "https://etherscan.io/address/0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with ValidatorTimelock\n * Permissioned to call the functions to commit, prove, execute and revert L2 batches through the ValidatorTimelock in the main Diamond contract ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0xB1e2974E81922c1d5923dB4580292fB9954E9E05",
"type": "EOA",
"isVerified": true,
"name": "0xB1e2…9E05",
"url": "https://etherscan.io/address/0xB1e2974E81922c1d5923dB4580292fB9954E9E05",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with SophonZkEvmAdmin\n * set the conversion factor for gas token deposits ",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0x50B238788747B26c408681283D148659F9da7Cf9",
"type": "EOA",
"isVerified": true,
"name": "0x50B2…7Cf9",
"url": "https://etherscan.io/address/0x50B238788747B26c408681283D148659F9da7Cf9",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with SophonTransactionFilterer\n * call requestL2Transaction() with any target/calldata (whitelisted superuser sender) \n * manage the whitelist ",
"discoveryDrivenData": true
},
{
"id": "EOA-5-and-EOA-7",
"name": "EOA 5 and EOA 7",
"accounts": [
{
"address": "eth:0x5afeCA1153D94750e170e6021B95416A68c60f4E",
"type": "EOA",
"isVerified": true,
"name": "0x5afe…0f4E",
"url": "https://etherscan.io/address/0x5afeCA1153D94750e170e6021B95416A68c60f4E",
"displayName": "EOA 5"
},
{
"address": "eth:0xBaEb92889696217A3A6be2175E5a95dC4cFFC9f7",
"type": "EOA",
"isVerified": true,
"name": "0xBaEb…C9f7",
"url": "https://etherscan.io/address/0xBaEb92889696217A3A6be2175E5a95dC4cFFC9f7",
"displayName": "EOA 7"
}
],
"chain": "ethereum",
"description": "* Can interact with SophonTransactionFilterer\n * call requestL2Transaction() with any target/calldata (whitelisted superuser sender) ",
"discoveryDrivenData": true
},
{
"id": "EOA-6",
"name": "EOA 6",
"accounts": [
{
"address": "eth:0x7EBe0bf025ca5993551cE6CEe3f541B24FDF7c35",
"type": "EOA",
"isVerified": true,
"name": "0x7EBe…7c35",
"url": "https://etherscan.io/address/0x7EBe0bf025ca5993551cE6CEe3f541B24FDF7c35",
"displayName": "EOA 6"
}
],
"chain": "ethereum",
"description": "* Can interact with Vector\n * it is a ‘Relayer’ and can call commitHeaderRange() to commit block ranges to the Vector contract. Since adding and removing Relayers emits no events, there can be more relayers than are presented here ",
"discoveryDrivenData": true
}
]
},
"zksync2": {
"roles": [],
"actors": [
{
"id": "ZkProtocolGovernor",
"name": "ZkProtocolGovernor",
"accounts": [
{
"address": "zksync:0x76705327e682F2d96943280D99464Ab61219e34f",
"type": "Contract",
"isVerified": true,
"name": "0x7670…e34f",
"url": "https://explorer.zksync.io/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 ProtocolUpgradeHandler\n * start (queue) upgrades [via: ProtocolTimelockController]\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://explorer.zksync.io/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": "Guardians_l2Alias",
"name": "Guardians_l2Alias",
"accounts": [
{
"address": "zksync:0x711ea620AB29f41AbC6596a15981e14ce58C97c9",
"type": "EOA",
"isVerified": true,
"name": "0x711e…97c9",
"url": "https://explorer.zksync.io/address/0x711ea620AB29f41AbC6596a15981e14ce58C97c9",
"displayName": "Guardians_l2Alias"
}
],
"chain": "zksync2",
"description": "* Can interact with ZkTokenGovernor\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://explorer.zksync.io/address/0xcd2753Bd3829dfeC575AFC3816d4899CD103C62D",
"displayName": "ZKFoundationMultisig_l2Alias"
}
],
"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://explorer.zksync.io/address/0xF41EcA3047B37dc7d88849de4a4dc07937Ad6bc4",
"displayName": "ProtocolUpgradeHandler_l2Alias"
}
],
"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
}
]
}
}
+1 -1
{
"baseTimestamp": 1791896958,
"baseTimestamp": 1792144211,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "a83e6cd5",
"date": "Fri, 16 Oct 2026 10:36:23 GMT",
"timestamp": 1792144211,
"description": "SophonChainAdminMultisig (owner of the chain admin) added a signer and lowered the threshold: 3 of 5 became 2 of 6. Avail Multisig 1 swapped one signer.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Avail Multisig 1 (eth:0x7F2f87B0Efc66Fea0b7c30C61654E53C37993666) [GnosisSafe] {\n +++ description: None\n values.$members.6:\n- \"eth:0x4983A5ebE79c0570aa368cE84f281A8aAc50cE4d\"\n+ \"eth:0x50d0667992467421f3B359C8138928C0157cB444\"\n }\n```\n\n```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x3b6036d410cA018661324766680674921a8b2d89\"\n values.$threshold:\n- 3\n+ 2\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"2 of 6 (33%)\"\n }\n```"
}
]
},
{
"id": "f9f51fe7",
"date": "Thu, 08 Oct 2026 13:08:15 GMT",
"timestamp": 1791458527,
"description": "Vector contracts are now discovered here instead of referenced from the vector project, which was removed with the rest of the alt-DA projects.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Avail Multisig 2 (eth:0x1a5BA9447D02Ddaf7bcB5594Fc27dE2Daf588930) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (eth:0x36194271a00dBBBae314E83dA56d0FF75fDa367B) [global/ProxyAdmin]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockController (eth:0x45828180bbE489350D621d002968A0585406d487) [global/TimelockController]\n +++ description: A timelock with access control. The current minimum delay is 1d.\n```\n\n```diff\n+ Status: CREATED\n contract Avail Multisig 1 (eth:0x7F2f87B0Efc66Fea0b7c30C61654E53C37993666) [GnosisSafe]\n +++ description: None\n```"
}
]
},
{
"id": "524b0aad",
"date": "Fri, 02 Oct 2026 12:42:30 GMT",
"timestamp": 1790944832,
"description": "Executed this proposal: https://www.tally.xyz/gov/zksync/proposal/49883493212277767948924829453899549013679463473253620701602979414799679547598?govId=eip155%3A324%3A0x76705327e682F2d96943280D99464Ab61219e34f. Now each chain admin can increase the execution delay of its chain (`increaseChainExecutionDelay`), the owner can set it freely (`setChainExecutionDelay`). The effective delay for Sophon is tracked in `executionDelaySophon` (still 3h).\n\nAlso adds a new `UPGRADER_ROLE` that can call `upgradeChainFromVersion()` through the VTL (forwarded to the diamond). Currently nobody holds the role for Sophon yet (tracked in `upgraderVTL`).",
"isHighSeverity": true,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_v31] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\n template:\n- \"shared-zk-stack/ValidatorTimelock_post29\"\n+ \"shared-zk-stack/ValidatorTimelock_v31\"\n sourceHashes.1:\n- \"0x5afea1019ac418e639ce9df65b9653bf0ca88ed81fb0abe0447e87328e39f10c\"\n+ \"0x51d6000b0e4437a2b99d13d332658fffb3da867cd56b05cbcb4bf4f954ff12ff\"\n description:\n- \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\"\n+ \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\"\n values.$implementation:\n- \"eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8\"\n+ \"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"\n values.$pastUpgrades.1:\n+ [\"2026-10-01T12:28:47.000Z\",\"0xdc4278c8b23d99f974a206dcaa1c1e20272c49095fa31eac842210ae97b435a8\",[\"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"]]\n values.$upgradeCount:\n- 1\n+ 2\n+++ severity: HIGH\n values.executionDelaySophon:\n+ 10800\n+++ severity: HIGH\n values.executionDelaySophon_fmt:\n+ \"3h\"\n values.MAX_EXECUTION_DELAY:\n+ 2592000\n values.OPTIONAL_UPGRADER_ADMIN_ROLE:\n+ \"0xa1426e789273bde4307f3302768d8e4eb615f0f4dea304f29cccd58ff644d640\"\n values.UPGRADER_ROLE:\n+ \"0x189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3\"\n errors:\n- {\"executionDelaySophon\":\"Processing error occurred.\",\"executionDelaySophon_fmt\":\"Processing error occurred.\"}\n fieldMeta.executionDelay.description:\n+ \"Ecosystem-wide minimum execution delay (in seconds), set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n fieldMeta.executionDelay_fmt.description:\n+ \"Ecosystem-wide minimum execution delay, set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n implementationNames.eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8:\n- \"ValidatorTimelock\"\n implementationNames.eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35:\n+ \"ValidatorTimelock\"\n }\n```"
}
]
},
{
"id": "cfbda6a9",
"date": "Thu, 10 Sep 2026 12:08:25 GMT",
"timestamp": 1789042037,
"description": "Rotated 3 sophon admin ms members.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.2:\n- \"eth:0x3b6036d410cA018661324766680674921a8b2d89\"\n+ \"eth:0x1B5a420Dc78290b0F30ED12634Fa9b068A22F96c\"\n values.$members.3:\n- \"eth:0x14574dfC6B7aF658c5033BA95673864947956521\"\n+ \"eth:0x02266d7404AF55F39605Ea1D2b6bfff6DF74157d\"\n values.$members.4:\n- \"eth:0xbe6D418089AaFeD4f95e516F21b2F56027a2E263\"\n+ \"eth:0x45Bd9b1B0525C81778A0E4AE1f58eFA9e88E53f8\"\n }\n```"
}
]
},
{
"id": "6149ea5c",
"date": "Wed, 19 Aug 2026 10:53:27 GMT",
"timestamp": 1787136744,
"description": "Removed 1 member of sophon ms.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.2:\n- \"eth:0x2Ea9CcB15Ceb6c228786a3d4837B0bA3e9736D97\"\n values.multisigThreshold:\n- \"3 of 6 (50%)\"\n+ \"3 of 5 (60%)\"\n }\n```"
}
]
},
{
"id": "76237501",
"date": "Mon, 17 Aug 2026 11:30:50 GMT",
"timestamp": 1786966187,
"description": "SophonChainAdminMultisig upgraded the boojum verifiers to version v0.30.1 (registered on the ChainTypeManager before). The new verifiers are not yet reproduced.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) [shared-zk-stack/Diamond] {\n +++ 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 values.$pastUpgrades.12:\n+ [\"2026-08-16T16:02:23.000Z\",\"0x8425fcca675dd5870508e9d44ed69fd8a947103cf051816da2eeae3e985a0dad\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 12\n+ 13\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 128849018880\n+ 128849018881\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n+ \"eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierPlonk (eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierFflonk (eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraDualVerifier (eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9 or eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF depending on the supplied proof type.\n```"
}
]
},
{
"id": "9bef53cc",
"date": "Wed, 12 Aug 2026 09:57:36 GMT",
"timestamp": 1786528589,
"description": "Upgraded boojum verifier to v30.0, the same as the current zksync era verifier. It is not reproduced yet.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) [shared-zk-stack/Diamond] {\n +++ 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 values.$pastUpgrades.11:\n+ [\"2026-08-11T13:00:11.000Z\",\"0xeb2beafc685e0ee4854da37ea0f13053576e4a266f020562743c9b3060f9858b\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 11\n+ 12\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051589\n+ 128849018880\n values.getSemverProtocolVersion.1:\n- 29\n+ 30\n values.getSemverProtocolVersion.2:\n- 5\n+ 0\n values.getVerifier:\n- \"eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e\"\n+ \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x9f5C39a2790f38542065E7854b90407371923375 or eth:0xd22cA89e8991FCE568456914c616d303e3142395 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x9f5C39a2790f38542065E7854b90407371923375) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xd22cA89e8991FCE568456914c616d303e3142395) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```"
}
]
},
{
"id": "c53b5e0a",
"date": "Wed, 05 Aug 2026 10:30:10 GMT",
"timestamp": 1785925747,
"description": "Upgraded boojum verifiers to the latest version (the same as zksync Era, not yet reproduced).\n\nAlso rotated two ms members.",
"isHighSeverity": true,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) [shared-zk-stack/Diamond] {\n +++ 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 values.$pastUpgrades.10:\n+ [\"2026-08-04T14:53:47.000Z\",\"0x6c47ec4cd22ac63a14d8e2e8f6f931af61e7b734b54153e63cd7970b2c598d4e\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 10\n+ 11\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051588\n+ 124554051589\n values.getSemverProtocolVersion.2:\n- 4\n+ 5\n values.getVerifier:\n- \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n+ \"eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```\n\n```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0xF6877208302D9715A576D4Bff96f6576B5A1dFbA\"\n+ \"eth:0x891F19CdefBce82e2F39f34C2322526c01E7A845\"\n values.$members.5:\n- \"eth:0xd89b0f620E0C72BD82e0447dE07FB0A0Abe01F69\"\n+ \"eth:0xbe6D418089AaFeD4f95e516F21b2F56027a2E263\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x9f5C39a2790f38542065E7854b90407371923375 or eth:0xd22cA89e8991FCE568456914c616d303e3142395 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n EOA (eth:0x891F19CdefBce82e2F39f34C2322526c01E7A845)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0x9f5C39a2790f38542065E7854b90407371923375) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xd22cA89e8991FCE568456914c616d303e3142395) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "2e7b9902",
"date": "Tue, 30 Jun 2026 10:28:58 GMT",
"timestamp": 1782815274,
"description": "Rotated two validators.",
"isHighSeverity": false,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_post29] {\n +++ 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 values.validatorsVTL.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTL.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n }\n```\n\n```diff\n contract SophonZkEvmAdmin (eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) [shared-zk-stack/ChainAdmin] {\n +++ description: A governance proxy that lets eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1 act through it.\n values.tokenMultiplierSetter:\n- \"eth:0xe14828E4405239dD331F194F1B7883eeD73bCBF3\"\n+ \"eth:0xB1e2974E81922c1d5923dB4580292fB9954E9E05\"\n }\n```"
}
]
},
{
"id": "9625dc34",
"date": "Fri, 26 Jun 2026 09:48:20 GMT",
"timestamp": 1782464947,
"description": "User deposits into sophon are paused: only authorized superuser can pass transaction filterer now: https://disco.l2beat.com/diff/eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063/eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41.\n\nSophon chain is being sunset: https://x.com/sophon/status/2070192257295335800.",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) [shared-zk-stack/Diamond] {\n +++ 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+++ description: This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\n+++ severity: HIGH\n values.getTransactionFilterer:\n- \"eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063\"\n+ \"eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41\"\n }\n```\n\n```diff\n EOA (eth:0x50B238788747B26c408681283D148659F9da7Cf9) {\n +++ description: None\n receivedPermissions.0.role:\n- \".whitelistedSendersAC\"\n+ \".superuserAC\"\n receivedPermissions.0.from:\n- \"eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063\"\n+ \"eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41\"\n receivedPermissions.1.from:\n- \"eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063\"\n+ \"eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41\"\n }\n```\n\n```diff\n- Status: DELETED\n contract SophonTransactionFilterer (eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063) [shared-zk-stack/TransactionFilterer]\n +++ description: A contract implementing the ITransactionFilterer interface, able to whitelist transactions based on sender- OR contractL2 (target) addresses. The whitelist is defined in AccessControl roles.\n```\n\n```diff\n contract SophonZkEvmAdmin (eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) [shared-zk-stack/ChainAdmin] {\n +++ description: A governance proxy that lets eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1 act through it.\n directlyReceivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41\",\"description\":\"call requestL2Transaction() with any target/calldata (whitelisted superuser sender).\",\"role\":\".superuserAC\"}\n }\n```\n\n```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n receivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41\",\"description\":\"call requestL2Transaction() with any target/calldata (whitelisted superuser sender).\",\"role\":\".superuserAC\",\"via\":[{\"address\":\"eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3\"}]}\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063\",\"description\":\"manage the whitelist.\",\"role\":\".defaultAdminAC\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract SophonTransactionFilterer (eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41) [sophon/SophonTransactionFilterer]\n +++ description: A contract implementing the ITransactionFilterer interface, allows only trxs from whitelisted superusers. The whitelist is defined in AccessControl roles.\n```"
}
]
},
{
"id": "26e42359",
"date": "Tue, 16 Jun 2026 09:44:37 GMT",
"timestamp": 1781602990,
"description": "Multisig member switched.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0xF6877208302D9715A576D4Bff96f6576B5A1dFbA\"\n values.$members.3:\n- \"eth:0x20719Abd2E63518e68D30a295388cAd6B542dCEf\"\n }\n```"
}
]
},
{
"id": "5f784348",
"date": "Mon, 08 Jun 2026 10:14:06 GMT",
"timestamp": 1780913579,
"description": "Removed one ms member for admin ms, rotated two more and decreased the threshold.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0x11BB5F79750de2Cc71e80cB2C59cF0a60EFFa95d\"\n+ \"eth:0x4BBBaCCbA75dbb482619722FFE68bBddC9CCc336\"\n values.$members.1:\n- \"eth:0x0BA5557075B4E30bA409B01797c9c78b3Ce192bF\"\n+ \"eth:0x2Ea9CcB15Ceb6c228786a3d4837B0bA3e9736D97\"\n values.$members.5:\n- \"eth:0x7f413262Cb811B034d077d9184b5Efda6943f2c3\"\n values.$threshold:\n- 4\n+ 3\n values.multisigThreshold:\n- \"4 of 7 (57%)\"\n+ \"3 of 6 (50%)\"\n }\n```"
}
]
},
{
"id": "5d5e374b",
"date": "Mon, 16 Feb 2026 14:24:27 GMT",
"timestamp": 1771251793,
"description": "Upgrade to v29.4 (this verfier upgrade version was introduced in an [emergency upgrade](https://etherscan.io/tx/0xef1d02776ae4a2a590278883f7347c4a863fcbe7a0b9ce96bc766084aab5dee9)).",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ 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 values.$pastUpgrades.9:\n+ [\"2026-02-13T19:31:11.000Z\",\"0x13067d49b849a7460f1f8a587edaee878b49dc7b2278ce8b16e223ca042ddbb9\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 9\n+ 10\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051587\n+ 124554051588\n values.getSemverProtocolVersion.2:\n- 3\n+ 4\n values.getVerifier:\n- \"eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B\"\n+ \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d or eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract SophonZkEvmAdmin (eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: A governance proxy that lets eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.7:\n+ {\"_protocolVersion\":124554051588,\"_upgradeTimestamp\":0}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```"
}
]
},
{
"id": "0c1fc054",
"date": "Wed, 28 Jan 2026 11:04:18 GMT",
"timestamp": 1769598194,
"description": "Upgraded boojum verifier to the latest version.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ 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 values.$pastUpgrades.8:\n+ [\"2026-01-27T18:02:59.000Z\",\"0x02b9e48f0f8550fe61d750085088df57ec084a55468a6b259bc600b2d9f9a8de\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 8\n+ 9\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051586\n+ 124554051587\n values.getSemverProtocolVersion.2:\n- 2\n+ 3\n values.getVerifier:\n- \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n+ \"eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract SophonZkEvmAdmin (eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: A governance proxy that lets eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.6:\n+ {\"_protocolVersion\":124554051587,\"_upgradeTimestamp\":0}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d or eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "91a6cdb2",
"date": "Mon, 19 Jan 2026 11:48:08 GMT",
"timestamp": 1768823225,
"description": "Removed one multisig member.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) {\n +++ description: None\n values.$members.5:\n- \"eth:0x90E10C37d8d9e854e7775B0069728642A1F88610\"\n values.multisigThreshold:\n- \"4 of 8 (50%)\"\n+ \"4 of 7 (57%)\"\n }\n```"
}
]
},
{
"id": "5ebcb0e5",
"date": "Tue, 28 Oct 2025 09:11:22 GMT",
"timestamp": 1761642202,
"description": "v29 upgrade.",
"isHighSeverity": true,
"changeCount": 48,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ 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 sourceHashes.1:\n- \"0xbc2380479529743c27e6ab96cdf08210319fadcbca0856cf50c6b1b54bf8437f\"\n+ \"0xc7513302e4e09efc907df5e645d9f8037b1d02409f9a9089f61061c8951ef1ff\"\n values.$implementation.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.$implementation.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.$implementation.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.$implementation.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.$pastUpgrades.7:\n+ [\"2025-10-28T00:52:35.000Z\",\"0x1dd8584ad0e2a106271e682fbec33c6066933fbf4c243f46eba13707e1ed729f\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 7\n+ 8\n values.facetAddresses.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.facetAddresses.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.facetAddresses.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.facetAddresses.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.facets.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"getRollupDAManager()\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2MessageInclusionShared(uint256,uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusionShared(uint256,uint256,uint256,bytes32,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusionShared(uint256,uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\"]\n values.facets.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ [\"precommitSharedBridge(address,uint256,bytes)\",\"commitBatchesSharedBridge(address,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(address,uint256,uint256,bytes)\",\"revertBatchesSharedBridge(address,uint256)\",\"proveBatchesSharedBridge(address,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n+ \"0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n+ \"0x010005f73e7c299ed73db937843643bdc276cbc2cc8596287e1e0cf3afc60252\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+ \"0x01000d8bae37b82f311186426184866498b357f41d7a02ced11f3e3fbfbacd63\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084289\n+ 124554051586\n values.getSemverProtocolVersion.1:\n- 28\n+ 29\n values.getSemverProtocolVersion.2:\n- 1\n+ 2\n values.getVerifier:\n- \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n+ \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n values.validators.0:\n- \"eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n values.validators.1:\n- \"eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\"\n values.getRollupDAManager:\n+ \"eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45\"\n implementationNames.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- \"AdminFacet\"\n implementationNames.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- \"GettersFacet\"\n implementationNames.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- \"MailboxFacet\"\n implementationNames.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- \"ExecutorFacet\"\n implementationNames.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ \"AdminFacet\"\n implementationNames.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ \"GettersFacet\"\n implementationNames.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ \"MailboxFacet\"\n implementationNames.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ 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```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ 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```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```\n\n```diff\n contract SophonZkEvmAdmin (eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: A governance proxy that lets eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.5:\n+ {\"_protocolVersion\":124554051586,\"_upgradeTimestamp\":1761224400}\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n reference RollupDAManager (eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45)\n +++ description: None\n```"
}
]
},
{
"id": "587e74af",
"date": "Wed, 03 Sep 2025 07:56:33 GMT",
"timestamp": 1756886128,
"description": "Added new multisig member.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x11BB5F79750de2Cc71e80cB2C59cF0a60EFFa95d\"\n values.multisigThreshold:\n- \"4 of 7 (57%)\"\n+ \"4 of 8 (50%)\"\n }\n```"
}
]
},
{
"id": "cac5e587",
"date": "Thu, 14 Aug 2025 09:00:38 GMT",
"timestamp": 1755162034,
"description": "Standard zkstack v28.1 upgrade.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ 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 values.$pastUpgrades.6:\n+ [\"2025-08-12T17:04:59.000Z\",\"0x97141968736d3d95e4cbf3c10293b7bd56f43ad6d4e3bed854e0025ed2d2d7e4\",[\"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 6\n+ 7\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084288\n+ 120259084289\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n+ \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.4:\n+ {\"_protocolVersion\":120259084289,\"_upgradeTimestamp\":1754911800}\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```"
}
]
},
{
"id": "f15edb84",
"date": "Mon, 14 Jul 2025 12:47:17 GMT",
"timestamp": 1752497237,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 11,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock2 (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract AvailL1DAValidator (0x8f50d93B9955B285f787043B30B5F51D09bE0120)\n +++ description: Contract that verifies that the validiums data was made available on Avail by querying the eth:0x054fd961708D8E2B9c10a63F6157c74458889F0a on Ethereum for a merkle proof of inclusion.\n```\n\n```diff\n+ Status: CREATED\n contract SophonTransactionFilterer (0x9D06B34adc3026eF876e4DABb859C424DbDA3063)\n +++ description: A contract implementing the ITransactionFilterer interface, able to whitelist transactions based on sender- OR contractL2 (target) addresses. The whitelist is defined in AccessControl roles.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SophonChainAdminMultisig (0xe4644b6d106A18062344c0A853666bc0B8f052d1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987)\n +++ description: None\n```"
}
]
},
{
"id": "16152161",
"date": "Mon, 07 Jul 2025 07:04:45 GMT",
"timestamp": 1751871885,
"description": "standard zk stack v28 upgrade.",
"isHighSeverity": true,
"changeCount": 39,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ 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 values.$implementation.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.$implementation.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.$implementation.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.$implementation.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.$pastUpgrades.5:\n+ [\"2025-07-01T18:54:59.000Z\",\"0x3fb1153770857ac1714eb72d2cc7a76ebf1160bb8e844e8aa08164c72a25d419\",[\"0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 5\n+ 6\n values.facetAddresses.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.facetAddresses.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.facetAddresses.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.facetAddresses.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n+ \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+ \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n+ \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 115964116992\n+ 120259084288\n values.getSemverProtocolVersion.1:\n- 27\n+ 28\n values.getVerifier:\n- \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n+ \"0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- \"ExecutorFacet\"\n implementationNames.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ \"AdminFacet\"\n implementationNames.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ \"GettersFacet\"\n implementationNames.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ \"MailboxFacet\"\n implementationNames.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.3:\n+ {\"_protocolVersion\":120259084288,\"_upgradeTimestamp\":1750942800}\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to 0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or 0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "86c7361d",
"date": "Fri, 30 May 2025 04:34:03 GMT",
"timestamp": 1748579643,
"description": "2 valis removed.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (0x4cc87B0A504047967CeD9A955431B3229237e7de) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\",\"role\":\".validatorsVTL\"}\n }\n```\n\n```diff\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564) {\n +++ 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 values.validatorsVTL.3:\n- \"0xf3b07F6744e06cd5074b7D15ed2c33760837CE1f\"\n values.validatorsVTL.2:\n- \"0x4cc87B0A504047967CeD9A955431B3229237e7de\"\n }\n```\n\n```diff\n EOA (0xf3b07F6744e06cd5074b7D15ed2c33760837CE1f) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\",\"role\":\".validatorsVTL\"}\n }\n```"
}
]
},
{
"id": "a1cd6b48",
"date": "Mon, 26 May 2025 15:40:26 GMT",
"timestamp": 1748274026,
"description": "two new validators registered.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564) {\n +++ 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 values.validatorsVTL.3:\n+ \"0xf3b07F6744e06cd5074b7D15ed2c33760837CE1f\"\n values.validatorsVTL.2:\n+ \"0x4cc87B0A504047967CeD9A955431B3229237e7de\"\n values.validatorsVTL.1:\n- \"0xf3b07F6744e06cd5074b7D15ed2c33760837CE1f\"\n+ \"0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n values.validatorsVTL.0:\n- \"0x4cc87B0A504047967CeD9A955431B3229237e7de\"\n+ \"0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n }\n```"
}
]
},
{
"id": "771fa297",
"date": "Mon, 19 May 2025 15:29:22 GMT",
"timestamp": 1747668562,
"description": "Whitelisted USDC bridge contract on L2.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonTransactionFilterer (0x9D06B34adc3026eF876e4DABb859C424DbDA3063) {\n +++ description: A contract implementing the ITransactionFilterer interface, able to whitelist transactions based on sender- OR contractL2 (target) addresses. The whitelist is defined in AccessControl roles.\n values.accessControl.WHITELISTED_ROLE.members.1:\n+ \"0x0F44bac3ec514BE912aa4359017593B35E868d74\"\n+++ description: Addresses with this role are on the whitelist as contract targets for requestL2Transaction() calls. The L2AssetRouter is whitelisted here so that users can bridge assets.\n values.whitelistedContractsAC.1:\n+ \"0x0F44bac3ec514BE912aa4359017593B35E868d74\"\n }\n```"
}
]
},
{
"id": "e6ae3907",
"date": "Wed, 14 May 2025 13:53:00 GMT",
"timestamp": 1747230780,
"description": "v27 upgrade to standard contracts/verifiers.\n\nadd txfilterer (functions like a whitelist, blocks per default).",
"isHighSeverity": true,
"changeCount": 50,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ 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 sourceHashes.4:\n- \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n+ \"0xb3038139dce45f6c1aaedbfb1b321c230301b2d004da109b39a17d827c6b0e4f\"\n sourceHashes.3:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x1f9f7cd43747f5bcf879d544be0baca967245540e70592112cdc90c360f30486\"\n sourceHashes.2:\n- \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.1:\n- \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n+ \"0xab7812fa82c483b781aee4c2339b860fcdee4033de1e243370a77a20fc353ddc\"\n sourceHashes.0:\n- \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n+ \"0xca793d2e01bb37722ba48f56662e8602e693d6808ed9587867c2bac43c3dec25\"\n values.$implementation.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$implementation.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$implementation.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$implementation.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.4:\n+ [\"2025-05-12T22:07:23.000Z\",\"0x0366efdb1fc5b705d59c1e88cdc9e9118eea686227b8062627b8bf65be4b6a56\",[\"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\",\"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\",\"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\",\"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.facetAddresses.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.facetAddresses.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.facetAddresses.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.facetAddresses.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n+ \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+ \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 111669149696\n+ 115964116992\n values.getSemverProtocolVersion.0:\n- 26\n+ 27\n+++ description: This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\n+++ severity: HIGH\n values.getTransactionFilterer:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x9D06B34adc3026eF876e4DABb859C424DbDA3063\"\n values.getVerifier:\n- \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n+ \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n values.getL2EvmEmulatorBytecodeHash:\n+ \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n implementationNames.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- \"AdminFacet\"\n implementationNames.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- \"GettersFacet\"\n implementationNames.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- \"MailboxFacet\"\n implementationNames.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- \"ExecutorFacet\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.2:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1738591200}\n values.upgradeTimestamps.1._protocolVersion:\n- 107374182400\n+ 115964116992\n values.upgradeTimestamps.1._upgradeTimestamp:\n- 1738591200\n+ 1747029600\n }\n```\n\n```diff\n contract SophonChainAdminMultisig (0xe4644b6d106A18062344c0A853666bc0B8f052d1) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3\",\"description\":\"manage fees, apply predefined upgrades, manage censorship through a TransactionFilterer, set DA mode, migrate the chain to whitelisted settlement layers (Chain Admin role).\",\"via\":[{\"address\":\"0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3\"}]}\n receivedPermissions.0.from:\n- \"0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3\"\n+ \"0x9D06B34adc3026eF876e4DABb859C424DbDA3063\"\n receivedPermissions.0.description:\n- \"manage fees, apply predefined upgrades, manage censorship through a TransactionFilterer, set DA mode, migrate the chain to whitelisted settlement layers (Chain Admin role).\"\n+ \"manage the whitelist.\"\n receivedPermissions.0.via:\n- [{\"address\":\"0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3\"}]\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract SophonTransactionFilterer (0x9D06B34adc3026eF876e4DABb859C424DbDA3063)\n +++ description: A contract implementing the ITransactionFilterer interface, able to whitelist transactions based on sender- OR contractL2 (target) addresses. The whitelist is defined in AccessControl roles.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "c56e03b2",
"date": "Thu, 24 Apr 2025 05:13:04 GMT",
"timestamp": 1745471584,
"description": "L1DAValidator update to a contract that integrates with Vector (SP1) Avail DA bridge.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ 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+++ severity: HIGH\n values.getDAValidatorPair.1:\n- \"0xFa30EAe30351A83809657299F6Cad9557c232e8C\"\n+ \"0x8f50d93B9955B285f787043B30B5F51D09bE0120\"\n+++ severity: HIGH\n values.getDAValidatorPair.0:\n- \"0x907b30407249949521Bf0c89A43558dae200146A\"\n+ \"0xf39dE5c61b276391b913cAFB057DC8B9de5d58dA\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ 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```\n\n```diff\n contract SophonChainAdminMultisig (0xe4644b6d106A18062344c0A853666bc0B8f052d1) {\n +++ description: None\n values.$members.6:\n+ \"0x14574dfC6B7aF658c5033BA95673864947956521\"\n values.$members.5:\n- \"0x14574dfC6B7aF658c5033BA95673864947956521\"\n+ \"0xd89b0f620E0C72BD82e0447dE07FB0A0Abe01F69\"\n values.$members.4:\n- \"0xd89b0f620E0C72BD82e0447dE07FB0A0Abe01F69\"\n+ \"0x3b6036d410cA018661324766680674921a8b2d89\"\n values.$members.3:\n- \"0x3b6036d410cA018661324766680674921a8b2d89\"\n+ \"0x20719Abd2E63518e68D30a295388cAd6B542dCEf\"\n values.$members.2:\n- \"0x20719Abd2E63518e68D30a295388cAd6B542dCEf\"\n+ \"0x7f413262Cb811B034d077d9184b5Efda6943f2c3\"\n values.$members.1:\n- \"0x7f413262Cb811B034d077d9184b5Efda6943f2c3\"\n+ \"0x90E10C37d8d9e854e7775B0069728642A1F88610\"\n values.$members.0:\n- \"0x90E10C37d8d9e854e7775B0069728642A1F88610\"\n+ \"0x0BA5557075B4E30bA409B01797c9c78b3Ce192bF\"\n values.$threshold:\n- 3\n+ 4\n values.multisigThreshold:\n- \"3 of 6 (50%)\"\n+ \"4 of 7 (57%)\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract AvailL1DAValidator (0x8f50d93B9955B285f787043B30B5F51D09bE0120)\n +++ description: Contract that verifies that the validiums data was made available on Avail by querying the 0x054fd961708D8E2B9c10a63F6157c74458889F0a on Ethereum for a merkle proof of inclusion.\n```"
}
]
},
{
"id": "0b487d66",
"date": "Wed, 02 Apr 2025 15:08:27 GMT",
"timestamp": 1743606507,
"description": "shared zk stack contracts upgraded to v26: config related changes for all children chains.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ 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```"
}
]
},
{
"id": "7af923c5",
"date": "Fri, 28 Mar 2025 10:47:08 GMT",
"timestamp": 1743158828,
"description": "v26 upgrade.",
"isHighSeverity": true,
"changeCount": 58,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ 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 template:\n- \"shared-zk-stack/Diamond\"\n+ \"shared-zk-stack/Diamond_v26\"\n sourceHashes.4:\n- \"0xdf47c6cd4fcffcfa4a670e1544e2391acc365cd7fd9b8e7583d58b28dff50c40\"\n+ \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n sourceHashes.3:\n- \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.2:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n sourceHashes.1:\n- \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n+ \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n sourceHashes.0:\n- \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n+ \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n description:\n- \"The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\"\n+ \"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 issuedPermissions.2:\n+ {\"permission\":\"interact\",\"to\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\",\"description\":\"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\",\"via\":[]}\n values.$implementation.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.$implementation.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.$implementation.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.$implementation.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.$pastUpgrades.3:\n+ [\"2025-03-27T17:07:47.000Z\",\"0x92c1aabdc2a908d40bee5207ba851be0a7f91747e4d86f4aa23201d5605d7f75\",[\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.daMode:\n- 1\n values.facetAddresses.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.facetAddresses.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.facetAddresses.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.facetAddresses.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getBaseTokenBridge:\n- \"0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB\"\n values.getL2BootloaderBytecodeHash:\n- \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n+ \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n+ \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 107374182400\n+ 111669149696\n values.getSemverProtocolVersion.0:\n- 25\n+ 26\n values.getStateTransitionManager:\n- \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n values.getVerifier:\n- \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n+ \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n values.txFilterer:\n- []\n values.validators.1:\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n values.getBaseTokenAssetId:\n+ \"0xd8d7af170b8818511cb9a930d5f5e7f71d799a65974b0cb4f9d31e32095e336c\"\n values.getChainId:\n+ 50104\n values.getChainTypeManager:\n+ \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n+++ severity: HIGH\n values.getDAValidatorPair:\n+ [\"0x907b30407249949521Bf0c89A43558dae200146A\",\"0xFa30EAe30351A83809657299F6Cad9557c232e8C\"]\n values.getSettlementLayer:\n+ \"0x0000000000000000000000000000000000000000\"\n+++ description: This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\n+++ severity: HIGH\n values.getTransactionFilterer:\n+ \"0x0000000000000000000000000000000000000000\"\n values.isPriorityQueueActive:\n+ false\n fieldMeta.txFilterer:\n- {\"severity\":\"HIGH\",\"description\":\"This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\"}\n fieldMeta.getProtocolVersion.severity:\n- \"MEDIUM\"\n+ \"HIGH\"\n fieldMeta.getAdmin:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getTransactionFilterer:\n+ {\"severity\":\"HIGH\",\"description\":\"This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\"}\n fieldMeta.getDAValidatorPair:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getPendingAdmin:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getPubdataPricingMode:\n+ {\"severity\":\"HIGH\",\"description\":\"0 - Rollup, 1 - Validium\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract undefined (0x4cc87B0A504047967CeD9A955431B3229237e7de) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.1:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1738591200}\n values.upgradeTimestamps.0._protocolVersion:\n- 107374182400\n+ 111669149696\n values.upgradeTimestamps.0._upgradeTimestamp:\n- 1738591200\n+ 1742454000\n }\n```\n\n```diff\n contract undefined (0xf3b07F6744e06cd5074b7D15ed2c33760837CE1f) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```"
}
]
},
{
"id": "f998353c",
"date": "Tue, 11 Mar 2025 08:00:21 GMT",
"timestamp": 1741680021,
"description": "ValidatorTimelock governance transfer for ZIP 5.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract undefined (0x3701fB675bCd4A85eb11A2467628BBe193F6e6A8)\n +++ description: None\n```\n\n```diff\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E) {\n +++ 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 values.owner:\n- \"0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897\"\n+ \"0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ProtocolUpgradeHandler (0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897)\n +++ description: The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2, emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n```\n\n```diff\n- Status: DELETED\n contract SecurityCouncil (0xBDFfCC71FE84020238F2990a6D2954e87355De0D)\n +++ description: Custom Multisig implementation that has a general threshold of 9 but also specific thresholds for upgrade approvals (6) or soft freezes (3).\n```\n\n```diff\n- Status: DELETED\n contract Guardians (0xD677e09324F8Bb3cC64F009973693f751c33A888)\n +++ description: Custom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n```\n\n```diff\n- Status: DELETED\n contract EmergencyUpgradeBoard (0xdEFd1eDEE3E8c5965216bd59C866f7f5307C9b29)\n +++ description: A custom contract allowing a 3/3 of 0xBDFfCC71FE84020238F2990a6D2954e87355De0D, 0xbC1653bd3829dfEc575AfC3816D4899cd103B51c and 0xD677e09324F8Bb3cC64F009973693f751c33A888 to `executeEmergencyUpgrade()` via the 0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897.\n```\n\n```diff\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987) {\n +++ description: None\n values.owner:\n- \"0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897\"\n+ \"0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3\"\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract undefined (0x3701fB675bCd4A85eb11A2467628BBe193F6e6A8)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProtocolUpgradeHandler (0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897)\n +++ description: The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2, emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n```\n\n```diff\n+ Status: CREATED\n contract SecurityCouncil (0xBDFfCC71FE84020238F2990a6D2954e87355De0D)\n +++ description: Custom Multisig implementation that has a general threshold of 9 but also specific thresholds for upgrade approvals (6) or soft freezes (3).\n```\n\n```diff\n+ Status: CREATED\n contract Guardians (0xD677e09324F8Bb3cC64F009973693f751c33A888)\n +++ description: Custom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n```\n\n```diff\n+ Status: CREATED\n contract EmergencyUpgradeBoard (0xdEFd1eDEE3E8c5965216bd59C866f7f5307C9b29)\n +++ description: A custom contract allowing a 3/3 of 0xBDFfCC71FE84020238F2990a6D2954e87355De0D, 0xbC1653bd3829dfEc575AfC3816D4899cd103B51c and 0xD677e09324F8Bb3cC64F009973693f751c33A888 to `executeEmergencyUpgrade()` via the 0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897.\n```"
}
]
},
{
"id": "728d4222",
"date": "Thu, 06 Feb 2025 09:23:34 GMT",
"timestamp": 1738833814,
"description": "Upgrade successful.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.getL2SystemContractsUpgradeBatchNumber:\n- 13780\n+ 0\n values.getL2SystemContractsUpgradeBlockNumber:\n- 13780\n+ 0\n values.getL2SystemContractsUpgradeTxHash:\n- \"0xd3086b71c95ce83e7f3d30ab1890ada2334695a05b65715e56f42d96b22c8674\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "101a64ca",
"date": "Wed, 05 Feb 2025 06:33:01 GMT",
"timestamp": 1738737181,
"description": "Upgrade to Protocol version 25.",
"isHighSeverity": false,
"changeCount": 34,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.4:\n- \"0xe521f6bd6250a2c92af323768ad8a2274cc334725b5ed8960d8421f063fc3285\"\n+ \"0xdf47c6cd4fcffcfa4a670e1544e2391acc365cd7fd9b8e7583d58b28dff50c40\"\n sourceHashes.3:\n- \"0x419cee160f60572fc9189007ec7c1e3c13e54d80bf1e78f837bc8fa001519685\"\n+ \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n sourceHashes.2:\n- \"0xd272def5b4e3f0a68e3019d7d40675ca6d3e3fc35500e9aafe864bce8c697de2\"\n+ \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n sourceHashes.1:\n- \"0x9ae32beaa5dc29055f75d3cd08fbec35ed3eee3e2ff35de263a78f7d63c610f9\"\n+ \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n values.$implementation.3:\n- \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n+ \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n values.$implementation.2:\n- \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n+ \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n values.$implementation.1:\n- \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n+ \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n values.$implementation.0:\n- \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n+ \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n values.$pastUpgrades.2:\n+ [\"2025-02-04T19:22:23.000Z\",\"0x82657fe86f99698eae75f1e2104fa211e67b641b7e58450aa8ceabf962798b16\",[\"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\",\"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\",\"0x5575218cECd370E1d630d1AdB03c254B0B376821\",\"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.facetAddresses.3:\n- \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n+ \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n values.facetAddresses.2:\n- \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n+ \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n values.facetAddresses.1:\n- \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n+ \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n values.facetAddresses.0:\n- \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n+ \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n values.facets.0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0xE60E94fCCb18a81D501a38959E532C0A85A1be89:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0xCDB6228b616EEf8Df47D69A372C4f725C43e718C:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xaD193aDe635576d8e9f7ada71Af2137b16c64075:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n+ [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n+ [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n+ [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n+ [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x010008e742608b21bf7eb23c1a9d0602047e3618b464c9b59c0fba3b3d7ab66e\"\n+ \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x01000563374c277a2c1e34659a2a1e87371bb6d852ce142022d497bfb50b9e32\"\n+ \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n values.getL2SystemContractsUpgradeBatchNumber:\n- 0\n+ 13780\n values.getL2SystemContractsUpgradeBlockNumber:\n- 0\n+ 13780\n values.getL2SystemContractsUpgradeTxHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0xd3086b71c95ce83e7f3d30ab1890ada2334695a05b65715e56f42d96b22c8674\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: MEDIUM\n values.getProtocolVersion:\n- 103079215106\n+ 107374182400\n values.getSemverProtocolVersion.2:\n- 2\n+ 0\n values.getSemverProtocolVersion.1:\n- 24\n+ 25\n values.getVerifier:\n- \"0x70F3FBf8a427155185Ec90BED8a3434203de9604\"\n+ \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0x70F3FBf8a427155185Ec90BED8a3434203de9604)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.0:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1738591200}\n }\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: Implements the ZK proof verification logic.\n```"
}
]
},
{
"id": "2121984c",
"date": "Mon, 03 Feb 2025 14:33:48 GMT",
"timestamp": 1738593228,
"description": "[ZIP-002] 'Reduce the execution delay from 21 hours to 3 hours' executed.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E) {\n +++ 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 description:\n- \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 21h.\"\n+ \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\"\n values.executionDelay:\n- 75600\n+ 10800\n values.executionDelay_fmt:\n- \"21h\"\n+ \"3h\"\n }\n```"
}
]
},
{
"id": "e590d65d",
"date": "Tue, 28 Jan 2025 06:34:20 GMT",
"timestamp": 1738046060,
"description": "discodrive!",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 21h.\n```"
}
]
},
{
"id": "9391970a",
"date": "Mon, 27 Jan 2025 13:32:10 GMT",
"timestamp": 1737984730,
"description": "New usdc bridge admin transfer finalized.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987) {\n +++ description: None\n values.admin:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x4e4943346848c4867F81dFb37c4cA9C5715A7828\"\n values.pendingAdmin:\n- \"0x4e4943346848c4867F81dFb37c4cA9C5715A7828\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "c393a3d5",
"date": "Wed, 22 Jan 2025 12:22:26 GMT",
"timestamp": 1737548546,
"description": "L1USDCBridge to add a new owner.",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract GnosisSafe (0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD)\n +++ description: None\n```\n\n```diff\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987) {\n +++ description: None\n sourceHashes.1:\n- \"0x00a6e4c29d4f4c792c4f6c43b197f95b24d626a94e6faf8ee81bc9320d579d7e\"\n+ \"0xab9a40a5f27251ca4b4884dedef5a2b49a8928796a1fd0c6655f1623be961602\"\n issuedPermissions:\n- [{\"permission\":\"upgrade\",\"to\":\"0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD\",\"via\":[]}]\n values.$admin:\n- \"0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD\"\n+ \"0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1\"\n values.$implementation:\n- \"0x86dF12f51E3531689e0615bb2F739ddf01337715\"\n+ \"0x2ccD5486Ea1b2A52dcD387c01314F6A328f66cbB\"\n values.$pastUpgrades.1:\n+ [\"2025-01-21T18:29:59.000Z\",\"0x152dc623c52d7f2b058ec5b4dfb67f5e0fee14c04dc9c0db4ae02ed2dc4ab998\",[\"0x2ccD5486Ea1b2A52dcD387c01314F6A328f66cbB\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.owner:\n- \"0xe4644b6d106A18062344c0A853666bc0B8f052d1\"\n+ \"0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897\"\n values.pendingAdmin:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x4e4943346848c4867F81dFb37c4cA9C5715A7828\"\n }\n```"
}
]
},
{
"id": "f894d5ad",
"date": "Wed, 18 Dec 2024 13:08:26 GMT",
"timestamp": 1734527306,
"description": "USDC escrow admin changed to a new Multisig (SophonUSDCEscrowMultisig) and also gets a new owner (SophonChainAdminMultisig).",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract GnosisSafe (0x478a303CCe3c62CE52A8D66885b9D04F2733F3b6)\n +++ description: None\n```\n\n```diff\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0x478a303CCe3c62CE52A8D66885b9D04F2733F3b6\"\n+ \"0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD\"\n values.$admin:\n- \"0x478a303CCe3c62CE52A8D66885b9D04F2733F3b6\"\n+ \"0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD\"\n values.owner:\n- \"0x299174d47c243B5381c6062aBEFbfF915B601D85\"\n+ \"0xe4644b6d106A18062344c0A853666bc0B8f052d1\"\n values.pendingOwner:\n- \"0xe4644b6d106A18062344c0A853666bc0B8f052d1\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract SophonUSDCEscrowMultisig (0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD)\n +++ description: None\n```"
}
]
},
{
"id": "8c6f787b",
"date": "Tue, 17 Dec 2024 09:58:24 GMT",
"timestamp": 1734429504,
"description": "Initial discovery of a ZK stack Validium sharing the standard implementations and infra contracts. (Custom gastoken SOPH not on CG yet). External USDC ecrow.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SophonUSDCEscrowMultisig (0x478a303CCe3c62CE52A8D66885b9D04F2733F3b6)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x70F3FBf8a427155185Ec90BED8a3434203de9604)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SophonChainAdminMultisig (0xe4644b6d106A18062344c0A853666bc0B8f052d1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987)\n +++ description: None\n```"
}
]
}
]
+14 -0
+14 -0
[
{
"id": "634eb4cd",
"date": "Fri, 16 Oct 2026 10:36:26 GMT",
"timestamp": 1792144404,
"description": "The CreditMessaging owner minted credits without crosschain messages for ten USDT pool paths and one ETH path. The onchain reason is consolidating balances before the USDT pools are deprecated on 2026-10-23. Nethermind DVN rotated its signers: one removed, two added, quorum stays 1.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract CreditMessagingMintableBurnable (eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173) [stargate/CreditMessagingMintableBurnable] {\n +++ description: A LayerZero OApp owned by Stargate that is used for the virtual crosschain accounting of available tokens to the local pools. A local pool thus has a record of how many tokens are available when bridging to another remote pool. The permissioned Planner role can move these credits across chains, the owner can increase/decrease them arbitrarily.\n+++ description: Credits minted manually by the owner without crosschain messages.\n values.creditsMinted.3:\n+ {\"batches\":[[2,[[30110,26332395649],[30106,47295908170],[30102,139002869454],[30153,2829443156],[30101,125011714920],[30177,38272026229],[30181,62874011651],[30151,39563827179],[30111,17422465496],[30109,7308496081]]],[13,[[30151,31942]]]],\"reason\":\"Minting 26332.395649 USDT for arbitrum (eid 30110), 47295.908170 USDT for avalanche (eid 30106), 139002.869454 USDT for bsc (eid 30102), 2829.443156 USDT for coredao (eid 30153), 125011.714920 USDT for ethereum (eid 30101), 38272.026229 USDT for kava (eid 30177), 62874.011651 USDT for mantle (eid 30181), 39563.827179 USDT for metis (eid 30151), 17422.465496 USDT for optimism (eid 30111), 7308.496081 USDT for polygon (eid 30109), 0.031942 ETH for metis (eid 30151), to consolidate balance and credit as part of USDT pools deprecation next Oct 23rd, 2026\"}\n }\n```\n\n```diff\n contract Nethermind DVN (eth:0xa59BA433ac34D2927232918Ef5B2eaAfcF130BA5) [layerzero/DVN] {\n +++ description: One of the registered DVNs for the OApp acts through this smart contract. They are allowed to verify LayerZero messages for the Stargate bridge and enable their execution at the destination.\n values.signerSize:\n- 1\n+ 2\n }\n```"
}
]
},
{
"id": "d14ac086",
"date": "Mon, 12 Oct 2026 07:57:28 GMT",
"timestamp": 1791789583,
"description": "The shared LayerZero executor on Ethereum upgraded to an unverified implementation.\n\n[Executor diff](https://disco.l2beat.com/diff/eth:0xfE9AB78eD4f9f3DbB168d9f5E5213d78605C9805/eth:0x1Ed8E51E8AB2A00B2805aEcf2C6aC0BB6521eaE0).",
"isHighSeverity": true,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LayerZero Executor (eth:0x173272739Bd7Aa6e4e214714048a9fE699453059) [N/A] {\n +++ description: Upgradeable contract referenced as an executor by LayerZero message libraries. Its current implementation is unverified, so execution and fee handling cannot be checked against source.\n template:\n- \"layerzero/LayerZeroExecutor\"\n sourceHashes:\n- [\"0x4a43bdaa7c21f911802bc9e3457cf5fef469f43b372ea6944d53823caf2f53f2\",\"0x914fbceaba4b6418a09bd2104433bfcb47eed119a783154a8f7f6301c06a6d2b\"]\n values.$implementation:\n- \"eth:0xfE9AB78eD4f9f3DbB168d9f5E5213d78605C9805\"\n+ \"eth:0x1Ed8E51E8AB2A00B2805aEcf2C6aC0BB6521eaE0\"\n values.$pastUpgrades.3:\n+ [\"2026-10-02T00:08:11.000Z\",\"0x682248f5070d80b5c52e90030913f204331e1f0516ed6a0e5d471e6417c3fb52\",[\"eth:0x1Ed8E51E8AB2A00B2805aEcf2C6aC0BB6521eaE0\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.allowlistSize:\n- 0\n values.DEFAULT_ADMIN_ROLE:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n values.defaultMultiplierBps:\n- 12000\n values.endpoint:\n- \"eth:0x1a44076050125825900e736c501f859c50fE728c\"\n values.localEidV2:\n- 30101\n values.paused:\n- false\n values.priceFeed:\n- \"eth:0xC03f31fD86a9077785b7bCf6598Ce3598Fa91113\"\n values.receiveUln301:\n- \"eth:0x245B6e8FFE9ea5Fc301e32d16F66bD4C2123eEfC\"\n values.workerFeeLib:\n- \"eth:0x4e9C57FD2Bd0f47C43F2D62642C1b05894fb9ed0\"\n implementationNames.eth:0xfE9AB78eD4f9f3DbB168d9f5E5213d78605C9805:\n- \"Executor\"\n implementationNames.eth:0x1Ed8E51E8AB2A00B2805aEcf2C6aC0BB6521eaE0:\n+ \"\"\n unverified:\n+ true\n }\n```"
}
]
},
{
"id": "64622989",
"date": "Thu, 01 Oct 2026 11:11:01 GMT",
"timestamp": 1790851350,
"description": "The owner of CreditMessagingMintableBurnable manually minted credits without crosschain messages for the USDC pool (gnosis, aurora) and the ETH pool (gnosis, lightlink), stated reason: consolidating balance and credit as part of the deprecation of these remote pools on 2026-09-24.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract CreditMessagingMintableBurnable (eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173) [stargate/CreditMessagingMintableBurnable] {\n +++ description: A LayerZero OApp owned by Stargate that is used for the virtual crosschain accounting of available tokens to the local pools. A local pool thus has a record of how many tokens are available when bridging to another remote pool. The permissioned Planner role can move these credits across chains, the owner can increase/decrease them arbitrarily.\n+++ description: Credits minted manually by the owner without crosschain messages.\n values.creditsMinted.2:\n+ {\"batches\":[[1,[[30145,5585911234],[30211,12487351781]]],[13,[[30145,46611],[30309,32980]]]],\"reason\":\"Minting 5585.911234 USDC for gnosis (eid 30145), 12487.351781 USDC for aurora (eid 30211), 0.046611 ETH for gnosis (eid 30145), 0.032980 ETH for lightlink (eid 30309), to consolidate balance and credit as part of pool deprecation 2026-09-24\"}\n }\n```"
}
]
},
{
"id": "955653d9",
"date": "Mon, 10 Aug 2026 09:10:06 GMT",
"timestamp": 1786352916,
"description": "Multisig member change.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LayerZero Multisig (eth:0xBe010A7e3686FdF65E93344ab664D065A0B02478) [layerzero/OneSigMultisig] {\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n values.$members.5:\n+ \"eth:0xdFE4027209C795B84d39FfBfF86bf73572571BAd\"\n values.$members.6:\n+ \"eth:0x2be094F1C9AaF76aD3A789EA4f047BBE7D1DB552\"\n values.$threshold:\n- 3\n+ 5\n values.totalSigners:\n- 5\n+ 7\n }\n```"
}
]
},
{
"id": "4f7c614c",
"date": "Wed, 29 Jul 2026 11:45:00 GMT",
"timestamp": 1785325405,
"description": "One signer was rotated in Stargate Multisig 2. Its 5-of-7 threshold and sole executor are unchanged.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Stargate Multisig 2 (eth:0xBE634B030FEAaB661300667EaF82510a3a025413) [layerzero/OneSigMultisig] {\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n values.$members.4:\n- \"eth:0x18b3Bf351B161E3DE0d9d47Efa80d9f474bDd5D1\"\n+ \"eth:0x69784C33E460ab284b32eEA886C2Eb5bA8B5Aa01\"\n }\n```"
}
]
},
{
"id": "307616e4",
"date": "Tue, 21 Jul 2026 08:58:57 GMT",
"timestamp": 1784624234,
"description": "Add 2 multisig signers.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Stargate Multisig 2 (eth:0xBE634B030FEAaB661300667EaF82510a3a025413) [layerzero/OneSigMultisig] {\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n values.$members.5:\n+ \"eth:0xA37b4a8A5538d2f21c4eA8a27Db8eda8C6260D1D\"\n values.$members.6:\n+ \"eth:0xc6A38f3dA88Ff791e296C6e05cd669d22a979e03\"\n values.$threshold:\n- 3\n+ 5\n values.totalSigners:\n- 5\n+ 7\n }\n```"
}
]
},
{
"id": "283c8011",
"date": "Tue, 16 Jun 2026 10:18:52 GMT",
"timestamp": 1781604075,
"description": "Upgrade CreditMessaging to a new version that allows the owner to increase/decrease credits without LayerZero verification and crosschain messages.",
"isHighSeverity": false,
"changeCount": 20,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StargatePool (eth:0x268Ca24DAefF1FaC2ed883c598200CcbB79E931D) [stargate/StargatePool] {\n +++ description: None\n values.getAddressConfig.creditMessaging:\n- \"eth:0x6b8aD17795d89B283e6D0362A87A403f3544bb9d\"\n+ \"eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173\"\n }\n```\n\n```diff\n contract StargatePoolNative (eth:0x77b2043768d28E9C9aB44E1aBfC95944bcE57931) [stargate/StargatePoolNative] {\n +++ description: None\n values.getAddressConfig.creditMessaging:\n- \"eth:0x6b8aD17795d89B283e6D0362A87A403f3544bb9d\"\n+ \"eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173\"\n }\n```\n\n```diff\n contract StargatePoolEURC (eth:0x783129E4d7bA0Af0C896c239E57C06DF379aAE8c) [stargate/StargatePool] {\n +++ description: None\n values.getAddressConfig.creditMessaging:\n- \"eth:0x6b8aD17795d89B283e6D0362A87A403f3544bb9d\"\n+ \"eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173\"\n }\n```\n\n```diff\n contract StargatePoolMigratable (eth:0x933597a323Eb81cAe705C5bC29985172fd5A3973) [stargate/StargatePoolMigratable] {\n +++ description: None\n values.getAddressConfig.creditMessaging:\n- \"eth:0x6b8aD17795d89B283e6D0362A87A403f3544bb9d\"\n+ \"eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173\"\n }\n```\n\n```diff\n contract CreditMessagingMintableBurnable (eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173) [stargate/CreditMessagingMintableBurnable] {\n +++ description: A LayerZero OApp owned by Stargate that is used for the virtual crosschain accounting of available tokens to the local pools. A local pool thus has a record of how many tokens are available when bridging to another remote pool. The permissioned Planner role can move these credits across chains, the owner can increase/decrease them arbitrarily.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"immutable\"\n name:\n+ \"CreditMessagingMintableBurnable\"\n template:\n+ \"stargate/CreditMessagingMintableBurnable\"\n sourceHashes:\n+ [\"0x1c616d3634303eb13f60270383fe34284126053d38d118f279939768d4b6abc3\"]\n description:\n+ \"A LayerZero OApp owned by Stargate that is used for the virtual crosschain accounting of available tokens to the local pools. A local pool thus has a record of how many tokens are available when bridging to another remote pool. The permissioned Planner role can move these credits across chains, the owner can increase/decrease them arbitrarily.\"\n deployerAddress:\n+ \"eth:0x5e6e4f234c7Ad525700fcF5B7862589950589ed5\"\n sinceTimestamp:\n+ 1780425035\n sinceBlock:\n+ 25231499\n values:\n+ {\"$immutable\":true,\"creditsBurned\":[],\"creditsMinted\":[{\"batches\":[[2,[[30280,23220000000]]]],\"reason\":\"Recover USDT credits burned during past chain unwires, minting 23,220 credits on Ethereum for Sei path srcEid 30280\"},{\"batches\":[[2,[[30280,231000000]]]],\"reason\":\"Recover USDT credits burned during past chain unwires, minting 231 credits on Ethereum for Sei path srcEid 30280\"}],\"endpoint\":\"eth:0x1a44076050125825900e736c501f859c50fE728c\",\"maxAssetId\":23,\"oApp\":\"eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173\",\"oAppVersion\":{\"senderVersion\":1,\"receiverVersion\":2},\"owner\":\"eth:0xBE634B030FEAaB661300667EaF82510a3a025413\",\"planner\":\"eth:0xe37f7c80ceD04c4F243C0Fd04A5510D663CB88b5\",\"pools\":[\"eth:0xc026395860Db2d07ee33e05fE50ed7bD583189C7\",\"eth:0x933597a323Eb81cAe705C5bC29985172fd5A3973\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x77b2043768d28E9C9aB44E1aBfC95944bcE57931\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0xcDafB1b2dB43f366E48e6F614b8DCCBFeeFEEcD3\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x0000000000000000000000000000000000000000\",\"eth:0x268Ca24DAefF1FaC2ed883c598200CcbB79E931D\",\"eth:0x783129E4d7bA0Af0C896c239E57C06DF379aAE8c\"],\"preCrime\":\"eth:0x0000000000000000000000000000000000000000\"}\n fieldMeta:\n+ {\"maxAssetId\":{\"description\":\"The highest currently registered assetID\"},\"creditsBurned\":{\"description\":\"Credits burned manually by the owner without crosschain messages.\"},\"creditsMinted\":{\"description\":\"Credits minted manually by the owner without crosschain messages.\"}}\n implementationNames:\n+ {\"eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173\":\"CreditMessagingMintableBurnable\"}\n }\n```\n\n```diff\n contract Stargate Multisig 2 (eth:0xBE634B030FEAaB661300667EaF82510a3a025413) [layerzero/OneSigMultisig] {\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n receivedPermissions.11:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173\",\"description\":\"set OApp delegate, planner, mint and burn credits without validation and other critical configurations.\",\"role\":\".owner\"}\n }\n```\n\n```diff\n contract StargatePoolUSDC (eth:0xc026395860Db2d07ee33e05fE50ed7bD583189C7) [stargate/StargatePoolUSDC] {\n +++ description: None\n values.getAddressConfig.creditMessaging:\n- \"eth:0x6b8aD17795d89B283e6D0362A87A403f3544bb9d\"\n+ \"eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173\"\n }\n```\n\n```diff\n contract StargatePool (eth:0xcDafB1b2dB43f366E48e6F614b8DCCBFeeFEEcD3) [stargate/StargatePool] {\n +++ description: None\n values.getAddressConfig.creditMessaging:\n- \"eth:0x6b8aD17795d89B283e6D0362A87A403f3544bb9d\"\n+ \"eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173\"\n }\n```\n\n```diff\n EOA (eth:0xe37f7c80ceD04c4F243C0Fd04A5510D663CB88b5) {\n +++ description: None\n receivedPermissions.5:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x9b4D17b45d60B8173a5904b85a7bAaeC291E9173\",\"description\":\"send credits (asset claims) from pools on this chain to other pools.\",\"role\":\".planner\"}\n }\n```"
}
]
},
{
"id": "0bc5b270",
"date": "Thu, 28 May 2026 10:29:48 GMT",
"timestamp": 1779964108,
"description": "two ms members change.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Stargate Multisig 2 (eth:0xBE634B030FEAaB661300667EaF82510a3a025413) [layerzero/OneSigMultisig] {\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n values.$members.2:\n- \"eth:0x18b3Bf351B161E3DE0d9d47Efa80d9f474bDd5D1\"\n+ \"eth:0xf02CC4dc84aC59Bd6089BAddcEB9d4Ef3AEFb0f0\"\n values.$members.4:\n- \"eth:0xf02CC4dc84aC59Bd6089BAddcEB9d4Ef3AEFb0f0\"\n+ \"eth:0x18b3Bf351B161E3DE0d9d47Efa80d9f474bDd5D1\"\n }\n```"
}
]
},
{
"id": "6c3739c8",
"date": "Thu, 21 May 2026 09:34:26 GMT",
"timestamp": 1779355983,
"description": "add required DNV for stargate.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ReceiveUln302 (eth:0xc02Ab410f0734EFa3F14628780e6e695156024C2) [layerzero/ReceiveUln302] {\n +++ description: LayerZero-deployed receive library, defining the validation of received messages.\n values.getUlnConfig.requiredDVNCount:\n- 2\n+ 3\n values.getUlnConfig.requiredDVNs.1:\n+ \"eth:0xa4fE5A5B9A846458a70Cd0748228aED3bF65c2cd\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DVN (eth:0xa4fE5A5B9A846458a70Cd0748228aED3bF65c2cd) [layerzero/DVN]\n +++ description: Defines the logic that validates LayerZero Packets for this DVN.\n```"
}
]
},
{
"id": "1e39cc66",
"date": "Mon, 11 May 2026 12:40:47 GMT",
"timestamp": 1778503168,
"description": "config: lz template changes.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract EndpointV2 (eth:0x1a44076050125825900e736c501f859c50fE728c) [layerzero/EndpointV2] {\n +++ description: A contract that is part of the LayerZero messaging protocol. The Stargate OApp owner can configure verification (MessageLib) and execution settings here.\n values.getReceiveLibrary.isDefault:\n- true\n+ false\n }\n```"
}
]
},
{
"id": "2ad4e87f",
"date": "Tue, 28 Apr 2026 10:12:49 GMT",
"timestamp": 1777371085,
"description": "rm unsupported chains\n\nnethermind reduced signer size.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Nethermind DVN (eth:0xa59BA433ac34D2927232918Ef5B2eaAfcF130BA5) {\n +++ description: One of the registered DVNs for the OApp acts through this smart contract. They are allowed to verify LayerZero messages for the Stargate bridge and enable their execution at the destination.\n values.signerSize:\n- 5\n+ 1\n }\n```"
}
]
},
{
"id": "d3d99ad1",
"date": "Mon, 02 Mar 2026 09:48:35 GMT",
"timestamp": 1772444834,
"description": "migrate to baseproject.",
"isHighSeverity": false,
"changeCount": 49,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract TokenMessagingBase (base:0x5634c4a5FEd09819E3c46D86A965Dd9447d86e47) {\n +++ description: A LayerZero OApp owned by Stargate that manages bridging messages from all pools on Ethereum. It can batch messages with a 'bus' mode or dispatch them immediately (taxi) for higher fees.\n values.pools.22:\n- \"base:0x87Dd5A7481726a53C5Ac6b0D296F5846f95a72f2\"\n+ \"base:0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n- Status: DELETED\n contract StargatePoolEURC (base:0x87Dd5A7481726a53C5Ac6b0D296F5846f95a72f2)\n +++ description: None\n```\n\n```diff\n EOA (base:0xe37f7c80ceD04c4F243C0Fd04A5510D663CB88b5) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"base:0x87Dd5A7481726a53C5Ac6b0D296F5846f95a72f2\",\"description\":\"pause the pool and set deficit offsets (affects crosschain liquidity and fees).\",\"role\":\".planner\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract Stargate DVN (eth:0x8FafAE7Dd957044088b3d0F67359C327c6200d18)\n +++ description: One of the registered DVNs for the OApp acts through this smart contract. They are allowed to verify LayerZero messages for the Stargate bridge and enable their execution at the destination.\n```\n\n```diff\n contract Nethermind DVN (eth:0xa59BA433ac34D2927232918Ef5B2eaAfcF130BA5) {\n +++ description: One of the registered DVNs for the OApp acts through this smart contract. They are allowed to verify LayerZero messages for the Stargate bridge and enable their execution at the destination.\n values.signerSize:\n- 4\n+ 5\n }\n```\n\n```diff\n contract Stargate Multisig 2 (eth:0xBE634B030FEAaB661300667EaF82510a3a025413) {\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n values.$members.0:\n- \"eth:0x1D7C6783328C145393e84fb47a7f7C548f5Ee28d\"\n+ \"eth:0xfD3F88EcA6cC5301b6d7068a09dc924aE9dFA3c3\"\n values.$members.1:\n- \"eth:0x2E1078e128e8AA6A70eC8d1B17A79Fc4B457d437\"\n+ \"eth:0x00BD5C12508a346e4355c8Ee085aE2BCB742E814\"\n values.$members.2:\n- \"eth:0x565cFd7224bbc2a81a6e2a1464892ecB27efB070\"\n+ \"eth:0x18b3Bf351B161E3DE0d9d47Efa80d9f474bDd5D1\"\n values.$members.4:\n- \"eth:0x8A403992b0d9CA20f009063C7bE6F20814Cb8AEB\"\n values.totalSigners:\n- 6\n+ 5\n }\n```\n\n```diff\n contract ReceiveUln302 (eth:0xc02Ab410f0734EFa3F14628780e6e695156024C2) {\n +++ description: Receive Library used by LayerZero, defining the validation of received messages.\n values.getUlnConfig.requiredDVNs.0:\n- \"eth:0x8FafAE7Dd957044088b3d0F67359C327c6200d18\"\n+ \"eth:0x589dEDbD617e0CBcB916A9223F4d1300c294236b\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract LayerZero DVN (eth:0x589dEDbD617e0CBcB916A9223F4d1300c294236b)\n +++ description: Defines the logic that validates LayerZero Packets for this DVN.\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract TokenMessagingArbitrum (arb1:0x19cFCE47eD54a88614648DC3f19A5980097007dD)\n +++ description: A LayerZero OApp owned by Stargate that manages bridging messages from all pools on Ethereum. It can batch messages with a 'bus' mode or dispatch them immediately (taxi) for higher fees.\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolNative (arb1:0xA45B5130f36CDcA45667738e2a258AB09f4A5f7F)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolMigratable (arb1:0xcE8CcA271Ebc0533920C83d39F417ED6A0abB7D0)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolUSDC (arb1:0xe8CDF27AcD73a434D661C84887215F7598e7d0d3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolUSDC (base:0x27a16dc786820B16E5c9028b75B99F6f604b5d26)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TokenMessagingBase (base:0x5634c4a5FEd09819E3c46D86A965Dd9447d86e47)\n +++ description: A LayerZero OApp owned by Stargate that manages bridging messages from all pools on Ethereum. It can batch messages with a 'bus' mode or dispatch them immediately (taxi) for higher fees.\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolEURC (base:0x87Dd5A7481726a53C5Ac6b0D296F5846f95a72f2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolNative (base:0xdc181Bd607330aeeBEF6ea62e03e5e1Fb4B6F7C7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Treasurer (eth:0x1041D127b2d4BC700F0F563883bC689502606918)\n +++ description: Permissions proxy allowing addresses to act through it.\n```\n\n```diff\n+ Status: CREATED\n contract LayerZero Executor (eth:0x173272739Bd7Aa6e4e214714048a9fE699453059)\n +++ description: Is tasked to execute verified messages at the destination for a fee paid at the origin. Jobs are assigned to this contract by the LayerZero Endpoint.\n```\n\n```diff\n+ Status: CREATED\n contract EndpointV2 (eth:0x1a44076050125825900e736c501f859c50fE728c)\n +++ description: A contract that is part of the LayerZero messaging protocol. The Stargate OApp owner can configure verification (MessageLib) and execution settings here.\n```\n\n```diff\n+ Status: CREATED\n contract BlockedMessageLib (eth:0x1ccBf0db9C192d969de57E25B3fF09A25bb1D862)\n +++ description: Simple LayerZero library that blocks all messages if configured.\n```\n\n```diff\n+ Status: CREATED\n contract StargatePool (eth:0x268Ca24DAefF1FaC2ed883c598200CcbB79E931D)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Treasury (eth:0x5ebB3f2feaA15271101a927869B3A56837e73056)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract CreditMessaging (eth:0x6b8aD17795d89B283e6D0362A87A403f3544bb9d)\n +++ description: A LayerZero OApp owned by Stargate that is used for the virtual crosschain accounting of available tokens to the local pools. A local pool thus has a record of how many tokens are available when bridging to another remote pool. The permissioned Planner role can move these credits.\n```\n\n```diff\n+ Status: CREATED\n contract TokenMessagingEthereum (eth:0x6d6620eFa72948C5f68A3C8646d58C00d3f4A980)\n +++ description: A LayerZero OApp owned by Stargate that manages bridging messages from all pools on Ethereum. It can batch messages with a 'bus' mode or dispatch them immediately (taxi) for higher fees.\n```\n\n```diff\n+ Status: CREATED\n contract ReadLib1002 (eth:0x74F55Bc2a79A27A0bF1D1A35dB5d0Fc36b9FDB9D)\n +++ description: LayerZero library used to read state from remote blockchains.\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolNative (eth:0x77b2043768d28E9C9aB44E1aBfC95944bcE57931)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolEURC (eth:0x783129E4d7bA0Af0C896c239E57C06DF379aAE8c)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Stargate DVN (eth:0x8FafAE7Dd957044088b3d0F67359C327c6200d18)\n +++ description: One of the registered DVNs for the OApp acts through this smart contract. They are allowed to verify LayerZero messages for the Stargate bridge and enable their execution at the destination.\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolMigratable (eth:0x933597a323Eb81cAe705C5bC29985172fd5A3973)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (eth:0xa36797bA947b378AefE5f726Cd87766CD3c25Ee3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Nethermind DVN (eth:0xa59BA433ac34D2927232918Ef5B2eaAfcF130BA5)\n +++ description: One of the registered DVNs for the OApp acts through this smart contract. They are allowed to verify LayerZero messages for the Stargate bridge and enable their execution at the destination.\n```\n\n```diff\n+ Status: CREATED\n contract SendUln302 (eth:0xbB2Ea70C9E858123480642Cf96acbcCE1372dCe1)\n +++ description: Send Library used by LayerZero, defining the protocol/execution of sent messages.\n```\n\n```diff\n+ Status: CREATED\n contract Stargate Multisig 2 (eth:0xBE634B030FEAaB661300667EaF82510a3a025413)\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolUSDC (eth:0xc026395860Db2d07ee33e05fE50ed7bD583189C7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ReceiveUln302 (eth:0xc02Ab410f0734EFa3F14628780e6e695156024C2)\n +++ description: Receive Library used by LayerZero, defining the validation of received messages.\n```\n\n```diff\n+ Status: CREATED\n contract StargatePool (eth:0xcDafB1b2dB43f366E48e6F614b8DCCBFeeFEEcD3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TokenMessagingLinea (linea:0x5f688F563Dc16590e570f97b542FA87931AF2feD)\n +++ description: A LayerZero OApp owned by Stargate that manages bridging messages from all pools on Ethereum. It can batch messages with a 'bus' mode or dispatch them immediately (taxi) for higher fees.\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolNative (linea:0x81F6138153d473E8c5EcebD3DC8Cd4903506B075)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolMigratable (oeth:0x19cFCE47eD54a88614648DC3f19A5980097007dD)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolUSDC (oeth:0xcE8CcA271Ebc0533920C83d39F417ED6A0abB7D0)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolNative (oeth:0xe8CDF27AcD73a434D661C84887215F7598e7d0d3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TokenMessagingOptimism (oeth:0xF1fCb4CBd57B67d683972A59B6a7b1e2E8Bf27E6)\n +++ description: A LayerZero OApp owned by Stargate that manages bridging messages from all pools on Ethereum. It can batch messages with a 'bus' mode or dispatch them immediately (taxi) for higher fees.\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolUSDC (scr:0x3Fc69CC4A842838bCDC9499178740226062b14E4)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TokenMessagingScroll (scr:0x4e422B0aCb2Bd7e3aC70B5c0E5eb806e86a94038)\n +++ description: A LayerZero OApp owned by Stargate that manages bridging messages from all pools on Ethereum. It can batch messages with a 'bus' mode or dispatch them immediately (taxi) for higher fees.\n```\n\n```diff\n+ Status: CREATED\n contract StargatePoolNative (scr:0xC2b638Cb5042c1B3c5d5C969361fB50569840583)\n +++ description: None\n```"
}
]
},
{
"id": "52d51948",
"date": "Mon, 14 Jul 2025 12:46:28 GMT",
"timestamp": 1752497188,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 29,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Factory (0x06D538690AF257Da524f25D0CD52fD85b1c2173E)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DAI Pool (0x0Faf1d2d3CED330824de3B8200fc8dc6E397850d)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SG-ETH Pool (0x101816545F6bd2b1076434B54383a1E633390A2E)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract WOO Pool (0x1CE66c52C36757Daf6551eDc04800A0Ec9983A09)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Bridge (0x296F55F8Fb28E498B858d0BcDA06D955B2Cb3f97)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TreasuryV2 (0x3773E1E9Deb273fCdf9f80bc88bB387B1e6Ce34d)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract USDT Pool (0x38EA452219524Bb87e18dE1C24D3bB59510BD783)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract USDT Pool2 (0x430Ebff5E3E80A6C58E7e6ADA1d90F5c28AA116d)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract UltraLightNodeV2 (0x4D73AdB72bC3DD368966edD0f0b2148401A178E2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract sUSD Pool (0x590d4f8A68583639f215f675F3a259Ed84790580)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TSS Oracle (0x5a54fe5234E811466D5366846283323c954310B2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract NonceContract (0x5B905fE05F81F3a8ad8B28C6E17779CFAbf76068)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StarGate Multisig (0x65bb797c2B9830d891D87288F029ed8dACc19705)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Endpoint (0x66A71Dcef29A0fFBDBE3c6a460a3B5BC225Cd675)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract USDD Pool (0x692953e758c3669290cb1677180c64183cEe374e)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Router (0x8731d54E9D02c286767d56ac03e8037C07e01e98)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StarGateFeeLibrary7 (0x8C3085D9a554884124C998CDB7f6d7219E9C1e6F)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract LayerZero Relayer (0x902F09715B6303d4173037652FA7377e5b98089E)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x967bAf657ec4d4b1cb00b06f7Cc6E8BA604e3AC8)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MAI Pool (0x9cef9a0b1bE0D289ac9f4a98ff317c33EAA84eb8)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract mETH Pool (0xA572d137666DCbAdFA47C3fC41F15e90134C618c)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xA658742d33ebd2ce2F0bdFf73515Aa797Fd161D9)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract LayerZero Multisig (0xBe010A7e3686FdF65E93344ab664D065A0B02478)\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n```\n\n```diff\n+ Status: CREATED\n contract Google Cloud Oracle (0xD56e4eAb23cb81f43168F9F45211Eb027b9aC7cc)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract METIS Pool (0xd8772edBF88bBa2667ed011542343b0eDDaCDa47)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract VerifierFeeLib (0xdeA04ef31C4B4FDf31CB58923F37869739280d49)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract USDC Pool (0xdf0770dF86a8034b3EFEf0A1Bb3c889B8332FF56)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract LUSD Pool (0xE8F55368C82D38bbbbDb5533e7F56AfC2E978CC2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Frax Pool (0xfA0F307783AC21C39E939ACFF795e27b650F6e68)\n +++ description: None\n```"
}
]
},
{
"id": "68c5a9fa",
"date": "Wed, 09 Jul 2025 15:13:57 GMT",
"timestamp": 1752074037,
"description": "Update LZ Multisig to a custom multisig contract that allows offchain signing with multichain onchain execution.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract TreasuryV2 (0x3773E1E9Deb273fCdf9f80bc88bB387B1e6Ce34d) {\n +++ description: None\n values.owner:\n- \"0xCDa8e3ADD00c95E5035617F970096118Ca2F4C92\"\n+ \"0xBe010A7e3686FdF65E93344ab664D065A0B02478\"\n }\n```\n\n```diff\n contract UltraLightNodeV2 (0x4D73AdB72bC3DD368966edD0f0b2148401A178E2) {\n +++ description: None\n values.owner:\n- \"0xCDa8e3ADD00c95E5035617F970096118Ca2F4C92\"\n+ \"0xBe010A7e3686FdF65E93344ab664D065A0B02478\"\n }\n```\n\n```diff\n contract Endpoint (0x66A71Dcef29A0fFBDBE3c6a460a3B5BC225Cd675) {\n +++ description: None\n values.owner:\n- \"0xCDa8e3ADD00c95E5035617F970096118Ca2F4C92\"\n+ \"0xBe010A7e3686FdF65E93344ab664D065A0B02478\"\n }\n```\n\n```diff\n- Status: DELETED\n contract LayerZero Multisig (0xCDa8e3ADD00c95E5035617F970096118Ca2F4C92)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract LayerZero Multisig (0xBe010A7e3686FdF65E93344ab664D065A0B02478)\n +++ description: Custom multisignature contract allowing offchain signing and execution on multiple target chains.\n```"
}
]
},
{
"id": "2e81cf41",
"date": "Tue, 28 Jan 2025 15:04:50 GMT",
"timestamp": 1738076690,
"description": "LayerZero MS update: members swapped and new member added (now 3/5).",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LayerZero Multisig (0xCDa8e3ADD00c95E5035617F970096118Ca2F4C92) {\n +++ description: None\n values.$members.4:\n+ \"0x73E9c017Ad37e2113e709D8070Cc9E1b28180e1e\"\n values.$members.3:\n- \"0x67FC8c432448f9a8d541C17579EF7a142378d5aD\"\n+ \"0x9F403140Bc0574D7d36eA472b82DAa1Bbd4eF327\"\n values.$members.2:\n- \"0x73E9c017Ad37e2113e709D8070Cc9E1b28180e1e\"\n+ \"0x771dcAcB96024d1e55Fd21Fe8a8187AA7EC9e77e\"\n values.$members.1:\n- \"0xBb6633cc267951E938F9B6421E4F54aa5b2c1936\"\n+ \"0x112c737AeEbD2E52DEb9ff5c9c19497F1A1777b0\"\n values.$members.0:\n- \"0x9F403140Bc0574D7d36eA472b82DAa1Bbd4eF327\"\n+ \"0xB981a2664f5f547291Df5F8dCD4505f7015912CF\"\n values.$threshold:\n- 2\n+ 3\n values.multisigThreshold:\n- \"2 of 4 (50%)\"\n+ \"3 of 5 (60%)\"\n }\n```"
}
]
},
{
"id": "bf719ff7",
"date": "Mon, 25 Nov 2024 10:52:49 GMT",
"timestamp": 1732531969,
"description": "MS signer change.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StarGate Multisig (0x65bb797c2B9830d891D87288F029ed8dACc19705) {\n +++ description: None\n values.$members.4:\n- \"0xF05F4211ad15A8e49b49C0436067CFFfEa783aA4\"\n+ \"0x7C8D1Db01130acEEc5fF892c99a18c4b4BAdC326\"\n }\n```"
}
]
},
{
"id": "281b5bc7",
"date": "Wed, 23 Oct 2024 10:07:17 GMT",
"timestamp": 1729678037,
"description": "LayerZero Multisig: One signer removed.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LayerZero Multisig (0xCDa8e3ADD00c95E5035617F970096118Ca2F4C92) {\n +++ description: None\n values.$members.4:\n- \"0x67FC8c432448f9a8d541C17579EF7a142378d5aD\"\n values.$members.3:\n- \"0x73E9c017Ad37e2113e709D8070Cc9E1b28180e1e\"\n+ \"0x67FC8c432448f9a8d541C17579EF7a142378d5aD\"\n values.$members.2:\n- \"0xBb6633cc267951E938F9B6421E4F54aa5b2c1936\"\n+ \"0x73E9c017Ad37e2113e709D8070Cc9E1b28180e1e\"\n values.$members.1:\n- \"0xe095F2590eF1Ab39601445025847Ed8E4B40D687\"\n+ \"0xBb6633cc267951E938F9B6421E4F54aa5b2c1936\"\n values.multisigThreshold:\n- \"2 of 5 (40%)\"\n+ \"2 of 4 (50%)\"\n }\n```"
}
]
},
{
"id": "98fd4566",
"date": "Thu, 14 Mar 2024 14:12:08 GMT",
"timestamp": 1710425528,
"description": "New PriceFeed Oracle implementation has been deployed. Chain paths and liquidity data has been updated.",
"isHighSeverity": true,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract (0xC03f31fD86a9077785b7bCf6598Ce3598Fa91113) {\n +++ description: None\n upgradeability.implementation:\n- \"0xF641db6860FD5f6643D05bD75405a2586a63a141\"\n+ \"0x13dff8847EA170eBb8439ce732c0A14Bb49fDd92\"\n implementations.0:\n- \"0xF641db6860FD5f6643D05bD75405a2586a63a141\"\n+ \"0x13dff8847EA170eBb8439ce732c0A14Bb49fDd92\"\n }\n```"
}
]
},
{
"id": "6665d9cf",
"date": "Wed, 14 Feb 2024 10:08:14 GMT",
"timestamp": 1707905294,
"description": "A new pool for mETH is added. The Default basis point multiplier of the Google Oracle is updated (related to fees). The latest version of the LayerZero Endpoint contract is updated:\n\n- Version 4: 0xd231084bfb234c107d3ee2b22f97f3346fdaf705 (SendUln301)\n- Version 5: 0x245b6e8ffe9ea5fc301e32d16f66bd4c2123eefc (ReceiveUln301)",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Factory (0x06D538690AF257Da524f25D0CD52fD85b1c2173E) {\n values.allPools[12]:\n+ \"0xA572d137666DCbAdFA47C3fC41F15e90134C618c\"\n values.allPoolsLength:\n- 12\n+ 13\n }\n```\n\n```diff\n contract Endpoint (0x66A71Dcef29A0fFBDBE3c6a460a3B5BC225Cd675) {\n values.latestVersion:\n- 3\n+ 5\n }\n```\n\n```diff\n contract Google Cloud Oracle (0xD56e4eAb23cb81f43168F9F45211Eb027b9aC7cc) {\n values.defaultMultiplierBps:\n- 12000\n+ 12100\n }\n```\n\n```diff\n+ Status: CREATED\n contract mETH Pool (0xA572d137666DCbAdFA47C3fC41F15e90134C618c) {\n }\n```"
}
]
},
{
"id": "079a47d9",
"date": "Tue, 19 Dec 2023 13:36:06 GMT",
"timestamp": 1702992966,
"description": "Added new config values.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UltraLightNodeV2 (0x4D73AdB72bC3DD368966edD0f0b2148401A178E2) {\n values.stargateOracles[1]:\n+ \"0x000000000000000000000000d56e4eab23cb81f43168f9f45211eb027b9ac7cc\"\n values.stargateOracles[0]:\n+ \"0x0000000000000000000000005a54fe5234e811466d5366846283323c954310b2\"\n values.stargateRelayers[0]:\n+ \"0x000000000000000000000000902f09715b6303d4173037652fa7377e5b98089e\"\n }\n```"
}
]
},
{
"id": "bc8f9ae0",
"date": "Thu, 23 Nov 2023 13:31:10 GMT",
"timestamp": 1700746270,
"description": "StarGateFeeLibrary7 owner was replaced: 0x1D7C6783328C145393e84fb47a7f7C548f5Ee28d -> 0x65bb797c2B9830d891D87288F029ed8dACc19705",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StarGateFeeLibrary7 (0x8C3085D9a554884124C998CDB7f6d7219E9C1e6F) {\n values.owner:\n- \"0x1D7C6783328C145393e84fb47a7f7C548f5Ee28d\"\n+ \"0x65bb797c2B9830d891D87288F029ed8dACc19705\"\n }\n```"
}
]
},
{
"id": "ad5a1603",
"date": "Fri, 17 Nov 2023 12:24:03 GMT",
"timestamp": 1700223843,
"description": "One EOA owner was replaced in StarGate Multisig:\n\n- removed: 0x285b7EEa81a5B66B62e7276a24c1e0F83F7409c1\n- added: 0x2E1078e128e8AA6A70eC8d1B17A79Fc4B457d437\n\nThe same change was performed on a multisig in the Aptos project.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StarGate Multisig (0x65bb797c2B9830d891D87288F029ed8dACc19705) {\n values.getOwners.2:\n- \"0x285b7EEa81a5B66B62e7276a24c1e0F83F7409c1\"\n+ \"0x1D7C6783328C145393e84fb47a7f7C548f5Ee28d\"\n values.getOwners.1:\n- \"0x1D7C6783328C145393e84fb47a7f7C548f5Ee28d\"\n+ \"0x565cFd7224bbc2a81a6e2a1464892ecB27efB070\"\n values.getOwners.0:\n- \"0x565cFd7224bbc2a81a6e2a1464892ecB27efB070\"\n+ \"0x2E1078e128e8AA6A70eC8d1B17A79Fc4B457d437\"\n }\n```"
}
]
}
]
+30 -4
+8 -1
{
"addresses": {
"ethereum": [
{
"name": "Starknet",
"isVerified": true,
"address": "eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x15e8c684FD095d4796A0c0CF678554F4c1C7C361",
"eth:0xCA112018fEB729458b628AadC8f996f9deCbCa0c"
],
"implementations": [
"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A"
"eth:0x73352C6228Ec1DCf737973Db9822bB8e8a465c99"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1636979180,
"transactionHash": "0xccde4b2c417c0361ca34b8896ff8ee8a471aeab423613db8175463d903d4c2fe",
"implementations": [
"eth:0xD8Cd77206fCb239BdDaaDDdA8C87CBFe7d67Ca2b"
]
},
{
"timestamp": 1643193921,
"transactionHash": "0xf928abd9eb81afac14d1e8f76a52de80f9c38cbe0e72d2f1ec922caf7bf1cad0",
"implementations": [
"eth:0x944960b90381d76368aecE61F269bD99FFfd627e"
]
},
{
"timestamp": 1647853574,
"transactionHash": "0x4e551f471810ea806502b1e24f9ef6793f0a0b68f24c3cdec44df444921d7689",
"implementations": [
"eth:0xDC109C4a1A3084Ed15A97692FBEF3e1FB32A6955"
]
},
{
"timestamp": 1655284858,
"transactionHash": "0x65e31a14e45c3f909c1f90e67b3bb9a54e256d28cb8a27432f73268a19ebab84",
"implementations": [
"eth:0x2B3B750f1f10c85c8A6D476Fc209A8DC7E4Ca3F8"
]
},
{
"timestamp": 1662879548,
"transactionHash": "0x6f7ff0be4f155165290702052683f0a87b5e660812949c6e10eac6602c6aa5e7",
"implementations": [
"eth:0xE267213B0749Bb94c575F6170812c887330d9cE3"
]
},
{
"timestamp": 1680085307,
"transactionHash": "0x861257880dfe325f603d4371a10888daa8fb0a16c205bb43647e8c5547298e36",
"implementations": [
"eth:0x739A654271c565839F0408546706bBea2F1FfE42"
]
},
{
"timestamp": 1684906283,
"transactionHash": "0x640cb38b6ffa91068da7cc15730268402661ec3f62f084b2a58522f600d89277",
"implementations": [
"eth:0x16938E4b59297060484Fa56a12594d8D6F4177e8"
]
},
{
"timestamp": 1710252923,
"transactionHash": "0xb9cd560bbc6f0478eeb5bed042a06d988ef6ebfd1cc9bfb509b4d8202b517ecc",
"implementations": [
"eth:0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24"
]
},
{
"timestamp": 1724855579,
"transactionHash": "0x4186d705e39a8e7cb19069c9426e4b211fad28f97cb7f641e4bd240971318e8d",
"implementations": [
"eth:0x47103A9b801eB6a63555897d399e4b7c1c8Eb5bC"
]
},
{
"timestamp": 1742836319,
"transactionHash": "0x7e6e541652c8ed05afba0c7fd372d6a340d438d85a545666ee7ecd1a4046eb5b",
"implementations": [
"eth:0x2793010E6711Acd5C46ed17f2183a9d58db71e04"
]
},
{
"timestamp": 1776686015,
"transactionHash": "0xb2fd817ea47d39435e0b08825964bcb0b2ae08ebc4c5a47954f9b169235ed1c1",
"implementations": [
"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A"
]
},
{
"timestamp": 1791976055,
"transactionHash": "0x69e217f115ea6b98822ca30aec1684377f4468232f92b36ddd9069cda5d5ee14",
"implementations": [
"eth:0x73352C6228Ec1DCf737973Db9822bB8e8a465c99"
]
}
],
"description": "Central Starknet rollup contract. For every state update it derives a SHARP fact from the state-transition output and either the Starknet OS or aggregator program hash, checks that fact through the configured SHARP call proxy, and requires the output's OS-config hash to match. It also processes L1 <-> L2 messages and stores the finalized L2 state.\n* Roles:\n * **admin**: DelayedExecutor, Starkware Security Council; ultimately Starkware Multisig 1\n * **operators**: EOA 4, Starkware SCMinority Multisig",
"upgradableBy": [
{
"name": "Starkware Security Council",
"delay": "no"
},
{
"name": "Starkware Multisig 1",
"delay": "8d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4#code"
},
{
"name": "CpuVerifierAllSolidity_2026_13",
"isVerified": true,
"address": "eth:0x015381651F240Ed6C44122dCba6Cf807c9442CD6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable Solidity verifier for one Cairo CPU layout. It checks the STARK proof using layout-specific constraint, OODS, Merkle, FRI, and periodic-column helper contracts. The SHARP verifier can select any configured layout by `cairoVerifierId`.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x015381651F240Ed6C44122dCba6Cf807c9442CD6#code"
},
{
"name": "CpuVerifierDex_2026_13",
"isVerified": true,
"address": "eth:0x0cD0cDf0132c566db61B691BCEEBA2c4D8cA5CdC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable Solidity verifier for one Cairo CPU layout. It checks the STARK proof using layout-specific constraint, OODS, Merkle, FRI, and periodic-column helper contracts. The SHARP verifier can select any configured layout by `cairoVerifierId`.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0cD0cDf0132c566db61B691BCEEBA2c4D8cA5CdC#code"
},
{
"name": "CairoBootloaderProgram",
"isVerified": true,
"address": "eth:0x24105e6697AdD9B4B1BDE04079a91BDFCCa24A47",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Stores the complete compiled Cairo outer bootloader used as the top-level program of a SHARP proof. The SHARP verifier copies these words into public memory, pinning this exact executable onchain independently of the separately committed simple, applicative, and recursive-verifier programs.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x24105e6697AdD9B4B1BDE04079a91BDFCCa24A47#code"
},
{
"name": "CpuVerifierRecursive_2026_13",
"isVerified": true,
"address": "eth:0x2867A4509B0969531641A42a3D4A9B0A07109B6B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable Solidity verifier for one Cairo CPU layout. It checks the STARK proof using layout-specific constraint, OODS, Merkle, FRI, and periodic-column helper contracts. The SHARP verifier can select any configured layout by `cairoVerifierId`.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2867A4509B0969531641A42a3D4A9B0A07109B6B#code"
},
{
"name": "CpuVerifierSmall_2026_13",
"isVerified": true,
"address": "eth:0x30F3AB988Cb00fe3Fb5ab891F50c13684770419b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable Solidity verifier for one Cairo CPU layout. It checks the STARK proof using layout-specific constraint, OODS, Merkle, FRI, and periodic-column helper contracts. The SHARP verifier can select any configured layout by `cairoVerifierId`.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x30F3AB988Cb00fe3Fb5ab891F50c13684770419b#code"
},
{
"name": "MemoryPageFactRegistry_2023_9",
"isVerified": true,
"address": "eth:0x40864568f679c10aC9e72211500096a5130770fA",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Permissionless commitment calculator and registry used by the Solidity STARK verifiers. Anyone may submit a public-memory page and interaction elements; the contract computes its hash and cumulative product and registers the fact key committing to them, which the CPU verifier must bind to the proof. It is part of the proof verifier, not an application-level program registry. A malicious or nonconforming implementation can break public-memory soundness; binding to a different honest registry generally causes a liveness failure instead.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x40864568f679c10aC9e72211500096a5130770fA#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"
]
},
{
"timestamp": 1769954759,
"transactionHash": "0x257cfdefacd18f0c221b1e486ee002cb974d14bb292884dfaf7f5aa987cc7170",
"implementations": [
"eth:0x3597c5CBCbCB30079a0bD2A68cDE5f98272f9feb"
]
},
{
"timestamp": 1777465247,
"transactionHash": "0xf088946bc461774cf86ce348fcee4d52bb27ebf049d99f3fab806226053b0d5b",
"implementations": [
"eth:0x3597c5CBCbCB30079a0bD2A68cDE5f98272f9feb"
]
},
{
"timestamp": 1782033359,
"transactionHash": "0x57f323ff6c828c8fe0c65c9c89d5b242264455cd5f3a5bacd25a78efa17b0ed4",
"implementations": [
"eth:0x3597c5CBCbCB30079a0bD2A68cDE5f98272f9feb"
]
},
{
"timestamp": 1783857227,
"transactionHash": "0x7f1e6f9a7268ea6ce5b3b2ce055c3ce420ee776c63c41f57823a0e9cb782e254",
"implementations": [
"eth:0x3597c5CBCbCB30079a0bD2A68cDE5f98272f9feb"
]
}
],
"description": "Upgradeable call router through which Starknet and other applications access SHARP fact registries. It uses `call`, not `delegatecall`, so facts and immutable verifier configuration remain at each target registry. The explicit `isValid` entry point always queries the default target. Other calls handled by the fallback, principally proof submissions, can be routed per caller to a still-active registry in the default target's reference chain. The default target can be replaced by SHARP Multisig after 8d.\n* Roles:\n * **admin**: SHARP Multisig\n * **appGovernor**: SHARP Multisig\n * **appRoleAdmin**: SHARP Multisig\n * **governanceAdmin**: SHARP Multisig",
"upgradableBy": [
{
"name": "SHARP Multisig",
"delay": "8d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x47312450B3Ac8b5b8e247a6bB6d523e7605bDb60#code"
},
{
"name": "SHARPVerifier",
"isVerified": true,
"address": "eth:0x4956bda1d23F75B988644329c5B06BD1494a72b6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable GPS statement verifier shared by Starknet and other StarkWare systems. It verifies a STARK proof of the exact Cairo bootloader stored onchain, forces the bootloader configuration into public memory, and registers a fact for every bootloader task. A fact is also considered valid when it exists in the time-limited reference fact registry.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x4956bda1d23F75B988644329c5B06BD1494a72b6#code"
},
{
"name": "SHARPVerifier_2026_13_1",
"isVerified": true,
"address": "eth:0x5C1Ce45534A9c5f7F3E6683Cd79a8ad57EE3a9fe",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable GPS statement verifier shared by Starknet and other StarkWare systems. It verifies a STARK proof of the exact Cairo bootloader stored onchain, forces the bootloader configuration into public memory, and registers a fact for every bootloader task. A fact is also considered valid when it exists in the time-limited reference fact registry.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5C1Ce45534A9c5f7F3E6683Cd79a8ad57EE3a9fe#code"
},
{
"name": "CpuVerifierDexWithBitwise_2026_13",
"isVerified": true,
"address": "eth:0x6a67796ee97700B5B5f5aFBCFFDCbc5F80803F11",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable Solidity verifier for one Cairo CPU layout. It checks the STARK proof using layout-specific constraint, OODS, Merkle, FRI, and periodic-column helper contracts. The SHARP verifier can select any configured layout by `cairoVerifierId`.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6a67796ee97700B5B5f5aFBCFFDCbc5F80803F11#code"
},
{
"name": "CpuVerifierStarknet_2026_13",
"isVerified": true,
"address": "eth:0x71574057D12541ccDa98643aC56441838353A26D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable Solidity verifier for one Cairo CPU layout. It checks the STARK proof using layout-specific constraint, OODS, Merkle, FRI, and periodic-column helper contracts. The SHARP verifier can select any configured layout by `cairoVerifierId`.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x71574057D12541ccDa98643aC56441838353A26D#code"
},
{
"name": "SHARPVerifier_2026_13_2",
"isVerified": true,
"address": "eth:0x7Da1225C752ab37E610a242D9D8a0548262E3fF7",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable GPS statement verifier shared by Starknet and other StarkWare systems. It verifies a STARK proof of the exact Cairo bootloader stored onchain, forces the bootloader configuration into public memory, and registers a fact for every bootloader task. A fact is also considered valid when it exists in the time-limited reference fact registry.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7Da1225C752ab37E610a242D9D8a0548262E3fF7#code"
},
{
"name": "CpuVerifierRecursiveLargeOutput_2026_13",
"isVerified": true,
"address": "eth:0xbe0F8F150Fd10798524B4de80eD75751658CAEF3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable Solidity verifier for one Cairo CPU layout. It checks the STARK proof using layout-specific constraint, OODS, Merkle, FRI, and periodic-column helper contracts. The SHARP verifier can select any configured layout by `cairoVerifierId`.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbe0F8F150Fd10798524B4de80eD75751658CAEF3#code"
},
{
"name": "MemoryPageFactRegistry",
"isVerified": true,
"address": "eth:0xe583BcDE0160b637330b27a3ea1F3c02ba2eC460",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Permissionless commitment calculator and registry used by the Solidity STARK verifiers. Anyone may submit a public-memory page and interaction elements; the contract computes its hash and cumulative product and registers the fact key committing to them, which the CPU verifier must bind to the proof. It is part of the proof verifier, not an application-level program registry. A malicious or nonconforming implementation can break public-memory soundness; binding to a different honest registry generally causes a liveness failure instead.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe583BcDE0160b637330b27a3ea1F3c02ba2eC460#code"
},
{
"name": "SHARPVerifier_2026_13_3",
"isVerified": true,
"address": "eth:0xE67515a751291445B85b2F176c1eCdf08e86b406",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable GPS statement verifier shared by Starknet and other StarkWare systems. It verifies a STARK proof of the exact Cairo bootloader stored onchain, forces the bootloader configuration into public memory, and registers a fact for every bootloader task. A fact is also considered valid when it exists in the time-limited reference fact registry.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE67515a751291445B85b2F176c1eCdf08e86b406#code"
},
{
"name": "CpuVerifierPerpetual_2026_13",
"isVerified": true,
"address": "eth:0xFFC7974cd74b95f631f454cd787AAc28F0476b44",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable Solidity verifier for one Cairo CPU layout. It checks the STARK proof using layout-specific constraint, OODS, Merkle, FRI, and periodic-column helper contracts. The SHARP verifier can select any configured layout by `cairoVerifierId`.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFFC7974cd74b95f631f454cd787AAc28F0476b44#code"
},
{
"name": "DelayedExecutor",
"isVerified": true,
"address": "eth:0xCA112018fEB729458b628AadC8f996f9deCbCa0c",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A simple Timelock contract with an immutable delay of 8d. The owner (Starkware Multisig 1) can queue transactions.\n* Roles:\n * **owner**: Starkware Multisig 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xCA112018fEB729458b628AadC8f996f9deCbCa0c#code"
},
{
"name": "ETHBridge",
"isVerified": true,
"address": "eth:0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0xCA112018fEB729458b628AadC8f996f9deCbCa0c",
"eth:0x15e8c684FD095d4796A0c0CF678554F4c1C7C361"
],
"implementations": [
"eth:0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1647857960,
"transactionHash": "0x4c7952f4056367ec557d94b41d0784b7eb247d1f9de7378bdff7a5218c85314d",
"implementations": [
"eth:0x0205172F25e791975edB4dEF203f3789B01f43bb"
]
},
{
"timestamp": 1649596101,
"transactionHash": "0x9b76ede78b75c332ea2ae855b62a2363c197ee521522ab1a14aa5517f2610dd5",
"implementations": [
"eth:0x5e70F3301bbBBB1DFA2c8d20D75b162aFa6Dbe37"
]
},
{
"timestamp": 1668953231,
"transactionHash": "0xa31315fda290a9ee1abf459ba81a8c5986c5c9da58cda4c20a144ab16e3a9ba1",
"implementations": [
"eth:0x5e70F3301bbBBB1DFA2c8d20D75b162aFa6Dbe37"
]
},
{
"timestamp": 1680016103,
"transactionHash": "0x826f7e63249e192040d6b9301a68a0c7fc1130d06339ab0c758ff14799f9adfb",
"implementations": [
"eth:0x455603AD9ae671F6c1f0f746F24d7904cA603581"
]
},
{
"timestamp": 1707387203,
"transactionHash": "0x64910ea21a212ae671687842ec3c4fcd187e935ddf2d6cc90f41b6d99b592964",
"implementations": [
"eth:0x455603AD9ae671F6c1f0f746F24d7904cA603581"
]
},
{
"timestamp": 1707738959,
"transactionHash": "0x1f56cc90fd40bcc00a27f94c989e93cb414a884e2fe971323426f40d58c71306",
"implementations": [
"eth:0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95"
]
},
{
"timestamp": 1746967799,
"transactionHash": "0xf0fc6787173f9e4ee964487191601bf84e443f30192c896849df7fd12dfa1a95",
"implementations": [
"eth:0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95"
]
}
],
"description": "Standard Starkware canonical bridge escrow for ETH. Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: DelayedExecutor, Starkware Security Council; ultimately Starkware Multisig 1\n * **govAdmin**: Starkware Security Council\n * **secAdmin**: Starkware SCMinority Multisig\n * **secAgent**: EOA 5, Starkware Multisig 4; ultimately EOA 1, EOA 2, EOA 3",
"upgradableBy": [
{
"name": "Starkware Security Council",
"delay": "no"
},
{
"name": "Starkware Multisig 1",
"delay": "8d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419#code"
},
{
"name": "LORDSBridge",
"isVerified": true,
"address": "eth:0x023A2aAc5d0fa69E3243994672822BA43E34E5C9",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Custom (and immutable) entry point contract and escrow for users depositing LORDS to via StarkGate to the L2.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x023A2aAc5d0fa69E3243994672822BA43E34E5C9#code"
},
{
"name": "StarkgateRegistry",
"isVerified": true,
"address": "eth:0x1268cc171c54F2000402DfF20E93E60DF4c96812",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x39C3b4e670ACa8BC668e5A79680973e57a4C8CEC"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1707325511,
"transactionHash": "0x54e1021653aaca692f4ead2a85e5bd32648919d01953e88693a833d45c583fab",
"implementations": [
"eth:0x642F04899B6cA155c2a5eAdD4e4ed634f1B07Dd7"
]
},
{
"timestamp": 1740918611,
"transactionHash": "0x86ccb24833adb42f79ff55fcce4e69508e467df41c653a1b2578b5f2788f3c0c",
"implementations": [
"eth:0x39C3b4e670ACa8BC668e5A79680973e57a4C8CEC"
]
}
],
"description": "A simple registry that maps tokens to their StarkGate escrows. It also keeps a list of tokens that are blocked from being added to StarkGate.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1268cc171c54F2000402DfF20E93E60DF4c96812#code"
},
{
"name": "WBTCBridge",
"isVerified": true,
"address": "eth:0x283751A21eafBFcD52297820D27C1f1963D9b5b4",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0xE0D1fab527A85D955d4c05323250367E61bA3f18"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1657138806,
"transactionHash": "0xeedccfe88453ea74a342ca57926a88b6033057eb15b43291332f0fa19c197eee",
"implementations": [
"eth:0xaec1fB35875a3816a5d09D61F086FeB6c252e096"
]
},
{
"timestamp": 1657630577,
"transactionHash": "0xc450cc918a45c46057f13a072c41a646e78f52af5e36f82b7061b478e44b7fb3",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1668953231,
"transactionHash": "0x5bc722c79d5a4303b76638f6fc75d26c5dbfba39202c2a7ced89b96d3ead97e7",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1680016007,
"transactionHash": "0xb638d945b6a6feba94d6219f1618a6e279720e105d4476db19063abd4164117f",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707387203,
"transactionHash": "0x64910ea21a212ae671687842ec3c4fcd187e935ddf2d6cc90f41b6d99b592964",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707731699,
"transactionHash": "0x426174e7e63465569d28b3ca3e807e69859f9a2650702487260b9a45646d5f32",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
},
{
"timestamp": 1768834883,
"transactionHash": "0xdb7a4f9c3e38994d167d6943b6b7f247972ac3c7564febba428a407cf0e89e5b",
"implementations": [
"eth:0xE0D1fab527A85D955d4c05323250367E61bA3f18"
]
}
],
"description": "Haltable version of the Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually. Deposits for a particular token can be halted by app governor, halt must be finalized in the second transaction that also sweeps all funds into a clrearing address. There is no logic to resume bridging after the halt.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2\n * **secAgent**: Starkware Multisig 4; ultimately EOA 1, EOA 2, EOA 3",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x283751A21eafBFcD52297820D27C1f1963D9b5b4#code"
},
{
"name": "FXSBridge",
"isVerified": true,
"address": "eth:0x66ba83ba3D3AD296424a2258145d9910E9E40B7C",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1692793367,
"transactionHash": "0x8a85416efb74a9a7b95f6596bbcf947bdea2e1664c1401fee191dbc35ed63b9e",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707646139,
"transactionHash": "0x083f442a6f6154d565fca76e15e4b7ff09a9ca6fc8efec588139a52896e67d4c",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x66ba83ba3D3AD296424a2258145d9910E9E40B7C#code"
},
{
"name": "LBTCBridge",
"isVerified": true,
"address": "eth:0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b"
],
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1757941451,
"transactionHash": "0x503782544b4f41c5e38d13ba7e96e5dd4fb597abb7a595a7da2af8ddfaface58",
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
]
}
],
"description": "Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually.\n* Roles:\n * **admin**: EOA 6\n * **govAdmin**: EOA 6\n * **secAdmin**: EOA 6",
"upgradableBy": [
{
"id": "EOA-6",
"name": "EOA 6",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e#code"
},
{
"name": "L1DaiGateway",
"isVerified": true,
"address": "eth:0x9F96fE0633eE838D0298E8b8980E6716bE81388d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Gateway contract that is the user entrypoint to deposit DAI to a custom escrow to bridge via StarkGate.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9F96fE0633eE838D0298E8b8980E6716bE81388d#code"
},
{
"name": "USDTBridge",
"isVerified": true,
"address": "eth:0xbb3400F107804DFB482565FF1Ec8D8aE66747605",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1657139268,
"transactionHash": "0x3e25166c11d40ded7d1ae272a9e4eb416b2d35a8f4919ca0a07c55f0065de787",
"implementations": [
"eth:0xaec1fB35875a3816a5d09D61F086FeB6c252e096"
]
},
{
"timestamp": 1657630654,
"transactionHash": "0x55d370d26d45d7aee7f06e7f741d5f0d37154889faa1fa4e393370cae31a0f0f",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1668953231,
"transactionHash": "0x33fdbe5a0d1ba784eb5e2f0f34b42d57c5c2b6b0bd3562746c7ee0447f7767aa",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1680016067,
"transactionHash": "0xac209ae933b3ae24348f926df5f8978093617c711baaceefa21b90c08c82a0af",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707387203,
"transactionHash": "0x64910ea21a212ae671687842ec3c4fcd187e935ddf2d6cc90f41b6d99b592964",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707732815,
"transactionHash": "0xe594bd2581f3da0e554ad8664aecc1441280850cc7827a9e42d172bbf54cac5d",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2\n * **secAgent**: Starkware Multisig 4; ultimately EOA 1, EOA 2, EOA 3",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbb3400F107804DFB482565FF1Ec8D8aE66747605#code"
},
{
"name": "wstETHBridge",
"isVerified": true,
"address": "eth:0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1685453471,
"transactionHash": "0xb4de1aa42c3ade894dd66e06e6125549e8004d2d6857cf456ef5bde3f583ea7c",
"implementations": [
"eth:0xEf3525a1081a4cf6f76E0B202a575195cEE083a2"
]
},
{
"timestamp": 1707416015,
"transactionHash": "0x4eb13c68776e5aa840ab59c3c4ff369372fd461bab760eee12d1ae7ccf7baa6e",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B#code"
},
{
"name": "STRKBridge",
"isVerified": true,
"address": "eth:0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0xCA112018fEB729458b628AadC8f996f9deCbCa0c",
"eth:0x15e8c684FD095d4796A0c0CF678554F4c1C7C361"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1704907283,
"transactionHash": "0x4ea20358347292f048a26277477a9f145add434e50e3f64c85f494469768c876",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1705239263,
"transactionHash": "0x42056631084f574f2ed5f49bef3d1aabab22008266ac97afea3e5f42649bd7c3",
"implementations": [
"eth:0x052C81F05595B5DeF4fdFEdbD7CA7b4A8a7B50C1"
]
},
{
"timestamp": 1705249823,
"transactionHash": "0xe8154cce45dafa5cfcb95d134f3da8a13c80c6546da07ca92c88d5c54286cdc3",
"implementations": [
"eth:0x7f2a18900A978D4390a3640e34739BB697777A71"
]
},
{
"timestamp": 1707751031,
"transactionHash": "0x7c5561efa149f2be36fac917f47b0b107218b43de1eac56ceb97d008257bd850",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
},
{
"timestamp": 1739105903,
"transactionHash": "0xccb802ed2caee6856e9141983a642a0d4881cd64a209436d3fdeb4776c841175",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
},
{
"timestamp": 1746967799,
"transactionHash": "0xf0fc6787173f9e4ee964487191601bf84e443f30192c896849df7fd12dfa1a95",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: DelayedExecutor, Starkware Security Council; ultimately Starkware Multisig 1\n * **govAdmin**: Starkware Security Council\n * **secAdmin**: Starkware SCMinority Multisig\n * **secAgent**: EOA 5, Starkware Multisig 4; ultimately EOA 1, EOA 2, EOA 3",
"upgradableBy": [
{
"name": "Starkware Security Council",
"delay": "no"
},
{
"name": "Starkware Multisig 1",
"delay": "8d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4#code"
},
{
"name": "rETHBridge",
"isVerified": true,
"address": "eth:0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1685882531,
"transactionHash": "0x90d66157a3812393338739b0ee7a84d0d310b72a8282946e5874824c60d30c51",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707431855,
"transactionHash": "0x5420188e3cc869219076d140de7359aa4b930c51263c00728bb81e3a68c1ba8c",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2#code"
},
{
"name": "sfrxETHBridge",
"isVerified": true,
"address": "eth:0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1692793367,
"transactionHash": "0x368efd40dcf16ad376c8f38adf1e68361874e2b5b2de52d7088cd7de6b38f02a",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707646139,
"transactionHash": "0x083f442a6f6154d565fca76e15e4b7ff09a9ca6fc8efec588139a52896e67d4c",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8#code"
},
{
"name": "FRAXBridge",
"isVerified": true,
"address": "eth:0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1692793367,
"transactionHash": "0x591030492947a546e11122e42c12975237d800d3d509d284b9c8aaf541dbdc79",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707646139,
"transactionHash": "0x083f442a6f6154d565fca76e15e4b7ff09a9ca6fc8efec588139a52896e67d4c",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb#code"
},
{
"name": "LUSDBridge",
"isVerified": true,
"address": "eth:0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x5751a83170BeA11fE7CdA5D599B04153C021f21A"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1688046899,
"transactionHash": "0xa67fa2a98e3b92d67fe9ea402dd53955fc2d74f6af3ee0183e20afad68ac5621",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707433079,
"transactionHash": "0x1157d4bd2b7d00a0f9833ef0832822bc331d5f904c0c3f9f14fa7942678fbf58",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835007,
"transactionHash": "0x4a1c60505d4d6d22f51b164696b7eadba1955278a577c7e712b2cd0347bee330",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: EOA 7\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2",
"upgradableBy": [
{
"id": "EOA-7",
"name": "EOA 7",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5#code"
},
{
"name": "MultiBridge",
"isVerified": true,
"address": "eth:0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1707325571,
"transactionHash": "0x52b4a75a83546e4e463a919cf778cb9a4882d536c4bf7b80a62098698c741fd8",
"implementations": [
"eth:0x594cCaDF93F860dc42Cf9fd7bCea47Ff4d135D7A"
]
},
{
"timestamp": 1740918611,
"transactionHash": "0x86ccb24833adb42f79ff55fcce4e69508e467df41c653a1b2578b5f2788f3c0c",
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
]
}
],
"description": "Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2\n * **manager**: StarkgateManager\n * **secAdmin**: Starkware Multisig 2\n * **secAgent**: Starkware Multisig 4; ultimately EOA 1, EOA 2, EOA 3",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb#code"
},
{
"name": "USDCBridge",
"isVerified": true,
"address": "eth:0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1657139268,
"transactionHash": "0x7fee1d4145372b9f1a39594bc71c9074f5982c5c546135c1aba6810c5c33cd15",
"implementations": [
"eth:0xaec1fB35875a3816a5d09D61F086FeB6c252e096"
]
},
{
"timestamp": 1657630654,
"transactionHash": "0x8c5f529b4aea40150673a24be2daf67b98dfea900848e2e4bfe863b29397cb16",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1668953231,
"transactionHash": "0x100be562b99e029f2419718dfa5e722c6d27cd99e9e5fbbd61dbda223d8872c2",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1680016067,
"transactionHash": "0x1c54434b6dab2c13187d16161d7da8b6286b4f71d3ff3ab580ffcc90ac387d31",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707387203,
"transactionHash": "0x64910ea21a212ae671687842ec3c4fcd187e935ddf2d6cc90f41b6d99b592964",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707732959,
"transactionHash": "0x147393fe2175d3bd2a267730c8066afd475199c52a1895b5524100c3b2ca2c07",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2\n * **secAgent**: Starkware Multisig 4; ultimately EOA 1, EOA 2, EOA 3",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "3d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816#code"
},
{
"name": "UNIBridge",
"isVerified": true,
"address": "eth:0xf76e6bF9e2df09D0f854F045A3B724074dA1236B",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1698061943,
"transactionHash": "0x9e8cd16d463bff3aaa9aca2f741819ccdba2148450f935446facdb498a424a1e",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707432767,
"transactionHash": "0x2513dff6fab1fe6b7f95d9e436c18c8dd79965a3c7217f79c69787b2f42abc4a",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835031,
"transactionHash": "0x80c2489d99e1aa4593e1749d905120a22bc688a8c62343edce82130c4566de72",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n* Roles:\n * **admin**: Starkware Multisig 2\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2",
"upgradableBy": [
{
"name": "Starkware Multisig 2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf76e6bF9e2df09D0f854F045A3B724074dA1236B#code"
},
{
"name": "DAIBridge",
"isVerified": true,
"address": "eth:0x0437465dfb5B79726e35F08559B0cBea55bb585C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Simple escrow that accepts tokens and allows to configure permissioned addresses that can access the tokens.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0437465dfb5B79726e35F08559B0cBea55bb585C#code"
},
{
"name": "SolvBTCBridge",
"isVerified": true,
"address": "eth:0xA86b9b9c58d4f786F8ea89356c9c9Dde9432Ab10",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x5751a83170BeA11fE7CdA5D599B04153C021f21A"
],
"implementations": [
"eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750862507,
"transactionHash": "0x9529b94a823908b9a8c9097a89ef76e034740a971363e3f7913f4971eb3633e3",
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
]
},
{
"timestamp": 1768493183,
"transactionHash": "0x27532d9c2db25f9d053fe4246f83a8c719a0d0b000a9d0e9f1e7dae1e05f287a",
"implementations": [
"eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7"
]
},
{
"timestamp": 1768493315,
"transactionHash": "0x787522b1ecf6f59d77fdd6278cf3d92f7b28cc292264e5f7ae9ef93c1344d587",
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
]
},
{
"timestamp": 1768831679,
"transactionHash": "0xa0ae9228abd03f1701caf995520b4ad4f9998bf46376e5f8cea39a24d0ee461a",
"implementations": [
"eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7"
]
}
],
"description": "Haltable version of the Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually. Deposits for a particular token can be halted by app governor, halt must be finalized in the second transaction that also sweeps all funds into a clrearing address. There is no logic to resume bridging after the halt.\n* Roles:\n * **admin**: EOA 7\n * **govAdmin**: EOA 7\n * **secAdmin**: EOA 7",
"upgradableBy": [
{
"id": "EOA-7",
"name": "EOA 7",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xA86b9b9c58d4f786F8ea89356c9c9Dde9432Ab10#code"
},
{
"name": "CpuFrilessVerifier",
"isVerified": true,
"address": "eth:0x03Fa911dfCa026D9C8Edb508851b390accF912e8",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x03Fa911dfCa026D9C8Edb508851b390accF912e8#code"
},
{
"name": "CpuFrilessVerifier",
"isVerified": true,
"address": "eth:0x217750c27bE9147f9e358D9FF26a8224F8aCC214",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x217750c27bE9147f9e358D9FF26a8224F8aCC214#code"
},
{
"name": "CairoBootloaderProgram_2022_7",
"isVerified": true,
"address": "eth:0x5d07afFAfc8721Ef3dEe4D11A2D1484CBf6A9dDf",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5d07afFAfc8721Ef3dEe4D11A2D1484CBf6A9dDf#code"
},
{
"name": "CpuFrilessVerifier",
"isVerified": true,
"address": "eth:0x630A97901Ac29590DF83f4A64B8D490D54caf239",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x630A97901Ac29590DF83f4A64B8D490D54caf239#code"
},
{
"name": "CpuFrilessVerifier",
"isVerified": true,
"address": "eth:0x78Af2BFB12Db15d35f7dE8DD77f29C299C78c590",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x78Af2BFB12Db15d35f7dE8DD77f29C299C78c590#code"
},
{
"name": "CpuFrilessVerifier",
"isVerified": true,
"address": "eth:0x8488e8f4e26eBa40faE229AB653d98E341cbE57B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8488e8f4e26eBa40faE229AB653d98E341cbE57B#code"
},
{
"name": "CpuFrilessVerifier",
"isVerified": true,
"address": "eth:0x9E614a417f8309575fC11b175A51599661f2Bd21",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9E614a417f8309575fC11b175A51599661f2Bd21#code"
},
{
"name": "CpuFrilessVerifier",
"isVerified": true,
"address": "eth:0xC879aF7D5eD80e4676C203FD300E640C297F31e3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC879aF7D5eD80e4676C203FD300E640C297F31e3#code"
},
{
"name": "CpuFrilessVerifier",
"isVerified": true,
"address": "eth:0xe9664D230490d5A515ef7Ef30033d8075a8D0E24",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe9664D230490d5A515ef7Ef30033d8075a8D0E24#code"
},
{
"name": "MemoryPageFactRegistry_2022_7",
"isVerified": true,
"address": "eth:0xFD14567eaf9ba941cB8c8a94eEC14831ca7fD1b4",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFD14567eaf9ba941cB8c8a94eEC14831ca7fD1b4#code"
}
]
},
"escrows": [
{
"address": "0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419",
"sinceTimestamp": 1647857148,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0xCA112018fEB729458b628AadC8f996f9deCbCa0c",
"eth:0x15e8c684FD095d4796A0c0CF678554F4c1C7C361"
],
"implementations": [
"eth:0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1647857960,
"transactionHash": "0x4c7952f4056367ec557d94b41d0784b7eb247d1f9de7378bdff7a5218c85314d",
"implementations": [
"eth:0x0205172F25e791975edB4dEF203f3789B01f43bb"
]
},
{
"timestamp": 1649596101,
"transactionHash": "0x9b76ede78b75c332ea2ae855b62a2363c197ee521522ab1a14aa5517f2610dd5",
"implementations": [
"eth:0x5e70F3301bbBBB1DFA2c8d20D75b162aFa6Dbe37"
]
},
{
"timestamp": 1668953231,
"transactionHash": "0xa31315fda290a9ee1abf459ba81a8c5986c5c9da58cda4c20a144ab16e3a9ba1",
"implementations": [
"eth:0x5e70F3301bbBBB1DFA2c8d20D75b162aFa6Dbe37"
]
},
{
"timestamp": 1680016103,
"transactionHash": "0x826f7e63249e192040d6b9301a68a0c7fc1130d06339ab0c758ff14799f9adfb",
"implementations": [
"eth:0x455603AD9ae671F6c1f0f746F24d7904cA603581"
]
},
{
"timestamp": 1707387203,
"transactionHash": "0x64910ea21a212ae671687842ec3c4fcd187e935ddf2d6cc90f41b6d99b592964",
"implementations": [
"eth:0x455603AD9ae671F6c1f0f746F24d7904cA603581"
]
},
{
"timestamp": 1707738959,
"transactionHash": "0x1f56cc90fd40bcc00a27f94c989e93cb414a884e2fe971323426f40d58c71306",
"implementations": [
"eth:0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95"
]
},
{
"timestamp": 1746967799,
"transactionHash": "0xf0fc6787173f9e4ee964487191601bf84e443f30192c896849df7fd12dfa1a95",
"implementations": [
"eth:0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95"
]
}
],
"description": "StarkGate bridge for ETH. There is no bridge cap.",
"url": "https://etherscan.io/address/0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x0437465dfb5B79726e35F08559B0cBea55bb585C",
"sinceTimestamp": 1652101033,
"tokens": [
"DAI"
],
"contract": {
"isVerified": true,
"address": "eth:0x0437465dfb5B79726e35F08559B0cBea55bb585C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "DAI Vault for custom DAI Gateway managed by MakerDAO. The current bridge cap is 5.00 M DAI.",
"url": "https://etherscan.io/address/0x0437465dfb5B79726e35F08559B0cBea55bb585C#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x283751A21eafBFcD52297820D27C1f1963D9b5b4",
"sinceTimestamp": 1657137600,
"tokens": [
"WBTC"
],
"contract": {
"isVerified": true,
"address": "eth:0x283751A21eafBFcD52297820D27C1f1963D9b5b4",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0xE0D1fab527A85D955d4c05323250367E61bA3f18"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1657138806,
"transactionHash": "0xeedccfe88453ea74a342ca57926a88b6033057eb15b43291332f0fa19c197eee",
"implementations": [
"eth:0xaec1fB35875a3816a5d09D61F086FeB6c252e096"
]
},
{
"timestamp": 1657630577,
"transactionHash": "0xc450cc918a45c46057f13a072c41a646e78f52af5e36f82b7061b478e44b7fb3",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1668953231,
"transactionHash": "0x5bc722c79d5a4303b76638f6fc75d26c5dbfba39202c2a7ced89b96d3ead97e7",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1680016007,
"transactionHash": "0xb638d945b6a6feba94d6219f1618a6e279720e105d4476db19063abd4164117f",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707387203,
"transactionHash": "0x64910ea21a212ae671687842ec3c4fcd187e935ddf2d6cc90f41b6d99b592964",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707731699,
"transactionHash": "0x426174e7e63465569d28b3ca3e807e69859f9a2650702487260b9a45646d5f32",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
},
{
"timestamp": 1768834883,
"transactionHash": "0xdb7a4f9c3e38994d167d6943b6b7f247972ac3c7564febba428a407cf0e89e5b",
"implementations": [
"eth:0xE0D1fab527A85D955d4c05323250367E61bA3f18"
]
}
],
"description": "StarkGate bridge for WBTC. The bridge is halted and WBTC migrated to external OFT bridging.",
"url": "https://etherscan.io/address/0x283751A21eafBFcD52297820D27C1f1963D9b5b4#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "custom-canonical",
"bridgedUsing": {
"bridges": [
{
"name": "Canonical + additional trust assumptions"
}
]
},
"untilTimestamp": 1768848455,
"chainId": 1
},
{
"address": "0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816",
"sinceTimestamp": 1657137639,
"tokens": [],
"contract": {
"isVerified": true,
"address": "eth:0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1657139268,
"transactionHash": "0x7fee1d4145372b9f1a39594bc71c9074f5982c5c546135c1aba6810c5c33cd15",
"implementations": [
"eth:0xaec1fB35875a3816a5d09D61F086FeB6c252e096"
]
},
{
"timestamp": 1657630654,
"transactionHash": "0x8c5f529b4aea40150673a24be2daf67b98dfea900848e2e4bfe863b29397cb16",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1668953231,
"transactionHash": "0x100be562b99e029f2419718dfa5e722c6d27cd99e9e5fbbd61dbda223d8872c2",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1680016067,
"transactionHash": "0x1c54434b6dab2c13187d16161d7da8b6286b4f71d3ff3ab580ffcc90ac387d31",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707387203,
"transactionHash": "0x64910ea21a212ae671687842ec3c4fcd187e935ddf2d6cc90f41b6d99b592964",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707732959,
"transactionHash": "0x147393fe2175d3bd2a267730c8066afd475199c52a1895b5524100c3b2ca2c07",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "StarkGate bridge for USDC. There is no bridge cap.",
"url": "https://etherscan.io/address/0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0xbb3400F107804DFB482565FF1Ec8D8aE66747605",
"sinceTimestamp": 1657137615,
"tokens": [
"USDT"
],
"contract": {
"isVerified": true,
"address": "eth:0xbb3400F107804DFB482565FF1Ec8D8aE66747605",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1657139268,
"transactionHash": "0x3e25166c11d40ded7d1ae272a9e4eb416b2d35a8f4919ca0a07c55f0065de787",
"implementations": [
"eth:0xaec1fB35875a3816a5d09D61F086FeB6c252e096"
]
},
{
"timestamp": 1657630654,
"transactionHash": "0x55d370d26d45d7aee7f06e7f741d5f0d37154889faa1fa4e393370cae31a0f0f",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1668953231,
"transactionHash": "0x33fdbe5a0d1ba784eb5e2f0f34b42d57c5c2b6b0bd3562746c7ee0447f7767aa",
"implementations": [
"eth:0x56e233d613743297CdD27fafc5c1f5c1DC2a381b"
]
},
{
"timestamp": 1680016067,
"transactionHash": "0xac209ae933b3ae24348f926df5f8978093617c711baaceefa21b90c08c82a0af",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707387203,
"transactionHash": "0x64910ea21a212ae671687842ec3c4fcd187e935ddf2d6cc90f41b6d99b592964",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707732815,
"transactionHash": "0xe594bd2581f3da0e554ad8664aecc1441280850cc7827a9e42d172bbf54cac5d",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "StarkGate bridge for USDT. There is no bridge cap.",
"url": "https://etherscan.io/address/0xbb3400F107804DFB482565FF1Ec8D8aE66747605#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "custom-canonical",
"bridgedUsing": {
"bridges": [
{
"name": "Canonical + additional trust assumptions"
}
]
},
"chainId": 1
},
{
"address": "0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B",
"sinceTimestamp": 1657137623,
"tokens": [
"wstETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1685453471,
"transactionHash": "0xb4de1aa42c3ade894dd66e06e6125549e8004d2d6857cf456ef5bde3f583ea7c",
"implementations": [
"eth:0xEf3525a1081a4cf6f76E0B202a575195cEE083a2"
]
},
{
"timestamp": 1707416015,
"transactionHash": "0x4eb13c68776e5aa840ab59c3c4ff369372fd461bab760eee12d1ae7ccf7baa6e",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "StarkGate bridge for wstETH. There is no bridge cap.",
"url": "https://etherscan.io/address/0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "custom-canonical",
"bridgedUsing": {
"bridges": [
{
"name": "Canonical + additional trust assumptions"
}
]
},
"chainId": 1
},
{
"address": "0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2",
"sinceTimestamp": 1657137623,
"tokens": [
"rETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1685882531,
"transactionHash": "0x90d66157a3812393338739b0ee7a84d0d310b72a8282946e5874824c60d30c51",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707431855,
"transactionHash": "0x5420188e3cc869219076d140de7359aa4b930c51263c00728bb81e3a68c1ba8c",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "StarkGate bridge for rETH. There is no bridge cap.",
"url": "https://etherscan.io/address/0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "custom-canonical",
"bridgedUsing": {
"bridges": [
{
"name": "Canonical + additional trust assumptions"
}
]
},
"chainId": 1
},
{
"address": "0xf76e6bF9e2df09D0f854F045A3B724074dA1236B",
"sinceTimestamp": 1698061847,
"tokens": [
"UNI"
],
"contract": {
"isVerified": true,
"address": "eth:0xf76e6bF9e2df09D0f854F045A3B724074dA1236B",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1698061943,
"transactionHash": "0x9e8cd16d463bff3aaa9aca2f741819ccdba2148450f935446facdb498a424a1e",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707432767,
"transactionHash": "0x2513dff6fab1fe6b7f95d9e436c18c8dd79965a3c7217f79c69787b2f42abc4a",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835031,
"transactionHash": "0x80c2489d99e1aa4593e1749d905120a22bc688a8c62343edce82130c4566de72",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "StarkGate bridge for UNI. There is no bridge cap.",
"url": "https://etherscan.io/address/0xf76e6bF9e2df09D0f854F045A3B724074dA1236B#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "custom-canonical",
"bridgedUsing": {
"bridges": [
{
"name": "Canonical + additional trust assumptions"
}
]
},
"chainId": 1
},
{
"address": "0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb",
"sinceTimestamp": 1692689255,
"tokens": [
"FRAX.legacy"
],
"contract": {
"isVerified": true,
"address": "eth:0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1692793367,
"transactionHash": "0x591030492947a546e11122e42c12975237d800d3d509d284b9c8aaf541dbdc79",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707646139,
"transactionHash": "0x083f442a6f6154d565fca76e15e4b7ff09a9ca6fc8efec588139a52896e67d4c",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "StarkGate bridge for FRAX. There is no bridge cap.",
"url": "https://etherscan.io/address/0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "custom-canonical",
"bridgedUsing": {
"bridges": [
{
"name": "Canonical + additional trust assumptions"
}
]
},
"chainId": 1
},
{
"address": "0x66ba83ba3D3AD296424a2258145d9910E9E40B7C",
"sinceTimestamp": 1692689267,
"tokens": [
"FRAX"
],
"contract": {
"isVerified": true,
"address": "eth:0x66ba83ba3D3AD296424a2258145d9910E9E40B7C",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1692793367,
"transactionHash": "0x8a85416efb74a9a7b95f6596bbcf947bdea2e1664c1401fee191dbc35ed63b9e",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707646139,
"transactionHash": "0x083f442a6f6154d565fca76e15e4b7ff09a9ca6fc8efec588139a52896e67d4c",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "StarkGate bridge for FRAX (prev. FXS). There is no bridge cap.",
"url": "https://etherscan.io/address/0x66ba83ba3D3AD296424a2258145d9910E9E40B7C#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "custom-canonical",
"bridgedUsing": {
"bridges": [
{
"name": "Canonical + additional trust assumptions"
}
]
},
"chainId": 1
},
{
"address": "0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8",
"sinceTimestamp": 1692689279,
"tokens": [
"sfrxETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1692793367,
"transactionHash": "0x368efd40dcf16ad376c8f38adf1e68361874e2b5b2de52d7088cd7de6b38f02a",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707646139,
"transactionHash": "0x083f442a6f6154d565fca76e15e4b7ff09a9ca6fc8efec588139a52896e67d4c",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "StarkGate bridge for sfrxETH. There is no bridge cap.",
"url": "https://etherscan.io/address/0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "custom-canonical",
"bridgedUsing": {
"bridges": [
{
"name": "Canonical + additional trust assumptions"
}
]
},
"chainId": 1
},
{
"address": "0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5",
"sinceTimestamp": 1688046071,
"tokens": [
"LUSD"
],
"contract": {
"isVerified": true,
"address": "eth:0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x5751a83170BeA11fE7CdA5D599B04153C021f21A"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1688046899,
"transactionHash": "0xa67fa2a98e3b92d67fe9ea402dd53955fc2d74f6af3ee0183e20afad68ac5621",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1707433079,
"transactionHash": "0x1157d4bd2b7d00a0f9833ef0832822bc331d5f904c0c3f9f14fa7942678fbf58",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835007,
"transactionHash": "0x4a1c60505d4d6d22f51b164696b7eadba1955278a577c7e712b2cd0347bee330",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "StarkGate bridge for LUSD. There is no bridge cap.",
"url": "https://etherscan.io/address/0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "custom-canonical",
"bridgedUsing": {
"bridges": [
{
"name": "Canonical + additional trust assumptions"
}
]
},
"chainId": 1
},
{
"address": "0x023A2aAc5d0fa69E3243994672822BA43E34E5C9",
"sinceTimestamp": 1687524587,
"tokens": [
"LORDS"
],
"contract": {
"isVerified": true,
"address": "eth:0x023A2aAc5d0fa69E3243994672822BA43E34E5C9",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "StarkGate bridge for LORDS.",
"url": "https://etherscan.io/address/0x023A2aAc5d0fa69E3243994672822BA43E34E5C9#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4",
"sinceTimestamp": 1704905879,
"tokens": [
"STRK"
],
"contract": {
"isVerified": true,
"address": "eth:0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0xCA112018fEB729458b628AadC8f996f9deCbCa0c",
"eth:0x15e8c684FD095d4796A0c0CF678554F4c1C7C361"
],
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1704907283,
"transactionHash": "0x4ea20358347292f048a26277477a9f145add434e50e3f64c85f494469768c876",
"implementations": [
"eth:0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB"
]
},
{
"timestamp": 1705239263,
"transactionHash": "0x42056631084f574f2ed5f49bef3d1aabab22008266ac97afea3e5f42649bd7c3",
"implementations": [
"eth:0x052C81F05595B5DeF4fdFEdbD7CA7b4A8a7B50C1"
]
},
{
"timestamp": 1705249823,
"transactionHash": "0xe8154cce45dafa5cfcb95d134f3da8a13c80c6546da07ca92c88d5c54286cdc3",
"implementations": [
"eth:0x7f2a18900A978D4390a3640e34739BB697777A71"
]
},
{
"timestamp": 1707751031,
"transactionHash": "0x7c5561efa149f2be36fac917f47b0b107218b43de1eac56ceb97d008257bd850",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1713709115,
"transactionHash": "0xd25ca910a4b7d0bab41828bce014a70f75642449f7c0426a3849ad46a6e60364",
"implementations": [
"eth:0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0"
]
},
{
"timestamp": 1728835151,
"transactionHash": "0xcd8680d72a4b8e347cd5036a1f2ac89b3e106f7c82d705d3cfc35bb6e849d026",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
},
{
"timestamp": 1739105903,
"transactionHash": "0xccb802ed2caee6856e9141983a642a0d4881cd64a209436d3fdeb4776c841175",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
},
{
"timestamp": 1746967799,
"transactionHash": "0xf0fc6787173f9e4ee964487191601bf84e443f30192c896849df7fd12dfa1a95",
"implementations": [
"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85"
]
}
],
"description": "StarkGate bridge for STRK. There is no bridge cap.",
"url": "https://etherscan.io/address/0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb",
"sinceTimestamp": 1707322643,
"tokens": [
"EKUBO",
"ZEND",
"NSTR"
],
"contract": {
"isVerified": true,
"address": "eth:0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
],
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1707325571,
"transactionHash": "0x52b4a75a83546e4e463a919cf778cb9a4882d536c4bf7b80a62098698c741fd8",
"implementations": [
"eth:0x594cCaDF93F860dc42Cf9fd7bCea47Ff4d135D7A"
]
},
{
"timestamp": 1740918611,
"transactionHash": "0x86ccb24833adb42f79ff55fcce4e69508e467df41c653a1b2578b5f2788f3c0c",
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
]
}
],
"description": "StarkGate bridge for EKUBO, ZEND, NSTR (and potentially other tokens listed via StarkgateManager).",
"url": "https://etherscan.io/address/0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb#code"
},
"chain": "ethereum",
"includeInTotal": true,
"source": "custom-canonical",
"bridgedUsing": {
"bridges": [
{
"name": "Canonical + additional trust assumptions"
}
]
},
"chainId": 1
},
{
"address": "0xA86b9b9c58d4f786F8ea89356c9c9Dde9432Ab10",
"sinceTimestamp": 1750859519,
"tokens": [
"SolvBTC"
],
"contract": {
"isVerified": true,
"address": "eth:0xA86b9b9c58d4f786F8ea89356c9c9Dde9432Ab10",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x5751a83170BeA11fE7CdA5D599B04153C021f21A"
],
"implementations": [
"eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1750862507,
"transactionHash": "0x9529b94a823908b9a8c9097a89ef76e034740a971363e3f7913f4971eb3633e3",
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
]
},
{
"timestamp": 1768493183,
"transactionHash": "0x27532d9c2db25f9d053fe4246f83a8c719a0d0b000a9d0e9f1e7dae1e05f287a",
"implementations": [
"eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7"
]
},
{
"timestamp": 1768493315,
"transactionHash": "0x787522b1ecf6f59d77fdd6278cf3d92f7b28cc292264e5f7ae9ef93c1344d587",
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
]
},
{
"timestamp": 1768831679,
"transactionHash": "0xa0ae9228abd03f1701caf995520b4ad4f9998bf46376e5f8cea39a24d0ee461a",
"implementations": [
"eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7"
]
}
],
"description": "StarkGate bridge for SolvBTC. The bridge is halted and SolvBTC migrated to external OFT bridging.",
"url": "https://etherscan.io/address/0xA86b9b9c58d4f786F8ea89356c9c9Dde9432Ab10#code"
},
"chain": "ethereum",
"includeInTotal": true,
"untilTimestamp": 1768848971,
"chainId": 1
},
{
"address": "0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e",
"sinceTimestamp": 1757941367,
"tokens": [
"LBTC"
],
"contract": {
"isVerified": true,
"address": "eth:0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b"
],
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1757941451,
"transactionHash": "0x503782544b4f41c5e38d13ba7e96e5dd4fb597abb7a595a7da2af8ddfaface58",
"implementations": [
"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff"
]
}
],
"description": "StarkGate bridge for LBTC.",
"url": "https://etherscan.io/address/0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"programHashes": [
{
"title": "Starknet OS",
"proverSystemProject": "stwo",
"description": "Proves correct state transition for a range of consecutive Starknet transactions.",
"programUrl": "https://github.com/starkware-libs/sequencer/tree/APOLLO-0.14.4-RC.8/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os",
"verificationStatus": "successful",
"verificationSteps": "1. Install python (3.9 to 3.13; the pinned `numpy==2.0.2` does not build on Python 3.14) and pip.\n2. Install rust: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`.\n3. Checkout the correct version of [https://github.com/starkware-libs/sequencer/tree/main](https://github.com/starkware-libs/sequencer/tree/main): `git checkout APOLLO-0.14.4-RC.8`. Commit hash should be `f1e649f3e131cfbb659aa876b3e946f616dfe6aa`.\n4. Install required python dependencies: `python3 -m venv sequencer_venv`, then `. sequencer_venv/bin/activate && pip install -r scripts/requirements.txt`.\n5. Run `UPDATE_EXPECT=1 cargo test -p apollo_starknet_os_program test_program_hashes` to regenerate program hashes in `crates/apollo_starknet_os_program/src/program_hash.json`. The `\"os\"` value of this file will be equivalent to dec value of the hash.",
"hash": "569015423733809580615518794546253350390163920370934709723320624838312178729"
},
{
"title": "Aggregation program for SHARP prover",
"description": "Aggregates proofs of correct execution for several consecutive transaction ranges generated by Starknet OS.",
"proverSystemProject": "stwo",
"programUrl": "https://github.com/starkware-libs/sequencer/tree/APOLLO-0.14.3-RC.11/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/aggregator",
"verificationStatus": "successful",
"verificationSteps": "1. Install python and pip.\n2. Install rust: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`.\n3. Checkout the correct version of [https://github.com/starkware-libs/sequencer/tree/main](https://github.com/starkware-libs/sequencer/tree/main): `git checkout APOLLO-0.14.3-RC.11`. Commit hash should be `5114457ad4b5d6d1764b520dfa40b9e826f48854`.\n4. Install required python dependencies: `python3 -m venv sequencer_venv`, then `. sequencer_venv/bin/activate && pip install -r scripts/requirements.txt`.\n5. Run `UPDATE_EXPECT=1 cargo test -p apollo_starknet_os_program test_program_hashes` to regenerate program hashes in `crates/apollo_starknet_os_program/src/program_hash.json`. The `\"aggregator_with_prefix\"` value of this file will be equivalent to dec value of the hash.",
"hash": "1050253032170513549151251823521174837478197699740478552102884446098263561922"
},
{
"title": "Virtual Starknet OS",
"proverSystemProject": "stwo",
"description": "Proves correct execution of a single Starknet transaction against a recent finalized block, used for client-side proving (e.g. STRK-20 privacy pool actions). The Starknet OS only accepts client proof facts whose program hash is in its hardcoded allowlist. This hash was the only allowlisted entry in the v0.14.3 OS and remains allowlisted alongside the newer virtual OS hash in the v0.14.4 OS.",
"programUrl": "https://github.com/starkware-libs/sequencer/tree/APOLLO-0.14.3-RC.11/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os",
"verificationStatus": "successful",
"verificationSteps": "1. Install python and pip.\n2. Install rust: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`.\n3. Checkout the correct version of [https://github.com/starkware-libs/sequencer/tree/main](https://github.com/starkware-libs/sequencer/tree/main): `git checkout APOLLO-0.14.3-RC.11`. Commit hash should be `5114457ad4b5d6d1764b520dfa40b9e826f48854`.\n4. Install required python dependencies: `python3 -m venv sequencer_venv`, then `. sequencer_venv/bin/activate && pip install -r scripts/requirements.txt`.\n5. Run `UPDATE_EXPECT=1 cargo test -p apollo_starknet_os_program test_program_hashes` to regenerate program hashes in `crates/apollo_starknet_os_program/src/program_hash.json`. This compiles the `virtual_os` program from the in-tree Cairo sources (the `__virtual.cairo` file variants of the Starknet OS) and the `\"virtual_os\"` value of this file will be equivalent to this hash. If the build fails because `sccache` is not installed, prefix the command with `RUSTC_WRAPPER=\"\"`.\n6. To check that this hash is enforced by the L1-registered Starknet OS, confirm it equals `ALLOWED_VIRTUAL_OS_PROGRAM_HASHES_0` in `crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/constants.cairo` (the allowlist has length 1 at this tag). The Starknet OS only accepts client-side proof facts whose program hash is in this allowlist.",
"hash": "2373625305120835200243020426311988160128377108314438505880592663683179928225"
},
{
"title": "Virtual Starknet OS",
"proverSystemProject": "stwo",
"description": "Proves correct execution of a single Starknet transaction against a recent finalized block, used for client-side proving (e.g. STRK-20 privacy pool actions). The Starknet OS only accepts client proof facts whose program hash is in its hardcoded allowlist, which contains this hash and the previous virtual OS hash.",
"programUrl": "https://github.com/starkware-libs/sequencer/tree/APOLLO-0.14.4-RC.8/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os",
"verificationStatus": "successful",
"verificationSteps": "1. Install python (3.9 to 3.13; the pinned `numpy==2.0.2` does not build on Python 3.14) and pip.\n2. Install rust: `curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh`.\n3. Checkout the correct version of [https://github.com/starkware-libs/sequencer/tree/main](https://github.com/starkware-libs/sequencer/tree/main): `git checkout APOLLO-0.14.4-RC.8`. Commit hash should be `f1e649f3e131cfbb659aa876b3e946f616dfe6aa`.\n4. Install required python dependencies: `python3 -m venv sequencer_venv`, then `. sequencer_venv/bin/activate && pip install -r scripts/requirements.txt`.\n5. Run `UPDATE_EXPECT=1 cargo test -p apollo_starknet_os_program test_program_hashes` to regenerate program hashes in `crates/apollo_starknet_os_program/src/program_hash.json`. \n6. To check that this hash is enforced by the L1-registered Starknet OS, confirm it equals `ALLOWED_VIRTUAL_OS_PROGRAM_HASHES_1` in `crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os/constants.cairo` (the allowlist has length 2 at this tag, with `ALLOWED_VIRTUAL_OS_PROGRAM_HASHES_0` being the previous virtual OS hash). The Starknet OS only accepts client-side proof facts whose program hash is in this allowlist.",
"hash": "805228098265968069660874977190930466751870110207234534021332896450772718372"
},
{
"title": "Outer bootloader Cairo program StarkWare_GpsStatementVerifier_2026_13",
"description": "Top-level Cairo program executed by SHARP.",
"proverSystemProject": "stwo",
"programUrl": "https://github.com/starkware-libs/cairo-lang/tree/56407b69f3f19f69302a8623baa8c5f71f967eed/src/starkware/cairo/bootloaders/bootloader",
"verificationStatus": "successful",
"verificationSteps": "These steps reproduce the current 1,166-felt SHARP outer bootloader on Linux. \n\nDependencies: Git, Bazelisk configured to use Bazel 7.4.1, JDK 21, GMP development headers, Python 3, and Foundry `cast`.\n\n1. Check out the exact public source revision:\n\n```bash\ngit clone https://github.com/starkware-libs/cairo-lang.git\ncd cairo-lang\ngit checkout 56407b69f3f19f69302a8623baa8c5f71f967eed\n```\n\nThe Cairo compiler version at this revision is `0.15.0a0`. The entrypoint is `src/starkware/cairo/bootloaders/bootloader/bootloader.cairo`.\n\n2. Build the official proof-mode target:\n\n```bash\nUSE_BAZEL_VERSION=7.4.1 bazelisk build \\\n //src/starkware/cairo/bootloaders/bootloader:bootloader_program\n```\n\nThe destination for the compiled program will be printed by the build script, the instruction array will be in the `\"data\"` json field in hex format. The target uses `--proof_mode --debug_info_with_source`.\n\n3. Check that the compiled instruction array is identical to the one pinned by the immutable Ethereum contract at `0x24105e6697AdD9B4B1BDE04079a91BDFCCa24A47`, which could be fetched by calling:\n\n```bash\ncast call 0x24105e6697AdD9B4B1BDE04079a91BDFCCa24A47 \\\n 'getCompiledProgram()(uint256[1166])' \\\n --rpc-url \"$ETHEREUM_RPC_URL\" \\\n --json > /tmp/sharp_outer_bootloader_onchain.json\n```",
"hash": "3427958597398434235135013788958741576989752718219267963615783564775551242024"
},
{
"title": "Supported simple bootloader programs commitment StarkWare_GpsStatementVerifier_2026_13",
"description": "Pedersen commitment to the ordered list of accepted simple-bootloader executable hashes.",
"proverSystemProject": "stwo",
"programUrl": "https://github.com/starkware-libs/cairo-lang/tree/1c5dace6fbd1dc9d1ae2eb878dc1dd85f23512ab/src/starkware/cairo/bootloaders/simple_bootloader",
"verificationStatus": "successful",
"verificationSteps": "The steps below are supposed to be run on linux OS. They could also be run on macOS, but several tweaks need to be made: update from `lru-dict==1.1.8` to `lru-dict==1.3.0` in `scripts/requirements.txt` and update `python_interpreter` in `bazel_utils/python/stub.sh` to the correct location.\n\n1. Install [bazel](https://bazel.build) version 7.4.1 and `gmp` library using [brew](https://brew.sh):\n```\nbrew install bazelisk\nUSE_BAZEL_VERSION=7.4.1 bazelisk version\nbrew install gmp # or sudo apt-get install libgmp-dev\n```\n\n2. On linux, install JDK if you don't have it: `sudo apt install openjdk-21-jre`.\n\n3. Check out the correct commit of repo:\n```\ngit clone https://github.com/starkware-libs/cairo-lang.git\ncd cairo-lang\ngit checkout 1c5dace6fbd1dc9d1ae2eb878dc1dd85f23512ab\n```\n\n4. Update `cairo-lang/src/starkware/cairo/bootloaders/BUILD` file by appending [this snippet](/files/starkware_proghash_artifacts/56407b69f3f19f69302a8623baa8c5f71f967eed/BUILD_ADDITION) at the end.\n5. Copy [this hash_bootloaders.py script](/files/starkware_proghash_artifacts/1c5dace6fbd1dc9d1ae2eb878dc1dd85f23512ab/hash_bootloaders.py) that computes bootloader hashes into `cairo-lang/src/starkware/cairo/bootloaders/`.\n6. Execute the script above by `USE_BAZEL_VERSION=7.4.1 bazel run //src/starkware/cairo/bootloaders:cairo_hash_bootloaders_exe`. The output of the script should contain the correct hash.",
"hash": "3442855748187296636739564186904728563385971901122957091055928358173521721079"
},
{
"title": "Applicative bootloader Cairo program StarkWare_GpsStatementVerifier_2026_13",
"description": "Runs an aggregator program, checks that its input matches the recursively unpacked task outputs, and relabels the resulting fact with the domain-separated aggregator program hash.",
"proverSystemProject": "stwo",
"programUrl": "https://github.com/starkware-libs/cairo-lang/tree/1c5dace6fbd1dc9d1ae2eb878dc1dd85f23512ab/src/starkware/cairo/bootloaders/applicative_bootloader",
"verificationStatus": "successful",
"verificationSteps": "The steps below are supposed to be run on linux OS. They could also be run on macOS, but several tweaks need to be made: update from `lru-dict==1.1.8` to `lru-dict==1.3.0` in `scripts/requirements.txt` and update `python_interpreter` in `bazel_utils/python/stub.sh` to the correct location.\n\n1. Install [bazel](https://bazel.build) version 7.4.1 and `gmp` library using [brew](https://brew.sh):\n```\nbrew install bazelisk\nUSE_BAZEL_VERSION=7.4.1 bazelisk version\nbrew install gmp # or sudo apt-get install libgmp-dev\n```\n\n2. On linux, install JDK if you don't have it: `sudo apt install openjdk-21-jre`.\n\n3. Check out the correct commit of repo:\n```\ngit clone https://github.com/starkware-libs/cairo-lang.git\ncd cairo-lang\ngit checkout 1c5dace6fbd1dc9d1ae2eb878dc1dd85f23512ab\n```\n\n4. Update `cairo-lang/src/starkware/cairo/bootloaders/BUILD` file by appending [this snippet](/files/starkware_proghash_artifacts/56407b69f3f19f69302a8623baa8c5f71f967eed/BUILD_ADDITION) at the end.\n5. Copy [this hash_bootloaders.py script](/files/starkware_proghash_artifacts/1c5dace6fbd1dc9d1ae2eb878dc1dd85f23512ab/hash_bootloaders.py) that computes bootloader hashes into `cairo-lang/src/starkware/cairo/bootloaders/`.\n6. Execute the script above by `USE_BAZEL_VERSION=7.4.1 bazel run //src/starkware/cairo/bootloaders:cairo_hash_bootloaders_exe`. The output of the script should contain the correct hash.",
"hash": "2358844945297786488640123814540854423585455959362109345448922524567546993330"
},
{
"title": "Supported recursive Cairo verifier programs commitment StarkWare_GpsStatementVerifier_2026_13_4",
"description": "Pedersen commitment to the ordered allowlist of Cairo programs that may recursively verify and unpack nested SHARP proofs.",
"proverSystemProject": "stwo",
"programUrl": "https://github.com/starkware-libs/cairo-lang/blob/cf9bf972bede402a125e8638bb258e77563ae933/src/starkware/cairo/bootloaders/bootloader/supported_program_hashes.json",
"verificationStatus": "successful",
"verificationSteps": "This value is not a hash of a single program. It is a Pedersen hash chain committing to the ordered 30-entry `supported_cairo_verifier_program_hashes` list from [supported_program_hashes.json](https://github.com/starkware-libs/cairo-lang/blob/cf9bf972bede402a125e8638bb258e77563ae933/src/starkware/cairo/bootloaders/bootloader/supported_program_hashes.json) at cairo-lang `cf9bf972bede402a125e8638bb258e77563ae933` (v0.14.3). The list contains the program hashes of all Cairo verifier programs that the SHARP bootloader accepts for recursive proof verification:\n\n- 21 entries are Stone Cairo verifiers built from the same cairo-lang commit: 7 layouts (`dex`, `recursive`, `small`, `starknet`, `starknet_with_keccak`, `dynamic`, `recursive_with_poseidon`), each hashed with the pedersen (entries 1-7), poseidon (11-17) and blake (21-27) program hash function.\n- 9 entries are Stwo Cairo verifiers built from [stwo-cairo](https://github.com/starkware-libs/stwo-cairo/tree/sharp-7.4.RC3) at tag `sharp-7.4.RC3` (commit `9b93cc39c87838cee3132ee1f8237590700f0689`): 3 feature builds (`poseidon252_verifier` with poseidon output packing, `qm31_opcode` with poseidon output packing, `qm31_opcode` with blake output packing), each hashed with pedersen (entries 8-10), poseidon (18-20) and blake (28-30).\n\n1. Reproduce the 21 Stone verifier hashes following [these steps](/files/starkware_proghash_artifacts/cf9bf972bede402a125e8638bb258e77563ae933/stone_verifier_steps.md).\n2. Reproduce the 9 Stwo verifier hashes following [these steps](/files/starkware_proghash_artifacts/cf9bf972bede402a125e8638bb258e77563ae933/stwo_verifier_steps.md). You will need [this stwo_features.patch](/files/starkware_proghash_artifacts/cf9bf972bede402a125e8638bb258e77563ae933/stwo_features.patch) and [this hash_stwo_verifiers.py helper script](/files/starkware_proghash_artifacts/cf9bf972bede402a125e8638bb258e77563ae933/hash_stwo_verifiers.py).\n3. From the cairo-lang checkout, using a python 3.9 environment with `scripts/requirements.txt` installed, compute the commitment to the now-verified list:\n\n```\nPYTHONPATH=src python -c \"\nimport json\nfrom starkware.cairo.common.hash_state import \n compute_hash_on_elements\ndoc = json.load(open('src/starkware/cairo/\n bootloaders/bootloader/supported_program_hashes.json'))\nprint(compute_hash_on_elements([int(h, 16) \n for h in doc['supported_cairo_verifier_program_hashes']]))\n\"\n```\n\nThe output should be the program hash.",
"hash": "2549868507195840500193135872505150687001846773665388230794631345999578394351"
}
],
"programHashesDescription": "The Starknet OS, virtual Starknet OS, aggregator, outer bootloader, supported-simple-bootloader commitment, and applicative bootloader are reproducible. Every SHARP verifier in the currently accepted fact-registry chain also pins a commitment to an ordered allowlist of recursive Cairo verifier programs. The active allowlist preimages and the programs behind them have not been reproduced, so an invalid nested-proof verifier cannot be ruled out independently.",
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0x4956bda1d23F75B988644329c5B06BD1494a72b6"
]
}
+1 -1
{
"baseTimestamp": 1791452815,
"baseTimestamp": 1792144225,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "72270b38",
"date": "Fri, 16 Oct 2026 10:36:28 GMT",
"timestamp": 1792144225,
"description": "Starknet upgrade: governance can set a minimum fee for L1 -> L2 messages, up to the 1 ETH maximum. The setter is not locked by `finalize()`. The minimum is now 0.00005 ETH. Proof checks and pinned program hashes are unchanged.\n- https://disco.l2beat.com/diff/eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A/eth:0x73352C6228Ec1DCf737973Db9822bB8e8a465c99",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) [starknet/Starknet] {\n +++ description: Central Starknet rollup contract. For every state update it derives a SHARP fact from the state-transition output and either the Starknet OS or aggregator program hash, checks that fact through the configured SHARP call proxy, and requires the output's OS-config hash to match. It also processes L1 <-> L2 messages and stores the finalized L2 state.\n sourceHashes.1:\n- \"0xef60960a959a9506c3f6eece9374f7fbcd095a488763801577ae88e427fd3d51\"\n+ \"0xa6f25883f5a84ab9a53152a85a18e735a7ebc3fd96b8f56c87862df1245de198\"\n values.$implementation:\n- \"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A\"\n+ \"eth:0x73352C6228Ec1DCf737973Db9822bB8e8a465c99\"\n values.$pastUpgrades.11:\n+ [\"2026-10-14T11:07:35.000Z\",\"0x69e217f115ea6b98822ca30aec1684377f4468232f92b36ddd9069cda5d5ee14\",[\"eth:0x73352C6228Ec1DCf737973Db9822bB8e8a465c99\"]]\n values.$upgradeCount:\n- 11\n+ 12\n values.identify:\n- \"StarkWare_Starknet_2026_11\"\n+ \"StarkWare_Starknet_2026_12\"\n values.implementation:\n- \"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A\"\n+ \"eth:0x73352C6228Ec1DCf737973Db9822bB8e8a465c99\"\n+++ description: Minimum fee in wei for an L1 -> L2 message. Governance can raise it up to the 1 ETH maximum fee, also after the application configuration is finalized.\n+++ severity: MEDIUM\n values.getMinL1MsgFee:\n+ 50000000000000\n implementationNames.eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A:\n- \"Starknet\"\n implementationNames.eth:0x73352C6228Ec1DCf737973Db9822bB8e8a465c99:\n+ \"Starknet\"\n }\n```"
}
]
},
{
"id": "abe67a8d",
"date": "Thu, 08 Oct 2026 09:48:01 GMT",
"timestamp": 1791452815,
"description": "Rotated two SC members. Also upgraded Starknet OS and aggregator programs, which were successfully regenerated.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starkware Security Council (eth:0x15e8c684FD095d4796A0c0CF678554F4c1C7C361) [GnosisSafe] {\n +++ description: None\n values.$members.1:\n- \"eth:0x5C7DcaECB4D8e49Ea2487c5Cc23C5131Ddb2252F\"\n+ \"eth:0x99E84d004E73CC41eFacd382ef6FD34208B0F122\"\n values.$members.2:\n- \"eth:0x04D5b12b196a8CADEB2F476F22Ffb1334Ef9F94c\"\n+ \"eth:0xb731B63eC22904A17d1cf6fD771eb5BA87f35Fa3\"\n }\n```\n\n```diff\n contract Starknet (eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) [starknet/Starknet] {\n +++ description: Central Starknet rollup contract. For every state update it derives a SHARP fact from the state-transition output and either the Starknet OS or aggregator program hash, checks that fact through the configured SHARP call proxy, and requires the output's OS-config hash to match. It also processes L1 <-> L2 messages and stores the finalized L2 state.\n+++ description: Previous Starknet aggregator program hashes emitted on each governance update. The current value is exposed separately as `aggregatorProgramHash`.\n values.aggregatorProgramHashHistory.7:\n+ \"1050253032170513549151251823521174837478197699740478552102884446098263561922\"\n+++ description: Starknet OS program hash. In direct mode it is included in the SHARP fact key; in aggregator mode the aggregator's public output must contain this exact OS hash. A malicious OS program could prove arbitrary state transitions. Update the program-hash catalog and liveness tracking whenever this changes.\n+++ severity: HIGH\n values.programHash:\n- \"2006389624453304912912750132846114593020263069652857561377702883656839453432\"\n+ \"569015423733809580615518794546253350390163920370934709723320624838312178729\"\n+++ description: Previous Starknet OS program hashes emitted on each governance update. The current value is exposed separately as `programHash`.\n values.programHashHistory.15:\n+ \"2006389624453304912912750132846114593020263069652857561377702883656839453432\"\n+++ description: Human-readable label for the current Starknet OS program hash.\n+++ severity: HIGH\n values.programHashMapped:\n- \"2006389624453304912912750132846114593020263069652857561377702883656839453432\"\n+ \"569015423733809580615518794546253350390163920370934709723320624838312178729\"\n }\n```"
}
]
},
{
"id": "9d5a75e1",
"date": "Fri, 10 Jul 2026 10:18:08 GMT",
"timestamp": 1783678624,
"description": "Updated Starknet OS and aggregation ZK programs, new versions verified.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) [starknet/Starknet] {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, 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 values.aggregatorHashMapped:\n- \"2571508110958925737463010241874806654058743535666147712534445437599630018294\"\n+ \"1050253032170513549151251823521174837478197699740478552102884446098263561922\"\n values.aggregatorProgramHash:\n- \"2571508110958925737463010241874806654058743535666147712534445437599630018294\"\n+ \"1050253032170513549151251823521174837478197699740478552102884446098263561922\"\n values.configHash:\n- \"3188242426588271529884520804512942022765170489242162533995649881904346336763\"\n+ \"2579130946496422157802313572919622021390761807038780433165936715591440018810\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"2733003247060056328192560178934419513655729851806095615814023997114795707702\"\n+ \"2006389624453304912912750132846114593020263069652857561377702883656839453432\"\n values.programHashHistory.14:\n+ \"2733003247060056328192560178934419513655729851806095615814023997114795707702\"\n values.programHashMapped:\n- \"2733003247060056328192560178934419513655729851806095615814023997114795707702\"\n+ \"2006389624453304912912750132846114593020263069652857561377702883656839453432\"\n }\n```"
}
]
},
{
"id": "3824c2a6",
"date": "Wed, 08 Jul 2026 09:37:18 GMT",
"timestamp": 1783503373,
"description": "Rotated two ms members.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starkware SCMinority Multisig (eth:0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B) [GnosisSafe] {\n +++ description: None\n values.$members.1:\n- \"eth:0x04D5b12b196a8CADEB2F476F22Ffb1334Ef9F94c\"\n+ \"eth:0x99E84d004E73CC41eFacd382ef6FD34208B0F122\"\n values.$members.2:\n- \"eth:0x5C7DcaECB4D8e49Ea2487c5Cc23C5131Ddb2252F\"\n+ \"eth:0xb731B63eC22904A17d1cf6fD771eb5BA87f35Fa3\"\n }\n```"
}
]
},
{
"id": "84ab36ee",
"date": "Mon, 06 Jul 2026 11:01:07 GMT",
"timestamp": 1783335585,
"description": "Rotated two ms members.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starkware Security Council (eth:0x15e8c684FD095d4796A0c0CF678554F4c1C7C361) [GnosisSafe] {\n +++ description: None\n values.$members.3:\n- \"eth:0x2914767E232FD7708ab06bA60dB16c36C555751d\"\n+ \"eth:0x49C6396070D3310f335AE19169Da6B80ea67B831\"\n values.$members.4:\n- \"eth:0xfaECfa5E4180dd55D15396F804Fd00C6dbA233B0\"\n+ \"eth:0x16117672EBF77d5DE9a1Af91F8F79b26421b310F\"\n }\n```\n\n```diff\n contract Starkware SCMinority Multisig (eth:0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0x2914767E232FD7708ab06bA60dB16c36C555751d\"\n+ \"eth:0x49C6396070D3310f335AE19169Da6B80ea67B831\"\n values.$members.4:\n- \"eth:0xfaECfa5E4180dd55D15396F804Fd00C6dbA233B0\"\n+ \"eth:0x16117672EBF77d5DE9a1Af91F8F79b26421b310F\"\n }\n```"
}
]
},
{
"id": "f7adf9c0",
"date": "Tue, 21 Apr 2026 09:15:38 GMT",
"timestamp": 1776761835,
"description": "Starknet v0.14.2 upgrade: https://x.com/StarkWareLtd/status/2046232501887062448.\n\nUpgraded Rollup contract with minimal diff: https://disco.l2beat.com/diff/eth:0x2793010E6711Acd5C46ed17f2183a9d58db71e04/eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A (mainly added safety checks on L1 -> L2 msg hash computation).\n\nAlso upgraded aggregation and starknet os programs: sources are here https://github.com/starkware-libs/sequencer/tree/c294a8ba263834d45cf525217d8700f5de24a260/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, 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 sourceHashes.1:\n- \"0x8074e96abc7cacf654908c0111c69027cf599f3b67332f3680c5de768a2d6dfe\"\n+ \"0x4ebd3e71fba7928b1daa4cdd93a1081aa0b578578cc8e6aada6a3b86b057fcb5\"\n values.$implementation:\n- \"eth:0x2793010E6711Acd5C46ed17f2183a9d58db71e04\"\n+ \"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A\"\n values.$pastUpgrades.10:\n+ [\"2026-04-20T11:53:35.000Z\",\"0xb2fd817ea47d39435e0b08825964bcb0b2ae08ebc4c5a47954f9b169235ed1c1\",[\"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A\"]]\n values.$upgradeCount:\n- 10\n+ 11\n values.aggregatorHashMapped:\n- \"1701025211190912681772481128523426351562426117847395998223683709327746845867\"\n+ \"2571508110958925737463010241874806654058743535666147712534445437599630018294\"\n values.aggregatorProgramHash:\n- \"1701025211190912681772481128523426351562426117847395998223683709327746845867\"\n+ \"2571508110958925737463010241874806654058743535666147712534445437599630018294\"\n values.identify:\n- \"StarkWare_Starknet_2025_10\"\n+ \"StarkWare_Starknet_2026_11\"\n values.implementation:\n- \"eth:0x2793010E6711Acd5C46ed17f2183a9d58db71e04\"\n+ \"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"918745833886511857768061986591752808672496300091957204265383861063635175685\"\n+ \"2733003247060056328192560178934419513655729851806095615814023997114795707702\"\n values.programHashHistory.13:\n+ \"918745833886511857768061986591752808672496300091957204265383861063635175685\"\n values.programHashMapped:\n- \"918745833886511857768061986591752808672496300091957204265383861063635175685\"\n+ \"2733003247060056328192560178934419513655729851806095615814023997114795707702\"\n implementationNames.eth:0x2793010E6711Acd5C46ed17f2183a9d58db71e04:\n- \"Starknet\"\n implementationNames.eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A:\n+ \"Starknet\"\n }\n```"
}
]
},
{
"id": "dd51995e",
"date": "Tue, 27 Jan 2026 10:46:22 GMT",
"timestamp": 1769510717,
"description": "Added new EOA to be a security agent for ETH and STRK bridge (can enable withdrawal limit).",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ETHBridge (eth:0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419) {\n +++ description: Standard Starkware canonical bridge escrow for ETH. Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n values.accessControl.SECURITY_AGENT.members.1:\n+ \"eth:0x4032bE860716F6e4488CBc9f1505E26E2FA3C2c2\"\n values.secAgentAC.1:\n+ \"eth:0x4032bE860716F6e4488CBc9f1505E26E2FA3C2c2\"\n }\n```\n\n```diff\n contract STRKBridge (eth:0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n values.accessControl.SECURITY_AGENT.members.1:\n+ \"eth:0x4032bE860716F6e4488CBc9f1505E26E2FA3C2c2\"\n values.secAgentAC.1:\n+ \"eth:0x4032bE860716F6e4488CBc9f1505E26E2FA3C2c2\"\n }\n```"
}
]
},
{
"id": "72accef9",
"date": "Tue, 20 Jan 2026 16:05:37 GMT",
"timestamp": 1768921358,
"description": "Halted WBTC and SolvBTC bridges, sweeped tokens to respective clearing addresses. See this tweet: https://x.com/starknet/status/2012177863353815198.",
"isHighSeverity": true,
"changeCount": 46,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starkware Multisig 2 (eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec) {\n +++ description: None\n receivedPermissions.27.delay:\n- 259200\n }\n```\n\n```diff\n contract WBTCBridge (eth:0x283751A21eafBFcD52297820D27C1f1963D9b5b4) {\n +++ description: Haltable version of the Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually. Deposits for a particular token can be halted by app governor, halt must be finalized in the second transaction that also sweeps all funds into a clrearing address. There is no logic to resume bridging after the halt.\n template:\n- \"starknet/StarknetERC20Bridge\"\n+ \"starknet/StarknetMultiBridge_haltable\"\n sourceHashes.1:\n- \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n+ \"0x75f2a8488acf6abb9e13f53441969f226aebd93a943aae7e6051a2cbfea0b7d0\"\n description:\n- \"Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\"\n+ \"Haltable version of the Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually. Deposits for a particular token can be halted by app governor, halt must be finalized in the second transaction that also sweeps all funds into a clrearing address. There is no logic to resume bridging after the halt.\"\n values.$implementation:\n- \"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n+ \"eth:0xE0D1fab527A85D955d4c05323250367E61bA3f18\"\n values.$pastUpgrades.8:\n+ [\"2026-01-19T15:01:23.000Z\",\"0xdb7a4f9c3e38994d167d6943b6b7f247972ac3c7564febba428a407cf0e89e5b\",[\"eth:0xE0D1fab527A85D955d4c05323250367E61bA3f18\"]]\n values.$upgradeCount:\n- 8\n+ 9\n values.bridgedToken:\n- \"eth:0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\"\n values.depositStatus:\n- \"active\"\n values.getUpgradeActivationDelay:\n- 259200\n+ 0\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_5\"\n+ \"StarkWare_StarknetTokenBridge_2.0_6-halt\"\n values.implementation:\n- \"eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n+ \"eth:0xE0D1fab527A85D955d4c05323250367E61bA3f18\"\n values.maxTotalBalance:\n- \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n values.StarkWareProxy_upgradeDelay:\n- 259200\n+ 0\n+++ description: empty: withdrawals are not limited, `0x0000000000000000000000000000000000455448` (or respective `bridgedToken` address): withdrawals are limited.\n+++ severity: HIGH\n values.withdrawalLimitStatus:\n- \"inactive\"\n+ []\n values.cleareanceAddress:\n+ \"eth:0x0555E30da8f98308EdB960aa94C0Db47230d2B9c\"\n values.getL2Bridge:\n+ \"3475252094465534150446669812792040965529065299943233505330779571674053440258\"\n+++ description: The maximum total escrow balance per token (can limit deposits) is listed here if modified.\n values.maxTotalTokenBalance:\n+ {}\n+++ description: Bridge halt was completed for these tokens.\n+++ severity: HIGH\n values.tokenHaltCompleted:\n+ [\"eth:0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\"]\n+++ description: Bridge halt was signalled for these tokens.\n+++ severity: HIGH\n values.tokenHaltSignalled:\n+ [\"eth:0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\"]\n fieldMeta.$admin.description:\n- \"NOT the same as the `GOVERNANCE_ADMIN` access control role (see implementation) but managed by it.\"\n+ \"Same as UPGRADE_ADMIN role and managed by `GOVERNANCE_ADMIN` access control role (see implementation).\"\n fieldMeta.withdrawalLimitStatus.description:\n- \"inactive: withdrawals are not limited, any number: withdrawals are limited and the number is the intraday allowance that is left.\"\n+ \"empty: withdrawals are not limited, `0x0000000000000000000000000000000000455448` (or respective `bridgedToken` address): withdrawals are limited.\"\n fieldMeta.maxTotalBalance:\n- {\"description\":\"The maximum total balance that can be locked in the bridge.\"}\n fieldMeta.depositStatus:\n- {\"severity\":\"HIGH\",\"description\":\"Token status managed by the Manager. Only affects deposits.\"}\n fieldMeta.maxTotalTokenBalance:\n+ {\"description\":\"The maximum total escrow balance per token (can limit deposits) is listed here if modified.\"}\n fieldMeta.tokenHaltSignalled:\n+ {\"severity\":\"HIGH\",\"description\":\"Bridge halt was signalled for these tokens.\"}\n fieldMeta.tokenHaltCompleted:\n+ {\"severity\":\"HIGH\",\"description\":\"Bridge halt was completed for these tokens.\"}\n implementationNames.eth:0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85:\n- \"StarknetERC20Bridge\"\n implementationNames.eth:0xE0D1fab527A85D955d4c05323250367E61bA3f18:\n+ \"StarknetTokenBridge\"\n usedTypes:\n- [{\"typeCaster\":\"Mapping\",\"arg\":{\"115792089237316195423570985008687907853269984665640564039457584007913129639935\":\"inactive\"}},{\"typeCaster\":\"Mapping\",\"arg\":{\"0\":\"unknown\",\"1\":\"pending\",\"2\":\"active\",\"3\":\"deactivated\"}}]\n }\n```\n\n```diff\n contract SolvBTCBridge (eth:0xA86b9b9c58d4f786F8ea89356c9c9Dde9432Ab10) {\n +++ description: Haltable version of the Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually. Deposits for a particular token can be halted by app governor, halt must be finalized in the second transaction that also sweeps all funds into a clrearing address. There is no logic to resume bridging after the halt.\n template:\n- \"starknet/StarknetMultiBridge\"\n+ \"starknet/StarknetMultiBridge_haltable\"\n sourceHashes.1:\n- \"0x066d78e6d7d8dd603e76a970521e74980c0853d848c55f014c7867ecac8be211\"\n+ \"0x75f2a8488acf6abb9e13f53441969f226aebd93a943aae7e6051a2cbfea0b7d0\"\n description:\n- \"Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually.\"\n+ \"Haltable version of the Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually. Deposits for a particular token can be halted by app governor, halt must be finalized in the second transaction that also sweeps all funds into a clrearing address. There is no logic to resume bridging after the halt.\"\n values.$implementation:\n- \"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff\"\n+ \"eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7\"\n values.$pastUpgrades.3:\n+ [\"2026-01-19T14:07:59.000Z\",\"0xa0ae9228abd03f1701caf995520b4ad4f9998bf46376e5f8cea39a24d0ee461a\",[\"eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.identify:\n- \"StarkWare_StarknetTokenBridge_2.0_6\"\n+ \"StarkWare_StarknetTokenBridge_2.0_6-halt\"\n values.implementation:\n- \"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff\"\n+ \"eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7\"\n values.cleareanceAddress:\n+ \"eth:0xd6FD2d2B18207a3b1A3d45C1ccA8c5624Ca82041\"\n+++ description: Bridge halt was completed for these tokens.\n+++ severity: HIGH\n values.tokenHaltCompleted:\n+ [\"eth:0x7A56E1C57C7475CCf742a1832B028F0456652F97\"]\n+++ description: Bridge halt was signalled for these tokens.\n+++ severity: HIGH\n values.tokenHaltSignalled:\n+ [\"eth:0x7A56E1C57C7475CCf742a1832B028F0456652F97\"]\n fieldMeta.tokenHaltSignalled:\n+ {\"severity\":\"HIGH\",\"description\":\"Bridge halt was signalled for these tokens.\"}\n fieldMeta.tokenHaltCompleted:\n+ {\"severity\":\"HIGH\",\"description\":\"Bridge halt was completed for these tokens.\"}\n implementationNames.eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff:\n- \"StarknetTokenBridge\"\n implementationNames.eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7:\n+ \"StarknetTokenBridge\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0xd6FD2d2B18207a3b1A3d45C1ccA8c5624Ca82041)\n +++ description: None\n```"
}
]
},
{
"id": "57e542dd",
"date": "Mon, 19 Jan 2026 12:03:00 GMT",
"timestamp": 1768824106,
"description": "Added Starkware multisig as app governor and app admin to WBTC bridge. Upgraded SolvBTCBridge twice, second upgrade returned implementation to the initial version, the intermediate implementation is haltable but was not halted afai can see: https://disco.l2beat.com/diff/eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff/eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract WBTCBridge (eth:0x283751A21eafBFcD52297820D27C1f1963D9b5b4) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n values.accessControl.APP_GOVERNOR.members.0:\n+ \"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.APP_ROLE_ADMIN.members.0:\n+ \"eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n }\n```\n\n```diff\n contract SolvBTCBridge (eth:0xA86b9b9c58d4f786F8ea89356c9c9Dde9432Ab10) {\n +++ description: Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually.\n values.$pastUpgrades.1:\n+ [\"2026-01-15T16:06:23.000Z\",\"0x27532d9c2db25f9d053fe4246f83a8c719a0d0b000a9d0e9f1e7dae1e05f287a\",[\"eth:0x205Fef0daB48D83CbA6888C5F050FeE36C4762B7\"]]\n values.$pastUpgrades.2:\n+ [\"2026-01-15T16:08:35.000Z\",\"0x787522b1ecf6f59d77fdd6278cf3d92f7b28cc292264e5f7ae9ef93c1344d587\",[\"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff\"]]\n values.$upgradeCount:\n- 1\n+ 3\n }\n```"
}
]
},
{
"id": "10e44fc3",
"date": "Tue, 16 Dec 2025 10:17:18 GMT",
"timestamp": 1765880174,
"description": "Updated Starknet OS and Aggregator programs.",
"isHighSeverity": true,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, 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 values.aggregatorHashMapped:\n- \"Starknet Aggregator (since v0.14.0)\"\n+ \"1701025211190912681772481128523426351562426117847395998223683709327746845867\"\n values.aggregatorProgramHash:\n- \"760308386675154762009993173725077399730170358078020153308029499928875469870\"\n+ \"1701025211190912681772481128523426351562426117847395998223683709327746845867\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"793595346346724189681221050719974054861327641387231526786912662354259445535\"\n+ \"918745833886511857768061986591752808672496300091957204265383861063635175685\"\n values.programHashHistory.12:\n+ \"793595346346724189681221050719974054861327641387231526786912662354259445535\"\n values.programHashMapped:\n- \"StarkNet OS (since v0.14.0)\"\n+ \"918745833886511857768061986591752808672496300091957204265383861063635175685\"\n }\n```"
}
]
},
{
"id": "8af8a2aa",
"date": "Wed, 01 Oct 2025 08:10:29 GMT",
"timestamp": 1759305296,
"description": "add SolvBTC and LBTC canonical escrows. Both have EOA admins and unverified manager contracts.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LBTCBridge (eth:0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e) {\n +++ description: Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"StarkWare proxy\"\n template:\n+ \"starknet/StarknetMultiBridge\"\n sourceHashes:\n+ [\"0xef5bec9147a21f62b18b6320b8177ab928b4200dbdd747833b23522450ec899c\",\"0x066d78e6d7d8dd603e76a970521e74980c0853d848c55f014c7867ecac8be211\"]\n description:\n+ \"Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually.\"\n sinceTimestamp:\n+ 1757941367\n sinceBlock:\n+ 23368649\n values:\n+ {\"$admin\":\"eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b\",\"$immutable\":false,\"$implementation\":\"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff\",\"$pastUpgrades\":[[\"2025-09-15T13:04:11.000Z\",\"0x503782544b4f41c5e38d13ba7e96e5dd4fb597abb7a595a7da2af8ddfaface58\",[\"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff\"]]],\"$upgradeCount\":1,\"accessControl\":{\"DEFAULT_ADMIN_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[]},\"GOVERNANCE_ADMIN\":{\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b\"]},\"APP_GOVERNOR\":{\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[\"eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b\"]},\"APP_ROLE_ADMIN\":{\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b\"]},\"OPERATOR\":{\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]},\"TOKEN_ADMIN\":{\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]},\"UPGRADE_GOVERNOR\":{\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b\"]},\"SECURITY_ADMIN\":{\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b\"]},\"SECURITY_AGENT\":{\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}},\"depositorAddress\":\"eth:0x0000000000000000000000000000000000000000\",\"ENABLE_WINDOW_DURATION_SLOT\":\"0xb00a6109e73dbe7bbf8d3f18fb9221d2d024dc2671e3d5ff02532ccc40590738\",\"estimateDepositFeeWei\":100000000000000,\"estimateEnrollmentFeeWei\":500000000000000,\"getEnableWindowDuration\":1209600,\"getL2Bridge\":\"1006984797796401530522902660195363957599813882384074600431497176526924418741\",\"getUpgradeActivationDelay\":0,\"govAdminAC\":[\"eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b\"],\"identify\":\"StarkWare_StarknetTokenBridge_2.0_6\",\"implementation\":\"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff\",\"isFrozen\":false,\"isNotFinalized\":true,\"l2TokenContract\":\"eth:0x4A1FC43dB8074646D4D2a0A9E6Fa5272685A0eb5\",\"manager\":\"eth:0xf76b8bCC076cAb358C351F1DBDFeBDA799BD89dE\",\"MAX_UPGRADE_DELAY\":15552000,\"maxDeposit\":\"115792089237316195423570985008687907853269984665640564039457584007913129639935\",\"maxTotalTokenBalance\":{},\"messagingContract\":\"eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\",\"PROXY_VERSION\":\"5.1.0\",\"secAdminAC\":[\"eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b\"],\"secAgentAC\":[],\"StarkWareProxy_upgradeDelay\":0,\"UPGRADE_DELAY_SLOT\":\"0xc21dbb3089fcb2c4f4c6a67854ab4db2b0f233ea4b21b21f912d52d18fc5db1f\",\"withdrawalLimitStatus\":[],\"withdrawLimitPct\":5}\n fieldMeta:\n+ {\"$admin\":{\"severity\":\"HIGH\",\"description\":\"Same as UPGRADE_ADMIN role and managed by `GOVERNANCE_ADMIN` access control role (see implementation).\"},\"withdrawalLimitStatus\":{\"severity\":\"HIGH\",\"description\":\"empty: withdrawals are not limited, `0x0000000000000000000000000000000000455448` (or respective `bridgedToken` address): withdrawals are limited.\"},\"withdrawLimitPct\":{\"description\":\"The withdrawal limit in percent of locked funds per 24 hours. This value is immutable and needs an implementation upgrade to be changed.\"},\"maxTotalTokenBalance\":{\"description\":\"The maximum total escrow balance per token (can limit deposits) is listed here if modified.\"},\"accessControl\":{\"severity\":\"HIGH\",\"description\":\"Access control map of the contract. The individual (pickRoleMembers) permissions need to be added if a new role becomes active.\"},\"govAdminAC\":{\"description\":\"This role is not the proxy upgrade admin role, but can assign / remove the proxy upgrader role (governor) via the `GovernanceAdminOnly` modifier in the implementation.\"}}\n implementationNames:\n+ {\"eth:0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e\":\"ProxyV5\",\"eth:0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff\":\"StarknetTokenBridge\"}\n category:\n+ {\"name\":\"External Bridges\",\"priority\":1}\n }\n```\n\n```diff\n EOA (eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b) {\n +++ description: None\n receivedPermissions:\n+ [{\"permission\":\"interact\",\"from\":\"eth:0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e\",\"description\":\"disable the withdrawal limit and manage the security agent role that can enable it.\",\"role\":\".secAdminAC\"},{\"permission\":\"interact\",\"from\":\"eth:0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e\",\"description\":\"manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation.\",\"role\":\".govAdminAC\"},{\"permission\":\"upgrade\",\"from\":\"eth:0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e\",\"role\":\".$admin\"}]\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract SolvBTCBridge (eth:0xA86b9b9c58d4f786F8ea89356c9c9Dde9432Ab10)\n +++ description: Starkware Multibridge escrow. Withdrawals can be throttled to 5% of the locked funds per 24 hours for each token individually.\n```"
}
]
},
{
"id": "b57bb0df",
"date": "Tue, 02 Sep 2025 12:30:15 GMT",
"timestamp": 1756816147,
"description": "Updated zk programs to align with version 0.14.0 (https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-30.md).",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, 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 values.aggregatorHashMapped:\n- \"Starknet Aggregator (since v0.13.4)\"\n+ \"Starknet Aggregator (since v0.14.0)\"\n values.aggregatorProgramHash:\n- \"273279642033703284306509103355536170486431195329675679055627933497997642494\"\n+ \"760308386675154762009993173725077399730170358078020153308029499928875469870\"\n values.configHash:\n- \"2590421891839256512113614983194993186457498815986333310670788206383913888162\"\n+ \"3188242426588271529884520804512942022765170489242162533995649881904346336763\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"2534935718742676028234156221136000178296467523045214874259117268197132196876\"\n+ \"793595346346724189681221050719974054861327641387231526786912662354259445535\"\n values.programHashHistory.11:\n+ \"2534935718742676028234156221136000178296467523045214874259117268197132196876\"\n values.programHashMapped:\n- \"2534935718742676028234156221136000178296467523045214874259117268197132196876\"\n+ \"StarkNet OS (since v0.14.0)\"\n }\n```"
}
]
},
{
"id": "2ac522b4",
"date": "Mon, 14 Jul 2025 12:46:31 GMT",
"timestamp": 1752497191,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 25,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Starkware Multisig 2 (0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract LORDSBridge (0x023A2aAc5d0fa69E3243994672822BA43E34E5C9)\n +++ description: Custom (and immutable) entry point contract and escrow for users depositing LORDS to via StarkGate to the L2.\n```\n\n```diff\n+ Status: CREATED\n contract DAIBridge (0x0437465dfb5B79726e35F08559B0cBea55bb585C)\n +++ description: Simple escrow that accepts tokens and allows to configure permissioned addresses that can access the tokens.\n```\n\n```diff\n+ Status: CREATED\n contract StarkgateManager (0x0c5aE94f8939182F2D06097025324D1E537d5B60)\n +++ description: Acts as a central contract to manage StarkGate bridge escrows (add new ones, deactivate existing, change configs) when given the Manager role from the respective escrows.\n```\n\n```diff\n+ Status: CREATED\n contract StarkgateRegistry (0x1268cc171c54F2000402DfF20E93E60DF4c96812)\n +++ description: A simple registry that maps tokens to their StarkGate escrows. It also keeps a list of tokens that are blocked from being added to StarkGate.\n```\n\n```diff\n+ Status: CREATED\n contract Starkware Security Council (0x15e8c684FD095d4796A0c0CF678554F4c1C7C361)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract WBTCBridge (0x283751A21eafBFcD52297820D27C1f1963D9b5b4)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract FXSBridge (0x66ba83ba3D3AD296424a2258145d9910E9E40B7C)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract Starkware Multisig 4 (0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Starkware Multisig 1 (0x83C0A700114101D1283D1405E2c8f21D3F03e988)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1DaiGateway (0x9F96fE0633eE838D0298E8b8980E6716bE81388d)\n +++ description: Gateway contract that is the user entrypoint to deposit DAI to a custom escrow to bridge via StarkGate.\n```\n\n```diff\n+ Status: CREATED\n contract ETHBridge (0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419)\n +++ description: Standard Starkware canonical bridge escrow for ETH. Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract USDTBridge (0xbb3400F107804DFB482565FF1Ec8D8aE66747605)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract wstETHBridge (0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4)\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, 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```\n\n```diff\n+ Status: CREATED\n contract DelayedExecutor (0xCA112018fEB729458b628AadC8f996f9deCbCa0c)\n +++ description: A simple Timelock contract with an immutable delay of 8d. The owner (eth:0x83C0A700114101D1283D1405E2c8f21D3F03e988) can queue transactions.\n```\n\n```diff\n+ Status: CREATED\n contract STRKBridge (0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract rETHBridge (0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract sfrxETHBridge (0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract FRAXBridge (0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract LUSDBridge (0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract MultiBridge (0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb)\n +++ description: Starkware Multibridge escrow. Withdrawals can be throttled to 5 of the locked funds per 24 hours for each token individually.\n```\n\n```diff\n+ Status: CREATED\n contract USDCBridge (0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract Starkware SCMinority Multisig (0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract UNIBridge (0xf76e6bF9e2df09D0f854F045A3B724074dA1236B)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n```"
}
]
},
{
"id": "2945c807",
"date": "Mon, 12 May 2025 07:25:15 GMT",
"timestamp": 1747034715,
"description": "current permissions setup:\n\nmain contract, ETHBridge, STRBridge have 2 proxyUpgraders each:\n1) Security Council\n2) 8d delayed SW Multisig\n\nSHARP has 0 delay MS upgrades\n\nSC minority: \n1) Operator in main contract\n2) SECURITY_ADMIN: can remove withdrawal limit in ETH and STRKbridges and revoke/grant the SECURITY_AGENT role (can activate withdraw limit)\n\nthe SECURITY_AGENT role is held by a SW Multisig and can enable the withdrawal limit.",
"isHighSeverity": true,
"changeCount": 153,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starkware Multisig 2 (0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec) {\n +++ description: None\n receivedPermissions.55:\n- {\"permission\":\"upgrade\",\"from\":\"0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb\"}\n receivedPermissions.54:\n- {\"permission\":\"upgrade\",\"from\":\"0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8\"}\n receivedPermissions.53:\n- {\"permission\":\"upgrade\",\"from\":\"0x0c5aE94f8939182F2D06097025324D1E537d5B60\"}\n receivedPermissions.52:\n- {\"permission\":\"upgrade\",\"from\":\"0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2\",\"delay\":259200}\n receivedPermissions.51:\n- {\"permission\":\"interact\",\"from\":\"0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2\",\"description\":\"disable the withdrawal limit.\"}\n receivedPermissions.50:\n- {\"permission\":\"interact\",\"from\":\"0x0c5aE94f8939182F2D06097025324D1E537d5B60\",\"description\":\"enroll new tokens, deactivate existing ones (for deposits) or block tokens from being added to the Multibridge.\"}\n receivedPermissions.49:\n- {\"permission\":\"interact\",\"from\":\"0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb\",\"description\":\"disable the withdrawal limit.\"}\n receivedPermissions.48:\n- {\"permission\":\"interact\",\"from\":\"0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8\",\"description\":\"disable the withdrawal limit.\"}\n receivedPermissions.47.from:\n- \"0xf76e6bF9e2df09D0f854F045A3B724074dA1236B\"\n+ \"0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb\"\n receivedPermissions.46.from:\n- \"0x1268cc171c54F2000402DfF20E93E60DF4c96812\"\n+ \"0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8\"\n receivedPermissions.45.from:\n- \"0x283751A21eafBFcD52297820D27C1f1963D9b5b4\"\n+ \"0x0c5aE94f8939182F2D06097025324D1E537d5B60\"\n receivedPermissions.45.delay:\n- 259200\n receivedPermissions.44.from:\n- \"0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816\"\n+ \"0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2\"\n receivedPermissions.43.from:\n- \"0xf76e6bF9e2df09D0f854F045A3B724074dA1236B\"\n+ \"0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2\"\n receivedPermissions.42.from:\n- \"0x1268cc171c54F2000402DfF20E93E60DF4c96812\"\n+ \"0x0c5aE94f8939182F2D06097025324D1E537d5B60\"\n receivedPermissions.42.description:\n- \"manage critical access control roles and the role that can upgrade the implementation..\"\n+ \"enroll new tokens, deactivate existing ones (for deposits) or block tokens from being added to the Multibridge.\"\n receivedPermissions.41.from:\n- \"0x283751A21eafBFcD52297820D27C1f1963D9b5b4\"\n+ \"0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb\"\n receivedPermissions.40.from:\n- \"0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816\"\n+ \"0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8\"\n receivedPermissions.39.permission:\n- \"interact\"\n+ \"upgrade\"\n receivedPermissions.39.from:\n- \"0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5\"\n+ \"0xf76e6bF9e2df09D0f854F045A3B724074dA1236B\"\n receivedPermissions.39.description:\n- \"disable the withdrawal limit.\"\n receivedPermissions.38.from:\n- \"0x66ba83ba3D3AD296424a2258145d9910E9E40B7C\"\n+ \"0x1268cc171c54F2000402DfF20E93E60DF4c96812\"\n receivedPermissions.37.from:\n- \"0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb\"\n+ \"0x283751A21eafBFcD52297820D27C1f1963D9b5b4\"\n receivedPermissions.37.delay:\n+ 259200\n receivedPermissions.36.permission:\n- \"interact\"\n+ \"upgrade\"\n receivedPermissions.36.from:\n- \"0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2\"\n+ \"0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816\"\n receivedPermissions.36.description:\n- \"enable the withdrawal limit.\"\n receivedPermissions.36.delay:\n+ 259200\n receivedPermissions.35.permission:\n- \"upgrade\"\n+ \"interact\"\n receivedPermissions.35.from:\n- \"0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B\"\n+ \"0xf76e6bF9e2df09D0f854F045A3B724074dA1236B\"\n receivedPermissions.35.delay:\n- 259200\n receivedPermissions.35.description:\n+ \"disable the withdrawal limit.\"\n receivedPermissions.34.from:\n- \"0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb\"\n+ \"0x1268cc171c54F2000402DfF20E93E60DF4c96812\"\n receivedPermissions.34.description:\n- \"enable the withdrawal limit.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation..\"\n receivedPermissions.33.from:\n- \"0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8\"\n+ \"0x283751A21eafBFcD52297820D27C1f1963D9b5b4\"\n receivedPermissions.33.description:\n- \"enable the withdrawal limit.\"\n+ \"disable the withdrawal limit.\"\n receivedPermissions.32.from:\n- \"0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2\"\n+ \"0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816\"\n receivedPermissions.32.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"disable the withdrawal limit.\"\n receivedPermissions.31.from:\n- \"0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb\"\n+ \"0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5\"\n receivedPermissions.31.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"disable the withdrawal limit.\"\n receivedPermissions.30.permission:\n- \"interact\"\n+ \"upgrade\"\n receivedPermissions.30.from:\n- \"0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8\"\n+ \"0x66ba83ba3D3AD296424a2258145d9910E9E40B7C\"\n receivedPermissions.30.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.29.permission:\n- \"interact\"\n+ \"upgrade\"\n receivedPermissions.29.from:\n- \"0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B\"\n+ \"0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb\"\n receivedPermissions.29.description:\n- \"disable the withdrawal limit.\"\n receivedPermissions.28.from:\n- \"0x0c5aE94f8939182F2D06097025324D1E537d5B60\"\n+ \"0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2\"\n receivedPermissions.28.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n receivedPermissions.27.permission:\n- \"interact\"\n+ \"upgrade\"\n receivedPermissions.27.from:\n- \"0x66ba83ba3D3AD296424a2258145d9910E9E40B7C\"\n+ \"0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B\"\n receivedPermissions.27.description:\n- \"disable the withdrawal limit.\"\n receivedPermissions.27.delay:\n+ 259200\n receivedPermissions.26.permission:\n- \"upgrade\"\n+ \"interact\"\n receivedPermissions.26.from:\n- \"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\"\n+ \"0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb\"\n receivedPermissions.26.delay:\n- 259200\n receivedPermissions.26.description:\n+ \"enable the withdrawal limit.\"\n receivedPermissions.25.from:\n- \"0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb\"\n+ \"0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8\"\n receivedPermissions.25.description:\n- \"disable the withdrawal limit.\"\n+ \"enable the withdrawal limit.\"\n receivedPermissions.24.permission:\n- \"upgrade\"\n+ \"interact\"\n receivedPermissions.24.from:\n- \"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\"\n+ \"0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2\"\n receivedPermissions.24.delay:\n- 259200\n receivedPermissions.24.description:\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.23.permission:\n- \"upgrade\"\n+ \"interact\"\n receivedPermissions.23.from:\n- \"0xbb3400F107804DFB482565FF1Ec8D8aE66747605\"\n+ \"0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb\"\n receivedPermissions.23.delay:\n- 259200\n receivedPermissions.23.description:\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.22.from:\n- \"0xf76e6bF9e2df09D0f854F045A3B724074dA1236B\"\n+ \"0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8\"\n receivedPermissions.22.description:\n- \"enable the withdrawal limit.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.21.from:\n- \"0x283751A21eafBFcD52297820D27C1f1963D9b5b4\"\n+ \"0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B\"\n receivedPermissions.21.description:\n- \"enable the withdrawal limit.\"\n+ \"disable the withdrawal limit.\"\n receivedPermissions.20.from:\n- \"0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816\"\n+ \"0x0c5aE94f8939182F2D06097025324D1E537d5B60\"\n receivedPermissions.20.description:\n- \"enable the withdrawal limit.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.19.from:\n- \"0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5\"\n+ \"0x66ba83ba3D3AD296424a2258145d9910E9E40B7C\"\n receivedPermissions.19.description:\n- \"enable the withdrawal limit.\"\n+ \"disable the withdrawal limit.\"\n receivedPermissions.18.from:\n- \"0xf76e6bF9e2df09D0f854F045A3B724074dA1236B\"\n+ \"0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb\"\n receivedPermissions.18.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"disable the withdrawal limit.\"\n receivedPermissions.17.permission:\n- \"interact\"\n+ \"upgrade\"\n receivedPermissions.17.from:\n- \"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\"\n+ \"0xbb3400F107804DFB482565FF1Ec8D8aE66747605\"\n receivedPermissions.17.description:\n- \"disable the withdrawal limit.\"\n receivedPermissions.17.delay:\n+ 259200\n receivedPermissions.16.from:\n- \"0xbb3400F107804DFB482565FF1Ec8D8aE66747605\"\n+ \"0xf76e6bF9e2df09D0f854F045A3B724074dA1236B\"\n receivedPermissions.16.description:\n- \"disable the withdrawal limit.\"\n+ \"enable the withdrawal limit.\"\n receivedPermissions.15.from:\n- \"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\"\n+ \"0x283751A21eafBFcD52297820D27C1f1963D9b5b4\"\n receivedPermissions.15.description:\n- \"manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n receivedPermissions.14.from:\n- \"0x283751A21eafBFcD52297820D27C1f1963D9b5b4\"\n+ \"0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816\"\n receivedPermissions.14.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n receivedPermissions.13.from:\n- \"0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816\"\n+ \"0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5\"\n receivedPermissions.13.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n receivedPermissions.12.from:\n- \"0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5\"\n+ \"0xf76e6bF9e2df09D0f854F045A3B724074dA1236B\"\n receivedPermissions.11.from:\n- \"0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B\"\n+ \"0xbb3400F107804DFB482565FF1Ec8D8aE66747605\"\n receivedPermissions.11.description:\n- \"enable the withdrawal limit.\"\n+ \"disable the withdrawal limit.\"\n receivedPermissions.10.from:\n- \"0x66ba83ba3D3AD296424a2258145d9910E9E40B7C\"\n+ \"0x283751A21eafBFcD52297820D27C1f1963D9b5b4\"\n receivedPermissions.10.description:\n- \"enable the withdrawal limit.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.9.from:\n- \"0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb\"\n+ \"0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816\"\n receivedPermissions.9.description:\n- \"enable the withdrawal limit.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.8.from:\n- \"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\"\n+ \"0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5\"\n receivedPermissions.8.description:\n- \"disable the withdrawal limit and manage the security agent role which can enable it.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.7.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n receivedPermissions.6.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n receivedPermissions.5.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n receivedPermissions.4.from:\n- \"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\"\n+ \"0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B\"\n receivedPermissions.4.description:\n- \"enable the withdrawal limit.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.3.from:\n- \"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\"\n+ \"0x66ba83ba3D3AD296424a2258145d9910E9E40B7C\"\n receivedPermissions.3.description:\n- \"enable the withdrawal limit.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.2.from:\n- \"0xbb3400F107804DFB482565FF1Ec8D8aE66747605\"\n+ \"0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb\"\n receivedPermissions.2.description:\n- \"enable the withdrawal limit.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n receivedPermissions.1.from:\n- \"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\"\n+ \"0xbb3400F107804DFB482565FF1Ec8D8aE66747605\"\n receivedPermissions.1.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n }\n```\n\n```diff\n contract Starkware Security Council (0x15e8c684FD095d4796A0c0CF678554F4c1C7C361) {\n +++ description: None\n values.$members.10:\n- \"0x68c6AfB39D2c6e22555175dDaE02d20e37d218f0\"\n+ \"0xF6AB8BD99EfE2515C45d6FeE8Ea32738877EFbD8\"\n receivedPermissions.8.delay:\n- 259200\n receivedPermissions.7.delay:\n- 259200\n }\n```\n\n```diff\n contract Starkware Multisig 1 (0x83C0A700114101D1283D1405E2c8f21D3F03e988) {\n +++ description: None\n receivedPermissions.2.delay:\n- 259200\n receivedPermissions.1.delay:\n- 259200\n }\n```\n\n```diff\n contract ETHBridge (0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419) {\n +++ description: Standard Starkware canonical bridge escrow for ETH. Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n+++ description: NOT the same as the `GOVERNANCE_ADMIN` access control role (see implementation).\n+++ severity: HIGH\n values.$admin.2:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n+++ description: NOT the same as the `GOVERNANCE_ADMIN` access control role (see implementation).\n+++ severity: HIGH\n values.$admin.1:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.$pastUpgrades.7:\n+ [\"2024-02-12T11:55:59.000Z\",\"0x1f56cc90fd40bcc00a27f94c989e93cb414a884e2fe971323426f40d58c71306\",[\"0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95\"]]\n values.$pastUpgrades.6.2:\n- \"0x1f56cc90fd40bcc00a27f94c989e93cb414a884e2fe971323426f40d58c71306\"\n+ \"0xf0fc6787173f9e4ee964487191601bf84e443f30192c896849df7fd12dfa1a95\"\n values.$pastUpgrades.6.1:\n- \"2024-02-12T11:55:59.000Z\"\n+ \"2025-05-11T12:49:59.000Z\"\n values.$upgradeCount:\n- 7\n+ 8\n values.accessControl.GOVERNANCE_ADMIN.members.1:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.accessControl.GOVERNANCE_ADMIN.members.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.getUpgradeActivationDelay:\n- 259200\n+ 0\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove the proxy upgrader role (governor) via the `GovernanceAdminOnly` modifier in the implementation.\n values.govAdminAC.1:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove the proxy upgrader role (governor) via the `GovernanceAdminOnly` modifier in the implementation.\n values.govAdminAC.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAdminAC.1:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAdminAC.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAgentAC.1:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAgentAC.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.StarkWareProxy_upgradeDelay:\n- 259200\n+ 0\n }\n```\n\n```diff\n contract DelayedExecutor (0xCA112018fEB729458b628AadC8f996f9deCbCa0c) {\n +++ description: A simple Timelock contract with an immutable delay of 8d. The owner (0x83C0A700114101D1283D1405E2c8f21D3F03e988) can queue transactions.\n directlyReceivedPermissions.2.delay:\n- 259200\n directlyReceivedPermissions.1.delay:\n- 259200\n }\n```\n\n```diff\n contract STRKBridge (0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n+++ description: NOT the same as the `GOVERNANCE_ADMIN` access control role (see implementation) but managed by it.\n+++ severity: HIGH\n values.$admin.2:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n+++ description: NOT the same as the `GOVERNANCE_ADMIN` access control role (see implementation) but managed by it.\n+++ severity: HIGH\n values.$admin.1:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.$pastUpgrades.7:\n+ [\"2024-02-12T15:17:11.000Z\",\"0x7c5561efa149f2be36fac917f47b0b107218b43de1eac56ceb97d008257bd850\",[\"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"]]\n values.$pastUpgrades.6.2:\n- \"0x7c5561efa149f2be36fac917f47b0b107218b43de1eac56ceb97d008257bd850\"\n+ \"0x42056631084f574f2ed5f49bef3d1aabab22008266ac97afea3e5f42649bd7c3\"\n values.$pastUpgrades.6.1:\n- \"2024-02-12T15:17:11.000Z\"\n+ \"2024-01-14T13:34:23.000Z\"\n values.$pastUpgrades.6.0.0:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x052C81F05595B5DeF4fdFEdbD7CA7b4A8a7B50C1\"\n values.$pastUpgrades.5.2:\n- \"0x42056631084f574f2ed5f49bef3d1aabab22008266ac97afea3e5f42649bd7c3\"\n+ \"0xf0fc6787173f9e4ee964487191601bf84e443f30192c896849df7fd12dfa1a95\"\n values.$pastUpgrades.5.1:\n- \"2024-01-14T13:34:23.000Z\"\n+ \"2025-05-11T12:49:59.000Z\"\n values.$pastUpgrades.5.0.0:\n- \"0x052C81F05595B5DeF4fdFEdbD7CA7b4A8a7B50C1\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$upgradeCount:\n- 7\n+ 8\n values.accessControl.GOVERNANCE_ADMIN.members.1:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.accessControl.GOVERNANCE_ADMIN.members.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.accessControl.UPGRADE_GOVERNOR.members.2:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.accessControl.UPGRADE_GOVERNOR.members.1:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.getUpgradeActivationDelay:\n- 259200\n+ 0\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove it via the `GovernanceAdminOnly` modifier or as a role admin in the implementation.\n values.govAdminAC.1:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove it via the `GovernanceAdminOnly` modifier or as a role admin in the implementation.\n values.govAdminAC.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAdminAC.1:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAdminAC.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAgentAC.1:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAgentAC.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.StarkWareProxy_upgradeDelay:\n- 259200\n+ 0\n }\n```"
}
]
},
{
"id": "546743c9",
"date": "Fri, 09 May 2025 11:13:46 GMT",
"timestamp": 1746789226,
"description": "MS member changes, permissions in bridge revoked.",
"isHighSeverity": false,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starkware Security Council (0x15e8c684FD095d4796A0c0CF678554F4c1C7C361) {\n +++ description: None\n values.$members.15:\n- \"0xc196985a8bAfcEcF9C29Cfb24E2fb81f80De53E7\"\n values.$members.14:\n- \"0x7383DDEd70cCCFd99835612C4148fA986e9DE560\"\n values.$members.13:\n- \"0x81C1B22c67731D3f0Bac506102Fe998361565874\"\n values.$members.12:\n- \"0x033b8521F357F813Cc87B08c0668f1b59FAE45e2\"\n values.$members.11:\n- \"0x68c6AfB39D2c6e22555175dDaE02d20e37d218f0\"\n+ \"0x7383DDEd70cCCFd99835612C4148fA986e9DE560\"\n values.$members.10:\n- \"0x5C7DcaECB4D8e49Ea2487c5Cc23C5131Ddb2252F\"\n+ \"0x68c6AfB39D2c6e22555175dDaE02d20e37d218f0\"\n values.$members.9:\n- \"0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD\"\n+ \"0x5C7DcaECB4D8e49Ea2487c5Cc23C5131Ddb2252F\"\n values.$members.8:\n- \"0x2914767E232FD7708ab06bA60dB16c36C555751d\"\n+ \"0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD\"\n values.$members.7:\n- \"0x10277B1922e56d1B69f4dCe5A35696C791F78cac\"\n+ \"0x2914767E232FD7708ab06bA60dB16c36C555751d\"\n values.$members.6:\n- \"0x0762bCc4D604Aa3B5122C7D6571Cf5368EF3F09c\"\n+ \"0x10277B1922e56d1B69f4dCe5A35696C791F78cac\"\n values.$members.5:\n- \"0xe810b82A815AC9d46FDA4D6FBfA8521864f04645\"\n+ \"0x0762bCc4D604Aa3B5122C7D6571Cf5368EF3F09c\"\n values.multisigThreshold:\n- \"9 of 16 (56%)\"\n+ \"9 of 12 (75%)\"\n }\n```\n\n```diff\n contract ETHBridge (0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419) {\n +++ description: Standard Starkware canonical bridge escrow for ETH. Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n values.accessControl.SECURITY_ADMIN.members.1:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n }\n```\n\n```diff\n contract STRKBridge (0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n values.accessControl.SECURITY_ADMIN.members.1:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n }\n```\n\n```diff\n contract Starkware SCMinority Multisig (0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B) {\n +++ description: None\n values.$members.10:\n- \"0x68c6AfB39D2c6e22555175dDaE02d20e37d218f0\"\n+ \"0xF6AB8BD99EfE2515C45d6FeE8Ea32738877EFbD8\"\n }\n```"
}
]
},
{
"id": "7adf428a",
"date": "Wed, 07 May 2025 11:31:26 GMT",
"timestamp": 1746617486,
"description": "Moved 4 EOAs from Starkware security council minority multisig to Starkware security council.",
"isHighSeverity": false,
"changeCount": 26,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starkware Security Council (0x15e8c684FD095d4796A0c0CF678554F4c1C7C361) {\n +++ description: None\n values.$members.15:\n+ \"0xc196985a8bAfcEcF9C29Cfb24E2fb81f80De53E7\"\n values.$members.14:\n+ \"0x7383DDEd70cCCFd99835612C4148fA986e9DE560\"\n values.$members.13:\n+ \"0x81C1B22c67731D3f0Bac506102Fe998361565874\"\n values.$members.12:\n+ \"0x033b8521F357F813Cc87B08c0668f1b59FAE45e2\"\n values.$members.11:\n- \"0xc196985a8bAfcEcF9C29Cfb24E2fb81f80De53E7\"\n+ \"0x68c6AfB39D2c6e22555175dDaE02d20e37d218f0\"\n values.$members.10:\n- \"0x7383DDEd70cCCFd99835612C4148fA986e9DE560\"\n+ \"0x5C7DcaECB4D8e49Ea2487c5Cc23C5131Ddb2252F\"\n values.$members.9:\n- \"0x81C1B22c67731D3f0Bac506102Fe998361565874\"\n+ \"0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD\"\n values.$members.8:\n- \"0x033b8521F357F813Cc87B08c0668f1b59FAE45e2\"\n+ \"0x2914767E232FD7708ab06bA60dB16c36C555751d\"\n values.$members.7:\n- \"0x68c6AfB39D2c6e22555175dDaE02d20e37d218f0\"\n+ \"0x10277B1922e56d1B69f4dCe5A35696C791F78cac\"\n values.$members.6:\n- \"0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD\"\n+ \"0x0762bCc4D604Aa3B5122C7D6571Cf5368EF3F09c\"\n values.$members.5:\n- \"0x10277B1922e56d1B69f4dCe5A35696C791F78cac\"\n+ \"0xe810b82A815AC9d46FDA4D6FBfA8521864f04645\"\n values.$members.4:\n- \"0xe810b82A815AC9d46FDA4D6FBfA8521864f04645\"\n+ \"0x590Cb94bE977a769d9E7D95D9eff8DeAe82e430C\"\n values.$members.3:\n- \"0x590Cb94bE977a769d9E7D95D9eff8DeAe82e430C\"\n+ \"0x04D5b12b196a8CADEB2F476F22Ffb1334Ef9F94c\"\n values.multisigThreshold:\n- \"9 of 12 (75%)\"\n+ \"9 of 16 (56%)\"\n }\n```\n\n```diff\n contract Starkware SCMinority Multisig (0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B) {\n +++ description: None\n values.$members.15:\n- \"0xc196985a8bAfcEcF9C29Cfb24E2fb81f80De53E7\"\n values.$members.14:\n- \"0x7383DDEd70cCCFd99835612C4148fA986e9DE560\"\n values.$members.13:\n- \"0x81C1B22c67731D3f0Bac506102Fe998361565874\"\n values.$members.12:\n- \"0x033b8521F357F813Cc87B08c0668f1b59FAE45e2\"\n values.$members.11:\n- \"0x68c6AfB39D2c6e22555175dDaE02d20e37d218f0\"\n+ \"0x7383DDEd70cCCFd99835612C4148fA986e9DE560\"\n values.$members.10:\n- \"0x5C7DcaECB4D8e49Ea2487c5Cc23C5131Ddb2252F\"\n+ \"0x68c6AfB39D2c6e22555175dDaE02d20e37d218f0\"\n values.$members.9:\n- \"0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD\"\n+ \"0x5C7DcaECB4D8e49Ea2487c5Cc23C5131Ddb2252F\"\n values.$members.8:\n- \"0x2914767E232FD7708ab06bA60dB16c36C555751d\"\n+ \"0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD\"\n values.$members.7:\n- \"0x10277B1922e56d1B69f4dCe5A35696C791F78cac\"\n+ \"0x2914767E232FD7708ab06bA60dB16c36C555751d\"\n values.$members.6:\n- \"0x0762bCc4D604Aa3B5122C7D6571Cf5368EF3F09c\"\n+ \"0x10277B1922e56d1B69f4dCe5A35696C791F78cac\"\n values.$members.5:\n- \"0xe810b82A815AC9d46FDA4D6FBfA8521864f04645\"\n+ \"0x0762bCc4D604Aa3B5122C7D6571Cf5368EF3F09c\"\n values.multisigThreshold:\n- \"3 of 16 (19%)\"\n+ \"3 of 12 (25%)\"\n }\n```"
}
]
},
{
"id": "ce8be8d5",
"date": "Tue, 06 May 2025 12:35:17 GMT",
"timestamp": 1746534917,
"description": "Security Council is added to the to critical bridge admin permissions (ETHBridge and STRKBridge).",
"isHighSeverity": true,
"changeCount": 49,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starkware Security Council (0x15e8c684FD095d4796A0c0CF678554F4c1C7C361) {\n +++ description: None\n receivedPermissions.9:\n+ {\"permission\":\"upgrade\",\"from\":\"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\"}\n receivedPermissions.8:\n+ {\"permission\":\"upgrade\",\"from\":\"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\",\"delay\":259200}\n receivedPermissions.7:\n+ {\"permission\":\"upgrade\",\"from\":\"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\",\"delay\":259200}\n receivedPermissions.6:\n+ {\"permission\":\"governStarknet\",\"from\":\"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\"}\n receivedPermissions.5:\n+ {\"permission\":\"interact\",\"from\":\"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\",\"description\":\"disable the withdrawal limit.\"}\n receivedPermissions.4:\n+ {\"permission\":\"interact\",\"from\":\"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\",\"description\":\"disable the withdrawal limit.\"}\n receivedPermissions.3:\n+ {\"permission\":\"interact\",\"from\":\"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\",\"description\":\"manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation.\"}\n receivedPermissions.2:\n+ {\"permission\":\"interact\",\"from\":\"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\",\"description\":\"enable the withdrawal limit.\"}\n receivedPermissions.1.permission:\n- \"upgrade\"\n+ \"interact\"\n receivedPermissions.1.from:\n- \"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\"\n+ \"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\"\n receivedPermissions.1.description:\n+ \"enable the withdrawal limit.\"\n receivedPermissions.0.permission:\n- \"governStarknet\"\n+ \"interact\"\n receivedPermissions.0.from:\n- \"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\"\n+ \"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\"\n receivedPermissions.0.description:\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n }\n```\n\n```diff\n contract Starkware Multisig 1 (0x83C0A700114101D1283D1405E2c8f21D3F03e988) {\n +++ description: None\n receivedPermissions.3:\n+ {\"permission\":\"upgrade\",\"from\":\"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\",\"via\":[{\"address\":\"0xCA112018fEB729458b628AadC8f996f9deCbCa0c\",\"delay\":691200}]}\n receivedPermissions.2.from:\n- \"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\"\n+ \"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\"\n receivedPermissions.2.delay:\n+ 259200\n }\n```\n\n```diff\n contract ETHBridge (0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419) {\n +++ description: Standard Starkware canonical bridge escrow for ETH. Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n+++ description: NOT the same as the `GOVERNANCE_ADMIN` access control role (see implementation).\n+++ severity: HIGH\n values.$admin:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ [\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\",\"0xCA112018fEB729458b628AadC8f996f9deCbCa0c\",\"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"]\n values.accessControl.GOVERNANCE_ADMIN.members.1:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.accessControl.SECURITY_ADMIN.members.1:\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.SECURITY_ADMIN.members.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B\"\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove the proxy upgrader role (governor) via the `GovernanceAdminOnly` modifier in the implementation.\n values.govAdminAC.1:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAdminAC.1:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAgentAC.1:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n }\n```\n\n```diff\n contract DelayedExecutor (0xCA112018fEB729458b628AadC8f996f9deCbCa0c) {\n +++ description: A simple Timelock contract with an immutable delay of 8d. The owner (0x83C0A700114101D1283D1405E2c8f21D3F03e988) can queue transactions.\n directlyReceivedPermissions.3:\n+ {\"permission\":\"upgrade\",\"from\":\"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\"}\n directlyReceivedPermissions.2.from:\n- \"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\"\n+ \"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\"\n directlyReceivedPermissions.2.delay:\n+ 259200\n }\n```\n\n```diff\n contract STRKBridge (0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n+++ description: NOT the same as the `GOVERNANCE_ADMIN` access control role (see implementation) but managed by it.\n+++ severity: HIGH\n values.$admin.2:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.accessControl.GOVERNANCE_ADMIN.members.1:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.accessControl.UPGRADE_GOVERNOR.members.2:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.accessControl.SECURITY_ADMIN.members.1:\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.SECURITY_ADMIN.members.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B\"\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove it via the `GovernanceAdminOnly` modifier or as a role admin in the implementation.\n values.govAdminAC.1:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAdminAC.1:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.secAgentAC.1:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n }\n```\n\n```diff\n contract Starkware SCMinority Multisig (0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B) {\n +++ description: None\n values.$members.15:\n+ \"0xc196985a8bAfcEcF9C29Cfb24E2fb81f80De53E7\"\n values.$members.14:\n+ \"0x7383DDEd70cCCFd99835612C4148fA986e9DE560\"\n values.$members.13:\n+ \"0x81C1B22c67731D3f0Bac506102Fe998361565874\"\n values.$members.12:\n+ \"0x033b8521F357F813Cc87B08c0668f1b59FAE45e2\"\n values.$members.11:\n- \"0xc196985a8bAfcEcF9C29Cfb24E2fb81f80De53E7\"\n+ \"0x68c6AfB39D2c6e22555175dDaE02d20e37d218f0\"\n values.$members.10:\n- \"0x7383DDEd70cCCFd99835612C4148fA986e9DE560\"\n+ \"0x5C7DcaECB4D8e49Ea2487c5Cc23C5131Ddb2252F\"\n values.$members.9:\n- \"0x81C1B22c67731D3f0Bac506102Fe998361565874\"\n+ \"0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD\"\n values.$members.8:\n- \"0x033b8521F357F813Cc87B08c0668f1b59FAE45e2\"\n+ \"0x2914767E232FD7708ab06bA60dB16c36C555751d\"\n values.$members.7:\n- \"0x68c6AfB39D2c6e22555175dDaE02d20e37d218f0\"\n+ \"0x10277B1922e56d1B69f4dCe5A35696C791F78cac\"\n values.$members.6:\n- \"0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD\"\n+ \"0x0762bCc4D604Aa3B5122C7D6571Cf5368EF3F09c\"\n values.$members.5:\n- \"0x10277B1922e56d1B69f4dCe5A35696C791F78cac\"\n+ \"0xe810b82A815AC9d46FDA4D6FBfA8521864f04645\"\n values.$members.4:\n- \"0xe810b82A815AC9d46FDA4D6FBfA8521864f04645\"\n+ \"0x590Cb94bE977a769d9E7D95D9eff8DeAe82e430C\"\n values.$members.3:\n- \"0x590Cb94bE977a769d9E7D95D9eff8DeAe82e430C\"\n+ \"0x04D5b12b196a8CADEB2F476F22Ffb1334Ef9F94c\"\n values.multisigThreshold:\n- \"3 of 12 (25%)\"\n+ \"3 of 16 (19%)\"\n }\n```"
}
]
},
{
"id": "48d0a736",
"date": "Fri, 25 Apr 2025 13:39:59 GMT",
"timestamp": 1745588399,
"description": "Added 8d delay to the DelayedExecutor and added it as STRK bridge admin.",
"isHighSeverity": true,
"changeCount": 10,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starkware Multisig 1 (0x83C0A700114101D1283D1405E2c8f21D3F03e988) {\n +++ description: None\n receivedPermissions.2:\n+ {\"permission\":\"upgrade\",\"from\":\"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\",\"via\":[{\"address\":\"0xCA112018fEB729458b628AadC8f996f9deCbCa0c\",\"delay\":691200}]}\n receivedPermissions.1.from:\n- \"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\"\n+ \"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\"\n receivedPermissions.1.delay:\n+ 259200\n }\n```\n\n```diff\n contract DelayedExecutor (0xCA112018fEB729458b628AadC8f996f9deCbCa0c) {\n +++ description: A simple Timelock contract with an immutable delay of 8d. The owner (0x83C0A700114101D1283D1405E2c8f21D3F03e988) can queue transactions.\n directlyReceivedPermissions.2:\n+ {\"permission\":\"upgrade\",\"from\":\"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\"}\n directlyReceivedPermissions.1.from:\n- \"0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4\"\n+ \"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\"\n directlyReceivedPermissions.1.delay:\n+ 259200\n }\n```\n\n```diff\n contract STRKBridge (0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n issuedPermissions.4:\n+ {\"permission\":\"upgrade\",\"to\":\"0x83C0A700114101D1283D1405E2c8f21D3F03e988\",\"delay\":259200,\"via\":[{\"address\":\"0xCA112018fEB729458b628AadC8f996f9deCbCa0c\",\"delay\":691200}]}\n+++ description: NOT the same as the `GOVERNANCE_ADMIN` access control role (see implementation) but managed by it.\n+++ severity: HIGH\n values.$admin:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ [\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\",\"0xCA112018fEB729458b628AadC8f996f9deCbCa0c\"]\n values.accessControl.UPGRADE_GOVERNOR.members.1:\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.UPGRADE_GOVERNOR.members.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0xCA112018fEB729458b628AadC8f996f9deCbCa0c\"\n }\n```"
}
]
},
{
"id": "c8776771",
"date": "Fri, 28 Mar 2025 10:30:21 GMT",
"timestamp": 1743157821,
"description": "Starknet + aggregator program hash change.",
"isHighSeverity": true,
"changeCount": 10,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, 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+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"2231644845387633655859130162745748394456578773184260372693322394988769337368\"\n+ \"2534935718742676028234156221136000178296467523045214874259117268197132196876\"\n values.programHashHistory.10:\n+ \"1865367024509426979036104162713508294334262484507712987283009063059134893433\"\n values.programHashHistory.9:\n- \"1865367024509426979036104162713508294334262484507712987283009063059134893433\"\n+ \"853638403225561750106379562222782223909906501242604214771127703946595519856\"\n values.programHashHistory.8:\n- \"853638403225561750106379562222782223909906501242604214771127703946595519856\"\n+ \"54878256403880350656938046611252303365750679698042371543935159963667935317\"\n values.programHashHistory.7:\n- \"54878256403880350656938046611252303365750679698042371543935159963667935317\"\n+ \"3258367057337572248818716706664617507069572185152472699066582725377748079373\"\n values.programHashHistory.6:\n- \"3258367057337572248818716706664617507069572185152472699066582725377748079373\"\n+ \"2479841346739966073527450029179698923866252973805981504232089731754042431018\"\n values.programHashHistory.5:\n- \"2479841346739966073527450029179698923866252973805981504232089731754042431018\"\n+ \"3383082961563516565935611087683915026448707331436034043529592588079494402084\"\n values.programHashHistory.4:\n- \"3383082961563516565935611087683915026448707331436034043529592588079494402084\"\n+ \"2397984267054479079853548842566103781972463965746662494980785692480538410509\"\n values.programHashHistory.3:\n- \"2397984267054479079853548842566103781972463965746662494980785692480538410509\"\n+ \"2231644845387633655859130162745748394456578773184260372693322394988769337368\"\n values.programHashMapped:\n- \"StarkNet OS (since v0.13.4)\"\n+ \"2534935718742676028234156221136000178296467523045214874259117268197132196876\"\n }\n```"
}
]
},
{
"id": "79f54597",
"date": "Tue, 25 Mar 2025 11:36:51 GMT",
"timestamp": 1742902611,
"description": "Starknet upgrade v0.13.4\n\nMinor upgrade on L1 that introduces a fee collector address.\nFor L2 it changes the programHashes for Starknet OS and the Aggregator.\n\n\"Offchain\" there are many changes, as seen [in the release-notes here](https://community.starknet.io/t/starknet-v0-13-4-pre-release-notes/115257).",
"isHighSeverity": true,
"changeCount": 18,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, 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 sourceHashes.1:\n- \"0x2738adbe41339934ae57e5c96fb9d7e42a43ba2b112878bc9227cc1c81de8ee6\"\n+ \"0x8074e96abc7cacf654908c0111c69027cf599f3b67332f3680c5de768a2d6dfe\"\n values.$implementation:\n- \"0x47103A9b801eB6a63555897d399e4b7c1c8Eb5bC\"\n+ \"0x2793010E6711Acd5C46ed17f2183a9d58db71e04\"\n values.$pastUpgrades.9:\n+ [\"2025-03-24T17:11:59.000Z\",\"0x7e6e541652c8ed05afba0c7fd372d6a340d438d85a545666ee7ecd1a4046eb5b\",[\"0x2793010E6711Acd5C46ed17f2183a9d58db71e04\"]]\n values.$upgradeCount:\n- 9\n+ 10\n values.aggregatorHashMapped:\n- \"Starknet Aggregator (since v0.13.3)\"\n+ \"273279642033703284306509103355536170486431195329675679055627933497997642494\"\n values.aggregatorProgramHash:\n- \"15787695375210609250491147414005894154890873413229882671403677761527504080\"\n+ \"273279642033703284306509103355536170486431195329675679055627933497997642494\"\n values.identify:\n- \"StarkWare_Starknet_2024_9\"\n+ \"StarkWare_Starknet_2025_10\"\n values.implementation:\n- \"0x47103A9b801eB6a63555897d399e4b7c1c8Eb5bC\"\n+ \"0x2793010E6711Acd5C46ed17f2183a9d58db71e04\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"2397984267054479079853548842566103781972463965746662494980785692480538410509\"\n+ \"2231644845387633655859130162745748394456578773184260372693322394988769337368\"\n values.programHashHistory.9:\n+ \"1865367024509426979036104162713508294334262484507712987283009063059134893433\"\n values.programHashHistory.8:\n- \"1865367024509426979036104162713508294334262484507712987283009063059134893433\"\n+ \"853638403225561750106379562222782223909906501242604214771127703946595519856\"\n values.programHashHistory.7:\n- \"853638403225561750106379562222782223909906501242604214771127703946595519856\"\n+ \"54878256403880350656938046611252303365750679698042371543935159963667935317\"\n values.programHashHistory.6:\n- \"54878256403880350656938046611252303365750679698042371543935159963667935317\"\n+ \"3258367057337572248818716706664617507069572185152472699066582725377748079373\"\n values.programHashHistory.5:\n- \"3258367057337572248818716706664617507069572185152472699066582725377748079373\"\n+ \"2479841346739966073527450029179698923866252973805981504232089731754042431018\"\n values.programHashHistory.4:\n- \"2479841346739966073527450029179698923866252973805981504232089731754042431018\"\n+ \"3383082961563516565935611087683915026448707331436034043529592588079494402084\"\n values.programHashHistory.3:\n- \"3383082961563516565935611087683915026448707331436034043529592588079494402084\"\n+ \"2397984267054479079853548842566103781972463965746662494980785692480538410509\"\n values.programHashMapped:\n- \"StarkNet OS (Starknet)\"\n+ \"2231644845387633655859130162745748394456578773184260372693322394988769337368\"\n values.feeCollector:\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "b1c2521c",
"date": "Sun, 02 Mar 2025 14:18:27 GMT",
"timestamp": 1740925107,
"description": "Starknet introduces an 8d timelock and adds their 2/6 MS as upgrade admin (governor) for the starknet contract.\n\nMultibridge, StarkgateRegistry upgrade: minor change, `getL2Bridge()` added.\n\nConfig related: discodrive + renamed some starknet contracts.",
"isHighSeverity": true,
"changeCount": 25,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StarkgateRegistry (0x1268cc171c54F2000402DfF20E93E60DF4c96812) {\n +++ description: A simple registry that maps tokens to their StarkGate escrows. It also keeps a list of tokens that are blocked from being added to StarkGate.\n sourceHashes.1:\n- \"0xe185bff4846e41d1ea1bffd2a1905568a7206a93b2923a300f9b61990293218b\"\n+ \"0x90444355cfe353ba90f2050035caf7c6ae157bfb6e54bf74a4117580f568bf95\"\n values.$implementation:\n- \"0x642F04899B6cA155c2a5eAdD4e4ed634f1B07Dd7\"\n+ \"0x39C3b4e670ACa8BC668e5A79680973e57a4C8CEC\"\n values.$pastUpgrades.1:\n+ [\"2025-03-02T12:30:11.000Z\",\"0x86ccb24833adb42f79ff55fcce4e69508e467df41c653a1b2578b5f2788f3c0c\",[\"0x39C3b4e670ACa8BC668e5A79680973e57a4C8CEC\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.identify:\n- \"StarkWare_StarkgateRegistry_2.0_1\"\n+ \"StarkWare_StarkgateRegistry_2.0_6\"\n values.implementation:\n- \"0x642F04899B6cA155c2a5eAdD4e4ed634f1B07Dd7\"\n+ \"0x39C3b4e670ACa8BC668e5A79680973e57a4C8CEC\"\n }\n```\n\n```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, allows users to read L2 -> L1 messages and send L1 -> L2 message. Critical configuration values for the L2's logic are defined here by various governance roles.\n issuedPermissions.5:\n+ {\"permission\":\"upgrade\",\"to\":\"0x83C0A700114101D1283D1405E2c8f21D3F03e988\",\"via\":[{\"address\":\"0xCA112018fEB729458b628AadC8f996f9deCbCa0c\",\"delay\":691200}]}\n issuedPermissions.4:\n+ {\"permission\":\"upgrade\",\"to\":\"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\",\"via\":[]}\n issuedPermissions.3.permission:\n- \"upgrade\"\n+ \"operateStarknet\"\n issuedPermissions.3.to:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n+ \"0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B\"\n issuedPermissions.2.to:\n- \"0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B\"\n+ \"0x2C169DFe5fBbA12957Bdd0Ba47d9CEDbFE260CA7\"\n issuedPermissions.1.permission:\n- \"operateStarknet\"\n+ \"governStarknet\"\n issuedPermissions.1.to:\n- \"0x2C169DFe5fBbA12957Bdd0Ba47d9CEDbFE260CA7\"\n+ \"0x83C0A700114101D1283D1405E2c8f21D3F03e988\"\n issuedPermissions.1.via.0:\n+ {\"address\":\"0xCA112018fEB729458b628AadC8f996f9deCbCa0c\",\"delay\":691200}\n values.$admin:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n+ [\"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\",\"0xCA112018fEB729458b628AadC8f996f9deCbCa0c\"]\n values.governors.1:\n+ \"0xCA112018fEB729458b628AadC8f996f9deCbCa0c\"\n }\n```\n\n```diff\n contract MultiBridge (0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb) {\n +++ description: StarkGate Multibridge escrow. Withdrawals can be throttled to 5 of the locked funds per 24 hours for each token individually.\n sourceHashes.1:\n- \"0xd3e96d9fb623969bd9cc3e5fed6779ce42c5de753b49fc73da783863d4043a2f\"\n+ \"0x066d78e6d7d8dd603e76a970521e74980c0853d848c55f014c7867ecac8be211\"\n values.$implementation:\n- \"0x594cCaDF93F860dc42Cf9fd7bCea47Ff4d135D7A\"\n+ \"0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff\"\n values.$pastUpgrades.1:\n+ [\"2025-03-02T12:30:11.000Z\",\"0x86ccb24833adb42f79ff55fcce4e69508e467df41c653a1b2578b5f2788f3c0c\",[\"0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.identify:\n- \"StarkWare_StarknetTokenBridge_2.0_4\"\n+ \"StarkWare_StarknetTokenBridge_2.0_6\"\n values.implementation:\n- \"0x594cCaDF93F860dc42Cf9fd7bCea47Ff4d135D7A\"\n+ \"0xf39d314C5aD7DC88958116dfA7d5ac095d563Aff\"\n values.getL2Bridge:\n+ \"2753558522583921927398465007099029577135491466235436788531469409255283003990\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract StarknetAdminMultisig (0x83C0A700114101D1283D1405E2c8f21D3F03e988)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DelayedExecutor (0xCA112018fEB729458b628AadC8f996f9deCbCa0c)\n +++ description: A simple Timelock contract with an immutable delay of 8d. The owner (0x83C0A700114101D1283D1405E2c8f21D3F03e988) can queue transactions.\n```"
}
]
},
{
"id": "021051c4",
"date": "Fri, 21 Feb 2025 13:28:06 GMT",
"timestamp": 1740144486,
"description": "Governance updates:\n- all starknet bridge escrows including ETH are upgradable by the 2/4 StarkgateBridgeMultisig\n- sharp is still governed by a 2/4 MS\n- SC is governor\n- EOA + MS are operators",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract StarknetAdminMultisig (0x83C0A700114101D1283D1405E2c8f21D3F03e988)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract StarknetOpsMultisig (0x86fD9cA64014b465d17f1bFBBBCFBEC7ebD8b1Bd)\n +++ description: None\n```\n\n```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: None\n issuedPermissions.1:\n- {\"permission\":\"upgrade\",\"to\":\"0x83C0A700114101D1283D1405E2c8f21D3F03e988\",\"via\":[]}\n values.$admin:\n- [\"0x83C0A700114101D1283D1405E2c8f21D3F03e988\",\"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"]\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.governors.1:\n- \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.governors.0:\n- \"0x86fD9cA64014b465d17f1bFBBBCFBEC7ebD8b1Bd\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n }\n```"
}
]
},
{
"id": "af09dacf",
"date": "Wed, 19 Feb 2025 16:19:41 GMT",
"timestamp": 1739981981,
"description": "give SECURITY_AGENT permission (can limit withdrawals) to the StarkgateSecurityAgentMultisig in some bridges.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract WBTCBridge (0x283751A21eafBFcD52297820D27C1f1963D9b5b4) {\n +++ description: None\n values.accessControl.SECURITY_AGENT.members.0:\n+ \"0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5\"\n }\n```\n\n```diff\n contract USDTBridge (0xbb3400F107804DFB482565FF1Ec8D8aE66747605) {\n +++ description: None\n values.accessControl.SECURITY_AGENT.members.0:\n+ \"0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5\"\n }\n```\n\n```diff\n contract STRKBridge (0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4) {\n +++ description: None\n values.accessControl.SECURITY_AGENT.members.0:\n+ \"0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5\"\n }\n```\n\n```diff\n contract MultiBridge (0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb) {\n +++ description: None\n values.accessControl.SECURITY_AGENT.members.0:\n+ \"0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5\"\n }\n```\n\n```diff\n contract USDCBridge (0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816) {\n +++ description: None\n values.accessControl.SECURITY_AGENT.members.0:\n+ \"0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5\"\n }\n```"
}
]
},
{
"id": "71a58712",
"date": "Tue, 18 Feb 2025 10:46:27 GMT",
"timestamp": 1739875587,
"description": "StarkgateETHSecurityAgentMultisig threshold = 1.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StarkgateETHSecurityAgentMultisig (0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5) {\n +++ description: None\n values.$threshold:\n- 2\n+ 1\n values.multisigThreshold:\n- \"2 of 3 (67%)\"\n+ \"1 of 3 (33%)\"\n }\n```"
}
]
},
{
"id": "803a3228",
"date": "Wed, 12 Feb 2025 08:41:35 GMT",
"timestamp": 1739349695,
"description": "Grant some bridge roles to the StarkgateBridgeMultisig, who already had all admin roles (does not change permissions).\nGrant an EOA the permission to remove and blacklist tokens from the Starkgate bridge.",
"isHighSeverity": false,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StarkgateManager (0x0c5aE94f8939182F2D06097025324D1E537d5B60) {\n +++ description: None\n values.accessControl.APP_ROLE_ADMIN.members.0:\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.TOKEN_ADMIN.members.0:\n+ \"0xF689688640E88160c07C6FC5cc63039F29EDe86b\"\n }\n```\n\n```diff\n contract StarkgateRegistry (0x1268cc171c54F2000402DfF20E93E60DF4c96812) {\n +++ description: None\n values.accessControl.APP_ROLE_ADMIN.members.0:\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.TOKEN_ADMIN.members.0:\n+ \"0xF689688640E88160c07C6FC5cc63039F29EDe86b\"\n }\n```\n\n```diff\n contract StarknetAdminMultisig (0x83C0A700114101D1283D1405E2c8f21D3F03e988) {\n +++ description: None\n values.$members.5:\n+ \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n values.$members.4:\n- \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n+ \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n values.$members.3:\n- \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n+ \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n values.$members.2:\n- \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n+ \"0x2871B956bC19D25961E9a7519f32D7fDaA21B403\"\n values.$members.1:\n- \"0x2871B956bC19D25961E9a7519f32D7fDaA21B403\"\n+ \"0x804d60CB1ade94511f7915A2062948685Ca8C81f\"\n values.$members.0:\n- \"0x804d60CB1ade94511f7915A2062948685Ca8C81f\"\n+ \"0x8e814672F5c559b15af2975fBf6Fab819A4B7Dd5\"\n values.multisigThreshold:\n- \"2 of 5 (40%)\"\n+ \"2 of 6 (33%)\"\n }\n```\n\n```diff\n contract STRKBridge (0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4) {\n +++ description: None\n values.$pastUpgrades.6:\n+ [\"2025-02-09T12:58:23.000Z\",\"0xccb802ed2caee6856e9141983a642a0d4881cd64a209436d3fdeb4776c841175\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 6\n+ 7\n values.accessControl.SECURITY_ADMIN.members.0:\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n }\n```"
}
]
},
{
"id": "adf8bd05",
"date": "Thu, 06 Feb 2025 09:33:05 GMT",
"timestamp": 1738834385,
"description": "Added SC.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: None\n issuedPermissions.1:\n+ {\"permission\":\"upgrade\",\"to\":\"0x83C0A700114101D1283D1405E2c8f21D3F03e988\",\"via\":[]}\n issuedPermissions.0.to:\n- \"0x83C0A700114101D1283D1405E2c8f21D3F03e988\"\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n values.$admin:\n- \"0x83C0A700114101D1283D1405E2c8f21D3F03e988\"\n+ [\"0x83C0A700114101D1283D1405E2c8f21D3F03e988\",\"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"]\n values.governors.1:\n+ \"0x15e8c684FD095d4796A0c0CF678554F4c1C7C361\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract StarknetSecurityCouncil (0x15e8c684FD095d4796A0c0CF678554F4c1C7C361)\n +++ description: None\n```"
}
]
},
{
"id": "92cccd37",
"date": "Wed, 05 Feb 2025 06:38:06 GMT",
"timestamp": 1738737486,
"description": "Multisig added as operator.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: None\n values.operators.1:\n- \"0x2C169DFe5fBbA12957Bdd0Ba47d9CEDbFE260CA7\"\n+ \"0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B\"\n values.operators.0:\n- \"0xFf6B2185E357b6e9136A1b2ca5d7C45765D5c591\"\n+ \"0x2C169DFe5fBbA12957Bdd0Ba47d9CEDbFE260CA7\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract StarknetOperatorMultisig (0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B)\n +++ description: None\n```"
}
]
},
{
"id": "199b326f",
"date": "Mon, 03 Feb 2025 12:59:47 GMT",
"timestamp": 1738587587,
"description": "Admin EOAs were removed from Starknet and SHARP governance. The other permissions remain the same as before (Multisigs mostly).",
"isHighSeverity": false,
"changeCount": 44,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract StarkgateBridgeMultisig (0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec) {\n +++ description: None\n receivedPermissions.13:\n+ {\"permission\":\"upgrade\",\"from\":\"0xf76e6bF9e2df09D0f854F045A3B724074dA1236B\"}\n receivedPermissions.12:\n+ {\"permission\":\"upgrade\",\"from\":\"0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816\"}\n receivedPermissions.11:\n+ {\"permission\":\"upgrade\",\"from\":\"0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb\"}\n receivedPermissions.10:\n+ {\"permission\":\"upgrade\",\"from\":\"0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb\"}\n receivedPermissions.9.from:\n- \"0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816\"\n+ \"0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8\"\n receivedPermissions.8.from:\n- \"0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb\"\n+ \"0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2\"\n receivedPermissions.7.from:\n- \"0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8\"\n+ \"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\"\n receivedPermissions.6.from:\n- \"0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2\"\n+ \"0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B\"\n receivedPermissions.5.from:\n- \"0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4\"\n+ \"0xbb3400F107804DFB482565FF1Ec8D8aE66747605\"\n receivedPermissions.4.from:\n- \"0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B\"\n+ \"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\"\n receivedPermissions.3.from:\n- \"0xbb3400F107804DFB482565FF1Ec8D8aE66747605\"\n+ \"0x66ba83ba3D3AD296424a2258145d9910E9E40B7C\"\n receivedPermissions.2.from:\n- \"0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419\"\n+ \"0x283751A21eafBFcD52297820D27C1f1963D9b5b4\"\n receivedPermissions.1.from:\n- \"0x66ba83ba3D3AD296424a2258145d9910E9E40B7C\"\n+ \"0x1268cc171c54F2000402DfF20E93E60DF4c96812\"\n receivedPermissions.0.from:\n- \"0x283751A21eafBFcD52297820D27C1f1963D9b5b4\"\n+ \"0x0c5aE94f8939182F2D06097025324D1E537d5B60\"\n }\n```\n\n```diff\n contract StarkgateManager (0x0c5aE94f8939182F2D06097025324D1E537d5B60) {\n +++ description: None\n issuedPermissions.0.to:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.$admin:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.GOVERNANCE_ADMIN.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.APP_ROLE_ADMIN.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n values.accessControl.TOKEN_ADMIN.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n values.accessControl.UPGRADE_GOVERNOR.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.SECURITY_ADMIN.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n }\n```\n\n```diff\n contract StarkgateRegistry (0x1268cc171c54F2000402DfF20E93E60DF4c96812) {\n +++ description: None\n issuedPermissions.0.to:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.$admin:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.GOVERNANCE_ADMIN.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.UPGRADE_GOVERNOR.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.SECURITY_ADMIN.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n }\n```\n\n```diff\n contract ETHBridge (0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419) {\n +++ description: None\n issuedPermissions.1:\n- {\"permission\":\"upgrade\",\"to\":\"0xC91EC49Ad0843E5Cca55b4c4e5f68de54F6cB2Ae\",\"via\":[]}\n values.$admin:\n- [\"0xC91EC49Ad0843E5Cca55b4c4e5f68de54F6cB2Ae\",\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n }\n```\n\n```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: None\n issuedPermissions.1:\n- {\"permission\":\"upgrade\",\"to\":\"0xD5fB66CaEE881367Df4409B17Fd53a2Ef0D9B263\",\"via\":[]}\n values.$admin:\n- [\"0xD5fB66CaEE881367Df4409B17Fd53a2Ef0D9B263\",\"0x83C0A700114101D1283D1405E2c8f21D3F03e988\"]\n+ \"0x83C0A700114101D1283D1405E2c8f21D3F03e988\"\n values.governors.1:\n- \"0x86fD9cA64014b465d17f1bFBBBCFBEC7ebD8b1Bd\"\n values.governors.0:\n- \"0x16C8B90390468c1AA81f68B2Fb9fcc3d46e0eA3E\"\n+ \"0x86fD9cA64014b465d17f1bFBBBCFBEC7ebD8b1Bd\"\n }\n```\n\n```diff\n contract MultiBridge (0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb) {\n +++ description: None\n issuedPermissions.0.to:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.$admin:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.GOVERNANCE_ADMIN.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.APP_GOVERNOR.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n values.accessControl.APP_ROLE_ADMIN.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n values.accessControl.UPGRADE_GOVERNOR.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.SECURITY_ADMIN.members.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n }\n```\n\n```diff\n contract UNIBridge (0xf76e6bF9e2df09D0f854F045A3B724074dA1236B) {\n +++ description: None\n issuedPermissions.0.to:\n- \"0xF689688640E88160c07C6FC5cc63039F29EDe86b\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.$admin:\n- \"0xF689688640E88160c07C6FC5cc63039F29EDe86b\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.GOVERNANCE_ADMIN.members.0:\n- \"0xF689688640E88160c07C6FC5cc63039F29EDe86b\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.UPGRADE_GOVERNOR.members.0:\n- \"0xF689688640E88160c07C6FC5cc63039F29EDe86b\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.SECURITY_ADMIN.members.0:\n- \"0xF689688640E88160c07C6FC5cc63039F29EDe86b\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n }\n```"
}
]
},
{
"id": "dd018e98",
"date": "Thu, 16 Jan 2025 08:25:02 GMT",
"timestamp": 1737015902,
"description": "New 'hat' role (root permission in this Maker Gov contract).",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract MakerDAO Governance (0x0a3f6849f78076aefaDf113F5BED87720274dDC0) {\n +++ description: None\n values.hat:\n- \"0x329Feb1E300d6bf54d4969Df5089ff7bC79694B6\"\n+ \"0x5985E06E47e0dd10230393e5dEF7200516262ed9\"\n }\n```"
}
]
},
{
"id": "f886cfdd",
"date": "Tue, 10 Dec 2024 11:08:54 GMT",
"timestamp": 1733828934,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract MakerDAO Governance (0x0a3f6849f78076aefaDf113F5BED87720274dDC0)\n +++ description: None\n```"
}
]
},
{
"id": "aed2f40b",
"date": "Sun, 08 Dec 2024 13:23:21 GMT",
"timestamp": 1733664201,
"description": "LidoAgent added as second SecurityAdmin of the wstETHBridge (ignored).",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract wstETHBridge (0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B) {\n +++ description: None\n values.accessControl.SECURITY_ADMIN.members.1:\n+ \"0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c\"\n }\n```"
}
]
},
{
"id": "5c0c724a",
"date": "Thu, 28 Nov 2024 10:33:59 GMT",
"timestamp": 1732790039,
"description": "Starknet [upgrade v0.13.3](https://community.starknet.io/t/starknet-v0-13-3/115053) with new aggregator and StarknetOS programHashes.",
"isHighSeverity": true,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: None\n values.aggregatorProgramHash:\n- \"1161178844461337253856226043908368523817098764221830529880464854589141231910\"\n+ \"15787695375210609250491147414005894154890873413229882671403677761527504080\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"853638403225561750106379562222782223909906501242604214771127703946595519856\"\n+ \"2397984267054479079853548842566103781972463965746662494980785692480538410509\"\n values.programHashHistory.8:\n+ \"853638403225561750106379562222782223909906501242604214771127703946595519856\"\n }\n```"
}
]
},
{
"id": "cc2cd87a",
"date": "Mon, 14 Oct 2024 14:20:39 GMT",
"timestamp": 1728915639,
"description": "Starkgate escrows are batch-upgraded to the same new implementation. The only change is an addidtional `require()` in the flow of legacy token withdrawals.",
"isHighSeverity": true,
"changeCount": 66,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract WBTCBridge (0x283751A21eafBFcD52297820D27C1f1963D9b5b4) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.7:\n+ [\"2024-10-13T15:59:11.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 7\n+ 8\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```\n\n```diff\n contract FXSBridge (0x66ba83ba3D3AD296424a2258145d9910E9E40B7C) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.2:\n+ [\"2024-10-13T15:59:11.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```\n\n```diff\n contract USDTBridge (0xbb3400F107804DFB482565FF1Ec8D8aE66747605) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.7:\n+ [\"2024-10-13T15:59:11.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 7\n+ 8\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```\n\n```diff\n contract wstETHBridge (0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.3:\n+ [\"2024-10-13T15:59:11.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```\n\n```diff\n contract STRKBridge (0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.5:\n+ [\"2024-10-13T15:59:11.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 5\n+ 6\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```\n\n```diff\n contract rETHBridge (0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.3:\n+ [\"2024-10-13T15:59:11.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```\n\n```diff\n contract sfrxETHBridge (0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.2:\n+ [\"2024-10-13T15:59:11.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```\n\n```diff\n contract FRAXBridge (0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.2:\n+ [\"2024-10-13T15:59:11.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```\n\n```diff\n contract LUSDBridge (0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.2:\n+ [\"2024-10-13T15:56:47.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```\n\n```diff\n contract USDCBridge (0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.7:\n+ [\"2024-10-13T15:59:11.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 7\n+ 8\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```\n\n```diff\n contract UNIBridge (0xf76e6bF9e2df09D0f854F045A3B724074dA1236B) {\n +++ description: None\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0x8f135fc371babc0f7b9fd3b63668e1c35eed87f3dedd2416ebe0e7a118c4fd0a\"\n values.$implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n values.$pastUpgrades.2:\n+ [\"2024-10-13T15:57:11.000Z\",[\"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_5\"\n values.implementation:\n- \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n+ \"0x6ad74D4B79A06A492C288eF66Ef868Dd981fdC85\"\n }\n```"
}
]
},
{
"id": "2ce52009",
"date": "Tue, 01 Oct 2024 15:40:18 GMT",
"timestamp": 1727797218,
"description": "SECURITY_AGENT role given to new Multisig. Can only activate the withdrawLimit for the ETH escrow (added to permissions). Higher perms are EOA-governed.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ETHBridge (0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419) {\n +++ description: None\n values.accessControl.SECURITY_AGENT.members.0:\n+ \"0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract StarkgateETHSecurityAgentMultisig (0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5)\n +++ description: None\n```"
}
]
},
{
"id": "769dfe3d",
"date": "Thu, 29 Aug 2024 13:21:54 GMT",
"timestamp": 1724937714,
"description": "* aggregatorProgramHash is now introduced allowing for aggregation\n* more than one blob is now allowed",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: None\n values.$implementation:\n- \"0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24\"\n+ \"0x47103A9b801eB6a63555897d399e4b7c1c8Eb5bC\"\n values.identify:\n- \"StarkWare_Starknet_2024_8\"\n+ \"StarkWare_Starknet_2024_9\"\n values.implementation:\n- \"0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24\"\n+ \"0x47103A9b801eB6a63555897d399e4b7c1c8Eb5bC\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"3383082961563516565935611087683915026448707331436034043529592588079494402084\"\n+ \"853638403225561750106379562222782223909906501242604214771127703946595519856\"\n values.programHashHistory.7:\n+ \"3383082961563516565935611087683915026448707331436034043529592588079494402084\"\n values.aggregatorProgramHash:\n+ \"1161178844461337253856226043908368523817098764221830529880464854589141231910\"\n }\n```"
}
]
},
{
"id": "19a85335",
"date": "Wed, 19 Jun 2024 09:19:35 GMT",
"timestamp": 1718788775,
"description": "The Dai Gateway for starknet is paused by Maker, preventing deposits and forced withdrawals in the contract.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1DaiGateway (0x9F96fE0633eE838D0298E8b8980E6716bE81388d) {\n +++ description: None\n values.isOpen:\n- 1\n+ 0\n }\n```"
}
]
},
{
"id": "65449bcf",
"date": "Thu, 13 Jun 2024 17:36:10 GMT",
"timestamp": 1718300170,
"description": "New StarkGate escrow added. This one supports multiple tokens but we currently only track the EKUBO token. The new StarkgateManager and -Registry support permissionless listing of new tokens, as long as they are not blacklisted. A token admin EOA can pause deposits and blacklist tokens that are not yet supported.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract StarkgateManager (0x0c5aE94f8939182F2D06097025324D1E537d5B60)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StarkgateRegistry (0x1268cc171c54F2000402DfF20E93E60DF4c96812)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MultiBridge (0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb)\n +++ description: None\n```"
}
]
},
{
"id": "c1033783",
"date": "Tue, 23 Apr 2024 14:28:50 GMT",
"timestamp": 1713882530,
"description": "### Bridge changes\n\n- An upgradeDelay of three days is introduced to 7 starkgate bridges. This is correctly reflected on the frontend. (Affected bridges: wbtc, usdt, wsteth, STRK, reth, usdc, eth)\n- The ProxyGovernance for 6 bridges of the above 7 is changed to the BridgeMultisig alone. (Before each bridge had an additional EOA, affected bridges: wbtc, usdt, wsteth, STRK, reth, usdc)\n - Special case: Out of the above, rETH and wstETH only had a single admin before, which is now also replaced by the BridgeMultisig\n\nThese changes are reflected on our frontend.",
"isHighSeverity": false,
"changeCount": 26,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract WBTCBridge (0x283751A21eafBFcD52297820D27C1f1963D9b5b4) {\n +++ description: None\n upgradeability.upgradeDelay:\n- 0\n+ 259200\n upgradeability.proxyGovernance.1:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n upgradeability.proxyGovernance.0:\n- \"0xdc29f0F7742ec462Af475AceeCECC57601991D23\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.getUpgradeActivationDelay:\n- 0\n+ 259200\n }\n```\n\n```diff\n contract ETHBridge (0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419) {\n +++ description: None\n upgradeability.upgradeDelay:\n- 0\n+ 259200\n values.getUpgradeActivationDelay:\n- 0\n+ 259200\n }\n```\n\n```diff\n contract USDTBridge (0xbb3400F107804DFB482565FF1Ec8D8aE66747605) {\n +++ description: None\n upgradeability.upgradeDelay:\n- 0\n+ 259200\n upgradeability.proxyGovernance.1:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n upgradeability.proxyGovernance.0:\n- \"0x8dB2469f3355d6769932B853F29e32df06122981\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.getUpgradeActivationDelay:\n- 0\n+ 259200\n }\n```\n\n```diff\n contract wstETHBridge (0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B) {\n +++ description: None\n upgradeability.upgradeDelay:\n- 0\n+ 259200\n upgradeability.proxyGovernance.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.getUpgradeActivationDelay:\n- 0\n+ 259200\n }\n```\n\n```diff\n contract STRKBridge (0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4) {\n +++ description: None\n upgradeability.upgradeDelay:\n- 0\n+ 259200\n upgradeability.proxyGovernance.0:\n- \"0xcA9fC2Da27ce25F35B994b152d27d480C6f62245\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.GOVERNANCE_ADMIN.members.0:\n- \"0xcA9fC2Da27ce25F35B994b152d27d480C6f62245\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.UPGRADE_GOVERNOR.members.0:\n- \"0xcA9fC2Da27ce25F35B994b152d27d480C6f62245\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.accessControl.SECURITY_ADMIN.members.0:\n- \"0xcA9fC2Da27ce25F35B994b152d27d480C6f62245\"\n values.getUpgradeActivationDelay:\n- 0\n+ 259200\n }\n```\n\n```diff\n contract rETHBridge (0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2) {\n +++ description: None\n upgradeability.upgradeDelay:\n- 0\n+ 259200\n upgradeability.proxyGovernance.0:\n- \"0x5751a83170BeA11fE7CdA5D599B04153C021f21A\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.getUpgradeActivationDelay:\n- 0\n+ 259200\n }\n```\n\n```diff\n contract USDCBridge (0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816) {\n +++ description: None\n upgradeability.upgradeDelay:\n- 0\n+ 259200\n upgradeability.proxyGovernance.1:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n upgradeability.proxyGovernance.0:\n- \"0xf5EF70bb0975cAF85461523e0cB3910c35cb30b4\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n values.getUpgradeActivationDelay:\n- 0\n+ 259200\n }\n```"
}
]
},
{
"id": "403be4bd",
"date": "Mon, 18 Mar 2024 09:11:40 GMT",
"timestamp": 1710753100,
"description": "The programHash of Starknet OS (L2 cairo state machine) is changed, no changes on L1.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ImplementationMultisig (0x86fD9cA64014b465d17f1bFBBBCFBEC7ebD8b1Bd) {\n +++ description: None\n values.nonce:\n- 20\n+ 21\n }\n```\n\n```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: None\n+++ description: The hash changes when the L2 cairo state machine logic changes.\n+++ type: CODE_CHANGE\n+++ severity: MEDIUM\n values.programHash:\n- \"109586309220455887239200613090920758778188956576212125550190099009305121410\"\n+ \"3383082961563516565935611087683915026448707331436034043529592588079494402084\"\n }\n```"
}
]
},
{
"id": "136742c7",
"date": "Thu, 14 Mar 2024 10:15:35 GMT",
"timestamp": 1710411335,
"description": "The main Starknet contract has been updated to support blobs. Small changes in emitted events when processing L2 to L1 messages. Some other changes to NamedStorage, in particular they added an AddressToAddress mapping.\n\n### How the DA verification works now\n\n#### CALLDATA\n\nThe `updateState` function is called. The `USE_KZG_DA_OFFSET` is checked to be zero because we are not using blobs. The onchain data hash that includes the statediff is encoded into a keccak commitment and passed to the `updateStateInternal` function. This function checks in the fact registry whether the state diff was proven before (using just the commitment!) and then the state root is updated.\n\n#### BLOBS\n\nThe `updateStateKzgDA` function is called and a kzg proof is passed as a param. The `USE_KZG_DA_OFFSET` is checked to be one. The `verifyKzgProof` function is called. This function only checks the first blob, implying that they will always just publish one per tx. The function takes `blobhash(0)` and verifies a point evaluation using the precompile. After this verification the point evaluation info is committed and checked against the fact registry as before. The correct usage of the precompile can be checked only if we also look into the program being proven, which we don't do at this stage. In fact, the program hash has been updated.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ProxyMultisig (0x83C0A700114101D1283D1405E2c8f21D3F03e988) {\n +++ description: None\n values.getOwners[4]:\n+ \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n values.getOwners.3:\n- \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n+ \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n values.getOwners.2:\n- \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n+ \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n values.getOwners.1:\n- \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n+ \"0x2871B956bC19D25961E9a7519f32D7fDaA21B403\"\n values.getOwners.0:\n- \"0x2871B956bC19D25961E9a7519f32D7fDaA21B403\"\n+ \"0x804d60CB1ade94511f7915A2062948685Ca8C81f\"\n }\n```\n\n```diff\n contract ImplementationMultisig (0x86fD9cA64014b465d17f1bFBBBCFBEC7ebD8b1Bd) {\n +++ description: None\n values.nonce:\n- 19\n+ 20\n }\n```\n\n```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n +++ description: None\n upgradeability.implementation:\n- \"0x16938E4b59297060484Fa56a12594d8D6F4177e8\"\n+ \"0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24\"\n implementations.0:\n- \"0x16938E4b59297060484Fa56a12594d8D6F4177e8\"\n+ \"0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24\"\n values.identify:\n- \"StarkWare_Starknet_2023_6\"\n+ \"StarkWare_Starknet_2024_8\"\n values.implementation:\n- \"0x16938E4b59297060484Fa56a12594d8D6F4177e8\"\n+ \"0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24\"\n values.programHash:\n- \"2479841346739966073527450029179698923866252973805981504232089731754042431018\"\n+ \"109586309220455887239200613090920758778188956576212125550190099009305121410\"\n }\n```"
}
]
},
{
"id": "de7cb8e0",
"date": "Wed, 21 Feb 2024 10:10:10 GMT",
"timestamp": 1708510210,
"description": "Update discovery to include the multisig threshold.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract STRKBridge (0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4) {\n }\n```"
}
]
},
{
"id": "817ea470",
"date": "Tue, 13 Feb 2024 12:27:47 GMT",
"timestamp": 1707827267,
"description": "Bridges have been updated to support a new message format that includes the token address in the payload and to support a new permissioning model.\n\nThere are now 9 roles:\n\n1. Governance Admin: can update the App Role Admin and Upgrade Governor roles.\n2. App Governor: can set the L2 token bridge. Can set the max total balance.\n3. App Role Admin: can update the App Governor, Operator, Token Admin roles.\n4. Operator: not used?\n5. Token Admin: not used?\n6. Upgrade Governor: not used?\n7. Security Admin: can disable withdrawal limits. Can update the Security Agent role and itself.\n8. Security Agent: can enable withdrawal limits.\n9. Manager: can initiate the \"enrollment\" of a token or deactivate a token.\n\nAlso the bridge implementation for ERC20 and Ether are different but overall very similar.",
"isHighSeverity": true,
"changeCount": 160,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract WBTCBridge (0x283751A21eafBFcD52297820D27C1f1963D9b5b4) {\n upgradeability.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n implementations.0:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2023_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```\n\n```diff\n contract FXSBridge (0x66ba83ba3D3AD296424a2258145d9910E9E40B7C) {\n upgradeability.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n implementations.0:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2023_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```\n\n```diff\n contract ETHBridge (0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419) {\n upgradeability.implementation:\n- \"0x455603AD9ae671F6c1f0f746F24d7904cA603581\"\n+ \"0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95\"\n implementations.0:\n- \"0x455603AD9ae671F6c1f0f746F24d7904cA603581\"\n+ \"0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.bridgedToken:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x0000000000000000000000000000000000455448\"\n values.identify:\n- \"StarkWare_StarknetEthBridge_2023_1\"\n+ \"StarkWare_StarknetEthBridge_2.0_4\"\n values.implementation:\n- \"0x455603AD9ae671F6c1f0f746F24d7904cA603581\"\n+ \"0x95ff25A59Dc9c5A41cF0709dc916041E5dC7fd95\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```\n\n```diff\n contract USDTBridge (0xbb3400F107804DFB482565FF1Ec8D8aE66747605) {\n upgradeability.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n implementations.0:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2023_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```\n\n```diff\n contract wstETHBridge (0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B) {\n upgradeability.implementation:\n- \"0xEf3525a1081a4cf6f76E0B202a575195cEE083a2\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n implementations.0:\n- \"0xEf3525a1081a4cf6f76E0B202a575195cEE083a2\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2022_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0xEf3525a1081a4cf6f76E0B202a575195cEE083a2\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```\n\n```diff\n contract rETHBridge (0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2) {\n upgradeability.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n implementations.0:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2023_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```\n\n```diff\n contract sfrxETHBridge (0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8) {\n upgradeability.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n implementations.0:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2023_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```\n\n```diff\n contract FRAXBridge (0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb) {\n upgradeability.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n implementations.0:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2023_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```\n\n```diff\n contract LUSDBridge (0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5) {\n upgradeability.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n implementations.0:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2023_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```\n\n```diff\n contract USDCBridge (0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816) {\n upgradeability.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n implementations.0:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2023_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```\n\n```diff\n contract UNIBridge (0xf76e6bF9e2df09D0f854F045A3B724074dA1236B) {\n upgradeability.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n implementations.0:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0xF689688640E88160c07C6FC5cc63039F29EDe86b\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2023_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0x6Fa346c1e77C17d7976Bf1EFE2b121E845f15FEB\"\n+ \"0x179FA59e4D19ac7C7b4e3daa0Cd6557a553656A0\"\n values.isActive:\n- true\n values.estimateDepositFeeWei:\n+ 100000000000000\n values.estimateEnrollmentFeeWei:\n+ 500000000000000\n }\n```"
}
]
},
{
"id": "64ff8807",
"date": "Thu, 08 Feb 2024 13:13:55 GMT",
"timestamp": 1707398035,
"description": "The upgrade delays for multiple bridge contracts (WBTC, ETH, USDT, USDC) are changed to 0.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract WBTC Bridge (0x283751A21eafBFcD52297820D27C1f1963D9b5b4) {\n upgradeability.upgradeDelay:\n- 604800\n+ 0\n values.getUpgradeActivationDelay:\n- 604800\n+ 0\n }\n```\n\n```diff\n contract ETH Bridge (0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419) {\n upgradeability.upgradeDelay:\n- 604800\n+ 0\n values.getUpgradeActivationDelay:\n- 604800\n+ 0\n }\n```\n\n```diff\n contract USDT Bridge (0xbb3400F107804DFB482565FF1Ec8D8aE66747605) {\n upgradeability.upgradeDelay:\n- 604800\n+ 0\n values.getUpgradeActivationDelay:\n- 604800\n+ 0\n }\n```\n\n```diff\n contract USDC Bridge (0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816) {\n upgradeability.upgradeDelay:\n- 604800\n+ 0\n values.getUpgradeActivationDelay:\n- 604800\n+ 0\n }\n```"
}
]
},
{
"id": "5fe6612a",
"date": "Wed, 17 Jan 2024 07:18:24 GMT",
"timestamp": 1705475904,
"description": "Change in the USDC Bridge proxy governors - a new address is added.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816) {\n upgradeability.proxyGovernance[1]:\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n upgradeability.proxyGovernance.0:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n+ \"0xf5EF70bb0975cAF85461523e0cB3910c35cb30b4\"\n }\n```"
}
]
},
{
"id": "b1da51ab",
"date": "Mon, 15 Jan 2024 12:19:39 GMT",
"timestamp": 1705321179,
"description": "The program hash and config hash are updated (with transactions 0xd15e25aaac8f634fcbe599fe0f47959d087dac5674091e12fc5a5a9808899f46 and 0x28a355fcc9228ed719110e075a3071d20446cfaff5ece324839429680fc87cf4). One of the USDC Bridge proxy governors has been removed.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n values.configHash:\n- \"671483050609816861429812414688707376174032882875357307847551691140236175837\"\n+ \"2590421891839256512113614983194993186457498815986333310670788206383913888162\"\n values.programHash:\n- \"54878256403880350656938046611252303365750679698042371543935159963667935317\"\n+ \"2479841346739966073527450029179698923866252973805981504232089731754042431018\"\n }\n```\n\n```diff\n contract USDC Bridge (0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816) {\n upgradeability.proxyGovernance[1]:\n- \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n upgradeability.proxyGovernance.0:\n- \"0xf5EF70bb0975cAF85461523e0cB3910c35cb30b4\"\n+ \"0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec\"\n }\n```"
}
]
},
{
"id": "0fcca41a",
"date": "Tue, 19 Dec 2023 15:34:07 GMT",
"timestamp": 1703000047,
"description": "Updated Starknet program hash.\nThe hash can be found by looking at the transactions of one of the Starknet Implementation Governors - 0x86fD9cA64014b465d17f1bFBBBCFBEC7ebD8b1Bd. The tx hash is 0x4131a969982ec958490e399653f84bb356e4c282376320b1d6d2e6cc195597ef.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Starknet (0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4) {\n values.programHash:\n- \"1865367024509426979036104162713508294334262484507712987283009063059134893433\"\n+ \"54878256403880350656938046611252303365750679698042371543935159963667935317\"\n }\n```"
}
]
},
{
"id": "e399b73a",
"date": "Mon, 18 Dec 2023 14:44:24 GMT",
"timestamp": 1702910664,
"description": "Few new escrows have been added, to track the balances of the new tokens.\n\nThe TVL limits on all StarGate Bridge contracts have been lifted (set to very high number).\n\nNew owner (EOA) has been added to Implementation Multisig, now it's 2/5.",
"isHighSeverity": false,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract WBTC Bridge (0x283751A21eafBFcD52297820D27C1f1963D9b5b4) {\n values.maxTotalBalance:\n- 20000000000\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```\n\n```diff\n contract FXS Bridge (0x66ba83ba3D3AD296424a2258145d9910E9E40B7C) {\n values.maxTotalBalance:\n- \"2000000000000000000000000\"\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```\n\n```diff\n contract Implementation Multisig (0x86fD9cA64014b465d17f1bFBBBCFBEC7ebD8b1Bd) {\n values.getOwners[4]:\n+ \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n values.getOwners.3:\n- \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n+ \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n values.getOwners.2:\n- \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n+ \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n values.getOwners.1:\n- \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n+ \"0x2871B956bC19D25961E9a7519f32D7fDaA21B403\"\n values.getOwners.0:\n- \"0x2871B956bC19D25961E9a7519f32D7fDaA21B403\"\n+ \"0x804d60CB1ade94511f7915A2062948685Ca8C81f\"\n }\n```\n\n```diff\n contract ETH Bridge (0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419) {\n values.maxTotalBalance:\n- \"150000000000000000000000\"\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```\n\n```diff\n contract USDT Bridge (0xbb3400F107804DFB482565FF1Ec8D8aE66747605) {\n values.maxTotalBalance:\n- 20000000000000\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```\n\n```diff\n contract wstETH Bridge (0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B) {\n values.maxTotalBalance:\n- \"5000000000000000000000\"\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```\n\n```diff\n contract rETH Bridge (0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2) {\n values.maxTotalBalance:\n- \"10000000000000000000000\"\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```\n\n```diff\n contract sfrxETH Bridge (0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8) {\n values.maxTotalBalance:\n- \"5000000000000000000000\"\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```\n\n```diff\n contract FRAX Bridge (0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb) {\n values.maxTotalBalance:\n- \"10000000000000000000000000\"\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```\n\n```diff\n contract LUSD Bridge (0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5) {\n values.maxTotalBalance:\n- \"3000000000000000000000000\"\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```\n\n```diff\n contract USDC Bridge (0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816) {\n values.maxTotalBalance:\n- 40000000000000\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```\n\n```diff\n contract UNI Bridge (0xf76e6bF9e2df09D0f854F045A3B724074dA1236B) {\n values.maxTotalBalance:\n- \"10000000000000000000000000\"\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```"
}
]
},
{
"id": "57c29bd9",
"date": "Wed, 22 Nov 2023 11:30:11 GMT",
"timestamp": 1700652611,
"description": "A new owner is added to the BridgeMultisig and the threshold is changed to 2, which makes it a 2/4 Multisig. A new owner is also added to Proxy Multisig (now a 2/4 Multisig) and to Implementation Multisig (now a 2/4 Multisig).",
"isHighSeverity": false,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract BridgeMultisig (0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec) {\n values.getOwners[3]:\n+ \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n values.getOwners.2:\n- \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n+ \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n values.getOwners.1:\n- \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n+ \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n values.getOwners.0:\n- \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n+ \"0xd38831Bcb40bdEE0577Ee064112Fa77a38cAd3F8\"\n values.getThreshold:\n- 1\n+ 2\n }\n```\n\n```diff\n contract Proxy Multisig (0x83C0A700114101D1283D1405E2c8f21D3F03e988) {\n values.getOwners[3]:\n+ \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n values.getOwners.2:\n- \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n+ \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n values.getOwners.1:\n- \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n+ \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n values.getOwners.0:\n- \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n+ \"0x2871B956bC19D25961E9a7519f32D7fDaA21B403\"\n }\n```\n\n```diff\n contract Implementation Multisig (0x86fD9cA64014b465d17f1bFBBBCFBEC7ebD8b1Bd) {\n values.getOwners[3]:\n+ \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n values.getOwners.2:\n- \"0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n+ \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n values.getOwners.1:\n- \"0x59232aC80E6d403b6381393e52f4665ECA328558\"\n+ \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n values.getOwners.0:\n- \"0x64F4396bb0669C72858Cc50C779b48EB25F45770\"\n+ \"0x2871B956bC19D25961E9a7519f32D7fDaA21B403\"\n }\n```"
}
]
}
]
+7 -2
{
"changes": [
{
"timestamp": 1643193921,
"type": "code",
"earliest": 1643193921
},
{
"timestamp": 1647853574,
"type": "code",
"earliest": 1647853574
},
{
"timestamp": 1649596101,
"type": "code",
"earliest": 1649596101
},
{
"timestamp": 1651510161,
"type": "code",
"earliest": 1651510161
},
{
"timestamp": 1655284858,
"type": "code",
"earliest": 1655284858
},
{
"timestamp": 1657630577,
"type": "code",
"earliest": 1657630577
},
{
"timestamp": 1657630654,
"type": "code",
"earliest": 1657630654
},
{
"timestamp": 1657630654,
"type": "code",
"earliest": 1657630654
},
{
"timestamp": 1659869409,
"type": "code",
"earliest": 1659869409
},
{
"timestamp": 1662879548,
"type": "code",
"earliest": 1662879548
},
{
"timestamp": 1668953231,
"type": "code",
"earliest": 1668953231
},
{
"timestamp": 1668953231,
"type": "code",
"earliest": 1668953231
},
{
"timestamp": 1668953231,
"type": "code",
"earliest": 1668953231
},
{
"timestamp": 1668953231,
"type": "code",
"earliest": 1668953231
},
{
"timestamp": 1672699319,
"type": "state",
"earliest": 1672699319
},
{
"timestamp": 1678106063,
"type": "code",
"earliest": 1678106063
},
{
"timestamp": 1680016007,
"type": "code",
"earliest": 1680016007
},
{
"timestamp": 1680016067,
"type": "code",
"earliest": 1680016067
},
{
"timestamp": 1680016067,
"type": "code",
"earliest": 1680016067
},
{
"timestamp": 1680016103,
"type": "code",
"earliest": 1680016103
},
{
"timestamp": 1680085307,
"type": "code",
"earliest": 1680085307
},
{
"timestamp": 1684906283,
"type": "code",
"earliest": 1684906283
},
{
"timestamp": 1700572655,
"type": "state",
"earliest": 1700572655
},
{
"timestamp": 1702921247,
"type": "state",
"updateId": "0fcca41a",
"earliest": 1702921247
},
{
"timestamp": 1704899003,
"type": "state",
"updateId": "b1da51ab",
"earliest": 1704899003
},
{
"timestamp": 1705239263,
"type": "code",
"earliest": 1705239263
},
{
"timestamp": 1705249823,
"type": "code",
"earliest": 1705249823
},
{
"timestamp": 1707387203,
"type": "code",
"earliest": 1707387203
},
{
"timestamp": 1707387203,
"type": "code",
"earliest": 1707387203
},
{
"timestamp": 1707387203,
"type": "code",
"earliest": 1707387203
},
{
"timestamp": 1707387203,
"type": "code",
"earliest": 1707387203
},
{
"timestamp": 1707416015,
"type": "code",
"earliest": 1707416015
},
{
"timestamp": 1707431855,
"type": "code",
"earliest": 1707431855
},
{
"timestamp": 1707432767,
"type": "code",
"earliest": 1707432767
},
{
"timestamp": 1707433079,
"type": "code",
"earliest": 1707433079
},
{
"timestamp": 1707646139,
"type": "code",
"earliest": 1707646139
},
{
"timestamp": 1707646139,
"type": "code",
"earliest": 1707646139
},
{
"timestamp": 1707646139,
"type": "code",
"earliest": 1707646139
},
{
"timestamp": 1707731699,
"type": "code",
"earliest": 1707731699
},
{
"timestamp": 1707732815,
"type": "code",
"earliest": 1707732815
},
{
"timestamp": 1707732959,
"type": "code",
"earliest": 1707732959
},
{
"timestamp": 1707738959,
"type": "code",
"earliest": 1707738959
},
{
"timestamp": 1707751031,
"type": "code",
"earliest": 1707751031
},
{
"timestamp": 1708939523,
"type": "code",
"earliest": 1708939523
},
{
"timestamp": 1710252923,
"type": "code",
"earliest": 1710252923
},
{
"timestamp": 1710252995,
"type": "state",
"updateId": "136742c7",
"earliest": 1710252995
},
{
"timestamp": 1710625271,
"type": "state",
"updateId": "403be4bd",
"earliest": 1710625271
},
{
"timestamp": 1713166199,
"type": "state",
"updateId": "c1033783",
"earliest": 1713166199
},
{
"timestamp": 1713709115,
"type": "code",
"earliest": 1713709115
},
{
"timestamp": 1713709115,
"type": "code",
"earliest": 1713709115
},
{
"timestamp": 1713709115,
"type": "code",
"earliest": 1713709115
},
{
"timestamp": 1713709115,
"type": "code",
"earliest": 1713709115
},
{
"timestamp": 1713709115,
"type": "code",
"earliest": 1713709115
},
{
"timestamp": 1713709115,
"type": "code",
"earliest": 1713709115
},
{
"timestamp": 1713709115,
"type": "code",
"earliest": 1713709115
},
{
"timestamp": 1722161267,
"type": "code",
"earliest": 1722161267
},
{
"timestamp": 1722197315,
"type": "code",
"earliest": 1722197315
},
{
"timestamp": 1724855579,
"type": "code",
"earliest": 1724855579
},
{
"timestamp": 1724856227,
"type": "state",
"updateId": "769dfe3d",
"earliest": 1724856227
},
{
"timestamp": 1728835007,
"type": "code",
"earliest": 1728835007
},
{
"timestamp": 1728835031,
"type": "code",
"earliest": 1728835031
},
{
"timestamp": 1728835151,
"type": "code",
"earliest": 1728835151
},
{
"timestamp": 1728835151,
"type": "code",
"earliest": 1728835151
},
{
"timestamp": 1728835151,
"type": "code",
"earliest": 1728835151
},
{
"timestamp": 1728835151,
"type": "code",
"earliest": 1728835151
},
{
"timestamp": 1728835151,
"type": "code",
"earliest": 1728835151
},
{
"timestamp": 1728835151,
"type": "code",
"earliest": 1728835151
},
{
"timestamp": 1728835151,
"type": "code",
"earliest": 1728835151
},
{
"timestamp": 1728835151,
"type": "code",
"earliest": 1728835151
},
{
"timestamp": 1728835151,
"type": "code",
"earliest": 1728835151
},
{
"timestamp": 1732747391,
"type": "state",
"updateId": "5c0c724a",
"earliest": 1732747391
},
{
"timestamp": 1738189871,
"type": "state",
"updateId": "199b326f",
"earliest": 1738189871
},
{
"timestamp": 1738274723,
"type": "state",
"updateId": "199b326f",
"earliest": 1738274723
},
{
"timestamp": 1738274783,
"type": "state",
"updateId": "199b326f",
"earliest": 1738274783
},
{
"timestamp": 1738274867,
"type": "state",
"updateId": "199b326f",
"earliest": 1738274867
},
{
"timestamp": 1738484927,
"type": "state",
"updateId": "fb997882",
"earliest": 1738484927
},
{
"timestamp": 1738755371,
"type": "state",
"updateId": "adf8bd05",
"earliest": 1738755371
},
{
"timestamp": 1738762427,
"type": "state",
"updateId": "adf8bd05",
"earliest": 1738762427
},
{
"timestamp": 1739105903,
"type": "code",
"earliest": 1739105903
},
{
"timestamp": 1740060647,
"type": "state",
"updateId": "021051c4",
"earliest": 1740060647
},
{
"timestamp": 1740756167,
"type": "state",
"updateId": "b1c2521c",
"earliest": 1740756167
},
{
"timestamp": 1740918611,
"type": "code",
"earliest": 1740918611
},
{
"timestamp": 1742836319,
"type": "code",
"earliest": 1742836319
},
{
"timestamp": 1742836319,
"type": "state",
"updateId": "79f54597",
"earliest": 1742836319
},
{
"timestamp": 1742967335,
"type": "state",
"updateId": "c8776771",
"earliest": 1742967335
},
{
"timestamp": 1745516039,
"type": "state",
"updateId": "48d0a736",
"earliest": 1745516039
},
{
"timestamp": 1746430151,
"type": "state",
"updateId": "ce8be8d5",
"earliest": 1746430151
},
{
"timestamp": 1746449747,
"type": "state",
"updateId": "ce8be8d5",
"earliest": 1746449747
},
{
"timestamp": 1746449747,
"type": "state",
"updateId": "ce8be8d5",
"earliest": 1746449747
},
{
"timestamp": 1746793403,
"type": "state",
"updateId": "2945c807",
"earliest": 1746793403
},
{
"timestamp": 1746793403,
"type": "state",
"updateId": "2945c807",
"earliest": 1746793403
},
{
"timestamp": 1746967799,
"type": "code",
"earliest": 1746967799
},
{
"timestamp": 1746967799,
"type": "code",
"earliest": 1746967799
},
{
"timestamp": 1747066175,
"type": "code",
"earliest": 1747066175
},
{
"timestamp": 1756737695,
"type": "state",
"updateId": "b57bb0df",
"earliest": 1756737695
},
{
"timestamp": 1760862467,
"type": "code",
"earliest": 1760862467
},
{
"timestamp": 1765192091,
"type": "code",
"earliest": 1765192091
},
{
"timestamp": 1765378643,
"type": "state",
"updateId": "10e44fc3",
"earliest": 1765378643
},
{
"timestamp": 1768493183,
"type": "code",
"earliest": 1768493183
},
{
"timestamp": 1768493315,
"type": "code",
"earliest": 1768493315
},
{
"timestamp": 1768831679,
"type": "code",
"earliest": 1768831679
},
{
"timestamp": 1768834883,
"type": "code",
"earliest": 1768834883
},
{
"timestamp": 1769954759,
"type": "code",
"earliest": 1769954759
},
{
"timestamp": 1776686015,
"type": "code",
"earliest": 1776686015
},
{
"timestamp": 1776686015,
"type": "state",
"updateId": "f7adf9c0",
"earliest": 1776686015
},
{
"timestamp": 1777465247,
"type": "code",
"earliest": 1777465247
},
{
"timestamp": 1782033359,
"type": "code",
"earliest": 1782033359
},
{
"timestamp": 1783510259,
"type": "state",
"updateId": "9d5a75e1",
"earliest": 1783510259
},
{
"timestamp": 1783857227,
"type": "code",
"earliest": 1783857227
},
{
"timestamp": 1791287267,
"type": "state",
"updateId": "abe67a8d",
"earliest": 1791287267
},
{
"timestamp": 1791976055,
"type": "code",
"earliest": 1791976055
}
],
"contracts": [
{
"name": "Starknet",
"address": "eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4",
"isVerified": true,
"ossifyingSince": 1791287267,
"codeChangeCount": 10,
"ossifyingSince": 1791976055,
"codeChangeCount": 11,
"stateChangeCount": 19
},
{
"name": "SHARPVerifierCallProxy",
"address": "eth:0x47312450B3Ac8b5b8e247a6bB6d523e7605bDb60",
"isVerified": true,
"ossifyingSince": 1783857227,
"codeChangeCount": 13,
"stateChangeCount": 1
},
{
"name": "SHARPVerifier",
"address": "eth:0x4956bda1d23F75B988644329c5B06BD1494a72b6",
"isVerified": true,
"ossifyingSince": 1782997607,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "WBTCBridge",
"address": "eth:0x283751A21eafBFcD52297820D27C1f1963D9b5b4",
"isVerified": true,
"ossifyingSince": 1768834883,
"codeChangeCount": 8,
"stateChangeCount": 0
},
{
"name": "CairoBootloaderProgram",
"address": "eth:0x24105e6697AdD9B4B1BDE04079a91BDFCCa24A47",
"isVerified": true,
"ossifyingSince": 1768486895,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuOods",
"address": "eth:0x7ca0201319f98b5494d90d0f8dA9427C64AF135e",
"isVerified": true,
"ossifyingSince": 1759907651,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuVerifierRecursiveLargeOutput_2026_13",
"address": "eth:0xbe0F8F150Fd10798524B4de80eD75751658CAEF3",
"isVerified": true,
"ossifyingSince": 1759907651,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PoseidonPoseidonPartialRoundKey1Column",
"address": "eth:0xECc282Dc2571E43696d3259490faFa3b98790e20",
"isVerified": true,
"ossifyingSince": 1759907651,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PoseidonPoseidonFullRoundKey0Column",
"address": "eth:0x21578B24F86AdF6f59C406f641F693745C31Ea8F",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuConstraintPoly",
"address": "eth:0x2c9726B081305F314A74D570F0FED8dd9fab01A1",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PoseidonPoseidonFullRoundKey2Column",
"address": "eth:0x4576bA889ddCb27738c4D3b8dF2FF2616650BA0b",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PoseidonPoseidonPartialRoundKey0Column",
"address": "eth:0x5318edCfEcAF84EB5A3A4D364C2dCFF06083953E",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PoseidonPoseidonFullRoundKey2Column",
"address": "eth:0x69833933e59269aB062eAfDe074C059ce5DC7755",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuVerifierDexWithBitwise_2026_13",
"address": "eth:0x6a67796ee97700B5B5f5aFBCFFDCbc5F80803F11",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuVerifierStarknet_2026_13",
"address": "eth:0x71574057D12541ccDa98643aC56441838353A26D",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuConstraintPoly",
"address": "eth:0x9Ddb8A6E3B23B33CE685e6d9f89f0ca25510AE6F",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuOods",
"address": "eth:0xa40115c39Dc257E5aAE39e2F311AF6a0247bb766",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PoseidonPoseidonPartialRoundKey0Column",
"address": "eth:0xb45b87Ba49C64F79df0EF81043a57999af5Ea7A0",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PoseidonPoseidonPartialRoundKey1Column",
"address": "eth:0xc1Cd710bB0d8A07A46Cc884a552091d1ED433Ccc",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuConstraintPoly",
"address": "eth:0xC716C4E3f68ad6785524f65Df129fC090339dBD8",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuOods",
"address": "eth:0xd67C6798df68b98f1ef10BEeF0f35De788014fAA",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PoseidonPoseidonFullRoundKey0Column",
"address": "eth:0xdf10757de64811df030cf88bB700B8CC63bAB090",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PoseidonPoseidonFullRoundKey1Column",
"address": "eth:0xe58327a05F21ab12AB33A4408003A87e571f810D",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PoseidonPoseidonFullRoundKey1Column",
"address": "eth:0xE5AC9312f30623EB20D435533A4205790aF68Fd0",
"isVerified": true,
"ossifyingSince": 1759907627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuVerifierAllSolidity_2026_13",
"address": "eth:0x015381651F240Ed6C44122dCba6Cf807c9442CD6",
"isVerified": true,
"ossifyingSince": 1759907615,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuVerifierDex_2026_13",
"address": "eth:0x0cD0cDf0132c566db61B691BCEEBA2c4D8cA5CdC",
"isVerified": true,
"ossifyingSince": 1759907615,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuConstraintPoly",
"address": "eth:0x1BdE14B50e7dAeD71eE14F7e8defaa3d8A7D4420",
"isVerified": true,
"ossifyingSince": 1759907615,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuVerifierRecursive_2026_13",
"address": "eth:0x2867A4509B0969531641A42a3D4A9B0A07109B6B",
"isVerified": true,
"ossifyingSince": 1759907615,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuOods",
"address": "eth:0x35e9F63Efc97E008f3f9097eA3293b540483e7Cb",
"isVerified": true,
"ossifyingSince": 1759907615,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuConstraintPoly",
"address": "eth:0x3E727f44Fd2c92bd960AAb86DaAcD1A831B16eba",
"isVerified": true,
"ossifyingSince": 1759907615,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuOods",
"address": "eth:0x8f3af16cF4eB89f256cDebeaDd46e1b982dC4775",
"isVerified": true,
"ossifyingSince": 1759907615,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuOods",
"address": "eth:0x99480b7c32C4F8965fF1929a368Dd586C6DC3595",
"isVerified": true,
"ossifyingSince": 1759907615,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuConstraintPoly",
"address": "eth:0xE4937AC1Da4211c6E48cf41A7B298b74edA9B103",
"isVerified": true,
"ossifyingSince": 1759907615,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuVerifierPerpetual_2026_13",
"address": "eth:0xFFC7974cd74b95f631f454cd787AAc28F0476b44",
"isVerified": true,
"ossifyingSince": 1759907615,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuOods",
"address": "eth:0xaE325CE505AA13EDC30d48187B05c24A3BaC2707",
"isVerified": true,
"ossifyingSince": 1759907603,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuVerifierSmall_2026_13",
"address": "eth:0x30F3AB988Cb00fe3Fb5ab891F50c13684770419b",
"isVerified": true,
"ossifyingSince": 1759907591,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuConstraintPoly",
"address": "eth:0x9A62fa46D88697bBbEFAf5F9Ef1234E6502d31a9",
"isVerified": true,
"ossifyingSince": 1759907591,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "EcdsaPointsXColumn",
"address": "eth:0xa3da166aef05dBa08d67EA5b442dD9574274b9Ce",
"isVerified": true,
"ossifyingSince": 1759907591,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuOods",
"address": "eth:0xa4D0Bb20c708262155378C9D14A5A6A863E15Dd4",
"isVerified": true,
"ossifyingSince": 1759907591,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PedersenHashPointsYColumn",
"address": "eth:0xA55C0F91945958C40f7fa41EB650340245F4B6c2",
"isVerified": true,
"ossifyingSince": 1759907591,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "EcdsaPointsYColumn",
"address": "eth:0xCaea5002758D5B977680Fe65164B7fE6a062C771",
"isVerified": true,
"ossifyingSince": 1759907591,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CpuConstraintPoly",
"address": "eth:0xd8e47340bdC4fB06D37056b1725c653836Cc81E5",
"isVerified": true,
"ossifyingSince": 1759907591,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PedersenHashPointsXColumn",
"address": "eth:0xDc596B881bD9e33d3A56AE86031417645d1d9E70",
"isVerified": true,
"ossifyingSince": 1759907591,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "LBTCBridge",
"address": "eth:0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e",
"isVerified": true,
"ossifyingSince": 1757941451,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ETHBridge",
"address": "eth:0xae0Ee0A63A2cE6BaeEFFE56e7714FB4EFE48D419",
"isVerified": true,
"ossifyingSince": 1746967799,
"codeChangeCount": 7,
"stateChangeCount": 5
},
{
"name": "STRKBridge",
"address": "eth:0xcE5485Cfb26914C5dcE00B9BAF0580364daFC7a4",
"isVerified": true,
"ossifyingSince": 1746967799,
"codeChangeCount": 7,
"stateChangeCount": 4
},
{
"name": "MultiBridge",
"address": "eth:0xF5b6Ee2CAEb6769659f6C091D209DfdCaF3F69Eb",
"isVerified": true,
"ossifyingSince": 1740918611,
"codeChangeCount": 1,
"stateChangeCount": 1
},
{
"name": "DelayedExecutor",
"address": "eth:0xCA112018fEB729458b628AadC8f996f9deCbCa0c",
"isVerified": true,
"ossifyingSince": 1739989031,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "UNIBridge",
"address": "eth:0xf76e6bF9e2df09D0f854F045A3B724074dA1236B",
"isVerified": true,
"ossifyingSince": 1738274723,
"codeChangeCount": 2,
"stateChangeCount": 1
},
{
"name": "FXSBridge",
"address": "eth:0x66ba83ba3D3AD296424a2258145d9910E9E40B7C",
"isVerified": true,
"ossifyingSince": 1728835151,
"codeChangeCount": 2,
"stateChangeCount": 0
},
{
"name": "USDTBridge",
"address": "eth:0xbb3400F107804DFB482565FF1Ec8D8aE66747605",
"isVerified": true,
"ossifyingSince": 1728835151,
"codeChangeCount": 7,
"stateChangeCount": 0
},
{
"name": "wstETHBridge",
"address": "eth:0xBf67F59D2988A46FBFF7ed79A621778a3Cd3985B",
"isVerified": true,
"ossifyingSince": 1728835151,
"codeChangeCount": 3,
"stateChangeCount": 0
},
{
"name": "rETHBridge",
"address": "eth:0xcf58536D6Fab5E59B654228a5a4ed89b13A876C2",
"isVerified": true,
"ossifyingSince": 1728835151,
"codeChangeCount": 3,
"stateChangeCount": 0
},
{
"name": "sfrxETHBridge",
"address": "eth:0xd8E8531fdD446DF5298819d3Bc9189a5D8948Ee8",
"isVerified": true,
"ossifyingSince": 1728835151,
"codeChangeCount": 2,
"stateChangeCount": 0
},
{
"name": "FRAXBridge",
"address": "eth:0xDc687e1E0B85CB589b2da3C47c933De9Db3d1ebb",
"isVerified": true,
"ossifyingSince": 1728835151,
"codeChangeCount": 2,
"stateChangeCount": 0
},
{
"name": "USDCBridge",
"address": "eth:0xF6080D9fbEEbcd44D89aFfBFd42F098cbFf92816",
"isVerified": true,
"ossifyingSince": 1728835151,
"codeChangeCount": 7,
"stateChangeCount": 0
},
{
"name": "LUSDBridge",
"address": "eth:0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5",
"isVerified": true,
"ossifyingSince": 1728835007,
"codeChangeCount": 2,
"stateChangeCount": 0
},
{
"name": "FriStatementContract",
"address": "eth:0x30EfaAA99f8eFe310D9FdC83072e2a04c093d400",
"isVerified": true,
"ossifyingSince": 1721828687,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "MerkleStatementContract",
"address": "eth:0x32a91Ff604AB2aDCd832e91D68b2f3f25358FdAd",
"isVerified": true,
"ossifyingSince": 1721828687,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "MemoryPageFactRegistry",
"address": "eth:0xe583BcDE0160b637330b27a3ea1F3c02ba2eC460",
"isVerified": true,
"ossifyingSince": 1721828687,
"codeChangeCount": 0,
"stateChangeCount": 0
}
],
"deployments": [
1635080785,
1636979180,
1647857960,
1657138806,
1657139268,
1657139268,
1685453471,
1685882531,
1688046899,
1692793367,
1692793367,
1692793367,
1698061943,
1704907283,
1707325571,
1721828687,
1721828687,
1721828687,
1739989031,
1750862507,
1757941451,
1759907591,
1759907591,
1759907591,
1759907591,
1759907591,
1759907591,
1759907591,
1759907591,
1759907603,
1759907615,
1759907615,
1759907615,
1759907615,
1759907615,
1759907615,
1759907615,
1759907615,
1759907615,
1759907615,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907627,
1759907651,
1759907651,
1759907651,
1768486895,
1782997607
],
"observedSince": 1637069048
}
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * Validium ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x49015545B46B07082bd7faf2633643eae87710EC",
"type": "EOA",
"isVerified": true,
"name": "0x4901…10EC",
"url": "https://etherscan.io/address/0x49015545B46B07082bd7faf2633643eae87710EC",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * PolygonDataCommittee [via: ProxyAdmin]\n* Can interact with Validium\n * set core system parameters like the trusted sequencer and manage forced transactions/batches \n * sole address that can force batches \n* Can interact with PolygonDataCommittee\n * manage the members of the data availability committee and the threshold for valid commitments ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0xA2Ce8D246889Db0F1Cb615E2E1231790cd5244A7",
"type": "EOA",
"isVerified": true,
"name": "0xA2Ce…44A7",
"url": "https://etherscan.io/address/0xA2Ce8D246889Db0F1Cb615E2E1231790cd5244A7",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with Validium\n * Allowed to commit transactions from the current layer to the host chain ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * Validium ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xe218f50Aa347687E449B8FCcAc81B6Fbe27C7aDD",
"type": "EOA",
"isVerified": true,
"name": "0xe218…7aDD",
"url": "https://etherscan.io/address/0xe218f50Aa347687E449B8FCcAc81B6Fbe27C7aDD",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with PolygonDataCommittee\n * manage the members of the data availability committee and the threshold for valid commitments \n* Can interact with Validium\n * set core system parameters like the trusted sequencer and manage forced transactions/batches ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x3Be66949eAD195BdCF18DbefAF4606e20468D4d6",
"type": "EOA",
"isVerified": true,
"name": "0x3Be6…D4d6",
"url": "https://etherscan.io/address/0x3Be66949eAD195BdCF18DbefAF4606e20468D4d6",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with Validium\n * Allowed to commit transactions from the current layer to the host chain ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0xb8605297399baEb6628C9E8F5D3E52A056492cfe",
"type": "EOA",
"isVerified": true,
"name": "0xb860…2cfe",
"url": "https://etherscan.io/address/0xb8605297399baEb6628C9E8F5D3E52A056492cfe",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * PolygonDataCommittee [via: ProxyAdmin]",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0xecEA75e2854FD52b0aE5C51C88f5eA8e2eC4bf9A",
"type": "EOA",
"isVerified": true,
"name": "0xecEA…bf9A",
"url": "https://etherscan.io/address/0xecEA75e2854FD52b0aE5C51C88f5eA8e2eC4bf9A",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with Validium\n * sole address that can force batches ",
"discoveryDrivenData": true
},
{
"id": "EOA-5",
"name": "EOA 5",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 5"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * Validium ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xd0676f1Ee81d7C6fe9B0F2EEf9FF74C3E984f94b",
"type": "EOA",
"isVerified": true,
"name": "0xd067…f94b",
"url": "https://etherscan.io/address/0xd0676f1Ee81d7C6fe9B0F2EEf9FF74C3E984f94b",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with Validium\n * set core system parameters like the trusted sequencer and manage forced transactions/batches \n * sole address that can force batches \n* Can interact with PolygonDataCommittee\n * manage the members of the data availability committee and the threshold for valid commitments ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x353800524721e11B453f73f523dD8840c215a213",
"type": "EOA",
"isVerified": true,
"name": "0x3538…a213",
"url": "https://etherscan.io/address/0x353800524721e11B453f73f523dD8840c215a213",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with Validium\n * Allowed to commit transactions from the current layer to the host chain ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0xb8605297399baEb6628C9E8F5D3E52A056492cfe",
"type": "EOA",
"isVerified": true,
"name": "0xb860…2cfe",
"url": "https://etherscan.io/address/0xb8605297399baEb6628C9E8F5D3E52A056492cfe",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * PolygonDataCommittee [via: ProxyAdmin]",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+4 -4
+3 -3
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "PolygonAdminMultisig",
"name": "PolygonAdminMultisig",
"description": "A Multisig with 5/9 threshold. \n* Can upgrade **with 3d delay**\n * AgglayerGateway [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerBridge [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerManager [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n * AgglayerGER [via: Timelock with 3d delay (no delay if in emergency state) → SharedProxyAdmin]\n* Can interact with AgglayerGateway\n * add new routes from proof selector to verifier / pessimisticVkey for pessimistic proofs **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * add or update default aggchain verification keys (aggchainVkey) for any given selectors \n * change the aggchainSigners and threshold (a multisig used for permissioned state transitions) \n * freeze routes from proof selector to verifier / pessimisticVkey for pessimistic proofs \n* Can interact with AgglayerBridge\n * upgrade the implementation of wrapped tokens deployed by the bridge **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager \n * manage all access control roles, add new rollup types (which are implementation contracts that can then be upgraded to by connected projects), update any connected projects to new rollup types, migrate to pessimistic proofs and rollback batches, connect existing rollups to the PolygonRollupManager **with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state)]\n * manage parameters like fees for all connected projects, set the trusted aggregator, stop the emergency state, update projects and obsolete rollup types \n* Can interact with Timelock\n * propose, cancel and execute transactions in the timelock, manage all access control roles and change the minimum delay **with 6d delay or with 3d delay** [via: Timelock with 3d delay (no delay if in emergency state) with 3d delay (no delay if in emergency state) - or - acting directly with 3d delay (no delay if in emergency state)]",
"accounts": [
{
"address": "eth:0x242daE44F5d8fb54B198D03a94dA45B5a4413e21",
"type": "Contract",
"isVerified": true,
"name": "0x242d…3e21",
"url": "https://etherscan.io/address/0x242daE44F5d8fb54B198D03a94dA45B5a4413e21"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0xAb3506507449bF1880f3337825efd19ac89E235E",
"type": "EOA",
"isVerified": true,
"name": "0xAb35…235E",
"url": "https://etherscan.io/address/0xAb3506507449bF1880f3337825efd19ac89E235E"
},
{
"address": "eth:0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2",
"type": "EOA",
"isVerified": true,
"name": "0xf02B…D4B2",
"url": "https://etherscan.io/address/0xf02BE0dA37dB50BEFA5a525158aa94b50F81D4B2"
},
{
"address": "eth:0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da",
"type": "EOA",
"isVerified": true,
"name": "0xdFEd…56Da",
"url": "https://etherscan.io/address/0xdFEd8373695a7b3DaF268CF91e71f6a7024A56Da"
},
{
"address": "eth:0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238",
"type": "EOA",
"isVerified": true,
"name": "0xffbf…3238",
"url": "https://etherscan.io/address/0xffbfc0c8331C5fc912DDA3C6D4A86eEB80203238"
},
{
"address": "eth:0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37",
"type": "EOA",
"isVerified": true,
"name": "0xeD44…dB37",
"url": "https://etherscan.io/address/0xeD44D1CFfB91e163CB7126bdEeA83959f175dB37"
},
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x21618593F7147235aC8D511d68A547C935F9d417",
"type": "EOA",
"isVerified": true,
"name": "0x2161…d417",
"url": "https://etherscan.io/address/0x21618593F7147235aC8D511d68A547C935F9d417"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
}
],
"discoveryDrivenData": true
},
{
"id": "Xlayer Multisig",
"name": "Xlayer Multisig",
"description": "A Multisig with 2/3 threshold. \n* Can upgrade **with no delay**\n * AnchorStateRegistry [via: ProxyAdmin]\n * DelayedWETH [via: ProxyAdmin]\n * SystemConfig [via: ProxyAdmin]\n * OptimismMintableERC20Factory [via: ProxyAdmin]\n * OptimismPortal2 [via: ProxyAdmin]\n * L1ERC721Bridge_neutered [via: ProxyAdmin]\n * L1StandardBridge_neutered [via: ProxyAdmin]\n * L1CrossDomainMessenger [via: ProxyAdmin]\n* Can upgrade **with 1h delay**\n * DisputeGameFactory [via: TimelockController with 1h delay → ProxyAdmin]\n* Can interact with DisputeGameFactory\n * set the dispute game implementation and initial bond for any game type **with 1h delay** [via: TimelockController with 1h delay]\n* Can interact with AddressManager\n * set and change address mappings [via: ProxyAdmin]\n* Can interact with TimelockController\n * cancel queued transactions \n * manage all access control roles **with 1h delay** [via: TimelockController with 1h delay]\n * propose transactions ",
"accounts": [
{
"address": "eth:0xC290bE56089BCC83c6993583ce2cF51a7951D45A",
"type": "Contract",
"isVerified": true,
"name": "0xC290…D45A",
"url": "https://etherscan.io/address/0xC290bE56089BCC83c6993583ce2cF51a7951D45A"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x6eE7BDa7AF04F61ccf93aB4b8DB2289aBe76C6aA",
"type": "EOA",
"isVerified": true,
"name": "EOA 5",
"url": "#EOA-5"
},
{
"address": "eth:0xD3C6821DE67A5c0345EC5A41e4C83739f7043972",
"type": "EOA",
"isVerified": true,
"name": "0xD3C6…3972",
"url": "https://etherscan.io/address/0xD3C6821DE67A5c0345EC5A41e4C83739f7043972"
},
{
"address": "eth:0x11CAA37c9e9Da2621bB45Af77cB7debEE3881d2E",
"type": "EOA",
"isVerified": true,
"name": "0x11CA…1d2E",
"url": "https://etherscan.io/address/0x11CAA37c9e9Da2621bB45Af77cB7debEE3881d2E"
}
],
"discoveryDrivenData": true
},
{
"id": "AgglayerManager",
"name": "AgglayerManager",
"accounts": [
{
"address": "eth:0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2",
"type": "Contract",
"isVerified": true,
"name": "0x5132…7aB2",
"url": "https://etherscan.io/address/0x5132A183E9F3CB7C848b0AAC5Ae0c4f0491B7aB2"
}
],
"chain": "ethereum",
"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* Can upgrade **with no delay**\n * AggchainECDSAMultisig ",
"discoveryDrivenData": true
},
{
"id": "PolygonSecurityCouncil",
"name": "PolygonSecurityCouncil",
"description": "A Multisig with 6/8 threshold. \n* Can interact with AgglayerManager\n * activate the emergency state in the PolygonRollupManager and in the shared bridge immediately, effectively pausing all projects connected to them and making system contracts instantly upgradable ",
"accounts": [
{
"address": "eth:0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6",
"type": "Contract",
"isVerified": true,
"name": "0x37c5…Dcb6",
"url": "https://etherscan.io/address/0x37c58Dfa7BF0A165C5AAEdDf3e2EdB475ac6Dcb6"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xFe45baf0F18c207152A807c1b05926583CFE2e4b",
"type": "EOA",
"isVerified": true,
"name": "0xFe45…2e4b",
"url": "https://etherscan.io/address/0xFe45baf0F18c207152A807c1b05926583CFE2e4b"
},
{
"address": "eth:0xaF46a0ddf80DFFB49C87656625E65A37499B261D",
"type": "EOA",
"isVerified": true,
"name": "0xaF46…261D",
"url": "https://etherscan.io/address/0xaF46a0ddf80DFFB49C87656625E65A37499B261D"
},
{
"address": "eth:0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf",
"type": "EOA",
"isVerified": true,
"name": "0xBDc2…FEFf",
"url": "https://etherscan.io/address/0xBDc235cC9d6Baa641c5ae306bc83962475A5FEFf"
},
{
"address": "eth:0x4c1665d6651ecEfa59B9B3041951608468b18891",
"type": "EOA",
"isVerified": true,
"name": "0x4c16…8891",
"url": "https://etherscan.io/address/0x4c1665d6651ecEfa59B9B3041951608468b18891"
},
{
"address": "eth:0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622",
"type": "EOA",
"isVerified": true,
"name": "0x3ab9…D622",
"url": "https://etherscan.io/address/0x3ab9f4b964eE665F7CDf1d65f1cEEc6196B0D622"
},
{
"address": "eth:0x49c15936864690bCd6af0ecaca8E874adFF30E86",
"type": "EOA",
"isVerified": true,
"name": "0x49c1…0E86",
"url": "https://etherscan.io/address/0x49c15936864690bCd6af0ecaca8E874adFF30E86"
},
{
"address": "eth:0x9F7dfAb2222A473284205cdDF08a677726d786A0",
"type": "EOA",
"isVerified": true,
"name": "0x9F7d…86A0",
"url": "https://etherscan.io/address/0x9F7dfAb2222A473284205cdDF08a677726d786A0"
},
{
"address": "eth:0x21887c89368bf918346c62460e0c339113801C28",
"type": "EOA",
"isVerified": true,
"name": "0x2188…1C28",
"url": "https://etherscan.io/address/0x21887c89368bf918346c62460e0c339113801C28"
}
],
"discoveryDrivenData": true
},
{
"id": "PolygonCreateRollupMultisig",
"name": "PolygonCreateRollupMultisig",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AgglayerManager\n * deploy new projects that use predefined rollup types (implementations) and connect them or other Agglayer chains to the PolygonRollupManager ",
"accounts": [
{
"address": "eth:0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB",
"type": "Contract",
"isVerified": true,
"name": "0xC74e…79dB",
"url": "https://etherscan.io/address/0xC74eFc7fdb3BeC9c6930E91FFDF761b160dF79dB"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x516eEcfb38aA308c5f1878497108c7d054fd46B7",
"type": "EOA",
"isVerified": true,
"name": "0x516e…46B7",
"url": "https://etherscan.io/address/0x516eEcfb38aA308c5f1878497108c7d054fd46B7"
},
{
"address": "eth:0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5",
"type": "EOA",
"isVerified": true,
"name": "0x3038…D3b5",
"url": "https://etherscan.io/address/0x3038B4DBf022E80169b2A068290d4a3A8b87D3b5"
},
{
"address": "eth:0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC",
"type": "EOA",
"isVerified": true,
"name": "0xD947…fCFC",
"url": "https://etherscan.io/address/0xD9478f759a13Bfa1d9dAB3cDF5ff0C099d5EfCFC"
},
{
"address": "eth:0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72",
"type": "EOA",
"isVerified": true,
"name": "0xEB5E…EA72",
"url": "https://etherscan.io/address/0xEB5EeE1F1650b821E0d3a87C1341d85b3a16EA72"
},
{
"address": "eth:0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B",
"address": "eth:0xFd6F4310817fCa819Fc59671DEFFad218136d56A",
"type": "EOA",
"isVerified": true,
"name": "0x8B9F…782B",
"url": "https://etherscan.io/address/0x8B9F18bcDD5838bB1bd4B3d6410e45DF813b782B"
"name": "0xFd6F…d56A",
"url": "https://etherscan.io/address/0xFd6F4310817fCa819Fc59671DEFFad218136d56A"
}
],
"discoveryDrivenData": true
},
{
"id": "SP1VerifierGatewayMultisig",
"name": "SP1VerifierGatewayMultisig",
"description": "A Multisig with 2/3 threshold. \n* Can interact with SP1VerifierGatewayOlder\n * affect the liveness and safety of the gateway - can transfer ownership, add and freeze verifier routes ",
"accounts": [
{
"address": "eth:0xCafEf00d348Adbd57c37d1B77e0619C6244C6878",
"type": "Contract",
"isVerified": true,
"name": "0xCafE…6878",
"url": "https://etherscan.io/address/0xCafEf00d348Adbd57c37d1B77e0619C6244C6878"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126",
"type": "EOA",
"isVerified": true,
"name": "0xBaB2…1126",
"url": "https://etherscan.io/address/0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x9395e83720bf2D8ac6435f9c520b48E289Cb8885",
"type": "EOA",
"isVerified": true,
"name": "0x9395…8885",
"url": "https://etherscan.io/address/0x9395e83720bf2D8ac6435f9c520b48E289Cb8885"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xa90B4C8B8807569980F6cC958c8905383136B5eA",
"type": "EOA",
"isVerified": true,
"name": "0xa90B…B5eA",
"url": "https://etherscan.io/address/0xa90B4C8B8807569980F6cC958c8905383136B5eA",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * replace the aggchainSigners and the signature threshold (which sign the state transitions of this aggchain), switch to the default signers of the AgglayerGateway, upgrade the aggchain to a newer rollup type of the same aggchain type registered in the AgglayerManager, set the aggchain metadata manager and transfer the aggchainManager role \n * set the trusted sequencer address ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x491619874b866c3cDB7C8553877da223525ead01",
"type": "EOA",
"isVerified": true,
"name": "0x4916…ad01",
"url": "https://etherscan.io/address/0x491619874b866c3cDB7C8553877da223525ead01",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sole address that can force batches ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x610DE9141a2c51A9A9624278AA97fbE54b27c102",
"type": "EOA",
"isVerified": true,
"name": "0x610D…c102",
"url": "https://etherscan.io/address/0x610DE9141a2c51A9A9624278AA97fbE54b27c102",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with AggchainECDSAMultisig\n * sign state transitions (replaces state validation for this aggchain) ",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0x98245d0ADF4595C66F0a9Db8E13c44CBFF6be459",
"type": "EOA",
"isVerified": true,
"name": "0x9824…e459",
"url": "https://etherscan.io/address/0x98245d0ADF4595C66F0a9Db8E13c44CBFF6be459",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with SystemConfig\n * Allowed to commit transactions from the current layer to the host chain ",
"discoveryDrivenData": true
},
{
"id": "EOA-5",
"name": "EOA 5",
"accounts": [
{
"address": "eth:0x6eE7BDa7AF04F61ccf93aB4b8DB2289aBe76C6aA",
"type": "EOA",
"isVerified": true,
"name": "0x6eE7…C6aA",
"url": "https://etherscan.io/address/0x6eE7BDa7AF04F61ccf93aB4b8DB2289aBe76C6aA",
"displayName": "EOA 5"
}
],
"chain": "ethereum",
"description": "Member of Xlayer Multisig.\n* Can upgrade **with no delay**\n * SuperchainConfig [via: OwnerContract → ProxyAdmin]\n* Can interact with SystemConfig\n * it can update the preconfer address, the batch submitter (Sequencer) address and the gas configuration of the system \n* Can interact with AccessManager\n * Allowed to add or remove proposers and challengers, and transfer ownership of the AccessManager ",
"discoveryDrivenData": true
},
{
"id": "EOA-6",
"name": "EOA 6",
"accounts": [
{
"address": "eth:0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"type": "EOA",
"isVerified": true,
"name": "0x20A5…51dE",
"url": "https://etherscan.io/address/0x20A53dCb196cD2bcc14Ece01F358f1C849aA51dE",
"displayName": "EOA 6"
}
],
"chain": "ethereum",
"description": "* Can interact with AgglayerManager\n * Permissioned to post new state roots and global exit roots accompanied by ZK proofs ",
"discoveryDrivenData": true
},
{
"id": "EOA-7",
"name": "EOA 7",
"accounts": [
{
"address": "eth:0x736E68Af2CbF2aB0E46E4310fE5Ae568b3642FF6",
"type": "EOA",
"isVerified": true,
"name": "0x736E…2FF6",
"url": "https://etherscan.io/address/0x736E68Af2CbF2aB0E46E4310fE5Ae568b3642FF6",
"displayName": "EOA 7"
}
],
"chain": "ethereum",
"description": "* Can interact with AccessManager\n * Allowed to challenge or delete state roots proposed by a Proposer \n* Can interact with PermissionedDisputeGame\n * Allowed to challenge or delete state roots proposed by a Proposer ",
"discoveryDrivenData": true
},
{
"id": "EOA-8",
"name": "EOA 8",
"accounts": [
{
"address": "eth:0xE43944421681170648E10007f73816e04F74394F",
"type": "EOA",
"isVerified": true,
"name": "0xE439…394F",
"url": "https://etherscan.io/address/0xE43944421681170648E10007f73816e04F74394F",
"displayName": "EOA 8"
}
],
"chain": "ethereum",
"description": "* Can interact with AccessManager\n * Allowed to post new state roots of the current layer to the host chain \n* Can interact with PermissionedDisputeGame\n * Allowed to post new state roots of the current layer to the host chain ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1791789180,
"baseTimestamp": 1792144133,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+7 -7
+4 -4
{
"self": {
"stateValidation": {
"value": "Validity proofs (ST, SN)",
"description": "STARKs and SNARKs are zero knowledge proofs that ensure state correctness. STARKs proofs are wrapped in SNARKs proofs for efficiency. SNARKs require a trusted setup.",
"sentiment": "good",
"orderHint": null,
"permissioned": true,
"executionDelay": 10800,
"secondLine": "3h execution delay"
"executionDelay": 86400,
"secondLine": "1d execution delay"
},
"dataAvailability": {
"value": "Onchain (SD)",
"description": "All of the data (SD = state diffs) needed for proof construction is published onchain.",
"sentiment": "good",
"orderHint": null
},
"exitWindow": {
"value": "None",
"description": "There is no window for users to exit in case of an unwanted upgrade since contracts are instantly upgradable.",
"sentiment": "bad",
"orderHint": 0,
"regular": {
"value": "4d 3h",
"value": "5d",
"sentiment": "warning",
"description": "Non-emergency upgrades go through a 4d 3h delay, but the central operator can still censor withdrawal transactions by implementing a TransactionFilterer with no delay."
"description": "Non-emergency upgrades go through a 5d delay, but the central operator can still censor withdrawal transactions by implementing a TransactionFilterer with no delay."
}
},
"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.",
"sentiment": "warning"
},
"proposerFailure": {
"value": "Replace proposer",
"description": "Only the whitelisted proposers can publish state roots on L1, so in the event of failure the withdrawals are frozen. There is a decentralized Governance system that can attempt changing Proposers with an upgrade.",
"sentiment": "warning",
"orderHint": null
}
}
}
+1 -1
{
"architectureImage": "zkstack-rollup",
"dataAvailability": [
{
"name": "All data required for proofs is published on chain",
"description": "All the data that is used to construct the system state is published on chain in the form of cheap blobs or calldata. This ensures that it will be available for enough time.",
"risks": [],
"references": []
}
],
"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 force any transaction via L1",
"description": "If a user is censored by the L2 Sequencer, they can try to force their transaction via an L1 queue. Right now there is no mechanism that forces L2 Sequencer to include transactions from the queue in an L2 block. The operator can implement a TransactionFilterer that censors forced transactions.",
"risks": [
{
"category": "Users can be censored if",
"text": "the operator refuses to include their transactions."
},
{
"category": "Users can be censored if",
"text": "the operator implements a TransactionFilterer, which is possible without delay."
}
],
"references": [
{
"title": "L1 - L2 interoperability - Developer's documentation",
"url": "https://docs.zksync.io/zksync-protocol/era-vm/contracts/handling-l1-l2-ops"
}
]
},
"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.\n\nBatch execution is initiated by permissioned executor EOAs, but each batch also requires approval from the sufficient number of EraMultisigValidator members before it can be executed on L1.",
"risks": [
{
"category": "MEV can be extracted if",
"text": "the operator exploits their centralized position and frontruns user transactions."
},
{
"category": "Users can be censored if",
"text": "the validator multisig does not approve batch execution."
}
],
"references": [
{
"title": "EraMultisigValidator - Etherscan proxy contract",
"url": "https://etherscan.io/address/0xdC26B08F0335b68721F64001C38b05D0BC9B539d"
}
]
},
"stateDerivation": {
"nodeSoftware": "The node software is open-source, and its source code can be found [here](https://github.com/matter-labs/zksync-era).\n The main node software does not rely on Layer 1 (L1) to reconstruct the state, but you can use [this tool](https://github.com/eqlabs/zksync-state-reconstruct) for that purpose. Currently, there is no straightforward method to inject the state into the main node, but ZKsync is actively working on a solution for this.",
"compressionScheme": "Bytecodes undergo compression before deployment on Layer 1 (L1). You can find additional information on this process [here](https://github.com/matter-labs/zksync-era/blob/main/docs/src/guides/advanced/11_compression.md).",
"genesisState": "There have been neither genesis states nor regenesis.",
"dataFormat": "Details on data format can be found [here](https://github.com/matter-labs/zksync-era/blob/main/docs/src/guides/advanced/09_pubdata.md)."
},
"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."
}
]
},
"upgradesAndGovernance": {
"content": "There 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 4 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 4 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 (6/8), Guardians (5/8) and ZkFoundationMultisig (3/6) 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.",
"content": "There 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 4 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 (1d 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 4 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 (6/8), Guardians (5/8) and ZkFoundationMultisig (3/6) 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 5d or 9d (depending on Guardians extending the LegalVetoPeriod) for Standard, 0 for Emergency and 1mo 5d 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.",
"image": "zkstack",
"governanceInfo": {
"securityCouncil": {
"Composition": "**4/8** to approve upgrades · **3/8** soft freeze · **6/8** hard freeze, unfreeze and emergency approval. No fixed terms: members serve until replaced via Protocol Governor proposal.",
"Members public": "**Mapped** — 8 representatives of different orgs + signer addresses [published in Schedule 3](https://docs.zknation.io/zksync-governance-procedures/schedule-3-zksync-security-council).",
"Charter": "[ZKsync Governance Procedures, Schedules 2–3](https://docs.zknation.io/zksync-governance-procedures/schedule-3-zksync-security-council) + bylaws of the ZKsync Security Council entity.",
"Can bypass DAO?": "**Freeze yes, upgrade no (alone)** — can unilaterally and immideately freeze the protocol: 12h soft freeze (3/8) or 7d hard freeze (6/8). Upgrades require approvals from 5/8 Guardians and 3/6 ZK Foundation Multisig.",
"DAO can override SC?": "**Partially** — the Token Assembly can pass a Protocol Governor proposal replacing SC members, but it needs SC approval (4/8) or 5/8 Guardians as fallback. No unconditional tokenholder path."
},
"guardians": {
"Composition": "**5/8** for vetoes and approvals, no fixed terms. Addresses and names of individuals that take Guardian role are [published in Schedule 4](https://docs.zknation.io/zksync-governance-procedures/schedule-4-zksync-guardians).",
"Powers": "**Veto + fallback approval + emergency co-sign.** L1 Onchain veto (5/8) cancels Token/GovOps proposals during voting delay or vote. Offchain veto (5 signed statements to the SC Foundation) blocks Protocol proposals during the 3d legal veto period; 2/8 can extend it to 7d. 5/8 can approve a Protocol proposal in risk review if the SC won't. The Guardian multisig is 1 of 3 emergency upgrade signers. Veto justification due on the forum within 48h.",
"Self-protection": "**Yes** — Guardian membership is changed via Protocol Governor proposal, but Guardians may explicitly veto proposals affecting the Guardian body itself (Schedule 4 §5.2). Token holders have no unconditional onchain removal path."
},
"upgrades": {
"Normal upgrade path": "ZIP submission on L2 → 3d voting delay → 7d vote (late quorum +3d) → L2→L1 message to the ProtocolUpgradeHandler → 3d Guardian offchain-veto window (extendable to 7d by 2/8) → ≤1mo risk review, SC approval (4/8) short-circuits to → 1d timelock → permissionless execution on Ethereum. Fastest ≈ **14 days** from submission; Guardian-fallback path ≈ **44 days**.",
"Emergency upgrade path": "**6/8 SC + 5/8 Guardians + 3/6 ZKsync Foundation, instant**.",
"Exit window": "**~4 days** after the vote closes when the SC approves promptly (3d veto window + 1d timelock). **0** for emergency upgrades.",
"Token Program path": "Grants or modifies capped ZK minting/burning rights. TPPs via Token Governor: 3d delay → 7d vote (late quorum +2d) → 3d timelock → permissionless execution on Era, ≈ **13 days**.",
"GovOps path": "GAPs via GovOps Governor: same 3d + 7d + 3d schedule, but advisory only, implementation is left to the proposer or named parties."
},
"tokenGovernance": {
"Governance token": "`ZK` — 21.00 B maximum mintable supply, 15.42 B currently minted, 1 delegated token = 1 vote. ZK tokens need to be delegated for voting, but are not locked.",
"Voting venue": "[ZKsync Governance Portal](https://vote.zknation.io/dao) powered by Cactus (formerly Tally). Three OpenZeppelin Governors on ZKsync Era: Protocol, Token, GovOps, each with its own timelock.",
"Proposal threshold": "**21,000,000 ZK** delegated (0.1% of the 21.00 B max mintable supply), identical for all three governors.",
"Quorum": "**630,000,000 ZK** (3% of max mintable supply) for all three governors. Simple majority of For vs Against; abstentions don't count. Late-quorum extension: +3d (Protocol), +2d (Token/GovOps).",
"Execution model": "**On-chain payload · Permissionless execute.** Protocol proposals travel via L2→L1 message and are permissionlessly executed on Ethereum after review + timelock; Token proposals execute permissionlessly on Era after their timelock."
}
}
}
}
+1 -1
{
"explanation": "ZKsync Era is a ZK rollup that posts state diffs to the L1. Transactions within a state diff can be considered final when proven on L1 using a ZK proof, except that an operator can revert them if not executed yet. Currently, there is at least a 3h delay between state diffs verification and the execution of the corresponding state actions."
"explanation": "ZKsync Era is a ZK rollup that posts state diffs to the L1. Transactions within a state diff can be considered final when proven on L1 using a ZK proof, except that an operator can revert them if not executed yet. Currently, there is at least a 1d delay between state diffs verification and the execution of the corresponding state actions."
}
+1 -1
{
"addresses": {
"ethereum": [
{
"name": "Diamond",
"isVerified": true,
"address": "eth:0x32400084C286CF3E17e7B677ea9583e60a000324",
"upgradeability": {
"proxyType": "EIP2535 diamond proxy",
"admins": [],
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1676315375,
"transactionHash": "0xba8357ad4ef5c48e120daf7c1569d90a803975958df777a4d8132dba6e8ef196",
"implementations": [
"eth:0xC48d496459e1358D055a79173BEA41efb7449028",
"eth:0xc30af84A6aFF43D5fd06FEdA6bA20BdfeD539F6C",
"eth:0x2EA0CFB9C942058ee5A84411EF2E37C6DE5bfe5c",
"eth:0x98E900Eb2e5fdE9786f736e86d6BFBfDb3E4683b",
"eth:0xa7E8a8F71c3cC43946601CC99997f8Cd6828a9B9"
]
},
{
"timestamp": 1679594519,
"transactionHash": "0x33a58f3097f84d41ae7f3bd280af6db28d04cd28af362faab164404b463e2791",
"implementations": [
"eth:0xC48d496459e1358D055a79173BEA41efb7449028",
"eth:0xc30af84A6aFF43D5fd06FEdA6bA20BdfeD539F6C",
"eth:0x2EA0CFB9C942058ee5A84411EF2E37C6DE5bfe5c",
"eth:0x98E900Eb2e5fdE9786f736e86d6BFBfDb3E4683b",
"eth:0xa7E8a8F71c3cC43946601CC99997f8Cd6828a9B9"
]
},
{
"timestamp": 1679594519,
"transactionHash": "0x33a58f3097f84d41ae7f3bd280af6db28d04cd28af362faab164404b463e2791",
"implementations": [
"eth:0xC48d496459e1358D055a79173BEA41efb7449028",
"eth:0xc30af84A6aFF43D5fd06FEdA6bA20BdfeD539F6C",
"eth:0x2EA0CFB9C942058ee5A84411EF2E37C6DE5bfe5c",
"eth:0x98E900Eb2e5fdE9786f736e86d6BFBfDb3E4683b",
"eth:0xa7E8a8F71c3cC43946601CC99997f8Cd6828a9B9"
]
},
{
"timestamp": 1679598935,
"transactionHash": "0x07c949f4a829a991f30998c6e89fdd8629fba240aedd59d55896c5c0999b6da4",
"implementations": [
"eth:0xF1fB730b7f8E8391B27B91f8f791e10E4a53CEcc",
"eth:0x6df4A6D71622860dcc64C1FD9645d9a5BE96f088",
"eth:0x2a2d6010202B93E727b61a60dfC1d5CF2707c1CE",
"eth:0xc796A402E1B26eCd2cd38F23e05A2f904504ec89",
"eth:0x389a081BCf20e5803288183b929F08458F1d863D"
]
},
{
"timestamp": 1682366591,
"transactionHash": "0xe246fdfa41030d23e91e4378db8697727da3c321a426a93a0861066cfb875875",
"implementations": [
"eth:0xF1fB730b7f8E8391B27B91f8f791e10E4a53CEcc",
"eth:0x6df4A6D71622860dcc64C1FD9645d9a5BE96f088",
"eth:0x2a2d6010202B93E727b61a60dfC1d5CF2707c1CE",
"eth:0x389a081BCf20e5803288183b929F08458F1d863D",
"eth:0xb2097DBe4410B538a45574B1FCD767E2303c7867"
]
},
{
"timestamp": 1692180911,
"transactionHash": "0x83d729e260c7ac2cf439aa2b8e667454489e4fb8d4965aaa9dc8e2fb95a44f46",
"implementations": [
"eth:0x9B1A10bDC4A40219544C835263b2cA3f3e689693",
"eth:0xA389bF185B301C8e20E79E3098e71399914035dF",
"eth:0xf002dFBc52C250a2E14C148041aDB8567a0B19BD",
"eth:0xab458aCbD8FF9B6cF7B8a029705A02F70DCDBf7D",
"eth:0x8c0f38F13526fCB379a80B87F4DEbdBCC9CAEcbD"
]
},
{
"timestamp": 1693297691,
"transactionHash": "0x8cdc268e23c0fa073ab3f1b75bd32a2cf05ea1e268a07c1aec44d5805f22fb12",
"implementations": [
"eth:0xc6f7e57C6e1e20468D869Fe33675524e243CD6a0",
"eth:0x7444DE636699F080cA1C033528D2bB3705B391Ce",
"eth:0x5349E94435Cc9Cab9FfB40A492DA46935052733A",
"eth:0x16615a85B451edfb6FCBea0b34405D9C7ca1a22A",
"eth:0x2E64926BE35412f7710A3E097Ba076740bF97CC0"
]
},
{
"timestamp": 1694083991,
"transactionHash": "0x72983cd25802230545bcb38b805638b0ffa17990ad51e8843e55519fe96d702c",
"implementations": [
"eth:0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4",
"eth:0x7444DE636699F080cA1C033528D2bB3705B391Ce",
"eth:0x62aA95ac4740A367746A664C4C69034d52E968EF",
"eth:0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b",
"eth:0x2E64926BE35412f7710A3E097Ba076740bF97CC0"
]
},
{
"timestamp": 1695403367,
"transactionHash": "0x5e3ce9e7d3920f293487a5581146f8333191a4068762db6fe4d1eec65a3fb805",
"implementations": [
"eth:0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4",
"eth:0x7444DE636699F080cA1C033528D2bB3705B391Ce",
"eth:0x62aA95ac4740A367746A664C4C69034d52E968EF",
"eth:0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b",
"eth:0x2E64926BE35412f7710A3E097Ba076740bF97CC0"
]
},
{
"timestamp": 1697818535,
"transactionHash": "0x0de4556791139b205562b388f2ddc4a2d2ec1bf0996feea38158535cd7e1a5c6",
"implementations": [
"eth:0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4",
"eth:0x7444DE636699F080cA1C033528D2bB3705B391Ce",
"eth:0x62aA95ac4740A367746A664C4C69034d52E968EF",
"eth:0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b",
"eth:0x2E64926BE35412f7710A3E097Ba076740bF97CC0"
]
},
{
"timestamp": 1698856895,
"transactionHash": "0x4d3e09380ee604e75800fd61da0c1771987e1cbca7c5254e8c7479e3dd0e3b37",
"implementations": [
"eth:0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4",
"eth:0x7444DE636699F080cA1C033528D2bB3705B391Ce",
"eth:0x62aA95ac4740A367746A664C4C69034d52E968EF",
"eth:0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b",
"eth:0x2E64926BE35412f7710A3E097Ba076740bF97CC0"
]
},
{
"timestamp": 1701721751,
"transactionHash": "0x9f0e9ecd78b5c17ff95c130b183df452486a0f784705927e608fd90a00aa9bcd",
"implementations": [
"eth:0x409560DE546e057ce5bD5dB487EdF2bB5E785baB",
"eth:0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4",
"eth:0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08",
"eth:0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269"
]
},
{
"timestamp": 1703159495,
"transactionHash": "0x2200e7109d3abbb74cb03144fea37f7227188e1fcaba4538bd9dfa3fa17cca02",
"implementations": [
"eth:0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967",
"eth:0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7",
"eth:0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58",
"eth:0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d"
]
},
{
"timestamp": 1707143447,
"transactionHash": "0x937dd21a05142c02159170dafb1bbaaa145ae7bd2c29bf512534fbec9ff801ab",
"implementations": [
"eth:0xE6426c725cB507168369c10284390E59d91eC821",
"eth:0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B",
"eth:0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB",
"eth:0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a"
]
},
{
"timestamp": 1710167531,
"transactionHash": "0xa5fd3584a815267a84a5686b386d911ed7e53d6c1863ff64a57ef0f7085bd4d7",
"implementations": [
"eth:0x230214F0224C7E0485f348a79512ad00514DB1F7",
"eth:0x10113bB3a8e64f8eD67003126adC8CE74C34610c",
"eth:0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7",
"eth:0xfd3779e6214eBBd40f5F5890351298e123A46BA6"
]
},
{
"timestamp": 1710285383,
"transactionHash": "0xc78a986be023f367f121c06fa9662ef950ad76f2cfe9397693f63de6c5959c61",
"implementations": [
"eth:0x230214F0224C7E0485f348a79512ad00514DB1F7",
"eth:0x10113bB3a8e64f8eD67003126adC8CE74C34610c",
"eth:0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7",
"eth:0xfd3779e6214eBBd40f5F5890351298e123A46BA6"
]
},
{
"timestamp": 1717674923,
"transactionHash": "0x71a3b924989f551cbf3024fcd6b52aeb9a52902d95c0efb690e7340d667b6e21",
"implementations": [
"eth:0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a",
"eth:0xE60E94fCCb18a81D501a38959E532C0A85A1be89",
"eth:0xCDB6228b616EEf8Df47D69A372C4f725C43e718C",
"eth:0xaD193aDe635576d8e9f7ada71Af2137b16c64075"
]
},
{
"timestamp": 1722937847,
"transactionHash": "0x2060aa785aeefa91a0b103accc9df689c7a2056aacfa70309492e729ddea4565",
"implementations": [
"eth:0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a",
"eth:0xE60E94fCCb18a81D501a38959E532C0A85A1be89",
"eth:0xCDB6228b616EEf8Df47D69A372C4f725C43e718C",
"eth:0xaD193aDe635576d8e9f7ada71Af2137b16c64075"
]
},
{
"timestamp": 1736520959,
"transactionHash": "0x4f45a603cfe9fb680e13fc3ecb48aed0ba73e198e7be5f53e39f016384d262b0",
"implementations": [
"eth:0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a",
"eth:0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9",
"eth:0x5575218cECd370E1d630d1AdB03c254B0B376821",
"eth:0xBB13642F795014E0EAC2b0d52ECD5162ECb66712"
]
},
{
"timestamp": 1741791551,
"transactionHash": "0x2c6aa40efd0500a015b036cf03de961b6e2aa2c726d21b5b8cede9a91964c12f",
"implementations": [
"eth:0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb",
"eth:0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1",
"eth:0x36b026c39125964D99596CE302866B5A59E4dE27",
"eth:0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800"
]
},
{
"timestamp": 1746446579,
"transactionHash": "0xf20c9ac3a8c84e97d8403833810d9c2d38f29bb18f592b983e69e14da66b1d12",
"implementations": [
"eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4",
"eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4",
"eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f",
"eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490"
]
},
{
"timestamp": 1750722695,
"transactionHash": "0x57b72110d70a2c2f9b7762a0069d3c61d6b58888a4ac6bec35adde7d3f664a57",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1754091731,
"transactionHash": "0x4408299240ea4bef17153116dbd0ab1fbd58dbe9a4b9fb177b7664a71e9c70f1",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1761146555,
"transactionHash": "0xcdb33c10c6fcef0fe1597e4c87403763e4378af8822c05ed303cd590bdbd72b9",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1769183903,
"transactionHash": "0xbeeccb50304cf1e2e0b3dc39e57f8f30ea7e0c9da7a774c9b984245e11d990eb",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1770391415,
"transactionHash": "0x96d827f588ce0b3868ebdf99ca1099d1128a8112ddbb140416d9ffdcfd72e9af",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1784915471,
"transactionHash": "0x3230654aa6e3c7d63a7f6d8bfe6eccabc98a11f18409af0fcadd12f8b65f34b4",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1786208627,
"transactionHash": "0x1586dea0c7326b2ae060b222925e9c752481cd049f907634a114200ecaa7baab",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1786873007,
"transactionHash": "0xa22268c77351fd1c1e3c632ad2323425cb1f2330b2ee34686c0a081f93bdd423",
"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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n* Roles:\n * **getAdmin**: EraChainAdminProxy; ultimately Matter Labs Multisig\n * **validators**: ValidatorTimelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x32400084C286CF3E17e7B677ea9583e60a000324#code"
},
{
"name": "BridgeHub",
"isVerified": true,
"address": "eth:0x303a465B659cBB0ab36eE643eA362c509EEb5213",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717520639,
"transactionHash": "0xdbb03a14ea223de3db4ac0916e78123bd0a1dde68e98952326d8382d29ac4d61",
"implementations": [
"eth:0x12f893689f9603991a8c22C249FFd0509Be95661"
]
},
{
"timestamp": 1725887363,
"transactionHash": "0x21aec24a9df97ce4886d699314be627b0818da4d1987349421fb3df102c43f2b",
"implementations": [
"eth:0x509dA1BE24432F8804C4A9FF4a3c3f80284CDd13"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0x0029e562c0b54C0b88cB22adF4346DbfEC87400c"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xb720523EC3c615b069453bF4B0584CEbF034706f"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xcdd748d4A80CE6831080f1dA2CA9084CDa87Cc87"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x08A98B1048Fb61E9Fff7d7d98305aC6286Ae9F32"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0xc89423b4909080fB8F8A43dF5E1C27001e55C24B"
]
}
],
"description": "The main registry (hub) for all the contracts in the ZK stack cluster and central entrypoint for bridge transactions. Stores important mappings like from chainId to diamond address, from chainId to parent CTM, from chainId to base token etc. A clone of Bridgehub is also deployed on each L2 chain, but this clone is only used on settlement layers.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x303a465B659cBB0ab36eE643eA362c509EEb5213#code"
},
{
"name": "MessageRoot",
"isVerified": true,
"address": "eth:0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109035,
"transactionHash": "0xc47e24e8cc6c7a493bbb1a46b74f1ff113fad2e35d7596aa688df5bf0402fc65",
"implementations": [
"eth:0x19347Fb8eD3E8e35eb4a01c8B18Bd330194Cf0ad"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x382fb241396eA915108e7B7Ce1adE1322bA73aeE"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x669ed5BB1377C917333e7d4223ce3419EE4099fD"
]
}
],
"description": "Aggregates remote bridge message roots from all ZK stack chains. To be used with the Gateway when deployed.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD#code"
},
{
"name": "CTMDeploymentTracker",
"isVerified": true,
"address": "eth:0x6078F6B379f103de1Aa912dc46bb8Df0c8809860",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109203,
"transactionHash": "0x8b5a21b3473a638022e84097a99c4668bb0a454686b737e87957729c4822741b",
"implementations": [
"eth:0x1E405E5cdF127Dc98Eb490AB0e97345f892Ff7E1"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x00e9d8A4b35C32880A10Feb391aDEDA0D3F90991"
]
}
],
"description": "Asset deployment tracker where the 'asset' is a ChainTypeManager. The registering of asset IDs for ChainTypeManagers is necessary to be able to migrate them to a given settlement layer, for example the Gateway.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6078F6B379f103de1Aa912dc46bb8Df0c8809860#code"
},
{
"name": "RollupL1DAValidator",
"isVerified": true,
"address": "eth:0x72213dfe8CA61B0A782970dCFebFb877778f9119",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Contract that verifies the data availability of ethereum calldata and blobs. Can be used by ZK stack rollups as the L1 part of a DAValidator pair.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x72213dfe8CA61B0A782970dCFebFb877778f9119#code"
},
{
"name": "L1AssetRouter",
"isVerified": true,
"address": "eth:0x8829AD80E425C646DAB305381ff105169FeEcE56",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x2386Bc2E26f39b72f0D4FDE0c07D68e4eEFfC725"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109071,
"transactionHash": "0x2c945c00f7a9f08b1a0bc749a08d76ca4cd5ee6f8890011ab43898e9fa1fcdf2",
"implementations": [
"eth:0x20E17D0280DeaBb78f7c193E3Ef05F62adC0936E"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xcaD49896F3d54d9A93eDdBFd370c8A4a1b239315"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0x0cb7f11BA981E13598D70625dF8f4597d59f2F4F"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x2386Bc2E26f39b72f0D4FDE0c07D68e4eEFfC725"
]
}
],
"description": "Canonical central asset router for all ZK stack chains. Routes deposits and withdrawals to the respective asset handlers (like the L1NativeTokenVault); does not escrow funds itself.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8829AD80E425C646DAB305381ff105169FeEcE56#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,30,1.\n* Roles:\n * **admin**: EraChainAdminProxy, ProxyAdmin; ultimately EmergencyUpgradeBoard, Matter Labs Multisig\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C#code"
},
{
"name": "L1Nullifier",
"isVerified": true,
"address": "eth:0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1717521479,
"transactionHash": "0xce3d72f23297a281cb58502dcc6a6c029489316a2faf9c4ef83141b1b254017c",
"implementations": [
"eth:0xCba1aF8f0bB223b2544F8eB8f69d1c7960f788dB"
]
},
{
"timestamp": 1724658671,
"transactionHash": "0xaec33529b74f8f9d56d7aa568c6358be299228a85e49ea85cb106eca5af7367c",
"implementations": [
"eth:0xb56A8225A745756DD215faf22E4796f373561AcD"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0xF5A14DCdde1143443f06033200D345c2a2828A99"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0xda2866AF0e170d0867a3F3bB52Db10D6E09Df78A"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0x3B4FD84B27fE7B9247d5B8C6d1A29B2889C81518"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xC6f08EFb7BA78f40d00F41aFAC00211d59eb9431"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x71759C4eA628293F5a99aAB1585dF1c8dA4718e0"
]
}
],
"description": "Contract responsible for bookkeeping L1 bridging transactions. Used to finalize withdrawals and reclaim failed deposits. Does not escrow funds.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB#code"
},
{
"name": "ProtocolUpgradeHandler",
"isVerified": true,
"address": "eth:0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e"
],
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1738855967,
"transactionHash": "0xa3d1fa107e6dc4ce67d92a5af74aa7dc34602c2a1d46727790819c1f974bed95",
"implementations": [
"eth:0xD5e9D3d483a93d03D8d604CC79dC9f2F4B78C604"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0x0A67f0Fd2f7523057039F14969Fe23a5f620f19A"
]
},
{
"timestamp": 1760519471,
"transactionHash": "0x2309df20dd1cb3f3a3289e97517d10d399989292f966578240ec387246a13e61",
"implementations": [
"eth:0x36625Bd3dDB469377C6e9893712158cA3c0cC14B"
]
}
],
"description": "The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2 and emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **emergencyUpgradeBoard**: EmergencyUpgradeBoard\n * **guardians**: Guardians\n * **l2_protocol_governor**: ProtocolTimelockController; ultimately ZkProtocolGovernor\n * **securityCouncil**: SecurityCouncil",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3#code"
},
{
"name": "RollupDAManager",
"isVerified": true,
"address": "eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Simple registry for allowed DA address pairs for the 'rollup' data availability mode (can be permanently enforced with isPermanentRollup=true). Rollup DA address pairs (especially the L1 part) usually point to contracts that validate if data was made available on Ethereum.\n* Roles:\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45#code"
},
{
"name": "EraChainAdminProxy",
"isVerified": true,
"address": "eth:0x2cf3bD6a9056b39999F3883955E183F655345063",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A governance proxy that lets Matter Labs Multisig act through it.\n* Roles:\n * **owner**: Matter Labs Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2cf3bD6a9056b39999F3883955E183F655345063#code"
},
{
"name": "L1ERC20Bridge",
"isVerified": true,
"address": "eth:0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x6ed98623e0B51be68748aB5091Aa891Adb883e13"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1676370683,
"transactionHash": "0xbeb9be61e12ebe1e8abcaa0ddd3149cc0282a60af9b11ee2cae50fbcd0adb96e",
"implementations": [
"eth:0x22bE40122BA952b81c50bcaa86F84418ff623391"
]
},
{
"timestamp": 1679600999,
"transactionHash": "0x5fc563e76bc3421166b3898389b72d6a93ac04d94741fc884290d2120ce8cfd0",
"implementations": [
"eth:0x7e5E66B01fe43293545eaB98ec4D31784A5Efa84"
]
},
{
"timestamp": 1682426255,
"transactionHash": "0xa462b66e80e973da1eaea5a5bde5a1b4ff6a1a3b29ac4db25922712e71900e80",
"implementations": [
"eth:0x38ABF296EE79621A225AA85086853b0dA3225D2F"
]
},
{
"timestamp": 1692181295,
"transactionHash": "0x351e42a19944da59b77c2fdd0d5adb58fd0af1cc960e14af3cfae0d686fda478",
"implementations": [
"eth:0x7FB17101A744e156e63d5fF6A4775fb48756577c"
]
},
{
"timestamp": 1701721751,
"transactionHash": "0x9f0e9ecd78b5c17ff95c130b183df452486a0f784705927e608fd90a00aa9bcd",
"implementations": [
"eth:0x03F3F3c12e11C2FAA60080bd3F7f80AADF369a33"
]
},
{
"timestamp": 1703242679,
"transactionHash": "0xd340a9274753c7f5edd33bc034c08df9e050821d399059c2f6bf0686dd341a87",
"implementations": [
"eth:0x79Cc1DF74Ac2d1B0876498C9FcE32c7e34F57B43"
]
},
{
"timestamp": 1707388607,
"transactionHash": "0x7a9c713189afcfbb07826da5078905f2543da22468f98507e51eac632dc784ce",
"implementations": [
"eth:0x810c6598CAaA08B61f6430Df5a8e120B3390d78A"
]
},
{
"timestamp": 1717680035,
"transactionHash": "0xb689a0cfff9af4bb1d1da94c404d396f24d5cf5031c31647671549c717cdba7a",
"implementations": [
"eth:0x8191975d8B0851C7f0740918896Cf298c09aA05E"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0x8D231E4097C3cb200Ed62134B466AA615cE60336"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0x2Dd3329A2Ae9de60Da02828A34f0cB6d6aff9142"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x6ed98623e0B51be68748aB5091Aa891Adb883e13"
]
}
],
"description": "Legacy bridge for depositing ERC20 tokens to ZKsync Era. Forwards deposits and withdrawals to the BridgeHub.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063#code"
},
{
"name": "L1ERC20Bridge_wstETH",
"isVerified": true,
"address": "eth:0x41527B2d03844dB6b0945f25702cB958b6d55989",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c"
],
"implementations": [
"eth:0x43a66B32c9AdcA1A59b273E69b61Da5197c21cCd"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1698065351,
"transactionHash": "0x51c6da607599f4f5f12d9fce001ede3fb1b94c9e2bd37fb48e081898fabf0020",
"implementations": [
"eth:0x9a810469F4a451Ebb7ef53672142053b4971587c"
]
},
{
"timestamp": 1776444131,
"transactionHash": "0xf43f6fe63edc60ae6eb0bc919b3c682ac0c068df7eb1cb44aa514302539f19cb",
"implementations": [
"eth:0x43a66B32c9AdcA1A59b273E69b61Da5197c21cCd"
]
}
],
"description": "Bridge for depositing wrapped stETH (Lido) to ZKsync Era. These deposits and withdrawals do not go through the shared Bridge.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x41527B2d03844dB6b0945f25702cB958b6d55989#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x0D8d1be440f997bDB9CA44C0140fD12551f99BBB",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Matter Labs Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0D8d1be440f997bDB9CA44C0140fD12551f99BBB#code"
},
{
"name": "EraVerifierPlonk",
"isVerified": true,
"address": "eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0DAAB2B7b38ab48712996E760152c569FA356DbF#code"
},
{
"name": "EraVerifierFflonk",
"isVerified": true,
"address": "eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9#code"
},
{
"name": "EraDualVerifier",
"isVerified": true,
"address": "eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A router contract for verifiers. Routes verification requests to EraVerifierFflonk or EraVerifierPlonk depending on the supplied proof type.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: EraChainAdminProxy",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B#code"
},
{
"name": "L1NativeTokenVault",
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Canonical central asset escrow for all ZK stack chains.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1#code"
},
{
"name": "ChainAssetHandler",
"isVerified": true,
"address": "eth:0xDd5CB8B9037357B4cD37391A073798f8aaB61076",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1758286391,
"transactionHash": "0x960c2e5bb98f4b9a07087b3b50fdc4681bbea1467aab3748dbb0050311f54ede",
"implementations": [
"eth:0xaa180C70126f751C164465638770B865965A744B"
]
}
],
"description": "Specialized contract for managing chain assets, i.e. chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately EmergencyUpgradeBoard\n * **owner**: ProtocolUpgradeHandler; ultimately EmergencyUpgradeBoard",
"upgradableBy": [
{
"name": "EmergencyUpgradeBoard",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xDd5CB8B9037357B4cD37391A073798f8aaB61076#code"
},
{
"name": "ServerNotifier",
"isVerified": true,
"address": "eth:0xfca808A744735D9919EEBe4660B8Fd897456Ce31",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x257FC0c3EB02F7ba8C0fd3eD57692A9c1ee6D29B"
],
"implementations": [
"eth:0x260813B0DAf35dda95c41F39c6Cc3F24dc87028A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1747199375,
"transactionHash": "0xbeb7447fc88b154a4730b01cb1a75b7093095056e88818c3659253111d06e66f",
"implementations": [
"eth:0x555D040F4A089D1dF14B372a87C5aF8FA37BDB7A"
]
},
{
"timestamp": 1784714999,
"transactionHash": "0xdbd5285f559e4ae32457b8425f67e1dfe76575c40999499e0b55d5cf985b85d8",
"implementations": [
"eth:0x260813B0DAf35dda95c41F39c6Cc3F24dc87028A"
]
}
],
"description": "A simple contract that can be called by the ChainAdmin to emit notifications about chain migrations.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Matter Labs Multisig",
"upgradableBy": [
{
"name": "Matter Labs Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xfca808A744735D9919EEBe4660B8Fd897456Ce31#code"
}
],
"zksync2": [
{
"name": "ProtocolTimelockController",
"isVerified": true,
"address": "zksync:0x085b8B6407f150D62adB1EF926F7f304600ec714",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 0s.\n* Roles:\n * **canceller**: ZkProtocolGovernor\n * **executor**: ZkProtocolGovernor\n * **proposer**: ZkProtocolGovernor\n * **timelockAdmin**: ProtocolTimelockController; ultimately ZkProtocolGovernor",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0x085b8B6407f150D62adB1EF926F7f304600ec714#code"
},
{
"name": "ZkToken",
"isVerified": true,
"address": "zksync:0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC"
],
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
},
"chain": "zksync2",
"pastUpgrades": [
{
"timestamp": 1716317326,
"transactionHash": "0x5bfce59c2ad18019ef20d58a3f1ec496cdc85537fc9564c932f7dcbbb2a15b56",
"implementations": [
"zksync:0x3931e73ebA79a7C898D3b0e02c7C62bA4F11cB14"
]
},
{
"timestamp": 1718011538,
"transactionHash": "0xa6bc022ba0f60ac6f10a6efb84b261e9ca1b327a611bdd7a1f4d37cc9b027a3c",
"implementations": [
"zksync:0x01a6715d3560241E09E865a46122bf347A576c09"
]
},
{
"timestamp": 1765195612,
"transactionHash": "0x749b9e6eed328052d679eb86639be807b4acf811ac8786f730b45258ba41ce6f",
"implementations": [
"zksync:0x4fcd824D304e9b1584CdBb582c104BDcbFb11274"
]
}
],
"description": "The ZK token contract on ZKsync Era. Mintable through access control roles. Used for voting in the ZK stack governance system.\n* Roles:\n * **admin**: ZkTokenProxyAdmin; ultimately ProtocolUpgradeHandler_l2Alias\n * **defaultAdmin**: ProtocolUpgradeHandler_l2Alias\n * **minterAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"upgradableBy": [
{
"id": "ProtocolUpgradeHandler_l2Alias",
"name": "ProtocolUpgradeHandler_l2Alias",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E#code"
},
{
"name": "ZkTokenProxyAdmin",
"isVerified": true,
"address": "zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "* Roles:\n * **owner**: ProtocolUpgradeHandler_l2Alias",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0xdB1E46B448e68a5E35CB693a99D59f784aD115CC#code"
},
{
"name": "ZkTokenTimelockController",
"isVerified": true,
"address": "zksync:0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zksync2",
"description": "Timelock contract allowing the queueing of transactions with a minimum delay of 3d.\n* Roles:\n * **canceller**: ZkTokenGovernor\n * **executor**: ZkTokenGovernor\n * **proposer**: ZkTokenGovernor\n * **timelockAdmin**: ZkTokenTimelockController; ultimately ZkTokenGovernor",
"discoveryDrivenData": true,
"url": "https://explorer.zksync.io/address/0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d#code"
}
]
},
"escrows": [
{
"address": "0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"sinceTimestamp": 1739109131,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1739109131,
"transactionHash": "0x50619c1506e8e93cc28017847b5690b6a0784bc2b08c1dbb8555b71525b72351",
"implementations": [
"eth:0x40B1060a114380f40faC6869c5B383f47e61530c"
]
},
{
"timestamp": 1745843591,
"transactionHash": "0x1fbaad1ac4bffb295da999881a37c1a52751ccad9b1533c0d2400fdca3631132",
"implementations": [
"eth:0xDf3a3E51aEABB5da548F854B608E3C9De1ae2947"
]
},
{
"timestamp": 1750343219,
"transactionHash": "0x56b626590d1042673f7cf09f480533e8084d3e6141dc079fba657b1cc2ec17eb",
"implementations": [
"eth:0xBa05B8B761386289Ba413a74AF1933d6a76E1b52"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x8E1C5A8c5d8C33ed0eC756d6f4006f2D875bA083"
]
}
],
"description": "Shared bridge for depositing tokens to ZKsync Era and other ZK stack chains.",
"url": "https://etherscan.io/address/0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6#code"
},
"chain": "ethereum",
"includeInTotal": true,
"sharedEscrow": {
"type": "ElasticChain",
"l2BridgeAddress": "0x11f943b2c77b743AB90f4A0Ae7d5A4e7FCA3E102",
"l2EtherAddress": "0x000000000000000000000000000000000000800A"
},
"chainId": 1
},
{
"address": "0x41527B2d03844dB6b0945f25702cB958b6d55989",
"sinceTimestamp": 1698058151,
"tokens": [
"wstETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x41527B2d03844dB6b0945f25702cB958b6d55989",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x3e40D73EB977Dc6a537aF587D48316feE66E9C8c"
],
"implementations": [
"eth:0x43a66B32c9AdcA1A59b273E69b61Da5197c21cCd"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1698065351,
"transactionHash": "0x51c6da607599f4f5f12d9fce001ede3fb1b94c9e2bd37fb48e081898fabf0020",
"implementations": [
"eth:0x9a810469F4a451Ebb7ef53672142053b4971587c"
]
},
{
"timestamp": 1776444131,
"transactionHash": "0xf43f6fe63edc60ae6eb0bc919b3c682ac0c068df7eb1cb44aa514302539f19cb",
"implementations": [
"eth:0x43a66B32c9AdcA1A59b273E69b61Da5197c21cCd"
]
}
],
"description": "Bridge for depositing wrapped stETH (Lido) to ZKsync Era. These deposits and withdrawals do not go through the new shared BridgeHub.",
"upgradableBy": [
{
"name": "Lido (Lido Agent)",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x41527B2d03844dB6b0945f25702cB958b6d55989#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x32400084C286CF3E17e7B677ea9583e60a000324",
"sinceTimestamp": 1676268575,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0x32400084C286CF3E17e7B677ea9583e60a000324",
"upgradeability": {
"proxyType": "EIP2535 diamond proxy",
"admins": [],
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
],
"immutable": false
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1676315375,
"transactionHash": "0xba8357ad4ef5c48e120daf7c1569d90a803975958df777a4d8132dba6e8ef196",
"implementations": [
"eth:0xC48d496459e1358D055a79173BEA41efb7449028",
"eth:0xc30af84A6aFF43D5fd06FEdA6bA20BdfeD539F6C",
"eth:0x2EA0CFB9C942058ee5A84411EF2E37C6DE5bfe5c",
"eth:0x98E900Eb2e5fdE9786f736e86d6BFBfDb3E4683b",
"eth:0xa7E8a8F71c3cC43946601CC99997f8Cd6828a9B9"
]
},
{
"timestamp": 1679594519,
"transactionHash": "0x33a58f3097f84d41ae7f3bd280af6db28d04cd28af362faab164404b463e2791",
"implementations": [
"eth:0xC48d496459e1358D055a79173BEA41efb7449028",
"eth:0xc30af84A6aFF43D5fd06FEdA6bA20BdfeD539F6C",
"eth:0x2EA0CFB9C942058ee5A84411EF2E37C6DE5bfe5c",
"eth:0x98E900Eb2e5fdE9786f736e86d6BFBfDb3E4683b",
"eth:0xa7E8a8F71c3cC43946601CC99997f8Cd6828a9B9"
]
},
{
"timestamp": 1679594519,
"transactionHash": "0x33a58f3097f84d41ae7f3bd280af6db28d04cd28af362faab164404b463e2791",
"implementations": [
"eth:0xC48d496459e1358D055a79173BEA41efb7449028",
"eth:0xc30af84A6aFF43D5fd06FEdA6bA20BdfeD539F6C",
"eth:0x2EA0CFB9C942058ee5A84411EF2E37C6DE5bfe5c",
"eth:0x98E900Eb2e5fdE9786f736e86d6BFBfDb3E4683b",
"eth:0xa7E8a8F71c3cC43946601CC99997f8Cd6828a9B9"
]
},
{
"timestamp": 1679598935,
"transactionHash": "0x07c949f4a829a991f30998c6e89fdd8629fba240aedd59d55896c5c0999b6da4",
"implementations": [
"eth:0xF1fB730b7f8E8391B27B91f8f791e10E4a53CEcc",
"eth:0x6df4A6D71622860dcc64C1FD9645d9a5BE96f088",
"eth:0x2a2d6010202B93E727b61a60dfC1d5CF2707c1CE",
"eth:0xc796A402E1B26eCd2cd38F23e05A2f904504ec89",
"eth:0x389a081BCf20e5803288183b929F08458F1d863D"
]
},
{
"timestamp": 1682366591,
"transactionHash": "0xe246fdfa41030d23e91e4378db8697727da3c321a426a93a0861066cfb875875",
"implementations": [
"eth:0xF1fB730b7f8E8391B27B91f8f791e10E4a53CEcc",
"eth:0x6df4A6D71622860dcc64C1FD9645d9a5BE96f088",
"eth:0x2a2d6010202B93E727b61a60dfC1d5CF2707c1CE",
"eth:0x389a081BCf20e5803288183b929F08458F1d863D",
"eth:0xb2097DBe4410B538a45574B1FCD767E2303c7867"
]
},
{
"timestamp": 1692180911,
"transactionHash": "0x83d729e260c7ac2cf439aa2b8e667454489e4fb8d4965aaa9dc8e2fb95a44f46",
"implementations": [
"eth:0x9B1A10bDC4A40219544C835263b2cA3f3e689693",
"eth:0xA389bF185B301C8e20E79E3098e71399914035dF",
"eth:0xf002dFBc52C250a2E14C148041aDB8567a0B19BD",
"eth:0xab458aCbD8FF9B6cF7B8a029705A02F70DCDBf7D",
"eth:0x8c0f38F13526fCB379a80B87F4DEbdBCC9CAEcbD"
]
},
{
"timestamp": 1693297691,
"transactionHash": "0x8cdc268e23c0fa073ab3f1b75bd32a2cf05ea1e268a07c1aec44d5805f22fb12",
"implementations": [
"eth:0xc6f7e57C6e1e20468D869Fe33675524e243CD6a0",
"eth:0x7444DE636699F080cA1C033528D2bB3705B391Ce",
"eth:0x5349E94435Cc9Cab9FfB40A492DA46935052733A",
"eth:0x16615a85B451edfb6FCBea0b34405D9C7ca1a22A",
"eth:0x2E64926BE35412f7710A3E097Ba076740bF97CC0"
]
},
{
"timestamp": 1694083991,
"transactionHash": "0x72983cd25802230545bcb38b805638b0ffa17990ad51e8843e55519fe96d702c",
"implementations": [
"eth:0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4",
"eth:0x7444DE636699F080cA1C033528D2bB3705B391Ce",
"eth:0x62aA95ac4740A367746A664C4C69034d52E968EF",
"eth:0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b",
"eth:0x2E64926BE35412f7710A3E097Ba076740bF97CC0"
]
},
{
"timestamp": 1695403367,
"transactionHash": "0x5e3ce9e7d3920f293487a5581146f8333191a4068762db6fe4d1eec65a3fb805",
"implementations": [
"eth:0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4",
"eth:0x7444DE636699F080cA1C033528D2bB3705B391Ce",
"eth:0x62aA95ac4740A367746A664C4C69034d52E968EF",
"eth:0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b",
"eth:0x2E64926BE35412f7710A3E097Ba076740bF97CC0"
]
},
{
"timestamp": 1697818535,
"transactionHash": "0x0de4556791139b205562b388f2ddc4a2d2ec1bf0996feea38158535cd7e1a5c6",
"implementations": [
"eth:0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4",
"eth:0x7444DE636699F080cA1C033528D2bB3705B391Ce",
"eth:0x62aA95ac4740A367746A664C4C69034d52E968EF",
"eth:0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b",
"eth:0x2E64926BE35412f7710A3E097Ba076740bF97CC0"
]
},
{
"timestamp": 1698856895,
"transactionHash": "0x4d3e09380ee604e75800fd61da0c1771987e1cbca7c5254e8c7479e3dd0e3b37",
"implementations": [
"eth:0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4",
"eth:0x7444DE636699F080cA1C033528D2bB3705B391Ce",
"eth:0x62aA95ac4740A367746A664C4C69034d52E968EF",
"eth:0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b",
"eth:0x2E64926BE35412f7710A3E097Ba076740bF97CC0"
]
},
{
"timestamp": 1701721751,
"transactionHash": "0x9f0e9ecd78b5c17ff95c130b183df452486a0f784705927e608fd90a00aa9bcd",
"implementations": [
"eth:0x409560DE546e057ce5bD5dB487EdF2bB5E785baB",
"eth:0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4",
"eth:0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08",
"eth:0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269"
]
},
{
"timestamp": 1703159495,
"transactionHash": "0x2200e7109d3abbb74cb03144fea37f7227188e1fcaba4538bd9dfa3fa17cca02",
"implementations": [
"eth:0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967",
"eth:0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7",
"eth:0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58",
"eth:0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d"
]
},
{
"timestamp": 1707143447,
"transactionHash": "0x937dd21a05142c02159170dafb1bbaaa145ae7bd2c29bf512534fbec9ff801ab",
"implementations": [
"eth:0xE6426c725cB507168369c10284390E59d91eC821",
"eth:0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B",
"eth:0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB",
"eth:0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a"
]
},
{
"timestamp": 1710167531,
"transactionHash": "0xa5fd3584a815267a84a5686b386d911ed7e53d6c1863ff64a57ef0f7085bd4d7",
"implementations": [
"eth:0x230214F0224C7E0485f348a79512ad00514DB1F7",
"eth:0x10113bB3a8e64f8eD67003126adC8CE74C34610c",
"eth:0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7",
"eth:0xfd3779e6214eBBd40f5F5890351298e123A46BA6"
]
},
{
"timestamp": 1710285383,
"transactionHash": "0xc78a986be023f367f121c06fa9662ef950ad76f2cfe9397693f63de6c5959c61",
"implementations": [
"eth:0x230214F0224C7E0485f348a79512ad00514DB1F7",
"eth:0x10113bB3a8e64f8eD67003126adC8CE74C34610c",
"eth:0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7",
"eth:0xfd3779e6214eBBd40f5F5890351298e123A46BA6"
]
},
{
"timestamp": 1717674923,
"transactionHash": "0x71a3b924989f551cbf3024fcd6b52aeb9a52902d95c0efb690e7340d667b6e21",
"implementations": [
"eth:0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a",
"eth:0xE60E94fCCb18a81D501a38959E532C0A85A1be89",
"eth:0xCDB6228b616EEf8Df47D69A372C4f725C43e718C",
"eth:0xaD193aDe635576d8e9f7ada71Af2137b16c64075"
]
},
{
"timestamp": 1722937847,
"transactionHash": "0x2060aa785aeefa91a0b103accc9df689c7a2056aacfa70309492e729ddea4565",
"implementations": [
"eth:0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a",
"eth:0xE60E94fCCb18a81D501a38959E532C0A85A1be89",
"eth:0xCDB6228b616EEf8Df47D69A372C4f725C43e718C",
"eth:0xaD193aDe635576d8e9f7ada71Af2137b16c64075"
]
},
{
"timestamp": 1736520959,
"transactionHash": "0x4f45a603cfe9fb680e13fc3ecb48aed0ba73e198e7be5f53e39f016384d262b0",
"implementations": [
"eth:0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a",
"eth:0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9",
"eth:0x5575218cECd370E1d630d1AdB03c254B0B376821",
"eth:0xBB13642F795014E0EAC2b0d52ECD5162ECb66712"
]
},
{
"timestamp": 1741791551,
"transactionHash": "0x2c6aa40efd0500a015b036cf03de961b6e2aa2c726d21b5b8cede9a91964c12f",
"implementations": [
"eth:0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb",
"eth:0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1",
"eth:0x36b026c39125964D99596CE302866B5A59E4dE27",
"eth:0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800"
]
},
{
"timestamp": 1746446579,
"transactionHash": "0xf20c9ac3a8c84e97d8403833810d9c2d38f29bb18f592b983e69e14da66b1d12",
"implementations": [
"eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4",
"eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4",
"eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f",
"eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490"
]
},
{
"timestamp": 1750722695,
"transactionHash": "0x57b72110d70a2c2f9b7762a0069d3c61d6b58888a4ac6bec35adde7d3f664a57",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1754091731,
"transactionHash": "0x4408299240ea4bef17153116dbd0ab1fbd58dbe9a4b9fb177b7664a71e9c70f1",
"implementations": [
"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC",
"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22",
"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec",
"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A"
]
},
{
"timestamp": 1761146555,
"transactionHash": "0xcdb33c10c6fcef0fe1597e4c87403763e4378af8822c05ed303cd590bdbd72b9",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1769183903,
"transactionHash": "0xbeeccb50304cf1e2e0b3dc39e57f8f30ea7e0c9da7a774c9b984245e11d990eb",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1770391415,
"transactionHash": "0x96d827f588ce0b3868ebdf99ca1099d1128a8112ddbb140416d9ffdcfd72e9af",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1784915471,
"transactionHash": "0x3230654aa6e3c7d63a7f6d8bfe6eccabc98a11f18409af0fcadd12f8b65f34b4",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1786208627,
"transactionHash": "0x1586dea0c7326b2ae060b222925e9c752481cd049f907634a114200ecaa7baab",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
},
{
"timestamp": 1786873007,
"transactionHash": "0xa22268c77351fd1c1e3c632ad2323425cb1f2330b2ee34686c0a081f93bdd423",
"implementations": [
"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253",
"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2",
"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45",
"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691"
]
}
],
"description": "Main rollup contract of ZKsync Era.",
"url": "https://etherscan.io/address/0x32400084C286CF3E17e7B677ea9583e60a000324#code"
},
"chain": "ethereum",
"includeInTotal": true,
"isHistorical": true,
"untilTimestamp": 1717922458,
"chainId": 1
},
{
"address": "0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063",
"sinceTimestamp": 1676367083,
"tokens": "*",
"contract": {
"isVerified": true,
"address": "eth:0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1"
],
"implementations": [
"eth:0x6ed98623e0B51be68748aB5091Aa891Adb883e13"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1676370683,
"transactionHash": "0xbeb9be61e12ebe1e8abcaa0ddd3149cc0282a60af9b11ee2cae50fbcd0adb96e",
"implementations": [
"eth:0x22bE40122BA952b81c50bcaa86F84418ff623391"
]
},
{
"timestamp": 1679600999,
"transactionHash": "0x5fc563e76bc3421166b3898389b72d6a93ac04d94741fc884290d2120ce8cfd0",
"implementations": [
"eth:0x7e5E66B01fe43293545eaB98ec4D31784A5Efa84"
]
},
{
"timestamp": 1682426255,
"transactionHash": "0xa462b66e80e973da1eaea5a5bde5a1b4ff6a1a3b29ac4db25922712e71900e80",
"implementations": [
"eth:0x38ABF296EE79621A225AA85086853b0dA3225D2F"
]
},
{
"timestamp": 1692181295,
"transactionHash": "0x351e42a19944da59b77c2fdd0d5adb58fd0af1cc960e14af3cfae0d686fda478",
"implementations": [
"eth:0x7FB17101A744e156e63d5fF6A4775fb48756577c"
]
},
{
"timestamp": 1701721751,
"transactionHash": "0x9f0e9ecd78b5c17ff95c130b183df452486a0f784705927e608fd90a00aa9bcd",
"implementations": [
"eth:0x03F3F3c12e11C2FAA60080bd3F7f80AADF369a33"
]
},
{
"timestamp": 1703242679,
"transactionHash": "0xd340a9274753c7f5edd33bc034c08df9e050821d399059c2f6bf0686dd341a87",
"implementations": [
"eth:0x79Cc1DF74Ac2d1B0876498C9FcE32c7e34F57B43"
]
},
{
"timestamp": 1707388607,
"transactionHash": "0x7a9c713189afcfbb07826da5078905f2543da22468f98507e51eac632dc784ce",
"implementations": [
"eth:0x810c6598CAaA08B61f6430Df5a8e120B3390d78A"
]
},
{
"timestamp": 1717680035,
"transactionHash": "0xb689a0cfff9af4bb1d1da94c404d396f24d5cf5031c31647671549c717cdba7a",
"implementations": [
"eth:0x8191975d8B0851C7f0740918896Cf298c09aA05E"
]
},
{
"timestamp": 1736352035,
"transactionHash": "0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5",
"implementations": [
"eth:0x8D231E4097C3cb200Ed62134B466AA615cE60336"
]
},
{
"timestamp": 1743408047,
"transactionHash": "0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3",
"implementations": [
"eth:0x2Dd3329A2Ae9de60Da02828A34f0cB6d6aff9142"
]
},
{
"timestamp": 1760519351,
"transactionHash": "0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83",
"implementations": [
"eth:0x6ed98623e0B51be68748aB5091Aa891Adb883e13"
]
}
],
"description": "Legacy bridge for depositing ERC20 tokens to ZKsync Era. Forwards deposits and withdrawals to the BridgeHub.",
"url": "https://etherscan.io/address/0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"programHashes": [
{
"title": "Boojum L2 Bootloader program v0.29.2",
"description": "EraVM program that proves the correct execution of a batch of ZK Stack L2 blocks.",
"proverSystemProject": "boojum",
"programUrl": "https://github.com/matter-labs/era-contracts/blob/v0.29.2/system-contracts/bootloader/bootloader.yul",
"verificationStatus": "successful",
"verificationSteps": "Prepare:\n\n1. Install npm and yarn: `npm install --global yarn`\n2. Install hardhat: `npm install -g hardhat`\n3. Install foundry-zksync: `curl -L https://raw.githubusercontent.com/matter-labs/foundry-zksync/main/install-foundry-zksync | bash` from [here](https://foundry-book.zksync.io/introduction/installation/).\n\nVerify:\n\n1. Checkout the correct branch in [era-contracts](https://github.com/matter-labs/era-contracts) repo: `git checkout v0.29.2`. Commit hash should be `dbfc9b5a40d68007dc405a9b669230104c1646e4`.\n2. Execute recompute_hashes.sh script: `chmod +x recompute_hashes.sh` and `./recompute_hashes.sh`. Note that the script may require a specific version of `foundryup-zksync` and it will suggest the command to install it. However you might need to manually clear git working tree in the repo foundry-zksync (probably in ~/.foundry/matter-labs/foundry-zksync) to change versions.",
"hash": "0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6"
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 4d 3h - 8d 3h delay on code upgrades unless upgrade is initiated by the EmergencyUpgradeBoard in which case there is no delay."
"text": "a contract receives a malicious code upgrade. There is a 5d - 9d delay on code upgrades unless upgrade is initiated by the EmergencyUpgradeBoard in which case there is no delay."
}
],
"zkVerifiers": [
"eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9",
"eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF"
]
}