a9abf4f5 (main)
and
36c96cd9 (PR)
+37 -17
+1 -1
{
"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": [
{
"title": "Eip4844BlobAcceptor.sol - Etherscan source code, submitBlobs() function",
"url": "https://etherscan.io/address/0x052b73d934E9412045Bf731574463Fd026D74645#code"
}
]
}
],
"exitMechanisms": [
{
"name": "Regular messaging",
"description": "The user initiates L2->L1 messages by submitting a regular transaction on this chain. When the block containing that transaction is settled, the message becomes available for processing on L1. ZK proofs are required to settle blocks. Note that withdrawal requests can be censored by the Sequencer. Currently, there is a general limit of 10000.0 ETH that can be withdrawn within each 1d time window. Users can (eventually, after 6 months of inactivity from the centralized Operator) exit by replacing the Operator. In such a case they need to self-propose and prove their new state on the base layer with the required software which is currently not made available.",
"risks": [
{
"category": "Funds can be frozen if",
"text": "the operator censors withdrawal transaction."
}
],
"references": [
{
"title": "L1MessageService.sol - Etherscan source code, claimMessageWithProof() function",
"url": "https://etherscan.io/address/0x052b73d934E9412045Bf731574463Fd026D74645#code#F21#L92"
},
{
"title": "LivenessRecovery.sol - Etherscan source code, setLivenessRecoveryOperator() function ",
"url": "https://etherscan.io/address/0x052b73d934E9412045Bf731574463Fd026D74645#code#F36#L41"
}
]
}
],
"forceTransactions": {
"name": "Users can't force any transaction",
"description": "There is no general mechanism to force the sequencer to include the transaction.",
"risks": [
{
"category": "Users can be censored if",
"text": "the operator refuses to include their transactions."
}
],
"references": []
},
"operator": {
"name": "The system has a centralized sequencer",
"description": "Only a trusted sequencer is allowed to submit transaction batches. A mechanism for users to submit their own batches is currently disabled.",
"risks": [
{
"category": "MEV can be extracted if",
"text": "the operator exploits their centralized position and frontruns user transactions."
},
{
"category": "Funds can be frozen if",
"text": "the sequencer refuses to include an exit transaction.",
"isCritical": true
}
],
"references": [
{
"title": "Eip4844BlobAcceptor.sol - Etherscan source code, onlyRole(OPERATOR_ROLE) modifier",
"url": "https://etherscan.io/address/0x052b73d934E9412045Bf731574463Fd026D74645#code"
}
]
},
"stateDerivation": {
"nodeSoftware": "The node software ([Linea Besu](https://github.com/Consensys/linea-besu-package)) and a guide to reconstruct the state from L1 is available [here](https://docs.linea.build/network/overview/recoverable-state). Other node implementations like Nethermind, Geth or Erigon can sync too, but state derivation from L1 and Linea-specific features [are unsupported](https://docs.linea.build/get-started/how-to/run-a-node).",
"compressionScheme": "Linea uses a [bespoke lossless compression scheme](https://github.com/Consensys/linea-monorepo/blob/main/docs/architecture-description.md#blob-compressor) based on LZSS (deflate-like). It is available as a [dedicated library](https://github.com/Consensys/compress) and a [zk-decompression circuit](https://github.com/Consensys/gnark/tree/master/std/compress) in Gnark.",
"genesisState": "Is available via the official Linea docs for Linea Besu (preloaded), [Besu](https://docs.linea.build/get-started/how-to/run-a-node/besu#step-2-download-the-genesis-file-and-besu-configuration-file), [Erigon](https://docs.linea.build/get-started/how-to/run-a-node/erigon#step-2-download-the-genesis-file), [Nethermind](https://docs.linea.build/get-started/how-to/run-a-node/nethermind), [Geth](https://docs.linea.build/get-started/how-to/run-a-node/geth#step-2-download-the-genesis-file).",
"dataFormat": "Linea groups L2 blocks [into batches](https://lineascan.build/batches) which are then posted to L1 for proving. Each batch (whether sent as a blob or compressed calldata) contains L2 blocks. Blocks in turn include the [transactions with unnecessary data stripped](https://community.linea.build/t/proposal-state-reconstruction-from-l1-blobs/8038#p-22077-block-data-sent-to-l1-in-the-compressed-blob-2). More info on [the compression, packing and blob structure](https://github.com/Consensys/linea-monorepo/blob/main/docs/architecture-description.md#blob-compressor)."
},
"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": "The Linea prover code is [available on Github](https://github.com/Consensys/linea-monorepo/tree/main/prover). Linea splits proving into: **Corset** (Go + Lisp DSL) expands EVM execution traces and generates a bespoke constraint system for the zk-EVM. **gnark** (Go) ingests the expanded traces and constraint system, instantiates the circuits and produces the SNARK proof."
},
{
"title": "ZK Circuits",
"description": "The constraint system lives in the public [linea-constraints](https://github.com/Consensys/linea-constraints) repo and is authored in a Lisp-style DSL before being compiled to Go. Gnark then turns those constraints into PLONK-compatible circuits over **BN254**. Internally, Linea’s flow uses a recursive proof stack called [Vortex → Arcane → PLONK compression](https://docs.linea.build/technology/transaction-lifecycle#step-5-generating-a-zk-proof-using-transaction-data): Vortex/Arcane supply small inner proofs that are finally aggregated into a single PLONK proof that the L1 contract can verify."
},
{
"title": "Verification Keys Generation",
"description": "Linea uses a Plonk-based proof system which requires a trusted setup. The verification keys are hardcoded in the verifier contract on-chain."
},
{
"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": "LineaRollupBase.sol - Etherscan source code, finalizeBlocks() and _verifyProof() calls",
"url": "https://etherscan.io/address/0x052b73d934E9412045Bf731574463Fd026D74645#code#F38#L277"
},
{
"title": "PlonkVerifierMainnetFull.sol (Proof Type 0)",
"url": "https://etherscan.io/address/0xAFF26999780901ee8B48f0a1271a177ff46fD53F"
},
{
"title": "PlonkVerifierMainnetFull.sol (Proof Type 1)",
"url": "https://etherscan.io/address/0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77"
"url": "https://etherscan.io/address/0x1d930e3Fac9fbc7026eC17962d2F57d558d37532"
}
]
}
]
}
}
+3 -3
{
"addresses": {
"ethereum": [
{
"name": "TokenBridge",
"isVerified": true,
"address": "eth:0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xF5058616517C068C7b8c7EbC69FF636Ade9066d6"
],
"implementations": [
"eth:0xF0e003F0dE2d583Ae28FA8cBF66aa096CdAce3ff"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1691067875,
"transactionHash": "0xbc08c4596eeee0a2e2527f03c0f2e85ec9e76e062b5f86eb435a67bca8f21122",
"implementations": [
"eth:0x6ccfD65b0b14F67259C77Ca6267104e058dDB292"
]
},
{
"timestamp": 1717588175,
"transactionHash": "0x497bdab1d3fb97eed72a55fc6e3672694195b08f949c2e0e84ea4b36428ee9c6",
"implementations": [
"eth:0xd52c09E67aF3BE0977B52b4817366e9BaB5dCFA2"
]
},
{
"timestamp": 1734357131,
"transactionHash": "0x96b88112de2e594cb763bc625cc2dcb6920825bb642eb1a62ff577f0c29f616d",
"implementations": [
"eth:0x2B6A2F8880220a66DfB9059FCB76F7dB54104a34"
]
},
{
"timestamp": 1774970807,
"transactionHash": "0x2956910285297bc330ad8b1e31f6dd7866e58c26164fe126f09a44df6a65ce9b",
"implementations": [
"eth:0xF0e003F0dE2d583Ae28FA8cBF66aa096CdAce3ff"
]
}
],
"description": "Contract used to bridge and escrow ERC-20 tokens.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Linea Security Council\n * **allPausers**: EOA 1, Linea Security Council\n * **allUnpausers**: Linea Security Council\n * **completeTokenBridgingPausers**: Linea Security Council\n * **completeTokenBridgingUnpausers**: Linea Security Council\n * **customContractSetters**: Linea Multisig 2, Linea Security Council; ultimately Linea Security Council\n * **defaultAdmin**: Linea Security Council\n * **initiateTokenBridgingPausers**: Linea Security Council\n * **initiateTokenBridgingUnpausers**: Linea Security Council\n * **messageServiceSetters**: Linea Security Council\n * **reserveTokenRemovers**: Linea Multisig 2, Linea Security Council; ultimately Linea Security Council\n * **reserveTokenSetters**: Linea Multisig 2, Linea Security Council; ultimately Linea Security Council",
"upgradableBy": [
{
"name": "Linea Security Council",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319#code"
},
{
"name": "PlonkVerifierFull",
"isVerified": true,
"address": "eth:0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77",
"address": "eth:0x1d930e3Fac9fbc7026eC17962d2F57d558d37532",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77#code"
"url": "https://etherscan.io/address/0x1d930e3Fac9fbc7026eC17962d2F57d558d37532#code"
},
{
"name": "BridgedToken",
"isVerified": true,
"address": "eth:0x36f274C1C197F277EA3C57859729398FCc8a3763",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Standard implementation used for assets that are native to the other layer and are bridged to this layer.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x36f274C1C197F277EA3C57859729398FCc8a3763#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x41fAD3Df1B07B647D120D055259E474fE8046eb5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Linea Security Council",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x41fAD3Df1B07B647D120D055259E474fE8046eb5#code"
},
{
"name": "LidoStVaultYieldProvider",
"isVerified": true,
"address": "eth:0x486D8cADc10489B30b64c890aEc747F1220eEEC3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Yield provider adaptor, delegatecalled by the YieldManager, that deploys rollup ETH into a Lido V3 staking vault (stVault) and its beacon chain validators. Withdrawals back to the reserve are requested via EIP-7002 partial validator withdrawals, so refilling the reserve is subject to beacon chain latency; while the reserve is in deficit anyone can trigger them with a validator proof.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x486D8cADc10489B30b64c890aEc747F1220eEEC3#code"
},
{
"name": "L1USDCBridge",
"isVerified": true,
"address": "eth:0x504A330327A089d8364C4ab3811Ee26976d388ce",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x41fAD3Df1B07B647D120D055259E474fE8046eb5"
],
"implementations": [
"eth:0x66CFD1562d6Aa4629e9e4142662c1A403528Df00"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1691086271,
"transactionHash": "0xa93648a8d01d65bea363bc2f6e19897e42f9af999370c07cb2a0ea6a5401b6b0",
"implementations": [
"eth:0x16Db542C30fB3519D11CF8F632077c62c1a944fd"
]
},
{
"timestamp": 1693599947,
"transactionHash": "0xe752ce539119fc11af6239e8b26a79d80c9e84cec19ac6aca060f466853f5b7d",
"implementations": [
"eth:0x0eC393209674090368C592A591B25811e490BF36"
]
},
{
"timestamp": 1742155031,
"transactionHash": "0xd61b29009aa7f628ff1b04138e30ebd39805e40a2e3e4a3e43050fd8b0f75548",
"implementations": [
"eth:0x66CFD1562d6Aa4629e9e4142662c1A403528Df00"
]
}
],
"description": "L1 side of the old and now unused USDC bridge.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Linea Security Council",
"upgradableBy": [
{
"name": "Linea Security Council",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x504A330327A089d8364C4ab3811Ee26976d388ce#code"
},
{
"name": "AddressFilter",
"isVerified": true,
"address": "eth:0x526AE78F0103Ae73F05449ae30eb626C1003784E",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Blocklist consulted by the LineaRollup forced-transaction path: an address on this list cannot force-include transactions from L1, so the contract gates the escape hatch.\n* Roles:\n * **defaultAdmin**: EOA 4",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x526AE78F0103Ae73F05449ae30eb626C1003784E#code"
},
{
"name": "Delay",
"isVerified": true,
"address": "eth:0x784CCeE002E259Fc38C4b36C2D8bd8a457e55436",
"upgradeability": {
"proxyType": "gnosis safe zodiac module",
"admins": [],
"implementations": [],
"immutable": false
},
"chain": "ethereum",
"description": "A simple Safe module for that can queue and execute transactions as Linea Multisig 2 after a delay of currently 3mo, if registered as a module there.\n* Roles:\n * **owner**: Linea Multisig 2; ultimately Linea Security Council\n * **zodiacModule_modules**: Linea Security Council",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x784CCeE002E259Fc38C4b36C2D8bd8a457e55436#code"
},
{
"name": "UpgradeableBeacon",
"isVerified": true,
"address": "eth:0x971f46a2852d11D59dbF0909e837cfd06f357DeB",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A beacon with an upgradeable implementation currently set as BridgedToken. Beacon proxy contracts pointing to this beacon will all use its implementation.\n* Roles:\n * **owner**: Linea Security Council",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x971f46a2852d11D59dbF0909e837cfd06f357DeB#code"
},
{
"name": "PlonkVerifierFull",
"isVerified": true,
"address": "eth:0xAFF26999780901ee8B48f0a1271a177ff46fD53F",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xAFF26999780901ee8B48f0a1271a177ff46fD53F#code"
},
{
"name": "LineaRollup",
"isVerified": true,
"address": "eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xF5058616517C068C7b8c7EbC69FF636Ade9066d6"
],
"implementations": [
"eth:0x052b73d934E9412045Bf731574463Fd026D74645"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1689159923,
"transactionHash": "0x3564f15a274bdc49a6ad8af161113d20a678d87efbd3d708540a9b4d026f1122",
"implementations": [
"eth:0xE8f627df6Cb02e415b2e6d6e112323BD269b4706"
]
},
{
"timestamp": 1689166667,
"transactionHash": "0x8ee4253600d68665e8d52a522d8ba7136639187b87f8079b881de9e6d1f20d2a",
"implementations": [
"eth:0xE8f627df6Cb02e415b2e6d6e112323BD269b4706"
]
},
{
"timestamp": 1689427883,
"transactionHash": "0x628efc29f5b2267f23cf613720003fafe671ee47db60b4f6610f5ae1ab838555",
"implementations": [
"eth:0x4c8d4Ce72afAA417d1F7E833725FdB4E793cd6b3"
]
},
{
"timestamp": 1691513927,
"transactionHash": "0xdff29a7f65b6bec4e8288673a5ca55e12081b4d55879e600817484f28c5a80b1",
"implementations": [
"eth:0xb32c3D0dDb0063FfB15E8a50b40cC62230D820B3"
]
},
{
"timestamp": 1707813599,
"transactionHash": "0xb4ed5b2646e45744945a4fc51da0e5e687ffe26f570b7aa3abb7b1fd4a460ea4",
"implementations": [
"eth:0xAA4b3a9515c921996Abe7930bF75Eff7466a4457"
]
},
{
"timestamp": 1711448987,
"transactionHash": "0x565c77e109aac4df41d81457bdfbdd17782d8bca9a1330c68a271c64f35d05e5",
"implementations": [
"eth:0x934Dd4C63E285551CEceF8459103554D0096c179"
]
},
{
"timestamp": 1717588175,
"transactionHash": "0x497bdab1d3fb97eed72a55fc6e3672694195b08f949c2e0e84ea4b36428ee9c6",
"implementations": [
"eth:0x53fC68bFfC03D17804e5A901DE42d1eeF2e64562"
]
},
{
"timestamp": 1730216147,
"transactionHash": "0x0970f422c80627f28916f9c5583ff6298070893debd191ead0cf39778e4bae14",
"implementations": [
"eth:0x1825242411792536469Cbb5843fd27Ce3e9e583A"
]
},
{
"timestamp": 1734357131,
"transactionHash": "0x96b88112de2e594cb763bc625cc2dcb6920825bb642eb1a62ff577f0c29f616d",
"implementations": [
"eth:0x07ddce60658A61dc1732Cacf2220FcE4A01C49B0"
]
},
{
"timestamp": 1772375135,
"transactionHash": "0xac24732952f9eea514ba28030218267575bb42dd5f713dab7c29f3d330086d8f",
"implementations": [
"eth:0x04728BF704a716C26F9EF4085013b760AC885631"
]
},
{
"timestamp": 1774970807,
"transactionHash": "0x2956910285297bc330ad8b1e31f6dd7866e58c26164fe126f09a44df6a65ce9b",
"implementations": [
"eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332"
]
},
{
"timestamp": 1784201579,
"transactionHash": "0x4bcfe7ea1724555288f7cf4d7a0de608182483a41d670e3027b89c3e989240c9",
"implementations": [
"eth:0x59290394dDC1cF84e671701A929710643c343530"
]
},
{
"timestamp": 1788253667,
"transactionHash": "0x0e551aff381b8c6c4c73eafddb326906ac0d3599295444324cee8b988aaa6a6a",
"implementations": [
"eth:0x052b73d934E9412045Bf731574463Fd026D74645"
]
}
],
"description": "The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Linea Security Council\n * **defaultAdmin**: Linea Security Council\n * **ethStaker**: EOA 5, Linea Security Council\n * **livenessRecoveryOperator**: CallForwardingProxy\n * **operators**: EOA 2, EOA 3\n * **pauseAll**: EOA 1, Linea Security Council\n * **securityCouncil**: Linea Security Council\n * **yieldManagerSetter**: Linea Security Council",
"upgradableBy": [
{
"name": "Linea Security Council",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xd19d4B5d358258f05D7B411E21A1460D11B0876F#code"
},
{
"name": "Timelock",
"isVerified": true,
"address": "eth:0xd6B95c960779c72B8C6752119849318E5d550574",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A standard timelock with access control. The current minimum delay is 0s.\n* Roles:\n * **canceller**: Linea Security Council\n * **executor**: Linea Security Council\n * **proposer**: Linea Multisig 2, Linea Security Council; ultimately Linea Security Council\n * **timelockAdmin**: Timelock; ultimately Linea Security Council",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xd6B95c960779c72B8C6752119849318E5d550574#code"
},
{
"name": "YieldManager",
"isVerified": true,
"address": "eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xF5058616517C068C7b8c7EbC69FF636Ade9066d6"
],
"implementations": [
"eth:0x751236A1aFC11B7F1A7630fe87b0Bd96AC5203C4"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1770742511,
"transactionHash": "0x69fb4be68a461b7953579236e33e62f1463ebf0e02e397221a35c16dadecd77a",
"implementations": [
"eth:0x751236A1aFC11B7F1A7630fe87b0Bd96AC5203C4"
]
}
],
"description": "Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Linea Security Council\n * **yieldStakingManager**: Linea Security Council\n * **yieldStakingOperator**: EOA 5, Linea Security Council",
"upgradableBy": [
{
"name": "Linea Security Council",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0xF5058616517C068C7b8c7EbC69FF636Ade9066d6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "* Roles:\n * **owner**: Timelock",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF5058616517C068C7b8c7EbC69FF636Ade9066d6#code"
}
],
"linea": [
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "linea:0x1E1f6F22f97b4a7522D8B62e983953639239774E",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "linea",
"description": "* Roles:\n * **owner**: L2Timelock",
"discoveryDrivenData": true,
"url": "https://lineascan.build/address/0x1E1f6F22f97b4a7522D8B62e983953639239774E#code"
},
{
"name": "TokenBridge",
"isVerified": true,
"address": "linea:0x353012dc4a9A6cF55c941bADC267f82004A8ceB9",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"linea:0x1E1f6F22f97b4a7522D8B62e983953639239774E"
],
"implementations": [
"linea:0x4a496167F187A97379e763f693A499cE1182848b"
]
},
"chain": "linea",
"pastUpgrades": [
{
"timestamp": 1691068282,
"transactionHash": "0x74e2ded3ed8dd2fd39692b053ede573c6d8205a2dcdb29a201d6320006f81404",
"implementations": [
"linea:0x2bfdf4a0d54C93a4bAF74F8DcEA8a275D8EE97a9"
]
},
{
"timestamp": 1717588517,
"transactionHash": "0x679e1f421ff3d583b75adc32bda76d9408688e9fd6897bc499baaee547711f13",
"implementations": [
"linea:0x0fFCBe98041B77BD87C38e2d0a6b473e7703444E"
]
},
{
"timestamp": 1734357983,
"transactionHash": "0xbb31a92afc2c725d0b10aaf96829db7a553041d0be10ca840d2fb82ef77119e7",
"implementations": [
"linea:0xD90ed3D4f9d11262d3D346a4369058d5B3777137"
]
},
{
"timestamp": 1774970935,
"transactionHash": "0xee1773eabf52589c20884aceed118949ea8e03afc7bfd1df008206d2d69e1b01",
"implementations": [
"linea:0x4a496167F187A97379e763f693A499cE1182848b"
]
}
],
"description": "Contract used to bridge and escrow ERC-20 tokens.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Linea Multisig 3\n * **allPausers**: EOA 6, Linea Multisig 3\n * **allUnpausers**: Linea Multisig 3\n * **completeTokenBridgingPausers**: Linea Multisig 3\n * **completeTokenBridgingUnpausers**: Linea Multisig 3\n * **customContractSetters**: Linea Multisig 3, Linea Multisig 4\n * **defaultAdmin**: Linea Multisig 3\n * **initiateTokenBridgingPausers**: Linea Multisig 3\n * **initiateTokenBridgingUnpausers**: Linea Multisig 3\n * **messageServiceSetters**: Linea Multisig 3\n * **reserveTokenRemovers**: Linea Multisig 3, Linea Multisig 4\n * **reserveTokenSetters**: Linea Multisig 3, Linea Multisig 4",
"upgradableBy": [
{
"name": "Linea Multisig 3",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://lineascan.build/address/0x353012dc4a9A6cF55c941bADC267f82004A8ceB9#code"
},
{
"name": "L2MessageService",
"isVerified": true,
"address": "linea:0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"linea:0x1E1f6F22f97b4a7522D8B62e983953639239774E"
],
"implementations": [
"linea:0x9976fD7edDb78156a002DE74c9158E884702273d"
]
},
"chain": "linea",
"pastUpgrades": [
{
"timestamp": 1688650665,
"transactionHash": "0xed74f383b9adf7473d3acd918f80cfdd9e971e861e08c82da880b0b6c3e7d5da",
"implementations": [
"linea:0x369DB650D875938252682532eA9E4Af267a7d126"
]
},
{
"timestamp": 1689173298,
"transactionHash": "0x0c07ca13444501284e8935d6cc93cde21ab6a45c6d442aae2681fe01e4106b8d",
"implementations": [
"linea:0x49B620cC5DaD8254253ADf9f769262fF15C79e8c"
]
},
{
"timestamp": 1689428479,
"transactionHash": "0x58e2af8033120299d32c2c561cb236a386565e981a14626d1b96a7d592564b66",
"implementations": [
"linea:0x89e70E2AAAD2021cEa50b1eb235B7Fe97625147d"
]
},
{
"timestamp": 1707813305,
"transactionHash": "0xcc8a117438895921a7768cef24fd55a179538956fe8e3dfdbf44181ae2eb4151",
"implementations": [
"linea:0x2c4F0ed41E356E289b5b479684006427Ec3589af"
]
},
{
"timestamp": 1711449417,
"transactionHash": "0xb50f4883ceaaecaa5c3864e17e0cedcdfbf13a8d49e2e318dbde814d7dbe1459",
"implementations": [
"linea:0x9899f25BDD0785B2b47c1Bd29711D88406c3b54D"
]
},
{
"timestamp": 1734357983,
"transactionHash": "0xbb31a92afc2c725d0b10aaf96829db7a553041d0be10ca840d2fb82ef77119e7",
"implementations": [
"linea:0x05d43713B7E333d2D54be65cE3b5F3698aB960Fd"
]
},
{
"timestamp": 1774970935,
"transactionHash": "0xee1773eabf52589c20884aceed118949ea8e03afc7bfd1df008206d2d69e1b01",
"implementations": [
"linea:0x9976fD7edDb78156a002DE74c9158E884702273d"
]
}
],
"description": "* Roles:\n * **admin**: ProxyAdmin; ultimately Linea Multisig 3\n * **l1l2MessageSetter**: EOA 7",
"upgradableBy": [
{
"name": "Linea Multisig 3",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://lineascan.build/address/0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec#code"
},
{
"name": "L2USDCBridge",
"isVerified": true,
"address": "linea:0xA2Ee6Fce4ACB62D95448729cDb781e3BEb62504A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"linea:0xcB04d0AD0D3ceA5aEc1B480957Ddb20CA47EA30c"
],
"implementations": [
"linea:0x1998108fA7993EA67a8B1a99d392a3288C5a5521"
]
},
"chain": "linea",
"pastUpgrades": [
{
"timestamp": 1691086556,
"transactionHash": "0xb50a7330132542dc795312528f39e57822236eb7d35cfcaf2616e091c378705e",
"implementations": [
"linea:0x71E4dB49008C7D7648597E8D24A8E2fD1D220B81"
]
},
{
"timestamp": 1693600112,
"transactionHash": "0xdcd89930e7456d8d80313aa109e5ab95d2455354e39e56d1ae0432f2579339d0",
"implementations": [
"linea:0x6D967F862d8c5D9E230a976AB2063eD1d4D7A43c"
]
},
{
"timestamp": 1742047419,
"transactionHash": "0xdf59afa26b1f9768cf98f2f59a55a175faa5e911501d2043e6564340d0841140",
"implementations": [
"linea:0x1998108fA7993EA67a8B1a99d392a3288C5a5521"
]
}
],
"description": "L2 side of the old and now unused USDC bridge.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Linea Multisig 3",
"upgradableBy": [
{
"name": "Linea Multisig 3",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://lineascan.build/address/0xA2Ee6Fce4ACB62D95448729cDb781e3BEb62504A#code"
},
{
"name": "L2Timelock",
"isVerified": true,
"address": "linea:0xc808BfCBeD34D90fa9579CAa664e67B9A03C56ca",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "linea",
"description": "A standard timelock with access control. The current minimum delay is 0s.\n* Roles:\n * **canceller**: Linea Multisig 3\n * **executor**: Linea Multisig 3\n * **proposer**: Linea Multisig 3, Linea Multisig 4\n * **timelockAdmin**: L2Timelock; ultimately Linea Multisig 3",
"discoveryDrivenData": true,
"url": "https://lineascan.build/address/0xc808BfCBeD34D90fa9579CAa664e67B9A03C56ca#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "linea:0xcB04d0AD0D3ceA5aEc1B480957Ddb20CA47EA30c",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "linea",
"description": "* Roles:\n * **owner**: Linea Multisig 3",
"discoveryDrivenData": true,
"url": "https://lineascan.build/address/0xcB04d0AD0D3ceA5aEc1B480957Ddb20CA47EA30c#code"
},
{
"name": "LineaVoyageXP",
"isVerified": true,
"address": "linea:0xd83af4fbD77f3AB65C3B1Dc4B38D7e67AEcf599A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "linea",
"description": "Voyage XP tokens are non-transferrable, soulbound tokens that are distributed to recognize the community’s contribution toward the growth of the Linea ecosystem.\n",
"discoveryDrivenData": true,
"url": "https://lineascan.build/address/0xd83af4fbD77f3AB65C3B1Dc4B38D7e67AEcf599A#code"
},
{
"name": "BridgedToken",
"isVerified": true,
"address": "linea:0xda8AEFCf0F9B0b81915a2C124f913e58212D49dF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "linea",
"description": "Standard implementation used for assets that are native to the other layer and are bridged to this layer.\n",
"discoveryDrivenData": true,
"url": "https://lineascan.build/address/0xda8AEFCf0F9B0b81915a2C124f913e58212D49dF#code"
},
{
"name": "UpgradeableBeacon",
"isVerified": true,
"address": "linea:0xE798695d2e78f7caeb5BbF3385433959324c02c0",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "linea",
"description": "A beacon with an upgradeable implementation currently set as BridgedToken. Beacon proxy contracts pointing to this beacon will all use its implementation.\n* Roles:\n * **owner**: Linea Multisig 3",
"discoveryDrivenData": true,
"url": "https://lineascan.build/address/0xE798695d2e78f7caeb5BbF3385433959324c02c0#code"
}
]
},
"escrows": [
{
"address": "0xd19d4B5d358258f05D7B411E21A1460D11B0876F",
"sinceTimestamp": 1689159923,
"tokens": [
"ETH"
],
"contract": {
"isVerified": true,
"address": "eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xF5058616517C068C7b8c7EbC69FF636Ade9066d6"
],
"implementations": [
"eth:0x052b73d934E9412045Bf731574463Fd026D74645"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1689159923,
"transactionHash": "0x3564f15a274bdc49a6ad8af161113d20a678d87efbd3d708540a9b4d026f1122",
"implementations": [
"eth:0xE8f627df6Cb02e415b2e6d6e112323BD269b4706"
]
},
{
"timestamp": 1689166667,
"transactionHash": "0x8ee4253600d68665e8d52a522d8ba7136639187b87f8079b881de9e6d1f20d2a",
"implementations": [
"eth:0xE8f627df6Cb02e415b2e6d6e112323BD269b4706"
]
},
{
"timestamp": 1689427883,
"transactionHash": "0x628efc29f5b2267f23cf613720003fafe671ee47db60b4f6610f5ae1ab838555",
"implementations": [
"eth:0x4c8d4Ce72afAA417d1F7E833725FdB4E793cd6b3"
]
},
{
"timestamp": 1691513927,
"transactionHash": "0xdff29a7f65b6bec4e8288673a5ca55e12081b4d55879e600817484f28c5a80b1",
"implementations": [
"eth:0xb32c3D0dDb0063FfB15E8a50b40cC62230D820B3"
]
},
{
"timestamp": 1707813599,
"transactionHash": "0xb4ed5b2646e45744945a4fc51da0e5e687ffe26f570b7aa3abb7b1fd4a460ea4",
"implementations": [
"eth:0xAA4b3a9515c921996Abe7930bF75Eff7466a4457"
]
},
{
"timestamp": 1711448987,
"transactionHash": "0x565c77e109aac4df41d81457bdfbdd17782d8bca9a1330c68a271c64f35d05e5",
"implementations": [
"eth:0x934Dd4C63E285551CEceF8459103554D0096c179"
]
},
{
"timestamp": 1717588175,
"transactionHash": "0x497bdab1d3fb97eed72a55fc6e3672694195b08f949c2e0e84ea4b36428ee9c6",
"implementations": [
"eth:0x53fC68bFfC03D17804e5A901DE42d1eeF2e64562"
]
},
{
"timestamp": 1730216147,
"transactionHash": "0x0970f422c80627f28916f9c5583ff6298070893debd191ead0cf39778e4bae14",
"implementations": [
"eth:0x1825242411792536469Cbb5843fd27Ce3e9e583A"
]
},
{
"timestamp": 1734357131,
"transactionHash": "0x96b88112de2e594cb763bc625cc2dcb6920825bb642eb1a62ff577f0c29f616d",
"implementations": [
"eth:0x07ddce60658A61dc1732Cacf2220FcE4A01C49B0"
]
},
{
"timestamp": 1772375135,
"transactionHash": "0xac24732952f9eea514ba28030218267575bb42dd5f713dab7c29f3d330086d8f",
"implementations": [
"eth:0x04728BF704a716C26F9EF4085013b760AC885631"
]
},
{
"timestamp": 1774970807,
"transactionHash": "0x2956910285297bc330ad8b1e31f6dd7866e58c26164fe126f09a44df6a65ce9b",
"implementations": [
"eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332"
]
},
{
"timestamp": 1784201579,
"transactionHash": "0x4bcfe7ea1724555288f7cf4d7a0de608182483a41d670e3027b89c3e989240c9",
"implementations": [
"eth:0x59290394dDC1cF84e671701A929710643c343530"
]
},
{
"timestamp": 1788253667,
"transactionHash": "0x0e551aff381b8c6c4c73eafddb326906ac0d3599295444324cee8b988aaa6a6a",
"implementations": [
"eth:0x052b73d934E9412045Bf731574463Fd026D74645"
]
}
],
"url": "https://etherscan.io/address/0xd19d4B5d358258f05D7B411E21A1460D11B0876F#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
},
{
"address": "0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319",
"sinceTimestamp": 1691060675,
"tokens": "*",
"excludedTokens": [
"rsETH"
],
"premintedTokens": [
"LINEA"
],
"contract": {
"isVerified": true,
"address": "eth:0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xF5058616517C068C7b8c7EbC69FF636Ade9066d6"
],
"implementations": [
"eth:0xF0e003F0dE2d583Ae28FA8cBF66aa096CdAce3ff"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1691067875,
"transactionHash": "0xbc08c4596eeee0a2e2527f03c0f2e85ec9e76e062b5f86eb435a67bca8f21122",
"implementations": [
"eth:0x6ccfD65b0b14F67259C77Ca6267104e058dDB292"
]
},
{
"timestamp": 1717588175,
"transactionHash": "0x497bdab1d3fb97eed72a55fc6e3672694195b08f949c2e0e84ea4b36428ee9c6",
"implementations": [
"eth:0xd52c09E67aF3BE0977B52b4817366e9BaB5dCFA2"
]
},
{
"timestamp": 1734357131,
"transactionHash": "0x96b88112de2e594cb763bc625cc2dcb6920825bb642eb1a62ff577f0c29f616d",
"implementations": [
"eth:0x2B6A2F8880220a66DfB9059FCB76F7dB54104a34"
]
},
{
"timestamp": 1774970807,
"transactionHash": "0x2956910285297bc330ad8b1e31f6dd7866e58c26164fe126f09a44df6a65ce9b",
"implementations": [
"eth:0xF0e003F0dE2d583Ae28FA8cBF66aa096CdAce3ff"
]
}
],
"url": "https://etherscan.io/address/0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is a 0s delay on code upgrades."
}
],
"zkVerifiers": [
"eth:0xAFF26999780901ee8B48f0a1271a177ff46fD53F",
"eth:0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77"
"eth:0x1d930e3Fac9fbc7026eC17962d2F57d558d37532"
]
}
+1 -1
{
"baseTimestamp": 1789919089,
"baseTimestamp": 1791455017,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "4cedd31d",
"date": "Thu, 08 Oct 2026 12:03:29 GMT",
"timestamp": 1791455017,
"description": "Upgraded Linea type 1 verifier, it is not yet reproduced from the sources.\n\nAlso, because of ETH withdrawals from Linea, withdraw reserves are below the limits. Staking stops and anyone can unstake some Lido-staked positions.",
"isHighSeverity": true,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierFull (eth:0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77) [N/A]\n +++ description: None\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) [linea/LineaRollup_ForcedTrx_v8_0] {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n+++ severity: HIGH\n values.verifiers.1:\n- \"eth:0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77\"\n+ \"eth:0x1d930e3Fac9fbc7026eC17962d2F57d558d37532\"\n }\n```\n\n```diff\n contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) [linea/YieldManager] {\n +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.\n+++ description: True when the LineaRollup ETH balance (the withdrawal reserve backing L2 exits) is below the effective minimum reserve. While true, no more ETH can be moved to the YieldManager or staked, and anyone can permissionlessly trigger unstaking from yield providers (with beacon chain proofs) and replenish the reserve up to the target. Refilling a deficit depends on beacon chain withdrawal latency.\n+++ severity: MEDIUM\n values.isWithdrawalReserveBelowMinimum:\n- false\n+ true\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierFull (eth:0x1d930e3Fac9fbc7026eC17962d2F57d558d37532) [N/A]\n +++ description: None\n```"
}
]
},
{
"id": "e20553c4",
"date": "Fri, 04 Sep 2026 14:04:49 GMT",
"timestamp": 1788530615,
"description": "ETH withdrawal reserve was topped-up, so withdrawal reserve is above minimum again.\n\nAlso, verifier 0 was upgraded. It is not yet reproduced from the sources.",
"isHighSeverity": true,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierFull (eth:0x218C3339ff3fea595c02Ac31Ca8A782f5028C4dc) [N/A]\n +++ description: None\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) [linea/LineaRollup_ForcedTrx_v8_0] {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.0:\n- \"eth:0x218C3339ff3fea595c02Ac31Ca8A782f5028C4dc\"\n+ \"eth:0xAFF26999780901ee8B48f0a1271a177ff46fD53F\"\n }\n```\n\n```diff\n contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) [linea/YieldManager] {\n +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.\n+++ description: True when the LineaRollup ETH balance (the withdrawal reserve backing L2 exits) is below the effective minimum reserve. While true, no more ETH can be moved to the YieldManager or staked, and anyone can permissionlessly trigger unstaking from yield providers (with beacon chain proofs) and replenish the reserve up to the target. Refilling a deficit depends on beacon chain withdrawal latency.\n+++ severity: HIGH\n values.isWithdrawalReserveBelowMinimum:\n- true\n+ false\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierFull (eth:0xAFF26999780901ee8B48f0a1271a177ff46fD53F) [N/A]\n +++ description: None\n```"
}
]
},
{
"id": "b97d39d5",
"date": "Thu, 03 Sep 2026 11:50:51 GMT",
"timestamp": 1788435170,
"description": "Withdrawal reserve (LineaRollup ETH balance) fell below the 17,500 ETH minimum after a bridge-relayer EOA claimed ~5,087 ETH in three L2->L1 messages on Sep 2, one day after 23,408 ETH was staked into the Lido vault down to the exact 20,000 ETH target. The operator paused staking and requested 5,091 ETH of partial validator withdrawals (EIP-7002) the same hour; the ETH is pending on the beacon chain and will be routed back to the rollup. While the flag is true, no new ETH can be staked and reserve replenishment / unstaking are permissionless.",
"isHighSeverity": true,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) [linea/YieldManager] {\n +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.\n+++ description: True when the LineaRollup ETH balance (the withdrawal reserve backing L2 exits) is below the effective minimum reserve. While true, no more ETH can be moved to the YieldManager or staked, and anyone can permissionlessly trigger unstaking from yield providers (with beacon chain proofs) and replenish the reserve up to the target. Refilling a deficit depends on beacon chain withdrawal latency.\n+++ severity: HIGH\n values.isWithdrawalReserveBelowMinimum:\n- false\n+ true\n }\n```"
}
]
},
{
"id": "97d70ccc",
"date": "Tue, 01 Sep 2026 12:50:55 GMT",
"timestamp": 1788264976,
"description": "Single line change (replace msg.sender) in the rollup: https://disco.l2beat.com/diff/eth:0x59290394dDC1cF84e671701A929710643c343530/eth:0x052b73d934E9412045Bf731574463Fd026D74645\n\nmin and target Reserve percentage ~halved in the yield manager.",
"isHighSeverity": true,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) [linea/LineaRollup_ForcedTrx_v8_0] {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n sourceHashes.1:\n- \"0xf3482110e327210ee9824abef6aa6fea72bf9a49a46187d08853a978c2210c65\"\n+ \"0x99448a403aaba56b396cab263fdccd1a13345cb737178fc7813f1a5bf8d927d5\"\n values.$implementation:\n- \"eth:0x59290394dDC1cF84e671701A929710643c343530\"\n+ \"eth:0x052b73d934E9412045Bf731574463Fd026D74645\"\n values.$pastUpgrades.12:\n+ [\"2026-09-01T09:07:47.000Z\",\"0x0e551aff381b8c6c4c73eafddb326906ac0d3599295444324cee8b988aaa6a6a\",[\"eth:0x052b73d934E9412045Bf731574463Fd026D74645\"]]\n values.$upgradeCount:\n- 12\n+ 13\n implementationNames.eth:0x59290394dDC1cF84e671701A929710643c343530:\n- \"LineaRollup\"\n implementationNames.eth:0x052b73d934E9412045Bf731574463Fd026D74645:\n+ \"LineaRollup\"\n }\n```\n\n```diff\n contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) [linea/YieldManager] {\n +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.\n+++ description: Value relative to TVS, part of the computation of minimal rollup ETH reserve.\n values.minimumWithdrawalReservePercentageBps:\n- 8500\n+ 3500\n+++ description: Value relative to TVS, part of the computation of target rollup ETH reserve.\n values.targetWithdrawalReservePercentageBps:\n- 9000\n+ 4000\n }\n```"
}
]
},
{
"id": "05cf3683",
"date": "Fri, 17 Jul 2026 10:59:45 GMT",
"timestamp": 1784278215,
"description": "Upgraded Linea rollup contract to v8.0, diff: https://disco.l2beat.com/diff/eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332/eth:0x59290394dDC1cF84e671701A929710643c343530.\n\nThe upgrade sets the stage for forced L1 transactions, however they are not live yet. `FORCED_TRANSACTION_SENDER_ROLE` can send a forced transaction, which defines L2 block number deadline by which the trx must be included, otherwise the rollup operation stops. `SET_ADDRESS_FILTER_ROLE` can set address filterer, addresses on this list are not allowed to force include trxs on L1 (OFAC compliance is cited). `FORCED_TRANSACTION_SENDER_ROLE` is not held by anyone yet, preventing from using forced transactions.\n\nMore precise code changes:\n- Forced trxs could now be added to the state of the rollup (`nextForcedTransactionNumber`, `forcedTransactionL2BlockNumbers`, `forcedTransactionRollingHashes`).\n- `storeForcedTransaction` adds a forced trx to the state, it could be called only by `FORCED_TRANSACTION_SENDER_ROLE`. It doesn't check whether the forced trx fee was paid, whether the `_blockNumberDeadline` is sufficiently in future or whether the sender address is not filtered. Probably these checks will be done in another contract with `FORCED_TRANSACTION_SENDER_ROLE` permissions.\n- In `_finalizeBlocks`, several checks are added, including whether all addresses filtered by the sequencer are registered in the filter, whether no forced trx has expired.\n\nAlso, removed L2Roles Linea ms module on L2.\n\nAlso, upgraded Linea verifier, not reproduced yet.",
"isHighSeverity": true,
"changeCount": 22,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierFull (eth:0x0D0f070386edC441A63fB8FAe8FB937Bbd88c5Cb) [N/A]\n +++ description: None\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) [linea/LineaRollup_ForcedTrx_v8_0] {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n template:\n- \"linea/LineaRollup_NativeYield_v7_1\"\n+ \"linea/LineaRollup_ForcedTrx_v8_0\"\n sourceHashes.1:\n- \"0x61e0da7291b49dc345bdfe09390ff5f67c0d1ad182602ba2b4c238eb023dda50\"\n+ \"0xf3482110e327210ee9824abef6aa6fea72bf9a49a46187d08853a978c2210c65\"\n values.$implementation:\n- \"eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332\"\n+ \"eth:0x59290394dDC1cF84e671701A929710643c343530\"\n values.$pastUpgrades.11:\n+ [\"2026-07-16T11:32:59.000Z\",\"0x4bcfe7ea1724555288f7cf4d7a0de608182483a41d670e3027b89c3e989240c9\",[\"eth:0x59290394dDC1cF84e671701A929710643c343530\"]]\n values.$upgradeCount:\n- 11\n+ 12\n values.CONTRACT_VERSION:\n- \"7.1\"\n+ \"8.0\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.1:\n- \"eth:0x0D0f070386edC441A63fB8FAe8FB937Bbd88c5Cb\"\n+ \"eth:0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77\"\n values.addressFilter:\n+ \"eth:0x526AE78F0103Ae73F05449ae30eb626C1003784E\"\n values.FORCED_TRANSACTION_FEE_SETTER_ROLE:\n+ \"0xdaafd36d8da81d5104d4fd21e3ccc58683c62ba08cd23875bcfbc0583a3f49dd\"\n values.FORCED_TRANSACTION_SENDER_ROLE:\n+ \"0xb63b70db607c764adad98a6745fc4efcea212ebc7b501d5753c57d675f377a66\"\n values.forcedTransactionFeeInWei:\n+ 1000000000000000\n values.getRequiredForcedTransactionFields:\n+ {\"finalizedState\":\"0x6af94bc910a5facbc347462f6b2bc840940b7c99ae3cb483742dfd2c74c9d60f\",\"previousForcedTransactionRollingHash\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"previousForcedTransactionBlockDeadline\":0,\"currentFinalizedL2BlockNumber\":31407522,\"forcedTransactionFeeAmount\":1000000000000000}\n values.SET_ADDRESS_FILTER_ROLE:\n+ \"0x012c76ef7f96cd7eb95acbdc250ad5696bbe3fd2fcf0207571939fa40c2e0167\"\n implementationNames.eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332:\n- \"LineaRollup\"\n implementationNames.eth:0x59290394dDC1cF84e671701A929710643c343530:\n+ \"LineaRollup\"\n }\n```\n\n```diff\n contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) [linea/YieldManager] {\n +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.\n+++ description: Value relative to TVS, part of the computation of minimal rollup ETH reserve.\n values.minimumWithdrawalReservePercentageBps:\n- 9000\n+ 8500\n+++ description: Value relative to TVS, part of the computation of target rollup ETH reserve.\n values.targetWithdrawalReservePercentageBps:\n- 9888\n+ 9000\n }\n```\n\n```diff\n- Status: DELETED\n contract L2Roles (linea:0x3886a948eA7b4053312c3aE31a13776144aA6239) [linea/L2Roles]\n +++ description: The Zodiac 'Roles' module for Safe multisigs allows defining roles that can call preconfigured targets on behalf of the Gnosis Safe.\n```\n\n```diff\n contract Linea Multisig 3 (linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD) [GnosisSafe] {\n +++ description: None\n values.GnosisSafe_modules.0:\n- \"linea:0x3886a948eA7b4053312c3aE31a13776144aA6239\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierFull (eth:0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract AddressFilter (eth:0x526AE78F0103Ae73F05449ae30eb626C1003784E) [linea/AddressFilter]\n +++ description: None\n```"
}
]
},
{
"id": "45d15938",
"date": "Mon, 04 May 2026 10:46:10 GMT",
"timestamp": 1777891456,
"description": "Upgraded Linea SC to Safe v1.4.1: https://github.com/safe-fndn/safe-smart-account/blob/release/v1.4.1/contracts/Safe.sol, upgraded Linea Multisig 3 to SafeL2 v1.4.1: https://github.com/safe-fndn/safe-smart-account/blob/release/v1.4.1/contracts/SafeL2.sol.\n\nAdjusted `targetWithdrawalReservePercentageBps` yield parameter, reduced the total amount of ether that can leave L2MessageService on Linea L2 per day.",
"isHighSeverity": true,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Linea Security Council (eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3) {\n +++ description: None\n sourceHashes.1:\n- \"0xd42bbf9f7dcd3720a7fc6bdc6edfdfae8800a37d6dd4decfa0ef6ca4a2e88940\"\n+ \"0x7d388119a66f3eae147d748f86136f073d907d6b36f7e87e9363c4c7a2899a8a\"\n values.$implementation:\n- \"eth:0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552\"\n+ \"eth:0x41675C099F32341bf84BFc5382aF534df5C7461a\"\n values.$members.1:\n- \"eth:0x497515578b0BE54d2f0f32cF3F08B85Bf8cEB6aB\"\n+ \"eth:0xD6481cC92eD746EbC679788654723Ce49D45EbeA\"\n values.$members.7:\n- \"eth:0x99234cd9B532F30538ac797D33c212e3B69Fd087\"\n+ \"eth:0x0F4df4939a6B126a088A40B4Bbf9F30337ACBFE4\"\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```\n\n```diff\n contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) {\n +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.\n+++ description: Value relative to TVS, part of the computation of target rollup ETH reserve.\n values.targetWithdrawalReservePercentageBps:\n- 9980\n+ 9888\n }\n```\n\n```diff\n contract L2MessageService (linea:0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec) {\n +++ description: None\n+++ description: The cap on the total amount of ether that can leave the contract via L1 -> L2 message claims per period given by periodInSeconds.\n values.limitInWei:\n- \"24000000000000000000000\"\n+ \"8000000000000000000000\"\n }\n```\n\n```diff\n contract Linea Multisig 3 (linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD) {\n +++ description: None\n sourceHashes.1:\n- \"0x59fe14e95a8aa7f52213f18bae5c9329cf583a7ba31194698b15eddb97d5e825\"\n+ \"0x618c83d2fbbe19fd6f2d6ee6ee79a60e6206e48bf361eaf4812e1c1fc14b4527\"\n values.$implementation:\n- \"linea:0x3E5c63644E683549055b9Be8653de26E0B4CD36E\"\n+ \"linea:0x29fcB43b46531BcA003ddC8FCB67FFE91900C762\"\n values.$members.2:\n- \"linea:0x497515578b0BE54d2f0f32cF3F08B85Bf8cEB6aB\"\n+ \"linea:0xD6481cC92eD746EbC679788654723Ce49D45EbeA\"\n values.$members.8:\n- \"linea:0x99234cd9B532F30538ac797D33c212e3B69Fd087\"\n+ \"linea:0x0F4df4939a6B126a088A40B4Bbf9F30337ACBFE4\"\n values.VERSION:\n- \"1.3.0\"\n+ \"1.4.1\"\n implementationNames.linea:0x3E5c63644E683549055b9Be8653de26E0B4CD36E:\n- \"GnosisSafeL2\"\n implementationNames.linea:0x29fcB43b46531BcA003ddC8FCB67FFE91900C762:\n+ \"SafeL2\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0xD6481cC92eD746EbC679788654723Ce49D45EbeA)\n +++ description: None\n```"
}
]
},
{
"id": "a3b27464",
"date": "Wed, 22 Apr 2026 11:31:09 GMT",
"timestamp": 1776857404,
"description": "Prover upgraded to the new version. I have regenerated it from the sources.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierMainnetFull (eth:0xC83ed08E2262fBa264D528C749c051f8fC526897)\n +++ description: None\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n+++ description: The cap on the total amount of ether that can leave rollup contract via L2 -> L1 message claims per period given by periodInSeconds.\n values.limitInWei:\n- \"30000000000000000000000\"\n+ \"10000000000000000000000\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.0:\n- \"eth:0xC83ed08E2262fBa264D528C749c051f8fC526897\"\n+ \"eth:0x218C3339ff3fea595c02Ac31Ca8A782f5028C4dc\"\n }\n```\n\n```diff\n contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) {\n +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.\n+++ description: Value relative to TVS, part of the computation of target rollup ETH reserve.\n values.targetWithdrawalReservePercentageBps:\n- 9985\n+ 9980\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierFull (eth:0x218C3339ff3fea595c02Ac31Ca8A782f5028C4dc)\n +++ description: None\n```"
}
]
},
{
"id": "1e00a7f6",
"date": "Mon, 20 Apr 2026 14:15:07 GMT",
"timestamp": 1776683677,
"description": "Added Lido yield provider for Linea native yield. Currently there is total of 1 ETH (exactly) deployed via Lido Yield Provider, the contracts are fully ready for wider usage of the yield feature.",
"isHighSeverity": true,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94) {\n +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.\n values.yieldProviderByIndex.0:\n+ \"eth:0x486D8cADc10489B30b64c890aEc747F1220eEEC3\"\n+++ severity: HIGH\n values.yieldProviderCount:\n- 0\n+ 1\n }\n```\n\n```diff\n+ Status: CREATED\n contract LidoStVaultYieldProvider (eth:0x486D8cADc10489B30b64c890aEc747F1220eEEC3)\n +++ description: None\n```"
}
]
},
{
"id": "85c95a19",
"date": "Tue, 07 Apr 2026 11:27:14 GMT",
"timestamp": 1775561168,
"description": "Updated Type 1 verifier to a new version. Chain config is the same as the previous verifier.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierFull (eth:0x1442833180e253844897339aFb5800c797547987)\n +++ description: None\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.1:\n- \"eth:0x1442833180e253844897339aFb5800c797547987\"\n+ \"eth:0x0D0f070386edC441A63fB8FAe8FB937Bbd88c5Cb\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierFull (eth:0x0D0f070386edC441A63fB8FAe8FB937Bbd88c5Cb)\n +++ description: None\n```"
}
]
},
{
"id": "4f07d08b",
"date": "Thu, 02 Apr 2026 11:09:54 GMT",
"timestamp": 1775037483,
"description": "Upgraded Rollup contract: https://disco.l2beat.com/diff/eth:0x04728BF704a716C26F9EF4085013b760AC885631/eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332. Changes:\n\n- SC can pause indefinitely now, other entities for 48 hours with a 48 hour cooldown afterwards.\n- Refactored Fallback Operator to Liveness Recovery Operator address that gets OPERATOR_ROLE after 6 months of non-finalization.\n- Refactored querying shnarf (blob commitment) existence into a separate interface.\n- Added chain configuration to verifier smart contract.\n- Refactored transient storage and calling keccak.\n\nAlso upgraded TokenBridge contract (on L1 and L2): https://disco.l2beat.com/diff/eth:0x2B6A2F8880220a66DfB9059FCB76F7dB54104a34/eth:0xF0e003F0dE2d583Ae28FA8cBF66aa096CdAce3ff and L2MessageService on L2 (https://disco.l2beat.com/diff/linea:0x05d43713B7E333d2D54be65cE3b5F3698aB960Fd/linea:0x9976fD7edDb78156a002DE74c9158E884702273d) They have similar changes:\n\n- SC can pause indefinitely now, other entities for 48 hours with a 48 hour cooldown afterwards.\n- Refactored transient storage and calling keccak.",
"isHighSeverity": true,
"changeCount": 166,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract TokenBridge (eth:0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319) {\n +++ description: Contract used to bridge and escrow ERC-20 tokens.\n template:\n- \"linea/L1TokenBridge\"\n+ \"linea/L1TokenBridge_v1_1\"\n sourceHashes.1:\n- \"0x49bdbe79d2cc9cefee03245e4b48260f4a71e7976af51741005758e7236d687d\"\n+ \"0x9ef484e431e7c68a8c882205b5bfa7b266f67c9c5423cf7ac480938a86c78c23\"\n values.$implementation:\n- \"eth:0x2B6A2F8880220a66DfB9059FCB76F7dB54104a34\"\n+ \"eth:0xF0e003F0dE2d583Ae28FA8cBF66aa096CdAce3ff\"\n values.$pastUpgrades.3:\n+ [\"2026-03-31T15:26:47.000Z\",\"0x2956910285297bc330ad8b1e31f6dd7866e58c26164fe126f09a44df6a65ce9b\",[\"eth:0xF0e003F0dE2d583Ae28FA8cBF66aa096CdAce3ff\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.accessControl.PAUSE_ALL_ROLE.members.1:\n+ \"eth:0x2532bfdc9Ba58B13358A9C5C05136d6938Bc42d0\"\n values.accessControl.SET_REMOTE_TOKENBRIDGE_ROLE:\n- {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.0xbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b24:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.SECURITY_COUNCIL_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.allPausers.1:\n+ \"eth:0x2532bfdc9Ba58B13358A9C5C05136d6938Bc42d0\"\n values.CONTRACT_VERSION:\n- \"1.0\"\n+ \"1.1\"\n values.isPaused_BLOB_SUBMISSION:\n- false\n values.isPaused_CALLDATA_SUBMISSION:\n- false\n values.remoteTokenBridgeSetters:\n- [\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]\n values.SET_REMOTE_TOKENBRIDGE_ROLE:\n- \"0xbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b24\"\n values.COOLDOWN_DURATION:\n+ 172800\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_PERMISSIONLESS_ACTIONS:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_REPORTING:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_STAKING:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_UNSTAKING:\n+ false\n+++ severity: HIGH\n values.isPaused_STATE_DATA_SUBMISSION:\n+ false\n+++ description: Timestamp until which non security council entities can't pause the rollup.\n+++ severity: HIGH\n values.nonSecurityCouncilCooldownEnd:\n+ 0\n values.PAUSE_DURATION:\n+ 172800\n values.SECURITY_COUNCIL_ROLE:\n+ \"0x1453a531db80c85f2d944d498709d84959bc5bf839eefe9acb784571e5a32118\"\n errors:\n- {\"@template\":\"Processing error occurred.\"}\n fieldMeta.isPaused_BLOB_SUBMISSION:\n- {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_CALLDATA_SUBMISSION:\n- {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_STAKING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_UNSTAKING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_PERMISSIONLESS_ACTIONS:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_REPORTING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_STATE_DATA_SUBMISSION:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.nonSecurityCouncilCooldownEnd:\n+ {\"severity\":\"HIGH\",\"description\":\"Timestamp until which non security council entities can't pause the rollup.\"}\n implementationNames.eth:0x2B6A2F8880220a66DfB9059FCB76F7dB54104a34:\n- \"TokenBridge\"\n implementationNames.eth:0xF0e003F0dE2d583Ae28FA8cBF66aa096CdAce3ff:\n+ \"TokenBridge\"\n }\n```\n\n```diff\n contract CallForwardingProxy (eth:0x3697bD0bC6C050135b8321F989a5316eACbF367D) {\n +++ description: A public proxy contract forwarding calls to a predefined target contract (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F). Can be called by any address.\n receivedPermissions.0.role:\n- \".fallbackOperator\"\n+ \".livenessRecoveryOperator\"\n }\n```\n\n```diff\n- Status: DELETED\n contract PlonkVerifierMainnetFull (eth:0x66355689a9f067eeb9dc9d899E4192676988279C)\n +++ description: None\n```\n\n```diff\n contract Linea Security Council (eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3) {\n +++ description: None\n receivedPermissions.10:\n- {\"permission\":\"interact\",\"from\":\"eth:0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319\",\"description\":\"can set the contract that is recognized to be the token bridge contract on the other side.\",\"role\":\".remoteTokenBridgeSetters\"}\n receivedPermissions.17:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F\",\"description\":\"pause the rollup for 2d, followed by 2d cooldown, during which the rollup cannot be paused, except by the Security Council.\",\"role\":\".pauseAllAC\"}\n receivedPermissions.18:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F\",\"description\":\"pause the rollup indefinitely.\",\"role\":\".securityCouncilAC\"}\n }\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n template:\n- \"linea/LineaRollup_NativeYield\"\n+ \"linea/LineaRollup_NativeYield_v7_1\"\n sourceHashes.1:\n- \"0x7f1b1a08526c142b2843c2e0d1fb7d8511f9fe0da9001aa980e58eea6ddd3fb1\"\n+ \"0xc79888514ff3b0780c3947bdc52c7fb27664029407ec70360023b494f725f7b3\"\n values.$implementation:\n- \"eth:0x04728BF704a716C26F9EF4085013b760AC885631\"\n+ \"eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332\"\n values.$pastUpgrades.10:\n+ [\"2026-03-31T15:26:47.000Z\",\"0x2956910285297bc330ad8b1e31f6dd7866e58c26164fe126f09a44df6a65ce9b\",[\"eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332\"]]\n values.$upgradeCount:\n- 10\n+ 11\n values.accessControl.PAUSE_ALL_ROLE.members.1:\n+ \"eth:0x2532bfdc9Ba58B13358A9C5C05136d6938Bc42d0\"\n values.accessControl.PAUSE_BLOB_SUBMISSION_ROLE:\n- {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_BLOB_SUBMISSION_ROLE:\n- {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.0x67c2dca7476ee0fe1dd3cba13428c6760bfe2599a6dfe26a9ad7ef27317c6e77:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.0xe4831f9e4316ac2c65117d1f602fbf56d38128a9973d5e3fdbc5b77265c18d40:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.SECURITY_COUNCIL_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.PAUSE_STATE_DATA_SUBMISSION_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_STATE_DATA_SUBMISSION_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.CONTRACT_VERSION:\n- \"7.0\"\n+ \"7.1\"\n values.fallbackOperator:\n- \"eth:0x3697bD0bC6C050135b8321F989a5316eACbF367D\"\n values.isPaused_BLOB_SUBMISSION:\n- false\n values.isPaused_CALLDATA_SUBMISSION:\n- false\n values.PAUSE_BLOB_SUBMISSION_ROLE:\n- \"0x67c2dca7476ee0fe1dd3cba13428c6760bfe2599a6dfe26a9ad7ef27317c6e77\"\n values.UNPAUSE_BLOB_SUBMISSION_ROLE:\n- \"0xe4831f9e4316ac2c65117d1f602fbf56d38128a9973d5e3fdbc5b77265c18d40\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.1:\n- \"eth:0x66355689a9f067eeb9dc9d899E4192676988279C\"\n+ \"eth:0x1442833180e253844897339aFb5800c797547987\"\n values.COOLDOWN_DURATION:\n+ 172800\n+++ description: The duration of pausing cooldown period, for which rollup could not be paused after a previous pause. SC can always pause indefinitely.\n values.COOLDOWN_DURATION_fmt:\n+ \"2d\"\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_PERMISSIONLESS_ACTIONS:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_REPORTING:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_STAKING:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_UNSTAKING:\n+ false\n+++ severity: HIGH\n values.isPaused_STATE_DATA_SUBMISSION:\n+ false\n+++ severity: HIGH\n values.livenessRecoveryOperator:\n+ \"eth:0x3697bD0bC6C050135b8321F989a5316eACbF367D\"\n+++ description: Timestamp until which non security council entities can't pause the rollup.\n+++ severity: HIGH\n values.nonSecurityCouncilCooldownEnd:\n+ 0\n values.PAUSE_DURATION:\n+ 172800\n values.PAUSE_STATE_DATA_SUBMISSION_ROLE:\n+ \"0x21aba2dd4535739d4ca4cddb3c024036bfcc88cfce067cb0847e7ad0f9cfaa55\"\n values.pauseAllAC:\n+ [\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\",\"eth:0x2532bfdc9Ba58B13358A9C5C05136d6938Bc42d0\"]\n+++ description: The duration of the rate limit window over which the withdrawal amounts are accumulated.\n values.pauseDuration_fmt:\n+ \"2d\"\n values.SECURITY_COUNCIL_ROLE:\n+ \"0x1453a531db80c85f2d944d498709d84959bc5bf839eefe9acb784571e5a32118\"\n values.securityCouncilAC:\n+ [\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]\n+++ description: Smart contract that attests existence of blob commitments (shnarfs).\n+++ severity: HIGH\n values.shnarfProvider:\n+ \"eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F\"\n values.UNPAUSE_STATE_DATA_SUBMISSION_ROLE:\n+ \"0x4df33217c89b6f12af38ba46035cb312b5e88de78d22279286830fe079b642cd\"\n fieldMeta.isPaused_BLOB_SUBMISSION:\n- {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_CALLDATA_SUBMISSION:\n- {\"severity\":\"HIGH\"}\n fieldMeta.periodInSeconds:\n- {\"description\":\"The duration of the rate limit window over which the withdrawal amounts are accumulated.\"}\n fieldMeta.livenessRecoveryOperator:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_STAKING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_UNSTAKING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_PERMISSIONLESS_ACTIONS:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_REPORTING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_STATE_DATA_SUBMISSION:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.pauseDuration_fmt:\n+ {\"description\":\"The duration of the rate limit window over which the withdrawal amounts are accumulated.\"}\n fieldMeta.COOLDOWN_DURATION_fmt:\n+ {\"description\":\"The duration of pausing cooldown period, for which rollup could not be paused after a previous pause. SC can always pause indefinitely.\"}\n fieldMeta.shnarfProvider:\n+ {\"severity\":\"HIGH\",\"description\":\"Smart contract that attests existence of blob commitments (shnarfs).\"}\n fieldMeta.nonSecurityCouncilCooldownEnd:\n+ {\"severity\":\"HIGH\",\"description\":\"Timestamp until which non security council entities can't pause the rollup.\"}\n implementationNames.eth:0x04728BF704a716C26F9EF4085013b760AC885631:\n- \"LineaRollup\"\n implementationNames.eth:0xE68697690E8ff196A6aBB3E1385156D87Df85332:\n+ \"LineaRollup\"\n }\n```\n\n```diff\n contract TokenBridge (linea:0x353012dc4a9A6cF55c941bADC267f82004A8ceB9) {\n +++ description: Contract used to bridge and escrow ERC-20 tokens.\n template:\n- \"linea/L1TokenBridge\"\n+ \"linea/L1TokenBridge_v1_1\"\n sourceHashes.1:\n- \"0x49bdbe79d2cc9cefee03245e4b48260f4a71e7976af51741005758e7236d687d\"\n+ \"0x9ef484e431e7c68a8c882205b5bfa7b266f67c9c5423cf7ac480938a86c78c23\"\n values.$implementation:\n- \"linea:0xD90ed3D4f9d11262d3D346a4369058d5B3777137\"\n+ \"linea:0x4a496167F187A97379e763f693A499cE1182848b\"\n values.$pastUpgrades.3:\n+ [\"2026-03-31T15:28:55.000Z\",\"0xee1773eabf52589c20884aceed118949ea8e03afc7bfd1df008206d2d69e1b01\",[\"linea:0x4a496167F187A97379e763f693A499cE1182848b\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.accessControl.PAUSE_ALL_ROLE.members.1:\n+ \"linea:0x2532bfdc9Ba58B13358A9C5C05136d6938Bc42d0\"\n values.accessControl.SET_REMOTE_TOKENBRIDGE_ROLE:\n- {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD\"]}\n values.accessControl.0xbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b24:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD\"]}\n values.accessControl.SECURITY_COUNCIL_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD\"]}\n values.allPausers.1:\n+ \"linea:0x2532bfdc9Ba58B13358A9C5C05136d6938Bc42d0\"\n values.CONTRACT_VERSION:\n- \"1.0\"\n+ \"1.1\"\n values.isPaused_BLOB_SUBMISSION:\n- false\n values.isPaused_CALLDATA_SUBMISSION:\n- false\n values.remoteTokenBridgeSetters:\n- [\"linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD\"]\n values.SET_REMOTE_TOKENBRIDGE_ROLE:\n- \"0xbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b24\"\n values.COOLDOWN_DURATION:\n+ 172800\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_PERMISSIONLESS_ACTIONS:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_REPORTING:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_STAKING:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_UNSTAKING:\n+ false\n+++ severity: HIGH\n values.isPaused_STATE_DATA_SUBMISSION:\n+ false\n+++ description: Timestamp until which non security council entities can't pause the rollup.\n+++ severity: HIGH\n values.nonSecurityCouncilCooldownEnd:\n+ 0\n values.PAUSE_DURATION:\n+ 172800\n values.SECURITY_COUNCIL_ROLE:\n+ \"0x1453a531db80c85f2d944d498709d84959bc5bf839eefe9acb784571e5a32118\"\n errors:\n- {\"@template\":\"Processing error occurred.\"}\n fieldMeta.isPaused_BLOB_SUBMISSION:\n- {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_CALLDATA_SUBMISSION:\n- {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_STAKING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_UNSTAKING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_PERMISSIONLESS_ACTIONS:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_REPORTING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_STATE_DATA_SUBMISSION:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.nonSecurityCouncilCooldownEnd:\n+ {\"severity\":\"HIGH\",\"description\":\"Timestamp until which non security council entities can't pause the rollup.\"}\n implementationNames.linea:0xD90ed3D4f9d11262d3D346a4369058d5B3777137:\n- \"TokenBridge\"\n implementationNames.linea:0x4a496167F187A97379e763f693A499cE1182848b:\n+ \"TokenBridge\"\n }\n```\n\n```diff\n contract L2MessageService (linea:0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec) {\n +++ description: None\n template:\n- \"linea/L2MessageService\"\n+ \"linea/L2MessageService_v1_0\"\n sourceHashes.1:\n- \"0x9436ff273e587ee919293672a7a5ba7bf371053a92565ee236a004932a5dda66\"\n+ \"0x6239c25539f3ab00e89f637a6f0c8c125ada5ac83bb623a815236dfa315e293c\"\n values.$implementation:\n- \"linea:0x05d43713B7E333d2D54be65cE3b5F3698aB960Fd\"\n+ \"linea:0x9976fD7edDb78156a002DE74c9158E884702273d\"\n values.$pastUpgrades.6:\n+ [\"2026-03-31T15:28:55.000Z\",\"0xee1773eabf52589c20884aceed118949ea8e03afc7bfd1df008206d2d69e1b01\",[\"linea:0x9976fD7edDb78156a002DE74c9158E884702273d\"]]\n values.$upgradeCount:\n- 6\n+ 7\n values.accessControl.PAUSE_ALL_ROLE.members.1:\n+ \"linea:0x2532bfdc9Ba58B13358A9C5C05136d6938Bc42d0\"\n values.accessControl.SECURITY_COUNCIL_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD\"]}\n+++ description: Value used to identify the crosschain caller during a crosschain call. It defaults to a inaccessible address outside of calls.\n values.sender:\n- \"linea:0x00000000000000000000000000000000075BCd15\"\n+ \"linea:0x0000000000000000000000000000000000000000\"\n values.COOLDOWN_DURATION:\n+ 172800\n+++ severity: HIGH\n values.isPaused_COMPLETE_TOKEN_BRIDGING:\n+ false\n+++ severity: HIGH\n values.isPaused_FINALIZATION:\n+ false\n+++ severity: HIGH\n values.isPaused_GENERAL:\n+ false\n+++ severity: HIGH\n values.isPaused_INITIATE_TOKEN_BRIDGING:\n+ false\n+++ severity: HIGH\n values.isPaused_L1_L2:\n+ false\n+++ severity: HIGH\n values.isPaused_L2_L1:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_PERMISSIONLESS_ACTIONS:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_REPORTING:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_STAKING:\n+ false\n+++ severity: HIGH\n values.isPaused_NATIVE_YIELD_UNSTAKING:\n+ false\n+++ severity: HIGH\n values.isPaused_STATE_DATA_SUBMISSION:\n+ false\n+++ description: Timestamp until which non security council entities can't pause the rollup.\n+++ severity: HIGH\n values.nonSecurityCouncilCooldownEnd:\n+ 0\n values.PAUSE_DURATION:\n+ 172800\n values.SECURITY_COUNCIL_ROLE:\n+ \"0x1453a531db80c85f2d944d498709d84959bc5bf839eefe9acb784571e5a32118\"\n fieldMeta.isPaused_GENERAL:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_L1_L2:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_L2_L1:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_FINALIZATION:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_INITIATE_TOKEN_BRIDGING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_COMPLETE_TOKEN_BRIDGING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_STAKING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_UNSTAKING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_PERMISSIONLESS_ACTIONS:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_NATIVE_YIELD_REPORTING:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.isPaused_STATE_DATA_SUBMISSION:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.nonSecurityCouncilCooldownEnd:\n+ {\"severity\":\"HIGH\",\"description\":\"Timestamp until which non security council entities can't pause the rollup.\"}\n implementationNames.linea:0x05d43713B7E333d2D54be65cE3b5F3698aB960Fd:\n- \"L2MessageService\"\n implementationNames.linea:0x9976fD7edDb78156a002DE74c9158E884702273d:\n+ \"L2MessageService\"\n }\n```\n\n```diff\n contract Linea Multisig 3 (linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD) {\n +++ description: None\n receivedPermissions.7:\n- {\"permission\":\"interact\",\"from\":\"linea:0x353012dc4a9A6cF55c941bADC267f82004A8ceB9\",\"description\":\"can set the contract that is recognized to be the token bridge contract on the other side.\",\"role\":\".remoteTokenBridgeSetters\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierFull (eth:0x1442833180e253844897339aFb5800c797547987)\n +++ description: None\n```"
}
]
},
{
"id": "440c8e93",
"date": "Wed, 25 Mar 2026 10:34:04 GMT",
"timestamp": 1774434780,
"description": "Updated the verifier (disabled old, added new).",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierMainnetFull (eth:0x8f8EC9608223C0b8D13238950c03F5D42ceeBb9b)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.1:\n+ \"eth:0x66355689a9f067eeb9dc9d899E4192676988279C\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.4:\n- \"eth:0x8f8EC9608223C0b8D13238950c03F5D42ceeBb9b\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (eth:0x66355689a9f067eeb9dc9d899E4192676988279C)\n +++ description: None\n```"
}
]
},
{
"id": "cfe482dd",
"date": "Mon, 23 Mar 2026 09:21:43 GMT",
"timestamp": 1774257638,
"description": "Updated the verifier (disabled old, added new).",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierMainnetFull (eth:0x814D80782aA8c508aBABE9C6956D8F1f90E5177a)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.0:\n+ \"eth:0xC83ed08E2262fBa264D528C749c051f8fC526897\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.3:\n- \"eth:0x814D80782aA8c508aBABE9C6956D8F1f90E5177a\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (eth:0xC83ed08E2262fBa264D528C749c051f8fC526897)\n +++ description: None\n```"
}
]
},
{
"id": "ac139302",
"date": "Fri, 06 Mar 2026 08:41:36 GMT",
"timestamp": 1772786430,
"description": "Rotated L1 to L2 message settler (role on Linea L2).",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L2MessageService (linea:0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec) {\n +++ description: None\n values.accessControl.L1_L2_MESSAGE_SETTER_ROLE.members.0:\n- \"linea:0xc1C6B09D1eB6fCA0fF3cA11027E5Bc4AeDb47F67\"\n+ \"linea:0x2b0F9C76970975aec03784EFd763623757EF7652\"\n values.l1l2MessageSetter.0:\n- \"linea:0xc1C6B09D1eB6fCA0fF3cA11027E5Bc4AeDb47F67\"\n+ \"linea:0x2b0F9C76970975aec03784EFd763623757EF7652\"\n }\n```"
}
]
},
{
"id": "a0fe459a",
"date": "Wed, 04 Mar 2026 12:04:51 GMT",
"timestamp": 1772533779,
"description": "Upgraded LineaRollup contract to version 7 to add native ETH yield. \n\nPermissioned entities can now move ETH from the rollup contract into yield providers via YieldManager. Accrued interest is paid to users on L2. YieldManager sets minimal and target reserve values. If ETH reserves are below the minimal value, users can permissionlessly replenish the reserve up to target by unstaking. \n\nDiff for LineaRollup: https://disco.l2beat.com/diff/eth:0x07ddce60658A61dc1732Cacf2220FcE4A01C49B0/eth:0x04728BF704a716C26F9EF4085013b760AC885631.\n\nAlso, removed Safe Zodiac roles on L1.",
"isHighSeverity": true,
"changeCount": 32,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Linea Multisig 1 (eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3) {\n +++ description: None\n values.GnosisSafe_modules.0:\n- \"eth:0xF24f1DC519d88246809B660eb56D94048575d083\"\n receivedPermissions.18:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F\",\"description\":\"send ETH from the rollup bridge to the YieldManager.\",\"role\":\".ethStakerAC\"}\n receivedPermissions.19:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F\",\"description\":\"set the address of the yield manager contract that receives ETH from rollup bridge.\",\"role\":\".yieldManagerSetterAC\"}\n receivedPermissions.25:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94\",\"description\":\"manage native yield staking: modify reserve parameters, set yield pools, set yield receiver addresses.\",\"role\":\".yieldStakingManagerAC\"}\n receivedPermissions.26:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94\",\"description\":\"operate native yield staking: stake and unstake, collect yield, pause and unpause, ossify yield managers.\",\"role\":\".yieldStakingOperatorAC\"}\n receivedPermissions.30:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xF5058616517C068C7b8c7EbC69FF636Ade9066d6\"},{\"address\":\"eth:0xd6B95c960779c72B8C6752119849318E5d550574\"}]}\n }\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\n template:\n- \"linea/LineaRollup\"\n+ \"linea/LineaRollup_NativeYield\"\n sourceHashes.1:\n- \"0xd9038151917d14b4d25257789abe9a10cecf3a5b4c0c2520860ce1338757ceff\"\n+ \"0x7f1b1a08526c142b2843c2e0d1fb7d8511f9fe0da9001aa980e58eea6ddd3fb1\"\n description:\n- \"The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2.\"\n+ \"The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2. ETH deployed to the rollup contract can be transfered to a yield protocol.\"\n values.$implementation:\n- \"eth:0x07ddce60658A61dc1732Cacf2220FcE4A01C49B0\"\n+ \"eth:0x04728BF704a716C26F9EF4085013b760AC885631\"\n values.$pastUpgrades.9:\n+ [\"2026-03-01T14:25:35.000Z\",\"0xac24732952f9eea514ba28030218267575bb42dd5f713dab7c29f3d330086d8f\",[\"eth:0x04728BF704a716C26F9EF4085013b760AC885631\"]]\n values.$upgradeCount:\n- 9\n+ 10\n values.accessControl.SET_YIELD_MANAGER_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.YIELD_PROVIDER_STAKING_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\",\"eth:0xcEE1f08Bcae342E950e88c209F7e6327ABB6d448\"]}\n values.accessControl.PAUSE_NATIVE_YIELD_STAKING_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_NATIVE_YIELD_STAKING_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.CONTRACT_VERSION:\n- \"6.0\"\n+ \"7.0\"\n values.GENESIS_SHNARF:\n- \"0x47452a1b9ebadfe02bdd02f580fa1eba17680d57eec968a591644d05d78ee84f\"\n values.ethStakerAC:\n+ [\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\",\"eth:0xcEE1f08Bcae342E950e88c209F7e6327ABB6d448\"]\n values.isWithdrawLSTAllowed:\n+ false\n values.PAUSE_NATIVE_YIELD_STAKING_ROLE:\n+ \"0xcc10d6eec3c757d645e27b3f3001a3ba52f692da0bce25fabf58c6ecaf376450\"\n values.SET_YIELD_MANAGER_ROLE:\n+ \"0x76ef52a5344b10ed112c1d48c7c06f51e919518ea6fb005f9b25b359b955e3be\"\n values.UNPAUSE_NATIVE_YIELD_STAKING_ROLE:\n+ \"0x4b4665d8754e6ea0608430ef3e91c1b45c72aafe8800e289cd35f38d85361858\"\n values.YIELD_PROVIDER_STAKING_ROLE:\n+ \"0x220bd22ef7c53d75fe3eac0a09e90815a0c5ba4f9e8da8b039542cd3db347258\"\n+++ severity: HIGH\n values.yieldManager:\n+ \"eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94\"\n values.yieldManagerSetterAC:\n+ [\"eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]\n fieldMeta.yieldManager:\n+ {\"severity\":\"HIGH\"}\n implementationNames.eth:0x07ddce60658A61dc1732Cacf2220FcE4A01C49B0:\n- \"LineaRollup\"\n implementationNames.eth:0x04728BF704a716C26F9EF4085013b760AC885631:\n+ \"LineaRollup\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Roles (eth:0xF24f1DC519d88246809B660eb56D94048575d083)\n +++ description: The Zodiac 'Roles' module for Safe multisigs allows defining roles that can call preconfigured targets on behalf of the Gnosis Safe.\n```\n\n```diff\n contract ProxyAdmin (eth:0xF5058616517C068C7b8c7EbC69FF636Ade9066d6) {\n +++ description: None\n directlyReceivedPermissions.2:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94\",\"role\":\"admin\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract YieldManager (eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94)\n +++ description: Manages flows of ETH and staked ETH in and out of rollup contract reserves. Tracks the available ETH balance for L2 exits, configures target parameters for amount of staked ETH, communicates with yield provider adaptors.\n```"
}
]
},
{
"id": "5d2181e9",
"date": "Tue, 09 Dec 2025 10:38:14 GMT",
"timestamp": 1765276326,
"description": "Removed Type0 verifier, added new Type4 verifier.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierMainnetFull (eth:0xA12E79C375FB0aaddfDA597BBe7b4e9A92e9b3De)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.0:\n- \"eth:0xA12E79C375FB0aaddfDA597BBe7b4e9A92e9b3De\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.4:\n- \"eth:0x0000000000000000000000000000000000000000\"\n+ \"eth:0x8f8EC9608223C0b8D13238950c03F5D42ceeBb9b\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (eth:0x8f8EC9608223C0b8D13238950c03F5D42ceeBb9b)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```"
}
]
},
{
"id": "8f408813",
"date": "Tue, 02 Dec 2025 09:31:23 GMT",
"timestamp": 1764667818,
"description": "Removed one unused verifier (Type 1), changed other verifier (Type 4 -> Type 3).",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierMainnetFull (eth:0x8421D1e3fb9A737A85dC7FF531c39f324FB2aC5d)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n- Status: DELETED\n contract PlonkVerifierMainnetFull (eth:0x8CAE7ff138e401384df88a408314e4E9a92f274E)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.1:\n- \"eth:0x8421D1e3fb9A737A85dC7FF531c39f324FB2aC5d\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.3:\n+ \"eth:0x814D80782aA8c508aBABE9C6956D8F1f90E5177a\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.4:\n- \"eth:0x8CAE7ff138e401384df88a408314e4E9a92f274E\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (eth:0x814D80782aA8c508aBABE9C6956D8F1f90E5177a)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```"
}
]
},
{
"id": "44e54575",
"date": "Fri, 31 Oct 2025 11:10:01 GMT",
"timestamp": 1761668177,
"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 Permissions (eth:0x33D1C5A5B6a7f3885c7467e829aaa21698937597)\n +++ description: None\n```"
}
]
},
{
"id": "2b932220",
"date": "Tue, 28 Oct 2025 16:17:31 GMT",
"timestamp": 1761668177,
"description": "Presumably [Beta 4.1 upgrade](https://docs.linea.build/release-notes#beta-v41):\n\nUpdated Linea verifiers for different forks, see details here: https://docs.linea.build/security-council-record.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierMainnetFull (eth:0x9473C37A9fE76fbbc3Fd7d3b59E1b550415bd873)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.0:\n- \"eth:0xED39C0C41A7651006953AB58Ecb3039363620995\"\n+ \"eth:0xA12E79C375FB0aaddfDA597BBe7b4e9A92e9b3De\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.1:\n- \"eth:0x9473C37A9fE76fbbc3Fd7d3b59E1b550415bd873\"\n+ \"eth:0x8421D1e3fb9A737A85dC7FF531c39f324FB2aC5d\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract.\n values.verifiers.4:\n- \"eth:0x0000000000000000000000000000000000000000\"\n+ \"eth:0x8CAE7ff138e401384df88a408314e4E9a92f274E\"\n }\n```\n\n```diff\n- Status: DELETED\n contract PlonkVerifierMainnetFull (eth:0xED39C0C41A7651006953AB58Ecb3039363620995)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (eth:0x8421D1e3fb9A737A85dC7FF531c39f324FB2aC5d)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (eth:0x8CAE7ff138e401384df88a408314e4E9a92f274E)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (eth:0xA12E79C375FB0aaddfDA597BBe7b4e9A92e9b3De)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```"
}
]
},
{
"id": "b62380e0",
"date": "Tue, 23 Sep 2025 10:45:53 GMT",
"timestamp": 1758624268,
"description": "Increased daily limits on moving Ether between L1 and L2. Also added a new multisig address.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LineaRollup (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2.\n+++ description: The cap on the total amount of ether that can leave rollup contract via L2 -> L1 message claims per period given by periodInSeconds.\n values.limitInWei:\n- \"18750000000000000000000\"\n+ \"30000000000000000000000\"\n }\n```\n\n```diff\n contract L2MessageService (linea:0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec) {\n +++ description: None\n+++ description: The cap on the total amount of ether that can leave the contract via L1 -> L2 message claims per period given by periodInSeconds.\n values.limitInWei:\n- \"15000000000000000000000\"\n+ \"24000000000000000000000\"\n }\n```\n\n```diff\n contract Linea Multisig 3 (linea:0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD) {\n +++ description: None\n values.$members.0:\n+ \"linea:0x1f0cdfb6aa74293E06f3A6D3B7958b6d36563c4f\"\n values.$members.0:\n- \"linea:0x239d9B860399366F8d25F6e2962Fb2B9D070aEFE\"\n+ \"linea:0xD30373335C6d71499EE6CDcF832b5BcB731BAe8d\"\n values.$threshold:\n- 4\n+ 5\n values.multisigThreshold:\n- \"4 of 8 (50%)\"\n+ \"5 of 9 (56%)\"\n }\n```"
}
]
},
{
"id": "2e900654",
"date": "Fri, 19 Sep 2025 08:23:31 GMT",
"timestamp": 1758270123,
"description": "Added new member to Linea Multisig 1, rotated another member and incremented threshold.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Linea Multisig 1 (eth:0x892bb7EeD71efB060ab90140e7825d8127991DD3) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x1f0cdfb6aa74293E06f3A6D3B7958b6d36563c4f\"\n values.$members.1:\n- \"eth:0x239d9B860399366F8d25F6e2962Fb2B9D070aEFE\"\n+ \"eth:0xD30373335C6d71499EE6CDcF832b5BcB731BAe8d\"\n values.$threshold:\n- 4\n+ 5\n values.multisigThreshold:\n- \"4 of 8 (50%)\"\n+ \"5 of 9 (56%)\"\n }\n```"
}
]
},
{
"id": "3f888fe0",
"date": "Tue, 26 Aug 2025 13:20:59 GMT",
"timestamp": 1756214374,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract ProxyAdmin (0x1E1f6F22f97b4a7522D8B62e983953639239774E)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TokenBridge (0x353012dc4a9A6cF55c941bADC267f82004A8ceB9)\n +++ description: Contract used to bridge and escrow ERC-20 tokens.\n```\n\n```diff\n+ Status: CREATED\n contract L2Roles (0x3886a948eA7b4053312c3aE31a13776144aA6239)\n +++ description: The Zodiac 'Roles' module for Safe multisigs allows defining roles that can call preconfigured targets on behalf of the Gnosis Safe.\n```\n\n```diff\n+ Status: CREATED\n contract L2MessageService (0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2USDCBridge (0xA2Ee6Fce4ACB62D95448729cDb781e3BEb62504A)\n +++ description: L2 side of the old and now unused USDC bridge.\n```\n\n```diff\n+ Status: CREATED\n contract Linea Multisig 4 (0xB8F5524D73f549Cf14A0587a3C7810723f9c0051)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2Timelock (0xc808BfCBeD34D90fa9579CAa664e67B9A03C56ca)\n +++ description: A standard timelock with access control. The current minimum delay is 0s.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xcB04d0AD0D3ceA5aEc1B480957Ddb20CA47EA30c)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract LineaVoyageXP (0xd83af4fbD77f3AB65C3B1Dc4B38D7e67AEcf599A)\n +++ description: Voyage XP tokens are non-transferrable, soulbound tokens that are distributed to recognize the community’s contribution toward the growth of the Linea ecosystem.\n```\n\n```diff\n+ Status: CREATED\n contract BridgedToken (0xda8AEFCf0F9B0b81915a2C124f913e58212D49dF)\n +++ description: Standard implementation used for assets that are native to the other layer and are bridged to this layer.\n```\n\n```diff\n+ Status: CREATED\n contract UpgradeableBeacon (0xE798695d2e78f7caeb5BbF3385433959324c02c0)\n +++ description: A beacon with an upgradeable implementation currently set as linea:0xda8AEFCf0F9B0b81915a2C124f913e58212D49dF. Beacon proxy contracts pointing to this beacon will all use its implementation.\n```\n\n```diff\n+ Status: CREATED\n contract Linea Multisig 3 (0xf5cc7604a5ef3565b4D2050D65729A06B68AA0bD)\n +++ description: None\n```"
}
]
},
{
"id": "5361d109",
"date": "Tue, 26 Aug 2025 13:20:59 GMT",
"timestamp": 1756214374,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Linea Multisig 1 (0x892bb7EeD71efB060ab90140e7825d8127991DD3) {\n +++ description: None\n values.$members.3:\n- \"eth:0x5822D8457c00FB82203918ED92907b935B9D40AE\"\n+ \"eth:0xC263178AC471C4411abAf5c22cD4D8D67033bc82\"\n values.$members.6:\n- \"eth:0xab23f8E6c3288952fdf193A17ad49b15F5EE55A1\"\n+ \"eth:0x99234cd9B532F30538ac797D33c212e3B69Fd087\"\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ProxyAdmin (0x41fAD3Df1B07B647D120D055259E474fE8046eb5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCBridge (0x504A330327A089d8364C4ab3811Ee26976d388ce)\n +++ description: L1 side of the old and now unused USDC bridge.\n```"
}
]
},
{
"id": "94da819f",
"date": "Mon, 25 Aug 2025 13:11:29 GMT",
"timestamp": 1756122271,
"description": "Removed type 4 verifier and added a new type 1 verifier, which is now used.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierMainnetFull (0x41A4d93d09f4718fe899D12A4aD2C8a09104bdc7)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n contract LineaRollup (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.1:\n+ \"eth:0x9473C37A9fE76fbbc3Fd7d3b59E1b550415bd873\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.4:\n- \"eth:0x41A4d93d09f4718fe899D12A4aD2C8a09104bdc7\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (0x9473C37A9fE76fbbc3Fd7d3b59E1b550415bd873)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```"
}
]
},
{
"id": "f27ee479",
"date": "Mon, 28 Jul 2025 07:11:06 GMT",
"timestamp": 1753686666,
"description": "Linea Multisig 2: one member changed and delay module added.",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Linea Multisig 1 (0x892bb7EeD71efB060ab90140e7825d8127991DD3) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x784CCeE002E259Fc38C4b36C2D8bd8a457e55436\",\"description\":\"enable/disable the module, set delays and expiration of transactions, set the target.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB8F5524D73f549Cf14A0587a3C7810723f9c0051\"},{\"address\":\"eth:0x784CCeE002E259Fc38C4b36C2D8bd8a457e55436\",\"delay\":7776000}]}\n receivedPermissions.7:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xd6B95c960779c72B8C6752119849318E5d550574\",\"description\":\"propose transactions.\",\"role\":\".proposerAC\",\"via\":[{\"address\":\"eth:0xB8F5524D73f549Cf14A0587a3C7810723f9c0051\"},{\"address\":\"eth:0x784CCeE002E259Fc38C4b36C2D8bd8a457e55436\",\"delay\":7776000}]}\n directlyReceivedPermissions.0:\n+ {\"permission\":\"act\",\"from\":\"eth:0x784CCeE002E259Fc38C4b36C2D8bd8a457e55436\",\"delay\":7776000,\"role\":\".ZodiacModule_modules\"}\n }\n```\n\n```diff\n contract Linea Multisig 2 (0xB8F5524D73f549Cf14A0587a3C7810723f9c0051) {\n +++ description: None\n values.$members.2:\n- \"eth:0xF112a2438a4e08836046D587350f9315C0eAE300\"\n+ \"eth:0x7E55b79A01BD9125CD213Bc9F533d21Eb3bD68c5\"\n values.GnosisSafe_modules.0:\n+ \"eth:0x784CCeE002E259Fc38C4b36C2D8bd8a457e55436\"\n receivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x784CCeE002E259Fc38C4b36C2D8bd8a457e55436\",\"description\":\"enable/disable the module, set delays and expiration of transactions, set the target.\",\"role\":\".owner\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract Delay (0x784CCeE002E259Fc38C4b36C2D8bd8a457e55436)\n +++ description: A simple Safe module for that can queue and execute transactions as eth:0xB8F5524D73f549Cf14A0587a3C7810723f9c0051 after a delay of currently 90d, if registered as a module there.\n```"
}
]
},
{
"id": "094e5d3b",
"date": "Mon, 14 Jul 2025 12:45:19 GMT",
"timestamp": 1752497119,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract TokenBridge (0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319)\n +++ description: Contract used to bridge and escrow ERC-20 tokens.\n```\n\n```diff\n+ Status: CREATED\n contract CallForwardingProxy (0x3697bD0bC6C050135b8321F989a5316eACbF367D)\n +++ description: A public proxy contract forwarding calls to a predefined target contract (eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F). Can be called by any address.\n```\n\n```diff\n+ Status: CREATED\n contract BridgedToken (0x36f274C1C197F277EA3C57859729398FCc8a3763)\n +++ description: Standard implementation used for assets that are native to the Linea L2 and bridged back to ethereum.\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (0x41A4d93d09f4718fe899D12A4aD2C8a09104bdc7)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n+ Status: CREATED\n contract Linea Multisig 1 (0x892bb7EeD71efB060ab90140e7825d8127991DD3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract UpgradeableBeacon (0x971f46a2852d11D59dbF0909e837cfd06f357DeB)\n +++ description: A beacon with an upgradeable implementation currently set as eth:0x36f274C1C197F277EA3C57859729398FCc8a3763. Beacon proxy contracts pointing to this beacon will all use its implementation.\n```\n\n```diff\n+ Status: CREATED\n contract Linea Multisig 2 (0xB8F5524D73f549Cf14A0587a3C7810723f9c0051)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract LineaRollup (0xd19d4B5d358258f05D7B411E21A1460D11B0876F)\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2.\n```\n\n```diff\n+ Status: CREATED\n contract L1Timelock (0xd6B95c960779c72B8C6752119849318E5d550574)\n +++ description: A standard timelock with access control. The current minimum delay is 0s.\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (0xED39C0C41A7651006953AB58Ecb3039363620995)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Roles (0xF24f1DC519d88246809B660eb56D94048575d083)\n +++ description: The Zodiac 'Roles' module for Safe multisigs allows defining roles that can call preconfigured targets on behalf of the Gnosis Safe.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xF5058616517C068C7b8c7EbC69FF636Ade9066d6)\n +++ description: None\n```"
}
]
},
{
"id": "6b70b41a",
"date": "Tue, 10 Jun 2025 08:47:10 GMT",
"timestamp": 1749545230,
"description": "the incomplete plonkverifier `0xBfF4a03A355eEF7dA720bBC7878F9BdBBE81fe6F` is removed. \n\nnew proposer Multisig for the main timelock added.\n\n06/10: new validator added: 0xED with new keys. (via telegram this is the 100% complete verifier, waiting for the `0x41` vali to be removed)\n\ncontext from telegram:\n\n> - Alpha verifiers: were removed on Monday\n> - Beta v1.4 verifier (99% prover completeness): were activated a few weeks back and should be removed next week [this week]\n> - Beta v2.0 verifier (100% prover completeness): will be activated on Thursday and removed early next week [this week], once the upgrade is successful on Monday.\n\nlinea confirms their backend is fully upgraded to and using the 0xED verifier and the old 99% verifier will be removed this week.",
"isHighSeverity": false,
"changeCount": 19,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract TokenBridge (0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319) {\n +++ description: Contract used to bridge and escrow ERC-20 tokens.\n values.accessControl.SET_CUSTOM_CONTRACT_ROLE.members.1:\n+ \"0xB8F5524D73f549Cf14A0587a3C7810723f9c0051\"\n values.accessControl.REMOVE_RESERVED_TOKEN_ROLE.members.1:\n+ \"0xB8F5524D73f549Cf14A0587a3C7810723f9c0051\"\n values.accessControl.SET_RESERVED_TOKEN_ROLE.members.1:\n+ \"0xB8F5524D73f549Cf14A0587a3C7810723f9c0051\"\n }\n```\n\n```diff\n contract Linea Multisig 1 (0x892bb7EeD71efB060ab90140e7825d8127991DD3) {\n +++ description: None\n values.$members.7:\n- \"0x497515578b0BE54d2f0f32cF3F08B85Bf8cEB6aB\"\n+ \"0x535dE1e2A961529AA84EF208981f8cF4e7dcbdF5\"\n values.$members.6:\n- \"0x239d9B860399366F8d25F6e2962Fb2B9D070aEFE\"\n+ \"0x497515578b0BE54d2f0f32cF3F08B85Bf8cEB6aB\"\n values.$members.5:\n- \"0xab23f8E6c3288952fdf193A17ad49b15F5EE55A1\"\n+ \"0x239d9B860399366F8d25F6e2962Fb2B9D070aEFE\"\n values.$members.4:\n- \"0x4CB4da1D1C198E506031C0Aa8480BA8b57C0fAD4\"\n+ \"0xab23f8E6c3288952fdf193A17ad49b15F5EE55A1\"\n values.$members.3:\n- \"0xB4dAebe4D01f467701F95f0196fc29033c54dBcb\"\n+ \"0x4CB4da1D1C198E506031C0Aa8480BA8b57C0fAD4\"\n values.$members.2:\n- \"0x12d674b7eCc0302977E956Cd2d5AC8D030fdbea9\"\n+ \"0xB4dAebe4D01f467701F95f0196fc29033c54dBcb\"\n }\n```\n\n```diff\n- Status: DELETED\n contract PlonkVerifierForMultiTypeDataAggregation (0xBfF4a03A355eEF7dA720bBC7878F9BdBBE81fe6F)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```\n\n```diff\n contract LineaRollup (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.19:\n- \"0x1111111111111111111111111111111111111111\"\n+ \"0xED39C0C41A7651006953AB58Ecb3039363620995\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.18:\n- \"0x1111111111111111111111111111111111111111\"\n+ \"0x41A4d93d09f4718fe899D12A4aD2C8a09104bdc7\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.17:\n- \"0x1111111111111111111111111111111111111111\"\n+ \"0x0000000000000000000000000000000000000000\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.16:\n- \"0xBfF4a03A355eEF7dA720bBC7878F9BdBBE81fe6F\"\n+ \"0x0000000000000000000000000000000000000000\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.15:\n- \"0x41A4d93d09f4718fe899D12A4aD2C8a09104bdc7\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n contract L1Timelock (0xd6B95c960779c72B8C6752119849318E5d550574) {\n +++ description: A standard timelock with access control. The current minimum delay is 0s.\n values.accessControl.PROPOSER_ROLE.members.1:\n+ \"0xB8F5524D73f549Cf14A0587a3C7810723f9c0051\"\n values.proposerAC.1:\n+ \"0xB8F5524D73f549Cf14A0587a3C7810723f9c0051\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Linea Multisig 2 (0xB8F5524D73f549Cf14A0587a3C7810723f9c0051)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (0xED39C0C41A7651006953AB58Ecb3039363620995)\n +++ description: None\n```"
}
]
},
{
"id": "f6ae248d",
"date": "Mon, 05 May 2025 04:35:32 GMT",
"timestamp": 1746419732,
"description": "Linea beta v1.4 upgrade: State Reconstruction! (added state derivation section.)\n\nNew verifier: PlonkVerifierMainnetFull name suggests completeness but this will only be shipped [with Beta v2 in May](https://docs.linea.build/release-notes).",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LineaRollup (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2.\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.16:\n- \"0x1111111111111111111111111111111111111111\"\n+ \"0xBfF4a03A355eEF7dA720bBC7878F9BdBBE81fe6F\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.15:\n- \"0xBfF4a03A355eEF7dA720bBC7878F9BdBBE81fe6F\"\n+ \"0x41A4d93d09f4718fe899D12A4aD2C8a09104bdc7\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierMainnetFull (0x41A4d93d09f4718fe899D12A4aD2C8a09104bdc7)\n +++ description: Smart contract used to verify the proofs of Linea zkEVM execution.\n```"
}
]
},
{
"id": "45f949db",
"date": "Tue, 18 Mar 2025 10:53:25 GMT",
"timestamp": 1742295205,
"description": "Linea USDC bridge paused [in preparation for the USDC bridged->native migration](https://www.circle.com/blog/linea-to-become-the-first-bridged-usdc-standard-blockchain-to-upgrade-to-native-usdc).",
"isHighSeverity": true,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDCBridge (0x504A330327A089d8364C4ab3811Ee26976d388ce) {\n +++ description: None\n sourceHashes.1:\n- \"0x27a9694e3bfad3a6ec23be7f15d8e6093b4d3a12eba4d10de0d9c660f5a47d30\"\n+ \"0xf678573abd85e88b327027262fe80c5008f18138d6f2a4b3558ccf78d535c94f\"\n values.$implementation:\n- \"0x0eC393209674090368C592A591B25811e490BF36\"\n+ \"0x66CFD1562d6Aa4629e9e4142662c1A403528Df00\"\n values.$pastUpgrades.2:\n+ [\"2023-09-01T20:25:47.000Z\",\"0xe752ce539119fc11af6239e8b26a79d80c9e84cec19ac6aca060f466853f5b7d\",[\"0x0eC393209674090368C592A591B25811e490BF36\"]]\n values.$pastUpgrades.1.2:\n- \"0xe752ce539119fc11af6239e8b26a79d80c9e84cec19ac6aca060f466853f5b7d\"\n+ [\"0x66CFD1562d6Aa4629e9e4142662c1A403528Df00\"]\n values.$pastUpgrades.1.1:\n- \"2023-09-01T20:25:47.000Z\"\n+ \"0xd61b29009aa7f628ff1b04138e30ebd39805e40a2e3e4a3e43050fd8b0f75548\"\n values.$pastUpgrades.1.0:\n- [\"0x0eC393209674090368C592A591B25811e490BF36\"]\n+ \"2025-03-16T19:57:11.000Z\"\n values.$upgradeCount:\n- 2\n+ 3\n values.paused:\n- false\n+ true\n }\n```"
}
]
},
{
"id": "0ed361e7",
"date": "Thu, 19 Dec 2024 06:41:43 GMT",
"timestamp": 1734590503,
"description": "Linea upgrades to [alpha v4](https://docs.linea.build/release-notes#alpha-v4)!\n\nThis upgrade adds new roles, deprecates `finalizeBlocksWithoutProof` and adds self-proposing/-proving if there weren't any finalized batches by the operator in the previous 6 months, among smaller changes.",
"isHighSeverity": true,
"changeCount": 70,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract TokenBridge (0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319) {\n +++ description: Contract used to bridge and escrow ERC-20 tokens.\n sourceHashes.1:\n- \"0x4c5d4e5696bc435eefd0ba909c6a8a7748c4c49260fcb51a360f07af3c38d76f\"\n+ \"0x49bdbe79d2cc9cefee03245e4b48260f4a71e7976af51741005758e7236d687d\"\n values.$implementation:\n- \"0xd52c09E67aF3BE0977B52b4817366e9BaB5dCFA2\"\n+ \"0x2B6A2F8880220a66DfB9059FCB76F7dB54104a34\"\n values.$pastUpgrades.2:\n+ [\"2024-12-16T13:52:11.000Z\",\"0x96b88112de2e594cb763bc625cc2dcb6920825bb642eb1a62ff577f0c29f616d\",[\"0x2B6A2F8880220a66DfB9059FCB76F7dB54104a34\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.accessControl.DEFAULT_ADMIN_ROLE.members.0:\n+ \"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"\n values.accessControl.PAUSE_ALL_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_ALL_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.PAUSE_INITIATE_TOKEN_BRIDGING_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_INITIATE_TOKEN_BRIDGING_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.PAUSE_COMPLETE_TOKEN_BRIDGING_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_COMPLETE_TOKEN_BRIDGING_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.SET_CUSTOM_CONTRACT_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.REMOVE_RESERVED_TOKEN_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.SET_MESSAGE_SERVICE_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.SET_REMOTE_TOKENBRIDGE_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.SET_RESERVED_TOKEN_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.owner:\n- \"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"\n values.paused:\n- false\n values.pendingOwner:\n- \"0x0000000000000000000000000000000000000000\"\n values.CONTRACT_VERSION:\n+ \"1.0\"\n values.DEFAULT_ADMIN_ROLE:\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n values.PAUSE_ALL_ROLE:\n+ \"0x56bdc3c9ec86cb7db110a7699b2ade72f0b8819727d9f7d906b012641505fa77\"\n values.PAUSE_COMPLETE_TOKEN_BRIDGING_ROLE:\n+ \"0x50962b2d10066f5051f78d5ea04a3ab09b9c87dd1002962f0b1e30e66eeb80a5\"\n values.PAUSE_INITIATE_TOKEN_BRIDGING_ROLE:\n+ \"0x3900d9d72d5177a154375317154fdc0e08377e3134a8a5d21cadccf831cc231c\"\n values.REMOVE_RESERVED_TOKEN_ROLE:\n+ \"0x19bf281d118073c159a713666aba52e0d403520cd01e03f42e0f62a0b3bd4a35\"\n values.SET_CUSTOM_CONTRACT_ROLE:\n+ \"0x550554a677c8e7b73b62db78b0ef06c5f237da4ef30b88196a899ccf591041fe\"\n values.SET_MESSAGE_SERVICE_ROLE:\n+ \"0x77974cc9cb5bafc9bb265be792d93fa46355c05701895b82f6d3b4b448c8ce00\"\n values.SET_REMOTE_TOKENBRIDGE_ROLE:\n+ \"0xbf094fe3c005c553ff0d33c7dff9d1273add12fb3f258b992f8d36224dd35b24\"\n values.SET_RESERVED_TOKEN_ROLE:\n+ \"0xeaf25fcc6b7d45bda16c56628df3f435e20319ef53b065c11ee4510083f0ae2d\"\n values.UNPAUSE_ALL_ROLE:\n+ \"0xd8b4c34c2ec1f3194471108c64ad2beda340c0337ee4ca35592f9ef270f4228b\"\n values.UNPAUSE_COMPLETE_TOKEN_BRIDGING_ROLE:\n+ \"0x8a7b208fd13ab36d18025be4f62b53d46aeb2cbe8958d2e13de74c040dddcddd\"\n values.UNPAUSE_INITIATE_TOKEN_BRIDGING_ROLE:\n+ \"0x46e34517dc946faf87aabe65eb5b4fa06b974e5c8d72c5df73b9fb6ff7b6d802\"\n }\n```\n\n```diff\n contract LineaRollup (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: The main contract of the Linea zkEVM rollup. Contains state roots, the verifier addresses and manages messages between L1 and the L2.\n sourceHashes.1:\n- \"0x6eace22f38b33b52c0608ca553753365c7aaa2ac2e9efba018e6f2c4864b9e40\"\n+ \"0xd9038151917d14b4d25257789abe9a10cecf3a5b4c0c2520860ce1338757ceff\"\n values.$implementation:\n- \"0x1825242411792536469Cbb5843fd27Ce3e9e583A\"\n+ \"0x07ddce60658A61dc1732Cacf2220FcE4A01C49B0\"\n values.$pastUpgrades.8:\n+ [\"2024-12-16T13:52:11.000Z\",\"0x96b88112de2e594cb763bc625cc2dcb6920825bb642eb1a62ff577f0c29f616d\",[\"0x07ddce60658A61dc1732Cacf2220FcE4A01C49B0\"]]\n values.$upgradeCount:\n- 8\n+ 9\n values.accessControl.PAUSE_MANAGER_ROLE:\n- {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.PAUSE_MANAGER:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.PAUSE_ALL_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.PAUSE_L1_L2_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.PAUSE_L2_L1_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_ALL_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_L1_L2_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_L2_L1_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.PAUSE_BLOB_SUBMISSION_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_BLOB_SUBMISSION_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.PAUSE_FINALIZATION_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.UNPAUSE_FINALIZATION_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.USED_RATE_LIMIT_RESETTER_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.accessControl.VERIFIER_UNSETTER_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x892bb7EeD71efB060ab90140e7825d8127991DD3\"]}\n values.GENERAL_PAUSE_TYPE:\n- 1\n values.L1_L2_PAUSE_TYPE:\n- 2\n values.L2_L1_PAUSE_TYPE:\n- 3\n values.PAUSE_MANAGER_ROLE:\n- \"0x356a809dfdea9198dd76fb76bf6d403ecf13ea675eb89e1eda2db2c4a4676a26\"\n values.PROVING_SYSTEM_PAUSE_TYPE:\n- 4\n values.CONTRACT_VERSION:\n+ \"6.0\"\n values.fallbackOperator:\n+ \"0x3697bD0bC6C050135b8321F989a5316eACbF367D\"\n values.PAUSE_ALL_ROLE:\n+ \"0x56bdc3c9ec86cb7db110a7699b2ade72f0b8819727d9f7d906b012641505fa77\"\n values.PAUSE_BLOB_SUBMISSION_ROLE:\n+ \"0x67c2dca7476ee0fe1dd3cba13428c6760bfe2599a6dfe26a9ad7ef27317c6e77\"\n values.PAUSE_FINALIZATION_ROLE:\n+ \"0xe37c272ea30e2bb381ad7cf89ae754b49153250609f36d0cbdad8b64c184bb5c\"\n values.PAUSE_L1_L2_ROLE:\n+ \"0x430a7f0cb00b5ebbe63cecc96e82cf959a883e7c13a95110854f1fa6b3fbf598\"\n values.PAUSE_L2_L1_ROLE:\n+ \"0xe1fce82838dd7a42cfe783f60dc6233c8aa2c4fc66e77817805e767ec5e349b6\"\n values.UNPAUSE_ALL_ROLE:\n+ \"0xd8b4c34c2ec1f3194471108c64ad2beda340c0337ee4ca35592f9ef270f4228b\"\n values.UNPAUSE_BLOB_SUBMISSION_ROLE:\n+ \"0xe4831f9e4316ac2c65117d1f602fbf56d38128a9973d5e3fdbc5b77265c18d40\"\n values.UNPAUSE_FINALIZATION_ROLE:\n+ \"0x1ab87f7458c0e3d07e9881c14ee67f0141703614fd48ea5b15ed987e5f4b030e\"\n values.UNPAUSE_L1_L2_ROLE:\n+ \"0xe8cb6172fcf5cbaae022b7c910224a4f0c20d53227e630056efff182155a5abc\"\n values.UNPAUSE_L2_L1_ROLE:\n+ \"0xb6cc65f42901ed602aec1619cc1ead29d487cd489094a37615153eaeb991d770\"\n values.USED_RATE_LIMIT_RESETTER_ROLE:\n+ \"0x0cf0d2deb70d7bdac2fa48c4ac99bc558170be0ce5fcb994caefa4bf7b96edf9\"\n values.VERIFIER_UNSETTER_ROLE:\n+ \"0x6b5661ddfbd1fbd525c902a513e0f47d9c74f1c1ee8a2d4f1937ad305fb8f41a\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract CallForwardingProxy (0x3697bD0bC6C050135b8321F989a5316eACbF367D)\n +++ description: A proxy contract forwarding calls to a predefined (immutable) target contract.\n```"
}
]
},
{
"id": "04f8a062",
"date": "Wed, 30 Oct 2024 14:01:12 GMT",
"timestamp": 1730296872,
"description": "Minor (2 lines) upgrade to the assembly part of `_computePublicInput()`.\n\nThe old discovery value depending on `BlockFinalized` is removed as it was empty and the event was deprecated in the contracts some time ago.",
"isHighSeverity": true,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkEVM (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: None\n sourceHashes.1:\n- \"0x9107909af0d0c9abd3904984ff1b8b0824d489b8b1ac2902b805ce7d417e2e9f\"\n+ \"0x6eace22f38b33b52c0608ca553753365c7aaa2ac2e9efba018e6f2c4864b9e40\"\n values.$implementation:\n- \"0x53fC68bFfC03D17804e5A901DE42d1eeF2e64562\"\n+ \"0x1825242411792536469Cbb5843fd27Ce3e9e583A\"\n values.$pastUpgrades.7:\n+ [\"2024-10-29T15:35:47.000Z\",\"0x0970f422c80627f28916f9c5583ff6298070893debd191ead0cf39778e4bae14\",[\"0x1825242411792536469Cbb5843fd27Ce3e9e583A\"]]\n values.$upgradeCount:\n- 7\n+ 8\n }\n```"
}
]
},
{
"id": "01beeea9",
"date": "Sat, 19 Oct 2024 06:28:17 GMT",
"timestamp": 1729319297,
"description": "The two operator addresses are changed, which will be reflected in the permissions section.\nContext: Team also helpfully notified us in advance on telegram.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkEVM (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: None\n values.accessControl.OPERATOR_ROLE.members.1:\n- \"0xa9268341831eFa4937537bc3e9EB36DbecE83C7e\"\n+ \"0x52FF08F313A00A54e3Beffb5C4a7F7446eFb6754\"\n values.accessControl.OPERATOR_ROLE.members.0:\n- \"0x9228624C3185FCBcf24c1c9dB76D8Bef5f5DAd64\"\n+ \"0x46d2F319fd42165D4318F099E143dEA8124E9E3e\"\n }\n```"
}
]
},
{
"id": "d7f534e8",
"date": "Thu, 10 Oct 2024 09:15:27 GMT",
"timestamp": 1728551727,
"description": "Signer swapped in AdminMultisig.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AdminMultisig (0x892bb7EeD71efB060ab90140e7825d8127991DD3) {\n +++ description: None\n values.$members.4:\n- \"0x36a0b60162d7F407d74bd1def01410D20437F87B\"\n+ \"0x9376c137AF5124FFc39bD8940A3D88D1cd508992\"\n }\n```"
}
]
},
{
"id": "b0a6b80c",
"date": "Fri, 26 Jul 2024 08:56:51 GMT",
"timestamp": 1721984211,
"description": "An unused verifier is removed from the registry.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract VerifierProofType1 (0x8AB455030E1Ea718e445f423Bb8D993dcAd24Cc4)\n +++ description: None\n```\n\n```diff\n contract zkEVM (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: None\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.1:\n- \"0x8AB455030E1Ea718e445f423Bb8D993dcAd24Cc4\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "0f15f1fd",
"date": "Fri, 19 Jul 2024 12:26:54 GMT",
"timestamp": 1721392014,
"description": "A new verifier is added for proofType 3 with almost no code diff to the old one (4 constants), probably related to [this PR](https://github.com/Consensys/linea-contracts/pull/20). Already [used in prod](https://app.blocksec.com/explorer/tx/eth/0x0f5c3d308947356409e0f048db7c8f4d5414840be0281c5368147fb6c8b758ab).",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkEVM (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: None\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.3:\n- \"0x1111111111111111111111111111111111111111\"\n+ \"0xBfF4a03A355eEF7dA720bBC7878F9BdBBE81fe6F\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract VerifierProofType3 (0xBfF4a03A355eEF7dA720bBC7878F9BdBBE81fe6F)\n +++ description: None\n```"
}
]
},
{
"id": "dd450d90",
"date": "Wed, 05 Jun 2024 13:36:11 GMT",
"timestamp": 1717594571,
"description": "This [upgrade](https://docs.linea.build/developers/linea-version#alpha-v32) is mainly about gas optimizations and does not change functionality. The bridge upgrade is minor, apart from it now being upgradeable by the timelock.\n\n### LineaRollup.sol\n\n- TransientStorageHelpers library added (for tstore'ing values)\n- unsetVerifierAddress() function added to unset the verifier contract for a proof type\n- Computation of finalized state and public input is now done using assembly",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ERC20Bridge (0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319) {\n +++ description: None\n upgradeability.implementation:\n- \"0x6ccfD65b0b14F67259C77Ca6267104e058dDB292\"\n+ \"0xd52c09E67aF3BE0977B52b4817366e9BaB5dCFA2\"\n upgradeability.admin:\n- \"0x5B0bb17755FBa06028530682E2FD5bc373931768\"\n+ \"0xF5058616517C068C7b8c7EbC69FF636Ade9066d6\"\n implementations.0:\n- \"0x6ccfD65b0b14F67259C77Ca6267104e058dDB292\"\n+ \"0xd52c09E67aF3BE0977B52b4817366e9BaB5dCFA2\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ERC20BridgeProxyAdmin (0x5B0bb17755FBa06028530682E2FD5bc373931768)\n +++ description: None\n```\n\n```diff\n contract zkEVM (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: None\n upgradeability.implementation:\n- \"0x934Dd4C63E285551CEceF8459103554D0096c179\"\n+ \"0x53fC68bFfC03D17804e5A901DE42d1eeF2e64562\"\n implementations.0:\n- \"0x934Dd4C63E285551CEceF8459103554D0096c179\"\n+ \"0x53fC68bFfC03D17804e5A901DE42d1eeF2e64562\"\n values.GENESIS_SHNARF:\n- \"0x4f64fe1ce613546d34d666d8258c13c6296820fd13114d784203feb91276e838\"\n+ \"0x47452a1b9ebadfe02bdd02f580fa1eba17680d57eec968a591644d05d78ee84f\"\n values.sender:\n- \"0x00000000000000000000000000000000075BCd15\"\n+ \"0x0000000000000000000000000000000000000000\"\n values.currentFinalizedState:\n+ \"0xdefa81791e0d707e911c19ca6336da4b78f81cf3e085e591c31b94155ede2b08\"\n }\n```"
}
]
},
{
"id": "0546d3e6",
"date": "Tue, 26 Mar 2024 16:10:41 GMT",
"timestamp": 1711469441,
"description": "This is an implementation upgrade that adds the ability to use blobs for data submission and deprecates the ability to finalize uncompressed blocks among smaller changes.\n\n### LineaRollup\n\nMain addition here is the submitBlobData() function and its dependencies related to kzg commitment / point evaluation.\nCompressed blocks can still be finalized without proof.\n\n### ZkEvmV2\n\nThe function for finalizing uncompressed blocks has been removed.\n\n### PlonkVerifierForDataAggregation updated\n\nThe new verifier is the same as 0xfB0C26A89833762b65098dD66b6Ae04b34D153be but with 4 changed constants: VK_QL_COM_X, VK_QL_COM_Y, VK_QK_COM_X, VK_QK_COM_Y.\nThe old one was removed from the zkEVM contract. (proof type 0)\n\n### Removed libraries\n\nTransactionDecoder, Rlp and codec libraries have been removed due to being related to raw transaction decoding when finalizing uncompressed blocks.",
"isHighSeverity": true,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkEVM (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n +++ description: None\n upgradeability.implementation:\n- \"0xAA4b3a9515c921996Abe7930bF75Eff7466a4457\"\n+ \"0x934Dd4C63E285551CEceF8459103554D0096c179\"\n implementations.0:\n- \"0xAA4b3a9515c921996Abe7930bF75Eff7466a4457\"\n+ \"0x934Dd4C63E285551CEceF8459103554D0096c179\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.1:\n- \"0x1111111111111111111111111111111111111111\"\n+ \"0x8AB455030E1Ea718e445f423Bb8D993dcAd24Cc4\"\n+++ description: Mapping of proof type to ZK Plonk Verifier contract\n values.verifiers.0:\n- \"0xfB0C26A89833762b65098dD66b6Ae04b34D153be\"\n+ \"0x1111111111111111111111111111111111111111\"\n values.GENESIS_SHNARF:\n+ \"0x4f64fe1ce613546d34d666d8258c13c6296820fd13114d784203feb91276e838\"\n }\n```\n\n```diff\n- Status: DELETED\n contract PlonkVerifierForDataAggregation (0xfB0C26A89833762b65098dD66b6Ae04b34D153be)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierForMultiTypeDataAggregation (0x8AB455030E1Ea718e445f423Bb8D993dcAd24Cc4)\n +++ description: None\n```"
}
]
},
{
"id": "75facd10",
"date": "Tue, 27 Feb 2024 14:09:42 GMT",
"timestamp": 1709042982,
"description": "Deleted two verifiers at `proofType = [6, 7]`. Both of them are identical and\nonly differ in the initial setup parameters.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierFullLarge (0x2eDEa64BB8b45Fd87c05dC89286f1a60F4f4BEE0) {\n }\n```\n\n```diff\n- Status: DELETED\n contract PlonkVerifierFull (0x6312E56c17e1011dD0821558034a77BB60D06e1B) {\n }\n```\n\n```diff\n contract zkEVM (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n values.verifiers.7:\n- \"0x2eDEa64BB8b45Fd87c05dC89286f1a60F4f4BEE0\"\n+ \"0x1111111111111111111111111111111111111111\"\n values.verifiers.6:\n- \"0x6312E56c17e1011dD0821558034a77BB60D06e1B\"\n+ \"0x1111111111111111111111111111111111111111\"\n }\n```"
}
]
},
{
"id": "d37a911c",
"date": "Wed, 14 Feb 2024 13:10:31 GMT",
"timestamp": 1707916231,
"description": "Major upgrade. Mainly related to reducing fees with compression and aggregated proofs.\n\n### ZkEvmV2\n\nIt's now inherited by the LineaRollup contract. The `setVerifierAddress` function has been moved to LineaRollup. The pause system has been tweaked but it's equivalent.\nIt's still possible to finalize blocks without proofs.\n\n### LineaRollup\n\nA VERIFIER_SETTER_ROLE is introduced that can call the `setVerifierAddress` function. Data and proof submission are now two separate steps.\nCompressed data is posted using the `submitData` function and proofs are submitted with the `finalizeCompressedBlocksWithProofs` or `finalizeCompressedBlocksWithoutProof`.\n\n### L1MessageManager\n\nInherited by LineaRollup. It has been renamed to L1MessageManagerV1 without big changes and it's now inherited by the new L1MessageManager. It mainly contains helper functions.\n\n### L1MessageService\n\nInherited by LineaRollup. It has been renamed to L1MessageServiceV1 without big changes and it's now inherited by the new L1MessageService. It mainly contains helper functions.\n\nClaiming messages now requires a Merkle proof. Previously, individual hashes for each message were saved but now they are aggregated.",
"isHighSeverity": true,
"changeCount": 18,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkEVM (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n upgradeability.implementation:\n- \"0xb32c3D0dDb0063FfB15E8a50b40cC62230D820B3\"\n+ \"0xAA4b3a9515c921996Abe7930bF75Eff7466a4457\"\n implementations.0:\n- \"0xb32c3D0dDb0063FfB15E8a50b40cC62230D820B3\"\n+ \"0xAA4b3a9515c921996Abe7930bF75Eff7466a4457\"\n values.accessControl.OPERATOR_ROLE.members[1]:\n+ \"0xa9268341831eFa4937537bc3e9EB36DbecE83C7e\"\n values.accessControl.VERIFIER_SETTER_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0xd6B95c960779c72B8C6752119849318E5d550574\"]}\n values.GENERAL_PAUSE_TYPE:\n- \"0x06193bb948d6b7a6fcbe51c193ccf2183bb5d979b6ae5d3a6971b8851461d3b0\"\n+ 1\n values.L1_L2_PAUSE_TYPE:\n- \"0x9a80e24e463f00a8763c4dcec6a92d07d33272fa5db895d8589be70dccb002df\"\n+ 2\n values.L2_L1_PAUSE_TYPE:\n- \"0x21ea2f4fee4bcb623de15ac222ea5c1464307d884f23394b78ddc07f9c9c7cd8\"\n+ 3\n values.PROVING_SYSTEM_PAUSE_TYPE:\n- \"0x3a56b1bd788a764cbd923badb6d0719f21f520455285bf6877e636d08708878d\"\n+ 4\n values.verifiers.0:\n- \"0x1111111111111111111111111111111111111111\"\n+ \"0xfB0C26A89833762b65098dD66b6Ae04b34D153be\"\n values.provenCompressedBlocksWithoutProof:\n+ [2242752]\n values.provenNonCompressedBlocksWithoutProof:\n+ []\n values.systemMigrationBlock:\n+ 19219000\n values.VERIFIER_SETTER_ROLE:\n+ \"0x32937fd5162e282df7e9a14a5073a2425321c7966eaf70ed6c838a1006d84c4c\"\n errors:\n- {\"provenCompressedBlocksWithoutProof\":\"Cannot find a matching event for DataFinalized\",\"provenNonCompressedBlocksWithoutProof\":\"Cannot find a matching event for BlockFinalized\"}\n derivedName:\n- \"ZkEvmV2\"\n+ \"LineaRollup\"\n }\n```\n\n```diff\n contract Roles (0xF24f1DC519d88246809B660eb56D94048575d083) {\n values.roles.roles.1.functions.0xd19d4B5d358258f05D7B411E21A1460D11B0876F.pauseByType(bytes32):\n- {\"options\":\"None\",\"wildcarded\":true,\"parameters\":[]}\n values.roles.roles.1.functions.0xd19d4B5d358258f05D7B411E21A1460D11B0876F.pauseByType(uint8):\n+ {\"options\":\"None\",\"wildcarded\":true,\"parameters\":[]}\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierForDataAggregation (0xfB0C26A89833762b65098dD66b6Ae04b34D153be) {\n }\n```"
}
]
},
{
"id": "a507d730",
"date": "Mon, 15 Jan 2024 14:53:19 GMT",
"timestamp": 1705330399,
"description": "New role has been configured (`1`).\nOne and only member has been assigned (`0x453B3A4b4d64B4E6f472A306c3D4Fc318C34bbA8`).\n\nAssigned member can now invoke:\n\n- `pauseByType(bytes32)` on ZkEVM/MessageService (`0xd19d4B5d358258f05D7B411E21A1460D11B0876F`)\n- `pause()` on ERC20Bridge (`0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319`)\n- `pause()` on USDCBridge (`0x504A330327A089d8364C4ab3811Ee26976d388ce`)",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Roles (0xF24f1DC519d88246809B660eb56D94048575d083) {\n upgradeability.modules[0]:\n+ \"0x453B3A4b4d64B4E6f472A306c3D4Fc318C34bbA8\"\n values.roles.roles.1:\n+ {\"members\":{\"0x453B3A4b4d64B4E6f472A306c3D4Fc318C34bbA8\":true},\"targets\":{\"0xd19d4B5d358258f05D7B411E21A1460D11B0876F\":{\"clearance\":\"Function\",\"options\":\"None\"},\"0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319\":{\"clearance\":\"Function\",\"options\":\"None\"},\"0x504A330327A089d8364C4ab3811Ee26976d388ce\":{\"clearance\":\"Function\",\"options\":\"None\"}},\"functions\":{\"0xd19d4B5d358258f05D7B411E21A1460D11B0876F\":{\"pauseByType(bytes32)\":{\"options\":\"None\",\"wildcarded\":true,\"parameters\":[]}},\"0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319\":{\"pause()\":{\"options\":\"None\",\"wildcarded\":true,\"parameters\":[]}},\"0x504A330327A089d8364C4ab3811Ee26976d388ce\":{\"pause()\":{\"options\":\"None\",\"wildcarded\":true,\"parameters\":[]}}},\"compValues\":{},\"compValuesOneOf\":{}}\n }\n```"
}
]
},
{
"id": "3376a51f",
"date": "Thu, 23 Nov 2023 15:07:23 GMT",
"timestamp": 1700752043,
"description": "Added a new module to the AdminMultisig called Roles. The owner of this module\n(the AdminMultisig itself) can grant or remove access to given targets (whole\ncontracts) or just a certain function in a given contract per role. The module\nchecks if the message sender has a given role and checks if the role is allowed\nto execute a given operation. This whole module seems like it solves the same\nissue as AccessControl but with more granularity just like the extended\nAccessControl in Scroll.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AdminMultisig (0x892bb7EeD71efB060ab90140e7825d8127991DD3) {\n upgradeability.modules[0]:\n+ \"0xF24f1DC519d88246809B660eb56D94048575d083\"\n }\n```\n\n```diff\n contract zkEVM (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n values.limitInWei:\n- \"6250000000000000000000\"\n+ \"18750000000000000000000\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract MultiSend (0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Roles (0xF24f1DC519d88246809B660eb56D94048575d083) {\n }\n```"
}
]
},
{
"id": "d18fed4f",
"date": "Mon, 16 Oct 2023 07:14:10 GMT",
"timestamp": 1697440450,
"description": "Unused verifier contracts are set to 0x111. The reason is that every position in the array corresponds to a proof type, therefore when a new proof type is introduced, a new verifier is added, and when a proof type is removed, the corresponding verifier is set to 0x111. My guess on why it is set to 0x111 and not 0x0 is that it allows to throw a different error in the verifier contract (deprecated proof), which is more informative than the error thrown when the verifier is not found (out of bounds).",
"isHighSeverity": false,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract PlonkVerifierFullLarge (0xa4F1155202D36348097b7488b0D2365fA91f8CaC) {\n }\n```\n\n```diff\n- Status: DELETED\n contract PlonkVerifierFull (0xc01E6807DB9Fb9cC75E9Fe622ba8e7f3eB9f2B32) {\n }\n```\n\n```diff\n- Status: DELETED\n contract PlonkVerifierFull2 (0xC84832f69bFFbC1A94E44a157A342766E959ED27) {\n }\n```\n\n```diff\n contract zkEVM (0xd19d4B5d358258f05D7B411E21A1460D11B0876F) {\n values.verifiers[9]:\n+ \"0x0000000000000000000000000000000000000000\"\n values.verifiers[8]:\n+ \"0x0000000000000000000000000000000000000000\"\n values.verifiers[7]:\n+ \"0x2eDEa64BB8b45Fd87c05dC89286f1a60F4f4BEE0\"\n values.verifiers[6]:\n+ \"0x6312E56c17e1011dD0821558034a77BB60D06e1B\"\n values.verifiers[5]:\n+ \"0x0000000000000000000000000000000000000000\"\n values.verifiers[4]:\n+ \"0x1111111111111111111111111111111111111111\"\n values.verifiers.3:\n- \"0xC84832f69bFFbC1A94E44a157A342766E959ED27\"\n+ \"0x1111111111111111111111111111111111111111\"\n values.verifiers.1:\n- \"0xa4F1155202D36348097b7488b0D2365fA91f8CaC\"\n+ \"0x1111111111111111111111111111111111111111\"\n values.verifiers.0:\n- \"0xc01E6807DB9Fb9cC75E9Fe622ba8e7f3eB9f2B32\"\n+ \"0x1111111111111111111111111111111111111111\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierFullLarge (0x2eDEa64BB8b45Fd87c05dC89286f1a60F4f4BEE0) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierFull (0x6312E56c17e1011dD0821558034a77BB60D06e1B) {\n }\n```"
}
]
}
]
+18 -12
{
"changes": [
{
"timestamp": 1690185683,
"type": "state",
"earliest": 1690185683
},
{
"timestamp": 1690185787,
"type": "state",
"earliest": 1690185787
},
{
"timestamp": 1690563167,
"type": "state",
"earliest": 1690563167
},
{
"timestamp": 1690563245,
"type": "state",
"earliest": 1690563245
},
{
"timestamp": 1690564149,
"type": "state",
"earliest": 1690564149
},
{
"timestamp": 1690564163,
"type": "state",
"earliest": 1690564163
},
{
"timestamp": 1691513927,
"type": "code",
"earliest": 1691513927
},
{
"timestamp": 1691513987,
"type": "state",
"earliest": 1691513987
},
{
"timestamp": 1693599947,
"type": "state",
"earliest": 1693599947
},
{
"timestamp": 1693600112,
"type": "state",
"earliest": 1693600112
},
{
"timestamp": 1697064851,
"type": "state",
"updateId": "d18fed4f",
"earliest": 1697064851
},
{
"timestamp": 1697192783,
"type": "state",
"updateId": "d18fed4f",
"earliest": 1697192783
},
{
"timestamp": 1700506391,
"type": "state",
"updateId": "3376a51f",
"earliest": 1700506391
},
{
"timestamp": 1700507439,
"type": "state",
"updateId": "3376a51f",
"earliest": 1700507439
},
{
"timestamp": 1707813305,
"type": "code",
"earliest": 1707813305
},
{
"timestamp": 1707813599,
"type": "code",
"updateId": "d37a911c",
"earliest": 1707813599
},
{
"timestamp": 1708467875,
"type": "state",
"updateId": "75facd10",
"earliest": 1708467875
},
{
"timestamp": 1711448987,
"type": "code",
"updateId": "0546d3e6",
"earliest": 1711448987
},
{
"timestamp": 1711449417,
"type": "code",
"earliest": 1711449417
},
{
"timestamp": 1711463651,
"type": "state",
"updateId": "0546d3e6",
"earliest": 1711463651
},
{
"timestamp": 1717588175,
"type": "code",
"earliest": 1717588175
},
{
"timestamp": 1717588175,
"type": "code",
"earliest": 1717588175
},
{
"timestamp": 1717588517,
"type": "code",
"earliest": 1717588517
},
{
"timestamp": 1721289491,
"type": "state",
"updateId": "0f15f1fd",
"earliest": 1721289491
},
{
"timestamp": 1721724311,
"type": "state",
"updateId": "b0a6b80c",
"earliest": 1721724311
},
{
"timestamp": 1730216147,
"type": "code",
"earliest": 1730216147
},
{
"timestamp": 1734357131,
"type": "code",
"earliest": 1734357131
},
{
"timestamp": 1734357131,
"type": "code",
"earliest": 1734357131
},
{
"timestamp": 1734357983,
"type": "code",
"earliest": 1734357983
},
{
"timestamp": 1734357983,
"type": "code",
"earliest": 1734357983
},
{
"timestamp": 1745842943,
"type": "state",
"updateId": "f6ae248d",
"earliest": 1745842943
},
{
"timestamp": 1748942951,
"type": "state",
"updateId": "6b70b41a",
"earliest": 1748942951
},
{
"timestamp": 1749460535,
"type": "state",
"updateId": "6b70b41a",
"earliest": 1749460535
},
{
"timestamp": 1756078979,
"type": "state",
"updateId": "94da819f",
"earliest": 1756078979
},
{
"timestamp": 1758532607,
"type": "state",
"updateId": "b62380e0",
"earliest": 1758532607
},
{
"timestamp": 1758532817,
"type": "state",
"updateId": "b62380e0",
"earliest": 1758532817
},
{
"timestamp": 1761067259,
"type": "state",
"updateId": "2b932220",
"earliest": 1761067259
},
{
"timestamp": 1761578543,
"type": "state",
"updateId": "2b932220",
"earliest": 1761578543
},
{
"timestamp": 1763371871,
"type": "state",
"updateId": "8f408813",
"earliest": 1763371871
},
{
"timestamp": 1764802439,
"type": "state",
"updateId": "5d2181e9",
"earliest": 1764802439
},
{
"timestamp": 1772375135,
"type": "code",
"earliest": 1772375135
},
{
"timestamp": 1772375135,
"type": "state",
"updateId": "a0fe459a",
"earliest": 1772375135
},
{
"timestamp": 1774211675,
"type": "state",
"updateId": "cfe482dd",
"earliest": 1774211675
},
{
"timestamp": 1774393919,
"type": "state",
"updateId": "440c8e93",
"earliest": 1774393919
},
{
"timestamp": 1774970807,
"type": "code",
"earliest": 1774970807
},
{
"timestamp": 1774970807,
"type": "code",
"earliest": 1774970807
},
{
"timestamp": 1774970807,
"type": "state",
"updateId": "4f07d08b",
"earliest": 1774970807
},
{
"timestamp": 1774970935,
"type": "code",
"earliest": 1774970935
},
{
"timestamp": 1774970935,
"type": "code",
"earliest": 1774970935
},
{
"timestamp": 1775081291,
"type": "state",
"updateId": "85c95a19",
"earliest": 1775081291
},
{
"timestamp": 1776450743,
"type": "state",
"updateId": "1e00a7f6",
"earliest": 1776450743
},
{
"timestamp": 1776778631,
"type": "state",
"updateId": "a3b27464",
"earliest": 1776778631
},
{
"timestamp": 1776778631,
"type": "state",
"updateId": "a3b27464",
"earliest": 1776778631
},
{
"timestamp": 1777540107,
"type": "state",
"updateId": "45d15938",
"earliest": 1777540107
},
{
"timestamp": 1777542527,
"type": "state",
"updateId": "45d15938",
"earliest": 1777542527
},
{
"timestamp": 1784201579,
"type": "code",
"earliest": 1784201579
},
{
"timestamp": 1784201579,
"type": "state",
"updateId": "05cf3683",
"earliest": 1784201579
},
{
"timestamp": 1784201579,
"type": "state",
"updateId": "05cf3683",
"earliest": 1784201579
},
{
"timestamp": 1788253667,
"type": "code",
"earliest": 1788253667
},
{
"timestamp": 1788253667,
"type": "state",
"updateId": "97d70ccc",
"earliest": 1788253667
},
{
"timestamp": 1788510683,
"type": "state",
"updateId": "e20553c4",
"earliest": 1788510683
},
{
"timestamp": 1791450359,
"type": "state",
"updateId": "4cedd31d",
"earliest": 1791450359
}
],
"contracts": [
{
"name": "LineaRollup",
"address": "eth:0xd19d4B5d358258f05D7B411E21A1460D11B0876F",
"isVerified": true,
"ossifyingSince": 1788510683,
"ossifyingSince": 1791450359,
"codeChangeCount": 10,
"stateChangeCount": 28
"stateChangeCount": 29
},
{
"name": "PlonkVerifierFull",
"address": "eth:0x1d930e3Fac9fbc7026eC17962d2F57d558d37532",
"isVerified": true,
"ossifyingSince": 1791279407,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "PlonkVerifierFull",
"address": "eth:0xAFF26999780901ee8B48f0a1271a177ff46fD53F",
"isVerified": true,
"ossifyingSince": 1788424391,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "YieldManager",
"address": "eth:0xeb63cABDd78537b9b72A2AFB573F7caa91bd8D94",
"isVerified": true,
"ossifyingSince": 1788253667,
"codeChangeCount": 0,
"stateChangeCount": 5
},
{
"name": "PlonkVerifierFull",
"address": "eth:0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77",
"isVerified": true,
"ossifyingSince": 1783527107,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "AddressFilter",
"address": "eth:0x526AE78F0103Ae73F05449ae30eb626C1003784E",
"isVerified": true,
"ossifyingSince": 1781777411,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "L2MessageService",
"address": "linea:0x508Ca82Df566dCD1B0DE8296e70a96332cD644ec",
"isVerified": true,
"ossifyingSince": 1777540107,
"codeChangeCount": 4,
"stateChangeCount": 6
},
{
"name": "TokenBridge",
"address": "linea:0x353012dc4a9A6cF55c941bADC267f82004A8ceB9",
"isVerified": true,
"ossifyingSince": 1774970935,
"codeChangeCount": 3,
"stateChangeCount": 0
},
{
"name": "TokenBridge",
"address": "eth:0x051F1D88f0aF5763fB888eC4378b4D8B29ea3319",
"isVerified": true,
"ossifyingSince": 1774970807,
"codeChangeCount": 3,
"stateChangeCount": 0
},
{
"name": "LidoStVaultYieldProvider",
"address": "eth:0x486D8cADc10489B30b64c890aEc747F1220eEEC3",
"isVerified": true,
"ossifyingSince": 1770742547,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "CallForwardingProxy",
"address": "eth:0x3697bD0bC6C050135b8321F989a5316eACbF367D",
"isVerified": true,
"ossifyingSince": 1733219987,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "UpgradeableBeacon",
"address": "linea:0xE798695d2e78f7caeb5BbF3385433959324c02c0",
"isVerified": true,
"ossifyingSince": 1691068246,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "BridgedToken",
"address": "linea:0xda8AEFCf0F9B0b81915a2C124f913e58212D49dF",
"isVerified": true,
"ossifyingSince": 1691068234,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "UpgradeableBeacon",
"address": "eth:0x971f46a2852d11D59dbF0909e837cfd06f357DeB",
"isVerified": true,
"ossifyingSince": 1691067839,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "BridgedToken",
"address": "eth:0x36f274C1C197F277EA3C57859729398FCc8a3763",
"isVerified": true,
"ossifyingSince": 1691067827,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "L2Timelock",
"address": "linea:0xc808BfCBeD34D90fa9579CAa664e67B9A03C56ca",
"isVerified": true,
"ossifyingSince": 1690563245,
"codeChangeCount": 0,
"stateChangeCount": 1
},
{
"name": "Timelock",
"address": "eth:0xd6B95c960779c72B8C6752119849318E5d550574",
"isVerified": true,
"ossifyingSince": 1690563167,
"codeChangeCount": 0,
"stateChangeCount": 1
},
{
"name": "ProxyAdmin",
"address": "eth:0xF5058616517C068C7b8c7EbC69FF636Ade9066d6",
"isVerified": true,
"ossifyingSince": 1689775200,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ProxyAdmin",
"address": "linea:0x1E1f6F22f97b4a7522D8B62e983953639239774E",
"isVerified": true,
"ossifyingSince": 1689775200,
"codeChangeCount": 0,
"stateChangeCount": 0
}
],
"deployments": [
1688650653,
1688650665,
1689150959,
1689151821,
1689158711,
1689159923,
1691067827,
1691067839,
1691067875,
1691068234,
1691068246,
1691068282,
1733219987,
1770742511,
1770742547,
1781777411,
1783527107,
1788424391
1788424391,
1791279407
],
"observedSince": 1689775200
}
+3 -5
+3 -5
{
"creator": "Consensys",
"projectsForTvs": [
{
"projectId": "linea",
"sinceTimestamp": 1689112800
}
],
"proofSystemInfo": "## Description\n\n[Linea prover](https://github.com/Consensys/linea-monorepo/tree/main/prover) implements a zkEVM by creating a custom arithmetization of EVM state transition (including precompiles) and proving it in a series of recursive SNARKs (i.e. without implementing a zkVM). The proof is wrapped into a Plonk with KZG for efficient onchain verification. Linea prover targets 128 bits of security.\n\n## Proof system\n\nLinea prover includes Wizard-IOP framework for extending polynomial IOPs with more powerful queries, Arcane compiler of Wizard-IOP into polynomial IOP and Vortex list polynomial commitment (LPC) scheme.\n\nWizard-IOP represents an extension of polynomial IOP with a wider range of queries, including inclusion check, permutation check, range check etc. Vortex LPC is a batchable polynomial commitment that is based on [Ligero](https://eprint.iacr.org/2022/1608) with lattice-based hash functions. To achieve succinct proof size, Linea prover performs multiple rounds of self-recursion by arithmetizing the Vortex verifier in the Wizard-IOP framework.\n\n[Since April 2026](https://linea.build/blog/small-fields-faster-proving-on-linea-toward-real-time-finality), the zkEVM arithmetization is done over KoalaBear 31-bit field for performance reasons, utilizing its degree 4 extension for commitment openings. During the recursive rounds Plonk+KZG schemes over curves BW6, BLS12-377, and BN254 are used, creating a dependency on 3 trusted setups, see [below](#trusted-setups) for more details.\n\nLinea prover also introduces [limitless mode](https://github.com/Consensys/linea-monorepo/tree/main/prover/backend/execution/limitless), which segments the proving process into parallelizable jobs.\n\n### EVM circuits\n\nThis level of Linea prover produces execution proof and data availability proof after several rounds of self-recursive compression. Both of these are Plonk based proofs over KoalaBear field and BLS12-377 curve.\n\nExecution proof validates the correct execution of transactions within the EVM, including knowledge of correct EVM traces, correctness of precompiles and consistency of public inputs.\n\nData availability proof links compressed blob data, decompressed payloads, and execution-data commitments for EVM execution circuits.\n\n### Aggregation circuits\n\nAt this stage several proofs generated by execution and compression circuits are recursively verified within the aggregation circuit, which also checks the “connection” of all public inputs across all circuits. It leverages a composite proof system that combines several Plonk circuits on the BW6 and BLS12-377 curves with a goal of performant recursion.\n\n### Final wrap\n\nIn the end the Linea proof is wrapped in a [gnark](https://github.com/Consensys/gnark) implementation of Plonk over BN254 curve for even more efficiency onchain. For Plonk, Aztec Ignition trusted setup ceremony is used, see [below](#trusted-setups) for more details.",
"techStack": {
"zkVM": [
{
"id": "linea",
"type": "Plonk",
"name": "Linea",
"description": "Prover system of Linea written in Go, includes Vortex polynomial commitment and Arcane compiler."
},
{
"id": "EVM",
"type": "ISA",
"name": "EVM",
"description": "Instruction language for Ethereum VM."
},
{
"id": "BLS12-377",
"type": "curve",
"name": "BLS12-377",
"description": "Pairing-friendly 377-bit prime field Weierstrass elliptic curve."
},
{
"id": "BW6-761",
"type": "curve",
"name": "BW6-761",
"description": "Pairing-friendly 761-bit prime field elliptic curve introduced by Housni and Guillevic."
},
{
"id": "KoalaBear",
"type": "Field",
"name": "Koala Bear",
"description": "Prime field of order p = 2**31 - 2**24 + 1."
}
],
"finalWrap": [
{
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
{
"id": "BN254",
"type": "curve",
"name": "BN254",
"description": "BN254, aka BN256, aka alt_bn128 pairing-friendly 254-bit prime field Weierstrass elliptic curve."
}
]
},
"trustedSetups": [
{
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"id": "AztecIgnition",
"name": "Aztec Ignition",
"participantCount": 176,
"risk": "green",
"shortDescription": "Aztec Ignition is a trusted setup ceremony that was run by Aztec for KZG commitment over BN254 curve in 2019. It included 176 participants and was publicly open for participation.",
"longDescription": "Aztec Ignition is a trusted setup ceremony for KZG commitments over BN254 curve that was run by Aztec for KZG commitment over BN254 curve in 2019. \nIt included 176 participants and was publicly open for participation.\n\n- Github repo to download and verify the ceremony artifacts: [https://github.com/AztecProtocol/ignition-verification](https://github.com/AztecProtocol/ignition-verification).\n- Github repo with instructions for ceremony participants: [https://github.com/AztecProtocol/Setup](https://github.com/AztecProtocol/Setup).\n- Ceremony announcement with a call to participate: [https://aztec.network/blog/announcing-ignition](https://aztec.network/blog/announcing-ignition)."
},
{
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"id": "Aleo",
"risk": "yellow",
"name": "Aleo stage I trusted setup",
"participantCount": 106,
"shortDescription": "Trusted setup for KZG commitments over BLS12-377 curve, initially run as Aleo's Stage I setup. Ceremony has 106 participants and was publicly open for participation.",
"longDescription": "Ceremony generated trusted setup for KZG commitments over BLS12-377 curve, it was originally run as stage I setup\nfor Aleo blockchain and later reused for Linea prover. Ceremony has 106 participants.\n\n- Repo with ceremony instructions [https://github.com/AleoNet/aleo-setup](https://github.com/AleoNet/aleo-setup)\n- Link to the ceremony details: [https://setup.aleo.org](https://setup.aleo.org/)"
},
{
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"id": "CeloPlumo",
"name": "Celo Plumo",
"participantCount": 55,
"risk": "yellow",
"shortDescription": "Trusted setup for KZG commitments over BW6-761 curve, initially run for Celo Plumo. Ceremony has 55 participants and was publicly open for participation.",
"longDescription": "Ceremony generated trusted setup for KZG commitments over BW6-761 curve, it was originally run for Celo\nPlumo and later reused for Linea prover. Ceremony has 55 participants.\n\n- Repo with ceremony instructions: [https://github.com/celo-org/snark-setup?tab=readme-ov-file](https://github.com/celo-org/snark-setup?tab=readme-ov-file)\n- Link to the ceremony details: [https://celo.org/plumo](https://celo.org/plumo) (it is broken. Archived version here: [https://web.archive.org/web/20221201203227/https://celo.org/plumo](https://web.archive.org/web/20221201203227/https://celo.org/plumo))\n- Links to ceremony transcript: [https://console.cloud.google.com/storage/browser/plumoceremonyphase1/chunks](https://console.cloud.google.com/storage/browser/plumoceremonyphase1/chunks)\n- Link to ceremony verification code: [https://github.com/Consensys/gnark-ignition-verifier/blob/feat/celo_parser/celo/main.go](https://github.com/Consensys/gnark-ignition-verifier/blob/feat/celo_parser/celo/main.go)"
}
],
"verifierHashes": [
{
"hash": "0xbe73a8003797063d70b44eba376a814caf3399361069b5e5e43660cc435c27c9",
"name": "Linea Plonk Type 0",
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"knownDeployments": [
{
"address": "eth:0xAFF26999780901ee8B48f0a1271a177ff46fD53F"
}
],
"verificationStatus": "notVerified",
"description": "Custom verifier ID: SHA256 hash of all VK_... values from the smart contract, abi packed in the same order they are defined."
},
{
"hash": "0x6ffac481bc247d3ebf14238058f222f104b3b0c0d1617625c41b859045984621",
"hash": "0xabaec8554ae44d4753172f85c8b68f59eec6f51de6301b126ca07cebbeb571b1",
"name": "Linea Plonk Type 1",
"sourceLink": "https://github.com/Consensys/linea-monorepo/tree/477b0a4288fc54da185a992c47772c377d3ac1e9/prover",
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"knownDeployments": [
{
"address": "eth:0x09ac9f7E5Fb37e241e0B1e52aaF01eFE0a488a77"
"address": "eth:0x1d930e3Fac9fbc7026eC17962d2F57d558d37532"
}
],
"verificationStatus": "successful",
"verificationSteps": "The regeneration process requires approximately 1 TiB of memory and approximately 400 GiB of disk space for trusted setup files and generated artifacts. It takes around 2 hours, excluding fetching 132 GiB of trusted setup assets.\nWe have verified the steps below on an Ubuntu machine.\n\n1. Install build prerequisites: `build-essential` and the latest version of Go.\n2. Optionally, set up additional swap RAM. We used:\n```\nsudo apt install zram-tools\nvim /etc/default/zramswap # set algo to zstd, % to 20 and priority to 100\nsudo systemctl stop zramswap\nsudo systemctl start zramswap\n```\n3. Check out tag `releases/prover/v1.0.5` (commit `477b0a4288fc54da185a992c47772c377d3ac1e9`) of [linea-monorepo](https://github.com/Consensys/linea-monorepo):\n```\ngit clone https://github.com/Consensys/linea-monorepo.git\ncd linea-monorepo\ngit checkout releases/prover/v1.0.5\n```\n4. Download trusted setup files (132 GiB) from the L2BEAT hosting server into the `prover/prover-assets/kzgsrs` dir:\n```\ncd prover/prover-assets/kzgsrs\nwget -r -np -nH --cut-dirs=1 -R \"index.html*\" https://trusted-setup-hosting.l2beat.com/files/\n```\n5. Build the circuits and the verifier contract, this step takes several hours:\n```\n# from the linea-monorepo/prover dir\nmake setup\n```\nThe generated verifier smart contract can be found in the `prover/prover-assets` directory, under the `emulation/Verifier.sol` subdirectory.",
"verificationStatus": "notVerified",
"description": "Custom verifier ID: SHA256 hash of all VK_... values from the smart contract, abi packed in the same order they are defined."
}
]
}
+25 -11
+10 -10
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "ScrollAdminMultisig",
"name": "ScrollAdminMultisig",
"description": "A Multisig with 3/4 threshold. \nMultisig of Scroll team operators that controls the rollup's upgrade and proof-system parameter paths.\n* Can interact with TimelockSCEmergency\n * cancel queued transactions \n * execute transactions that are ready \n * propose transactions \n * update the minimum delay and manage all access control roles of the timelock [via: TimelockSCEmergency - or - acting directly]\n* Can interact with TimelockSCSlow\n * cancel queued transactions \n * execute transactions that are ready \n * propose transactions \n * update the minimum delay and manage all access control roles of the timelock **with 3d delay or with no delay** [via: TimelockSCSlow with 3d delay - or - acting directly]\n* Can interact with ScrollOwner\n * disable enforced batch mode [via: TimelockSCEmergency]\n * unpause core contracts via the PauseController \n * update and reset the PauseController cooldown period [via: TimelockSCEmergency]\n * update ScrollChain zk proof verifier [via: TimelockSCEmergency]\n * update the L1ScrollMessenger fee vault address [via: TimelockSCEmergency]\n * update the minimum delay message queue parameters and enforced mode parameters [via: TimelockSCEmergency]\n * upgrade all core contracts of the system [via: TimelockSCEmergency]",
"accounts": [
{
"address": "eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761",
"type": "Contract",
"isVerified": true,
"name": "0xcca5…F761",
"url": "https://etherscan.io/address/0xcca54B0916Cee2186b47E9709BEdcb7041A8F761"
}
],
"chain": "ethereum",
"references": [
{
"title": "Governance Update: Security Council Transition, Contributor Roles & Operational Adjustments (Scroll forum, 2026-04-13)",
"url": "https://forum.scroll.io/t/governance-update-security-council-transition-contributor-roles-operational-adjustments/1470"
},
{
"title": "L1 execution tx",
"url": "https://etherscan.io/tx/0xbc6079d54f7a5fc548402db349168732c3f02430c156f4723865934bdb373765"
}
],
"participants": [
{
"address": "eth:0x8460aCc9A42D2CF07015a3e838df2E3aB37d30ae",
"type": "EOA",
"isVerified": true,
"name": "0x8460…30ae",
"url": "https://etherscan.io/address/0x8460aCc9A42D2CF07015a3e838df2E3aB37d30ae"
},
{
"address": "eth:0xEbbeeAA424AE904508465a41c927Be594C43Dc68",
"type": "EOA",
"isVerified": true,
"name": "0xEbbe…Dc68",
"url": "https://etherscan.io/address/0xEbbeeAA424AE904508465a41c927Be594C43Dc68"
},
{
"address": "eth:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"type": "EOA",
"isVerified": true,
"name": "EOA 2",
"url": "#EOA-2"
},
{
"address": "eth:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-3"
}
],
"discoveryDrivenData": true
},
{
"id": "Scroll Multisig 2",
"name": "Scroll Multisig 2",
"description": "A Multisig with 2/4 threshold. \n* Can interact with ScrollOwner\n * pause the ScrollChain in permissioned mode and the L1 -> L2 message queue [via: TimelockEmergency]\n * remove permissioned batchers and provers to the whitelist, and update the sequencer address [via: TimelockEmergency]\n * revert unfinalized batches [via: TimelockEmergency]\n* Can interact with TimelockEmergency\n * cancel queued transactions \n * propose transactions \n * update the minimum delay and manage all access control roles of the timelock [via: TimelockEmergency - or - acting directly]",
"accounts": [
{
"address": "eth:0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc",
"type": "Contract",
"isVerified": true,
"name": "0xbdA1…0cBc",
"url": "https://etherscan.io/address/0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x0c5cc5155b346453154059aD9d2Ff695dB92f774",
"type": "EOA",
"isVerified": true,
"name": "EOA 1",
"url": "#EOA-1-and-EOA-4"
},
{
"address": "eth:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-3"
},
{
"address": "eth:0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402",
"type": "EOA",
"isVerified": true,
"name": "EOA 4",
"url": "#EOA-1-and-EOA-4"
},
{
"address": "eth:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"type": "EOA",
"isVerified": true,
"name": "EOA 2",
"url": "#EOA-2"
}
],
"discoveryDrivenData": true
},
{
"id": "Scroll Multisig 3",
"name": "Scroll Multisig 3",
"description": "A Multisig with 2/4 threshold. \n* Can interact with TimelockFast\n * cancel queued transactions \n * propose transactions \n * update the minimum delay and manage all access control roles of the timelock **with 1d delay or with no delay** [via: TimelockFast with 1d delay - or - acting directly]\n* Can interact with ScrollOwner\n * add permissioned batchers and provers to the whitelist **with 1d delay** [via: TimelockFast with 1d delay]\n * set ERC20 gateways in the L1GatewayRouter **with 1d delay** [via: TimelockFast with 1d delay]",
"accounts": [
{
"address": "eth:0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe",
"type": "Contract",
"isVerified": true,
"name": "0xEfc9…4dbe",
"url": "https://etherscan.io/address/0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x8460aCc9A42D2CF07015a3e838df2E3aB37d30ae",
"type": "EOA",
"isVerified": true,
"name": "0x8460…30ae",
"url": "https://etherscan.io/address/0x8460aCc9A42D2CF07015a3e838df2E3aB37d30ae"
},
{
"address": "eth:0xEbbeeAA424AE904508465a41c927Be594C43Dc68",
"type": "EOA",
"isVerified": true,
"name": "0xEbbe…Dc68",
"url": "https://etherscan.io/address/0xEbbeeAA424AE904508465a41c927Be594C43Dc68"
},
{
"address": "eth:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-3"
},
{
"address": "eth:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"type": "EOA",
"isVerified": true,
"name": "EOA 2",
"url": "#EOA-2"
}
],
"discoveryDrivenData": true
},
{
"id": "Safe",
"name": "Safe",
"description": "A Multisig with 9/12 threshold. ",
"accounts": [
{
"address": "eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD",
"type": "Contract",
"isVerified": true,
"name": "0x1a37…24DD",
"url": "https://etherscan.io/address/0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x0f50874f227621Dea72482004639a9fFe440A4dA",
"type": "EOA",
"isVerified": true,
"name": "0x0f50…A4dA",
"url": "https://etherscan.io/address/0x0f50874f227621Dea72482004639a9fFe440A4dA"
},
{
"address": "eth:0x70DFdAE47E29D2C40EE58Cefa7379588B421a86d",
"type": "EOA",
"isVerified": true,
"name": "0x70DF…a86d",
"url": "https://etherscan.io/address/0x70DFdAE47E29D2C40EE58Cefa7379588B421a86d"
},
{
"address": "eth:0xE47D966E2c7e94fC20ffAf5119d1926381C40f2a",
"type": "EOA",
"isVerified": true,
"name": "0xE47D…0f2a",
"url": "https://etherscan.io/address/0xE47D966E2c7e94fC20ffAf5119d1926381C40f2a"
},
{
"address": "eth:0x9B2C2Bc80C209c9C5D7f26F57b1Bb3B1699281D4",
"type": "EOA",
"isVerified": true,
"name": "0x9B2C…81D4",
"url": "https://etherscan.io/address/0x9B2C2Bc80C209c9C5D7f26F57b1Bb3B1699281D4"
},
{
"address": "eth:0x8edC4EADEE120d4C51923c515e7C3241c815C2BC",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x8edC4EADEE120d4C51923c515e7C3241c815C2BC"
},
{
"address": "eth:0x30315233090F675520eef5CBd7A6cf7d185af443",
"type": "EOA",
"isVerified": true,
"name": "0x3031…f443",
"url": "https://etherscan.io/address/0x30315233090F675520eef5CBd7A6cf7d185af443"
},
{
"address": "eth:0x9479ABfebefEea3c846163012a472b44F305b3d7",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x9479ABfebefEea3c846163012a472b44F305b3d7"
},
{
"address": "eth:0x383C148ba96956F985F6141B2D119add1C34e3B7",
"type": "EOA",
"isVerified": true,
"name": "0x383C…e3B7",
"url": "https://etherscan.io/address/0x383C148ba96956F985F6141B2D119add1C34e3B7"
},
{
"address": "eth:0xC3eA7C657884BB380B66D79C36aDCb5658b01896",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0xC3eA7C657884BB380B66D79C36aDCb5658b01896"
},
{
"address": "eth:0x69C2eD64171bF5737c2B78bdF722e68a032B2825",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x69C2eD64171bF5737c2B78bdF722e68a032B2825"
},
{
"address": "eth:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafeL2",
"url": "https://etherscan.io/address/0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F"
},
{
"address": "eth:0xFb77d22ED83F42922F9542e39dCfA9F8C47FDaFf",
"type": "EOA",
"isVerified": true,
"name": "0xFb77…DaFf",
"url": "https://etherscan.io/address/0xFb77d22ED83F42922F9542e39dCfA9F8C47FDaFf"
}
],
"discoveryDrivenData": true
},
{
"id": "Scroll Multisig 1",
"name": "Scroll Multisig 1",
"description": "A Multisig with 1/4 threshold. ",
"accounts": [
{
"address": "eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f",
"type": "Contract",
"isVerified": true,
"name": "0x1FF1…236f",
"url": "https://etherscan.io/address/0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-3"
},
{
"address": "eth:0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402",
"type": "EOA",
"isVerified": true,
"name": "EOA 4",
"url": "#EOA-1-and-EOA-4"
},
{
"address": "eth:0x0c5cc5155b346453154059aD9d2Ff695dB92f774",
"type": "EOA",
"isVerified": true,
"name": "EOA 1",
"url": "#EOA-1-and-EOA-4"
},
{
"address": "eth:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"type": "EOA",
"isVerified": true,
"name": "EOA 2",
"url": "#EOA-2"
}
],
"discoveryDrivenData": true
},
{
"id": "Scroll Security Council Minority",
"name": "Scroll Security Council Minority",
"description": "A Multisig with 3/12 threshold. ",
"accounts": [
{
"address": "eth:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE",
"type": "Contract",
"isVerified": true,
"name": "0x40bD…c6eE",
"url": "https://etherscan.io/address/0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x70DFdAE47E29D2C40EE58Cefa7379588B421a86d",
"type": "EOA",
"isVerified": true,
"name": "0x70DF…a86d",
"url": "https://etherscan.io/address/0x70DFdAE47E29D2C40EE58Cefa7379588B421a86d"
},
{
"address": "eth:0x0f50874f227621Dea72482004639a9fFe440A4dA",
"type": "EOA",
"isVerified": true,
"name": "0x0f50…A4dA",
"url": "https://etherscan.io/address/0x0f50874f227621Dea72482004639a9fFe440A4dA"
},
{
"address": "eth:0xE47D966E2c7e94fC20ffAf5119d1926381C40f2a",
"type": "EOA",
"isVerified": true,
"name": "0xE47D…0f2a",
"url": "https://etherscan.io/address/0xE47D966E2c7e94fC20ffAf5119d1926381C40f2a"
},
{
"address": "eth:0x8edC4EADEE120d4C51923c515e7C3241c815C2BC",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x8edC4EADEE120d4C51923c515e7C3241c815C2BC"
},
{
"address": "eth:0x9479ABfebefEea3c846163012a472b44F305b3d7",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x9479ABfebefEea3c846163012a472b44F305b3d7"
},
{
"address": "eth:0x69C2eD64171bF5737c2B78bdF722e68a032B2825",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x69C2eD64171bF5737c2B78bdF722e68a032B2825"
},
{
"address": "eth:0x383C148ba96956F985F6141B2D119add1C34e3B7",
"type": "EOA",
"isVerified": true,
"name": "0x383C…e3B7",
"url": "https://etherscan.io/address/0x383C148ba96956F985F6141B2D119add1C34e3B7"
},
{
"address": "eth:0xC3eA7C657884BB380B66D79C36aDCb5658b01896",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0xC3eA7C657884BB380B66D79C36aDCb5658b01896"
},
{
"address": "eth:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafeL2",
"url": "https://etherscan.io/address/0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F"
},
{
"address": "eth:0x30315233090F675520eef5CBd7A6cf7d185af443",
"type": "EOA",
"isVerified": true,
"name": "0x3031…f443",
"url": "https://etherscan.io/address/0x30315233090F675520eef5CBd7A6cf7d185af443"
},
{
"address": "eth:0x9B2C2Bc80C209c9C5D7f26F57b1Bb3B1699281D4",
"type": "EOA",
"isVerified": true,
"name": "0x9B2C…81D4",
"url": "https://etherscan.io/address/0x9B2C2Bc80C209c9C5D7f26F57b1Bb3B1699281D4"
},
{
"address": "eth:0xFb77d22ED83F42922F9542e39dCfA9F8C47FDaFf",
"type": "EOA",
"isVerified": true,
"name": "0xFb77…DaFf",
"url": "https://etherscan.io/address/0xFb77d22ED83F42922F9542e39dCfA9F8C47FDaFf"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1-and-EOA-4",
"name": "EOA 1 and EOA 4",
"accounts": [
{
"address": "eth:0x0c5cc5155b346453154059aD9d2Ff695dB92f774",
"type": "EOA",
"isVerified": true,
"name": "0x0c5c…f774",
"url": "https://etherscan.io/address/0x0c5cc5155b346453154059aD9d2Ff695dB92f774",
"displayName": "EOA 1"
},
{
"address": "eth:0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402",
"type": "EOA",
"isVerified": true,
"name": "0xFcf1…9402",
"url": "https://etherscan.io/address/0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "Member of Scroll Multisig 1, Scroll Multisig 4, Scroll Multisig 2.\n* Can interact with TimelockSCEmergency\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockFast\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockSCSlow\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockEmergency\n * execute transactions that are ready [via: Scroll Multisig 1]",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"type": "EOA",
"isVerified": true,
"name": "0x6aE9…664b",
"url": "https://etherscan.io/address/0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "Member of Scroll Multisig 1, Scroll Multisig 4, Scroll Multisig 2, ScrollAdminMultisig, Scroll Multisig 3.\n* Can interact with TimelockSCEmergency\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockFast\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockSCSlow\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockEmergency\n * execute transactions that are ready [via: Scroll Multisig 1]",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"type": "EOA",
"isVerified": true,
"name": "0x716f…8831",
"url": "https://etherscan.io/address/0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "Member of Scroll Multisig 1, Scroll Multisig 2, ScrollAdminMultisig, Scroll Multisig 3.\n* Can interact with TimelockSCEmergency\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockFast\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockSCSlow\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockEmergency\n * execute transactions that are ready [via: Scroll Multisig 1]",
"discoveryDrivenData": true
}
]
},
"scroll": {
"roles": [],
"actors": [
{
"id": "ScrollAdminMultisig",
"name": "ScrollAdminMultisig",
"description": "A Multisig with 3/4 threshold. \nL2 counterpart of ScrollAdminMultisig.\n* Can interact with ScrollOwner\n * disable enforced batch mode [via: TimelockSCEmergencyScroll]\n * update ScrollChain zk proof verifier [via: TimelockSCEmergencyScroll]\n * upgrade all core contracts of the system [via: TimelockSCEmergencyScroll]\n* Can interact with TimelockSCEmergencyScroll\n * cancel queued transactions \n * execute transactions that are ready \n * propose transactions \n * update the minimum delay and manage all access control roles of the timelock [via: TimelockSCEmergencyScroll - or - acting directly]\n* Can interact with AgoraGovernor\n * can configure contract settings such as voting delay, quorum, contract manager **with no delay or with 3d delay** [via: - acting directly - or TimelockSCSlow with 3d delay]\n* Can interact with TimelockSCSlow\n * cancel queued transactions \n * execute transactions that are ready \n * propose transactions \n * update the minimum delay and manage all access control roles of the timelock **with 3d delay or with no delay** [via: TimelockSCSlow with 3d delay - or - acting directly]",
"accounts": [
{
"address": "scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761",
"type": "Contract",
"isVerified": true,
"name": "0xcca5…F761",
"url": "https://scrollscan.com/address/0xcca54B0916Cee2186b47E9709BEdcb7041A8F761"
}
],
"chain": "scroll",
"references": [
{
"title": "L2 execution tx",
"url": "https://scrollscan.com/tx/0x7278f818e917a553318083cf44d99a4b92d72b876c1e19a1834fa3b2114b62bd"
}
],
"participants": [
{
"address": "scr:0x8460aCc9A42D2CF07015a3e838df2E3aB37d30ae",
"type": "EOA",
"isVerified": true,
"name": "0x8460…30ae",
"url": "https://scrollscan.com/address/0x8460aCc9A42D2CF07015a3e838df2E3aB37d30ae"
},
{
"address": "scr:0xEbbeeAA424AE904508465a41c927Be594C43Dc68",
"type": "EOA",
"isVerified": true,
"name": "0xEbbe…Dc68",
"url": "https://scrollscan.com/address/0xEbbeeAA424AE904508465a41c927Be594C43Dc68"
},
{
"address": "scr:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"type": "EOA",
"isVerified": true,
"name": "EOA 6",
"url": "#EOA-6-and-EOA-7"
},
{
"address": "scr:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"type": "EOA",
"isVerified": true,
"name": "EOA 7",
"url": "#EOA-6-and-EOA-7"
}
],
"discoveryDrivenData": true
},
{
"id": "AgoraGovernor",
"name": "AgoraGovernor",
"accounts": [
{
"address": "scr:0x2f3F2054776bd3C2fc30d750734A8F539Bb214f0",
"type": "Contract",
"isVerified": true,
"name": "0x2f3F…14f0",
"url": "https://scrollscan.com/address/0x2f3F2054776bd3C2fc30d750734A8F539Bb214f0"
}
],
"chain": "scroll",
"description": "Used to propose and manage onchain governance proposals.\n* Can interact with AgoraGovernor\n * can configure contract settings such as voting delay, quorum, contract manager **with 3d delay** [via: TimelockSCSlow with 3d delay]\n* Can interact with TimelockSCSlow\n * cancel queued transactions \n * execute transactions that are ready \n * propose transactions \n * update the minimum delay and manage all access control roles of the timelock **with 3d delay** [via: TimelockSCSlow with 3d delay]",
"discoveryDrivenData": true
},
{
"id": "Scroll Multisig 2",
"name": "Scroll Multisig 2",
"description": "A Multisig with 2/4 threshold. \n* Can interact with TimelockEmergency\n * cancel queued transactions \n * propose transactions \n * update the minimum delay and manage all access control roles of the timelock [via: TimelockEmergency - or - acting directly]",
"accounts": [
{
"address": "scr:0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc",
"type": "Contract",
"isVerified": true,
"name": "0xbdA1…0cBc",
"url": "https://scrollscan.com/address/0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc"
}
],
"chain": "scroll",
"references": [],
"participants": [
{
"address": "scr:0x0c5cc5155b346453154059aD9d2Ff695dB92f774",
"type": "EOA",
"isVerified": true,
"name": "EOA 5",
"url": "#EOA-5-and-EOA-8"
},
{
"address": "scr:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"type": "EOA",
"isVerified": true,
"name": "EOA 7",
"url": "#EOA-6-and-EOA-7"
},
{
"address": "scr:0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402",
"type": "EOA",
"isVerified": true,
"name": "EOA 8",
"url": "#EOA-5-and-EOA-8"
},
{
"address": "scr:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"type": "EOA",
"isVerified": true,
"name": "EOA 6",
"url": "#EOA-6-and-EOA-7"
}
],
"discoveryDrivenData": true
},
{
"id": "Scroll Multisig 3",
"name": "Scroll Multisig 3",
"description": "A Multisig with 2/4 threshold. \n* Can interact with TimelockFast\n * cancel queued transactions \n * propose transactions \n * update the minimum delay and manage all access control roles of the timelock **with 1d delay or with no delay** [via: TimelockFast with 1d delay - or - acting directly]",
"accounts": [
{
"address": "scr:0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe",
"type": "Contract",
"isVerified": true,
"name": "0xEfc9…4dbe",
"url": "https://scrollscan.com/address/0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe"
}
],
"chain": "scroll",
"references": [],
"participants": [
{
"address": "scr:0x8460aCc9A42D2CF07015a3e838df2E3aB37d30ae",
"type": "EOA",
"isVerified": true,
"name": "0x8460…30ae",
"url": "https://scrollscan.com/address/0x8460aCc9A42D2CF07015a3e838df2E3aB37d30ae"
},
{
"address": "scr:0xEbbeeAA424AE904508465a41c927Be594C43Dc68",
"type": "EOA",
"isVerified": true,
"name": "0xEbbe…Dc68",
"url": "https://scrollscan.com/address/0xEbbeeAA424AE904508465a41c927Be594C43Dc68"
},
{
"address": "scr:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"type": "EOA",
"isVerified": true,
"name": "EOA 7",
"url": "#EOA-6-and-EOA-7"
},
{
"address": "scr:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"type": "EOA",
"isVerified": true,
"name": "EOA 6",
"url": "#EOA-6-and-EOA-7"
}
],
"discoveryDrivenData": true
},
{
"id": "GnosisSafeL2",
"name": "GnosisSafeL2",
"description": "A Multisig with 2/2 threshold. \n* Can interact with AgoraGovernor\n * can propose new onchain governance proposals without the required threshold of votes ",
"accounts": [
{
"address": "scr:0x2B2A8546Df3B23535fffd75B4e312f3C5c7B4351",
"type": "Contract",
"isVerified": true,
"name": "0x2B2A…4351",
"url": "https://scrollscan.com/address/0x2B2A8546Df3B23535fffd75B4e312f3C5c7B4351"
}
],
"chain": "scroll",
"references": [],
"participants": [
{
"address": "scr:0x1Da431d2D5ECA4Df735F69fB5ea10c8E630b8f50",
"type": "EOA",
"isVerified": true,
"name": "0x1Da4…8f50",
"url": "https://scrollscan.com/address/0x1Da431d2D5ECA4Df735F69fB5ea10c8E630b8f50"
},
{
"address": "scr:0x558581b0345D986bA5bD6f04Efd27e2a5B991320",
"type": "EOA",
"isVerified": true,
"name": "0x5585…1320",
"url": "https://scrollscan.com/address/0x558581b0345D986bA5bD6f04Efd27e2a5B991320"
}
],
"discoveryDrivenData": true
},
{
"id": "ProxyAdmin",
"name": "ProxyAdmin",
"accounts": [
{
"address": "scr:0x8e34D07Eb348716a1f0a48A507A9de8a3A6DcE45",
"type": "Contract",
"isVerified": true,
"name": "0x8e34…cE45",
"url": "https://scrollscan.com/address/0x8e34D07Eb348716a1f0a48A507A9de8a3A6DcE45"
}
],
"chain": "scroll",
"description": "* Can upgrade **with no delay**\n * L2LidoGateway ",
"discoveryDrivenData": true
},
{
"id": "SafeL2",
"name": "SafeL2",
"description": "A Multisig with 9/12 threshold. ",
"accounts": [
{
"address": "scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD",
"type": "Contract",
"isVerified": true,
"name": "0x1a37…24DD",
"url": "https://scrollscan.com/address/0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD"
}
],
"chain": "scroll",
"references": [],
"participants": [
{
"address": "scr:0x0f50874f227621Dea72482004639a9fFe440A4dA",
"type": "EOA",
"isVerified": true,
"name": "0x0f50…A4dA",
"url": "https://scrollscan.com/address/0x0f50874f227621Dea72482004639a9fFe440A4dA"
},
{
"address": "scr:0x70DFdAE47E29D2C40EE58Cefa7379588B421a86d",
"type": "EOA",
"isVerified": true,
"name": "0x70DF…a86d",
"url": "https://scrollscan.com/address/0x70DFdAE47E29D2C40EE58Cefa7379588B421a86d"
},
{
"address": "scr:0xE47D966E2c7e94fC20ffAf5119d1926381C40f2a",
"type": "EOA",
"isVerified": true,
"name": "0xE47D…0f2a",
"url": "https://scrollscan.com/address/0xE47D966E2c7e94fC20ffAf5119d1926381C40f2a"
},
{
"address": "scr:0x9B2C2Bc80C209c9C5D7f26F57b1Bb3B1699281D4",
"type": "EOA",
"isVerified": true,
"name": "0x9B2C…81D4",
"url": "https://scrollscan.com/address/0x9B2C2Bc80C209c9C5D7f26F57b1Bb3B1699281D4"
},
{
"address": "scr:0x8edC4EADEE120d4C51923c515e7C3241c815C2BC",
"type": "Contract",
"isVerified": false,
"isVerified": true,
"name": "SafeL2",
"url": "https://scrollscan.com/address/0x8edC4EADEE120d4C51923c515e7C3241c815C2BC"
},
{
"address": "scr:0x30315233090F675520eef5CBd7A6cf7d185af443",
"type": "EOA",
"isVerified": true,
"name": "0x3031…f443",
"url": "https://scrollscan.com/address/0x30315233090F675520eef5CBd7A6cf7d185af443"
},
{
"address": "scr:0x9479ABfebefEea3c846163012a472b44F305b3d7",
"type": "Contract",
"isVerified": false,
"isVerified": true,
"name": "SafeL2",
"url": "https://scrollscan.com/address/0x9479ABfebefEea3c846163012a472b44F305b3d7"
},
{
"address": "scr:0x383C148ba96956F985F6141B2D119add1C34e3B7",
"type": "EOA",
"isVerified": true,
"name": "0x383C…e3B7",
"url": "https://scrollscan.com/address/0x383C148ba96956F985F6141B2D119add1C34e3B7"
},
{
"address": "scr:0xC3eA7C657884BB380B66D79C36aDCb5658b01896",
"type": "Contract",
"isVerified": false,
"isVerified": true,
"name": "SafeL2",
"url": "https://scrollscan.com/address/0xC3eA7C657884BB380B66D79C36aDCb5658b01896"
},
{
"address": "scr:0x69C2eD64171bF5737c2B78bdF722e68a032B2825",
"type": "Contract",
"isVerified": false,
"isVerified": true,
"name": "SafeL2",
"url": "https://scrollscan.com/address/0x69C2eD64171bF5737c2B78bdF722e68a032B2825"
},
{
"address": "scr:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F",
"type": "Contract",
"isVerified": false,
"isVerified": true,
"name": "GnosisSafeL2",
"url": "https://scrollscan.com/address/0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F"
},
{
"address": "scr:0xFb77d22ED83F42922F9542e39dCfA9F8C47FDaFf",
"type": "EOA",
"isVerified": true,
"name": "0xFb77…DaFf",
"url": "https://scrollscan.com/address/0xFb77d22ED83F42922F9542e39dCfA9F8C47FDaFf"
}
],
"discoveryDrivenData": true
},
{
"id": "Scroll Multisig 1",
"name": "Scroll Multisig 1",
"description": "A Multisig with 1/4 threshold. ",
"accounts": [
{
"address": "scr:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f",
"type": "Contract",
"isVerified": true,
"name": "0x1FF1…236f",
"url": "https://scrollscan.com/address/0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f"
}
],
"chain": "scroll",
"references": [],
"participants": [
{
"address": "scr:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"type": "EOA",
"isVerified": true,
"name": "EOA 7",
"url": "#EOA-6-and-EOA-7"
},
{
"address": "scr:0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402",
"type": "EOA",
"isVerified": true,
"name": "EOA 8",
"url": "#EOA-5-and-EOA-8"
},
{
"address": "scr:0x0c5cc5155b346453154059aD9d2Ff695dB92f774",
"type": "EOA",
"isVerified": true,
"name": "EOA 5",
"url": "#EOA-5-and-EOA-8"
},
{
"address": "scr:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"type": "EOA",
"isVerified": true,
"name": "EOA 6",
"url": "#EOA-6-and-EOA-7"
}
],
"discoveryDrivenData": true
},
{
"id": "Scroll Security Council Minority",
"name": "Scroll Security Council Minority",
"description": "A Multisig with 3/12 threshold. ",
"accounts": [
{
"address": "scr:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE",
"type": "Contract",
"isVerified": true,
"name": "0x40bD…c6eE",
"url": "https://scrollscan.com/address/0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE"
}
],
"chain": "scroll",
"references": [],
"participants": [
{
"address": "scr:0x70DFdAE47E29D2C40EE58Cefa7379588B421a86d",
"type": "EOA",
"isVerified": true,
"name": "0x70DF…a86d",
"url": "https://scrollscan.com/address/0x70DFdAE47E29D2C40EE58Cefa7379588B421a86d"
},
{
"address": "scr:0x0f50874f227621Dea72482004639a9fFe440A4dA",
"type": "EOA",
"isVerified": true,
"name": "0x0f50…A4dA",
"url": "https://scrollscan.com/address/0x0f50874f227621Dea72482004639a9fFe440A4dA"
},
{
"address": "scr:0xE47D966E2c7e94fC20ffAf5119d1926381C40f2a",
"type": "EOA",
"isVerified": true,
"name": "0xE47D…0f2a",
"url": "https://scrollscan.com/address/0xE47D966E2c7e94fC20ffAf5119d1926381C40f2a"
},
{
"address": "scr:0x8edC4EADEE120d4C51923c515e7C3241c815C2BC",
"type": "Contract",
"isVerified": false,
"isVerified": true,
"name": "SafeL2",
"url": "https://scrollscan.com/address/0x8edC4EADEE120d4C51923c515e7C3241c815C2BC"
},
{
"address": "scr:0x9479ABfebefEea3c846163012a472b44F305b3d7",
"type": "Contract",
"isVerified": false,
"isVerified": true,
"name": "SafeL2",
"url": "https://scrollscan.com/address/0x9479ABfebefEea3c846163012a472b44F305b3d7"
},
{
"address": "scr:0x69C2eD64171bF5737c2B78bdF722e68a032B2825",
"type": "Contract",
"isVerified": false,
"isVerified": true,
"name": "SafeL2",
"url": "https://scrollscan.com/address/0x69C2eD64171bF5737c2B78bdF722e68a032B2825"
},
{
"address": "scr:0x383C148ba96956F985F6141B2D119add1C34e3B7",
"type": "EOA",
"isVerified": true,
"name": "0x383C…e3B7",
"url": "https://scrollscan.com/address/0x383C148ba96956F985F6141B2D119add1C34e3B7"
},
{
"address": "scr:0xC3eA7C657884BB380B66D79C36aDCb5658b01896",
"type": "Contract",
"isVerified": false,
"isVerified": true,
"name": "SafeL2",
"url": "https://scrollscan.com/address/0xC3eA7C657884BB380B66D79C36aDCb5658b01896"
},
{
"address": "scr:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F",
"type": "Contract",
"isVerified": false,
"isVerified": true,
"name": "GnosisSafeL2",
"url": "https://scrollscan.com/address/0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F"
},
{
"address": "scr:0x30315233090F675520eef5CBd7A6cf7d185af443",
"type": "EOA",
"isVerified": true,
"name": "0x3031…f443",
"url": "https://scrollscan.com/address/0x30315233090F675520eef5CBd7A6cf7d185af443"
},
{
"address": "scr:0x9B2C2Bc80C209c9C5D7f26F57b1Bb3B1699281D4",
"type": "EOA",
"isVerified": true,
"name": "0x9B2C…81D4",
"url": "https://scrollscan.com/address/0x9B2C2Bc80C209c9C5D7f26F57b1Bb3B1699281D4"
},
{
"address": "scr:0xFb77d22ED83F42922F9542e39dCfA9F8C47FDaFf",
"type": "EOA",
"isVerified": true,
"name": "0xFb77…DaFf",
"url": "https://scrollscan.com/address/0xFb77d22ED83F42922F9542e39dCfA9F8C47FDaFf"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-5-and-EOA-8",
"name": "EOA 5 and EOA 8",
"accounts": [
{
"address": "scr:0x0c5cc5155b346453154059aD9d2Ff695dB92f774",
"type": "EOA",
"isVerified": true,
"name": "0x0c5c…f774",
"url": "https://scrollscan.com/address/0x0c5cc5155b346453154059aD9d2Ff695dB92f774",
"displayName": "EOA 5"
},
{
"address": "scr:0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402",
"type": "EOA",
"isVerified": true,
"name": "0xFcf1…9402",
"url": "https://scrollscan.com/address/0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402",
"displayName": "EOA 8"
}
],
"chain": "scroll",
"description": "Member of Scroll Multisig 1, Scroll Multisig 2.\n* Can interact with TimelockSCEmergencyScroll\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockFast\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockSCSlow\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockEmergency\n * execute transactions that are ready [via: Scroll Multisig 1]",
"discoveryDrivenData": true
},
{
"id": "EOA-6-and-EOA-7",
"name": "EOA 6 and EOA 7",
"accounts": [
{
"address": "scr:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"type": "EOA",
"isVerified": true,
"name": "0x6aE9…664b",
"url": "https://scrollscan.com/address/0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b",
"displayName": "EOA 6"
},
{
"address": "scr:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"type": "EOA",
"isVerified": true,
"name": "0x716f…8831",
"url": "https://scrollscan.com/address/0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831",
"displayName": "EOA 7"
}
],
"chain": "scroll",
"description": "Member of Scroll Multisig 1, Scroll Multisig 2, ScrollAdminMultisig, Scroll Multisig 3.\n* Can interact with TimelockSCEmergencyScroll\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockFast\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockSCSlow\n * execute transactions that are ready [via: Scroll Multisig 1]\n* Can interact with TimelockEmergency\n * execute transactions that are ready [via: Scroll Multisig 1]",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1790601073,
"baseTimestamp": 1791455050,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "1cd0a92a",
"date": "Thu, 08 Oct 2026 10:25:25 GMT",
"timestamp": 1791455050,
"description": "Some safes and verifier sources were verified on Etherscan.",
"isHighSeverity": false,
"changeCount": 18,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n contract PlonkVerifierPostEuclid (eth:0xd1638c0C7Bd6bf49D655D855d353aC8b4f949582) [N/A] {\n +++ description: None\n unverified:\n- true\n implementationNames.eth:0xd1638c0C7Bd6bf49D655D855d353aC8b4f949582:\n- \"\"\n+ \"Halo2Verifier\"\n sourceHashes:\n+ [\"0xf1304144e7e31f4b3006633baf6786a35f34e00eec7b2a387c4bb9cb35164fce\"]\n }\n```\n\n```diff\n contract GnosisSafeL2 (scr:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F) [GnosisSafe] {\n +++ description: None\n unverified:\n- true\n sourceHashes.0:\n- null\n+ \"0x81a7349eebb98ac33b0bc6842e3cb258034a8f2a4ba004570bb8e2e25947f9ff\"\n implementationNames.scr:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F:\n- \"\"\n+ \"GnosisSafeProxy\"\n }\n```\n\n```diff\n contract SafeL2 (scr:0x69C2eD64171bF5737c2B78bdF722e68a032B2825) [GnosisSafe] {\n +++ description: None\n unverified:\n- true\n sourceHashes.0:\n- null\n+ \"0xfe0725afd3cf2e5fb7627005a6bcf13ef7e35f78034eed2211edbffdb6a9aab5\"\n implementationNames.scr:0x69C2eD64171bF5737c2B78bdF722e68a032B2825:\n- \"\"\n+ \"SafeProxy\"\n }\n```\n\n```diff\n contract SafeL2 (scr:0x8edC4EADEE120d4C51923c515e7C3241c815C2BC) [GnosisSafe] {\n +++ description: None\n unverified:\n- true\n sourceHashes.0:\n- null\n+ \"0xfe0725afd3cf2e5fb7627005a6bcf13ef7e35f78034eed2211edbffdb6a9aab5\"\n implementationNames.scr:0x8edC4EADEE120d4C51923c515e7C3241c815C2BC:\n- \"\"\n+ \"SafeProxy\"\n }\n```\n\n```diff\n contract SafeL2 (scr:0x9479ABfebefEea3c846163012a472b44F305b3d7) [GnosisSafe] {\n +++ description: None\n unverified:\n- true\n sourceHashes.0:\n- null\n+ \"0xfe0725afd3cf2e5fb7627005a6bcf13ef7e35f78034eed2211edbffdb6a9aab5\"\n implementationNames.scr:0x9479ABfebefEea3c846163012a472b44F305b3d7:\n- \"\"\n+ \"SafeProxy\"\n }\n```\n\n```diff\n contract SafeL2 (scr:0xC3eA7C657884BB380B66D79C36aDCb5658b01896) [GnosisSafe] {\n +++ description: None\n unverified:\n- true\n sourceHashes.0:\n- null\n+ \"0xfe0725afd3cf2e5fb7627005a6bcf13ef7e35f78034eed2211edbffdb6a9aab5\"\n implementationNames.scr:0xC3eA7C657884BB380B66D79C36aDCb5658b01896:\n- \"\"\n+ \"SafeProxy\"\n }\n```"
}
]
},
{
"id": "555a0d79",
"date": "Mon, 28 Sep 2026 13:34:41 GMT",
"timestamp": 1790601073,
"description": "OpenVM verifier upgraded to v2.0.0 on Scroll: https://forum.scroll.io/t/announcement-openvm-v2-0-0-upgrade-on-scroll/1495. ZK programs and verifiers are successfully reproduced.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract MultipleVersionRollupVerifier (eth:0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F) [scroll/MultipleVersionRollupVerifier] {\n +++ description: Contract used to update the verifier and keep track of current and old versions.\n values.latestVerifier.9.verifier:\n- \"eth:0x808297224e86b1a6055B5F790a2cE07Ed611f955\"\n+ \"eth:0x7966FE0De13e3B81533470640Ac489223476B254\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ZkEvmVerifierPostFeynman (eth:0x808297224e86b1a6055B5F790a2cE07Ed611f955) [N/A]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract PlonkVerifierFeynmanV2 (eth:0x96cbcC4333E172927fDa8B631C716d43E2FBA01C) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierOpenVMv2 (eth:0x0d2A59fd7060460F07c30C2817b4E79576da01C6) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostFeynman (eth:0x7966FE0De13e3B81533470640Ac489223476B254) [N/A]\n +++ description: None\n```"
}
]
},
{
"id": "d20d7853",
"date": "Wed, 23 Sep 2026 05:54:18 GMT",
"timestamp": 1789723805,
"description": "Review active Scroll v10 verifier at the main-branch block.",
"isHighSeverity": false,
"changeCount": 14,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract GnosisSafeL2 (eth:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Security Council Minority (eth:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0x69C2eD64171bF5737c2B78bdF722e68a032B2825) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0x8edC4EADEE120d4C51923c515e7C3241c815C2BC) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0x9479ABfebefEea3c846163012a472b44F305b3d7) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0xC3eA7C657884BB380B66D79C36aDCb5658b01896) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafeL2 (scr:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Security Council Minority (scr:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (scr:0x69C2eD64171bF5737c2B78bdF722e68a032B2825) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (scr:0x8edC4EADEE120d4C51923c515e7C3241c815C2BC) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (scr:0x9479ABfebefEea3c846163012a472b44F305b3d7) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (scr:0xC3eA7C657884BB380B66D79C36aDCb5658b01896) [GnosisSafe]\n +++ description: None\n```"
}
]
},
{
"id": "be3aed85",
"date": "Wed, 19 Aug 2026 12:34:33 GMT",
"timestamp": 1782469580,
"description": "Marked verifier contract as source-verified since its bytecode was successfully reproduced in zk catalog.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n contract PlonkVerifierFeynmanV2 (eth:0x96cbcC4333E172927fDa8B631C716d43E2FBA01C) [N/A] {\n +++ description: None\n unverified:\n- true\n sourceHashes:\n+ [\"0x0ffd802e46395eb0f9e68316cd3afa259549980515f4922777333fc64f675834\"]\n references:\n+ [{\"text\":\"Source Code\",\"href\":\"https://l2beat.com/zk-catalog/openvmprover#verifiers\"}]\n }\n```"
}
]
},
{
"id": "bc8d7ec1",
"date": "Fri, 26 Jun 2026 11:57:45 GMT",
"timestamp": 1782469580,
"description": "OpenVM upgraded to 1.6.0: https://forum.scroll.io/t/announcement-openvm-v1-6-0-upgrade-on-scroll/1482. Programs are reproduced, the verifier is not yet regenerated.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract ZkEvmVerifierPostFeynman (eth:0x0dE180164Dc571522457101F5c47B2eaB36d0A82) [N/A]\n +++ description: None\n```\n\n```diff\n contract MultipleVersionRollupVerifier (eth:0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F) [scroll/MultipleVersionRollupVerifier] {\n +++ description: Contract used to update the verifier and keep track of current and old versions.\n values.latestVerifier.9.verifier:\n- \"eth:0x0dE180164Dc571522457101F5c47B2eaB36d0A82\"\n+ \"eth:0x808297224e86b1a6055B5F790a2cE07Ed611f955\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostFeynman (eth:0x808297224e86b1a6055B5F790a2cE07Ed611f955) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierFeynmanV2 (eth:0x96cbcC4333E172927fDa8B631C716d43E2FBA01C) [N/A]\n +++ description: None\n```"
}
]
},
{
"id": "8682bc9b",
"date": "Tue, 16 Jun 2026 12:35:17 GMT",
"timestamp": 1781613178,
"description": "Final Security Council removal transaction. `ScrollAdminMultisig` now controls the `scMinorityNoDelay` path (used to unpause core contracts via the PauseController), completing the Security Council removal.",
"isHighSeverity": false,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract GnosisSafeL2 (eth:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract Scroll Security Council Minority (eth:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n EOA (eth:0x498C0c17e26EEEC63375A4A20Ba8A91Aa357CbcD)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract Safe (eth:0x69C2eD64171bF5737c2B78bdF722e68a032B2825) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n contract ScrollOwner (eth:0x798576400F7D662961BA15C6b3F3d813447a26a6) [scroll/ScrollOwner] {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n values.accessControl.roles.SECURITY_COUNCIL_MINORITY_NO_DELAY_ROLE.members.0:\n- \"eth:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.scMinorityNoDelay.0:\n- \"eth:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Safe (eth:0x8edC4EADEE120d4C51923c515e7C3241c815C2BC) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract Safe (eth:0x9479ABfebefEea3c846163012a472b44F305b3d7) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract Safe (eth:0xC3eA7C657884BB380B66D79C36aDCb5658b01896) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n contract ScrollAdminMultisig (eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761) [GnosisSafe] {\n +++ description: Multisig of Scroll team operators that controls the rollup's upgrade and proof-system parameter paths.\n receivedPermissions.11:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x798576400F7D662961BA15C6b3F3d813447a26a6\",\"description\":\"unpause core contracts via the PauseController.\",\"role\":\".scMinorityNoDelay\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract GnosisSafeL2 (scr:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n contract ScrollOwner (scr:0x13D24a7Ff6F5ec5ff0e9C40Fc3B8C9c01c65437B) [scroll/ScrollOwnerL2] {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n values.accessControl.roles.SECURITY_COUNCIL_MINORITY_NO_DELAY_ROLE.members.0:\n- \"scr:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Scroll Security Council Minority (scr:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract SafeL2 (scr:0x69C2eD64171bF5737c2B78bdF722e68a032B2825) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract SafeL2 (scr:0x8edC4EADEE120d4C51923c515e7C3241c815C2BC) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract SafeL2 (scr:0x9479ABfebefEea3c846163012a472b44F305b3d7) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract SafeL2 (scr:0xC3eA7C657884BB380B66D79C36aDCb5658b01896) [GnosisSafe]\n +++ description: None\n```"
}
]
},
{
"id": "4a623d8f",
"date": "Fri, 05 Jun 2026 10:13:00 GMT",
"timestamp": 1780654305,
"description": "**Security Council removal.** On 2026-06-01, Scroll executed a multiSend transaction replacing its independent 9-of-12 Security Council (`eth:0x1a37bF…` / `scr:0x1a37bF…`) with the 3-of-4 `ScrollAdminMultisig` (`0xcca54B0916Cee2186b47E9709BEdcb7041A8F761`). This upgrade moves the chain to Stage 0.\n\n- L1 execution tx: [0xbc6079d5…b373765](https://etherscan.io/tx/0xbc6079d54f7a5fc548402db349168732c3f02430c156f4723865934bdb373765) (2026-06-01T12:36:23Z)\n- L2 execution tx: [0x7278f818…14b62bd](https://scrollscan.com/tx/0x7278f818e917a553318083cf44d99a4b92d72b876c1e19a1834fa3b2114b62bd) (2026-06-01T12:42:30Z)\n- Forum announcement (2026-04-13): [Governance Update: Security Council Transition](https://forum.scroll.io/t/governance-update-security-council-transition-contributor-roles-operational-adjustments/1470)\n\nAll Security Council permissions (`TIMELOCK_ADMIN_ROLE`, `PROPOSER_ROLE`, `EXECUTOR_ROLE`, `CANCELLER_ROLE` on `TimelockSCSlow` and `TimelockSCEmergency` on both chains, plus L2 `AgoraGovernor.admin`) transferred to `ScrollAdminMultisig`. Pre-existing co-holders (`Scroll Multisig 1`, `AgoraGovernor` on L2 slow) are unchanged.\n\n**Still pending (queued in TimelockSCSlow, 3-day).** A batch was scheduled to transfer `SECURITY_COUNCIL_MINORITY_NO_DELAY_ROLE` on `ScrollOwner` away from the independent 3/12 `Scroll Security Council Minority` to `ScrollAdminMultisig`. Not yet executed in this discovery snapshot.",
"isHighSeverity": true,
"changeCount": 51,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract TimelockSCEmergency (eth:0x0CD4c0F24a0A9f3E2Fe80ed385D8AD5a2FfECA44) [scroll/L1Timelock] {\n +++ description: A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by anyone.\n values.accessControl.TIMELOCK_ADMIN_ROLE.members.1:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.PROPOSER_ROLE.members.0:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.EXECUTOR_ROLE.members.1:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.CANCELLER_ROLE.members.0:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.Canceller.0:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n+++ description: Executing proposals is only open to all addresses if this resolves to the 0x0 address\n+++ severity: HIGH\n values.Executor.1:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.Proposer.0:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.timelockAdminAC.1:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n }\n```\n\n```diff\n contract GnosisSafeL2 (eth:0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F) [GnosisSafe] {\n +++ description: None\n values.$members.1:\n- \"eth:0x7742637569CE1dd9AA9F4F91EaAc7c028C5e1f4d\"\n values.$members.2:\n- \"eth:0xbB2491beFBd46CF26F7e9B9Dec16E0c31f9c5ae3\"\n values.$members.6:\n- \"eth:0x9106372987a14400F283bc1AfC122A57130c18a3\"\n values.$members.7:\n- \"eth:0xDD659911EcBD4458db07Ee7cDdeC79bf8F859AbC\"\n values.$members.9:\n- \"eth:0xa28b7D23e9F8D8d5346A7901ecC9eC8ea48bAEcD\"\n values.$members.11:\n- \"eth:0x32E8B0B9783d65170fd37f79079d5707107cCc62\"\n values.multisigThreshold:\n- \"2 of 12 (17%)\"\n+ \"2 of 6 (33%)\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Safe (eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n contract TimelockSCSlow (eth:0x3f9041350B661c74C6CbE440c8Bd6BC4C168a9fd) [scroll/L1Timelock] {\n +++ description: A timelock with access control. The current minimum delay is 3d. Proposals that passed their minimum delay can be executed by anyone.\n values.accessControl.TIMELOCK_ADMIN_ROLE.members.1:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.PROPOSER_ROLE.members.0:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.EXECUTOR_ROLE.members.0:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n values.accessControl.EXECUTOR_ROLE.members.1:\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.CANCELLER_ROLE.members.0:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.Canceller.0:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n+++ description: Executing proposals is only open to all addresses if this resolves to the 0x0 address\n+++ severity: HIGH\n values.Executor.0:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+++ description: Executing proposals is only open to all addresses if this resolves to the 0x0 address\n+++ severity: HIGH\n values.Executor.1:\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.Proposer.0:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.timelockAdminAC.1:\n- \"eth:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n }\n```\n\n```diff\n EOA (eth:0x498C0c17e26EEEC63375A4A20Ba8A91Aa357CbcD) {\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:0x498C0c17e26EEEC63375A4A20Ba8A91Aa357CbcD\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]},\"entryPoint\":\"eth:0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"getDeposit\":0,\"getDomainHash\":\"0xe8c593be46a5ed8888fb0c3e5e73bf758d388267b7f243139256b041295bf293\",\"getNonce\":0,\"NAME\":\"EIP7702StatelessDeleGator\",\"PACKED_USER_OP_TYPEHASH\":\"0xbc37962d8bd1d319c95199bdfda6d3f92baa8903a61b32d5f4ec1f4b36a3bc18\",\"VERSION\":\"1.3.0\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract SafeL2 (scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n contract TimelockSCEmergencyScroll (scr:0x1f807E2E8ab2e61230a0A9C271F90242831278b4) [scroll/L1Timelock] {\n +++ description: A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by anyone.\n values.accessControl.TIMELOCK_ADMIN_ROLE.members.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.PROPOSER_ROLE.members.0:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.EXECUTOR_ROLE.members.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.CANCELLER_ROLE.members.0:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.Canceller.0:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n+++ description: Executing proposals is only open to all addresses if this resolves to the 0x0 address\n+++ severity: HIGH\n values.Executor.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.Proposer.0:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.timelockAdminAC.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n }\n```\n\n```diff\n contract AgoraGovernor (scr:0x2f3F2054776bd3C2fc30d750734A8F539Bb214f0) [N/A] {\n +++ description: Used to propose and manage onchain governance proposals.\n values.admin:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n }\n```\n\n```diff\n contract TimelockSCSlow (scr:0x79D83D1518e2eAA64cdc0631df01b06e2762CC14) [scroll/L1Timelock] {\n +++ description: A timelock with access control. The current minimum delay is 3d. Proposals that passed their minimum delay can be executed by anyone.\n values.accessControl.TIMELOCK_ADMIN_ROLE.members.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.PROPOSER_ROLE.members.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.EXECUTOR_ROLE.members.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n values.accessControl.EXECUTOR_ROLE.members.2:\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.accessControl.CANCELLER_ROLE.members.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.Canceller.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n+++ description: Executing proposals is only open to all addresses if this resolves to the 0x0 address\n+++ severity: HIGH\n values.Executor.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+++ description: Executing proposals is only open to all addresses if this resolves to the 0x0 address\n+++ severity: HIGH\n values.Executor.2:\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.Proposer.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n values.timelockAdminAC.1:\n- \"scr:0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD\"\n+ \"scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract ScrollAdminMultisig (eth:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761) [GnosisSafe]\n +++ description: Multisig of Scroll team operators that controls the rollup's upgrade and proof-system parameter paths.\n```\n\n```diff\n+ Status: CREATED\n contract ScrollAdminMultisig (scr:0xcca54B0916Cee2186b47E9709BEdcb7041A8F761) [GnosisSafe]\n +++ description: L2 counterpart of ScrollAdminMultisig.\n```"
}
]
},
{
"id": "82e0b905",
"date": "Thu, 21 May 2026 21:43:35 GMT",
"timestamp": 1779399741,
"description": "- Scroll Multisig 2: signer rotated.\n- Scroll Multisig 3: signer removed, threshold 3/5 → 2/4.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Scroll Multisig 2 (eth:0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc) [GnosisSafe] {\n +++ description: None\n values.$members.1:\n- \"eth:0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n+ \"eth:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831\"\n }\n```\n\n```diff\n contract Scroll Multisig 3 (eth:0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n values.$threshold:\n- 3\n+ 2\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"2 of 4 (50%)\"\n }\n```\n\n```diff\n contract Scroll Multisig 2 (scr:0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc) [GnosisSafe] {\n +++ description: None\n values.$members.1:\n- \"scr:0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n+ \"scr:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831\"\n }\n```\n\n```diff\n contract Scroll Multisig 3 (scr:0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"scr:0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n values.$threshold:\n- 3\n+ 2\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"2 of 4 (50%)\"\n }\n```"
}
]
},
{
"id": "43ead15a",
"date": "Tue, 19 May 2026 13:57:16 GMT",
"timestamp": 1779198962,
"description": "Scroll Multisig 1 (`0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f`, same Safe on both Ethereum and Scroll L2) — member[0] rotated from `0xEe9bb388...` to `0x716f84f7...`. Permission entries for the `.Executor` role on both chains follow the new signer.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Scroll Multisig 1 (eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n+ \"eth:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831\"\n }\n```\n\n```diff\n EOA (eth:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831) {\n +++ description: None\n receivedPermissions:\n+ [{\"permission\":\"interact\",\"from\":\"eth:0x0CD4c0F24a0A9f3E2Fe80ed385D8AD5a2FfECA44\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]},{\"permission\":\"interact\",\"from\":\"eth:0x0e58939204eEDa84F796FBc86840A50af10eC4F4\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]},{\"permission\":\"interact\",\"from\":\"eth:0x3f9041350B661c74C6CbE440c8Bd6BC4C168a9fd\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]},{\"permission\":\"interact\",\"from\":\"eth:0x826714adD4dDA2b8750794A467C892c0Cd49216b\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]}]\n }\n```\n\n```diff\n EOA (eth:0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B) {\n +++ description: None\n receivedPermissions:\n- [{\"permission\":\"interact\",\"from\":\"eth:0x0CD4c0F24a0A9f3E2Fe80ed385D8AD5a2FfECA44\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]},{\"permission\":\"interact\",\"from\":\"eth:0x0e58939204eEDa84F796FBc86840A50af10eC4F4\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]},{\"permission\":\"interact\",\"from\":\"eth:0x3f9041350B661c74C6CbE440c8Bd6BC4C168a9fd\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]},{\"permission\":\"interact\",\"from\":\"eth:0x826714adD4dDA2b8750794A467C892c0Cd49216b\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]}]\n }\n```\n\n```diff\n contract Scroll Multisig 1 (scr:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"scr:0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n+ \"scr:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831\"\n }\n```\n\n```diff\n EOA (scr:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831) {\n +++ description: None\n receivedPermissions:\n+ [{\"permission\":\"interact\",\"from\":\"scr:0x1f807E2E8ab2e61230a0A9C271F90242831278b4\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"scr:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]},{\"permission\":\"interact\",\"from\":\"scr:0x2b14d0E4b042d11C7e3Fc653132a2c82EFa7d376\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"scr:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]},{\"permission\":\"interact\",\"from\":\"scr:0xA77D19C1F2B06C9aeA9bE88C17B771a33892734f\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"scr:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]}]\n }\n```\n\n```diff\n EOA (scr:0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B) {\n +++ description: None\n receivedPermissions:\n- [{\"permission\":\"interact\",\"from\":\"scr:0x1f807E2E8ab2e61230a0A9C271F90242831278b4\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"scr:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]},{\"permission\":\"interact\",\"from\":\"scr:0x2b14d0E4b042d11C7e3Fc653132a2c82EFa7d376\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"scr:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]},{\"permission\":\"interact\",\"from\":\"scr:0xA77D19C1F2B06C9aeA9bE88C17B771a33892734f\",\"description\":\"execute transactions that are ready.\",\"role\":\".Executor\",\"via\":[{\"address\":\"scr:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f\"}]}]\n }\n```"
}
]
},
{
"id": "3d076cfd",
"date": "Mon, 23 Feb 2026 14:45:29 GMT",
"timestamp": 1771857557,
"description": "Emergency upgrade: ZkEvmVerifierPostFeynman replaced at index 9 of MultipleVersionRollupVerifier due to a bug in the guest prover program. Old verifier 0x4F43... deleted, new verifier 0x0dE1... created with identical source code but updated verifierDigest (verification key update).",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract MultipleVersionRollupVerifier (eth:0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F) {\n +++ description: Contract used to update the verifier and keep track of current and old versions.\n values.latestVerifier.9.verifier:\n- \"eth:0x4F438522956c8826B9e29B4c775b2d8a6a803181\"\n+ \"eth:0x0dE180164Dc571522457101F5c47B2eaB36d0A82\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ZkEvmVerifierPostFeynman (eth:0x4F438522956c8826B9e29B4c775b2d8a6a803181)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostFeynman (eth:0x0dE180164Dc571522457101F5c47B2eaB36d0A82)\n +++ description: None\n```"
}
]
},
{
"id": "5986410f",
"date": "Tue, 10 Feb 2026 15:13:37 GMT",
"timestamp": 1770736063,
"description": "EURC (Euro Coin) bridge integration: new L1USDCGateway, Euro Coin Token, and MasterMinter contracts added. L1GatewayRouter updated with new gateway entry. Scroll Multisig 3 member replaced on both L1 and L2.",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ProxyAdmin (eth:0xEB803eb3F501998126bf37bB823646Ed3D59d072) {\n +++ description: None\n directlyReceivedPermissions.12:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xbc4b3d9A89F187dBaA0D2E60985Ea1FFFa5247d2\",\"role\":\"admin\"}\n }\n```\n\n```diff\n contract Scroll Multisig 3 (eth:0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n +++ description: None\n values.$members.3:\n- \"eth:0xfc31892C5500AbE00974280b28907BaA9190E384\"\n+ \"eth:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831\"\n }\n```\n\n```diff\n contract L1GatewayRouter (eth:0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6) {\n +++ description: Main entry point for depositing ETH and ERC20 tokens, which are then forwarded to the correct gateway.\n values.gateways.eth:0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c:\n+ \"eth:0xbc4b3d9A89F187dBaA0D2E60985Ea1FFFa5247d2\"\n }\n```\n\n```diff\n contract Scroll Multisig 3 (scr:0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n +++ description: None\n values.$members.3:\n- \"scr:0xfc31892C5500AbE00974280b28907BaA9190E384\"\n+ \"scr:0x716f84f747e2B75aBB917ff0bCb0a71C41AA8831\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract MasterMinter (eth:0x02398771Fd1db790Ef2b656ca3BcB3075f27A72c)\n +++ description: Manager contract for minter management [sic].\n```\n\n```diff\n+ Status: CREATED\n contract Euro Coin Token (eth:0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCGateway (eth:0xbc4b3d9A89F187dBaA0D2E60985Ea1FFFa5247d2)\n +++ description: None\n```"
}
]
},
{
"id": "8ee7e5d6",
"date": "Mon, 22 Dec 2025 13:11:12 GMT",
"timestamp": 1766408981,
"description": "ms changes.",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Scroll Multisig 1 (eth:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f) {\n +++ description: None\n values.$members.3:\n- \"eth:0x26eceC198AdC0be598311bAe8EDfd4eEa47A56c5\"\n+ \"eth:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b\"\n }\n```\n\n```diff\n contract Scroll Multisig 4 (eth:0x8FA3b4570B4C96f8036C13b64971BA65867eEB48) {\n +++ description: None\n values.$members.3:\n- \"eth:0xfc31892C5500AbE00974280b28907BaA9190E384\"\n+ \"eth:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b\"\n }\n```\n\n```diff\n contract Scroll Multisig 2 (eth:0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc) {\n +++ description: None\n values.$members.3:\n- \"eth:0x26eceC198AdC0be598311bAe8EDfd4eEa47A56c5\"\n+ \"eth:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b\"\n }\n```\n\n```diff\n contract Scroll Multisig 3 (eth:0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n +++ description: None\n values.$members.4:\n- \"eth:0xd33b8405635fE0Bd91aD1483778Bc5c053D8177f\"\n+ \"eth:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b\"\n }\n```\n\n```diff\n contract Scroll Multisig 1 (scr:0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f) {\n +++ description: None\n values.$members.3:\n- \"scr:0x26eceC198AdC0be598311bAe8EDfd4eEa47A56c5\"\n+ \"scr:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b\"\n }\n```\n\n```diff\n contract Scroll Multisig 2 (scr:0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc) {\n +++ description: None\n values.$members.3:\n- \"scr:0x26eceC198AdC0be598311bAe8EDfd4eEa47A56c5\"\n+ \"scr:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b\"\n }\n```\n\n```diff\n contract Scroll Multisig 3 (scr:0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n +++ description: None\n values.$members.4:\n- \"scr:0xd33b8405635fE0Bd91aD1483778Bc5c053D8177f\"\n+ \"scr:0x6aE9233a6a66B5E4bEFB7f3d6bBAd07873b1664b\"\n }\n```"
}
]
},
{
"id": "316f6807",
"date": "Mon, 15 Dec 2025 16:14:53 GMT",
"timestamp": 1765815217,
"description": "Galileo protocol upgrade new verifiers\n(https://gov.scroll.io/proposals/72907322044331380548190357610154468026012921395152333929550231764240959817459)",
"isHighSeverity": false,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract MultipleVersionRollupVerifier (eth:0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F) {\n +++ description: Contract used to update the verifier and keep track of current and old versions.\n values.latestVerifier.8:\n+ {\"startBatchIndex\":0,\"verifier\":\"eth:0x4AF7f3aBd780Fbd319c4356a219100A45F85DDb5\"}\n values.latestVerifier.9:\n+ {\"startBatchIndex\":0,\"verifier\":\"eth:0x4F438522956c8826B9e29B4c775b2d8a6a803181\"}\n values.legacyVerifiersLength.7:\n+ 0\n values.legacyVerifiersLength.8:\n+ 0\n values.verifierVersions.8:\n+ 9\n values.verifierVersions.9:\n+ 10\n }\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostFeynman (eth:0x4AF7f3aBd780Fbd319c4356a219100A45F85DDb5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostFeynman (eth:0x4F438522956c8826B9e29B4c775b2d8a6a803181)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierGalileo (eth:0x749fC77A1a131632a8b88e8703E489557660C75e)\n +++ description: None\n```"
}
]
},
{
"id": "dd400141",
"date": "Mon, 08 Dec 2025 12:10:06 GMT",
"timestamp": 1765195735,
"description": "AgoraGovernor voting delay and voting window updated by the Scroll Security Council. Per the Constitution, the voting period and voting delay should be 7 days and 3 days, respectively. Based on the updated 2-second block time, the corresponding block counts for the governor parameters were recalculated. 302400 blocks * 2s = 7 days and 129600 blocks * 2s = 3 days.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AgoraGovernor (scr:0x2f3F2054776bd3C2fc30d750734A8F539Bb214f0) {\n +++ description: Used to propose and manage onchain governance proposals.\n values.votingDelay:\n- 172800\n+ 129600\n values.votingPeriod:\n- 403200\n+ 302400\n }\n```"
}
]
},
{
"id": "9e7198de",
"date": "Fri, 10 Oct 2025 09:41:22 GMT",
"timestamp": 1760089209,
"description": "Removed member from multisig.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafeL2 (scr:0x2B2A8546Df3B23535fffd75B4e312f3C5c7B4351) {\n +++ description: None\n values.$members.0:\n- \"scr:0xd5A0f3DfCe7128B7119462F7aC912616bB05b593\"\n values.$members.2:\n- \"scr:0x226A1669cd60A43e53030fD0A482Ea566d3Dba8B\"\n+ \"scr:0x558581b0345D986bA5bD6f04Efd27e2a5B991320\"\n values.multisigThreshold:\n- \"2 of 3 (67%)\"\n+ \"2 of 2 (100%)\"\n }\n```"
}
]
},
{
"id": "acedcc5e",
"date": "Wed, 03 Sep 2025 10:26:23 GMT",
"timestamp": 1756895025,
"description": "msig changes.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Safe (eth:0x9479ABfebefEea3c846163012a472b44F305b3d7) {\n +++ description: None\n values.$members.0:\n- \"eth:0x8BBf9D47752fED1437Bb0EC7Ac4A2fAc2164F424\"\n+ \"eth:0xDF1aa0495C815A1b9156796a741885a4834EC012\"\n }\n```\n\n```diff\n contract SafeL2 (scr:0x9479ABfebefEea3c846163012a472b44F305b3d7) {\n +++ description: None\n values.$members.0:\n- \"scr:0x8BBf9D47752fED1437Bb0EC7Ac4A2fAc2164F424\"\n+ \"scr:0xDF1aa0495C815A1b9156796a741885a4834EC012\"\n }\n```"
}
]
},
{
"id": "8d34a425",
"date": "Tue, 02 Sep 2025 09:16:29 GMT",
"timestamp": 1756804385,
"description": "Voting period and delay extended.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AgoraGovernor (scr:0x2f3F2054776bd3C2fc30d750734A8F539Bb214f0) {\n +++ description: Used to propose and manage onchain governance proposals.\n values.votingDelay:\n- 3600\n+ 172800\n values.votingPeriod:\n- 432000\n+ 403200\n }\n```"
}
]
},
{
"id": "479747ff",
"date": "Mon, 25 Aug 2025 14:04:28 GMT",
"timestamp": 1756130522,
"description": "Provide description of changes. This section will be preserved.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract WrappedEther (0x5300000000000000000000000000000000000004) {\n +++ description: None\n values.totalSupply:\n- \"4497294538621618165812\"\n+ \"4170911196463469688720\"\n }\n```\n\n```diff\n contract L2WstETHToken (0xf610A9dfB7C89644979b4A0f27063E9e7d7Cda32) {\n +++ description: None\n values.totalSupply:\n- \"978415033324282926152\"\n+ \"983802096521707616986\"\n }\n```"
}
]
},
{
"id": "f9e76807",
"date": "Mon, 25 Aug 2025 09:27:20 GMT",
"timestamp": 1755858338,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract L2USDCGateway (0x33B60d5Dd260d453cAC3782b0bDC01ce84672142)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract WrappedEther (0x5300000000000000000000000000000000000004)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2WETHGateway (0x7003E7B7186f0E6601203b99F7B8DECBfA391cf9)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2WETHGatewayCounterpart (0x7AC440cAe8EB6328de4fA621163a792c1EA9D4fE)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2LidoGateway (0x8aE8f22226B9d789A36AC81474e633f8bE2856c9)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x8e34D07Eb348716a1f0a48A507A9de8a3A6DcE45)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2WstETHToken (0xf610A9dfB7C89644979b4A0f27063E9e7d7Cda32)\n +++ description: None\n```"
}
]
},
{
"id": "a0ae31ea",
"date": "Mon, 18 Aug 2025 13:31:33 GMT",
"timestamp": 1755523806,
"description": "[L1MessageQueueV2](https://disco.l2beat.com/diff/eth:0xEfA158006b072793a49E622B26761cD0eC38591d/eth:0x39C36c9026ac18104839A50c61a4507ea5052ECa): Change `APPROPRIATE_INTRINSIC_GAS_PER_BYTE` from `16` to `40` to account for EIP-7623 floor gas\n\n[SystemConfig](https://disco.l2beat.com/diff/eth:0x6A124779fDf107c3F6BcB992731dCAaD09f2276A/eth:0xf15a4b6D1fE2Ca6eE38BC3fb957f43F58b515eeE): Add three new events: `MessageQueueParametersUpdated`, `EnforcedBatchParametersUpdated`, `SignerUpdated`\n\n[ScrollChain](https://disco.l2beat.com/diff/eth:0xb7c8833F5627a8a12558cAFa0d0EBD1ACBDce43f/eth:0x0a20703878E68E587c59204cc0EA86098B8c3bA7): Remove blob proof methods and internal functions, restrict `commitAndFinalizeBatch` to top-level EOA calls only\n\n[L1ScrollMessenger](https://disco.l2beat.com/diff/eth:0x84791281EF5cb8Af5dCd4c122f7A42FeD38Fef5b/eth:0x79b6eAbfFAa958FDF2Aa2Bf632878bD323DCbF69): Remove message dropping and replay functionality\n\n[L1ETHGateway](https://disco.l2beat.com/diff/eth:0x546E0bF31FB6e7babD493452e4e6999191367B42/eth:0x1fee6a6dC49095FB9C84D61aa4b8A07284b2A1d0): Stop implementing `IMessageDropCallback` and remove `onDropMessage`\n\n[L1WETHGateway](https://disco.l2beat.com/diff/eth:0xa4F400593DFfc0ae02F940ab58f6e3Cc6fb9FB49/eth:0xE25EfFEFd08c4a57556d47eF96471Cb567A86c24): Stop implementing `IMessageDropCallback` and remove `onDropMessage`\n\n[L1StandardERC20Gateway](https://disco.l2beat.com/diff/eth:0x4015Fc868C06689ABEba4a9dC8FA43B804F6239c/eth:0xfF8238be22cC583b3d69A76da9d84Da7788c0ee9): Stop implementing `IMessageDropCallback` and remove `onDropMessage`\n\n[L1CustomERC20Gateway](https://disco.l2beat.com/diff/eth:0x7F512E2E9dfC4552941D99A5b2405BBcF5781C2c/eth:0x40c3C3dEa3B7D6d117E6713377144fD8EE6D6c97): Stop implementing `IMessageDropCallback`, remove `onDropMessage`, `updateTokenMapping` now calls L2 counterpart\n\n[L1ERC721Gateway](https://disco.l2beat.com/diff/eth:0xd1841c5756428812233eEA78afC17cb2D3e392bb/eth:0x79F1bF1906B63b56E08c3ada4c51De11F145a27A): Stop implementing `IMessageDropCallback` and remove `onDropMessage`\n\n[L1ERC1155Gateway](https://disco.l2beat.com/diff/eth:0x244BF7aEf29F03916569470a51fA0794B62F8cd7/eth:0xcA46358D5F01E4F865885514DAe6275087Ffe38E): Stop implementing `IMessageDropCallback` and remove `onDropMessage`\n\n[Verifier](https://disco.l2beat.com/diff/eth:0xbb08c87a2e871fcf3d86c4f7ed03dec8b66297ba/eth:0xa8d4702aa5c09af5dd1323e1842a43789021f485): New constructor parameter: `protocolVersion = 8`. Used to calculate `publicInputHash` used in proof verification.",
"isHighSeverity": true,
"changeCount": 66,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract MultipleVersionRollupVerifier (0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F) {\n +++ description: Contract used to update the verifier and keep track of current and old versions.\n values.latestVerifier.7:\n+ {\"startBatchIndex\":0,\"verifier\":\"eth:0xa8d4702Aa5c09AF5dD1323E1842a43789021F485\"}\n values.legacyVerifiersLength.7:\n+ 0\n values.verifierVersions.7:\n+ 8\n }\n```\n\n```diff\n contract L1MessageQueueV2 (0x56971da63A3C0205184FEF096E9ddFc7A8C2D18a) {\n +++ description: Contains the array of queued L1 -> L2 messages, either appended using the L1ScrollMessenger or the EnforcedTxGateway.\n sourceHashes.1:\n- \"0x99f1e9baeea6fd1f7773c90a40e71adfcfd2e28d14a59208a79323b7e36281a0\"\n+ \"0x92b35ff3d05522053ea72bc1d79ad52bc1aa4f5fb8afeea039c1f7d26a18b59c\"\n values.$implementation:\n- \"eth:0xEfA158006b072793a49E622B26761cD0eC38591d\"\n+ \"eth:0x39C36c9026ac18104839A50c61a4507ea5052ECa\"\n values.$pastUpgrades.2:\n+ [\"2025-08-18T02:46:23.000Z\",\"0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c\",[\"eth:0x39C36c9026ac18104839A50c61a4507ea5052ECa\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.eth:0xEfA158006b072793a49E622B26761cD0eC38591d:\n- \"L1MessageQueueV2\"\n implementationNames.eth:0x39C36c9026ac18104839A50c61a4507ea5052ECa:\n+ \"L1MessageQueueV2\"\n }\n```\n\n```diff\n contract L1ERC721Gateway (0x6260aF48e8948617b8FA17F4e5CEa2d21D21554B) {\n +++ description: Contract used to bridge ERC721 tokens from L1 to L2.\n sourceHashes.1:\n- \"0x2a543ae77e08fc2293b99836986b16db46b713eb958556cd1c95fcabce559b4b\"\n+ \"0x8a8d5a6804c708dac3077a6dc3205f8c0ef2f6afab6f82c622a4b7e4b1cdda5d\"\n values.$implementation:\n- \"eth:0xd1841c5756428812233eEA78afC17cb2D3e392bb\"\n+ \"eth:0x79F1bF1906B63b56E08c3ada4c51De11F145a27A\"\n values.$pastUpgrades.2:\n+ [\"2025-08-18T02:46:23.000Z\",\"0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c\",[\"eth:0x79F1bF1906B63b56E08c3ada4c51De11F145a27A\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.eth:0xd1841c5756428812233eEA78afC17cb2D3e392bb:\n- \"L1ERC721Gateway\"\n implementationNames.eth:0x79F1bF1906B63b56E08c3ada4c51De11F145a27A:\n+ \"L1ERC721Gateway\"\n }\n```\n\n```diff\n contract L1ScrollMessenger (0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367) {\n +++ description: Contract used to send L1 -> L2 and relay messages from L2. It allows to replay failed messages and to drop skipped messages. L1 -> L2 messages sent using this contract pay for L2 gas on L1 and will have the aliased address of this contract as the sender.\n sourceHashes.1:\n- \"0x0a1aa34da20ecb18034b84d08a6f6c0a3b5f5b865aaf9fbd37ef7c766dfdc5a8\"\n+ \"0x1b2015473e07e2c05d22065439354cd227773c699f24fd62a8c67b381a9e970d\"\n values.$implementation:\n- \"eth:0x84791281EF5cb8Af5dCd4c122f7A42FeD38Fef5b\"\n+ \"eth:0x79b6eAbfFAa958FDF2Aa2Bf632878bD323DCbF69\"\n values.$pastUpgrades.4:\n+ [\"2025-08-18T02:46:23.000Z\",\"0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c\",[\"eth:0x79b6eAbfFAa958FDF2Aa2Bf632878bD323DCbF69\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.maxReplayTimes:\n- 3\n implementationNames.eth:0x84791281EF5cb8Af5dCd4c122f7A42FeD38Fef5b:\n- \"L1ScrollMessenger\"\n implementationNames.eth:0x79b6eAbfFAa958FDF2Aa2Bf632878bD323DCbF69:\n+ \"L1ScrollMessenger\"\n }\n```\n\n```diff\n contract L1WETHGateway (0x7AC440cAe8EB6328de4fA621163a792c1EA9D4fE) {\n +++ description: Contract used to bridge WETH from L1 to L2.\n sourceHashes.1:\n- \"0xb90cab5924c6894e3047536242125cdface40857b9c70a6551210bc6de166b42\"\n+ \"0x85541d2f37f32a3d9fe2cd14f01e794d21a323e3f67041c89a7293f790f85668\"\n values.$implementation:\n- \"eth:0xa4F400593DFfc0ae02F940ab58f6e3Cc6fb9FB49\"\n+ \"eth:0xE25EfFEFd08c4a57556d47eF96471Cb567A86c24\"\n values.$pastUpgrades.2:\n+ [\"2025-08-18T02:46:23.000Z\",\"0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c\",[\"eth:0xE25EfFEFd08c4a57556d47eF96471Cb567A86c24\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.eth:0xa4F400593DFfc0ae02F940ab58f6e3Cc6fb9FB49:\n- \"L1WETHGateway\"\n implementationNames.eth:0xE25EfFEFd08c4a57556d47eF96471Cb567A86c24:\n+ \"L1WETHGateway\"\n }\n```\n\n```diff\n contract L1ETHGateway (0x7F2b8C31F88B6006c382775eea88297Ec1e3E905) {\n +++ description: Contract used to bridge ETH from L1 to L2.\n sourceHashes.1:\n- \"0xa874514fbf17dc321480a8270dcdc3a5a0d9b8e37ff5de1187df641cd4a2f6e4\"\n+ \"0x09dcca0374ada70701a459984dc3deae5816e1b6db9dd9596007c28ce5b389e2\"\n values.$implementation:\n- \"eth:0x546E0bF31FB6e7babD493452e4e6999191367B42\"\n+ \"eth:0x1fee6a6dC49095FB9C84D61aa4b8A07284b2A1d0\"\n values.$pastUpgrades.2:\n+ [\"2025-08-18T02:46:23.000Z\",\"0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c\",[\"eth:0x1fee6a6dC49095FB9C84D61aa4b8A07284b2A1d0\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.eth:0x546E0bF31FB6e7babD493452e4e6999191367B42:\n- \"L1ETHGateway\"\n implementationNames.eth:0x1fee6a6dC49095FB9C84D61aa4b8A07284b2A1d0:\n+ \"L1ETHGateway\"\n }\n```\n\n```diff\n contract SystemConfig (0x8432728A257646449245558B8b7Dbe51A16c7a4D) {\n +++ description: System configuration contract for Scroll, contains enforcedBatchParameters and messageQueueParameters determining permissionless mode.\n sourceHashes.1:\n- \"0xc6b44b4f580a4675d79b547ed6eef62882f9be3e0c86e18360e9ba5ead33755a\"\n+ \"0x94a50a4d5efa2113acdaae7b769298f0c8c17e01bc6c6efeebdb7d8a7b0bec10\"\n values.$implementation:\n- \"eth:0x6A124779fDf107c3F6BcB992731dCAaD09f2276A\"\n+ \"eth:0xf15a4b6D1fE2Ca6eE38BC3fb957f43F58b515eeE\"\n values.$pastUpgrades.2:\n+ [\"2025-08-18T02:46:23.000Z\",\"0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c\",[\"eth:0xf15a4b6D1fE2Ca6eE38BC3fb957f43F58b515eeE\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.eth:0x6A124779fDf107c3F6BcB992731dCAaD09f2276A:\n- \"SystemConfig\"\n implementationNames.eth:0xf15a4b6D1fE2Ca6eE38BC3fb957f43F58b515eeE:\n+ \"SystemConfig\"\n }\n```\n\n```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: The main contract of the Scroll chain. Allows to post transaction data and state roots, along with proofs. Sequencing and proposing are behind a whitelist unless enforcedBatchMode is activated.\n sourceHashes.1:\n- \"0x73386ff4d9fbaf9cba78ae1e91ee43f11ff39acb8bcf332085ec42d7da6c2306\"\n+ \"0xdccc4e7f3d13677c2f3cb12f608b3aa0a8bacb59c54feb3dc21fc3f42c4d4e25\"\n values.$implementation:\n- \"eth:0xb7c8833F5627a8a12558cAFa0d0EBD1ACBDce43f\"\n+ \"eth:0x0a20703878E68E587c59204cc0EA86098B8c3bA7\"\n values.$pastUpgrades.7:\n+ [\"2025-08-18T02:46:23.000Z\",\"0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c\",[\"eth:0x0a20703878E68E587c59204cc0EA86098B8c3bA7\"]]\n values.$upgradeCount:\n- 7\n+ 8\n values.maxNumTxInChunk:\n- 100\n implementationNames.eth:0xb7c8833F5627a8a12558cAFa0d0EBD1ACBDce43f:\n- \"ScrollChain\"\n implementationNames.eth:0x0a20703878E68E587c59204cc0EA86098B8c3bA7:\n+ \"ScrollChain\"\n }\n```\n\n```diff\n contract L1CustomERC20Gateway (0xb2b10a289A229415a124EFDeF310C10cb004B6ff) {\n +++ description: Contract used to bridge ERC20 tokens from L1 to L2. It allows to change the token mappings.\n sourceHashes.1:\n- \"0xe564c04903b37a6ee36ca18aeb567c15ce70fe0a8022621e7c93c833bc2fbbf3\"\n+ \"0x5d802344cb0c2d20f6e366ef83eee38cb2d561b6ad26ed596111f84a4cf3aa80\"\n values.$implementation:\n- \"eth:0x7F512E2E9dfC4552941D99A5b2405BBcF5781C2c\"\n+ \"eth:0x40c3C3dEa3B7D6d117E6713377144fD8EE6D6c97\"\n values.$pastUpgrades.2:\n+ [\"2025-08-18T02:46:23.000Z\",\"0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c\",[\"eth:0x40c3C3dEa3B7D6d117E6713377144fD8EE6D6c97\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.eth:0x7F512E2E9dfC4552941D99A5b2405BBcF5781C2c:\n- \"L1CustomERC20Gateway\"\n implementationNames.eth:0x40c3C3dEa3B7D6d117E6713377144fD8EE6D6c97:\n+ \"L1CustomERC20Gateway\"\n }\n```\n\n```diff\n contract L1ERC1155Gateway (0xb94f7F6ABcb811c5Ac709dE14E37590fcCd975B6) {\n +++ description: Contract used to bridge ERC1155 tokens from L1 to L2.\n sourceHashes.1:\n- \"0x35e9a9e7a691f357e642a73662c88a202224b73a44fc022f833ccc8aff9a4a64\"\n+ \"0x3e82df6b3c4997362507d8f73c6fff945dedcee0aeaf99f8369b433dc82c0bca\"\n values.$implementation:\n- \"eth:0x244BF7aEf29F03916569470a51fA0794B62F8cd7\"\n+ \"eth:0xcA46358D5F01E4F865885514DAe6275087Ffe38E\"\n values.$pastUpgrades.2:\n+ [\"2025-08-18T02:46:23.000Z\",\"0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c\",[\"eth:0xcA46358D5F01E4F865885514DAe6275087Ffe38E\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.eth:0x244BF7aEf29F03916569470a51fA0794B62F8cd7:\n- \"L1ERC1155Gateway\"\n implementationNames.eth:0xcA46358D5F01E4F865885514DAe6275087Ffe38E:\n+ \"L1ERC1155Gateway\"\n }\n```\n\n```diff\n contract L1StandardERC20Gateway (0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9) {\n +++ description: Contract used to bridge ERC20 tokens from L1 to L2. It uses a fixed token list.\n sourceHashes.1:\n- \"0x93fe70d828e5646f5acb7768083ab2e5b9cfb5b6691a5dff48ff3c188ffd05a7\"\n+ \"0x13d0dc38cdff2a957bfc9939cc28d16112c2052a699bc3bc9231879a79ff81e2\"\n values.$implementation:\n- \"eth:0x4015Fc868C06689ABEba4a9dC8FA43B804F6239c\"\n+ \"eth:0xfF8238be22cC583b3d69A76da9d84Da7788c0ee9\"\n values.$pastUpgrades.2:\n+ [\"2025-08-18T02:46:23.000Z\",\"0x0b3de25cab280b3e304b63e11cde6b04ef75023d89bb08d0cb6d743e055daa7c\",[\"eth:0xfF8238be22cC583b3d69A76da9d84Da7788c0ee9\"]]\n values.$upgradeCount:\n- 2\n+ 3\n implementationNames.eth:0x4015Fc868C06689ABEba4a9dC8FA43B804F6239c:\n- \"L1StandardERC20Gateway\"\n implementationNames.eth:0xfF8238be22cC583b3d69A76da9d84Da7788c0ee9:\n+ \"L1StandardERC20Gateway\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostFeynman (0xa8d4702Aa5c09AF5dD1323E1842a43789021F485)\n +++ description: None\n```"
}
]
},
{
"id": "b50d5105",
"date": "Tue, 12 Aug 2025 15:57:42 GMT",
"timestamp": 1755014055,
"description": "USDC rescuer added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Scroll USDC (0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4) {\n +++ description: Contract of the USDC token on Scroll.\n values.rescuer:\n- \"scr:0x0000000000000000000000000000000000000000\"\n+ \"scr:0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe\"\n }\n```"
}
]
},
{
"id": "8d120e0a",
"date": "Mon, 11 Aug 2025 14:21:53 GMT",
"timestamp": 1754921961,
"description": "Verifier source verified.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n contract PlonkVerifierPostEuclid-2 (0x39854DF30b3482Ef546F68B8981Fae5A2C426eA4) {\n +++ description: None\n unverified:\n- true\n sourceHashes:\n+ [\"0x4ad50f22109a8ff91daad934d6d1519aa3d186c4d8ebc1ffdc165e0986aa23ae\"]\n references:\n+ [{\"text\":\"Source Code\",\"href\":\"https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/0.5.2/bundle/verifier.bin\"}]\n }\n```"
}
]
},
{
"id": "6ed7fbd2",
"date": "Mon, 11 Aug 2025 11:23:43 GMT",
"timestamp": 1754910994,
"description": "Soundness bug and verifier emergency update. No postmortem yet.\nhttps://etherscan.io/tx/0x3367e24b6cb138cea321f4556259660f24aba1b79ccce8f798ed135e28905f17\n\nadded incident.",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract MultipleVersionRollupVerifier (0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F) {\n +++ description: Contract used to update the verifier and keep track of current and old versions.\n values.latestVerifier.6.verifier:\n- \"eth:0xBB08c87a2E871FcF3d86C4F7ED03dEc8B66297Ba\"\n+ \"eth:0xc084a6De8b0F2742396572d6f110eC87ca9329bA\"\n values.latestVerifier.6.startBatchIndex:\n- 0\n+ 364588\n values.legacyVerifiersLength.6:\n- 0\n+ 1\n }\n```\n\n```diff\n- Status: DELETED\n contract (0x7F1A3E1299F44baefE20CB2bcD62a75cA00c20d6)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract ZkEvmVerifierPostEuclid (0xBB08c87a2E871FcF3d86C4F7ED03dEc8B66297Ba)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierPostEuclid-2 (0x39854DF30b3482Ef546F68B8981Fae5A2C426eA4)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostEuclid-2 (0xc084a6De8b0F2742396572d6f110eC87ca9329bA)\n +++ description: None\n```"
}
]
},
{
"id": "9807e3db",
"date": "Tue, 05 Aug 2025 14:17:53 GMT",
"timestamp": 1754403402,
"description": "Access control changes.",
"isHighSeverity": false,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollOwner (0x13D24a7Ff6F5ec5ff0e9C40Fc3B8C9c01c65437B) {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n values.accessControl.roles.PAUSE_CONTROLLER_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"scr:0xAf9a61Aa21aB4a2fdbc88e81363D2e3D359749dd\"]}\n values.accessControl.roles.SECURITY_COUNCIL_MINORITY_NO_DELAY_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"scr:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE\"]}\n values.accessControl.targets.scr:0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC.setPause(bool).0:\n+ \"SECURITY_COUNCIL_NO_DELAY_ROLE\"\n values.accessControl.targets.scr:0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC.setPause(bool).0:\n- \"emergency-nodelay\"\n+ \"PAUSE_CONTROLLER_ROLE\"\n values.accessControl.targets.scr:0x5300000000000000000000000000000000000002.0xaa5e9334:\n+ [\"ops-fast\"]\n values.accessControl.targets.scr:0x5300000000000000000000000000000000000002.0xc63b9e2d:\n+ [\"ops-fast\"]\n values.accessControl.targets.scr:0x331A873a2a85219863d80d248F9e2978fE88D0Ea:\n+ {\"updateBaseFeeOverhead(uint256)\":[\"ops-fast\"],\"updateBaseFeeScalar(uint256)\":[\"ops-fast\"]}\n values.accessControl.targets.scr:0xAf9a61Aa21aB4a2fdbc88e81363D2e3D359749dd:\n+ {\"pause(address)\":[\"emergency-nodelay\"],\"updatePauseCooldownPeriod(uint256)\":[\"SECURITY_COUNCIL_NO_DELAY_ROLE\"],\"resetPauseCooldownPeriod(address)\":[\"SECURITY_COUNCIL_NO_DELAY_ROLE\"],\"unpause(address)\":[\"emergency-nodelay\",\"SECURITY_COUNCIL_MINORITY_NO_DELAY_ROLE\"]}\n }\n```\n\n```diff\n contract AgoraGovernor (0x2f3F2054776bd3C2fc30d750734A8F539Bb214f0) {\n +++ description: Used to propose and manage onchain governance proposals.\n values.votingDelay:\n- 86400\n+ 3600\n values.votingPeriod:\n- 201600\n+ 432000\n }\n```\n\n```diff\n contract ProxyAdmin (0xA76acF000C890b0DD7AEEf57627d9899F955d026) {\n +++ description: None\n directlyReceivedPermissions.7:\n+ {\"permission\":\"upgrade\",\"from\":\"scr:0xAf9a61Aa21aB4a2fdbc88e81363D2e3D359749dd\",\"role\":\"admin\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Security Council Minority (0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2PauseController (0xAf9a61Aa21aB4a2fdbc88e81363D2e3D359749dd)\n +++ description: None\n```"
}
]
},
{
"id": "6b8e853c",
"date": "Tue, 05 Aug 2025 14:17:50 GMT",
"timestamp": 1754403402,
"description": "Access control changes.",
"isHighSeverity": false,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n values.accessControl.roles.PAUSE_CONTROLLER_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0xb8f7eA9998530833Cbb7E0EF4f0D945957229D8b\"]}\n values.accessControl.roles.SECURITY_COUNCIL_MINORITY_NO_DELAY_ROLE:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE\"]}\n values.accessControl.targets.eth:0xa13BAF47339d63B743e7Da8741db5456DAc1E556.setPause(bool).0:\n+ \"SECURITY_COUNCIL_NO_DELAY_ROLE\"\n values.accessControl.targets.eth:0xa13BAF47339d63B743e7Da8741db5456DAc1E556.setPause(bool).0:\n- \"emergency-nodelay\"\n+ \"PAUSE_CONTROLLER_ROLE\"\n values.accessControl.targets.eth:0xa13BAF47339d63B743e7Da8741db5456DAc1E556.updateMaxNumTxInChunk(uint256):\n- [\"ops-fast\"]\n values.accessControl.targets.eth:0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367.setPause(bool).0:\n+ \"SECURITY_COUNCIL_NO_DELAY_ROLE\"\n values.accessControl.targets.eth:0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367.setPause(bool).0:\n- \"emergency-nodelay\"\n+ \"PAUSE_CONTROLLER_ROLE\"\n values.accessControl.targets.eth:0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367.updateFeeVault(address).0:\n- \"ops-fast\"\n+ \"SECURITY_COUNCIL_NO_DELAY_ROLE\"\n values.accessControl.targets.eth:0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367.updateMaxReplayTimes(uint256):\n- [\"ops-fast\"]\n values.accessControl.targets.eth:0x8432728A257646449245558B8b7Dbe51A16c7a4D.updateMessageQueueParameters((uint32,uint112,uint112)).0:\n- \"ops-fast\"\n+ \"SECURITY_COUNCIL_NO_DELAY_ROLE\"\n values.accessControl.targets.eth:0x8432728A257646449245558B8b7Dbe51A16c7a4D.updateEnforcedBatchParameters((uint24,uint24)).0:\n- \"ops-fast\"\n+ \"SECURITY_COUNCIL_NO_DELAY_ROLE\"\n values.accessControl.targets.eth:0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d.setPause(bool).0:\n+ \"SECURITY_COUNCIL_NO_DELAY_ROLE\"\n values.accessControl.targets.eth:0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d.setPause(bool).0:\n- \"emergency-nodelay\"\n+ \"PAUSE_CONTROLLER_ROLE\"\n values.accessControl.targets.eth:0xb8f7eA9998530833Cbb7E0EF4f0D945957229D8b:\n+ {\"pause(address)\":[\"emergency-nodelay\"],\"updatePauseCooldownPeriod(uint256)\":[\"SECURITY_COUNCIL_NO_DELAY_ROLE\"],\"resetPauseCooldownPeriod(address)\":[\"SECURITY_COUNCIL_NO_DELAY_ROLE\"],\"unpause(address)\":[\"emergency-nodelay\",\"SECURITY_COUNCIL_MINORITY_NO_DELAY_ROLE\"]}\n }\n```\n\n```diff\n contract ProxyAdmin (0xEB803eb3F501998126bf37bB823646Ed3D59d072) {\n +++ description: None\n directlyReceivedPermissions.10:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xb8f7eA9998530833Cbb7E0EF4f0D945957229D8b\",\"role\":\"admin\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Security Council Minority (0x40bD67b02EBf1CFB4AdA7F60CabAc94d6aafc6eE)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PauseController (0xb8f7eA9998530833Cbb7E0EF4f0D945957229D8b)\n +++ description: None\n```"
}
]
},
{
"id": "b135acb2",
"date": "Mon, 21 Jul 2025 10:32:24 GMT",
"timestamp": 1753093944,
"description": "fee config change (decrease baseFeeOverhead and -scalar).",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SystemConfig (0x8432728A257646449245558B8b7Dbe51A16c7a4D) {\n +++ description: System configuration contract for Scroll, contains enforcedBatchParameters and messageQueueParameters determining permissionless mode.\n values.messageQueueParameters.baseFeeOverhead:\n- 4790000\n+ 120000\n values.messageQueueParameters.baseFeeScalar:\n- 388000000000000\n+ 9700000000000\n }\n```"
}
]
},
{
"id": "4a7a78a9",
"date": "Mon, 14 Jul 2025 12:47:11 GMT",
"timestamp": 1752497231,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 33,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Scroll USDC (0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4)\n +++ description: Contract of the USDC token on Scroll.\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafeL2 (0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ScrollOwner (0x13D24a7Ff6F5ec5ff0e9C40Fc3B8C9c01c65437B)\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Security Council (0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockSCEmergency (0x1f807E2E8ab2e61230a0A9C271F90242831278b4)\n +++ description: A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by the anyone.\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Multisig 1 (0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockFast (0x2b14d0E4b042d11C7e3Fc653132a2c82EFa7d376)\n +++ description: A timelock with access control. The current minimum delay is 1d. Proposals that passed their minimum delay can be executed by the anyone.\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafeL2 (0x2B2A8546Df3B23535fffd75B4e312f3C5c7B4351)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract AgoraGovernor (0x2f3F2054776bd3C2fc30d750734A8F539Bb214f0)\n +++ description: Used to propose and manage onchain governance proposals.\n```\n\n```diff\n+ Status: CREATED\n contract L2GatewayRouter (0x4C0926FF5252A435FD19e10ED15e5a249Ba19d79)\n +++ description: Counterpart to the L1GatewayRouter contract.\n```\n\n```diff\n+ Status: CREATED\n contract L2MessageQueue (0x5300000000000000000000000000000000000000)\n +++ description: Used to append messages to the L2MessageQueue from the L2ScrollMessenger.\n```\n\n```diff\n+ Status: CREATED\n contract L2ERC1155Gateway (0x62597Cc19703aF10B58feF87B0d5D29eFE263bcc)\n +++ description: Counterpart to the L1ERC1155Gateway contract.\n```\n\n```diff\n+ Status: CREATED\n contract L2CustomERC20Gateway (0x64CCBE37c9A82D85A1F2E74649b7A42923067988)\n +++ description: Counterpart to the L1CustomERC20Gateway contract.\n```\n\n```diff\n+ Status: CREATED\n contract ScrollStandardERC20Factory (0x66e5312EDeEAef6e80759A0F789e7914Fb401484)\n +++ description: Contract used to deploy ScrollStandardERC20 tokens for L2StandardERC20Gateway.\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (0x69C2eD64171bF5737c2B78bdF722e68a032B2825)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2ETHGateway (0x6EA73e05AdC79974B931123675ea8F78FfdacDF0)\n +++ description: Contract of the L2ScrollMessenger contract.\n```\n\n```diff\n+ Status: CREATED\n contract L2ScrollMessenger (0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC)\n +++ description: ETH is pre-minted to this contract in the genesis block and released on Scroll whenever corresponding deposits are made on Ethereum.\n```\n\n```diff\n+ Status: CREATED\n contract TimelockSCSlow (0x79D83D1518e2eAA64cdc0631df01b06e2762CC14)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2ERC721Gateway (0x7bC08E1c04fb41d75F1410363F0c5746Eae80582)\n +++ description: Counterpart to the L1ERC721Gateway contract.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x82e58e20Da6ecF4B07649C9B2237FAf27f02bC81)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (0x8edC4EADEE120d4C51923c515e7C3241c815C2BC)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (0x9479ABfebefEea3c846163012a472b44F305b3d7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xA76acF000C890b0DD7AEEf57627d9899F955d026)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockEmergency (0xA77D19C1F2B06C9aeA9bE88C17B771a33892734f)\n +++ description: A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by the anyone.\n```\n\n```diff\n+ Status: CREATED\n contract MasterMinter (0xb5cE5F2277CFc547F48aA8263838FAEd424ae4BE)\n +++ description: Contract that uses controllers to manage minters for USDC on Scroll.\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Multisig 2 (0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (0xC3eA7C657884BB380B66D79C36aDCb5658b01896)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ScrollStandardERC20 (0xC7d86908ccf644Db7C69437D5852CedBC1aD3f69)\n +++ description: Contract of the ERC20 standard token used by the ERC20 factory.\n```\n\n```diff\n+ Status: CREATED\n contract SCRToken (0xd29687c813D741E2F938F4aC377128810E217b1b)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xde4972789EA56c4e7ac7Ba655EaFe73a30155F1e)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2GatewayRouter (0xE2b4795039517653c5Ae8C2A9BFdd783b48f447A)\n +++ description: Contract used to withdraw ERC20 tokens on L2 and finalize deposit the tokens from L1.\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Multisig 3 (0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProposalTypesConfigurator (0xfDa7cF1D9C51b3fab41E2e4093374DD8715D640E)\n +++ description: None\n```"
}
]
},
{
"id": "07032d64",
"date": "Mon, 14 Jul 2025 12:47:11 GMT",
"timestamp": 1752497231,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 47,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostEuclid (0x0112315Fa1c81c35ac9a477e161B52Ae4D1466B3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierV1-1 (0x03a72B00D036C479105fF98A1953b15d9c510110)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockSCEmergency (0x0CD4c0F24a0A9f3E2Fe80ed385D8AD5a2FfECA44)\n +++ description: A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by the anyone.\n```\n\n```diff\n+ Status: CREATED\n contract TimelockFast (0x0e58939204eEDa84F796FBc86840A50af10eC4F4)\n +++ description: A timelock with access control. The current minimum delay is 1d. Proposals that passed their minimum delay can be executed by the anyone.\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafeL2 (0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Security Council (0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Multisig 1 (0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierV1 (0x2293cd12e8564e8219d314b075867c2f66ac6941)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV2 (0x2d6e16d8e8a0C3Bc7750E774B108Ec39Ab0C18fB)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockSCSlow (0x3f9041350B661c74C6CbE440c8Bd6BC4C168a9fd)\n +++ description: A timelock with access control. The current minimum delay is 3d. Proposals that passed their minimum delay can be executed by the anyone.\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV1 (0x4b289E4A5331bAFBc6cCb2F10C39B8EDceCDb247)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierV0 (0x4B8Aa8A96078689384DAb49691E9bA51F9d2F9E1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MultipleVersionRollupVerifier (0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F)\n +++ description: Contract used to update the verifier and keep track of current and old versions.\n```\n\n```diff\n+ Status: CREATED\n contract L1MessageQueueV2 (0x56971da63A3C0205184FEF096E9ddFc7A8C2D18a)\n +++ description: Contains the array of queued L1 -> L2 messages, either appended using the L1ScrollMessenger or the EnforcedTxGateway.\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV0 (0x585DfaD7bF4099E011D185E266907A8ab60DAD2D)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1ERC721Gateway (0x6260aF48e8948617b8FA17F4e5CEa2d21D21554B)\n +++ description: Contract used to bridge ERC721 tokens from L1 to L2.\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV1-1 (0x63FB51C55d9605a75F8872C80De260a00fACfaA2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract wstETHescrowLido (0x6625C6332c9F91F2D27c304E729B86db87A3f504)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DaiEscrow (0x67260A8B73C5B77B55c1805218A42A7A6F98F515)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1ScrollMessenger (0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367)\n +++ description: Contract used to send L1 -> L2 and relay messages from L2. It allows to replay failed messages and to drop skipped messages. L1 -> L2 messages sent using this contract pay for L2 gas on L1 and will have the aliased address of this contract as the sender.\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x69C2eD64171bF5737c2B78bdF722e68a032B2825)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract EnforcedTxGateway (0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d)\n +++ description: Contracts to force L1 -> L2 messages with the proper sender.\n```\n\n```diff\n+ Status: CREATED\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6)\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n```\n\n```diff\n+ Status: CREATED\n contract L1WETHGateway (0x7AC440cAe8EB6328de4fA621163a792c1EA9D4fE)\n +++ description: Contract used to bridge WETH from L1 to L2.\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierPostEuclid-2 (0x7F1A3E1299F44baefE20CB2bcD62a75cA00c20d6)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1ETHGateway (0x7F2b8C31F88B6006c382775eea88297Ec1e3E905)\n +++ description: Contract used to bridge ETH from L1 to L2.\n```\n\n```diff\n+ Status: CREATED\n contract TimelockEmergency (0x826714adD4dDA2b8750794A467C892c0Cd49216b)\n +++ description: A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by the anyone.\n```\n\n```diff\n+ Status: CREATED\n contract SystemConfig (0x8432728A257646449245558B8b7Dbe51A16c7a4D)\n +++ description: System configuration contract for Scroll, contains enforcedBatchParameters and messageQueueParameters determining permissionless mode.\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierV2 (0x8759E83b6570A0bA46c3CE7eB359F354F816c9a9)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierV2-1 (0x8c1b52757b5c571ADcB5572E992679d4D48e30f7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x8edC4EADEE120d4C51923c515e7C3241c815C2BC)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Multisig 4 (0x8FA3b4570B4C96f8036C13b64971BA65867eEB48)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x9479ABfebefEea3c846163012a472b44F305b3d7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract pufETHEscrow (0xA033Ff09f2da45f0e9ae495f525363722Df42b2a)\n +++ description: Contract used to bridge ERC20 tokens from L1 to L2. It allows to change the token mappings.\n```\n\n```diff\n+ Status: CREATED\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556)\n +++ description: The main contract of the Scroll chain. Allows to post transaction data and state roots, along with proofs. Sequencing and proposing are behind a whitelist unless enforcedBatchMode is activated.\n```\n\n```diff\n+ Status: CREATED\n contract L1CustomERC20Gateway (0xb2b10a289A229415a124EFDeF310C10cb004B6ff)\n +++ description: Contract used to bridge ERC20 tokens from L1 to L2. It allows to change the token mappings.\n```\n\n```diff\n+ Status: CREATED\n contract L1ERC1155Gateway (0xb94f7F6ABcb811c5Ac709dE14E37590fcCd975B6)\n +++ description: Contract used to bridge ERC1155 tokens from L1 to L2.\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostEuclid-2 (0xBB08c87a2E871FcF3d86C4F7ED03dEc8B66297Ba)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Multisig 2 (0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0xC3eA7C657884BB380B66D79C36aDCb5658b01896)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV2-1 (0xCAECeE2E815e7f758c2477f900AFA14bDDce54B3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierPostEuclid (0xd1638c0C7Bd6bf49D655D855d353aC8b4f949582)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1StandardERC20Gateway (0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9)\n +++ description: Contract used to bridge ERC20 tokens from L1 to L2. It uses a fixed token list.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xEB803eb3F501998126bf37bB823646Ed3D59d072)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Multisig 3 (0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCGateway (0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B)\n +++ description: Contract used to bridge USDC tokens from L1 to L2.\n```\n\n```diff\n+ Status: CREATED\n contract L1GatewayRouter (0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6)\n +++ description: Main entry point for depositing ETH and ERC20 tokens, which are then forwarded to the correct gateway.\n```"
}
]
},
{
"id": "55a8ff3e",
"date": "Mon, 07 Jul 2025 08:22:57 GMT",
"timestamp": 1751876577,
"description": "single MS member change.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafeL2 (0x2B2A8546Df3B23535fffd75B4e312f3C5c7B4351) {\n +++ description: None\n values.$members.2:\n- \"0x108493124adf60F401E051e6A05043d8967bff6f\"\n+ \"0x226A1669cd60A43e53030fD0A482Ea566d3Dba8B\"\n }\n```"
}
]
},
{
"id": "19d658d4",
"date": "Wed, 18 Jun 2025 12:03:45 GMT",
"timestamp": 1750248225,
"description": "fee parameters and MS signer changed.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SystemConfig (0x8432728A257646449245558B8b7Dbe51A16c7a4D) {\n +++ description: System configuration contract for Scroll, contains enforcedBatchParameters and messageQueueParameters determining permissionless mode.\n values.messageQueueParameters.baseFeeOverhead:\n- 15680000\n+ 4790000\n values.messageQueueParameters.baseFeeScalar:\n- 34000000000000\n+ 388000000000000\n }\n```\n\n```diff\n contract Scroll Multisig 3 (0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n +++ description: None\n values.$members.4:\n- \"0xFCf6364F5157901f533DD3615A5d8c375F13c072\"\n+ \"0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n }\n```"
}
]
},
{
"id": "8b2023fd",
"date": "Wed, 18 Jun 2025 12:03:41 GMT",
"timestamp": 1750248221,
"description": "Signer change in team MS.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Scroll Multisig 3 (0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n +++ description: None\n values.$members.4:\n- \"0xFCf6364F5157901f533DD3615A5d8c375F13c072\"\n+ \"0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n }\n```"
}
]
},
{
"id": "43384ca8",
"date": "Tue, 27 May 2025 13:50:07 GMT",
"timestamp": 1748353807,
"description": "Added manual source for new verifier.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n contract PlonkVerifierPostEuclid-2 (0x7F1A3E1299F44baefE20CB2bcD62a75cA00c20d6) {\n +++ description: None\n unverified:\n- true\n sourceHashes:\n+ [\"0x26cd90e30199eed8d6c94ea4ffaf77c4b2a17f7e3ad9299ff6aaa482214bbb56\"]\n references:\n+ [{\"text\":\"Source Code\",\"href\":\"https://circuit-release.s3.us-west-2.amazonaws.com/scroll-zkvm/releases/0.4.2/bundle/verifier.bin\"}]\n }\n```"
}
]
},
{
"id": "5133e1b1",
"date": "Mon, 26 May 2025 15:20:32 GMT",
"timestamp": 1748272832,
"description": "emergency upgrade: fix bug in the verifier. new verifier is not public/verified yet.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract ZkEvmVerifierPostEuclid (0x33996CC9EEe2dc20B10b8E57d313d0FacC7a0828)\n +++ description: Contract used to verify zk proofs given the aggregate proof and the public input hash.\n```\n\n```diff\n contract MultipleVersionRollupVerifier (0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F) {\n +++ description: Contract used to update the verifier and keep track of current and old versions.\n values.latestVerifier.6.verifier:\n- \"0x33996CC9EEe2dc20B10b8E57d313d0FacC7a0828\"\n+ \"0xBB08c87a2E871FcF3d86C4F7ED03dEc8B66297Ba\"\n }\n```\n\n```diff\n- Status: DELETED\n contract (0x9F66505cB1626D06B50EF2597f41De6686e8f79a)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierPostEuclid-2 (0x7F1A3E1299F44baefE20CB2bcD62a75cA00c20d6)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostEuclid-2 (0xBB08c87a2E871FcF3d86C4F7ED03dEc8B66297Ba)\n +++ description: None\n```"
}
]
},
{
"id": "fdec27fc",
"date": "Thu, 08 May 2025 09:56:45 GMT",
"timestamp": 1746698205,
"description": "ms member change.",
"isHighSeverity": false,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafeL2 (0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F) {\n +++ description: None\n values.$members.8:\n- \"0x4970e361f6168a301D1036348d625A8930B1AaB7\"\n+ \"0x7742637569CE1dd9AA9F4F91EaAc7c028C5e1f4d\"\n values.$members.7:\n- \"0x7742637569CE1dd9AA9F4F91EaAc7c028C5e1f4d\"\n+ \"0x32E8B0B9783d65170fd37f79079d5707107cCc62\"\n values.$members.6:\n- \"0x32E8B0B9783d65170fd37f79079d5707107cCc62\"\n+ \"0xb3dd2CA3F575FCDd79F5Cd45c5a6c9db860F3E4d\"\n values.$members.5:\n- \"0xb3dd2CA3F575FCDd79F5Cd45c5a6c9db860F3E4d\"\n+ \"0xb01474b50382fAe1A847E3A916ECDf07Ba57BcC7\"\n values.$members.4:\n- \"0xb01474b50382fAe1A847E3A916ECDf07Ba57BcC7\"\n+ \"0xDD659911EcBD4458db07Ee7cDdeC79bf8F859AbC\"\n values.$members.3:\n- \"0xDD659911EcBD4458db07Ee7cDdeC79bf8F859AbC\"\n+ \"0x218C720079833e0e40a3cc68CD5fA2f89D65d0bf\"\n values.$members.2:\n- \"0x218C720079833e0e40a3cc68CD5fA2f89D65d0bf\"\n+ \"0xbB2491beFBd46CF26F7e9B9Dec16E0c31f9c5ae3\"\n values.$members.1:\n- \"0xbB2491beFBd46CF26F7e9B9Dec16E0c31f9c5ae3\"\n+ \"0xa28b7D23e9F8D8d5346A7901ecC9eC8ea48bAEcD\"\n values.$members.0:\n- \"0xa28b7D23e9F8D8d5346A7901ecC9eC8ea48bAEcD\"\n+ \"0xA0895eF86B766aFd455Fdb129A830A1C6CE054A1\"\n }\n```"
}
]
},
{
"id": "c6b60b13",
"date": "Thu, 08 May 2025 09:56:44 GMT",
"timestamp": 1746698204,
"description": "sub MS member change.",
"isHighSeverity": false,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GnosisSafeL2 (0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F) {\n +++ description: None\n values.$members.8:\n- \"0x4970e361f6168a301D1036348d625A8930B1AaB7\"\n+ \"0x7742637569CE1dd9AA9F4F91EaAc7c028C5e1f4d\"\n values.$members.7:\n- \"0x7742637569CE1dd9AA9F4F91EaAc7c028C5e1f4d\"\n+ \"0x32E8B0B9783d65170fd37f79079d5707107cCc62\"\n values.$members.6:\n- \"0x32E8B0B9783d65170fd37f79079d5707107cCc62\"\n+ \"0xb3dd2CA3F575FCDd79F5Cd45c5a6c9db860F3E4d\"\n values.$members.5:\n- \"0xb3dd2CA3F575FCDd79F5Cd45c5a6c9db860F3E4d\"\n+ \"0xb01474b50382fAe1A847E3A916ECDf07Ba57BcC7\"\n values.$members.4:\n- \"0xb01474b50382fAe1A847E3A916ECDf07Ba57BcC7\"\n+ \"0xDD659911EcBD4458db07Ee7cDdeC79bf8F859AbC\"\n values.$members.3:\n- \"0xDD659911EcBD4458db07Ee7cDdeC79bf8F859AbC\"\n+ \"0x218C720079833e0e40a3cc68CD5fA2f89D65d0bf\"\n values.$members.2:\n- \"0x218C720079833e0e40a3cc68CD5fA2f89D65d0bf\"\n+ \"0xbB2491beFBd46CF26F7e9B9Dec16E0c31f9c5ae3\"\n values.$members.1:\n- \"0xbB2491beFBd46CF26F7e9B9Dec16E0c31f9c5ae3\"\n+ \"0xa28b7D23e9F8D8d5346A7901ecC9eC8ea48bAEcD\"\n values.$members.0:\n- \"0xa28b7D23e9F8D8d5346A7901ecC9eC8ea48bAEcD\"\n+ \"0xA0895eF86B766aFd455Fdb129A830A1C6CE054A1\"\n }\n```"
}
]
},
{
"id": "2193d319",
"date": "Mon, 28 Apr 2025 10:39:37 GMT",
"timestamp": 1745836777,
"description": "Added new roles to the ScrollOwner contract and its timelock controllers.",
"isHighSeverity": false,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Scroll USDC (0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4) {\n +++ description: Contract of the USDC token on Scroll.\n values.totalSupply:\n- 18073085046087\n+ 19147318188126\n }\n```\n\n```diff\n contract Scroll Multisig 3 (0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n +++ description: None\n values.$members.2:\n- \"0xE2e6345baAD18f779167443Dc4886495507b3249\"\n+ \"0x8460aCc9A42D2CF07015a3e838df2E3aB37d30ae\"\n values.$members.1:\n- \"0x9FB9ff268B89Fb22aDe61fbE1B938F5C72D3CC59\"\n+ \"0xd33b8405635fE0Bd91aD1483778Bc5c053D8177f\"\n values.$threshold:\n- 4\n+ 3\n values.multisigThreshold:\n- \"4 of 5 (80%)\"\n+ \"3 of 5 (60%)\"\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Scroll USDC (0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4)\n +++ description: Contract of the USDC token on Scroll.\n```\n\n```diff\n+ Status: CREATED\n contract TimelockSCEmergency (0x1f807E2E8ab2e61230a0A9C271F90242831278b4)\n +++ description: A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by the anyone.\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Multisig 1 (0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockFast (0x2b14d0E4b042d11C7e3Fc653132a2c82EFa7d376)\n +++ description: A timelock with access control. The current minimum delay is 1d. Proposals that passed their minimum delay can be executed by the anyone.\n```\n\n```diff\n+ Status: CREATED\n contract L2ERC1155Gateway (0x62597Cc19703aF10B58feF87B0d5D29eFE263bcc)\n +++ description: Counterpart to the L1ERC1155Gateway contract.\n```\n\n```diff\n+ Status: CREATED\n contract L2CustomERC20Gateway (0x64CCBE37c9A82D85A1F2E74649b7A42923067988)\n +++ description: Counterpart to the L1CustomERC20Gateway contract.\n```\n\n```diff\n+ Status: CREATED\n contract L2ERC721Gateway (0x7bC08E1c04fb41d75F1410363F0c5746Eae80582)\n +++ description: Counterpart to the L1ERC721Gateway contract.\n```\n\n```diff\n+ Status: CREATED\n contract TimelockEmergency (0xA77D19C1F2B06C9aeA9bE88C17B771a33892734f)\n +++ description: A timelock with access control. The current minimum delay is 0s. Proposals that passed their minimum delay can be executed by the anyone.\n```\n\n```diff\n+ Status: CREATED\n contract MasterMinter (0xb5cE5F2277CFc547F48aA8263838FAEd424ae4BE)\n +++ description: Manager contract for minter management [sic].\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Multisig 2 (0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Multisig 3 (0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe)\n +++ description: None\n```"
}
]
},
{
"id": "583fc831",
"date": "Mon, 28 Apr 2025 10:39:01 GMT",
"timestamp": 1745836741,
"description": "EnforcedTxGateway unpaused. Upgraded permissions for Stage 1.",
"isHighSeverity": true,
"changeCount": 87,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract L1MessageQueueWithGasPriceOracle (0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract Whitelist (0x259204DDd2bA29bD9b1B9A5c9B093f73d7EAcf37)\n +++ description: None\n```\n\n```diff\n contract MultipleVersionRollupVerifier (0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F) {\n +++ description: Contract used to update the verifier and keep track of current and old versions.\n values.latestVerifier.6:\n+ {\"startBatchIndex\":0,\"verifier\":\"0x33996CC9EEe2dc20B10b8E57d313d0FacC7a0828\"}\n values.legacyVerifiersLength.6:\n+ 0\n values.verifierVersions.6:\n+ 7\n }\n```\n\n```diff\n contract L1ScrollMessenger (0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367) {\n +++ description: Contract used to send L1 -> L2 and relay messages from L2. It allows to replay failed messages and to drop skipped messages. L1 -> L2 messages sent using this contract pay for L2 gas on L1 and will have the aliased address of this contract as the sender.\n sourceHashes.1:\n- \"0xe550fda323606a4b4fd2a05cf45dda231290e1d57a077828632c098fa0579161\"\n+ \"0x993403059c5620e6c91110514f9f4a2f2331c55dab587699c67c19edddab92ad\"\n sourceHashes.0:\n- \"0x993403059c5620e6c91110514f9f4a2f2331c55dab587699c67c19edddab92ad\"\n+ \"0x0a1aa34da20ecb18034b84d08a6f6c0a3b5f5b865aaf9fbd37ef7c766dfdc5a8\"\n values.$implementation:\n- \"0x72981fD00087fF4F60aBFdE9f353cB1912A37fb6\"\n+ \"0x84791281EF5cb8Af5dCd4c122f7A42FeD38Fef5b\"\n values.$pastUpgrades.3:\n+ [\"2025-04-25T07:06:59.000Z\",\"0x783703d4e94de48edb75261149a540cbf7abb7ef077865c11080e622a508ab86\",[\"0x84791281EF5cb8Af5dCd4c122f7A42FeD38Fef5b\"]]\n values.$pastUpgrades.2:\n+ [\"2023-10-08T16:25:23.000Z\",\"0xcad9f31340db6aca3a5da0d704ee33a9b6c43a5b1be4406cc0ed33edbdd7c92e\",[\"0xAf2F898a8680cb52766ABE0588ebe6b9bFe37845\"]]\n values.$pastUpgrades.1.2.0:\n- \"0xAf2F898a8680cb52766ABE0588ebe6b9bFe37845\"\n+ \"0x72981fD00087fF4F60aBFdE9f353cB1912A37fb6\"\n values.$pastUpgrades.1.1:\n- \"2023-10-08T16:25:23.000Z\"\n+ \"2024-02-22T08:20:23.000Z\"\n values.$pastUpgrades.1.0:\n- \"0xcad9f31340db6aca3a5da0d704ee33a9b6c43a5b1be4406cc0ed33edbdd7c92e\"\n+ \"0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826\"\n values.$pastUpgrades.0.2:\n- [\"0x72981fD00087fF4F60aBFdE9f353cB1912A37fb6\"]\n+ \"0x2c09704f5717cd65e31ea854b8c6a5229b841fcabc5bcbbbb1117f13b9f60d21\"\n values.$pastUpgrades.0.1:\n- \"2024-02-22T08:20:23.000Z\"\n+ \"2025-04-22T06:01:35.000Z\"\n values.$pastUpgrades.0.0:\n- \"0xe378370b6bbc3d7f7278df88aa0e233b8f0fea3d77bef04593919b29d0094826\"\n+ [\"0xc6326109E33465d6d61e4Cb7AFCe7B1bE7cfF868\"]\n values.$upgradeCount:\n- 2\n+ 4\n values.counterpart:\n- \"0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC\"\n+ \"scr:0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC\"\n values.messageQueue:\n- \"0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B\"\n values.prevReplayIndex:\n- [0,0,0,0,0]\n values.xDomainMessageSender:\n- \"0x0000000000000000000000000000000000000001\"\n+ \"scr:0x0000000000000000000000000000000000000001\"\n values.enforcedTxGateway:\n+ \"0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d\"\n values.messageQueueV1:\n+ \"0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B\"\n values.messageQueueV2:\n+ \"0x56971da63A3C0205184FEF096E9ddFc7A8C2D18a\"\n errors:\n- {\"prevReplayIndex\":\"Processing error occurred.\"}\n template:\n+ \"scroll/L1ScrollMessenger\"\n description:\n+ \"Contract used to send L1 -> L2 and relay messages from L2. It allows to replay failed messages and to drop skipped messages. L1 -> L2 messages sent using this contract pay for L2 gas on L1 and will have the aliased address of this contract as the sender.\"\n usedTypes:\n+ [{\"typeCaster\":\"ChainPrefix\",\"arg\":{\"prefix\":\"scr\"}}]\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract EnforcedTxGateway (0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d) {\n +++ description: Contracts to force L1 -> L2 messages with the proper sender.\n sourceHashes.1:\n- \"0xcb83aeace6c4751da7d9340ffa2eff5c9c9fdf2e9c1f25d6bc2f31ffabfcb477\"\n+ \"0x7e017c785ff8a5c9fce815594b0d7e7ced85dbc125ae000cd7babf1cfaefabf9\"\n values.$implementation:\n- \"0x642af405bF64660665B37977449C9C536B806318\"\n+ \"0x7e87c75BBe7991bbCEBd2C7a56f4cFC923BDDBcc\"\n values.$pastUpgrades.1:\n+ [\"2025-04-22T06:01:35.000Z\",\"0x2c09704f5717cd65e31ea854b8c6a5229b841fcabc5bcbbbb1117f13b9f60d21\",[\"0x7e87c75BBe7991bbCEBd2C7a56f4cFC923BDDBcc\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.messageQueue:\n- \"0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B\"\n+ \"0x56971da63A3C0205184FEF096E9ddFc7A8C2D18a\"\n+++ description: Whether the sendTransaction function is paused or not. Affects the sequencer failure risk.\n+++ severity: HIGH\n values.paused:\n- true\n+ false\n template:\n+ \"scroll/EnforcedTxGateway\"\n description:\n+ \"Contracts to force L1 -> L2 messages with the proper sender.\"\n fieldMeta:\n+ {\"paused\":{\"severity\":\"HIGH\",\"description\":\"Whether the sendTransaction function is paused or not. Affects the sequencer failure risk.\"}}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n- Status: DELETED\n contract L2ScrollMessengerFallback (0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC)\n +++ description: None\n```\n\n```diff\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n directlyReceivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"0x8432728A257646449245558B8b7Dbe51A16c7a4D\",\"description\":\"update the minimum delay message queue parameters and enforced mode parameters.\"}\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.revertBatch(bytes,bytes):\n- [\"emergency-nodelay\"]\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.finalizeEuclidInitialBatch(bytes32):\n- [\"SECURITY_COUNCIL_NO_DELAY_ROLE\"]\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.revertBatch(bytes):\n+ [\"emergency-nodelay\"]\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.disableEnforcedBatchMode():\n+ [\"SECURITY_COUNCIL_NO_DELAY_ROLE\"]\n values.accessControl.targets.0x8432728A257646449245558B8b7Dbe51A16c7a4D:\n+ {\"updateMessageQueueParameters((uint32,uint112,uint112))\":[\"ops-fast\"],\"updateEnforcedBatchParameters((uint24,uint24))\":[\"ops-fast\"],\"updateSigner(address)\":[\"emergency-nodelay\"]}\n values.accessControl.targets.0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d:\n+ {\"setPause(bool)\":[\"emergency-nodelay\"]}\n }\n```\n\n```diff\n- Status: DELETED\n contract L2GasPriceOracle (0x987e300fDfb06093859358522a79098848C33852)\n +++ description: None\n```\n\n```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: The main contract of the Scroll chain. Allows to post transaction data and state roots, along with proofs. Sequencing and proposing are behind a whitelist unless enforcedBatchMode is activated.\n sourceHashes.1:\n- \"0x2d7fa796a8274772f3ee8143549252719d97cf0dafeaf769802b66b51a195041\"\n+ \"0x993403059c5620e6c91110514f9f4a2f2331c55dab587699c67c19edddab92ad\"\n sourceHashes.0:\n- \"0x993403059c5620e6c91110514f9f4a2f2331c55dab587699c67c19edddab92ad\"\n+ \"0x73386ff4d9fbaf9cba78ae1e91ee43f11ff39acb8bcf332085ec42d7da6c2306\"\n values.$implementation:\n- \"0x8f339292d2b3909574B2bEB051a613a987dB538f\"\n+ \"0xb7c8833F5627a8a12558cAFa0d0EBD1ACBDce43f\"\n values.$pastUpgrades.6:\n+ [\"2025-04-15T14:47:23.000Z\",\"0xa1faad1ccd2c390641b46d50d93c26b7369137f021e528acfec78385494b2fb0\",[\"0x8f339292d2b3909574B2bEB051a613a987dB538f\"]]\n values.$pastUpgrades.5.2:\n- \"2025-04-15T14:47:23.000Z\"\n+ \"0x3928e0223337a112ea68c84db95441185a3e1da809638be13c0135761aa19ee7\"\n values.$pastUpgrades.5.1:\n- \"0xa1faad1ccd2c390641b46d50d93c26b7369137f021e528acfec78385494b2fb0\"\n+ [\"0x9bB163401E8C72573854c4Cd968aFA7A7b02D25f\"]\n values.$pastUpgrades.5.0:\n- [\"0x8f339292d2b3909574B2bEB051a613a987dB538f\"]\n+ \"2024-08-20T23:36:35.000Z\"\n values.$pastUpgrades.4.2:\n- \"0x3928e0223337a112ea68c84db95441185a3e1da809638be13c0135761aa19ee7\"\n+ \"0x2c09704f5717cd65e31ea854b8c6a5229b841fcabc5bcbbbb1117f13b9f60d21\"\n values.$pastUpgrades.4.1.0:\n- \"0x9bB163401E8C72573854c4Cd968aFA7A7b02D25f\"\n+ \"0xb7c8833F5627a8a12558cAFa0d0EBD1ACBDce43f\"\n values.$pastUpgrades.4.0:\n- \"2024-08-20T23:36:35.000Z\"\n+ \"2025-04-22T06:01:35.000Z\"\n values.$upgradeCount:\n- 6\n+ 7\n values.committedBatches:\n- [\"0x5aaeb6101a47fc16866e80d77ffe090b6a7b3cf7d988be981646ab6aedfa2c42\",\"0xaa8181f04f8e305328a6117fa6bc13fa2093a3c4c990c5281df95a1cb85ca18f\",\"0x30d13ec2a06074f2048d64d85b62e1b4fb8f461d43bbd26099ef86d903c97399\",\"0xe4bf15441d44aec723eff1ba7e80f9f5c6dbc46312471d0b23e297310870012f\",\"0xcb24a337233a0d9a335e71a33637a8e42d71422c08ca6338572eb1e25e0f989a\"]\n values.finalizedStateRoots:\n- [\"0x08d535cc60f40af5dd3b31e0998d7567c2d568b224bed2ba26070aeb078d1339\",\"0x2b3219c3d89d50b5aa4e56743c4e22501d34b885e468365ba3b1cc818297db74\",\"0x2494e7866ed0b6e8cf87024c0036e53cf3d4a7cbe22f11d80f8fff36392463a0\",\"0x18a3423e924e332986d81b32fbec1f1d21b1f7a8a706267fdf87ed18bc6dfff6\",\"0x2d0336979e3bcd0ef4c4cde61d5ab5b14ee57b5f533152c459dc0e63bb1a7e1f\"]\n values.isBatchFinalized:\n- [true,true,true,true,true]\n values.messageQueue:\n- \"0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B\"\n values.withdrawRoots:\n- [\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"0x42b111e4bf3652280b54a2f4a5195aeab5db8f647e93d1725566be3f2f9aedc0\",\"0x42b111e4bf3652280b54a2f4a5195aeab5db8f647e93d1725566be3f2f9aedc0\"]\n values.isEnforcedModeEnabled:\n+ false\n values.messageQueueV1:\n+ \"0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B\"\n values.messageQueueV2:\n+ \"0x56971da63A3C0205184FEF096E9ddFc7A8C2D18a\"\n values.provers:\n+ [\"0x6F9D816c4ec365Fe8Fc6898c785Be0E2D51bEC2c\",\"0x74b286304576625557629C47E9E8702383D9eF92\"]\n values.revertedBatches:\n+ [275119,275120,275121,275122,275123,275124,275125,275126,275127,275128,275129,275130,275131,275132,275133,275134,275135,275136,275137,275138,275139,275140,275141,275142,275143,275144,275145,275146,275147,275148,275149,275150,275151,275152,275153,275154,275155,275156,275157,275158,275159,275160,275161,275162,275163,275164,275165,275166,275167,275168,275169,275170,275171,275172,275173,346818,346817,346816,346815]\n values.sequencers:\n+ [\"0x054a47B9E2a22aF6c0CE55020238C8FEcd7d334B\",\"0xE514A8aE91d164C6Fb48a7DE336e10C34AF4e858\"]\n values.systemConfig:\n+ \"0x8432728A257646449245558B8b7Dbe51A16c7a4D\"\n errors:\n- {\"committedBatches\":\"Processing error occurred.\",\"finalizedStateRoots\":\"Processing error occurred.\",\"isBatchFinalized\":\"Processing error occurred.\",\"withdrawRoots\":\"Processing error occurred.\"}\n template:\n+ \"scroll/ScrollChain\"\n description:\n+ \"The main contract of the Scroll chain. Allows to post transaction data and state roots, along with proofs. Sequencing and proposing are behind a whitelist unless enforcedBatchMode is activated.\"\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ProxyAdmin (0xEB803eb3F501998126bf37bB823646Ed3D59d072) {\n +++ description: None\n directlyReceivedPermissions.10.from:\n- \"0x7F2b8C31F88B6006c382775eea88297Ec1e3E905\"\n+ \"0x8432728A257646449245558B8b7Dbe51A16c7a4D\"\n directlyReceivedPermissions.9.from:\n- \"0xb2b10a289A229415a124EFDeF310C10cb004B6ff\"\n+ \"0x7F2b8C31F88B6006c382775eea88297Ec1e3E905\"\n directlyReceivedPermissions.8.from:\n- \"0x987e300fDfb06093859358522a79098848C33852\"\n+ \"0xb2b10a289A229415a124EFDeF310C10cb004B6ff\"\n directlyReceivedPermissions.1.from:\n- \"0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B\"\n+ \"0x56971da63A3C0205184FEF096E9ddFc7A8C2D18a\"\n }\n```\n\n```diff\n contract Scroll Multisig 3 (0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n +++ description: None\n values.$members.2:\n- \"0xE2e6345baAD18f779167443Dc4886495507b3249\"\n+ \"0x8460aCc9A42D2CF07015a3e838df2E3aB37d30ae\"\n values.$members.1:\n- \"0x9337B41709c1C2B938Cb460ea3fA9DB586B172E0\"\n+ \"0xd33b8405635fE0Bd91aD1483778Bc5c053D8177f\"\n values.$threshold:\n- 4\n+ 3\n values.multisigThreshold:\n- \"4 of 5 (80%)\"\n+ \"3 of 5 (60%)\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostEuclid (0x33996CC9EEe2dc20B10b8E57d313d0FacC7a0828)\n +++ description: Contract used to verify zk proofs given the aggregate proof and the public input hash.\n```\n\n```diff\n+ Status: CREATED\n contract L1MessageQueueV2 (0x56971da63A3C0205184FEF096E9ddFc7A8C2D18a)\n +++ description: Contains the array of queued L1 -> L2 messages, either appended using the L1ScrollMessenger or the EnforcedTxGateway.\n```\n\n```diff\n+ Status: CREATED\n contract SystemConfig (0x8432728A257646449245558B8b7Dbe51A16c7a4D)\n +++ description: System configuration contract for Scroll, contains enforcedBatchParameters and messageQueueParameters determining permissionless mode.\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierPostEuclid-2 (0x9F66505cB1626D06B50EF2597f41De6686e8f79a)\n +++ description: None\n```"
}
]
},
{
"id": "b3e3118f",
"date": "Fri, 18 Apr 2025 18:06:50 GMT",
"timestamp": 1744999610,
"description": "Euclid batch number added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: None\n values.initialEuclidBatchIndex:\n- 0\n+ 357915\n }\n```"
}
]
},
{
"id": "3595ea64",
"date": "Wed, 16 Apr 2025 13:25:02 GMT",
"timestamp": 1744809902,
"description": "Phase 1 of the Euclid upgrade.\n- Upgraded ScrollChain implementation: new commit batch function supporting postEuclid → commitBatchWithBlobProof has a new implementation supporting new bach encoding versions until v6 (_commitBatchFromV2ToV6). Main change is the introduction of the BatchHeaderV3Codec new encoding.\n- Updated verifier to the zkVM verifier for Phase 1\n- Updated access in the ScrollOwner contract on L1, allowing SECURITY_COUNCIL_NO_DELAY role to call ScrollChain.finalizeEuclidInitialBatch\n\nNext step is proposal of the migration block, followed by its Security Council approval (finalizeEuclidInitialBatch) and then execution of the Phase 2 transactions to complete the Euclid upgrade.",
"isHighSeverity": true,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract MultipleVersionRollupVerifier (0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F) {\n +++ description: Used to update the verifier and keep track of current and old versions.\n values.latestVerifier.5:\n+ {\"startBatchIndex\":0,\"verifier\":\"0x4b289E4A5331bAFBc6cCb2F10C39B8EDceCDb247\"}\n values.latestVerifier.4.verifier:\n- \"0x4b289E4A5331bAFBc6cCb2F10C39B8EDceCDb247\"\n+ \"0x2d6e16d8e8a0C3Bc7750E774B108Ec39Ab0C18fB\"\n values.latestVerifier.3.verifier:\n- \"0x2d6e16d8e8a0C3Bc7750E774B108Ec39Ab0C18fB\"\n+ \"0x585DfaD7bF4099E011D185E266907A8ab60DAD2D\"\n values.latestVerifier.2.verifier:\n- \"0x585DfaD7bF4099E011D185E266907A8ab60DAD2D\"\n+ \"0x0112315Fa1c81c35ac9a477e161B52Ae4D1466B3\"\n values.legacyVerifiersLength.5:\n+ 0\n values.verifierVersions.5:\n+ 6\n }\n```\n\n```diff\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.finalizeEuclidInitialBatch(bytes32):\n+ [\"SECURITY_COUNCIL_NO_DELAY_ROLE\"]\n }\n```\n\n```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: None\n sourceHashes.1:\n- \"0x2069ff6eafc8fa79ae2c7e13a2618c44102f1f1b273cc5584e0b7cd3961948e1\"\n+ \"0x2d7fa796a8274772f3ee8143549252719d97cf0dafeaf769802b66b51a195041\"\n values.$implementation:\n- \"0x9bB163401E8C72573854c4Cd968aFA7A7b02D25f\"\n+ \"0x8f339292d2b3909574B2bEB051a613a987dB538f\"\n values.$pastUpgrades.5:\n+ [\"2025-04-15T14:47:23.000Z\",\"0xa1faad1ccd2c390641b46d50d93c26b7369137f021e528acfec78385494b2fb0\",[\"0x8f339292d2b3909574B2bEB051a613a987dB538f\"]]\n values.$upgradeCount:\n- 5\n+ 6\n values.initialEuclidBatchIndex:\n+ 0\n }\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierPostEuclid (0x0112315Fa1c81c35ac9a477e161B52Ae4D1466B3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract (0xd1638c0C7Bd6bf49D655D855d353aC8b4f949582)\n +++ description: None\n```"
}
]
},
{
"id": "131c86d4",
"date": "Mon, 31 Mar 2025 13:32:11 GMT",
"timestamp": 1743427931,
"description": "L2 side first discovery.",
"isHighSeverity": false,
"changeCount": 25,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract GnosisSafeL2 (0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ScrollOwner (0x13D24a7Ff6F5ec5ff0e9C40Fc3B8C9c01c65437B)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Scroll Security Council (0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafeL2 (0x2B2A8546Df3B23535fffd75B4e312f3C5c7B4351)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract AgoraGovernor (0x2f3F2054776bd3C2fc30d750734A8F539Bb214f0)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2GatewayRouter (0x4C0926FF5252A435FD19e10ED15e5a249Ba19d79)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2MessageQueue (0x5300000000000000000000000000000000000000)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ScrollStandardERC20Factory (0x66e5312EDeEAef6e80759A0F789e7914Fb401484)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract (0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (0x69C2eD64171bF5737c2B78bdF722e68a032B2825)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2ETHGateway (0x6EA73e05AdC79974B931123675ea8F78FfdacDF0)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2ScrollMessenger (0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockController (0x79D83D1518e2eAA64cdc0631df01b06e2762CC14)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract (0x7F2b8C31F88B6006c382775eea88297Ec1e3E905)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x82e58e20Da6ecF4B07649C9B2237FAf27f02bC81)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (0x8edC4EADEE120d4C51923c515e7C3241c815C2BC)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (0x9479ABfebefEea3c846163012a472b44F305b3d7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xA76acF000C890b0DD7AEEf57627d9899F955d026)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (0xC3eA7C657884BB380B66D79C36aDCb5658b01896)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ScrollStandardERC20 (0xC7d86908ccf644Db7C69437D5852CedBC1aD3f69)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SCRToken (0xd29687c813D741E2F938F4aC377128810E217b1b)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract (0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xde4972789EA56c4e7ac7Ba655EaFe73a30155F1e)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L2GatewayRouter (0xE2b4795039517653c5Ae8C2A9BFdd783b48f447A)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProposalTypesConfigurator (0xfDa7cF1D9C51b3fab41E2e4093374DD8715D640E)\n +++ description: None\n```"
}
]
},
{
"id": "a25b8759",
"date": "Tue, 25 Mar 2025 11:06:18 GMT",
"timestamp": 1742900778,
"description": "DEFAULT_ADMIN role removed from TimelockFast.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n values.accessControl.roles.DEFAULT_ADMIN_ROLE.members.1:\n- \"0x3f9041350B661c74C6CbE440c8Bd6BC4C168a9fd\"\n values.accessControl.roles.DEFAULT_ADMIN_ROLE.members.0:\n- \"0x0e58939204eEDa84F796FBc86840A50af10eC4F4\"\n+ \"0x3f9041350B661c74C6CbE440c8Bd6BC4C168a9fd\"\n }\n```"
}
]
},
{
"id": "aeda33d1",
"date": "Wed, 12 Mar 2025 08:50:49 GMT",
"timestamp": 1741769449,
"description": "MS signer change.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollExecutorMultisig (0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f) {\n +++ description: None\n values.$members.3:\n- \"0x568993632c34604098e35a184C52aD390c70f754\"\n+ \"0x26eceC198AdC0be598311bAe8EDfd4eEa47A56c5\"\n }\n```\n\n```diff\n- Status: DELETED\n contract undefined (0x568993632c34604098e35a184C52aD390c70f754)\n +++ description: None\n```\n\n```diff\n contract ScrollEmergencyMultisig (0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc) {\n +++ description: None\n values.$members.3:\n- \"0x568993632c34604098e35a184C52aD390c70f754\"\n+ \"0x26eceC198AdC0be598311bAe8EDfd4eEa47A56c5\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract undefined (0x26eceC198AdC0be598311bAe8EDfd4eEa47A56c5)\n +++ description: None\n```"
}
]
},
{
"id": "82215b08",
"date": "Wed, 22 Jan 2025 11:44:38 GMT",
"timestamp": 1737546278,
"description": "Gov update: Security Council added.\n\nThe ScrollOwner can be accessed by 4 Timelocks (see `l2b ui` and new contracts section):\n- SC path (upgrade, ProxyAdmin owner): no delay, SecurityCouncil\n- Slow path (ScrollOwner Admin -> manage all roles): 3d delay, SecurityCouncil\n- Fast path (ops, configs): 1d delay, ScrollOpsMultisig + ScrollExecutorMultisig (!CURRENTLY ALSO ADDITIONAL SCROLLOWNER ADMIN!)\n- Emergency Path (pause, revert batches, remove sequencers): no delay, ScrollEmergencyMultisig + ScrollExecutorMultisig\n\nIn summary: Current upgrades are either instant (SC) or 1d delay (ScrollOpsMultisig + ScrollExecutorMultisig). Pausing is instant (ScrollEmergencyMultisig + ScrollExecutorMultisig), ops are 1d delay (ScrollOpsMultisig + ScrollExecutorMultisig).",
"isHighSeverity": false,
"changeCount": 55,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract TimelockController (0x1A658B88fD0a3c82fa1a0609fCDbD32e7dd4aB9C)\n +++ description: None\n```\n\n```diff\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n values.accessControl.roles.DEFAULT_ADMIN_ROLE.members.1:\n- \"0x0e58939204eEDa84F796FBc86840A50af10eC4F4\"\n+ \"0x3f9041350B661c74C6CbE440c8Bd6BC4C168a9fd\"\n values.accessControl.roles.DEFAULT_ADMIN_ROLE.members.0:\n- \"0x1A658B88fD0a3c82fa1a0609fCDbD32e7dd4aB9C\"\n+ \"0x0e58939204eEDa84F796FBc86840A50af10eC4F4\"\n values.accessControl.roles.SECURITY_COUNCIL_NO_DELAY_ROLE.members.0:\n- \"0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe\"\n+ \"0x0CD4c0F24a0A9f3E2Fe80ed385D8AD5a2FfECA44\"\n values.accessControl.roles.SCROLL_MULTISIG_NO_DELAY_ROLE.members.0:\n- \"0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe\"\n values.accessControl.roles.EMERGENCY_MULTISIG_NO_DELAY_ROLE.members.0:\n- \"0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc\"\n values.accessControl.roles.TIMELOCK_1DAY_DELAY_TOLE.members.0:\n- \"0x0e58939204eEDa84F796FBc86840A50af10eC4F4\"\n values.accessControl.roles.TIMELOCK_7DAY_DELAY_ROLE.members.0:\n- \"0xDC1d1189Da69Ae2016E4976A43De20972D349B1b\"\n values.accessControl.roles.emergency-nodelay:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x826714adD4dDA2b8750794A467C892c0Cd49216b\"]}\n values.accessControl.roles.ops-fast:\n+ {\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"0x0e58939204eEDa84F796FBc86840A50af10eC4F4\"]}\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.0x10d44583:\n- [\"SCROLL_MULTISIG_NO_DELAY_ROLE\",\"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"]\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.removeSequencer(address).1:\n- \"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.removeSequencer(address).0:\n- \"SCROLL_MULTISIG_NO_DELAY_ROLE\"\n+ \"emergency-nodelay\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.removeProver(address).1:\n- \"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.removeProver(address).0:\n- \"SCROLL_MULTISIG_NO_DELAY_ROLE\"\n+ \"emergency-nodelay\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.setPause(bool).1:\n- \"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.setPause(bool).0:\n- \"SCROLL_MULTISIG_NO_DELAY_ROLE\"\n+ \"emergency-nodelay\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.addSequencer(address).0:\n- \"TIMELOCK_1DAY_DELAY_TOLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.addProver(address).0:\n- \"TIMELOCK_1DAY_DELAY_TOLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.updateMaxNumTxInChunk(uint256).0:\n- \"TIMELOCK_7DAY_DELAY_ROLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.revertBatch(bytes,bytes).1:\n- \"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.revertBatch(bytes,bytes).0:\n- \"SCROLL_MULTISIG_NO_DELAY_ROLE\"\n+ \"emergency-nodelay\"\n values.accessControl.targets.0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B.updateGasOracle(address):\n- [\"TIMELOCK_1DAY_DELAY_TOLE\"]\n values.accessControl.targets.0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B.updateMaxGasLimit(uint256).0:\n- \"TIMELOCK_1DAY_DELAY_TOLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367.setPause(bool).1:\n- \"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"\n values.accessControl.targets.0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367.setPause(bool).0:\n- \"SCROLL_MULTISIG_NO_DELAY_ROLE\"\n+ \"emergency-nodelay\"\n values.accessControl.targets.0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367.updateMaxReplayTimes(uint256).0:\n- \"TIMELOCK_1DAY_DELAY_TOLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367.updateFeeVault(address):\n+ [\"ops-fast\"]\n values.accessControl.targets.0x987e300fDfb06093859358522a79098848C33852:\n- {\"setIntrinsicParams(uint64,uint64,uint64,uint64)\":[\"SCROLL_MULTISIG_NO_DELAY_ROLE\",\"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"]}\n values.accessControl.targets.0x259204DDd2bA29bD9b1B9A5c9B093f73d7EAcf37.updateWhitelistStatus(address[],bool).0:\n- \"TIMELOCK_1DAY_DELAY_TOLE\"\n+ \"emergency-nodelay\"\n values.accessControl.targets.0xA2Ab526e5C5491F10FC05A55F064BF9F7CEf32a0:\n- {\"updateVerifier(uint64,address)\":[\"SECURITY_COUNCIL_NO_DELAY_ROLE\",\"TIMELOCK_7DAY_DELAY_ROLE\"]}\n values.accessControl.targets.0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6.setERC20Gateway(address[],address[]).0:\n- \"TIMELOCK_1DAY_DELAY_TOLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0xb2b10a289A229415a124EFDeF310C10cb004B6ff.updateTokenMapping(address,address).0:\n- \"TIMELOCK_1DAY_DELAY_TOLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0x6260aF48e8948617b8FA17F4e5CEa2d21D21554B.updateTokenMapping(address,address).0:\n- \"TIMELOCK_1DAY_DELAY_TOLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0xb94f7F6ABcb811c5Ac709dE14E37590fcCd975B6.updateTokenMapping(address,address).0:\n- \"TIMELOCK_1DAY_DELAY_TOLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B.updateCircleCaller(address).0:\n- \"TIMELOCK_7DAY_DELAY_ROLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B.pauseDeposit(bool).0:\n- \"TIMELOCK_7DAY_DELAY_ROLE\"\n+ \"emergency-nodelay\"\n values.accessControl.targets.0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B.pauseWithdraw(bool).0:\n- \"TIMELOCK_7DAY_DELAY_ROLE\"\n+ \"emergency-nodelay\"\n values.accessControl.targets.0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d:\n- {\"setPause(bool)\":[\"SCROLL_MULTISIG_NO_DELAY_ROLE\",\"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"]}\n values.accessControl.targets.0x1Ea29d57dAC237152d878758bAe4BeB2668998f6:\n- {\"updateVerifier(uint256,uint64,address)\":[\"TIMELOCK_7DAY_DELAY_ROLE\",\"SECURITY_COUNCIL_NO_DELAY_ROLE\"]}\n values.accessControl.targets.0xf94AfBD9370E25Dd6Ca557d5D67634aeFDA2416B:\n- {\"updateVerifier(uint256,uint64,address)\":[\"TIMELOCK_7DAY_DELAY_ROLE\"]}\n values.accessControl.targets.0x5Bcfd99c34cf7E06fc756f6f5aE7400504852bc4.setBatchConfig(address,(uint96,uint96,uint16,uint24,uint24)).0:\n- \"TIMELOCK_1DAY_DELAY_TOLE\"\n+ \"ops-fast\"\n values.accessControl.targets.0x5Bcfd99c34cf7E06fc756f6f5aE7400504852bc4.grantRole(bytes32,address):\n+ [\"ops-fast\"]\n values.accessControl.targets.0x5Bcfd99c34cf7E06fc756f6f5aE7400504852bc4.revokeRole(bytes32,address):\n+ [\"ops-fast\"]\n values.accessControl.targets.0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F.updateVerifier(uint256,uint64,address).0:\n- \"TIMELOCK_7DAY_DELAY_ROLE\"\n+ \"SECURITY_COUNCIL_NO_DELAY_ROLE\"\n }\n```\n\n```diff\n- Status: DELETED\n contract TimelockController (0xDC1d1189Da69Ae2016E4976A43De20972D349B1b)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockSC (0x0CD4c0F24a0A9f3E2Fe80ed385D8AD5a2FfECA44)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafeL2 (0x11cd09a0c5B1dc674615783b0772a9bFD53e3A8F)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SecurityCouncil (0x1a37bF1Ccbf570C92FE2239FefaaAF861c2924DD)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockSlow (0x3f9041350B661c74C6CbE440c8Bd6BC4C168a9fd)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x69C2eD64171bF5737c2B78bdF722e68a032B2825)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TimelockEmergency (0x826714adD4dDA2b8750794A467C892c0Cd49216b)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x8edC4EADEE120d4C51923c515e7C3241c815C2BC)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x9479ABfebefEea3c846163012a472b44F305b3d7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0xC3eA7C657884BB380B66D79C36aDCb5658b01896)\n +++ description: None\n```"
}
]
},
{
"id": "3d1a093c",
"date": "Fri, 10 Jan 2025 15:23:58 GMT",
"timestamp": 1736522638,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 15,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n contract PlonkVerifierV1-1 (0x03a72B00D036C479105fF98A1953b15d9c510110) {\n +++ description: None\n unverified:\n- true\n sourceHashes:\n+ [\"0xc98f03651ddf430db5e0fa5d49b57551e01975529019ff3fbc1897109cd6dc9e\"]\n references:\n+ [{\"text\":\"Source Code\",\"href\":\"https://circuit-release.s3.us-west-2.amazonaws.com/release-v0.11.4/evm_verifier.yul\"}]\n }\n```\n\n```diff\n contract PlonkVerifierV1 (0x2293cd12e8564e8219d314b075867c2f66ac6941) {\n +++ description: None\n unverified:\n- true\n sourceHashes:\n+ [\"0xcd6a67da07fdd0ff4f75a99bf03d70659a6a00d98f1219b1aff2756b7ce971bd\"]\n references:\n+ [{\"text\":\"Source Code\",\"href\":\"https://circuit-release.s3.us-west-2.amazonaws.com/release-v0.10.3/evm_verifier.yul\"}]\n }\n```\n\n```diff\n contract PlonkVerifierV0 (0x4B8Aa8A96078689384DAb49691E9bA51F9d2F9E1) {\n +++ description: None\n unverified:\n- true\n sourceHashes:\n+ [\"0x29ee0fd7e29697f9960266e0f8fc2b84b927300952d489ee40ea3cff695bd819\"]\n references:\n+ [{\"text\":\"Source Code\",\"href\":\"https://circuit-release.s3.us-west-2.amazonaws.com/release-v0.9.5/evm_verifier.yul\"}]\n }\n```\n\n```diff\n contract PlonkVerifierV2 (0x8759E83b6570A0bA46c3CE7eB359F354F816c9a9) {\n +++ description: None\n unverified:\n- true\n sourceHashes:\n+ [\"0x438a888895bdfdd405a223087c58ce76dcd866a0c5e208b94c63e83922724cb3\"]\n references:\n+ [{\"text\":\"Source Code\",\"href\":\"https://github.com/scroll-tech/scroll-prover/blob/main/release-v0.12.0/evm_verifier.yul\"}]\n }\n```\n\n```diff\n contract PlonkVerifierV2-1 (0x8c1b52757b5c571ADcB5572E992679d4D48e30f7) {\n +++ description: None\n unverified:\n- true\n sourceHashes:\n+ [\"0xdd6da115b0a4c879746bcca2a71fa1daa79f7e3a074369d9246f614b327e9322\"]\n references:\n+ [{\"text\":\"Source Code\",\"href\":\"https://github.com/scroll-tech/scroll-prover/blob/main/release-v0.13.0/evm_verifier.yul\"}]\n }\n```"
}
]
},
{
"id": "16c9ba7b",
"date": "Wed, 08 Jan 2025 11:14:25 GMT",
"timestamp": 1736334865,
"description": "One address removed from the whitelist (for actors that can set the l2 base fee on L1).",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Whitelist (0x259204DDd2bA29bD9b1B9A5c9B093f73d7EAcf37) {\n +++ description: None\n values.whitelisted.1:\n- \"0x3a2855ea96b2eb965568eA5d738B8DE185C717f4\"\n values.whitelisted.0:\n- \"0x21b8a9F5a4640c3FC13E19C48e776173e1210995\"\n+ \"0x3a2855ea96b2eb965568eA5d738B8DE185C717f4\"\n }\n```"
}
]
},
{
"id": "8a4690b3",
"date": "Fri, 03 Jan 2025 11:58:37 GMT",
"timestamp": 1735905517,
"description": "Scroll operator addresses removed / changed.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: None\n values.provers.3:\n- \"0x74b286304576625557629C47E9E8702383D9eF92\"\n values.provers.2:\n- \"0x6F9D816c4ec365Fe8Fc6898c785Be0E2D51bEC2c\"\n values.provers.1:\n- \"0x69d79Fc4Ae89E4DA80D719e26a435621F75B7f06\"\n+ \"0x74b286304576625557629C47E9E8702383D9eF92\"\n values.provers.0:\n- \"0x356483dC32B004f32Ea0Ce58F7F88879886e9074\"\n+ \"0x6F9D816c4ec365Fe8Fc6898c785Be0E2D51bEC2c\"\n values.sequencers.3:\n- \"0xE514A8aE91d164C6Fb48a7DE336e10C34AF4e858\"\n values.sequencers.2:\n- \"0x054a47B9E2a22aF6c0CE55020238C8FEcd7d334B\"\n values.sequencers.1:\n- \"0x2ce8B4A516ebBc8B425764a867B742F76C2244c7\"\n+ \"0xE514A8aE91d164C6Fb48a7DE336e10C34AF4e858\"\n values.sequencers.0:\n- \"0xcF2898225ED05Be911D3709d9417e86E0b4Cfc8f\"\n+ \"0x054a47B9E2a22aF6c0CE55020238C8FEcd7d334B\"\n }\n```"
}
]
},
{
"id": "4d037d17",
"date": "Mon, 23 Dec 2024 13:24:40 GMT",
"timestamp": 1734960280,
"description": "2 provers, 2 sequencers added and one whitelisted address added (can relay l2 basefee on l1).",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Whitelist (0x259204DDd2bA29bD9b1B9A5c9B093f73d7EAcf37) {\n +++ description: None\n values.whitelisted.1:\n+ \"0x3a2855ea96b2eb965568eA5d738B8DE185C717f4\"\n }\n```\n\n```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: None\n values.provers.3:\n+ \"0x74b286304576625557629C47E9E8702383D9eF92\"\n values.provers.2:\n+ \"0x6F9D816c4ec365Fe8Fc6898c785Be0E2D51bEC2c\"\n values.sequencers.3:\n+ \"0xE514A8aE91d164C6Fb48a7DE336e10C34AF4e858\"\n values.sequencers.2:\n+ \"0x054a47B9E2a22aF6c0CE55020238C8FEcd7d334B\"\n }\n```"
}
]
},
{
"id": "ca5148f6",
"date": "Mon, 25 Nov 2024 10:51:12 GMT",
"timestamp": 1732531872,
"description": "Same one signer removed from ExecutorMultisig and EmergencyMultisig.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ExecutorMultisig (0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f) {\n +++ description: None\n values.$members.4:\n- \"0x568993632c34604098e35a184C52aD390c70f754\"\n values.$members.3:\n- \"0xd7bC70ecf344C279eB78C8899Ba5538e2e3A0632\"\n+ \"0x568993632c34604098e35a184C52aD390c70f754\"\n values.multisigThreshold:\n- \"1 of 5 (20%)\"\n+ \"1 of 4 (25%)\"\n }\n```\n\n```diff\n contract EmergencyMultisig (0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc) {\n +++ description: None\n values.$members.4:\n- \"0x568993632c34604098e35a184C52aD390c70f754\"\n values.$members.3:\n- \"0xd7bC70ecf344C279eB78C8899Ba5538e2e3A0632\"\n+ \"0x568993632c34604098e35a184C52aD390c70f754\"\n values.multisigThreshold:\n- \"2 of 5 (40%)\"\n+ \"2 of 4 (50%)\"\n }\n```"
}
]
},
{
"id": "cb4f0a1b",
"date": "Thu, 14 Nov 2024 06:38:22 GMT",
"timestamp": 1731566302,
"description": "Batches reverted due to accidental 'old-version batches'. The reverted batches used the old version 2 and not the new v4 `commitBatchWithBlobProof()`. The post-mortem should appear [here](https://status.scroll.io/incidents/pw1cf3bmxy8s).\n\nIn Scroll, batches can be reverted by the EmergencyMultisig anytime before they are proven (which currently happens around 2h after they are committed).",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: None\n values.revertedBatches.58:\n+ {\"batchIndex\":346815}\n values.revertedBatches.57:\n+ {\"batchIndex\":346816}\n values.revertedBatches.56:\n+ {\"batchIndex\":346817}\n values.revertedBatches.55:\n+ {\"batchIndex\":346818}\n }\n```"
}
]
},
{
"id": "2d3133ef",
"date": "Sat, 28 Sep 2024 05:59:58 GMT",
"timestamp": 1727503198,
"description": "Rename pufETHEscrow (external), fix references, single signer change in Executor- and EmergencyMultisig.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ExecutorMultisig (0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f) {\n +++ description: None\n values.$members.4:\n- \"0xdA66Df3920091eF4B54782B9463587c314DAdD41\"\n+ \"0x568993632c34604098e35a184C52aD390c70f754\"\n }\n```\n\n```diff\n contract EmergencyMultisig (0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc) {\n +++ description: None\n values.$members.4:\n- \"0xdA66Df3920091eF4B54782B9463587c314DAdD41\"\n+ \"0x568993632c34604098e35a184C52aD390c70f754\"\n }\n```"
}
]
},
{
"id": "d3c7eaaa",
"date": "Fri, 27 Sep 2024 15:09:56 GMT",
"timestamp": 1727449796,
"description": "Add DAI escrow, upgradeable by ScrollMultisig.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract DaiEscrow (0x67260A8B73C5B77B55c1805218A42A7A6F98F515)\n +++ description: None\n```"
}
]
},
{
"id": "2c4bfa10",
"date": "Wed, 11 Sep 2024 07:47:40 GMT",
"timestamp": 1726040860,
"description": "The revertBatch() target is added to the ScrollOwner accesscontrol after our message to the team. Additionally, the 1d timelock is added as an Admin to the ScrollOwner.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n values.accessControl.roles.DEFAULT_ADMIN_ROLE.members.1:\n+ \"0x0e58939204eEDa84F796FBc86840A50af10eC4F4\"\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.revertBatch(bytes,bytes):\n+ [\"SCROLL_MULTISIG_NO_DELAY_ROLE\",\"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"]\n }\n```"
}
]
},
{
"id": "64f1e977",
"date": "Tue, 03 Sep 2024 15:09:19 GMT",
"timestamp": 1725376159,
"description": "[DarwinV2 upgrade](https://github.com/scroll-tech/go-ethereum/releases/tag/scroll-v5.7.0): This security patch adds a fallback for the case where blocks cannot be compressed under the new compression scheme (Darwin Upgrade). These are now posted as uncompressed blobs.\n\nThe verifier is therefore changed to a new ZkEvmVerifierV2 (code-identical) and a new PlonkVerifier.\n\nMultipleVersionRollupVerifier owner is changed from ScrollMultisig to ScrollOwner.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract MultipleVersionRollupVerifier (0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F) {\n +++ description: Used to update the verifier and keep track of current and old versions.\n values.latestVerifier.4:\n+ {\"startBatchIndex\":0,\"verifier\":\"0xCAECeE2E815e7f758c2477f900AFA14bDDce54B3\"}\n values.legacyVerifiersLength.4:\n+ 0\n values.owner:\n- \"0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe\"\n+ \"0x798576400F7D662961BA15C6b3F3d813447a26a6\"\n values.verifierVersions.4:\n+ 4\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierV2-1 (0x8c1b52757b5c571ADcB5572E992679d4D48e30f7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV2-1 (0xCAECeE2E815e7f758c2477f900AFA14bDDce54B3)\n +++ description: None\n```"
}
]
},
{
"id": "ca551251",
"date": "Fri, 23 Aug 2024 11:25:14 GMT",
"timestamp": 1724412314,
"description": "Scroll can now prove bundles (i.e. multiple DA submissions) in a single proof. Full changelog: . It also seems to have forgotten to update a permission for the new `revertBatch` function sig, they have been notified.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1MessageQueue (0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B) {\n +++ description: None\n values.$implementation:\n- \"0xeBaed7A81c298B24EE6d59c22698A951dc448E01\"\n+ \"0x137CC585F607EDeBBc3CA6360AffCFeab507B374\"\n values.$upgradeCount:\n- 2\n+ 3\n }\n```\n\n```diff\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.revertBatch(bytes,uint256):\n- [\"SCROLL_MULTISIG_NO_DELAY_ROLE\",\"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"]\n values.accessControl.targets.0xa13BAF47339d63B743e7Da8741db5456DAc1E556.0x10d44583:\n+ [\"SCROLL_MULTISIG_NO_DELAY_ROLE\",\"EMERGENCY_MULTISIG_NO_DELAY_ROLE\"]\n values.accessControl.targets.0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F:\n+ {\"updateVerifier(uint256,uint64,address)\":[\"TIMELOCK_7DAY_DELAY_ROLE\"]}\n }\n```\n\n```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: None\n values.$implementation:\n- \"0x4F250B05262240C787a1eE222687C6eC395C628A\"\n+ \"0x9bB163401E8C72573854c4Cd968aFA7A7b02D25f\"\n values.$upgradeCount:\n- 4\n+ 5\n values.verifier:\n- \"0xf94AfBD9370E25Dd6Ca557d5D67634aeFDA2416B\"\n+ \"0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F\"\n }\n```\n\n```diff\n- Status: DELETED\n contract MultipleVersionRollupVerifier (0xf94AfBD9370E25Dd6Ca557d5D67634aeFDA2416B)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV2 (0x2d6e16d8e8a0C3Bc7750E774B108Ec39Ab0C18fB)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MultipleVersionRollupVerifier (0x4CEA3E866e7c57fD75CB0CA3E9F5f1151D4Ead3F)\n +++ description: Used to update the verifier and keep track of current and old versions.\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierV3 (0x8759E83b6570A0bA46c3CE7eB359F354F816c9a9)\n +++ description: None\n```"
}
]
},
{
"id": "fddd2c38",
"date": "Tue, 23 Jul 2024 13:16:46 GMT",
"timestamp": 1721740606,
"description": "Provide description of changes. This section will be preserved.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract PufferFinanceOpsMultisig (0xC0896ab1A8cae8c2C1d27d011eb955Cca955580d) {\n +++ description: None\n values.$multisigThreshold:\n- \"3 of 7 (43%)\"\n+ \"3 of 8 (38%)\"\n values.getOwners.7:\n+ \"0x206846dE1F372A9a603e672ba97A5238cC89aeAA\"\n values.getOwners.6:\n- \"0x206846dE1F372A9a603e672ba97A5238cC89aeAA\"\n+ \"0xf061f1FceFa32b3bbD5d18c5A623DB64bfBc107D\"\n values.getOwners.5:\n- \"0xf061f1FceFa32b3bbD5d18c5A623DB64bfBc107D\"\n+ \"0x8F97Bf67182122D2f1745216a81724143db97E43\"\n values.getOwners.4:\n- \"0x8F97Bf67182122D2f1745216a81724143db97E43\"\n+ \"0xD70aa9d7280E6FEe89B86f53c0B2A363478D5e94\"\n values.getOwners.3:\n- \"0xD70aa9d7280E6FEe89B86f53c0B2A363478D5e94\"\n+ \"0xD6475ce37d964d4816715FdafFEeAAf2958948bE\"\n values.getOwners.2:\n- \"0xD6475ce37d964d4816715FdafFEeAAf2958948bE\"\n+ \"0xf09c25681090C5F9408c6D3CD24baa8721870dc5\"\n values.getOwners.1:\n- \"0xf09c25681090C5F9408c6D3CD24baa8721870dc5\"\n+ \"0xE408AE2E70a567c83C0BD36dC4a00b0a56F0A8DA\"\n values.getOwners.0:\n- \"0xE408AE2E70a567c83C0BD36dC4a00b0a56F0A8DA\"\n+ \"0x11B0BE5e19E38F6f6E07e11f103C4F4e8A5d0f6a\"\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ProxyAdmin (0x9eBf2f33526CD571f8b2ad312492cb650870CFd6)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract pufEthEscrow (0xA033Ff09f2da45f0e9ae495f525363722Df42b2a)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PufferFinanceOpsMultisig (0xC0896ab1A8cae8c2C1d27d011eb955Cca955580d)\n +++ description: None\n```"
}
]
},
{
"id": "ea046136",
"date": "Mon, 15 Jul 2024 09:39:11 GMT",
"timestamp": 1721036351,
"description": "New targets are added to the ScrollOwner accessControl: `updateVerifier` on the MultipleVersionRollupVerifier can now be called via TimelockMid(7d) and `setBatchConfig` on the L1BatchBridgeGateway via TimelockFast(1d).",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n +++ description: Owner of all contracts in the system. It implements an extension of AccessControl that manages roles and functions allowed to be called by each role.\n values.accessControl.targets.0xf94AfBD9370E25Dd6Ca557d5D67634aeFDA2416B:\n+ {\"updateVerifier(uint256,uint64,address)\":[\"TIMELOCK_7DAY_DELAY_ROLE\"]}\n values.accessControl.targets.0x5Bcfd99c34cf7E06fc756f6f5aE7400504852bc4:\n+ {\"setBatchConfig(address,(uint96,uint96,uint16,uint24,uint24))\":[\"TIMELOCK_1DAY_DELAY_TOLE\"]}\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract L1BatchBridgeGateway (0x5Bcfd99c34cf7E06fc756f6f5aE7400504852bc4)\n +++ description: None\n```"
}
]
},
{
"id": "dc1d8275",
"date": "Mon, 08 Jul 2024 06:07:38 GMT",
"timestamp": 1720418858,
"description": "Batches are reverted [in this transaction](https://app.blocksec.com/explorer/tx/eth/0xf58cd0223418a4dd390be63d67c31ccd3b05a82d59461106227664e8fc417ac5). Unclear what justified this action.\n\nRelevant incident page: https://status.scroll.io/incidents/44k6s4qg6kcs",
"isHighSeverity": false,
"changeCount": 55,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: None\n values.revertedBatches.54:\n+ {\"batchIndex\":275173}\n values.revertedBatches.53:\n+ {\"batchIndex\":275172}\n values.revertedBatches.52:\n+ {\"batchIndex\":275171}\n values.revertedBatches.51:\n+ {\"batchIndex\":275170}\n values.revertedBatches.50:\n+ {\"batchIndex\":275169}\n values.revertedBatches.49:\n+ {\"batchIndex\":275168}\n values.revertedBatches.48:\n+ {\"batchIndex\":275167}\n values.revertedBatches.47:\n+ {\"batchIndex\":275166}\n values.revertedBatches.46:\n+ {\"batchIndex\":275165}\n values.revertedBatches.45:\n+ {\"batchIndex\":275164}\n values.revertedBatches.44:\n+ {\"batchIndex\":275163}\n values.revertedBatches.43:\n+ {\"batchIndex\":275162}\n values.revertedBatches.42:\n+ {\"batchIndex\":275161}\n values.revertedBatches.41:\n+ {\"batchIndex\":275160}\n values.revertedBatches.40:\n+ {\"batchIndex\":275159}\n values.revertedBatches.39:\n+ {\"batchIndex\":275158}\n values.revertedBatches.38:\n+ {\"batchIndex\":275157}\n values.revertedBatches.37:\n+ {\"batchIndex\":275156}\n values.revertedBatches.36:\n+ {\"batchIndex\":275155}\n values.revertedBatches.35:\n+ {\"batchIndex\":275154}\n values.revertedBatches.34:\n+ {\"batchIndex\":275153}\n values.revertedBatches.33:\n+ {\"batchIndex\":275152}\n values.revertedBatches.32:\n+ {\"batchIndex\":275151}\n values.revertedBatches.31:\n+ {\"batchIndex\":275150}\n values.revertedBatches.30:\n+ {\"batchIndex\":275149}\n values.revertedBatches.29:\n+ {\"batchIndex\":275148}\n values.revertedBatches.28:\n+ {\"batchIndex\":275147}\n values.revertedBatches.27:\n+ {\"batchIndex\":275146}\n values.revertedBatches.26:\n+ {\"batchIndex\":275145}\n values.revertedBatches.25:\n+ {\"batchIndex\":275144}\n values.revertedBatches.24:\n+ {\"batchIndex\":275143}\n values.revertedBatches.23:\n+ {\"batchIndex\":275142}\n values.revertedBatches.22:\n+ {\"batchIndex\":275141}\n values.revertedBatches.21:\n+ {\"batchIndex\":275140}\n values.revertedBatches.20:\n+ {\"batchIndex\":275139}\n values.revertedBatches.19:\n+ {\"batchIndex\":275138}\n values.revertedBatches.18:\n+ {\"batchIndex\":275137}\n values.revertedBatches.17:\n+ {\"batchIndex\":275136}\n values.revertedBatches.16:\n+ {\"batchIndex\":275135}\n values.revertedBatches.15:\n+ {\"batchIndex\":275134}\n values.revertedBatches.14:\n+ {\"batchIndex\":275133}\n values.revertedBatches.13:\n+ {\"batchIndex\":275132}\n values.revertedBatches.12:\n+ {\"batchIndex\":275131}\n values.revertedBatches.11:\n+ {\"batchIndex\":275130}\n values.revertedBatches.10:\n+ {\"batchIndex\":275129}\n values.revertedBatches.9:\n+ {\"batchIndex\":275128}\n values.revertedBatches.8:\n+ {\"batchIndex\":275127}\n values.revertedBatches.7:\n+ {\"batchIndex\":275126}\n values.revertedBatches.6:\n+ {\"batchIndex\":275125}\n values.revertedBatches.5:\n+ {\"batchIndex\":275124}\n values.revertedBatches.4:\n+ {\"batchIndex\":275123}\n values.revertedBatches.3:\n+ {\"batchIndex\":275122}\n values.revertedBatches.2:\n+ {\"batchIndex\":275121}\n values.revertedBatches.1:\n+ {\"batchIndex\":275120}\n values.revertedBatches.0:\n+ {\"batchIndex\":275119}\n }\n```"
}
]
},
{
"id": "c0a1b849",
"date": "Thu, 04 Jul 2024 07:23:55 GMT",
"timestamp": 1720077835,
"description": "This upgrade is called [the Curie Upgrade](https://scroll.io/blog/compressing-the-gas-scrolls-curie-upgrade) by Scroll.\nIt brings a new batch version that has new compression and an accompanying new verifier and verifier-manager.\nThe L2 changes are listed in the blog post.\n\n### ScrollChain\n\nBatch version > 1 is now supported. This allows for the new batch version 2 to be posted.\n\n### MultipleVersionRollupVerifier (manages verifiers)\n\nIn the `updateVerifier()` function, a check whether the new verifier's `_startBatchIndex` is already finalized (-->revert), is removed. \n\n### ZkEvmVerifierV1\n\nThis is the contract in the third slot of `latestVerifier`, added in this upgrade. It is code-identical with the previous one, but points to the new Plonk Verifier.\n\n### New Plonk Verifier\n\nThe source code (yul+) can be found at https://circuit-release.s3.us-west-2.amazonaws.com/release-v0.11.4/evm_verifier.yul.",
"isHighSeverity": true,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract MultipleVersionRollupVerifier (0x1Ea29d57dAC237152d878758bAe4BeB2668998f6)\n +++ description: Used to update the verifier and keep track of current and old versions.\n```\n\n```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: None\n upgradeability.implementation:\n- \"0xaa6d0F2490AC3957B97e11afEC6F0f250593CaC8\"\n+ \"0x4F250B05262240C787a1eE222687C6eC395C628A\"\n implementations.0:\n- \"0xaa6d0F2490AC3957B97e11afEC6F0f250593CaC8\"\n+ \"0x4F250B05262240C787a1eE222687C6eC395C628A\"\n values.verifier:\n- \"0x1Ea29d57dAC237152d878758bAe4BeB2668998f6\"\n+ \"0xf94AfBD9370E25Dd6Ca557d5D67634aeFDA2416B\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierV2 (0x03a72B00D036C479105fF98A1953b15d9c510110)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV1-1 (0x63FB51C55d9605a75F8872C80De260a00fACfaA2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MultipleVersionRollupVerifier (0xf94AfBD9370E25Dd6Ca557d5D67634aeFDA2416B)\n +++ description: Used to update the verifier and keep track of current and old versions.\n```"
}
]
},
{
"id": "5e37408c",
"date": "Wed, 29 May 2024 07:42:54 GMT",
"timestamp": 1716968574,
"description": "The owner of MultipleVersionRollupVerifier (manages verifiers for the Scroll rollup) is changed from the Scroll Multisig to the ScrollOwner contrac. (as described on the frontend)",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract MultipleVersionRollupVerifier (0x1Ea29d57dAC237152d878758bAe4BeB2668998f6) {\n +++ description: Used to update the verifier and keep track of current and old versions.\n values.owner:\n- \"0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe\"\n+ \"0x798576400F7D662961BA15C6b3F3d813447a26a6\"\n }\n```"
}
]
},
{
"id": "0e2109bb",
"date": "Mon, 20 May 2024 14:11:22 GMT",
"timestamp": 1716214282,
"description": "Added the Lido wstETH escrow together with its admin.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract wstETHescrowLido (0x6625C6332c9F91F2D27c304E729B86db87A3f504)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract wstETHescrowLidoProxyAdmin (0xCC2C53556Bc75217cf698721b29071d6f12628A9)\n +++ description: None\n```"
}
]
},
{
"id": "5cabc0a4",
"date": "Mon, 29 Apr 2024 10:01:53 GMT",
"timestamp": 1714384913,
"description": "Added blob support.\n\n### ScrollChain\n\nUse of errors instead of requires. `commitBatch` now supports version `1`, which is blobs. Added `finalizeBatchWithProof4844` function.\n\n### MultipleVersionRollupVerifier\n\nIt has been updated to support multiple versions. Before, it just contained a single `latestVerifier`, now it's a mapping from versions to latest verifiers.",
"isHighSeverity": true,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n +++ description: None\n values.accessControl.targets.0x1Ea29d57dAC237152d878758bAe4BeB2668998f6:\n+ {\"updateVerifier(uint256,uint64,address)\":[\"TIMELOCK_7DAY_DELAY_ROLE\",\"SECURITY_COUNCIL_NO_DELAY_ROLE\"]}\n }\n```\n\n```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n +++ description: None\n upgradeability.implementation:\n- \"0xFA148514d03420b7b1a13eC74da06D2Ca875539C\"\n+ \"0xaa6d0F2490AC3957B97e11afEC6F0f250593CaC8\"\n implementations.0:\n- \"0xFA148514d03420b7b1a13eC74da06D2Ca875539C\"\n+ \"0xaa6d0F2490AC3957B97e11afEC6F0f250593CaC8\"\n values.verifier:\n- \"0xA2Ab526e5C5491F10FC05A55F064BF9F7CEf32a0\"\n+ \"0x1Ea29d57dAC237152d878758bAe4BeB2668998f6\"\n }\n```\n\n```diff\n- Status: DELETED\n contract MultipleVersionRollupVerifier (0xA2Ab526e5C5491F10FC05A55F064BF9F7CEf32a0)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract MultipleVersionRollupVerifier (0x1Ea29d57dAC237152d878758bAe4BeB2668998f6)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifierV1 (0x2293cd12e8564e8219d314b075867c2f66ac6941)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV1 (0x4b289E4A5331bAFBc6cCb2F10C39B8EDceCDb247)\n +++ description: None\n```"
}
]
},
{
"id": "54877ab0",
"date": "Fri, 23 Feb 2024 12:04:50 GMT",
"timestamp": 1708689890,
"description": "### L1CustomERC20Gateway\n\nUse of errors instead of reverts. Some variables are now immutable (counterpart, router, messenger).\n\n### L1ERC1155Gateway\n\nAgain, use of errors instead of reverts. Some variables are now immutable (counterpart, router, messenger).\n\n### L1ERC721Gateway\n\nSame changes.\n\n### L1ETHGateway\n\nSame changes.\n\n### L1MessageQueue\n\nThe enforced tx gateway is now immutable and set. An L2 gas price oracle is implemented and a permissioned actor can relay the L2 base fee.\n\n### L1ScrollMessenger\n\nSame changes as first ones.\n\n### L1StandardERC20Gateway\n\nSame changes.\n\n### L1USDCGateway\n\nSame changes.\n\n### L1WETHGateway\n\nSame changes.\n\n### ScrollChain\n\nSame changes. In addition, the verifier is now immutable.\n\n### EnforcedTxGateway\n\nCurrently paused, so no risk has changed.",
"isHighSeverity": true,
"changeCount": 24,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1MessageQueue (0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B) {\n upgradeability.implementation:\n- \"0xBC9D741501A20F962756C95BF906b4abffadcf8F\"\n+ \"0xeBaed7A81c298B24EE6d59c22698A951dc448E01\"\n implementations.0:\n- \"0xBC9D741501A20F962756C95BF906b4abffadcf8F\"\n+ \"0xeBaed7A81c298B24EE6d59c22698A951dc448E01\"\n values.enforcedTxGateway:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d\"\n values.l2BaseFee:\n+ 483000000\n values.whitelistChecker:\n+ \"0x259204DDd2bA29bD9b1B9A5c9B093f73d7EAcf37\"\n derivedName:\n- \"L1MessageQueue\"\n+ \"L1MessageQueueWithGasPriceOracle\"\n }\n```\n\n```diff\n contract L1ERC721Gateway (0x6260aF48e8948617b8FA17F4e5CEa2d21D21554B) {\n upgradeability.implementation:\n- \"0xDE3be7C2AA151D1E152DDfcBf0962FcDf5323DAe\"\n+ \"0xd1841c5756428812233eEA78afC17cb2D3e392bb\"\n implementations.0:\n- \"0xDE3be7C2AA151D1E152DDfcBf0962FcDf5323DAe\"\n+ \"0xd1841c5756428812233eEA78afC17cb2D3e392bb\"\n }\n```\n\n```diff\n contract L1ScrollMessenger (0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367) {\n upgradeability.implementation:\n- \"0xAf2F898a8680cb52766ABE0588ebe6b9bFe37845\"\n+ \"0x72981fD00087fF4F60aBFdE9f353cB1912A37fb6\"\n implementations.0:\n- \"0xAf2F898a8680cb52766ABE0588ebe6b9bFe37845\"\n+ \"0x72981fD00087fF4F60aBFdE9f353cB1912A37fb6\"\n }\n```\n\n```diff\n contract L1WETHGateway (0x7AC440cAe8EB6328de4fA621163a792c1EA9D4fE) {\n upgradeability.implementation:\n- \"0xd3c42158682D55E082EaBe08a29F7515A97cA307\"\n+ \"0xa4F400593DFfc0ae02F940ab58f6e3Cc6fb9FB49\"\n implementations.0:\n- \"0xd3c42158682D55E082EaBe08a29F7515A97cA307\"\n+ \"0xa4F400593DFfc0ae02F940ab58f6e3Cc6fb9FB49\"\n }\n```\n\n```diff\n contract L1ETHGateway (0x7F2b8C31F88B6006c382775eea88297Ec1e3E905) {\n upgradeability.implementation:\n- \"0x1fcbE079c4Bbab37406daB7Dfd35AcAe37D5C55d\"\n+ \"0x546E0bF31FB6e7babD493452e4e6999191367B42\"\n implementations.0:\n- \"0x1fcbE079c4Bbab37406daB7Dfd35AcAe37D5C55d\"\n+ \"0x546E0bF31FB6e7babD493452e4e6999191367B42\"\n }\n```\n\n```diff\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n upgradeability.implementation:\n- \"0x2E07f0FBA71709bb5e1f045b02152E45B451D75f\"\n+ \"0xFA148514d03420b7b1a13eC74da06D2Ca875539C\"\n implementations.0:\n- \"0x2E07f0FBA71709bb5e1f045b02152E45B451D75f\"\n+ \"0xFA148514d03420b7b1a13eC74da06D2Ca875539C\"\n }\n```\n\n```diff\n contract L1CustomERC20Gateway (0xb2b10a289A229415a124EFDeF310C10cb004B6ff) {\n upgradeability.implementation:\n- \"0xBAd002fB13adFfcbCba57a4d4a43886f3F4C56cb\"\n+ \"0x7F512E2E9dfC4552941D99A5b2405BBcF5781C2c\"\n implementations.0:\n- \"0xBAd002fB13adFfcbCba57a4d4a43886f3F4C56cb\"\n+ \"0x7F512E2E9dfC4552941D99A5b2405BBcF5781C2c\"\n }\n```\n\n```diff\n contract L1ERC1155Gateway (0xb94f7F6ABcb811c5Ac709dE14E37590fcCd975B6) {\n upgradeability.implementation:\n- \"0xCb4638620E4C6DeCef26374e71b0dd4871863593\"\n+ \"0x244BF7aEf29F03916569470a51fA0794B62F8cd7\"\n implementations.0:\n- \"0xCb4638620E4C6DeCef26374e71b0dd4871863593\"\n+ \"0x244BF7aEf29F03916569470a51fA0794B62F8cd7\"\n }\n```\n\n```diff\n contract L1StandardERC20Gateway (0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9) {\n upgradeability.implementation:\n- \"0x9218732389D80f9b8723C3f32a38865B7a63564A\"\n+ \"0x4015Fc868C06689ABEba4a9dC8FA43B804F6239c\"\n implementations.0:\n- \"0x9218732389D80f9b8723C3f32a38865B7a63564A\"\n+ \"0x4015Fc868C06689ABEba4a9dC8FA43B804F6239c\"\n }\n```\n\n```diff\n contract L1USDCGateway (0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B) {\n upgradeability.implementation:\n- \"0x6667123b5017AAB9945F73345848B82D7A953AA8\"\n+ \"0x56ce8A8E8399f6cD5e7e4f549E8BfD673f2AfF5e\"\n implementations.0:\n- \"0x6667123b5017AAB9945F73345848B82D7A953AA8\"\n+ \"0x56ce8A8E8399f6cD5e7e4f549E8BfD673f2AfF5e\"\n }\n```"
}
]
},
{
"id": "bd349b35",
"date": "Thu, 21 Dec 2023 07:52:36 GMT",
"timestamp": 1703145156,
"description": "One owner is removed from ExecutorMultisig and another is added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ExecutorMultisig (0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f) {\n values.getOwners.4:\n- \"0xd3FfEE6e6312e4303A88BD2fFaFdcA8B09310236\"\n+ \"0xdA66Df3920091eF4B54782B9463587c314DAdD41\"\n }\n```"
}
]
},
{
"id": "39217bfa",
"date": "Mon, 18 Dec 2023 11:58:46 GMT",
"timestamp": 1702900726,
"description": "One owner is removed from EmergencyMultisig and another is added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract EmergencyMultisig (0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc) {\n values.getOwners.4:\n- \"0xd3FfEE6e6312e4303A88BD2fFaFdcA8B09310236\"\n+ \"0xdA66Df3920091eF4B54782B9463587c314DAdD41\"\n }\n```"
}
]
},
{
"id": "a535c9ec",
"date": "Wed, 08 Nov 2023 15:41:27 GMT",
"timestamp": 1699458087,
"description": "One ExecutorMultisig owner has changed.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ExecutorMultisig (0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f) {\n values.getOwners.2:\n- \"0xEbbeeAA424AE904508465a41c927Be594C43Dc68\"\n+ \"0x0c5cc5155b346453154059aD9d2Ff695dB92f774\"\n }\n```"
}
]
},
{
"id": "c99e4e10",
"date": "Tue, 07 Nov 2023 07:33:37 GMT",
"timestamp": 1699342417,
"description": "New owner added to FeeVaultMultisig.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract FeeVaultMultisig (0x8FA3b4570B4C96f8036C13b64971BA65867eEB48) {\n values.getOwners[3]:\n+ \"0xfc31892C5500AbE00974280b28907BaA9190E384\"\n values.getOwners.2:\n- \"0xfc31892C5500AbE00974280b28907BaA9190E384\"\n+ \"0x9337B41709c1C2B938Cb460ea3fA9DB586B172E0\"\n values.getOwners.1:\n- \"0x9337B41709c1C2B938Cb460ea3fA9DB586B172E0\"\n+ \"0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402\"\n values.getOwners.0:\n- \"0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402\"\n+ \"0x0c5cc5155b346453154059aD9d2Ff695dB92f774\"\n }\n```"
}
]
},
{
"id": "9da1c382",
"date": "Fri, 03 Nov 2023 07:55:41 GMT",
"timestamp": 1698998141,
"description": "Two ScrollMultisig owners are changed.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ScrollMultisig (0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n values.getOwners.4:\n- \"0x9FB9ff268B89Fb22aDe61fbE1B938F5C72D3CC59\"\n+ \"0x9337B41709c1C2B938Cb460ea3fA9DB586B172E0\"\n values.getOwners.0:\n- \"0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n+ \"0xFCf6364F5157901f533DD3615A5d8c375F13c072\"\n }\n```"
}
]
},
{
"id": "72aec5b0",
"date": "Tue, 31 Oct 2023 07:30:26 GMT",
"timestamp": 1698737426,
"description": "FeeVaultMultisig owner change.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract FeeVaultMultisig (0x8FA3b4570B4C96f8036C13b64971BA65867eEB48) {\n values.getOwners.1:\n- \"0x9FB9ff268B89Fb22aDe61fbE1B938F5C72D3CC59\"\n+ \"0x9337B41709c1C2B938Cb460ea3fA9DB586B172E0\"\n }\n```"
}
]
},
{
"id": "3e857a39",
"date": "Mon, 30 Oct 2023 09:59:06 GMT",
"timestamp": 1698659946,
"description": "Change of owners of Emergency MultiSig and Scroll MultiSig.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract EmergencyMultisig (0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc) {\n values.getOwners.2:\n- \"0xEbbeeAA424AE904508465a41c927Be594C43Dc68\"\n+ \"0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402\"\n values.getOwners.1:\n- \"0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402\"\n+ \"0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n values.getOwners.0:\n- \"0xEe9bb388d320F4305af6a4a1a70c862D3F4d0D5B\"\n+ \"0x0c5cc5155b346453154059aD9d2Ff695dB92f774\"\n }\n```\n\n```diff\n contract ScrollMultisig (0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n values.getOwners.1:\n- \"0xFcf1f182FC79047d99e5db0d7113c0EfE2EC9402\"\n+ \"0xE2e6345baAD18f779167443Dc4886495507b3249\"\n }\n```"
}
]
},
{
"id": "80e5496f",
"date": "Thu, 19 Oct 2023 08:22:39 GMT",
"timestamp": 1697703759,
"description": "Added Scroll. Their AccessControl extension needed a custom handler since it also specifies which function a role can call. Fallback contracts are not being displayed on the website because they're just used to recover funds in case of a mistake.",
"isHighSeverity": false,
"changeCount": 35,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n+ Status: CREATED\n contract L1MessageQueue (0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract TimelockFast (0x0e58939204eEDa84F796FBc86840A50af10eC4F4) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract TimelockSlow (0x1A658B88fD0a3c82fa1a0609fCDbD32e7dd4aB9C) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ExecutorMultisig (0x1FF1fc1BB4d1f081f6E0a7E7E3240F3ECC5B236f) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Whitelist (0x259204DDd2bA29bD9b1B9A5c9B093f73d7EAcf37) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract PlonkVerifier (0x4B8Aa8A96078689384DAb49691E9bA51F9d2F9E1) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV1 (0x585DfaD7bF4099E011D185E266907A8ab60DAD2D) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2ERC1155GatewayFallback (0x62597Cc19703aF10B58feF87B0d5D29eFE263bcc) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1ERC721Gateway (0x6260aF48e8948617b8FA17F4e5CEa2d21D21554B) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2CustomERC20GatewayFallback (0x64CCBE37c9A82D85A1F2E74649b7A42923067988) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2TokenFactoryFallback (0x66e5312EDeEAef6e80759A0F789e7914Fb401484) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1ScrollMessenger (0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2ETHGatewayFallback (0x6EA73e05AdC79974B931123675ea8F78FfdacDF0) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2WETHGatewayFallback (0x7003E7B7186f0E6601203b99F7B8DECBfA391cf9) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract EnforcedTxGateway (0x72CAcBcfDe2d1e19122F8A36a4d6676cd39d7A5d) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2ScrollMessengerFallback (0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1WETHGateway (0x7AC440cAe8EB6328de4fA621163a792c1EA9D4fE) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2ERC721GatewayFallback (0x7bC08E1c04fb41d75F1410363F0c5746Eae80582) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1ETHGateway (0x7F2b8C31F88B6006c382775eea88297Ec1e3E905) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract FeeVaultMultisig (0x8FA3b4570B4C96f8036C13b64971BA65867eEB48) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2GasPriceOracle (0x987e300fDfb06093859358522a79098848C33852) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract MultipleVersionRollupVerifier (0xA2Ab526e5C5491F10FC05A55F064BF9F7CEf32a0) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1CustomERC20Gateway (0xb2b10a289A229415a124EFDeF310C10cb004B6ff) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1ERC1155Gateway (0xb94f7F6ABcb811c5Ac709dE14E37590fcCd975B6) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract EmergencyMultisig (0xbdA143d49da40C2cDA27c40edfBbe8A0D4AE0cBc) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2TokenImplementationFallback (0xC7d86908ccf644Db7C69437D5852CedBC1aD3f69) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1StandardERC20Gateway (0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract TimelockMid (0xDC1d1189Da69Ae2016E4976A43De20972D349B1b) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2StandardERC20GatewayFallback (0xE2b4795039517653c5Ae8C2A9BFdd783b48f447A) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xEB803eb3F501998126bf37bB823646Ed3D59d072) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ScrollMultisig (0xEfc9D1096fb65c832207E5e7F13C2D1102244dbe) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCGateway (0xf1AF3b23DE0A5Ca3CAb7261cb0061C0D779A5c7B) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1GatewayRouter (0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6) {\n }\n```"
}
]
},
{
"id": "6c75468f",
"date": "Thu, 12 Oct 2023 12:22:29 GMT",
"timestamp": 1697113349,
"description": "Update discovery to include the multisig threshold.",
"isHighSeverity": false,
"changeCount": 19,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n+ Status: CREATED\n contract L1MessageQueue (0x0d7E906BD9cAFa154b048cFa766Cc1E54E39AF9B) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Whitelist (0x259204DDd2bA29bD9b1B9A5c9B093f73d7EAcf37) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract (0x4B8Aa8A96078689384DAb49691E9bA51F9d2F9E1) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ZkEvmVerifierV1 (0x585DfaD7bF4099E011D185E266907A8ab60DAD2D) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Fallback (0x66e5312EDeEAef6e80759A0F789e7914Fb401484) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1ScrollMessenger (0x6774Bcbd5ceCeF1336b5300fb5186a12DDD8b367) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Fallback (0x6EA73e05AdC79974B931123675ea8F78FfdacDF0) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Fallback (0x781e90f1c8Fc4611c9b7497C3B47F99Ef6969CbC) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ScrollOwner (0x798576400F7D662961BA15C6b3F3d813447a26a6) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1ETHGateway (0x7F2b8C31F88B6006c382775eea88297Ec1e3E905) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafe (0x8FA3b4570B4C96f8036C13b64971BA65867eEB48) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L2GasPriceOracle (0x987e300fDfb06093859358522a79098848C33852) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ScrollChain (0xa13BAF47339d63B743e7Da8741db5456DAc1E556) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract MultipleVersionRollupVerifier (0xA2Ab526e5C5491F10FC05A55F064BF9F7CEf32a0) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Fallback (0xC7d86908ccf644Db7C69437D5852CedBC1aD3f69) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1StandardERC20Gateway (0xD8A791fE2bE73eb6E6cF1eb0cb3F36adC9B3F8f9) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Fallback (0xE2b4795039517653c5Ae8C2A9BFdd783b48f447A) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xEB803eb3F501998126bf37bB823646Ed3D59d072) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1GatewayRouter (0xF8B1378579659D8F7EE5f3C929c2f3E332E41Fd6) {\n }\n```"
}
]
}
]
+2 -2
+1 -1
{
"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": "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": "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",
"type": "EOA",
"isVerified": true,
"name": "0x4983…cE4d",
"url": "https://etherscan.io/address/0x4983A5ebE79c0570aa368cE84f281A8aAc50cE4d"
}
],
"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]",
"accounts": [
{
"address": "eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1",
"type": "Contract",
"isVerified": true,
"name": "0xe464…52d1",
"url": "https://etherscan.io/address/0xe4644b6d106A18062344c0A853666bc0B8f052d1"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x891F19CdefBce82e2F39f34C2322526c01E7A845",
"type": "EOA",
"isVerified": false,
"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-6",
"name": "EOA 5 and EOA 6",
"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 6"
}
],
"chain": "ethereum",
"description": "* Can interact with SophonTransactionFilterer\n * call requestL2Transaction() with any target/calldata (whitelisted superuser sender) ",
"discoveryDrivenData": true
},
{
"id": "EOA-7",
"name": "EOA 7",
"accounts": [
{
"address": "eth:0x7EBe0bf025ca5993551cE6CEe3f541B24FDF7c35",
"type": "EOA",
"isVerified": true,
"name": "0x7EBe…7c35",
"url": "https://etherscan.io/address/0x7EBe0bf025ca5993551cE6CEe3f541B24FDF7c35",
"displayName": "EOA 7"
}
],
"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": 1790944832,
"baseTimestamp": 1791458527,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+49 -20
+1 -1
{
"dataAvailability": [
{
"name": "All data required to reconstruct rollup state is published on chain",
"description": "State diffs are publish onchain as blob or calldata on every state update. The state diffs contain information on every contact whose storage was updated, and additional information on contract deployments. From diffs full system state can be recovered. Contracts' code is not published on L1, but can be trustlessly verified if available elsewhere.",
"risks": [],
"references": [
{
"title": "On-Chain Data - Starknet documentation",
"url": "https://docs.starknet.io/architecture/data-availability/"
}
]
}
],
"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. Note that the message request can be censored by the Sequencer.",
"risks": [
{
"category": "Funds can be frozen if",
"text": "the operator censors withdrawal transaction."
}
],
"references": [
{
"title": "Withdrawing is based on l2 to l1 messages - Starknet documentation",
"url": "https://book.cairo-lang.org/ch16-04-L1-L2-messaging.html#sending-messages-from-starknet-to-ethereum"
}
]
},
{
"name": "Emergency exit",
"risks": [],
"description": "There is no generic escape hatch mechanism as Starknet cannot be forced by users into a frozen state. Note that a freezing mechanism on L2, to be secure, requires anti-censorship protection.",
"references": []
}
],
"forceTransactions": {
"name": "Users can't force any transaction",
"description": "There is no general mechanism to force the sequencer to include the transaction.",
"risks": [
{
"category": "Users can be censored if",
"text": "the operator refuses to include their transactions."
}
],
"references": [
{
"title": "Censorship resistance of Starknet - Forum Discussion",
"url": "https://community.starknet.io/t/censorship-resistance/196"
}
]
},
"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. Typically, the Operator is the hot wallet of the Starknet service submitting state updates for which proofs have been already submitted and verified.",
"risks": [
{
"category": "MEV can be extracted if",
"text": "the operator exploits their centralized position and frontruns user transactions."
}
],
"references": []
},
"sequencing": {
"name": "Transactions are ordered by centralized sequencers",
"description": "Starknet v0.14.3 uses 5 equal-weight, permissioned consensus sequencers controlled by StarkWare. A proposer is selected in deterministic round-robin order and builds from its own peer-to-peer synchronized mempool. The current deployment uses an honest-majority Tendermint configuration, requiring 3/5 votes to decide a block. This provides process-level redundancy, but no independence from StarkWare for ordering or preconfirmations.\n\nState advancement on Ethereum is a separate, also permissioned pipeline. Starknet OS execution tasks are proved and recursively aggregated through StarkWare's SHARP service, using Stwo for proving tasks and Stone for the roots of the recursive tree. After the resulting proof fact is registered on Ethereum, only the 2 Starknet Operators can update the canonical state: the service Operator and the Security Council minority.\n\nThere is no user-callable forced-inclusion function. A censored user can post an L1-to-L2 message and ask the Security Council minority to bypass consensus by including it in a valid, proven state update, but the contact and response process has no protocol deadline.",
"sequencingSpec": {
"type": "centralized",
"trustedPreconfirmation": {
"value": "500 ms",
"secondLine": "1.5s L2 block time",
"description": "The current proposer targets a PRE_CONFIRMED receipt in about 500 ms. It is a trusted promise before consensus decides the block, with no onchain enforcement or slashing, and can be reverted if the proposal does not become the consensus block. The 1.5-second L2 block time is a target: a block can close earlier when it reaches a resource limit or later while transactions are still executing or consensus takes longer.",
"orderHint": 0.5
},
"trustedOrdering": {
"value": "Priority gas auction",
"secondLine": "Higher explicit tips first",
"description": "The active proposer selects eligible transactions from its peer-to-peer synchronized mempool in descending tip order, with the transaction hash breaking equal-tip ties. Transactions whose gas-price bound is below the current threshold remain pending. This offchain policy is not enforced by Ethereum."
},
"sequencer": {
"value": "Centralized",
"secondLine": "5-node Tendermint",
"sentiment": "bad",
"description": "StarkWare controls 5 equal-weight, permissioned proposers selected in deterministic round-robin order. The deployment assumes no malicious validators and requires more than half of the voting weight (3/5). The replicas can tolerate process outages, but do not create independent operators or censorship resistance.",
"orderHint": 1
},
"realtimeCensorshipResistance": {
"value": "No",
"sentiment": "bad",
"description": "The permissioned sequencer committee is controlled by one operator, StarkWare, which can censor transactions submitted through the normal L2 path."
},
"forcedInclusion": {
"value": "Discretionary fallback",
"secondLine": "Security Council minority",
"sentiment": "bad",
"description": "There is no user-callable forced-inclusion function. A user can log an L1-to-L2 message with one Ethereum transaction and contact the Security Council minority. The council can then bypass sequencer consensus by participating in a valid, proven state update, but whether and when it does so is discretionary."
},
"inclusionDelay": {
"value": "Unbounded",
"secondLine": "No protocol deadline",
"sentiment": "bad",
"description": "The contracts impose no deadline for the Security Council minority to respond, for SHARP to prove the state transition, or for an Operator to post the state update.",
"orderHint": 9007199254740991
},
"inclusionMechanics": {
"value": "L1 log of intent",
"secondLine": "Permissioned inclusion",
"sentiment": "warning",
"description": "Logging a message creates an L1-originated L1-handler transaction rather than submitting the original signed L2 transaction. It does not automatically enter the canonical L2 order and has no other effect than recording the intent. The Security Council path must produce Starknet OS execution, data availability and an accepted SHARP proof before posting the state update. An unconsumed message can be cancelled through a two-call L1 process after a 5 days 1 minute 40 seconds delay."
},
"exitDelay": {
"value": "Unbounded",
"secondLine": "Council response + proving",
"sentiment": "bad",
"description": "Under operator failure, a user cannot independently advance the state needed for an exit. There is no deadline for the Security Council minority to act or for SHARP to produce the required proof. Once an accepted fact and valid state update reach Ethereum, there is no additional state-finalization delay.",
"orderHint": 9007199254740991
},
"exitEconomics": {
"value": "No self-service",
"secondLine": "STARK proof + council action",
"sentiment": "bad",
"description": "A user cannot self-propose state. Progress requires the recursive STARK proving pipeline and cooperation from a whitelisted Operator or the Security Council minority."
}
},
"censorshipResistance": "The permissioned sequencer committee provides no real-time censorship resistance. The Security Council minority can conditionally bypass consensus with a valid, proven state update, but because users cannot invoke this path and it has no deadline, Starknet provides no deterministic eventual censorship-resistance guarantee.",
"references": [
{
"title": "Starknet documentation - Transaction lifecycle",
"url": "https://docs.starknet.io/learn/protocol/transactions"
},
{
"title": "Starknet documentation - SHARP architecture",
"url": "https://docs.starknet.io/learn/protocol/sharp"
},
{
"title": "Starknet documentation - Current consensus centralization",
"url": "https://docs.starknet.io/learn/protocol/staking"
},
{
"title": "Starknet v0.14 - Tendermint and preconfirmations",
"url": "https://community.starknet.io/t/snip-30-v0-14-0/115756"
},
{
"title": "Starknet v0.14.3 - More frequent blocks",
"url": "https://community.starknet.io/t/snip-40-more-frequent-blocks/116203"
},
{
"title": "Apollo - Mainnet consensus committee configuration",
"url": "https://github.com/starkware-libs/sequencer/blob/5114457ad4b5d6d1764b520dfa40b9e826f48854/deployments/sequencer/configs/overlays/hybrid/mainnet/services/core.yaml#L13"
},
{
"title": "Apollo - Consensus runtime configuration",
"url": "https://github.com/starkware-libs/sequencer/blob/5114457ad4b5d6d1764b520dfa40b9e826f48854/crates/apollo_deployments/resources/app_configs/consensus_manager_config.json#L1-L3"
},
{
"title": "Apollo - L2 block-time target",
"url": "https://github.com/starkware-libs/sequencer/blob/5114457ad4b5d6d1764b520dfa40b9e826f48854/crates/apollo_batcher_config/src/config.rs#L318-L344"
},
{
"title": "Apollo - Deterministic proposer rotation",
"url": "https://github.com/starkware-libs/sequencer/blob/5114457ad4b5d6d1764b520dfa40b9e826f48854/crates/apollo_staking/src/staking_manager.rs#L475-L517"
},
{
"title": "Apollo - Mempool fee ordering",
"url": "https://github.com/starkware-libs/sequencer/blob/5114457ad4b5d6d1764b520dfa40b9e826f48854/crates/apollo_mempool/src/fee_transaction_queue.rs#L231-L250"
},
{
"title": "Starknet documentation - L1-L2 messaging",
"url": "https://docs.starknet.io/learn/protocol/messaging"
},
{
"title": "Starknet - Decentralization roadmap",
"url": "https://www.starknet.io/blog/decentralized-starknet-2025/"
},
{
"title": "Starknet core contract - source code",
"url": "https://etherscan.io/address/0xc662c410c0ecf747543f5ba90660f6abebd9c8c4#code"
}
],
"risks": []
},
"stateDerivation": {
"nodeSoftware": "The [Juno](https://github.com/NethermindEth/juno) node software can be used to reconstruct the L2 state entirely from L1. The feature has not been released yet, but can be found in this [PR](https://github.com/NethermindEth/juno/pull/1335).",
"compressionScheme": "Starknet uses [stateful compression since v0.13.4](https://docs.starknet.io/architecture/data-availability/#v0_13_4).",
"genesisState": "There is no non-empty genesis state.",
"dataFormat": "The data format has been updated with different versions, and the full specification can be found [here](https://docs.starknet.io/architecture/data-availability/)."
},
"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": "Proven Program",
"description": "The current Starknet OS and aggregator sources are published in the [Starknet sequencer repository](https://github.com/starkware-libs/sequencer/tree/APOLLO-0.14.3-RC.11/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core), and the bootloader sources are published in [cairo-lang](https://github.com/starkware-libs/cairo-lang/tree/1c5dace6fbd1dc9d1ae2eb878dc1dd85f23512ab/src/starkware/cairo/bootloaders). The exact 1,166-felt outer bootloader stored onchain has been reproduced from [this source revision](https://github.com/starkware-libs/cairo-lang/tree/56407b69f3f19f69302a8623baa8c5f71f967eed/src/starkware/cairo/bootloaders/bootloader). However, SHARP also commits to an ordered allowlist of recursive Cairo verifier programs whose active preimages and source-to-hash mappings have not been published, so the complete proven program is not independently reproducible.",
"description": "The current Starknet OS and aggregator sources are published in the [Starknet sequencer repository](https://github.com/starkware-libs/sequencer/tree/APOLLO-0.14.4-RC.8/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core), and the bootloader sources are published in [cairo-lang](https://github.com/starkware-libs/cairo-lang/tree/1c5dace6fbd1dc9d1ae2eb878dc1dd85f23512ab/src/starkware/cairo/bootloaders). The exact 1,166-felt outer bootloader stored onchain has been reproduced from [this source revision](https://github.com/starkware-libs/cairo-lang/tree/56407b69f3f19f69302a8623baa8c5f71f967eed/src/starkware/cairo/bootloaders/bootloader). However, SHARP also commits to an ordered allowlist of recursive Cairo verifier programs whose active preimages and source-to-hash mappings have not been published, so the complete proven program is not independently reproducible.",
"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": "What is Starknet",
"url": "https://starkware.co/starknet/"
}
]
}
]
},
"upgradesAndGovernance": {
"content": "The Starknet zk Rollup shares its SHARP verifier with other StarkEx and SN Stack Layer 2s. Governance of the main Starknet rollup contract and its core bridge escrows (ETHBridge, STRKBridge) is currently split between two distinct signer groups: the 2/6 Starkware Multisig 1, which forms the normal upgrade path by routing all actions through the DelayedExecutor timelock with a 8d onchain delay, and the 9/12 Security Council, which can upgrade instantly and is intended for emergencies only. The delay window on the normal path gives the community time to observe queued actions and allows the Security Council to counteract a malicious action with its instant rights. The 2/4 Starkware Multisig 2 governs most other bridge escrows with instant upgradeability. The shared SHARP verifier used for state validation can be changed by the 2/4 SHARP Multisig with and a 8d delay, affecting all rollups like Starknet that are sharing it. \n\nThe Operator role in the Starknet contract is permissioned to update the state of the Starknet rollup by supplying valid (zk) state transition proofs. Since this role is not permissionless, Starknet implements a StarknetSCMinorityMultisig with the Operator role, which allows a 3/12 minority of the StarknetSecurityCouncil to enforce censorship resistance by including transactions that are not included by regular Operators.\n\nAll bridge escrows allow enabling a withdrawal throttle of 5% of the locked funds per 24h period. Enabling it is permissioned to a Multisig while disabling it in the core bridge escrows (STRKBridge, ETHBridge) can be done by a 3/12 minority of the Security Council.",
"governanceInfo": {
"securityCouncil": {
"Composition": "**9/12** onchain Safe multisig — 12 members, geographically and organizationally diverse (<50% from one country, <4 from one organization). The Starknet Foundation appoints and can administratively remove members. No fixed term length and no live tokenholder election mechanism.",
"Members public": "**Not mapped**, SNIP-25 and Foundation announcements publish only composition criteria (technical reputation, KYC/AML, diversity limits, conflict-of-interest rules).",
"Charter": "[SNIP-25](https://github.com/starknet-io/SNIPs/blob/main/SNIPS/snip-25.md) defines duties (security-only mandate), vetting-failure reports, eligibility and the code of conduct.",
"Can bypass DAO?": "**Yes** — 9/12 can approve and execute an emergency upgrade immediately. The same instant rights let it counteract a malicious action queued in the DelayedExecutor during its 8d window.",
"DAO can override SC?": "**No**, the community can only dispute the emergency upgrades after the fact in advisory way."
},
"upgrades": {
"Major upgrade path": "Release announcement (≥1 SNIP + specific GitHub commit) → 2-week community deliberation → 1-week final review → 1-week STRK vote on the [Governance Hub on L2](https://governance.starknet.io/) → Security Council vetting → deployment queued in the DelayedExecutor by the 2/6 Starkware Multisig 1, whose 8d onchain delay covers the procedural ≥7-day freeze → execution. Minimum wall-clock ≈ **5 weeks** (8d onchain-enforced if executed via DelayedExecutor).",
"Minor upgrade path": "Announcement (SNIP may be submitted in parallel) → 1-week review → 1-week STRK vote on L2 → deployment queued in the DelayedExecutor, whose 8d onchain delay covers the procedural ≥5-day freeze → execution. No Security Council approval required. Minimum wall-clock ≈ **22 days** (8d onchain-enforced if executed via DelayedExecutor).",
"Emergency upgrade path": "**9/12 Security Council, instant**.",
"Exit window": "**8d** enforced onchain by the DelayedExecutor on the normal upgrade path (procedurally ≥7 days after the vote for major releases, ≥5 days for minor). **0** for emergency upgrades by the Security Council."
},
"tokenGovernance": {
"Governance token": "`STRK` — ~10.15B total supply, not permanently capped. Users can vote with L1 STRK, natively staked STRK or L2 vSTRK tokens, each gives 1 vote. In 2025 the Starknet Foundation [delegated ~1.7B STRK](https://www.starknet.io/blog/starknet-foundation-delegation-program/) to ~180 ecosystem delegates.",
"Voting venue": "[Starknet Governance Hub](https://governance.starknet.io/) using Snapshot X — proposals, space configuration and results are recorded and verified on Starknet, with relayed gasless signed votes.",
"Proposal threshold": "**None**, but proposal admission is curated, not triggered permissionlessly by an onchain token threshold.",
"Quorum": "**No protocol-wide quorum rule published.** Historical votes used a simple majority with no minimum quorum.",
"Execution model": "**Vote as onchain record, permissioned deployment** — passed proposals are queued in the DelayedExecutor by the 2/6 Starkware Multisig 1 and execute after 8d."
}
}
}
}
+6 -6
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "Starkware Multisig 2",
"name": "Starkware Multisig 2",
"description": "A Multisig with 2/4 threshold. \n* Can upgrade **with no delay**\n * StarkgateManager \n * StarkgateRegistry \n * WBTCBridge \n * FXSBridge \n * sfrxETHBridge \n * FRAXBridge \n * MultiBridge \n * UNIBridge \n* Can upgrade **with 3d delay**\n * USDTBridge [via: - acting directly with 3d delay]\n * wstETHBridge [via: - acting directly with 3d delay]\n * rETHBridge [via: - acting directly with 3d delay]\n * USDCBridge [via: - acting directly with 3d delay]\n* Can interact with StarkgateManager\n * enroll new tokens, deactivate existing ones (for deposits) or block tokens from being added to the Multibridge \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with StarkgateRegistry\n * manage critical access control roles and the role that can upgrade the implementation \n* Can interact with WBTCBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with FXSBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with USDTBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with wstETHBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with rETHBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with sfrxETHBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with FRAXBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with LUSDBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with MultiBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with USDCBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with UNIBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation ",
"accounts": [
{
"address": "eth:0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec",
"type": "Contract",
"isVerified": true,
"name": "0x0152…C6Ec",
"url": "https://etherscan.io/address/0x015277f49d5dD035A5F3Ce34aD5eBfDBaCA0C6Ec"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xd38831Bcb40bdEE0577Ee064112Fa77a38cAd3F8",
"type": "EOA",
"isVerified": true,
"name": "0xd388…d3F8",
"url": "https://etherscan.io/address/0xd38831Bcb40bdEE0577Ee064112Fa77a38cAd3F8"
},
{
"address": "eth:0x59232aC80E6d403b6381393e52f4665ECA328558",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-3"
},
{
"address": "eth:0xCe958D997F4a5824D4d503A128216322C6C223a0",
"type": "EOA",
"isVerified": true,
"name": "0xCe95…23a0",
"url": "https://etherscan.io/address/0xCe958D997F4a5824D4d503A128216322C6C223a0"
},
{
"address": "eth:0x64F4396bb0669C72858Cc50C779b48EB25F45770",
"type": "EOA",
"isVerified": true,
"name": "0x64F4…5770",
"url": "https://etherscan.io/address/0x64F4396bb0669C72858Cc50C779b48EB25F45770"
}
],
"discoveryDrivenData": true
},
{
"id": "Starkware Security Council",
"name": "Starkware Security Council",
"description": "A Multisig with 9/12 threshold. \n* Can upgrade **with no delay**\n * ETHBridge \n * Starknet \n * STRKBridge \n* Can interact with ETHBridge\n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation \n* Can interact with Starknet\n * Permissioned to manage the Operator role, finalize the application configuration, and change the OS program hash, aggregator program hash, OS-config hash, fee collector, or message cancellation delay \n* Can interact with STRKBridge\n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation ",
"accounts": [
{
"address": "eth:0x15e8c684FD095d4796A0c0CF678554F4c1C7C361",
"type": "Contract",
"isVerified": true,
"name": "0x15e8…C361",
"url": "https://etherscan.io/address/0x15e8c684FD095d4796A0c0CF678554F4c1C7C361"
}
],
"chain": "ethereum",
"references": [
{
"title": "Security Council - Starknet Docs",
"url": "https://docs.starknet.io/learn/protocol/security-council"
}
],
"participants": [
{
"address": "eth:0x0762bCc4D604Aa3B5122C7D6571Cf5368EF3F09c",
"type": "EOA",
"isVerified": true,
"name": "0x0762…F09c",
"url": "https://etherscan.io/address/0x0762bCc4D604Aa3B5122C7D6571Cf5368EF3F09c"
},
{
"address": "eth:0x5C7DcaECB4D8e49Ea2487c5Cc23C5131Ddb2252F",
"address": "eth:0x99E84d004E73CC41eFacd382ef6FD34208B0F122",
"type": "EOA",
"isVerified": true,
"name": "0x5C7D…252F",
"url": "https://etherscan.io/address/0x5C7DcaECB4D8e49Ea2487c5Cc23C5131Ddb2252F"
"name": "0x99E8…F122",
"url": "https://etherscan.io/address/0x99E84d004E73CC41eFacd382ef6FD34208B0F122"
},
{
"address": "eth:0x04D5b12b196a8CADEB2F476F22Ffb1334Ef9F94c",
"address": "eth:0xb731B63eC22904A17d1cf6fD771eb5BA87f35Fa3",
"type": "EOA",
"isVerified": true,
"name": "0x04D5…F94c",
"url": "https://etherscan.io/address/0x04D5b12b196a8CADEB2F476F22Ffb1334Ef9F94c"
"name": "0xb731…5Fa3",
"url": "https://etherscan.io/address/0xb731B63eC22904A17d1cf6fD771eb5BA87f35Fa3"
},
{
"address": "eth:0x49C6396070D3310f335AE19169Da6B80ea67B831",
"type": "EOA",
"isVerified": true,
"name": "0x49C6…B831",
"url": "https://etherscan.io/address/0x49C6396070D3310f335AE19169Da6B80ea67B831"
},
{
"address": "eth:0x16117672EBF77d5DE9a1Af91F8F79b26421b310F",
"type": "EOA",
"isVerified": true,
"name": "0x1611…310F",
"url": "https://etherscan.io/address/0x16117672EBF77d5DE9a1Af91F8F79b26421b310F"
},
{
"address": "eth:0xF6AB8BD99EfE2515C45d6FeE8Ea32738877EFbD8",
"type": "EOA",
"isVerified": true,
"name": "0xF6AB…FbD8",
"url": "https://etherscan.io/address/0xF6AB8BD99EfE2515C45d6FeE8Ea32738877EFbD8"
},
{
"address": "eth:0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD",
"type": "EOA",
"isVerified": true,
"name": "0x16aB…57CD",
"url": "https://etherscan.io/address/0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD"
},
{
"address": "eth:0x10277B1922e56d1B69f4dCe5A35696C791F78cac",
"type": "EOA",
"isVerified": true,
"name": "0x1027…8cac",
"url": "https://etherscan.io/address/0x10277B1922e56d1B69f4dCe5A35696C791F78cac"
},
{
"address": "eth:0x7383DDEd70cCCFd99835612C4148fA986e9DE560",
"type": "EOA",
"isVerified": true,
"name": "0x7383…E560",
"url": "https://etherscan.io/address/0x7383DDEd70cCCFd99835612C4148fA986e9DE560"
},
{
"address": "eth:0x590Cb94bE977a769d9E7D95D9eff8DeAe82e430C",
"type": "EOA",
"isVerified": true,
"name": "0x590C…430C",
"url": "https://etherscan.io/address/0x590Cb94bE977a769d9E7D95D9eff8DeAe82e430C"
},
{
"address": "eth:0x7A3a1bE19470919318aAD57ba162891a97e2982E",
"type": "EOA",
"isVerified": true,
"name": "0x7A3a…982E",
"url": "https://etherscan.io/address/0x7A3a1bE19470919318aAD57ba162891a97e2982E"
},
{
"address": "eth:0xFf713991196F8a9D6838bA82C9Bb3579F8Cc0D90",
"type": "EOA",
"isVerified": true,
"name": "0xFf71…0D90",
"url": "https://etherscan.io/address/0xFf713991196F8a9D6838bA82C9Bb3579F8Cc0D90"
}
],
"discoveryDrivenData": true
},
{
"id": "SHARP Multisig",
"name": "SHARP Multisig",
"description": "A Multisig with 2/4 threshold. \n* Can upgrade **with 8d delay**\n * SHARPVerifierCallProxy [via: - acting directly with 8d delay]\n* Can interact with SHARPVerifierCallProxy\n * Administer the CallProxy's `GOVERNANCE_ADMIN` and role-admin hierarchy. This AccessControl role is separate from the outer proxy governor that schedules implementation upgrades \n * Grant and revoke application roles, including the `APP_GOVERNOR` role that controls caller-specific fallback routes \n * Route fallback calls from specific callers to a still-active registry in the default verifier's reference chain. This principally determines which verifier and bootloader configuration processes their proof submissions; the proxy's explicit `isValid` entry point always queries the default target ",
"accounts": [
{
"address": "eth:0x21F9eC47b19d95b5C2DDFB6Ae5D4F92fAdacAEc4",
"type": "Contract",
"isVerified": true,
"name": "0x21F9…AEc4",
"url": "https://etherscan.io/address/0x21F9eC47b19d95b5C2DDFB6Ae5D4F92fAdacAEc4"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x0405107a60391Eb51821be373ff978115Ee58488",
"type": "EOA",
"isVerified": true,
"name": "0x0405…8488",
"url": "https://etherscan.io/address/0x0405107a60391Eb51821be373ff978115Ee58488"
},
{
"address": "eth:0x59232aC80E6d403b6381393e52f4665ECA328558",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-3"
},
{
"address": "eth:0xebc8416179fE90854fe8B3f774801165572cfD7F",
"type": "EOA",
"isVerified": true,
"name": "0xebc8…fD7F",
"url": "https://etherscan.io/address/0xebc8416179fE90854fe8B3f774801165572cfD7F"
},
{
"address": "eth:0x955B978F3ee7818dA71fA25c676062E6BC462Fec",
"type": "EOA",
"isVerified": true,
"name": "0x955B…2Fec",
"url": "https://etherscan.io/address/0x955B978F3ee7818dA71fA25c676062E6BC462Fec"
}
],
"discoveryDrivenData": true
},
{
"id": "Starkware Multisig 1",
"name": "Starkware Multisig 1",
"description": "A Multisig with 2/6 threshold. \n* Can upgrade **with 8d delay**\n * ETHBridge [via: DelayedExecutor with 8d delay]\n * Starknet [via: DelayedExecutor with 8d delay]\n * STRKBridge [via: DelayedExecutor with 8d delay]\n* Can interact with Starknet\n * Permissioned to manage the Operator role, finalize the application configuration, and change the OS program hash, aggregator program hash, OS-config hash, fee collector, or message cancellation delay **with 8d delay** [via: DelayedExecutor with 8d delay]",
"accounts": [
{
"address": "eth:0x83C0A700114101D1283D1405E2c8f21D3F03e988",
"type": "Contract",
"isVerified": true,
"name": "0x83C0…e988",
"url": "https://etherscan.io/address/0x83C0A700114101D1283D1405E2c8f21D3F03e988"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xaDB26E60FA6e326B9Ee444D886B4B62EC7FA38fc",
"type": "EOA",
"isVerified": true,
"name": "0xaDB2…38fc",
"url": "https://etherscan.io/address/0xaDB26E60FA6e326B9Ee444D886B4B62EC7FA38fc"
},
{
"address": "eth:0x8e814672F5c559b15af2975fBf6Fab819A4B7Dd5",
"type": "EOA",
"isVerified": true,
"name": "0x8e81…7Dd5",
"url": "https://etherscan.io/address/0x8e814672F5c559b15af2975fBf6Fab819A4B7Dd5"
},
{
"address": "eth:0x804d60CB1ade94511f7915A2062948685Ca8C81f",
"type": "EOA",
"isVerified": true,
"name": "0x804d…C81f",
"url": "https://etherscan.io/address/0x804d60CB1ade94511f7915A2062948685Ca8C81f"
},
{
"address": "eth:0x2871B956bC19D25961E9a7519f32D7fDaA21B403",
"type": "EOA",
"isVerified": true,
"name": "0x2871…B403",
"url": "https://etherscan.io/address/0x2871B956bC19D25961E9a7519f32D7fDaA21B403"
},
{
"address": "eth:0x64F4396bb0669C72858Cc50C779b48EB25F45770",
"type": "EOA",
"isVerified": true,
"name": "0x64F4…5770",
"url": "https://etherscan.io/address/0x64F4396bb0669C72858Cc50C779b48EB25F45770"
},
{
"address": "eth:0x59232aC80E6d403b6381393e52f4665ECA328558",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-3"
}
],
"discoveryDrivenData": true
},
{
"id": "Starkware SCMinority Multisig",
"name": "Starkware SCMinority Multisig",
"description": "A Multisig with 3/12 threshold. \n* Can interact with ETHBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n* Can interact with Starknet\n * Permissioned to regularly post L2 state updates and choose an available data-availability entry point. Under the current implementation, every update still needs a fact accepted by SHARP and cannot bypass the pinned program and config hashes \n* Can interact with STRKBridge\n * disable the withdrawal limit and manage the security agent role that can enable it ",
"accounts": [
{
"address": "eth:0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B",
"type": "Contract",
"isVerified": true,
"name": "0xF6b0…bC6B",
"url": "https://etherscan.io/address/0xF6b0B3e8f57396CecFD788D60499DB49Ee6AbC6B"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x49C6396070D3310f335AE19169Da6B80ea67B831",
"type": "EOA",
"isVerified": true,
"name": "0x49C6…B831",
"url": "https://etherscan.io/address/0x49C6396070D3310f335AE19169Da6B80ea67B831"
},
{
"address": "eth:0x99E84d004E73CC41eFacd382ef6FD34208B0F122",
"type": "EOA",
"isVerified": true,
"name": "0x99E8…F122",
"url": "https://etherscan.io/address/0x99E84d004E73CC41eFacd382ef6FD34208B0F122"
},
{
"address": "eth:0xb731B63eC22904A17d1cf6fD771eb5BA87f35Fa3",
"type": "EOA",
"isVerified": true,
"name": "0xb731…5Fa3",
"url": "https://etherscan.io/address/0xb731B63eC22904A17d1cf6fD771eb5BA87f35Fa3"
},
{
"address": "eth:0x0762bCc4D604Aa3B5122C7D6571Cf5368EF3F09c",
"type": "EOA",
"isVerified": true,
"name": "0x0762…F09c",
"url": "https://etherscan.io/address/0x0762bCc4D604Aa3B5122C7D6571Cf5368EF3F09c"
},
{
"address": "eth:0x16117672EBF77d5DE9a1Af91F8F79b26421b310F",
"type": "EOA",
"isVerified": true,
"name": "0x1611…310F",
"url": "https://etherscan.io/address/0x16117672EBF77d5DE9a1Af91F8F79b26421b310F"
},
{
"address": "eth:0xF6AB8BD99EfE2515C45d6FeE8Ea32738877EFbD8",
"type": "EOA",
"isVerified": true,
"name": "0xF6AB…FbD8",
"url": "https://etherscan.io/address/0xF6AB8BD99EfE2515C45d6FeE8Ea32738877EFbD8"
},
{
"address": "eth:0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD",
"type": "EOA",
"isVerified": true,
"name": "0x16aB…57CD",
"url": "https://etherscan.io/address/0x16aB869E6dEe6eF9068E5cF75C1a5A57981257CD"
},
{
"address": "eth:0x10277B1922e56d1B69f4dCe5A35696C791F78cac",
"type": "EOA",
"isVerified": true,
"name": "0x1027…8cac",
"url": "https://etherscan.io/address/0x10277B1922e56d1B69f4dCe5A35696C791F78cac"
},
{
"address": "eth:0x7383DDEd70cCCFd99835612C4148fA986e9DE560",
"type": "EOA",
"isVerified": true,
"name": "0x7383…E560",
"url": "https://etherscan.io/address/0x7383DDEd70cCCFd99835612C4148fA986e9DE560"
},
{
"address": "eth:0x590Cb94bE977a769d9E7D95D9eff8DeAe82e430C",
"type": "EOA",
"isVerified": true,
"name": "0x590C…430C",
"url": "https://etherscan.io/address/0x590Cb94bE977a769d9E7D95D9eff8DeAe82e430C"
},
{
"address": "eth:0x7A3a1bE19470919318aAD57ba162891a97e2982E",
"type": "EOA",
"isVerified": true,
"name": "0x7A3a…982E",
"url": "https://etherscan.io/address/0x7A3a1bE19470919318aAD57ba162891a97e2982E"
},
{
"address": "eth:0xFf713991196F8a9D6838bA82C9Bb3579F8Cc0D90",
"type": "EOA",
"isVerified": true,
"name": "0xFf71…0D90",
"url": "https://etherscan.io/address/0xFf713991196F8a9D6838bA82C9Bb3579F8Cc0D90"
}
],
"discoveryDrivenData": true
},
{
"id": "StarkgateManager",
"name": "StarkgateManager",
"accounts": [
{
"address": "eth:0x0c5aE94f8939182F2D06097025324D1E537d5B60",
"type": "Contract",
"isVerified": true,
"name": "0x0c5a…5B60",
"url": "https://etherscan.io/address/0x0c5aE94f8939182F2D06097025324D1E537d5B60"
}
],
"chain": "ethereum",
"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* Can interact with MultiBridge\n * enroll new tokens or deactivate deposits into the escrow (for each token individually) ",
"discoveryDrivenData": true
},
{
"id": "Starkware Multisig 4",
"name": "Starkware Multisig 4",
"description": "A Multisig with 1/3 threshold. ",
"accounts": [
{
"address": "eth:0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5",
"type": "Contract",
"isVerified": true,
"name": "0x77Dd…88c5",
"url": "https://etherscan.io/address/0x77Dd0cf03e1cCbDC750c9E5FDc34b8A3671f88c5"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x030ceEE5D4CBc304287234720B11E00f47695755",
"type": "EOA",
"isVerified": true,
"name": "EOA 1",
"url": "#EOA-1-and-EOA-2"
},
{
"address": "eth:0x59232aC80E6d403b6381393e52f4665ECA328558",
"type": "EOA",
"isVerified": true,
"name": "EOA 3",
"url": "#EOA-3"
},
{
"address": "eth:0x35FD2dD14D96Ed455356B892cd4b2fCdc7F44a7b",
"type": "EOA",
"isVerified": true,
"name": "EOA 2",
"url": "#EOA-1-and-EOA-2"
}
],
"discoveryDrivenData": true
},
{
"id": "Safe",
"name": "Safe",
"description": "A Multisig with 3/5 threshold. ",
"accounts": [
{
"address": "eth:0xd6FD2d2B18207a3b1A3d45C1ccA8c5624Ca82041",
"type": "Contract",
"isVerified": true,
"name": "0xd6FD…2041",
"url": "https://etherscan.io/address/0xd6FD2d2B18207a3b1A3d45C1ccA8c5624Ca82041"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x32369C32113D6A85d4B71faA40DDd048187DCe79",
"type": "EOA",
"isVerified": true,
"name": "0x3236…Ce79",
"url": "https://etherscan.io/address/0x32369C32113D6A85d4B71faA40DDd048187DCe79"
},
{
"address": "eth:0x81a3cb4FCaf11d55bD098175399DF09FB7970501",
"type": "EOA",
"isVerified": true,
"name": "0x81a3…0501",
"url": "https://etherscan.io/address/0x81a3cb4FCaf11d55bD098175399DF09FB7970501"
},
{
"address": "eth:0x5540E5e19a48172C37d3D79523ab7737c5b2033F",
"type": "EOA",
"isVerified": true,
"name": "0x5540…033F",
"url": "https://etherscan.io/address/0x5540E5e19a48172C37d3D79523ab7737c5b2033F"
},
{
"address": "eth:0x69638e337cdF22D68cAf227A0EE72B6ED1d89CAA",
"type": "EOA",
"isVerified": true,
"name": "0x6963…9CAA",
"url": "https://etherscan.io/address/0x69638e337cdF22D68cAf227A0EE72B6ED1d89CAA"
},
{
"address": "eth:0x6F8d3549eAA993755A99536566A4849B78517969",
"type": "EOA",
"isVerified": true,
"name": "0x6F8d…7969",
"url": "https://etherscan.io/address/0x6F8d3549eAA993755A99536566A4849B78517969"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1-and-EOA-2",
"name": "EOA 1 and EOA 2",
"accounts": [
{
"address": "eth:0x030ceEE5D4CBc304287234720B11E00f47695755",
"type": "EOA",
"isVerified": true,
"name": "0x030c…5755",
"url": "https://etherscan.io/address/0x030ceEE5D4CBc304287234720B11E00f47695755",
"displayName": "EOA 1"
},
{
"address": "eth:0x35FD2dD14D96Ed455356B892cd4b2fCdc7F44a7b",
"type": "EOA",
"isVerified": true,
"name": "0x35FD…4a7b",
"url": "https://etherscan.io/address/0x35FD2dD14D96Ed455356B892cd4b2fCdc7F44a7b",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "Member of Starkware Multisig 4.\n* Can interact with WBTCBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]\n* Can interact with ETHBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]\n* Can interact with USDTBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]\n* Can interact with STRKBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]\n* Can interact with MultiBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]\n* Can interact with USDCBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x59232aC80E6d403b6381393e52f4665ECA328558",
"type": "EOA",
"isVerified": true,
"name": "0x5923…8558",
"url": "https://etherscan.io/address/0x59232aC80E6d403b6381393e52f4665ECA328558",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "Member of Starkware Multisig 2, Starkware Multisig 4, Starkware Multisig 1, SHARP Multisig.\n* Can interact with WBTCBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]\n* Can interact with ETHBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]\n* Can interact with USDTBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]\n* Can interact with STRKBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]\n* Can interact with MultiBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]\n* Can interact with USDCBridge\n * enable the withdrawal limit [via: Starkware Multisig 4]",
"discoveryDrivenData": true
},
{
"id": "EOA-4",
"name": "EOA 4",
"accounts": [
{
"address": "eth:0x2C169DFe5fBbA12957Bdd0Ba47d9CEDbFE260CA7",
"type": "EOA",
"isVerified": true,
"name": "0x2C16…0CA7",
"url": "https://etherscan.io/address/0x2C169DFe5fBbA12957Bdd0Ba47d9CEDbFE260CA7",
"displayName": "EOA 4"
}
],
"chain": "ethereum",
"description": "* Can interact with Starknet\n * Permissioned to regularly post L2 state updates and choose an available data-availability entry point. Under the current implementation, every update still needs a fact accepted by SHARP and cannot bypass the pinned program and config hashes ",
"discoveryDrivenData": true
},
{
"id": "EOA-5",
"name": "EOA 5",
"accounts": [
{
"address": "eth:0x4032bE860716F6e4488CBc9f1505E26E2FA3C2c2",
"type": "EOA",
"isVerified": true,
"name": "0x4032…C2c2",
"url": "https://etherscan.io/address/0x4032bE860716F6e4488CBc9f1505E26E2FA3C2c2",
"displayName": "EOA 5"
}
],
"chain": "ethereum",
"description": "* Can interact with ETHBridge\n * enable the withdrawal limit \n* Can interact with STRKBridge\n * enable the withdrawal limit ",
"discoveryDrivenData": true
},
{
"id": "EOA-6",
"name": "EOA 6",
"accounts": [
{
"address": "eth:0x5751a83170BeA11fE7CdA5D599B04153C021f21A",
"type": "EOA",
"isVerified": true,
"name": "0x5751…f21A",
"url": "https://etherscan.io/address/0x5751a83170BeA11fE7CdA5D599B04153C021f21A",
"displayName": "EOA 6"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * SolvBTCBridge \n * LUSDBridge \n* Can interact with SolvBTCBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation ",
"discoveryDrivenData": true
},
{
"id": "EOA-7",
"name": "EOA 7",
"accounts": [
{
"address": "eth:0xF689688640E88160c07C6FC5cc63039F29EDe86b",
"type": "EOA",
"isVerified": true,
"name": "0xF689…e86b",
"url": "https://etherscan.io/address/0xF689688640E88160c07C6FC5cc63039F29EDe86b",
"displayName": "EOA 7"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * LBTCBridge \n* Can interact with LBTCBridge\n * disable the withdrawal limit and manage the security agent role that can enable it \n * manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation ",
"discoveryDrivenData": true
}
]
}
}
+13 -4
{
"addresses": {
"ethereum": [
{
"name": "Starknet",
"isVerified": true,
"address": "eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4",
"upgradeability": {
"proxyType": "StarkWare proxy",
"admins": [
"eth:0x15e8c684FD095d4796A0c0CF678554F4c1C7C361",
"eth:0xCA112018fEB729458b628AadC8f996f9deCbCa0c"
],
"implementations": [
"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A"
],
"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"
]
}
],
"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": "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": "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": "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 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/0x96C8AE2AC9A5cd5fC354e375dB4d0ca75fc0685e#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 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/0xA86b9b9c58d4f786F8ea89356c9c9Dde9432Ab10#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 6\n * **govAdmin**: Starkware Multisig 2\n * **secAdmin**: Starkware Multisig 2",
"upgradableBy": [
{
"id": "EOA-6",
"name": "EOA 6",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF3F62F23dF9C1D2C7C63D9ea6B90E8d24c7E3DF5#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.3-RC.11/crates/apollo_starknet_os_program/src/cairo/starkware/starknet/core/os",
"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 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 `\"os\"` value of this file will be equivalent to dec value of the hash.",
"hash": "2006389624453304912912750132846114593020263069652857561377702883656839453432"
"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, which contains exactly this hash.",
"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": 1788530147,
"baseTimestamp": 1791452815,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"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```"
}
]
}
]
+14 -8
{
"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": 1659869409,
"type": "code",
"earliest": 1659869409
},
{
"timestamp": 1662879548,
"type": "code",
"earliest": 1662879548
},
{
"timestamp": 1668953231,
"type": "code",
"earliest": 1668953231
},
{
"timestamp": 1672699319,
"type": "state",
"earliest": 1672699319
},
{
"timestamp": 1678106063,
"type": "code",
"earliest": 1678106063
},
{
"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": 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": 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": 1728835151,
"type": "code",
"earliest": 1728835151
},
{
"timestamp": 1732747391,
"type": "state",
"updateId": "5c0c724a",
"earliest": 1732747391
},
{
"timestamp": 1738189871,
"type": "state",
"updateId": "199b326f",
"earliest": 1738189871
},
{
"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": 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": 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
}
],
"contracts": [
{
"name": "Starknet",
"address": "eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4",
"isVerified": true,
"ossifyingSince": 1791287267,
"codeChangeCount": 10,
"stateChangeCount": 19
},
{
"name": "SHARPVerifierCallProxy",
"address": "eth:0x47312450B3Ac8b5b8e247a6bB6d523e7605bDb60",
"isVerified": true,
"ossifyingSince": 1783857227,
"codeChangeCount": 13,
"stateChangeCount": 1
},
{
"name": "Starknet",
"address": "eth:0xc662c410C0ECf747543f5bA90660f6ABeBD9C8c4",
"isVerified": true,
"ossifyingSince": 1783510259,
"codeChangeCount": 10,
"stateChangeCount": 18
},
{
"name": "SHARPVerifier",
"address": "eth:0x4956bda1d23F75B988644329c5B06BD1494a72b6",
"isVerified": true,
"ossifyingSince": 1782997607,
"codeChangeCount": 0,
"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": "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": "DelayedExecutor",
"address": "eth:0xCA112018fEB729458b628AadC8f996f9deCbCa0c",
"isVerified": true,
"ossifyingSince": 1739989031,
"codeChangeCount": 0,
"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,
1704907283,
1721828687,
1721828687,
1721828687,
1739989031,
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
}
+59 -27
+2 -3
{
"unverifiedContracts": [
"eth:0xD82ed8786D7c69DC7e052F7A542AB047971E73d2",
"eth:0x6234c4C2734D2B246AE074492F402D8f58ff3226",
"eth:0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd"
"eth:0x94C92F096437ab9958fC0A37F09348f30389Ae79",
"eth:0xD82ed8786D7c69DC7e052F7A542AB047971E73d2"
]
}
+38 -23
{
"addresses": {
"ethereum": [
{
"name": "Pool_50K_cDAI",
"isVerified": true,
"address": "eth:0x03893a7c7463AE47D46bc7f091665f1893656003",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 50K cDAI deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x03893a7c7463AE47D46bc7f091665f1893656003#code"
},
{
"name": "Pool_10K_DAI",
"isVerified": true,
"address": "eth:0x07687e702b410Fa43f4cB4Af7FA097918ffD2730",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 10K DAI deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x07687e702b410Fa43f4cB4Af7FA097918ffD2730#code"
},
{
"name": "Pool_1000_USDT",
"isVerified": true,
"address": "eth:0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 1000 USDT deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f#code"
},
{
"name": "Pool_0.1_ETH",
"isVerified": true,
"address": "eth:0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 0.1 ETH deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc#code"
},
{
"name": "Pool_100_USDT",
"isVerified": true,
"address": "eth:0x169AD27A470D064DEDE56a2D3ff727986b15D52B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 100 USDT deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x169AD27A470D064DEDE56a2D3ff727986b15D52B#code"
},
{
"name": "Pool_0.1_WBTC",
"isVerified": true,
"address": "eth:0x178169B423a011fff22B9e3F3abeA13414dDD0F1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 0.1 WBTC deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x178169B423a011fff22B9e3F3abeA13414dDD0F1#code"
},
{
"name": "Pool_5K_cDAI",
"isVerified": true,
"address": "eth:0x22aaA7720ddd5388A3c0A3333430953C68f1849b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 5K cDAI deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x22aaA7720ddd5388A3c0A3333430953C68f1849b#code"
},
{
"name": "Pool_100K_DAI",
"isVerified": true,
"address": "eth:0x23773E65ed146A459791799d01336DB287f25334",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 100K DAI deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x23773E65ed146A459791799d01336DB287f25334#code"
},
{
"name": "Pool_500K_cDAI",
"isVerified": true,
"address": "eth:0x2717c5e28cf931547B621a5dddb772Ab6A35B701",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 500K cDAI deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2717c5e28cf931547B621a5dddb772Ab6A35B701#code"
},
{
"name": "Pool_1000_USDC",
"isVerified": true,
"address": "eth:0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 1000 USDC deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D#code"
},
{
"name": "Pool_1_ETH",
"isVerified": true,
"address": "eth:0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 1 ETH deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936#code"
},
{
"name": "RelayerRegistry",
"isVerified": true,
"address": "eth:0x58E8dCC13BE9780fC42E8723D8EaD4CF46943dF2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
],
"implementations": [
"eth:0x84b0c75c1F6211450FEC7289c32D717AdaDD702A"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1685886611,
"transactionHash": "0x98125b78ef0dc7fd040764f37ee24e40ae5352b8551ba671aa7bd8e8320dcef9",
"implementations": [
"eth:0xe27B91724C55E950F68b394f33FA3B86693179C0"
]
},
{
"timestamp": 1698933491,
"transactionHash": "0x3d11319e48b756e50c873bebe3a34d2e8f536436d70f99bfd6da03e4ea5642e4",
"implementations": [
"eth:0xA3b821A2C6C9a52533178a1f2B9Ff4AedbA880e6"
]
},
{
"timestamp": 1700316599,
"transactionHash": "0x9b8cc0ca7bf2019b408eead6d2db8046957134183dd882007be41822082ab319",
"implementations": [
"eth:0x84b0c75c1F6211450FEC7289c32D717AdaDD702A"
]
}
],
"description": "Upgradeable registry that tracks registered relayers, their worker addresses, and their staked TORN balances used to service withdrawals. Relayers registered here could be queried by a tornadocash frontend to facilitate discovery for users, but users are free to use any (unregistered) relayer at withdrawal time.\n* Roles:\n * **admin**: GovernanceProposalStateUpgrade\n * **governance**: GovernanceProposalStateUpgrade",
"upgradableBy": [
{
"name": "GovernanceProposalStateUpgrade",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x58E8dCC13BE9780fC42E8723D8EaD4CF46943dF2#code"
},
{
"name": "FeeManager",
"isVerified": true,
"address": "eth:0x5f6c97C6AD7bdd0AE7E0Dd4ca33A4ED3fDabD4D7",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
],
"implementations": [
"eth:0xf4B067dD14e95Bab89Be928c07Cb22E3c94E0DAA"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "Upgradeable fee manager that derives relayer burn fees for each Tornado instance from registry settings and Uniswap TWAP data.\n* Roles:\n * **admin**: GovernanceProposalStateUpgrade\n * **governance**: GovernanceProposalStateUpgrade",
"upgradableBy": [
{
"name": "GovernanceProposalStateUpgrade",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5f6c97C6AD7bdd0AE7E0Dd4ca33A4ED3fDabD4D7#code"
},
{
"name": "Pool_1_WBTC",
"isVerified": true,
"address": "eth:0x610B717796ad172B316836AC95a2ffad065CeaB4",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 1 WBTC deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x610B717796ad172B316836AC95a2ffad065CeaB4#code"
},
{
"name": "MiMCHasher",
"isVerified": true,
"address": "eth:0x83584f83f26aF4eDDA9CBe8C730bc87C364b28fe",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"references": [
{
"title": "Tornado Cash hasher build script",
"url": "https://github.com/tornadocash/tornado-core/blob/master/scripts/compileHasher.js"
},
{
"title": "Source Code",
"url": "https://github.com/tornadocash/circomlib/blob/c372f14d324d57339c88451834bf2824e73bbdbc/src/mimcsponge_gencontract.js"
}
],
"description": "MiMC hasher used by every Tornado pool for commitment-tree operations (linked library in the 2019 pools, constructor argument in the 2021 pools), manually verified against the pinned Tornado circomlib generator.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x83584f83f26aF4eDDA9CBe8C730bc87C364b28fe#code"
},
{
"name": "Pool_10_ETH",
"isVerified": true,
"address": "eth:0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 10 ETH deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF#code"
},
{
"name": "Pool_100_ETH",
"isVerified": true,
"address": "eth:0xA160cdAB225685dA1d56aa342Ad8841c3b53f291",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 100 ETH deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xA160cdAB225685dA1d56aa342Ad8841c3b53f291#code"
},
{
"name": "InstanceRegistry",
"isVerified": true,
"address": "eth:0xB20c66C4DE72433F3cE747b58B86830c459CA911",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
],
"implementations": [
"eth:0x2573BAc39EBe2901B4389CD468F2872cF7767FAF"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "Upgradeable registry of supported Tornado Cash pool instances and their mutable per-instance fee and routing configuration.\n* Roles:\n * **admin**: GovernanceProposalStateUpgrade\n * **governance**: GovernanceProposalStateUpgrade",
"upgradableBy": [
{
"name": "GovernanceProposalStateUpgrade",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xB20c66C4DE72433F3cE747b58B86830c459CA911#code"
},
{
"name": "Pool_10_WBTC",
"isVerified": true,
"address": "eth:0xbB93e510BbCD0B7beb5A853875f9eC60275CF498",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 10 WBTC deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbB93e510BbCD0B7beb5A853875f9eC60275CF498#code"
},
{
"name": "Pool_5M_cDAI",
"isVerified": true,
"address": "eth:0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 5M cDAI deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af#code"
},
{
"name": "Pool_100_DAI",
"isVerified": true,
"address": "eth:0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 100 DAI deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3#code"
},
{
"name": "TornadoRouter",
"isVerified": true,
"address": "eth:0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Router contract that validates supported instances, forwards deposits and withdrawals, and subtracts from relayer stake through the relayer registry during withdrawals.\n* Roles:\n * **governance**: GovernanceProposalStateUpgrade",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b#code"
},
{
"name": "Pool_100_USDC",
"isVerified": true,
"address": "eth:0xd96f2B1c14Db8458374d9Aca76E26c3D18364307",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 100 USDC deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xd96f2B1c14Db8458374d9Aca76E26c3D18364307#code"
},
{
"name": "Pool_1000_DAI",
"isVerified": true,
"address": "eth:0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Fixed-denomination Tornado Cash pool for 1000 DAI deposits.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144#code"
},
{
"name": "TornadoStakingRewards",
"isVerified": true,
"address": "eth:0x5B3f656C80E8ddb9ec01Dd9018815576E9238c29",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
],
"implementations": [
"eth:0x9c97be37840f0e754bb7aDB1b16fD0954A2BA248"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1687570343,
"transactionHash": "0xf89acb4c80df2c46d8907bcd4152fb044ae0ffb398fc13a6213b49b3135047eb",
"implementations": [
"eth:0x9c97be37840f0e754bb7aDB1b16fD0954A2BA248"
]
}
],
"description": "Staking contract that escrows TORN staked by relayers. With time, their stake is subtracted from for being officially registered as relayers and receiving fees from each withdrawal, and is redirected as TORN rewards for governance participants who are locking their TORN for voting/staking.\n* Roles:\n * **admin**: GovernanceProposalStateUpgrade\n * **governance**: GovernanceProposalStateUpgrade",
"upgradableBy": [
{
"name": "GovernanceProposalStateUpgrade",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5B3f656C80E8ddb9ec01Dd9018815576E9238c29#code"
},
{
"name": "TORN",
"isVerified": true,
"address": "eth:0x77777FeDdddFfC19Ff86DB637967013e6C6A116C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "TORN governance token contract. Transfers start paused and can later be toggled by governance, which also controls the paused-transfer allowlist and token rescue functions.\n* Roles:\n * **governance**: GovernanceProposalStateUpgrade",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x77777FeDdddFfC19Ff86DB637967013e6C6A116C#code"
},
{
"name": "WithdrawVerifier",
"isVerified": true,
"address": "eth:0x09193888b3f38C82dEdfda55259A82C0E7De875E",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Verifier contract for Tornado anonymity-mining withdrawal proofs.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x09193888b3f38C82dEdfda55259A82C0E7De875E#code"
},
{
"name": "TornadoTreesV1",
"isVerified": true,
"address": "eth:0x43a3bE4Ae954d9869836702AFd10393D3a7Ea417",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Legacy Tornado Trees contract that records deposit and withdrawal leaves from TornadoProxyV1 and maintains the roots later consumed by migration and mining logic.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x43a3bE4Ae954d9869836702AFd10393D3a7Ea417#code"
},
{
"name": "TornadoTreesV2",
"isVerified": true,
"address": "eth:0x527653eA119F3E6a1F5BD18fbF4714081D7B31ce",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce"
],
"implementations": [
"eth:0x200a79068d8141924B511bC78CB55Dca89cF5C2E"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "Anonymity Mining - Upgradeable batch-based Tornado Trees contract that reuses legacy tree state, queues new leaves from the newer proxy, and accepts batched root updates proven by a verifier.\n* Roles:\n * **admin**: GovernanceProposalStateUpgrade\n * **governance**: GovernanceProposalStateUpgrade",
"upgradableBy": [
{
"name": "GovernanceProposalStateUpgrade",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x527653eA119F3E6a1F5BD18fbF4714081D7B31ce#code"
},
{
"name": "RewardSwap",
"isVerified": true,
"address": "eth:0x5cab7692D4E94096462119ab7bF57319726Eed2A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Liquidity schedule that pays out TORN rewards for anonymity mining. Only the Miner contract can draw from it or adjust the reward weight.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x5cab7692D4E94096462119ab7bF57319726Eed2A#code"
},
{
"name": "DepositTree",
"isVerified": true,
"address": "eth:0x6234c4C2734D2B246AE074492F402D8f58ff3226",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Legacy Poseidon merkle tree that stores deposit or withdrawal leaves for TornadoTreesV1. Only its owner can insert leaves.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6234c4C2734D2B246AE074492F402D8f58ff3226#code"
},
{
"name": "TreeUpdateVerifier",
"isVerified": true,
"address": "eth:0x653477c392c16b0765603074f157314Cc4f40c32",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Verifier contract for Tornado mining account-tree update proofs.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x653477c392c16b0765603074f157314Cc4f40c32#code"
},
{
"name": "TornadoProxyV2",
"isVerified": true,
"address": "eth:0x722122dF12D4e14e13Ac3b6895a86e84145b6967",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Newer immutable Tornado proxy that routes deposits and withdrawals to supported pool instances and records them in the upgraded Tornado Trees contract.\n* Roles:\n * **governance**: GovernanceProposalStateUpgrade",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x722122dF12D4e14e13Ac3b6895a86e84145b6967#code"
},
{
"name": "Miner",
"isVerified": true,
"address": "eth:0x746Aebc06D2aE31B71ac51429A19D54E797878E9",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Mining and reward-distribution contract for Tornado anonymity mining. It verifies reward and withdrawal proofs, maintains account roots, and routes TORN rewards through the swap contract.\n* Roles:\n * **governance**: GovernanceProposalStateUpgrade",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x746Aebc06D2aE31B71ac51429A19D54E797878E9#code"
},
{
"name": "RewardVerifier",
"isVerified": true,
"address": "eth:0x88fd245fEdeC4A936e700f9173454D1931B4C307",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Verifier contract for Tornado anonymity-mining reward proofs.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x88fd245fEdeC4A936e700f9173454D1931B4C307#code"
},
{
"name": "TornadoProxyV1",
"isVerified": true,
"address": "eth:0x905b63Fff465B9fFBF41DeA908CEb12478ec7601",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Legacy immutable Tornado proxy that routes deposits and withdrawals to pool instances and records them in the legacy Tornado Trees contract.\n* Roles:\n * **governance**: GovernanceProposalStateUpgrade",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x905b63Fff465B9fFBF41DeA908CEb12478ec7601#code"
},
{
"name": "PoseidonHasher",
"name": "PoseidonHasher2",
"isVerified": false,
"address": "eth:0xD82ed8786D7c69DC7e052F7A542AB047971E73d2",
"address": "eth:0x94C92F096437ab9958fC0A37F09348f30389Ae79",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Unverified Poseidon hasher used by the legacy Tornado Trees merkle trees.\n",
"description": "Anonymity Mining - Unverified Poseidon hasher used by the legacy DepositTree and WithdrawalTree to hash tree nodes.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD82ed8786D7c69DC7e052F7A542AB047971E73d2#code"
"url": "https://etherscan.io/address/0x94C92F096437ab9958fC0A37F09348f30389Ae79#code"
},
{
"name": "BatchTreeUpdateVerifier",
"name": "WithdrawalTree",
"isVerified": true,
"address": "eth:0xEd3B00B651c4c7AF77c2fDdce4a388de84b507C6",
"address": "eth:0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Anonymity Mining - Verifier contract for batched Tornado Trees root updates.\n",
"description": "Anonymity Mining - Legacy Poseidon merkle tree that stores deposit or withdrawal leaves for TornadoTreesV1. Only its owner can insert leaves.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEd3B00B651c4c7AF77c2fDdce4a388de84b507C6#code"
"url": "https://etherscan.io/address/0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd#code"
},
{
"name": "TornadoVault",
"isVerified": true,
"address": "eth:0x2F50508a8a3D323B91336FA3eA6ae50E55f32185",
"name": "PoseidonHasher",
"isVerified": false,
"address": "eth:0xD82ed8786D7c69DC7e052F7A542AB047971E73d2",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Vault that escrows locked TORN of governance participants who wish to receive voting rights.\n",
"description": "Anonymity Mining - Unverified Poseidon hasher used by TornadoTreesV1 to hash deposit and withdrawal leaves.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2F50508a8a3D323B91336FA3eA6ae50E55f32185#code"
"url": "https://etherscan.io/address/0xD82ed8786D7c69DC7e052F7A542AB047971E73d2#code"
},
{
"name": "DepositTree",
"isVerified": false,
"address": "eth:0x6234c4C2734D2B246AE074492F402D8f58ff3226",
"name": "BatchTreeUpdateVerifier",
"isVerified": true,
"address": "eth:0xEd3B00B651c4c7AF77c2fDdce4a388de84b507C6",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Unverified merkle tree instance that stores legacy Tornado deposit leaves for TornadoTreesV1.\n",
"description": "Anonymity Mining - Verifier contract for batched Tornado Trees root updates.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x6234c4C2734D2B246AE074492F402D8f58ff3226#code"
"url": "https://etherscan.io/address/0xEd3B00B651c4c7AF77c2fDdce4a388de84b507C6#code"
},
{
"name": "WithdrawalTree",
"isVerified": false,
"address": "eth:0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd",
"name": "TornadoVault",
"isVerified": true,
"address": "eth:0x2F50508a8a3D323B91336FA3eA6ae50E55f32185",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Unverified merkle tree instance that stores legacy Tornado withdrawal leaves for TornadoTreesV1.\n",
"description": "Vault that escrows locked TORN of governance participants who wish to receive voting rights.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd#code"
"url": "https://etherscan.io/address/0x2F50508a8a3D323B91336FA3eA6ae50E55f32185#code"
},
{
"name": "Verifier",
"isVerified": true,
"address": "eth:0xce172ce1F20EC0B3728c9965470eaf994A03557A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Groth16 verifier contract used by Tornado Cash pool withdrawal proofs.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xce172ce1F20EC0B3728c9965470eaf994A03557A#code"
},
{
"name": "GasCompensationVault",
"isVerified": true,
"address": "eth:0xFA4C1f3f7D5dd7c12a9Adb82Cd7dDA542E3d59ef",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Vault that escrows ETH for governance gas-compensation payouts and can return unused funds to governance.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFA4C1f3f7D5dd7c12a9Adb82Cd7dDA542E3d59ef#code"
}
]
},
"risks": [
{
"category": "Funds can be stolen if",
"text": "the source code of unverified contracts contains malicious code.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0xce172ce1F20EC0B3728c9965470eaf994A03557A",
"eth:0xEd3B00B651c4c7AF77c2fDdce4a388de84b507C6",
"eth:0x653477c392c16b0765603074f157314Cc4f40c32",
"eth:0x88fd245fEdeC4A936e700f9173454D1931B4C307",
"eth:0x09193888b3f38C82dEdfda55259A82C0E7De875E"
]
}
+1 -1
{
"baseTimestamp": 1790851757,
"baseTimestamp": 1791454331,
"contractsDiscoDriven": false,
"hasDiscoUi": false,
"isDiscoDriven": false,
"permissionsDiscoDriven": false
}
+18 -0
[
{
"id": "ce95ad25",
"date": "Thu, 08 Oct 2026 10:13:17 GMT",
"timestamp": 1791454331,
"description": "Created two new proposals. Both deploy new pools.\n\n- Proposal 71: deploy five new classic ETH pools (0.01, 0.03, 0.3, 3, 30 ETH) with protocol fee 0 for the three small pools and 0.3% for 3 and 30 ETH.\n- Proposal 72: deploy one 0.01 ETH pool of a new type, `FeeEnforcedTornado_eth` (https://github.com/frogheadtornado/tc-new-pool-design-proposal). It has a 0.3% withdrawal fee. Direct withdrwals (not by registered routers) pay additional fee, governance can raise withdrawal fees up to 5% total.\n\nAlso, several anonymity mining legacy contract sources are verified now, they were templatized.",
"isHighSeverity": true,
"changeCount": 22,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GovernanceProposalStateUpgrade (eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce) [tornado-cash/GovernanceProposalStateUpgrade] {\n +++ description: Upgradeable Tornado Cash governance contract that manages proposals, voting, execution, and treasury-connected governance modules. If you trust this contract, you trust its upgrade path and proposal rules to change protocol governance behavior.\n values.proposalCount:\n- 70\n+ 72\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n contract DepositTree (eth:0x6234c4C2734D2B246AE074492F402D8f58ff3226) [tornado-cash/OwnableMerkleTree] {\n +++ description: Anonymity Mining - Legacy Poseidon merkle tree that stores deposit or withdrawal leaves for TornadoTreesV1. Only its owner can insert leaves.\n unverified:\n- true\n description:\n- \"Unverified merkle tree instance that stores legacy Tornado deposit leaves for TornadoTreesV1.\"\n+ \"Anonymity Mining - Legacy Poseidon merkle tree that stores deposit or withdrawal leaves for TornadoTreesV1. Only its owner can insert leaves.\"\n+++ description: Poseidon hasher used to compute the tree nodes.\n values.hasher:\n+ \"eth:0x94C92F096437ab9958fC0A37F09348f30389Ae79\"\n+++ description: Height of the merkle tree.\n+++ severity: LOW\n values.levels:\n+ 20\n+++ description: Only this address can insert leaves into the tree.\n+++ severity: HIGH\n values.owner:\n+ \"eth:0x43a3bE4Ae954d9869836702AFd10393D3a7Ea417\"\n implementationNames.eth:0x6234c4C2734D2B246AE074492F402D8f58ff3226:\n- \"\"\n+ \"OwnableMerkleTree\"\n template:\n+ \"tornado-cash/OwnableMerkleTree\"\n sourceHashes:\n+ [\"0x218d9a152ab9d469cf4baf2591677b19bb64e6885452ccc071bfbf6eca60c9aa\"]\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Only this address can insert leaves into the tree.\"},\"hasher\":{\"description\":\"Poseidon hasher used to compute the tree nodes.\"},\"levels\":{\"severity\":\"LOW\",\"description\":\"Height of the merkle tree.\"}}\n category:\n+ {\"name\":\"External Bridges\",\"priority\":1}\n }\n```\n\n```diff\n contract WithdrawalTree (eth:0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd) [tornado-cash/OwnableMerkleTree] {\n +++ description: Anonymity Mining - Legacy Poseidon merkle tree that stores deposit or withdrawal leaves for TornadoTreesV1. Only its owner can insert leaves.\n unverified:\n- true\n description:\n- \"Unverified merkle tree instance that stores legacy Tornado withdrawal leaves for TornadoTreesV1.\"\n+ \"Anonymity Mining - Legacy Poseidon merkle tree that stores deposit or withdrawal leaves for TornadoTreesV1. Only its owner can insert leaves.\"\n+++ description: Poseidon hasher used to compute the tree nodes.\n values.hasher:\n+ \"eth:0x94C92F096437ab9958fC0A37F09348f30389Ae79\"\n+++ description: Height of the merkle tree.\n+++ severity: LOW\n values.levels:\n+ 20\n+++ description: Only this address can insert leaves into the tree.\n+++ severity: HIGH\n values.owner:\n+ \"eth:0x43a3bE4Ae954d9869836702AFd10393D3a7Ea417\"\n implementationNames.eth:0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd:\n- \"\"\n+ \"OwnableMerkleTree\"\n template:\n+ \"tornado-cash/OwnableMerkleTree\"\n sourceHashes:\n+ [\"0x218d9a152ab9d469cf4baf2591677b19bb64e6885452ccc071bfbf6eca60c9aa\"]\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Only this address can insert leaves into the tree.\"},\"hasher\":{\"description\":\"Poseidon hasher used to compute the tree nodes.\"},\"levels\":{\"severity\":\"LOW\",\"description\":\"Height of the merkle tree.\"}}\n category:\n+ {\"name\":\"External Bridges\",\"priority\":1}\n }\n```\n\n```diff\n+ Status: CREATED\n contract PoseidonHasher2 (eth:0x94C92F096437ab9958fC0A37F09348f30389Ae79) [N/A]\n +++ description: Anonymity Mining - Unverified Poseidon hasher used by the legacy DepositTree and WithdrawalTree to hash tree nodes.\n```"
}
]
},
{
"id": "6b9ec1ab",
"date": "Thu, 01 Oct 2026 11:11:05 GMT",
"timestamp": 1790851757,
"description": "Proposal 69 (1,000 TORN to Mr Anon) was defeated (~163k for vs ~458k TORN against). The same proposer resubmitted it as proposal 70 (voting active, ends 2026-10-06) with a new verified Proposal contract (eth:0x04C2eb6Df3bF6032b8e07a03Fc9a5Ca424414483): 1,000 TORN split into 500 TORN to abusedotch and 500 TORN to JJ (Mr Anon's share, redirected as repayment). It only transfers TORN from governance, no protocol parameters or contracts are changed.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GovernanceProposalStateUpgrade (eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce) [tornado-cash/GovernanceProposalStateUpgrade] {\n +++ description: Upgradeable Tornado Cash governance contract that manages proposals, voting, execution, and treasury-connected governance modules. If you trust this contract, you trust its upgrade path and proposal rules to change protocol governance behavior.\n values.proposalCount:\n- 69\n+ 70\n }\n```"
}
]
},
{
"id": "8e20f4e4",
"date": "Mon, 28 Sep 2026 13:34:46 GMT",
"timestamp": 1790592851,
"description": "New proposal on DAO to reward Mr Anon with 1000 TORN for taking down fradulent `tornado.cash` frontend. This is a legit proposal that originates from Tornado Cash DAO tg channel.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GovernanceProposalStateUpgrade (eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce) [tornado-cash/GovernanceProposalStateUpgrade] {\n +++ description: Upgradeable Tornado Cash governance contract that manages proposals, voting, execution, and treasury-connected governance modules. If you trust this contract, you trust its upgrade path and proposal rules to change protocol governance behavior.\n values.proposalCount:\n- 68\n+ 69\n }\n```"
}
]
},
{
"id": "24f9ce54",
"date": "Fri, 21 Aug 2026 10:26:51 GMT",
"timestamp": 1787307944,
"description": "New proposal to update DAO-controled tornado cash frontend: https://github.com/tornado-dao/classic-ui/compare/e312df5a4f6caaa7e93f1b5960c603d8dd7ec67a...17c54dae9ad91bb3c6d62a7860df6cd365ab76d4. It replaces RPC queries with Graph queries, sources proposal states from the onchain data, changes source link from Codeberg to GitHub and adds a phishing website notice board for tornado.cash.\n\nSol verified that the published CID matches the changes.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GovernanceProposalStateUpgrade (eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce) [tornado-cash/GovernanceProposalStateUpgrade] {\n +++ description: Upgradeable Tornado Cash governance contract that manages proposals, voting, execution, and treasury-connected governance modules. If you trust this contract, you trust its upgrade path and proposal rules to change protocol governance behavior.\n values.proposalCount:\n- 67\n+ 68\n }\n```"
}
]
},
{
"id": "e912d5f9",
"date": "Fri, 03 Jul 2026 08:58:07 GMT",
"timestamp": 1783068981,
"description": "Manually verified the Tornado Cash MiMC hasher against the pinned Tornado circomlib MiMC sponge generator and deployment bytecode.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n contract MiMCHasher (eth:0x83584f83f26aF4eDDA9CBe8C730bc87C364b28fe) [N/A] {\n +++ description: MiMC hasher used by newer Tornado pool generations for commitment-tree operations, manually verified against the pinned Tornado circomlib generator.\n unverified:\n- true\n description:\n- \"Unverified MiMC hasher used by newer Tornado pool generations for commitment-tree operations. If this contract were malicious or had a backdoor, all pools using it would be compromised.\"\n+ \"MiMC hasher used by newer Tornado pool generations for commitment-tree operations, manually verified against the pinned Tornado circomlib generator.\"\n sourceHashes:\n+ [\"0x96acbaf2288d4cc44cf8e9634da42d922960c005a6982e0b54a84823be2776f2\"]\n references:\n+ [{\"text\":\"Tornado Cash hasher build script\",\"href\":\"https://github.com/tornadocash/tornado-core/blob/master/scripts/compileHasher.js\"},{\"text\":\"Source Code\",\"href\":\"https://github.com/tornadocash/circomlib/blob/c372f14d324d57339c88451834bf2824e73bbdbc/src/mimcsponge_gencontract.js\"}]\n }\n```"
}
]
},
{
"id": "36401cab",
"date": "Thu, 25 Jun 2026 12:45:24 GMT",
"timestamp": 1782391445,
"description": "New proposal, (yet) unverified and malicious, see https://x.com/pcaversaccio/status/2070125180261896246 .",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GovernanceProposalStateUpgrade (eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce) [tornado-cash/GovernanceProposalStateUpgrade] {\n +++ description: Upgradeable Tornado Cash governance contract that manages proposals, voting, execution, and treasury-connected governance modules. If you trust this contract, you trust its upgrade path and proposal rules to change protocol governance behavior.\n values.proposalCount:\n- 66\n+ 67\n }\n```"
}
]
},
{
"id": "901152f6",
"date": "Tue, 12 May 2026 10:06:35 GMT",
"timestamp": 1777548282,
"description": "Config: use the new flattener implementation. Also cleaned up spammy disco",
"isHighSeverity": false,
"changeCount": 45,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract cTornado (eth:0x03893a7c7463AE47D46bc7f091665f1893656003) [tornado-cash/cTornado]\n +++ description: Fixed-denomination cToken-based mixer pool. Anyone can sweep accrued COMP rewards, but the claimed COMP is always sent to the governance address.\n```\n\n```diff\n+ Status: CREATED\n contract ERC20Tornado (eth:0x07687e702b410Fa43f4cB4Af7FA097918ffD2730) [tornado-cash/ERC20Tornado]\n +++ description: Fixed-denomination ERC20 mixer pool from the newer Tornado Cash pool generation. Funds are governed by the withdrawal verifier and the immutable verifier/hasher pair configured at deployment.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_erc20 (eth:0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f) [tornado-cash/TornadoCash_erc20]\n +++ description: Legacy fixed-denomination ERC20 mixer from the original Tornado Cash pool generation. It retains an operator role that can replace the withdrawal verifier until renounced.\n```\n\n```diff\n+ Status: CREATED\n contract WithdrawVerifier (eth:0x09193888b3f38C82dEdfda55259A82C0E7De875E) [tornado-cash/WithdrawVerifier]\n +++ description: Verifier contract for Tornado anonymity-mining withdrawal proofs.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_Eth_01 (eth:0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc) [tornado-cash/TornadoCash_Eth_01]\n +++ description: Legacy fixed-denomination ETH mixer for 0.1 ETH deposits. This older pool generation keeps an operator role that can replace the withdrawal verifier and, for this instance, perform a one-time state migration.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_erc20 (eth:0x169AD27A470D064DEDE56a2D3ff727986b15D52B) [tornado-cash/TornadoCash_erc20]\n +++ description: Legacy fixed-denomination ERC20 mixer from the original Tornado Cash pool generation. It retains an operator role that can replace the withdrawal verifier until renounced.\n```\n\n```diff\n+ Status: CREATED\n contract ERC20Tornado (eth:0x178169B423a011fff22B9e3F3abeA13414dDD0F1) [tornado-cash/ERC20Tornado]\n +++ description: Fixed-denomination ERC20 mixer pool from the newer Tornado Cash pool generation. Funds are governed by the withdrawal verifier and the immutable verifier/hasher pair configured at deployment.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_erc20 (eth:0x22aaA7720ddd5388A3c0A3333430953C68f1849b) [tornado-cash/TornadoCash_erc20]\n +++ description: Legacy fixed-denomination ERC20 mixer from the original Tornado Cash pool generation. It retains an operator role that can replace the withdrawal verifier until renounced.\n```\n\n```diff\n+ Status: CREATED\n contract ERC20Tornado (eth:0x23773E65ed146A459791799d01336DB287f25334) [tornado-cash/ERC20Tornado]\n +++ description: Fixed-denomination ERC20 mixer pool from the newer Tornado Cash pool generation. Funds are governed by the withdrawal verifier and the immutable verifier/hasher pair configured at deployment.\n```\n\n```diff\n+ Status: CREATED\n contract cTornado (eth:0x2717c5e28cf931547B621a5dddb772Ab6A35B701) [tornado-cash/cTornado]\n +++ description: Fixed-denomination cToken-based mixer pool. Anyone can sweep accrued COMP rewards, but the claimed COMP is always sent to the governance address.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoVault (eth:0x2F50508a8a3D323B91336FA3eA6ae50E55f32185) [tornado-cash/TornadoVault]\n +++ description: Vault that escrows locked TORN on behalf of governance users and serves withdrawals initiated by the governance contract.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoTreesV1 (eth:0x43a3bE4Ae954d9869836702AFd10393D3a7Ea417) [tornado-cash/TornadoTreesV1]\n +++ description: Legacy Tornado Trees contract that records deposit and withdrawal leaves from TornadoProxyV1 and maintains the roots later consumed by migration and mining logic.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_erc20 (eth:0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D) [tornado-cash/TornadoCash_erc20]\n +++ description: Legacy fixed-denomination ERC20 mixer from the original Tornado Cash pool generation. It retains an operator role that can replace the withdrawal verifier until renounced.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_eth (eth:0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936) [tornado-cash/TornadoCash_eth]\n +++ description: Legacy fixed-denomination ETH mixer from the original Tornado Cash pool generation. It retains an operator role that can replace the withdrawal verifier until renounced.\n```\n\n```diff\n+ Status: CREATED\n contract Proposal (eth:0x4B6C07B8940a7602fE4332AFa915b366e56eAce5) [tornado-cash/Proposal]\n +++ description: One-off governance proposal payload that deployed the newer Tornado Trees and proxy wiring, migrated legacy tree state, and disabled old mineable instances on the legacy proxy.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoTreesV2 (eth:0x527653eA119F3E6a1F5BD18fbF4714081D7B31ce) [tornado-cash/TornadoTreesV2]\n +++ description: Upgradeable batch-based Tornado Trees contract that reuses legacy tree state, queues new leaves from the newer proxy, and accepts batched root updates proven by a verifier.\n```\n\n```diff\n+ Status: CREATED\n contract RelayerRegistry (eth:0x58E8dCC13BE9780fC42E8723D8EaD4CF46943dF2) [tornado-cash/RelayerRegistry]\n +++ description: Upgradeable registry that tracks registered relayers, their worker addresses, and their staked TORN balances used to service withdrawals.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoStakingRewards (eth:0x5B3f656C80E8ddb9ec01Dd9018815576E9238c29) [tornado-cash/TornadoStakingRewards]\n +++ description: Upgradeable staking rewards contract that holds relayer stake, distributes burn-derived rewards to locked TORN holders, and lets governance recover TORN from the contract.\n```\n\n```diff\n+ Status: CREATED\n contract RewardSwap (eth:0x5cab7692D4E94096462119ab7bF57319726Eed2A) [tornado-cash/RewardSwap]\n +++ description: Liquidity schedule that pays out TORN rewards for anonymity mining. Only the Miner contract can draw from it or adjust the reward weight.\n```\n\n```diff\n+ Status: CREATED\n contract GovernanceProposalStateUpgrade (eth:0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce) [tornado-cash/GovernanceProposalStateUpgrade]\n +++ description: Upgradeable Tornado Cash governance contract that manages proposals, voting, execution, and treasury-connected governance modules. If you trust this contract, you trust its upgrade path and proposal rules to change protocol governance behavior.\n```\n\n```diff\n+ Status: CREATED\n contract FeeManager (eth:0x5f6c97C6AD7bdd0AE7E0Dd4ca33A4ED3fDabD4D7) [tornado-cash/FeeManager]\n +++ description: Upgradeable fee manager that derives relayer burn fees for each Tornado instance from registry settings and Uniswap TWAP data.\n```\n\n```diff\n+ Status: CREATED\n contract ERC20Tornado (eth:0x610B717796ad172B316836AC95a2ffad065CeaB4) [tornado-cash/ERC20Tornado]\n +++ description: Fixed-denomination ERC20 mixer pool from the newer Tornado Cash pool generation. Funds are governed by the withdrawal verifier and the immutable verifier/hasher pair configured at deployment.\n```\n\n```diff\n+ Status: CREATED\n contract DepositTree (eth:0x6234c4C2734D2B246AE074492F402D8f58ff3226) [N/A]\n +++ description: Unverified merkle tree instance that stores legacy Tornado deposit leaves for TornadoTreesV1.\n```\n\n```diff\n+ Status: CREATED\n contract TreeUpdateVerifier (eth:0x653477c392c16b0765603074f157314Cc4f40c32) [tornado-cash/TreeUpdateVerifier]\n +++ description: Verifier contract for Tornado mining account-tree update proofs.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoProxyV2 (eth:0x722122dF12D4e14e13Ac3b6895a86e84145b6967) [tornado-cash/TornadoProxyV2]\n +++ description: Newer immutable Tornado proxy that routes deposits and withdrawals to supported pool instances and records them in the upgraded Tornado Trees contract.\n```\n\n```diff\n+ Status: CREATED\n contract Miner (eth:0x746Aebc06D2aE31B71ac51429A19D54E797878E9) [tornado-cash/Miner]\n +++ description: Mining and reward-distribution contract for Tornado anonymity mining. It verifies reward and withdrawal proofs, maintains account roots, and routes TORN rewards through the swap contract.\n```\n\n```diff\n+ Status: CREATED\n contract TORN (eth:0x77777FeDdddFfC19Ff86DB637967013e6C6A116C) [tornado-cash/TORN]\n +++ description: TORN governance token contract. Transfers start paused and can later be toggled by governance, which also controls the paused-transfer allowlist and token rescue functions.\n```\n\n```diff\n+ Status: CREATED\n contract MiMCHasher (eth:0x83584f83f26aF4eDDA9CBe8C730bc87C364b28fe) [N/A]\n +++ description: Unverified MiMC hasher used by newer Tornado pool generations for commitment-tree operations.\n```\n\n```diff\n+ Status: CREATED\n contract RewardVerifier (eth:0x88fd245fEdeC4A936e700f9173454D1931B4C307) [tornado-cash/RewardVerifier]\n +++ description: Verifier contract for Tornado anonymity-mining reward proofs.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoProxyV1 (eth:0x905b63Fff465B9fFBF41DeA908CEb12478ec7601) [tornado-cash/TornadoProxyV1]\n +++ description: Legacy immutable Tornado proxy that routes deposits and withdrawals to pool instances and records them in the legacy Tornado Trees contract.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_eth (eth:0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF) [tornado-cash/TornadoCash_eth]\n +++ description: Legacy fixed-denomination ETH mixer from the original Tornado Cash pool generation. It retains an operator role that can replace the withdrawal verifier until renounced.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_eth (eth:0xA160cdAB225685dA1d56aa342Ad8841c3b53f291) [tornado-cash/TornadoCash_eth]\n +++ description: Legacy fixed-denomination ETH mixer from the original Tornado Cash pool generation. It retains an operator role that can replace the withdrawal verifier until renounced.\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafe (eth:0xb04E030140b30C27bcdfaafFFA98C57d80eDa7B4) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract InstanceRegistry (eth:0xB20c66C4DE72433F3cE747b58B86830c459CA911) [tornado-cash/InstanceRegistry]\n +++ description: Upgradeable registry of supported Tornado Cash pool instances and their mutable per-instance fee and routing configuration.\n```\n\n```diff\n+ Status: CREATED\n contract ERC20Tornado (eth:0xbB93e510BbCD0B7beb5A853875f9eC60275CF498) [tornado-cash/ERC20Tornado]\n +++ description: Fixed-denomination ERC20 mixer pool from the newer Tornado Cash pool generation. Funds are governed by the withdrawal verifier and the immutable verifier/hasher pair configured at deployment.\n```\n\n```diff\n+ Status: CREATED\n contract WithdrawalTree (eth:0xbFA347D89Ac54F7C2De2433458cb98A85fc03CEd) [N/A]\n +++ description: Unverified merkle tree instance that stores legacy Tornado withdrawal leaves for TornadoTreesV1.\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (eth:0xce172ce1F20EC0B3728c9965470eaf994A03557A) [tornado-cash/Verifier]\n +++ description: Groth16 verifier contract used by Tornado Cash pool withdrawal proofs.\n```\n\n```diff\n+ Status: CREATED\n contract cTornado (eth:0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af) [tornado-cash/cTornado]\n +++ description: Fixed-denomination cToken-based mixer pool. Anyone can sweep accrued COMP rewards, but the claimed COMP is always sent to the governance address.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_erc20 (eth:0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3) [tornado-cash/TornadoCash_erc20]\n +++ description: Legacy fixed-denomination ERC20 mixer from the original Tornado Cash pool generation. It retains an operator role that can replace the withdrawal verifier until renounced.\n```\n\n```diff\n+ Status: CREATED\n contract PoseidonHasher (eth:0xD82ed8786D7c69DC7e052F7A542AB047971E73d2) [N/A]\n +++ description: Unverified Poseidon hasher used by the legacy Tornado Trees merkle trees.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoRouter (eth:0xd90e2f925DA726b50C4Ed8D0Fb90Ad053324F31b) [tornado-cash/TornadoRouter]\n +++ description: Router contract that validates supported instances, forwards deposits and withdrawals, and burns relayer stake through the relayer registry during withdrawals.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_erc20 (eth:0xd96f2B1c14Db8458374d9Aca76E26c3D18364307) [tornado-cash/TornadoCash_erc20]\n +++ description: Legacy fixed-denomination ERC20 mixer from the original Tornado Cash pool generation. It retains an operator role that can replace the withdrawal verifier until renounced.\n```\n\n```diff\n+ Status: CREATED\n contract BatchTreeUpdateVerifier (eth:0xEd3B00B651c4c7AF77c2fDdce4a388de84b507C6) [tornado-cash/BatchTreeUpdateVerifier]\n +++ description: Verifier contract for batched Tornado Trees root updates.\n```\n\n```diff\n+ Status: CREATED\n contract GasCompensationVault (eth:0xFA4C1f3f7D5dd7c12a9Adb82Cd7dDA542E3d59ef) [tornado-cash/GasCompensationVault]\n +++ description: Vault that escrows ETH for governance gas-compensation payouts and can return unused funds to governance.\n```\n\n```diff\n+ Status: CREATED\n contract TornadoCash_erc20 (eth:0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144) [tornado-cash/TornadoCash_erc20]\n +++ description: Legacy fixed-denomination ERC20 mixer from the original Tornado Cash pool generation. It retains an operator role that can replace the withdrawal verifier until renounced.\n```"
}
]
}
]
+77 -35
+1 -1
{
"badges": [],
"description": "Zama Confidential Tokens is an app that wraps ERC-20 assets into confidential tokens and hides balances and transfer amounts using Zama FHEVM on Ethereum.",
"detailedDescription": "Zama Confidential Tokens is an account-based confidential token system on Ethereum, using the Zama FHE protocol. It is based on [ERC-7984](https://eips.ethereum.org/EIPS/eip-7984). Users deposit regular ERC-20 tokens into asset-specific escrows and receive confidential tokens whose balances and internal transfer amounts are represented as encrypted handles.\n\n'Confidential' here means `from:` and `to:` addresses and transfer timestamps always remain public. Only balances and transfer amounts are hidden. Each confidential token aggregates encrypted balances for a single underlying asset, so the hidden state is the amount and balance data, not the public address graph.\n\n\n\n### Architecture\n\nThe Zama FHE protocol uses fully homomorphic encryption to let smart contracts operate on encrypted values. Balances are stored as encrypted handles instead of plaintext balances, and FHEVM system contracts are called for encrypted arithmetic, comparisons, transfers, minting, or burning, but most of the actual FHE execution happens offchain.\n\nThe FHE coprocessor is an offchain service that performs FHE-related work the EVM cannot execute directly. Encrypted user inputs are accepted onchain only after the InputVerifier checks signatures from the coprocessor signer set (currently 1/1). The coprocessor is constrained on what it can commit onchain by the smart contract, but it is not trustless and can affect validity if compromised.\n\nThe ACL is the onchain access-control registry for encrypted handles. It records which accounts or contracts are allowed to use a ciphertext handle, which prevents arbitrary users from reusing encrypted values they do not control.\n\nThe (T)KMS is the threshold key-management service used for private and public decryptions. It holds the FHE secret key and functions like a multisig; the current Ethereum verifier context (KMS signer set) has a public-decryption threshold of 7/13. KMS signer sets and thresholds are managed onchain in the ProtocolConfig contract, where governance can create and destroy contexts and retune the thresholds of any live context — including the current one — without rotating it. Each context can be different but retains its full permissions until explicitly invalidated onchain. A malicious new Ethereum verifier context, or the threshold of any retained Ethereum verifier context, can attest an inflated amount for an attacker's real unwrap handle and drain pooled backing deposited by other users. The KMS Signers are operated by [Zama, Dfns, Figment, Fireblocks, InfStones, Unit410, LayerZero, Ledger, Omakase, Stake Capital, OpenZeppelin, Etherscan, and Conduit](https://docs.zama.org/protocol/protocol-apps/addresses/mainnet/ethereum#operator-staking).\n\nThe onchain KMS signer addresses are ECDSA credentials used to attest KMS outputs; they are not the FHE key shares. [Zama states](https://docs.zama.org/protocol/protocol/overview/kms) that KMS MPC nodes run inside AWS Nitro Enclaves, and its offchain software maps node signing keys to MPC parties, but the contracts do not verify Nitro attestations or prove that a configured signer runs inside a TEE, holds an FHE key share, or participated in the threshold computation. Changing an onchain KMS context only changes which signatures are accepted; it neither triggers nor verifies redistribution or destruction of FHE key shares.\n\nThere are many moving parts and offchain components in the Zama FHE protocol on which Zama Confidential Tokens is built. The Zama Gateway, an L3 on Arbitrum, is currently used for coordination/aggregation and ciphertext-metadata. FHE key- and CRS-generation is orchestrated onchain on Ethereum through the KMSGeneration contract: governance triggers a generation, and KMS node responses are accepted at a signature threshold configured in ProtocolConfig. Ethereum does not trust the Gateway's state directly and independently verifies operator signatures before accepting inputs or withdrawals, but current relayer and operator workflows depend on Gateway availability to produce those proofs.\n\n### Privacy considerations\n\nDeposits and withdrawals are public privacy boundaries. A `wrap` emits the confidential-token recipient and the rounded clear underlying-token amount. The recipient can be different from the depositor, but that relationship is still visible in the deposit event. Withdrawals then reveal the recipient and amount.\n\nWithin a confidential token, holders can make confidential transfers between transparent EVM addresses. These transfers reveal the parties and encrypted ciphertext handles, but not the clear amount or resulting balances. The confidential balances and transfer amounts of users can be decrypted retroactively if enough KMS key shares are combined.\n\nThe smart contracts do not fully validate FHE offchain work, which makes the KMS and coprocessor each trusted for security, privacy and liveness. Encrypted user inputs are accepted through the InputVerifier, which requires 1/1 coprocessor signatures. Public decryptions are accepted through the KMSVerifier, which requires the threshold of any selected non-invalidated context (signer set), not necessarily the displayed current 7/13 context. Decentralization of the critical offchain services is announced in the docs but not implemented onchain (e.g. coprocessors, fraud proofs, slashing, zk proofs).\n\nPractical privacy also depends on timing, amounts, address reuse, wallet/RPC providers, and any frontend or service used to create encrypted inputs. Users are advised to research [OPSEC best practice](/publications/privacy-best-practices).\n\n### Fees\n\nThere currently is no protocol fee. Users still pay Ethereum gas for each action, including confidential token transfers, and may pay costs charged by external wallets, relayers, or services used to create or submit transactions.\n\n### Compliance\n\nCompliance is enforced in each confidential token contract. The owner can block and unblock local users, and confidential token contracts can be configured to call an underlying-token denylist function (the owner can change or disable this hook at any time). These checks apply to direct deposits, ERC-1363 callback deposits, confidential transfers, unwrap requests, and unwrap finalization.\n\nThe owner can also appoint a pauser for each confidential token that can halt wrapping, unwrapping, unwrap finalization, and confidential transfers; only the owner can unpause. Furthermore, the owner can appoint observer accounts that receive a wildcard, non-expiring user-decryption delegation over all of the token's encrypted handles — effectively a full view key for its balances and transfer amounts, honored by the KMS based on the onchain ACL state. Currently, no pausers or observers are configured on any confidential token.\n\nBecause confidential tokens are backed by underlying tokens held in their contract addresses, issuer or token-admin controls over those underlyings remain a dependency. If an underlying token admin blocks a confidential token address, the escrowed token can become stuck. If a user address is blocked by an underlying token and the confidential token has a transitive denylist hook configured, that address can be prevented from depositing, transferring, or completing withdrawals.\n\n### Anonymity set\n\nZama Confidential Tokens does not use fixed-denomination notes. For a given finalized withdrawal, the set of prior deposits that could have funded the withdrawing account through the public address graph is its effective anonymity set: deposits credited to the same address, or to addresses that visibly transferred confidential tokens to it before the withdrawal. Amounts are private inside the confidential token, so links within the remaining candidate set can remain ambiguous, but deposits and finalized withdrawals expose each boundary amount and endpoint address. Integration with DeFi and its use from inside the confidential token increases the anonymity set.\n\nAs mentioned in 'Privacy Considerations', the mostly centralized offchain services that cannot be circumvented can corrupt practical privacy, independent of the abstract measurable anonymity set.",
"detailedDescription": "Zama Confidential Tokens is an account-based confidential token system on Ethereum, using the Zama FHE protocol. It is based on [ERC-7984](https://eips.ethereum.org/EIPS/eip-7984). Users deposit regular ERC-20 tokens into asset-specific escrows and receive confidential tokens whose balances and internal transfer amounts are represented as encrypted handles.\n\n'Confidential' here means `from:` and `to:` addresses and transfer timestamps always remain public. Only balances and transfer amounts are hidden. Each confidential token aggregates encrypted balances for a single underlying asset, so the hidden state is the amount and balance data, not the public address graph.\n\n\n\n### Architecture\n\nThe Zama FHE protocol uses fully homomorphic encryption to let smart contracts operate on encrypted values. Balances are stored as encrypted handles instead of plaintext balances, and FHEVM system contracts are called for encrypted arithmetic, comparisons, transfers, minting, or burning, but most of the actual FHE execution happens offchain.\n\nThe FHE coprocessor is an offchain service that performs FHE-related work the EVM cannot execute directly. Encrypted user inputs are accepted onchain only after the InputVerifier checks signatures from the coprocessor signer set (currently 1/1). When priority coprocessor mode is on, a single coprocessor submits encrypted data (currently on). The coprocessor is constrained on what it can commit onchain by the smart contract, but it is not trustless and can affect validity if compromised.\n\nThe ACL is the onchain access-control registry for encrypted handles. It records which accounts or contracts are allowed to use a ciphertext handle, which prevents arbitrary users from reusing encrypted values they do not control.\n\nThe (T)KMS is the threshold key-management service used for private and public decryptions. It holds the FHE secret key and functions like a multisig; the current Ethereum verifier context (KMS signer set) has a public-decryption threshold of 7/13. KMS signer sets and thresholds are managed onchain in the ProtocolConfig contract, where governance can create and destroy contexts and retune the thresholds of any live context — including the current one — without rotating it. Each context can be different but retains its full permissions until explicitly invalidated onchain. A malicious new Ethereum verifier context, or the threshold of any retained Ethereum verifier context, can attest an inflated amount for an attacker's real unwrap handle and drain pooled backing deposited by other users. The KMS Signers are operated by [Zama, Dfns, Figment, Fireblocks, InfStones, Unit410, LayerZero, Ledger, Omakase, Stake Capital, OpenZeppelin, Etherscan, and Conduit](https://docs.zama.org/protocol/protocol-apps/addresses/mainnet/ethereum#operator-staking).\n\nThe onchain KMS signer addresses are ECDSA credentials used to attest KMS outputs; they are not the FHE key shares. [Zama states](https://docs.zama.org/protocol/protocol/overview/kms) that KMS MPC nodes run inside AWS Nitro Enclaves, and its offchain software maps node signing keys to MPC parties, but the contracts do not verify Nitro attestations or prove that a configured signer runs inside a TEE, holds an FHE key share, or participated in the threshold computation. Changing an onchain KMS context only changes which signatures are accepted; it neither triggers nor verifies redistribution or destruction of FHE key shares.\n\nThere are many moving parts and offchain components in the Zama FHE protocol on which Zama Confidential Tokens is built. The Zama Gateway, an L3 on Arbitrum, is currently used for coordination/aggregation and ciphertext-metadata. FHE key- and CRS-generation is orchestrated onchain on Ethereum through the KMSGeneration contract: governance triggers a generation, and KMS node responses are accepted at a signature threshold configured in ProtocolConfig. Ethereum does not trust the Gateway's state directly and independently verifies operator signatures before accepting inputs or withdrawals, but current relayer and operator workflows depend on Gateway availability to produce those proofs.\n\n### Privacy considerations\n\nDeposits and withdrawals are public privacy boundaries. A `wrap` emits the confidential-token recipient and the rounded clear underlying-token amount. The recipient can be different from the depositor, but that relationship is still visible in the deposit event. Withdrawals then reveal the recipient and amount.\n\nWithin a confidential token, holders can make confidential transfers between transparent EVM addresses. These transfers reveal the parties and encrypted ciphertext handles, but not the clear amount or resulting balances. The confidential balances and transfer amounts of users can be decrypted retroactively if enough KMS key shares are combined.\n\nThe smart contracts do not fully validate FHE offchain work, which makes the KMS and coprocessor each trusted for security, privacy and liveness. Encrypted user inputs are accepted through the InputVerifier, which requires 1/1 coprocessor signatures. Public decryptions are accepted through the KMSVerifier, which requires the threshold of any selected non-invalidated context (signer set), not necessarily the displayed current 7/13 context. Decentralization of the critical offchain services is announced in the docs but not implemented onchain (e.g. coprocessors, fraud proofs, slashing, zk proofs).\n\nPractical privacy also depends on timing, amounts, address reuse, wallet/RPC providers, and any frontend or service used to create encrypted inputs. Users are advised to research [OPSEC best practice](/publications/privacy-best-practices).\n\n### Fees\n\nThere currently is no protocol fee. Users still pay Ethereum gas for each action, including confidential token transfers, and may pay costs charged by external wallets, relayers, or services used to create or submit transactions.\n\n### Compliance\n\nCompliance is enforced in each confidential token contract. The owner can block and unblock local users, and confidential token contracts can be configured to call an underlying-token denylist function (the owner can change or disable this hook at any time). These checks apply to direct deposits, ERC-1363 callback deposits, confidential transfers, unwrap requests, and unwrap finalization.\n\nThe owner can also appoint a pauser for each confidential token that can halt wrapping, unwrapping, unwrap finalization, and confidential transfers; only the owner can unpause. Furthermore, the owner can appoint observer accounts that receive a wildcard, non-expiring user-decryption delegation over all of the token's encrypted handles — effectively a full view key for its balances and transfer amounts, honored by the KMS based on the onchain ACL state. Currently, no pausers or observers are configured on any confidential token.\n\nBecause confidential tokens are backed by underlying tokens held in their contract addresses, issuer or token-admin controls over those underlyings remain a dependency. If an underlying token admin blocks a confidential token address, the escrowed token can become stuck. If a user address is blocked by an underlying token and the confidential token has a transitive denylist hook configured, that address can be prevented from depositing, transferring, or completing withdrawals.\n\n### Anonymity set\n\nZama Confidential Tokens does not use fixed-denomination notes. For a given finalized withdrawal, the set of prior deposits that could have funded the withdrawing account through the public address graph is its effective anonymity set: deposits credited to the same address, or to addresses that visibly transferred confidential tokens to it before the withdrawal. Amounts are private inside the confidential token, so links within the remaining candidate set can remain ambiguous, but deposits and finalized withdrawals expose each boundary amount and endpoint address. Integration with DeFi and its use from inside the confidential token increases the anonymity set.\n\nAs mentioned in 'Privacy Considerations', the mostly centralized offchain services that cannot be circumvented can corrupt practical privacy, independent of the abstract measurable anonymity set.",
"links": {
"websites": [
"https://www.zama.org"
],
"documentation": [
"https://docs.zama.org/protocol"
],
"repositories": [
"https://github.com/zama-ai"
]
}
}
+9 -9
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "ZamaGovMultisigB",
"name": "ZamaGovMultisigB",
"description": "A Multisig with 3/6 threshold. \nAragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n* Can upgrade **with no delay**\n * ConfidentialSteakUSDTWrapper [via: DAO]\n * ConfidentialArmUSDCpWrapper [via: DAO]\n * HCULimit [via: DAO]\n * ConfidentialRoxUSDCyWrapper [via: DAO]\n * ConfidentialBbqUSDCWrapper [via: DAO]\n * ConfidentialArmUSDTpWrapper [via: DAO]\n * ConfidentialSteakcUSDCWrapper [via: DAO]\n * Staking (Coprocessor) [via: DAO]\n * ConfidentialXAUTWrapper [via: DAO]\n * ConfidentialFAUSDeWrapper [via: DAO]\n * KMSVerifier [via: DAO]\n * ConfidentialArmUSDCsWrapper [via: DAO]\n * ConfidentialBbqUSDTWrapper [via: DAO]\n * ConfidentialZAMAWrapper [via: DAO]\n * ConfidentialBRONWrapper [via: DAO]\n * ConfidentialPENDLEWrapper [via: DAO]\n * ConfidentialPAPYWrapper [via: DAO]\n * ConfidentialFcUSDTWrapper [via: DAO]\n * ConfidentialTGBPWrapper [via: DAO]\n * ConfidentialUSDTWrapper [via: DAO]\n * ConfidentialRoxcUSDCWrapper [via: DAO]\n * DAO [via: DAO]\n * ConfidentialPendleUSDCWrapper [via: DAO]\n * ConfidentialBbqTGBPWrapper [via: DAO]\n * ConfidentialArmUSDTsWrapper [via: DAO]\n * ACL [via: DAO]\n * InputVerifier [via: DAO]\n * ProtocolConfig [via: DAO]\n * FHEVMExecutor [via: DAO]\n * ConfidentialWBTCWrapper [via: DAO]\n * ConfidentialWETHWrapper [via: DAO]\n * ConfidentialUSDCWrapper [via: DAO]\n * Staking (KMS) [via: DAO]\n * ConfidentialAUSDWrapper [via: DAO]\n * ConfidentialTokenWrappersRegistry [via: DAO]\n * KMSGeneration [via: DAO]\n * ConfidentialArmcWBTCWrapper [via: DAO]\n* Can interact with ConfidentialSteakUSDTWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialArmUSDCpWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with HCULimit\n * change the per-block and per-transaction HCU limits and manage callers that bypass the per-block limit [via: DAO]\n* Can interact with ConfidentialRoxUSDCyWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialBbqUSDCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialArmUSDTpWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialSteakcUSDCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with Staking (Coprocessor)\n * grant and revoke manager accounts, transfer or renounce the default admin role, and change the default admin transfer delay [via: DAO]\n * set the reward rate, set the unstake cooldown period, and add or remove reward-eligible staking accounts [via: DAO]\n* Can interact with ConfidentialXAUTWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialFAUSDeWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialArmUSDCsWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialBbqUSDTWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialZAMAWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialBRONWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialPENDLEWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialPAPYWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialFcUSDTWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialTGBPWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialUSDTWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialRoxcUSDCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with DAO\n * change multisig plugin settings [via: DAO - or - acting directly]\n * change multisig plugin target execution configuration [via: DAO - or - acting directly]\n * grant and revoke DAO permissions [via: DAO]\n* Can interact with ConfidentialPendleUSDCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialBbqTGBPWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialArmUSDTsWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with PauserSet\n * add, remove, or swap accounts that can pause the ACL [via: DAO]\n* Can interact with ACL\n * transfer ACL ownership, unpause the ACL, block or unblock accounts, and manage PauserSet membership [via: DAO]\n* Can interact with InputVerifier\n * set the coprocessor signer set and signature threshold used for encrypted input verification [via: DAO]\n* Can interact with ProtocolConfig\n * create KMS contexts with arbitrary node sets and thresholds that immediately become the default verifier authority, destroy non-current contexts, and retune the per-context thresholds (public decryption, user decryption, key generation, MPC) of any live context including the current one. A malicious context or lowered threshold can attest an inflated unwrap amount and drain pooled wrapper backing [via: DAO]\n* Can interact with ConfidentialWBTCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialWETHWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialUSDCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with Staking (KMS)\n * grant and revoke manager accounts, transfer or renounce the default admin role, and change the default admin transfer delay [via: DAO]\n * set the reward rate, set the unstake cooldown period, and add or remove reward-eligible staking accounts [via: DAO]\n* Can interact with ConfidentialAUSDWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialTokenWrappersRegistry\n * manage addresses in the registry [via: DAO]\n* Can interact with KMSGeneration\n * trigger and abort FHE key and CRS generation rounds executed by the KMS nodes [via: DAO]\n* Can interact with ConfidentialArmcWBTCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]",
"accounts": [
{
"address": "eth:0xBc860b6a4C860C5424B84A056E53ACFb2C99a38F",
"type": "Contract",
"isVerified": true,
"name": "0xBc86…a38F",
"url": "https://etherscan.io/address/0xBc860b6a4C860C5424B84A056E53ACFb2C99a38F"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x9b828219ad863491eb9b5225aE2d133eEDEa9B71",
"type": "EOA",
"isVerified": true,
"name": "EOA 60",
"url": "#EOA-57-and-EOA-60"
},
{
"address": "eth:0xf299Cd189498D7d0F0FfACd4DdC94166f614fBBE",
"type": "EOA",
"isVerified": true,
"name": "0xf299…fBBE",
"url": "https://etherscan.io/address/0xf299Cd189498D7d0F0FfACd4DdC94166f614fBBE"
},
{
"address": "eth:0x6dd470B50BbC1Ec03bf2B13B30c7d864F2025874",
"type": "EOA",
"isVerified": true,
"name": "EOA 57",
"url": "#EOA-57-and-EOA-60"
},
{
"address": "eth:0x8edFb885a32C72aF32943D4db13D319181d18CB8",
"type": "EOA",
"isVerified": true,
"name": "EOA 59",
"url": "#EOA-58-and-EOA-59"
},
{
"address": "eth:0x705380c013c13B4ce62338ab1F012036BAC802b3",
"type": "EOA",
"isVerified": true,
"name": "EOA 58",
"url": "#EOA-58-and-EOA-59"
},
{
"address": "eth:0x8aA8D71520d88a1Ed2B4257348134b94e00A9978",
"type": "EOA",
"isVerified": true,
"name": "0x8aA8…9978",
"url": "https://etherscan.io/address/0x8aA8D71520d88a1Ed2B4257348134b94e00A9978"
}
],
"discoveryDrivenData": true
},
{
"id": "ZamaGovMultisigA",
"name": "ZamaGovMultisigA",
"description": "A Multisig with 9/17 threshold. \nAragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n* Can upgrade **with no delay**\n * ConfidentialSteakUSDTWrapper [via: DAO]\n * ConfidentialArmUSDCpWrapper [via: DAO]\n * HCULimit [via: DAO]\n * ConfidentialRoxUSDCyWrapper [via: DAO]\n * ConfidentialBbqUSDCWrapper [via: DAO]\n * ConfidentialArmUSDTpWrapper [via: DAO]\n * ConfidentialSteakcUSDCWrapper [via: DAO]\n * Staking (Coprocessor) [via: DAO]\n * ConfidentialXAUTWrapper [via: DAO]\n * ConfidentialFAUSDeWrapper [via: DAO]\n * KMSVerifier [via: DAO]\n * ConfidentialArmUSDCsWrapper [via: DAO]\n * ConfidentialBbqUSDTWrapper [via: DAO]\n * ConfidentialZAMAWrapper [via: DAO]\n * ConfidentialBRONWrapper [via: DAO]\n * ConfidentialPENDLEWrapper [via: DAO]\n * ConfidentialPAPYWrapper [via: DAO]\n * ConfidentialFcUSDTWrapper [via: DAO]\n * ConfidentialTGBPWrapper [via: DAO]\n * ConfidentialUSDTWrapper [via: DAO]\n * ConfidentialRoxcUSDCWrapper [via: DAO]\n * DAO [via: DAO]\n * ConfidentialPendleUSDCWrapper [via: DAO]\n * ConfidentialBbqTGBPWrapper [via: DAO]\n * ConfidentialArmUSDTsWrapper [via: DAO]\n * ACL [via: DAO]\n * InputVerifier [via: DAO]\n * ProtocolConfig [via: DAO]\n * FHEVMExecutor [via: DAO]\n * ConfidentialWBTCWrapper [via: DAO]\n * ConfidentialWETHWrapper [via: DAO]\n * ConfidentialUSDCWrapper [via: DAO]\n * Staking (KMS) [via: DAO]\n * ConfidentialAUSDWrapper [via: DAO]\n * ConfidentialTokenWrappersRegistry [via: DAO]\n * KMSGeneration [via: DAO]\n * ConfidentialArmcWBTCWrapper [via: DAO]\n* Can interact with ConfidentialSteakUSDTWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialArmUSDCpWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with HCULimit\n * change the per-block and per-transaction HCU limits and manage callers that bypass the per-block limit [via: DAO]\n* Can interact with ConfidentialRoxUSDCyWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialBbqUSDCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialArmUSDTpWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialSteakcUSDCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with Staking (Coprocessor)\n * grant and revoke manager accounts, transfer or renounce the default admin role, and change the default admin transfer delay [via: DAO]\n * set the reward rate, set the unstake cooldown period, and add or remove reward-eligible staking accounts [via: DAO]\n* Can interact with ConfidentialXAUTWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialFAUSDeWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialArmUSDCsWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialBbqUSDTWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialZAMAWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialBRONWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialPENDLEWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialPAPYWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialFcUSDTWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialTGBPWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialUSDTWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialRoxcUSDCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with DAO\n * change multisig plugin settings [via: DAO - or - acting directly]\n * change multisig plugin target execution configuration [via: DAO - or - acting directly]\n * grant and revoke DAO permissions [via: DAO]\n* Can interact with ConfidentialPendleUSDCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialBbqTGBPWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialArmUSDTsWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with PauserSet\n * add, remove, or swap accounts that can pause the ACL [via: DAO]\n* Can interact with ACL\n * transfer ACL ownership, unpause the ACL, block or unblock accounts, and manage PauserSet membership [via: DAO]\n* Can interact with InputVerifier\n * set the coprocessor signer set and signature threshold used for encrypted input verification [via: DAO]\n* Can interact with ProtocolConfig\n * create KMS contexts with arbitrary node sets and thresholds that immediately become the default verifier authority, destroy non-current contexts, and retune the per-context thresholds (public decryption, user decryption, key generation, MPC) of any live context including the current one. A malicious context or lowered threshold can attest an inflated unwrap amount and drain pooled wrapper backing [via: DAO]\n* Can interact with ConfidentialWBTCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialWETHWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialUSDCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with Staking (KMS)\n * grant and revoke manager accounts, transfer or renounce the default admin role, and change the default admin transfer delay [via: DAO]\n * set the reward rate, set the unstake cooldown period, and add or remove reward-eligible staking accounts [via: DAO]\n* Can interact with ConfidentialAUSDWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]\n* Can interact with ConfidentialTokenWrappersRegistry\n * manage addresses in the registry [via: DAO]\n* Can interact with KMSGeneration\n * trigger and abort FHE key and CRS generation rounds executed by the KMS nodes [via: DAO]\n* Can interact with ConfidentialArmcWBTCWrapper\n * block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership [via: DAO]",
"accounts": [
{
"address": "eth:0xE43c73aAb2b6aBBad6d0461997ce1cfea5ABe66f",
"type": "Contract",
"isVerified": true,
"name": "0xE43c…e66f",
"url": "https://etherscan.io/address/0xE43c73aAb2b6aBBad6d0461997ce1cfea5ABe66f"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x31bBD7a242A38372DE92CA304fE29C12C90A382C",
"type": "Contract",
"isVerified": true,
"name": "ZamaGovMemberDAO",
"url": "#ZamaGovMemberDAO"
},
{
"address": "eth:0x644f248299FA8E1DE46C97A72C36F354Ccdb8a1e",
"type": "EOA",
"isVerified": true,
"name": "0x644f…8a1e",
"url": "https://etherscan.io/address/0x644f248299FA8E1DE46C97A72C36F354Ccdb8a1e"
},
{
"address": "eth:0x0321a4Ee7E843A83Fa314f4e76E756864CBdE62e",
"type": "EOA",
"isVerified": true,
"name": "0x0321…E62e",
"url": "https://etherscan.io/address/0x0321a4Ee7E843A83Fa314f4e76E756864CBdE62e"
},
{
"address": "eth:0x0f81fd435d44Cc49f90BB74bF4BdE0e9A0554ae6",
"type": "EOA",
"isVerified": true,
"name": "0x0f81…4ae6",
"url": "https://etherscan.io/address/0x0f81fd435d44Cc49f90BB74bF4BdE0e9A0554ae6"
},
{
"address": "eth:0x931FB6Ec104dDc9bc556983032b5b85b671db000",
"type": "EOA",
"isVerified": true,
"name": "0x931F…b000",
"url": "https://etherscan.io/address/0x931FB6Ec104dDc9bc556983032b5b85b671db000"
},
{
"address": "eth:0xc2e5960EDa1E8D801b19e96D886B946Dfb4bE709",
"type": "EOA",
"isVerified": true,
"name": "0xc2e5…E709",
"url": "https://etherscan.io/address/0xc2e5960EDa1E8D801b19e96D886B946Dfb4bE709"
},
{
"address": "eth:0x8c0E2c46F96756C49DBd6723F4C57a03a254B4B0",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x8c0E2c46F96756C49DBd6723F4C57a03a254B4B0"
},
{
"address": "eth:0x23Cd5e0f3bd1543CBCc5d05bB55e5446be4AD96b",
"type": "EOA",
"isVerified": true,
"name": "0x23Cd…D96b",
"url": "https://etherscan.io/address/0x23Cd5e0f3bd1543CBCc5d05bB55e5446be4AD96b"
},
{
"address": "eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746",
"type": "Contract",
"isVerified": true,
"name": "Conduit Multisig 1",
"url": "https://etherscan.io/address/0x4a4962275DF8C60a80d3a25faEc5AA7De116A746"
},
{
"address": "eth:0x69E55790880d0ABa56E48Ee1f7fc3834b0F5c223",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x69E55790880d0ABa56E48Ee1f7fc3834b0F5c223"
},
{
"address": "eth:0x8edFb885a32C72aF32943D4db13D319181d18CB8",
"type": "EOA",
"isVerified": true,
"name": "EOA 59",
"url": "#EOA-58-and-EOA-59"
},
{
"address": "eth:0x705380c013c13B4ce62338ab1F012036BAC802b3",
"type": "EOA",
"isVerified": true,
"name": "EOA 58",
"url": "#EOA-58-and-EOA-59"
},
{
"address": "eth:0x97E18544e156724E4076945F10c288ecBBC94e54",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x97E18544e156724E4076945F10c288ecBBC94e54"
},
{
"address": "eth:0xE9AAc45091bF5d52AD7BC109497DAA7cD0245BdB",
"type": "EOA",
"isVerified": true,
"name": "0xE9AA…5BdB",
"url": "https://etherscan.io/address/0xE9AAc45091bF5d52AD7BC109497DAA7cD0245BdB"
},
{
"address": "eth:0xD92e1C1Ec65aBe6C6891EcE56a00c6b79A09C8AE",
"type": "EOA",
"isVerified": true,
"name": "0xD92e…C8AE",
"url": "https://etherscan.io/address/0xD92e1C1Ec65aBe6C6891EcE56a00c6b79A09C8AE"
},
{
"address": "eth:0xc49376C4D044011eEce6eE69eFAe06f0Cc2bd008",
"type": "EOA",
"isVerified": true,
"name": "0xc493…d008",
"url": "https://etherscan.io/address/0xc49376C4D044011eEce6eE69eFAe06f0Cc2bd008"
},
{
"address": "eth:0x27B1c34F2aeEc91F9704BD1CE288E5c667F29045",
"type": "EOA",
"isVerified": true,
"name": "0x27B1…9045",
"url": "https://etherscan.io/address/0x27B1c34F2aeEc91F9704BD1CE288E5c667F29045"
}
],
"discoveryDrivenData": true
},
{
"id": "ZamaGovMemberDAO",
"name": "ZamaGovMemberDAO",
"accounts": [
{
"address": "eth:0x31bBD7a242A38372DE92CA304fE29C12C90A382C",
"type": "Contract",
"isVerified": true,
"name": "0x31bB…382C",
"url": "https://etherscan.io/address/0x31bBD7a242A38372DE92CA304fE29C12C90A382C"
}
],
"chain": "ethereum",
"description": "Aragon DAO that stores governance state and executes proposal action batches.\nMember of ZamaGovMultisigA.\n* Can interact with ZamaGovMemberDAO\n * change multisig plugin settings \n * change multisig plugin target execution configuration ",
"discoveryDrivenData": true
},
{
"id": "EOA-30,-EOA-33,-EOA-34,-EOA-35,-EOA-36,-EOA-40,-EOA-41,-EOA-46,-EOA-48,-EOA-49,-EOA-51,-EOA-52-and-EOA-56",
"name": "EOA 30, EOA 33, EOA 34, EOA 35, EOA 36, EOA 40, EOA 41, EOA 46, EOA 48, EOA 49, EOA 51, EOA 52 and EOA 56",
"accounts": [
{
"address": "eth:0x0e25B8DB74c754C8275C0B219ba2A6CD7c59E31D",
"type": "EOA",
"isVerified": true,
"name": "0x0e25…E31D",
"url": "https://etherscan.io/address/0x0e25B8DB74c754C8275C0B219ba2A6CD7c59E31D",
"displayName": "EOA 30"
},
{
"address": "eth:0x43e4c21cf9d24Dc5b4e00031349EC213A2ba8340",
"type": "EOA",
"isVerified": true,
"name": "0x43e4…8340",
"url": "https://etherscan.io/address/0x43e4c21cf9d24Dc5b4e00031349EC213A2ba8340",
"displayName": "EOA 33"
},
{
"address": "eth:0x487e41623b7FeB464ff79F7326DCa791c9a1c5EC",
"type": "EOA",
"isVerified": true,
"name": "0x487e…c5EC",
"url": "https://etherscan.io/address/0x487e41623b7FeB464ff79F7326DCa791c9a1c5EC",
"displayName": "EOA 34"
},
{
"address": "eth:0x4eC7200E392B97913cbD6d8160B011406EB019F1",
"type": "EOA",
"isVerified": true,
"name": "0x4eC7…19F1",
"url": "https://etherscan.io/address/0x4eC7200E392B97913cbD6d8160B011406EB019F1",
"displayName": "EOA 35"
},
{
"address": "eth:0x577Fd21e4BC7D644A4177C4B89146e1Ab394De04",
"type": "EOA",
"isVerified": true,
"name": "0x577F…De04",
"url": "https://etherscan.io/address/0x577Fd21e4BC7D644A4177C4B89146e1Ab394De04",
"displayName": "EOA 36"
},
{
"address": "eth:0x711EBE8aA590f9C9904ff279239E89dB2eFbC890",
"type": "EOA",
"isVerified": true,
"name": "0x711E…C890",
"url": "https://etherscan.io/address/0x711EBE8aA590f9C9904ff279239E89dB2eFbC890",
"displayName": "EOA 40"
},
{
"address": "eth:0x74a1E2e87a4026b7B8b5252c747E514159515e9a",
"type": "EOA",
"isVerified": true,
"name": "0x74a1…5e9a",
"url": "https://etherscan.io/address/0x74a1E2e87a4026b7B8b5252c747E514159515e9a",
"displayName": "EOA 41"
},
{
"address": "eth:0xB4CE988D382425F64c99A352375F72A5f1cf6FFB",
"type": "EOA",
"isVerified": true,
"name": "0xB4CE…6FFB",
"url": "https://etherscan.io/address/0xB4CE988D382425F64c99A352375F72A5f1cf6FFB",
"displayName": "EOA 46"
},
{
"address": "eth:0xbaac6F9DD84bFB303F05B4DE45A88Eec86855BD0",
"type": "EOA",
"isVerified": true,
"name": "0xbaac…5BD0",
"url": "https://etherscan.io/address/0xbaac6F9DD84bFB303F05B4DE45A88Eec86855BD0",
"displayName": "EOA 48"
},
{
"address": "eth:0xbcF4943A856497FB2345409D35f4d1eae9A0363E",
"type": "EOA",
"isVerified": true,
"name": "0xbcF4…363E",
"url": "https://etherscan.io/address/0xbcF4943A856497FB2345409D35f4d1eae9A0363E",
"displayName": "EOA 49"
},
{
"address": "eth:0xC105B5933446658D226582f7A112F49a70b54364",
"type": "EOA",
"isVerified": true,
"name": "0xC105…4364",
"url": "https://etherscan.io/address/0xC105B5933446658D226582f7A112F49a70b54364",
"displayName": "EOA 51"
},
{
"address": "eth:0xD227C4B573800EdA3bAdA6DAC872E9134E012e6D",
"type": "EOA",
"isVerified": true,
"name": "0xD227…2e6D",
"url": "https://etherscan.io/address/0xD227C4B573800EdA3bAdA6DAC872E9134E012e6D",
"displayName": "EOA 52"
},
{
"address": "eth:0xEd1D622bd59d657580aBAc65312b40B4B2dA6236",
"type": "EOA",
"isVerified": true,
"name": "0xEd1D…6236",
"url": "https://etherscan.io/address/0xEd1D622bd59d657580aBAc65312b40B4B2dA6236",
"displayName": "EOA 56"
}
],
"chain": "ethereum",
"description": "* Can interact with ProtocolConfig\n * submit KMS key- and CRS-generation responses to KMSGeneration ",
"discoveryDrivenData": true
},
{
"id": "EOA-31",
"name": "EOA 31",
"accounts": [
{
"address": "eth:0x373E36A8684A3344E177C5894179845Cbe57AE44",
"type": "EOA",
"isVerified": true,
"name": "0x373E…AE44",
"url": "https://etherscan.io/address/0x373E36A8684A3344E177C5894179845Cbe57AE44",
"displayName": "EOA 31"
}
],
"chain": "ethereum",
"description": "* Can interact with InputVerifier\n * sign encrypted input verification bundles accepted by the InputVerifier ",
"discoveryDrivenData": true
},
{
"id": "EOA-32,-EOA-37,-EOA-38,-EOA-39,-EOA-42,-EOA-43,-EOA-44,-EOA-45,-EOA-47,-EOA-50,-EOA-53,-EOA-54-and-EOA-55",
"name": "EOA 32, EOA 37, EOA 38, EOA 39, EOA 42, EOA 43, EOA 44, EOA 45, EOA 47, EOA 50, EOA 53, EOA 54 and EOA 55",
"accounts": [
{
"address": "eth:0x41b19EB4585450db79ac03ba9503106EC7895905",
"type": "EOA",
"isVerified": true,
"name": "0x41b1…5905",
"url": "https://etherscan.io/address/0x41b19EB4585450db79ac03ba9503106EC7895905",
"displayName": "EOA 32"
},
{
"address": "eth:0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8",
"type": "EOA",
"isVerified": true,
"name": "0x5d0e…f7C8",
"url": "https://etherscan.io/address/0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8",
"displayName": "EOA 37"
},
{
"address": "eth:0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385",
"type": "EOA",
"isVerified": true,
"name": "0x6016…E385",
"url": "https://etherscan.io/address/0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385",
"displayName": "EOA 38"
},
{
"address": "eth:0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921",
"type": "EOA",
"isVerified": true,
"name": "0x6e5f…4921",
"url": "https://etherscan.io/address/0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921",
"displayName": "EOA 39"
},
{
"address": "eth:0x7C17BE232e5968BDa9516478B798b9E90D013fCC",
"type": "EOA",
"isVerified": true,
"name": "0x7C17…3fCC",
"url": "https://etherscan.io/address/0x7C17BE232e5968BDa9516478B798b9E90D013fCC",
"displayName": "EOA 42"
},
{
"address": "eth:0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58",
"type": "EOA",
"isVerified": true,
"name": "0x7C5E…4F58",
"url": "https://etherscan.io/address/0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58",
"displayName": "EOA 43"
},
{
"address": "eth:0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f",
"type": "EOA",
"isVerified": true,
"name": "0x9150…350f",
"url": "https://etherscan.io/address/0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f",
"displayName": "EOA 44"
},
{
"address": "eth:0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D",
"type": "EOA",
"isVerified": true,
"name": "0x9661…dB8D",
"url": "https://etherscan.io/address/0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D",
"displayName": "EOA 45"
},
{
"address": "eth:0xB7978e602D2AF68258dA614AF949E014BF0DE0eb",
"type": "EOA",
"isVerified": true,
"name": "0xB797…E0eb",
"url": "https://etherscan.io/address/0xB7978e602D2AF68258dA614AF949E014BF0DE0eb",
"displayName": "EOA 47"
},
{
"address": "eth:0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3",
"type": "EOA",
"isVerified": true,
"name": "0xbf05…79C3",
"url": "https://etherscan.io/address/0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3",
"displayName": "EOA 50"
},
{
"address": "eth:0xdC472efa1642D5afB684aAaa546E22FB24AAB965",
"type": "EOA",
"isVerified": true,
"name": "0xdC47…B965",
"url": "https://etherscan.io/address/0xdC472efa1642D5afB684aAaa546E22FB24AAB965",
"displayName": "EOA 53"
},
{
"address": "eth:0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f",
"type": "EOA",
"isVerified": true,
"name": "0xDFc9…194f",
"url": "https://etherscan.io/address/0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f",
"displayName": "EOA 54"
},
{
"address": "eth:0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f",
"type": "EOA",
"isVerified": true,
"name": "0xe9f7…ed6f",
"url": "https://etherscan.io/address/0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f",
"displayName": "EOA 55"
}
],
"chain": "ethereum",
"description": "* Can interact with ProtocolConfig\n * sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration ",
"discoveryDrivenData": true
},
{
"id": "EOA-57-and-EOA-60",
"name": "EOA 57 and EOA 60",
"accounts": [
{
"address": "eth:0x6dd470B50BbC1Ec03bf2B13B30c7d864F2025874",
"type": "EOA",
"isVerified": true,
"name": "0x6dd4…5874",
"url": "https://etherscan.io/address/0x6dd470B50BbC1Ec03bf2B13B30c7d864F2025874",
"displayName": "EOA 57"
},
{
"address": "eth:0x9b828219ad863491eb9b5225aE2d133eEDEa9B71",
"type": "EOA",
"isVerified": true,
"name": "0x9b82…9B71",
"url": "https://etherscan.io/address/0x9b828219ad863491eb9b5225aE2d133eEDEa9B71",
"displayName": "EOA 60"
}
],
"chain": "ethereum",
"description": "Member of ZamaGovMultisigB.\n* Can interact with PauserSet\n * pause the ACL ",
"discoveryDrivenData": true
},
{
"id": "EOA-58-and-EOA-59",
"name": "EOA 58 and EOA 59",
"accounts": [
{
"address": "eth:0x705380c013c13B4ce62338ab1F012036BAC802b3",
"type": "EOA",
"isVerified": true,
"name": "0x7053…02b3",
"url": "https://etherscan.io/address/0x705380c013c13B4ce62338ab1F012036BAC802b3",
"displayName": "EOA 58"
},
{
"address": "eth:0x8edFb885a32C72aF32943D4db13D319181d18CB8",
"type": "EOA",
"isVerified": true,
"name": "0x8edF…8CB8",
"url": "https://etherscan.io/address/0x8edFb885a32C72aF32943D4db13D319181d18CB8",
"displayName": "EOA 59"
}
],
"chain": "ethereum",
"description": "Member of ZamaGovMultisigB, ZamaGovMultisigA.\n* Can interact with PauserSet\n * pause the ACL ",
"discoveryDrivenData": true
}
]
},
"zama": {
"roles": [],
"actors": [
{
"id": "SafeL2",
"name": "SafeL2",
"description": "A Multisig with 3/5 threshold. \nGateway owner Safe. Its LayerZero governance module is outside the Zama Gateway protocol surface covered here.\n* Can upgrade **with no delay**\n * MultichainACL \n * Decryption \n * KMSGeneration \n * ProtocolPayment \n * InputVerification \n * CiphertextCommits \n * GatewayConfig \n* Can interact with Decryption\n * unpause Decryption \n* Can interact with GatewayPauserSet\n * add, remove, or swap gateway pausers \n* Can interact with ProtocolPayment\n * set gateway fee prices for input verification, public decryption, and user decryption \n* Can interact with InputVerification\n * unpause InputVerification \n* Can interact with GatewayConfig\n * create KMS contexts that immediately become current, destroy historical KMS contexts, update thresholds of any live context, manage coprocessors, custodians and host chains, transfer ownership, and unpause gateway workflow contracts ",
"description": "A Multisig with 3/5 threshold. \nGateway owner Safe. Its LayerZero governance module is outside the Zama Gateway protocol surface covered here.\n* Can upgrade **with no delay**\n * MultichainACL \n * Decryption \n * KMSGeneration \n * ProtocolPayment \n * InputVerification \n * CiphertextCommits \n * GatewayConfig \n* Can interact with Decryption\n * unpause Decryption \n* Can interact with GatewayPauserSet\n * add, remove, or swap gateway pausers \n* Can interact with ProtocolPayment\n * set gateway fee prices for input verification, public decryption, and user decryption \n* Can interact with InputVerification\n * unpause InputVerification \n* Can interact with GatewayConfig\n * create KMS contexts that immediately become current, destroy historical KMS contexts, update thresholds of any live context, manage coprocessors, custodians and host chains, set or remove the priority coprocessor that alone finalizes coprocessor consensus, transfer ownership, and unpause gateway workflow contracts ",
"accounts": [
{
"address": "zama:0x5f0F86BcEad6976711C9B131bCa5D30E767fe2bE",
"type": "Contract",
"isVerified": true,
"name": "0x5f0F…e2bE",
"url": "https://explorer.mainnet.zama.org/address/0x5f0F86BcEad6976711C9B131bCa5D30E767fe2bE"
}
],
"chain": "zama",
"references": [],
"participants": [
{
"address": "zama:0x9b828219ad863491eb9b5225aE2d133eEDEa9B71",
"type": "EOA",
"isVerified": true,
"name": "EOA 64",
"url": "#EOA-61,-EOA-62,-EOA-63-and-EOA-64"
},
{
"address": "zama:0xf299Cd189498D7d0F0FfACd4DdC94166f614fBBE",
"type": "EOA",
"isVerified": true,
"name": "0xf299…fBBE",
"url": "https://explorer.mainnet.zama.org/address/0xf299Cd189498D7d0F0FfACd4DdC94166f614fBBE"
},
{
"address": "zama:0x6dd470B50BbC1Ec03bf2B13B30c7d864F2025874",
"type": "EOA",
"isVerified": true,
"name": "EOA 61",
"url": "#EOA-61,-EOA-62,-EOA-63-and-EOA-64"
},
{
"address": "zama:0x8edFb885a32C72aF32943D4db13D319181d18CB8",
"type": "EOA",
"isVerified": true,
"name": "EOA 63",
"url": "#EOA-61,-EOA-62,-EOA-63-and-EOA-64"
},
{
"address": "zama:0x705380c013c13B4ce62338ab1F012036BAC802b3",
"type": "EOA",
"isVerified": true,
"name": "EOA 62",
"url": "#EOA-61,-EOA-62,-EOA-63-and-EOA-64"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "zama:0x0000000000000000000000000000000000000000",
"address": "zama:0x373E36A8684A3344E177C5894179845Cbe57AE44",
"type": "EOA",
"isVerified": true,
"name": "0x0000…0000",
"url": "https://explorer.mainnet.zama.org/address/0x0000000000000000000000000000000000000000",
"name": "0x373E…AE44",
"url": "https://explorer.mainnet.zama.org/address/0x373E36A8684A3344E177C5894179845Cbe57AE44",
"displayName": "EOA 1"
}
],
"chain": "zama",
"description": "* Can upgrade **with no delay**\n * MultichainACL \n * Decryption \n * KMSGeneration \n * ProtocolPayment \n * InputVerification \n * CiphertextCommits \n* Can interact with GatewayConfig\n * accept GatewayConfig ownership ",
"description": "* Can interact with MultichainACL\n * submit public-decryption allowances, account handle allowances, and user-decryption delegation or revocation messages to MultichainACL \n* Can interact with InputVerification\n * finalize encrypted input proof verification or rejection in InputVerification alone while priority mode is active \n * sign encrypted input proof verification responses accepted by InputVerification \n * submit coprocessor proof verification and rejection responses to InputVerification \n* Can interact with CiphertextCommits\n * commit ciphertext and SNS ciphertext digests to CiphertextCommits alone while priority mode is active \n * submit ciphertext and SNS ciphertext digests to CiphertextCommits \n* Can interact with GatewayConfig\n * finalize coprocessor consensus alone for encrypted input proofs and ciphertext material commitments while priority mode is active \n * sign encrypted input proof verification responses accepted by the gateway \n * submit coprocessor responses, ACL mirror updates, and ciphertext material commitments to gateway contracts ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "zama:0x373E36A8684A3344E177C5894179845Cbe57AE44",
"address": "zama:0x0000000000000000000000000000000000000000",
"type": "EOA",
"isVerified": true,
"name": "0x373E…AE44",
"url": "https://explorer.mainnet.zama.org/address/0x373E36A8684A3344E177C5894179845Cbe57AE44",
"name": "0x0000…0000",
"url": "https://explorer.mainnet.zama.org/address/0x0000000000000000000000000000000000000000",
"displayName": "EOA 2"
}
],
"chain": "zama",
"description": "* Can interact with MultichainACL\n * submit public-decryption allowances, account handle allowances, and user-decryption delegation or revocation messages to MultichainACL \n* Can interact with InputVerification\n * sign encrypted input proof verification responses accepted by InputVerification \n * submit coprocessor proof verification and rejection responses to InputVerification \n* Can interact with CiphertextCommits\n * submit ciphertext and SNS ciphertext digests to CiphertextCommits \n* Can interact with GatewayConfig\n * sign encrypted input proof verification responses accepted by the gateway \n * submit coprocessor responses, ACL mirror updates, and ciphertext material commitments to gateway contracts ",
"description": "* Can upgrade **with no delay**\n * MultichainACL \n * Decryption \n * KMSGeneration \n * ProtocolPayment \n * InputVerification \n * CiphertextCommits \n* Can interact with GatewayConfig\n * accept GatewayConfig ownership ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "zama:0x0000000000000000000000000000000000000001",
"type": "EOA",
"isVerified": true,
"name": "0x0000…0001",
"url": "https://explorer.mainnet.zama.org/address/0x0000000000000000000000000000000000000001",
"displayName": "EOA 3"
}
],
"chain": "zama",
"description": "* Can interact with GatewayConfig\n * participate in gateway key custody workflows \n * sign gateway key custody material ",
"discoveryDrivenData": true
},
{
"id": "EOA-4,-EOA-6,-EOA-7,-EOA-8,-EOA-9,-EOA-13,-EOA-14,-EOA-19,-EOA-21,-EOA-22,-EOA-24,-EOA-25-and-EOA-29",
"name": "EOA 4, EOA 6, EOA 7, EOA 8, EOA 9, EOA 13, EOA 14, EOA 19, EOA 21, EOA 22, EOA 24, EOA 25 and EOA 29",
"accounts": [
{
"address": "zama:0x0e25B8DB74c754C8275C0B219ba2A6CD7c59E31D",
"type": "EOA",
"isVerified": true,
"name": "0x0e25…E31D",
"url": "https://explorer.mainnet.zama.org/address/0x0e25B8DB74c754C8275C0B219ba2A6CD7c59E31D",
"displayName": "EOA 4"
},
{
"address": "zama:0x43e4c21cf9d24Dc5b4e00031349EC213A2ba8340",
"type": "EOA",
"isVerified": true,
"name": "0x43e4…8340",
"url": "https://explorer.mainnet.zama.org/address/0x43e4c21cf9d24Dc5b4e00031349EC213A2ba8340",
"displayName": "EOA 6"
},
{
"address": "zama:0x487e41623b7FeB464ff79F7326DCa791c9a1c5EC",
"type": "EOA",
"isVerified": true,
"name": "0x487e…c5EC",
"url": "https://explorer.mainnet.zama.org/address/0x487e41623b7FeB464ff79F7326DCa791c9a1c5EC",
"displayName": "EOA 7"
},
{
"address": "zama:0x4eC7200E392B97913cbD6d8160B011406EB019F1",
"type": "EOA",
"isVerified": true,
"name": "0x4eC7…19F1",
"url": "https://explorer.mainnet.zama.org/address/0x4eC7200E392B97913cbD6d8160B011406EB019F1",
"displayName": "EOA 8"
},
{
"address": "zama:0x577Fd21e4BC7D644A4177C4B89146e1Ab394De04",
"type": "EOA",
"isVerified": true,
"name": "0x577F…De04",
"url": "https://explorer.mainnet.zama.org/address/0x577Fd21e4BC7D644A4177C4B89146e1Ab394De04",
"displayName": "EOA 9"
},
{
"address": "zama:0x711EBE8aA590f9C9904ff279239E89dB2eFbC890",
"type": "EOA",
"isVerified": true,
"name": "0x711E…C890",
"url": "https://explorer.mainnet.zama.org/address/0x711EBE8aA590f9C9904ff279239E89dB2eFbC890",
"displayName": "EOA 13"
},
{
"address": "zama:0x74a1E2e87a4026b7B8b5252c747E514159515e9a",
"type": "EOA",
"isVerified": true,
"name": "0x74a1…5e9a",
"url": "https://explorer.mainnet.zama.org/address/0x74a1E2e87a4026b7B8b5252c747E514159515e9a",
"displayName": "EOA 14"
},
{
"address": "zama:0xB4CE988D382425F64c99A352375F72A5f1cf6FFB",
"type": "EOA",
"isVerified": true,
"name": "0xB4CE…6FFB",
"url": "https://explorer.mainnet.zama.org/address/0xB4CE988D382425F64c99A352375F72A5f1cf6FFB",
"displayName": "EOA 19"
},
{
"address": "zama:0xbaac6F9DD84bFB303F05B4DE45A88Eec86855BD0",
"type": "EOA",
"isVerified": true,
"name": "0xbaac…5BD0",
"url": "https://explorer.mainnet.zama.org/address/0xbaac6F9DD84bFB303F05B4DE45A88Eec86855BD0",
"displayName": "EOA 21"
},
{
"address": "zama:0xbcF4943A856497FB2345409D35f4d1eae9A0363E",
"type": "EOA",
"isVerified": true,
"name": "0xbcF4…363E",
"url": "https://explorer.mainnet.zama.org/address/0xbcF4943A856497FB2345409D35f4d1eae9A0363E",
"displayName": "EOA 22"
},
{
"address": "zama:0xC105B5933446658D226582f7A112F49a70b54364",
"type": "EOA",
"isVerified": true,
"name": "0xC105…4364",
"url": "https://explorer.mainnet.zama.org/address/0xC105B5933446658D226582f7A112F49a70b54364",
"displayName": "EOA 24"
},
{
"address": "zama:0xD227C4B573800EdA3bAdA6DAC872E9134E012e6D",
"type": "EOA",
"isVerified": true,
"name": "0xD227…2e6D",
"url": "https://explorer.mainnet.zama.org/address/0xD227C4B573800EdA3bAdA6DAC872E9134E012e6D",
"displayName": "EOA 25"
},
{
"address": "zama:0xEd1D622bd59d657580aBAc65312b40B4B2dA6236",
"type": "EOA",
"isVerified": true,
"name": "0xEd1D…6236",
"url": "https://explorer.mainnet.zama.org/address/0xEd1D622bd59d657580aBAc65312b40B4B2dA6236",
"displayName": "EOA 29"
}
],
"chain": "zama",
"description": "* Can interact with Decryption\n * submit KMS decryption responses to Decryption \n* Can interact with GatewayConfig\n * submit KMS decryption responses to gateway contracts ",
"discoveryDrivenData": true
},
{
"id": "EOA-5,-EOA-10,-EOA-11,-EOA-12,-EOA-15,-EOA-16,-EOA-17,-EOA-18,-EOA-20,-EOA-23,-EOA-26,-EOA-27-and-EOA-28",
"name": "EOA 5, EOA 10, EOA 11, EOA 12, EOA 15, EOA 16, EOA 17, EOA 18, EOA 20, EOA 23, EOA 26, EOA 27 and EOA 28",
"accounts": [
{
"address": "zama:0x41b19EB4585450db79ac03ba9503106EC7895905",
"type": "EOA",
"isVerified": true,
"name": "0x41b1…5905",
"url": "https://explorer.mainnet.zama.org/address/0x41b19EB4585450db79ac03ba9503106EC7895905",
"displayName": "EOA 5"
},
{
"address": "zama:0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8",
"type": "EOA",
"isVerified": true,
"name": "0x5d0e…f7C8",
"url": "https://explorer.mainnet.zama.org/address/0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8",
"displayName": "EOA 10"
},
{
"address": "zama:0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385",
"type": "EOA",
"isVerified": true,
"name": "0x6016…E385",
"url": "https://explorer.mainnet.zama.org/address/0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385",
"displayName": "EOA 11"
},
{
"address": "zama:0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921",
"type": "EOA",
"isVerified": true,
"name": "0x6e5f…4921",
"url": "https://explorer.mainnet.zama.org/address/0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921",
"displayName": "EOA 12"
},
{
"address": "zama:0x7C17BE232e5968BDa9516478B798b9E90D013fCC",
"type": "EOA",
"isVerified": true,
"name": "0x7C17…3fCC",
"url": "https://explorer.mainnet.zama.org/address/0x7C17BE232e5968BDa9516478B798b9E90D013fCC",
"displayName": "EOA 15"
},
{
"address": "zama:0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58",
"type": "EOA",
"isVerified": true,
"name": "0x7C5E…4F58",
"url": "https://explorer.mainnet.zama.org/address/0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58",
"displayName": "EOA 16"
},
{
"address": "zama:0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f",
"type": "EOA",
"isVerified": true,
"name": "0x9150…350f",
"url": "https://explorer.mainnet.zama.org/address/0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f",
"displayName": "EOA 17"
},
{
"address": "zama:0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D",
"type": "EOA",
"isVerified": true,
"name": "0x9661…dB8D",
"url": "https://explorer.mainnet.zama.org/address/0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D",
"displayName": "EOA 18"
},
{
"address": "zama:0xB7978e602D2AF68258dA614AF949E014BF0DE0eb",
"type": "EOA",
"isVerified": true,
"name": "0xB797…E0eb",
"url": "https://explorer.mainnet.zama.org/address/0xB7978e602D2AF68258dA614AF949E014BF0DE0eb",
"displayName": "EOA 20"
},
{
"address": "zama:0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3",
"type": "EOA",
"isVerified": true,
"name": "0xbf05…79C3",
"url": "https://explorer.mainnet.zama.org/address/0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3",
"displayName": "EOA 23"
},
{
"address": "zama:0xdC472efa1642D5afB684aAaa546E22FB24AAB965",
"type": "EOA",
"isVerified": true,
"name": "0xdC47…B965",
"url": "https://explorer.mainnet.zama.org/address/0xdC472efa1642D5afB684aAaa546E22FB24AAB965",
"displayName": "EOA 26"
},
{
"address": "zama:0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f",
"type": "EOA",
"isVerified": true,
"name": "0xDFc9…194f",
"url": "https://explorer.mainnet.zama.org/address/0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f",
"displayName": "EOA 27"
},
{
"address": "zama:0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f",
"type": "EOA",
"isVerified": true,
"name": "0xe9f7…ed6f",
"url": "https://explorer.mainnet.zama.org/address/0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f",
"displayName": "EOA 28"
}
],
"chain": "zama",
"description": "* Can interact with Decryption\n * sign public decryption results and user decryption shares accepted by Decryption \n* Can interact with GatewayConfig\n * sign KMS decryption material accepted by gateway contracts ",
"discoveryDrivenData": true
},
{
"id": "EOA-61,-EOA-62,-EOA-63-and-EOA-64",
"name": "EOA 61, EOA 62, EOA 63 and EOA 64",
"accounts": [
{
"address": "zama:0x6dd470B50BbC1Ec03bf2B13B30c7d864F2025874",
"type": "EOA",
"isVerified": true,
"name": "0x6dd4…5874",
"url": "https://explorer.mainnet.zama.org/address/0x6dd470B50BbC1Ec03bf2B13B30c7d864F2025874",
"displayName": "EOA 61"
},
{
"address": "zama:0x705380c013c13B4ce62338ab1F012036BAC802b3",
"type": "EOA",
"isVerified": true,
"name": "0x7053…02b3",
"url": "https://explorer.mainnet.zama.org/address/0x705380c013c13B4ce62338ab1F012036BAC802b3",
"displayName": "EOA 62"
},
{
"address": "zama:0x8edFb885a32C72aF32943D4db13D319181d18CB8",
"type": "EOA",
"isVerified": true,
"name": "0x8edF…8CB8",
"url": "https://explorer.mainnet.zama.org/address/0x8edFb885a32C72aF32943D4db13D319181d18CB8",
"displayName": "EOA 63"
},
{
"address": "zama:0x9b828219ad863491eb9b5225aE2d133eEDEa9B71",
"type": "EOA",
"isVerified": true,
"name": "0x9b82…9B71",
"url": "https://explorer.mainnet.zama.org/address/0x9b828219ad863491eb9b5225aE2d133eEDEa9B71",
"displayName": "EOA 64"
}
],
"chain": "zama",
"description": "Member of SafeL2.\n* Can interact with GatewayPauserSet\n * pause GatewayConfig and pausable gateway workflow contracts ",
"discoveryDrivenData": true
}
]
}
}
+52 -24
{
"addresses": {
"ethereum": [
{
"name": "ConfidentialSteakUSDTWrapper",
"isVerified": true,
"address": "eth:0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789152239,
"transactionHash": "0xe9f33dc7a110fea67894ef7f3ef9254918eaabeb7ad01facde7cefb240395b4d",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73#code"
},
{
"name": "ConfidentialArmUSDCpWrapper",
"isVerified": true,
"address": "eth:0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789150751,
"transactionHash": "0xd55cc3a9346ae5156efdfbbb3d628e8d93de08f419e3f0ec55ae90bde92e28c0",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c#code"
},
{
"name": "HCULimit",
"isVerified": true,
"address": "eth:0x3b4da65e45Fda2CAa0285A735ab4361a44F171E2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x69A91389006443448d8E90Fd84B6bDF5ae253837"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1763549531,
"transactionHash": "0xfd792abe94dd6c945b787284045ee8a66684985e48834872cc4452705e8ab27d",
"implementations": [
"eth:0xC94790325C61A7D98e90d835ea89777d64b17492"
]
},
{
"timestamp": 1763549663,
"transactionHash": "0xb5ab1dbab2a11947fad8475b643fb3ecf7710a1d09bf250038635a0198c7fc0d",
"implementations": [
"eth:0x4E4329F10f7EE88a5dDB13716B8bE00c077CBeb6"
]
},
{
"timestamp": 1783672451,
"transactionHash": "0xec2212fb2d35b72388507e5fe9c218c97512b943b5f28cedbfba35b7ac9bd224",
"implementations": [
"eth:0x0F2B7e8F19ADc874F21e27ADAA4B22FC00a0B442"
]
},
{
"timestamp": 1786362647,
"transactionHash": "0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78",
"implementations": [
"eth:0x69A91389006443448d8E90Fd84B6bDF5ae253837"
]
}
],
"description": "Tracks and enforces per-transaction and per-block homomorphic computation unit limits for FHEVM operation requests. v0.3.0 adds pricing for the fheSum and fheIsIn operations.\n* Roles:\n * **lOwner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3b4da65e45Fda2CAa0285A735ab4361a44F171E2#code"
},
{
"name": "ConfidentialRoxUSDCyWrapper",
"isVerified": true,
"address": "eth:0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789154375,
"transactionHash": "0x7a7eadb1e667732e52a0064b3a1f253a562fb35d34d1bc96663bbdf0f95a8f1a",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f#code"
},
{
"name": "ConfidentialBbqUSDCWrapper",
"isVerified": true,
"address": "eth:0x501b014f86a73A7199E00cB31C0e9565Ac51e51B",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789153067,
"transactionHash": "0x889469791190aaf6a60a02c423bd1080bf1dd4bfb768f778521e3ca927690d59",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x501b014f86a73A7199E00cB31C0e9565Ac51e51B#code"
},
{
"name": "ConfidentialArmUSDTpWrapper",
"isVerified": true,
"address": "eth:0x63a60aCC304b84eF829b263f28e7b636Bf77d45A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789153331,
"transactionHash": "0x46e9abc4237bb9560dc0595f6f18dd84cc984a09adfac882e44c84b37fcb23f0",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x63a60aCC304b84eF829b263f28e7b636Bf77d45A#code"
},
{
"name": "ConfidentialSteakcUSDCWrapper",
"isVerified": true,
"address": "eth:0x66Bf74E96900D1a19c7070D939D124f2F565C458",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1781877707,
"transactionHash": "0x295406f3a8a3481eb9e33e25b9b9967a9b833244b76e39e91fe05424b7f14beb",
"implementations": [
"eth:0xAea1d2cc69aF93CA0fdd34426E74Ad7cB19E9745"
]
},
{
"timestamp": 1782125723,
"transactionHash": "0x78c56acfe7e477612beb8536dc51fe47a0531b0e71ca194fe1b449bfd4f110c2",
"implementations": [
"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5"
]
},
{
"timestamp": 1787673575,
"transactionHash": "0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0",
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x66Bf74E96900D1a19c7070D939D124f2F565C458#code"
},
{
"name": "ConfidentialXAUTWrapper",
"isVerified": true,
"address": "eth:0x73cc9aF9d6BEFdb3c3fAf8a5E8c05Cb95FdaEEf1",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1772116091,
"transactionHash": "0x6824019fdc0404c3517600959f4e8dec43ae218dac150e63db45f2cb4b22360a",
"implementations": [
"eth:0x9CFdA0290EdeF98D0539e5747bea9Bd889a08BaB"
]
},
{
"timestamp": 1778571743,
"transactionHash": "0x5a09940b75c7fb272ce47bef53ac0282740b3278b3c0ce520240f10c90018f32",
"implementations": [
"eth:0xFF9e1Db30031Cb2B1b82E138beC70d7DE70d8413"
]
},
{
"timestamp": 1780321931,
"transactionHash": "0x468f9a1433f795da68b88d6adb33f7180e86937d3f3437ec001173c52e7f35f4",
"implementations": [
"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5"
]
},
{
"timestamp": 1787673575,
"transactionHash": "0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0",
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x73cc9aF9d6BEFdb3c3fAf8a5E8c05Cb95FdaEEf1#code"
},
{
"name": "ConfidentialFAUSDeWrapper",
"isVerified": true,
"address": "eth:0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789148387,
"transactionHash": "0x7eef71a0892e61b5b1db77cc9443cf2951497ef28c483823b22b69bf623c5f24",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6#code"
},
{
"name": "KMSVerifier",
"isVerified": true,
"address": "eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x390683dEa46a61786f4F0807bf3559038Cf43Fa4"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1763549507,
"transactionHash": "0x06d02641ad92aa250ac4fc62db0f221916bef24bbabbf3b4d0b70f6688abd2c4",
"implementations": [
"eth:0xC94790325C61A7D98e90d835ea89777d64b17492"
]
},
{
"timestamp": 1763549639,
"transactionHash": "0x7e4b4f2daadb3e6752b8c1fc896cba229da788a227041dfdc2660122ca1a7568",
"implementations": [
"eth:0x8210A6c69FAc2e9856C7a19Ee70b26cFa3A4F0E2"
]
},
{
"timestamp": 1783672451,
"transactionHash": "0xec2212fb2d35b72388507e5fe9c218c97512b943b5f28cedbfba35b7ac9bd224",
"implementations": [
"eth:0xd0d0C7E1bc1E2F6Cd00E3b4B1083DdD9969155FD"
]
},
{
"timestamp": 1786362647,
"transactionHash": "0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78",
"implementations": [
"eth:0x390683dEa46a61786f4F0807bf3559038Cf43Fa4"
]
}
],
"description": "Ethereum host-chain verifier for public decryption results produced through the Zama Gateway Decryption contract. Since v0.3.0 it is a stateless proof checker: KMS signer sets and thresholds are read from the ProtocolConfig contract, and confidential token wrappers accept a decrypted value when it is signed by the threshold of the current or any explicitly selected non-destroyed KMS context.\n* Roles:\n * **lOwner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x77627828a55156b04Ac0DC0eb30467f1a552BB03#code"
},
{
"name": "ConfidentialArmUSDCsWrapper",
"isVerified": true,
"address": "eth:0x77F8207ee451441336538bA07a2F425780dED8DB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789151411,
"transactionHash": "0x96d24e2718e693259e6f30d476fc2a1157018ee8b4978f224807e2ecb06f6c56",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x77F8207ee451441336538bA07a2F425780dED8DB#code"
},
{
"name": "ConfidentialBbqUSDTWrapper",
"isVerified": true,
"address": "eth:0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789152695,
"transactionHash": "0x015d053c281a8ebb13d7170b1f91cdbac616e0aff901335a9cdb542dd15137dd",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273#code"
},
{
"name": "ConfidentialZAMAWrapper",
"isVerified": true,
"address": "eth:0x80CB147Fd86dC6dEe3Eee7e4Cee33d1397d98071",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1766750867,
"transactionHash": "0x45633b2aab6c5c6315c172eae43ecc3d3d41644a6bbfdea0f06d98c2c399c43a",
"implementations": [
"eth:0x0309b4308A6AC121B9b3A960aC7Bc9bd8256cf38"
]
},
{
"timestamp": 1778571743,
"transactionHash": "0x5a09940b75c7fb272ce47bef53ac0282740b3278b3c0ce520240f10c90018f32",
"implementations": [
"eth:0xFF9e1Db30031Cb2B1b82E138beC70d7DE70d8413"
]
},
{
"timestamp": 1780321931,
"transactionHash": "0x468f9a1433f795da68b88d6adb33f7180e86937d3f3437ec001173c52e7f35f4",
"implementations": [
"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5"
]
},
{
"timestamp": 1787673575,
"transactionHash": "0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0",
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x80CB147Fd86dC6dEe3Eee7e4Cee33d1397d98071#code"
},
{
"name": "ConfidentialBRONWrapper",
"isVerified": true,
"address": "eth:0x85dE671c3bec1aDeD752c3Cea943521181C826bc",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1766750855,
"transactionHash": "0xa779010ac9c5e5117b225f1ad387c33747a27ae91c429b8004ecb55643bfe0c5",
"implementations": [
"eth:0x0309b4308A6AC121B9b3A960aC7Bc9bd8256cf38"
]
},
{
"timestamp": 1778571743,
"transactionHash": "0x5a09940b75c7fb272ce47bef53ac0282740b3278b3c0ce520240f10c90018f32",
"implementations": [
"eth:0xFF9e1Db30031Cb2B1b82E138beC70d7DE70d8413"
]
},
{
"timestamp": 1780321931,
"transactionHash": "0x468f9a1433f795da68b88d6adb33f7180e86937d3f3437ec001173c52e7f35f4",
"implementations": [
"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5"
]
},
{
"timestamp": 1787673575,
"transactionHash": "0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0",
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x85dE671c3bec1aDeD752c3Cea943521181C826bc#code"
},
{
"name": "ConfidentialPENDLEWrapper",
"isVerified": true,
"address": "eth:0x8900123F7e17709C1D80eda1E611A9503Cf1B3df",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789150991,
"transactionHash": "0x81bc67cd541d90df6904fd05608b64880b98be74fb5c1c0f5e4f17a0ec779561",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x8900123F7e17709C1D80eda1E611A9503Cf1B3df#code"
},
{
"name": "ConfidentialPAPYWrapper",
"isVerified": true,
"address": "eth:0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789151975,
"transactionHash": "0xeb2532285d2ac5d8939481a8bfa78ddd8fc0418d031cfc525d97bf7201939a66",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c#code"
},
{
"name": "ConfidentialFcUSDTWrapper",
"isVerified": true,
"address": "eth:0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789388567,
"transactionHash": "0xac60b0c2440232297fb1e4b7aabe445e32b69cc56d0d7be02bef6f4bba219ff9",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F#code"
},
{
"name": "ConfidentialTGBPWrapper",
"isVerified": true,
"address": "eth:0xa873750ccBafD5ec7Dd13bfD5237d7129832eDD9",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1767000887,
"transactionHash": "0x7bee57213dda8d8b4c15cccef163e7b8767989deb0181b855dc98bf00e0b46ec",
"implementations": [
"eth:0x0309b4308A6AC121B9b3A960aC7Bc9bd8256cf38"
]
},
{
"timestamp": 1778571743,
"transactionHash": "0x5a09940b75c7fb272ce47bef53ac0282740b3278b3c0ce520240f10c90018f32",
"implementations": [
"eth:0xFF9e1Db30031Cb2B1b82E138beC70d7DE70d8413"
]
},
{
"timestamp": 1780321931,
"transactionHash": "0x468f9a1433f795da68b88d6adb33f7180e86937d3f3437ec001173c52e7f35f4",
"implementations": [
"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5"
]
},
{
"timestamp": 1787673575,
"transactionHash": "0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0",
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa873750ccBafD5ec7Dd13bfD5237d7129832eDD9#code"
},
{
"name": "ConfidentialUSDTWrapper",
"isVerified": true,
"address": "eth:0xAe0207C757Aa2B4019Ad96edD0092ddc63EF0c50",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1766750831,
"transactionHash": "0x2eeb06d478ab37699ab18bc2cd90248eaf67f3a05c9995808ca5e949b4d1f606",
"implementations": [
"eth:0x0309b4308A6AC121B9b3A960aC7Bc9bd8256cf38"
]
},
{
"timestamp": 1778571743,
"transactionHash": "0x5a09940b75c7fb272ce47bef53ac0282740b3278b3c0ce520240f10c90018f32",
"implementations": [
"eth:0xFF9e1Db30031Cb2B1b82E138beC70d7DE70d8413"
]
},
{
"timestamp": 1780321931,
"transactionHash": "0x468f9a1433f795da68b88d6adb33f7180e86937d3f3437ec001173c52e7f35f4",
"implementations": [
"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5"
]
},
{
"timestamp": 1787673575,
"transactionHash": "0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0",
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xAe0207C757Aa2B4019Ad96edD0092ddc63EF0c50#code"
},
{
"name": "ConfidentialRoxcUSDCWrapper",
"isVerified": true,
"address": "eth:0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789153955,
"transactionHash": "0x3ef21251bb814e05e1ad9812ad70d000318e223d8655c395944d1ca345984f7a",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30#code"
},
{
"name": "ConfidentialPendleUSDCWrapper",
"isVerified": true,
"address": "eth:0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789150499,
"transactionHash": "0x245c01d53b1793bf5bcdcc33260534472552aeb287fa76e0330648a25385f7f1",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC#code"
},
{
"name": "ConfidentialBbqTGBPWrapper",
"isVerified": true,
"address": "eth:0xBA4cFF6ED6F7Cb2A58776dECa4E984b498446762",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1780585031,
"transactionHash": "0xf8f65cadc2879300e74e4bf02a727021a71732b6c122a9243f3445799ec12212",
"implementations": [
"eth:0xAea1d2cc69aF93CA0fdd34426E74Ad7cB19E9745"
]
},
{
"timestamp": 1780663271,
"transactionHash": "0x88640fcae1f813a06ecd522d8baad4898ea1abeec37935d5280f0edec77717e4",
"implementations": [
"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5"
]
},
{
"timestamp": 1787673575,
"transactionHash": "0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0",
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xBA4cFF6ED6F7Cb2A58776dECa4E984b498446762#code"
},
{
"name": "ConfidentialArmUSDTsWrapper",
"isVerified": true,
"address": "eth:0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789150187,
"transactionHash": "0x0126561c5f1b610e7f7dac5a364b5e6122bf5c3cb86f56908b94a94893df33b5",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B#code"
},
{
"name": "ACL",
"isVerified": true,
"address": "eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x9A017e0ba4c19A325D5a89f5dd2112e605E85418"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1763549471,
"transactionHash": "0x858617542602611205744c3ae5f6905ac1bba19d3c08971de9c1a820a8a33f03",
"implementations": [
"eth:0xcD88EA408376C426308703e5808aa9f2e4cb09F2"
]
},
{
"timestamp": 1763549591,
"transactionHash": "0x99b4c55992ead5468d12e37b84c00ab6e7a9eb01380736586abab6300543faa0",
"implementations": [
"eth:0x4E35869D1e8106058d11b414876B735F62A325e2"
]
},
{
"timestamp": 1765296611,
"transactionHash": "0x106ad2025c3f8b47cc0be8456e38f332345068a2c99ad8f12fc779c573676a05",
"implementations": [
"eth:0x96B171e4f8eCda0FFdD128b319Fa185b14f99D76"
]
},
{
"timestamp": 1783672451,
"transactionHash": "0xec2212fb2d35b72388507e5fe9c218c97512b943b5f28cedbfba35b7ac9bd224",
"implementations": [
"eth:0x3F6D970d30E1FFE9657aa8072C82dA10eef1c3D6"
]
},
{
"timestamp": 1786362647,
"transactionHash": "0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78",
"implementations": [
"eth:0x9A017e0ba4c19A325D5a89f5dd2112e605E85418"
]
}
],
"description": "Ethereum host-chain access-control registry for encrypted handles, storing handle allowances and delegation state for ciphertext references. Its public-decryption and user-delegation events are mirrored into the Gateway MultichainACL by coprocessor consensus. Since v0.4.0 users can delegate user decryption of their handles across all app contracts at once via a wildcard delegation.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6#code"
},
{
"name": "InputVerifier",
"isVerified": true,
"address": "eth:0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0xc4a1a1BaE73ca6aceb2FAa62ce08BfAbCd2323b6"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1763549519,
"transactionHash": "0x4ca7637788e07eb8c1253055b3ce2e104c210fb289854b749c6cfedbd17b09cd",
"implementations": [
"eth:0xC94790325C61A7D98e90d835ea89777d64b17492"
]
},
{
"timestamp": 1763549651,
"transactionHash": "0xd13b7d81bbe520a5184759a326747a536c47dd3d1d990754288f1e1ec325fc29",
"implementations": [
"eth:0xc4a1a1BaE73ca6aceb2FAa62ce08BfAbCd2323b6"
]
}
],
"description": "Ethereum host-chain verifier for encrypted input attestations produced by the Zama Gateway InputVerification contract. The FHEVMExecutor calls it before accepting user-provided ciphertext handles.\n* Roles:\n * **getCoprocessorSigners**: EOA 31\n * **lOwner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2#code"
},
{
"name": "ProtocolConfig",
"isVerified": true,
"address": "eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x25c76298Fb4d15bFADce4798519a7B37ac0076E7"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1785941423,
"transactionHash": "0x2b75b644a4fc5c175242df9efb03c0aa3f2be2c67cae2560e9ffc5333316c468",
"implementations": [
"eth:0xC94790325C61A7D98e90d835ea89777d64b17492"
]
},
{
"timestamp": 1786362647,
"transactionHash": "0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78",
"implementations": [
"eth:0x25c76298Fb4d15bFADce4798519a7B37ac0076E7"
]
}
],
"description": "Ethereum host-chain registry of KMS node sets, per-context thresholds, and context lifecycle, introduced in the v0.3.0 KMSVerifier upgrade. A KMS context snapshots node transaction senders and signers; the four per-context thresholds (public decryption, user decryption, key generation, MPC) can be retuned by the ACL owner for any live context, including the current one. A newly created context becomes current immediately; older contexts remain selectable for public decryption proofs until destroyed.\n* Roles:\n * **currentKmsTxSenders**: EOA 30, EOA 33, EOA 34, EOA 35, EOA 36, EOA 40, EOA 41, EOA 46, EOA 48, EOA 49, EOA 51, EOA 52, EOA 56\n * **getKmsSigners**: EOA 32, EOA 37, EOA 38, EOA 39, EOA 42, EOA 43, EOA 44, EOA 45, EOA 47, EOA 50, EOA 53, EOA 54, EOA 55\n * **lOwner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD8236B57394f90726b26aB25D38CeAC776E1a7C4#code"
},
{
"name": "FHEVMExecutor",
"isVerified": true,
"address": "eth:0xD82385dADa1ae3E969447f20A3164F6213100e75",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0xf444B2B5e45cD07F1E735122F53A2d70A8c81dB5"
"eth:0x0675c7BFA34aF170C49e6590A2cBf845c3029d7B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1763549495,
"transactionHash": "0x43a0b2d4811549a09d7c1de5fd980ec9751343bb0b8babc3dcaf39a72cb10389",
"implementations": [
"eth:0xC94790325C61A7D98e90d835ea89777d64b17492"
]
},
{
"timestamp": 1763549603,
"transactionHash": "0xcf5069f2c6b06734e6a866122d122be50d2b3f0251cd8833cca13d6a5b5c1076",
"implementations": [
"eth:0x9a2886431fDd00449D4B02e3aF9C04a2608162e6"
]
},
{
"timestamp": 1774083191,
"transactionHash": "0xc43696e8168a63f43cf6aa8bee9651d3170d311fd07fd6dda6e4e51e18fd2b44",
"implementations": [
"eth:0xde3624dA8d9c45B57674cA0AcAC40630682211bb"
]
},
{
"timestamp": 1783672451,
"transactionHash": "0xec2212fb2d35b72388507e5fe9c218c97512b943b5f28cedbfba35b7ac9bd224",
"implementations": [
"eth:0xC38aAfCBB73Fd4bd6f995275079C4Add9C1687E5"
]
},
{
"timestamp": 1786362647,
"transactionHash": "0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78",
"implementations": [
"eth:0xf444B2B5e45cD07F1E735122F53A2d70A8c81dB5"
]
},
{
"timestamp": 1791216671,
"transactionHash": "0x63594740e6849980ffeecf14392b8b7f3e1e382c2e1ea023eb7a3df345f61328",
"implementations": [
"eth:0x0675c7BFA34aF170C49e6590A2cBf845c3029d7B"
]
}
],
"description": "FHEVM executor that accepts encrypted operation requests, accounts for computation usage, and stores ciphertext handles for operation results. v0.4.0 adds the n-ary encrypted operations fheSum and fheIsIn (encrypted set membership) over bounded ciphertext collections.\n* Roles:\n * **lOwner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"description": "FHEVM executor that accepts encrypted operation requests, accounts for computation usage, and stores ciphertext handles for operation results. v0.5.0 rejects plaintext scalar operands and trivial-encryption inputs that do not fit their FHE type, checks division by zero in the shared binary-operation path, and adds a checkHandleType view that asserts the type of an initialized handle.\n* Roles:\n * **lOwner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xD82385dADa1ae3E969447f20A3164F6213100e75#code"
},
{
"name": "ConfidentialWBTCWrapper",
"isVerified": true,
"address": "eth:0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789148087,
"transactionHash": "0x2542e4587e213e5d97c9589fb98ce80648043a69f8e55417b045677f64bac13e",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d#code"
},
{
"name": "ConfidentialWETHWrapper",
"isVerified": true,
"address": "eth:0xda9396b82634Ea99243cE51258B6A5Ae512D4893",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1766750843,
"transactionHash": "0xf1d8c691a4db0974cbfb6d5e638ae9204d19a1733b65e6e41e934d9acf50e921",
"implementations": [
"eth:0x0309b4308A6AC121B9b3A960aC7Bc9bd8256cf38"
]
},
{
"timestamp": 1778571743,
"transactionHash": "0x5a09940b75c7fb272ce47bef53ac0282740b3278b3c0ce520240f10c90018f32",
"implementations": [
"eth:0xFF9e1Db30031Cb2B1b82E138beC70d7DE70d8413"
]
},
{
"timestamp": 1780321931,
"transactionHash": "0x468f9a1433f795da68b88d6adb33f7180e86937d3f3437ec001173c52e7f35f4",
"implementations": [
"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5"
]
},
{
"timestamp": 1787673575,
"transactionHash": "0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0",
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xda9396b82634Ea99243cE51258B6A5Ae512D4893#code"
},
{
"name": "ConfidentialUSDCWrapper",
"isVerified": true,
"address": "eth:0xe978F22157048E5DB8E5d07971376e86671672B2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1766750819,
"transactionHash": "0xc4795dcb1554d8e2dd718bca62c2107f346954973072ad781bab27147f6a1664",
"implementations": [
"eth:0x0309b4308A6AC121B9b3A960aC7Bc9bd8256cf38"
]
},
{
"timestamp": 1778571743,
"transactionHash": "0x5a09940b75c7fb272ce47bef53ac0282740b3278b3c0ce520240f10c90018f32",
"implementations": [
"eth:0xFF9e1Db30031Cb2B1b82E138beC70d7DE70d8413"
]
},
{
"timestamp": 1780321931,
"transactionHash": "0x468f9a1433f795da68b88d6adb33f7180e86937d3f3437ec001173c52e7f35f4",
"implementations": [
"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5"
]
},
{
"timestamp": 1787673575,
"transactionHash": "0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0",
"implementations": [
"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe978F22157048E5DB8E5d07971376e86671672B2#code"
},
{
"name": "ConfidentialAUSDWrapper",
"isVerified": true,
"address": "eth:0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789146719,
"transactionHash": "0x696d006e217f5ccda05c1bf61a575622009037f45ec832dac617dbce7edaf677",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2#code"
},
{
"name": "ConfidentialTokenWrappersRegistry",
"isVerified": true,
"address": "eth:0xeb5015fF021DB115aCe010f23F55C2591059bBA0",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0xA989D32d7348e0Da8145C6282E839dfC4DB8954f"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1766750315,
"transactionHash": "0x01110836e21dfbb28a25ebf7be8dd6e95b7f09ef006c10f4a108a60ec5cf0f69",
"implementations": [
"eth:0xA989D32d7348e0Da8145C6282E839dfC4DB8954f"
]
}
],
"description": "Registry for Zama confidential token wrappers.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xeb5015fF021DB115aCe010f23F55C2591059bBA0#code"
},
{
"name": "KMSGeneration",
"isVerified": true,
"address": "eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x5DD95e97287672b5d86dd3a427E855099E5AC940"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1785941447,
"transactionHash": "0x4a00d0e3d19c4a81c0edc5272cbdad53572ac78d7ddc602cde1bfadb358209cd",
"implementations": [
"eth:0xC94790325C61A7D98e90d835ea89777d64b17492"
]
},
{
"timestamp": 1786362647,
"transactionHash": "0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78",
"implementations": [
"eth:0x5DD95e97287672b5d86dd3a427E855099E5AC940"
]
}
],
"description": "Orchestrates FHE key and CRS generation on the Ethereum host chain, taking over the workflows removed from the Gateway KMSGeneration in v0.5.0. The ACL owner triggers and aborts generations; KMS node transaction senders registered in ProtocolConfig submit EIP-712-signed responses that activate a key or CRS once the ProtocolConfig key-generation threshold is reached.\n* Roles:\n * **lOwner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf102cC9A9D2174630c394f5b7B7D63104E348daa#code"
},
{
"name": "ConfidentialArmcWBTCWrapper",
"isVerified": true,
"address": "eth:0xF921A5B0634f4236B21A4e948317abf9a2E86B6f",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1789148987,
"transactionHash": "0xd938d016e57611121abc327202b921dc60afe8d505b7eaee1f0dd7dd67eca127",
"implementations": [
"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD"
]
}
],
"description": "ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **owner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xF921A5B0634f4236B21A4e948317abf9a2E86B6f#code"
},
{
"name": "DAO",
"isVerified": true,
"address": "eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"eth:0x58C1F7Bc62Bb63fb137bc8F6d8ea6321a0501d29"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1763037479,
"transactionHash": "0x98aff8abc8828132c15a9aa5d510766bc3358cb3a7ca98636306e94b0debefc1",
"implementations": [
"eth:0x58C1F7Bc62Bb63fb137bc8F6d8ea6321a0501d29"
]
}
],
"description": "Aragon DAO that stores governance state and executes proposal action batches.\n* Roles:\n * **daoExecutors**: ZamaGovMultisigA, ZamaGovMultisigB\n * **daoRootHolders**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **daoUpgraders**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **multisigSettingsAdmins**: DAO, ZamaGovMultisigA, ZamaGovMultisigB; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **multisigTargetConfigAdmins**: DAO, ZamaGovMultisigA, ZamaGovMultisigB; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3#code"
},
{
"name": "PauserSet",
"isVerified": true,
"address": "eth:0xbBfE1680b4a63ED05f7F80CE330BED7C992A586C",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Maintains the pauser account set used in pause-control checks.\n* Roles:\n * **lOwner**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **pausers**: EOA 57, EOA 58, EOA 59, EOA 60",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xbBfE1680b4a63ED05f7F80CE330BED7C992A586C#code"
},
{
"name": "Staking (Coprocessor)",
"isVerified": true,
"address": "eth:0x7147485b892158f2B875f7aC5Ea48A9937C66AE8",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0xeaBD906bE5E72F1a7949c8DC5E7Fb047Db7E7EAE"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1768300679,
"transactionHash": "0x7d7fb37c635bb8e63cebe6d76e8b5e26a0f08cc4630f792b782d6a19f81a2cf2",
"implementations": [
"eth:0xeaBD906bE5E72F1a7949c8DC5E7Fb047Db7E7EAE"
]
}
],
"description": "Staking contract that escrows ZAMA, issues non-transferable staked voting tokens, and mints protocol rewards to eligible stakers at a configurable reward rate.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **defaultAdmin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **managerRoleMembers**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7147485b892158f2B875f7aC5Ea48A9937C66AE8#code"
},
{
"name": "Staking (KMS)",
"isVerified": true,
"address": "eth:0xe9b176CCaA8840DC3b3567bb83e2cD2a6c36F4Ab",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3"
],
"implementations": [
"eth:0xeaBD906bE5E72F1a7949c8DC5E7Fb047Db7E7EAE"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1768300691,
"transactionHash": "0x049b7dbbe648f4de55b54b2950fadbb205342e8c99b3a9bf73333c8075033be3",
"implementations": [
"eth:0xeaBD906bE5E72F1a7949c8DC5E7Fb047Db7E7EAE"
]
}
],
"description": "Staking contract that escrows ZAMA, issues non-transferable staked voting tokens, and mints protocol rewards to eligible stakers at a configurable reward rate.\n* Roles:\n * **admin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **defaultAdmin**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB\n * **managerRoleMembers**: DAO; ultimately ZamaGovMultisigA, ZamaGovMultisigB",
"upgradableBy": [
{
"name": "ZamaGovMultisigB",
"delay": "no"
},
{
"name": "ZamaGovMultisigA",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe9b176CCaA8840DC3b3567bb83e2cD2a6c36F4Ab#code"
}
],
"zama": [
{
"name": "MultichainACL",
"isVerified": true,
"address": "zama:0x055d9FD50a612A9027716ec8db663E7D68562468",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zama:0x0000000000000000000000000000000000000000"
],
"implementations": [
"zama:0x9B5bc299FC3C7AEFb6a215C1c156D5854B53b262"
]
},
"chain": "zama",
"pastUpgrades": [
{
"timestamp": 1763504840,
"transactionHash": "0x9c8e29cac9aa9f2d93f9b00f8814d25c86565a296a7193be70ca554a4273d845",
"implementations": [
"zama:0x74adf0e5324Ba67d51872c27A025f1eEC0DaA500"
]
},
{
"timestamp": 1763504923,
"transactionHash": "0x163e2453c6431119ace5b38c524f4e47892e7661bf0e08319785032654a31c05",
"implementations": [
"zama:0x55F101e2D2331119ceCD136A9f0E89643A163bB8"
]
},
{
"timestamp": 1765291728,
"transactionHash": "0x68ea8a8347f0b22ac7ddba487f9baeb69eeb393cb4aca98e86fed97a91a80cfa",
"implementations": [
"zama:0x9B5bc299FC3C7AEFb6a215C1c156D5854B53b262"
]
}
],
"description": "Gateway-side ACL mirror that records coprocessor consensus for host-chain public decryption permissions, account handle allowances, and delegated user-decryption access. For Ethereum, it mirrors ACL events emitted by the L1 ACL contract registered in GatewayConfig.\n* Roles:\n * **admin**: EOA 1\n * **gatewayCoprocessorTxSenders**: EOA 2\n * **gatewayOwner**: SafeL2",
"description": "Gateway-side ACL mirror that records coprocessor consensus for host-chain public decryption permissions, account handle allowances, and delegated user-decryption access. For Ethereum, it mirrors ACL events emitted by the L1 ACL contract registered in GatewayConfig.\n* Roles:\n * **admin**: EOA 2\n * **gatewayCoprocessorTxSenders**: EOA 1\n * **gatewayOwner**: SafeL2",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"id": "EOA-2",
"name": "EOA 2",
"delay": "no"
},
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.mainnet.zama.org/address/0x055d9FD50a612A9027716ec8db663E7D68562468#code"
},
{
"name": "Decryption",
"isVerified": true,
"address": "zama:0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zama:0x0000000000000000000000000000000000000000"
],
"implementations": [
"zama:0x86F8e9626cCff3f2eB3dA248F33DfF43531DBFD8"
]
},
"chain": "zama",
"pastUpgrades": [
{
"timestamp": 1763504841,
"transactionHash": "0x967e084e69cce0203af66ac59ebea6c1433877322f9c8a01da30b5fbf1ba5cb0",
"implementations": [
"zama:0x74adf0e5324Ba67d51872c27A025f1eEC0DaA500"
]
},
{
"timestamp": 1763504924,
"transactionHash": "0xb69c7b64e7ed4ccacf621edd25059e062d63cdebd71a8a2f1dcc4fbe7dd0b6f4",
"implementations": [
"zama:0x99c454f6c59b66C5B39D85DEA99565A78e597b7c"
]
},
{
"timestamp": 1765291178,
"transactionHash": "0x0dd6bc720fd0c2158c1720e26292d3df770b9ba6613ebcce2c292bfbcc1eff08",
"implementations": [
"zama:0xe691cE3d7a71E2eC9E96AF5bdD263FfEB124F8dE"
]
},
{
"timestamp": 1783671340,
"transactionHash": "0x5d63d8d9bf4790e7169cd1d6c440262aad29368190932f823377df311f389217",
"implementations": [
"zama:0x943CEfD1A00d3ae5b298bB10D4EddA09B279C8B0"
]
},
{
"timestamp": 1786036264,
"transactionHash": "0x350755101263bed64dc377ef6f3ef07f95f97918b689967a60ee625d0d9e025c",
"implementations": [
"zama:0x86F8e9626cCff3f2eB3dA248F33DfF43531DBFD8"
]
}
],
"description": "Gateway contract that orchestrates public and user decryption requests and checks committed ciphertext material. Each request pins a KMS context at request time (explicitly through extraData or the then-current context) and rejects unknown or destroyed contexts; responses must reference the pinned context. Requests recorded before v0.5.0 fall back to the context declared by each response. KMS nodes enforce host-chain ACL state offchain, and Ethereum KMSVerifier verifies public results against this contract's EIP-712 domain.\n* Roles:\n * **admin**: EOA 1\n * **gatewayKmsSigners**: EOA 10, EOA 11, EOA 12, EOA 15, EOA 16, EOA 17, EOA 18, EOA 20, EOA 23, EOA 26, EOA 27, EOA 28, EOA 5\n * **gatewayKmsTxSenders**: EOA 13, EOA 14, EOA 19, EOA 21, EOA 22, EOA 24, EOA 25, EOA 29, EOA 4, EOA 6, EOA 7, EOA 8, EOA 9\n * **gatewayOwner**: SafeL2",
"description": "Gateway contract that orchestrates public and user decryption requests and checks committed ciphertext material. Each request pins a KMS context at request time (explicitly through extraData or the then-current context) and rejects unknown or destroyed contexts; responses must reference the pinned context. Requests recorded before v0.5.0 fall back to the context declared by each response. KMS nodes enforce host-chain ACL state offchain, and Ethereum KMSVerifier verifies public results against this contract's EIP-712 domain.\n* Roles:\n * **admin**: EOA 2\n * **gatewayKmsSigners**: EOA 10, EOA 11, EOA 12, EOA 15, EOA 16, EOA 17, EOA 18, EOA 20, EOA 23, EOA 26, EOA 27, EOA 28, EOA 5\n * **gatewayKmsTxSenders**: EOA 13, EOA 14, EOA 19, EOA 21, EOA 22, EOA 24, EOA 25, EOA 29, EOA 4, EOA 6, EOA 7, EOA 8, EOA 9\n * **gatewayOwner**: SafeL2",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"id": "EOA-2",
"name": "EOA 2",
"delay": "no"
},
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.mainnet.zama.org/address/0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24#code"
},
{
"name": "KMSGeneration",
"isVerified": true,
"address": "zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zama:0x0000000000000000000000000000000000000000"
],
"implementations": [
"zama:0x68CEb7709aC1bcD60e36c4144a243A445A2cb076"
]
},
"chain": "zama",
"pastUpgrades": [
{
"timestamp": 1763504841,
"transactionHash": "0xf3172c87f8513e0f7215aaf0e61496e4fbf4e44c40f51562db8f48794771bd5f",
"implementations": [
"zama:0x74adf0e5324Ba67d51872c27A025f1eEC0DaA500"
]
},
{
"timestamp": 1763504920,
"transactionHash": "0xc25eaf0d69185160935a98ef009505fbeb16e04a46d7307abeccc1e06e3105be",
"implementations": [
"zama:0x24Aa237cE5FfD591059Bbd78014F8540cC4864a7"
]
},
{
"timestamp": 1765291450,
"transactionHash": "0xf37c1f04d35127d17f35fda57e53b68bc8063c1d3b08a05bdbbfec12eb7e447d",
"implementations": [
"zama:0x3d345DFc156381E6060Cdf652cDf7f92DF94fAFF"
]
},
{
"timestamp": 1786036264,
"transactionHash": "0x350755101263bed64dc377ef6f3ef07f95f97918b689967a60ee625d0d9e025c",
"implementations": [
"zama:0x68CEb7709aC1bcD60e36c4144a243A445A2cb076"
]
}
],
"description": "View-only gateway contract retaining historical queries for previously generated FHE keys and CRS materials. All state-changing key-generation, CRS-generation, PRSS, and key-resharing workflows were removed in v0.5.0 after their move to Ethereum.\n* Roles:\n * **admin**: EOA 1\n * **gatewayOwner**: SafeL2",
"description": "View-only gateway contract retaining historical queries for previously generated FHE keys and CRS materials. All state-changing key-generation, CRS-generation, PRSS, and key-resharing workflows were removed in v0.5.0 after their move to Ethereum.\n* Roles:\n * **admin**: EOA 2\n * **gatewayOwner**: SafeL2",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"id": "EOA-2",
"name": "EOA 2",
"delay": "no"
},
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.mainnet.zama.org/address/0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3#code"
},
{
"name": "ProtocolPayment",
"isVerified": true,
"address": "zama:0x7E179E45E5fe0a21015Be25185363B4F2F2F7e89",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zama:0x0000000000000000000000000000000000000000"
],
"implementations": [
"zama:0xEbaC23dc56b1339558cdbdf7dEf245c80d727075"
]
},
"chain": "zama",
"pastUpgrades": [
{
"timestamp": 1765289750,
"transactionHash": "0xb922a7b5126ca4dff4364743c33110d5219d7f2978a815e20a72d6f0068a88bf",
"implementations": [
"zama:0x74adf0e5324Ba67d51872c27A025f1eEC0DaA500"
]
},
{
"timestamp": 1765289833,
"transactionHash": "0xf7acc60460f2adce48c4a1e3f7d630d9612d18008188ec4b95ebdfa2419cc792",
"implementations": [
"zama:0xEbaC23dc56b1339558cdbdf7dEf245c80d727075"
]
}
],
"description": "Gateway fee contract that charges ZAMA fees for encrypted input verification, public decryption, and user decryption requests, then forwards the collected fees to the configured fee burner sender.\n* Roles:\n * **admin**: EOA 1\n * **gatewayOwner**: SafeL2",
"description": "Gateway fee contract that charges ZAMA fees for encrypted input verification, public decryption, and user decryption requests, then forwards the collected fees to the configured fee burner sender.\n* Roles:\n * **admin**: EOA 2\n * **gatewayOwner**: SafeL2",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"id": "EOA-2",
"name": "EOA 2",
"delay": "no"
},
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.mainnet.zama.org/address/0x7E179E45E5fe0a21015Be25185363B4F2F2F7e89#code"
},
{
"name": "InputVerification",
"isVerified": true,
"address": "zama:0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zama:0x0000000000000000000000000000000000000000"
],
"implementations": [
"zama:0xf9f0F5ef8301CF1573EBe0F45E13A4CabB621821"
"zama:0xa9A3eA1cdD078a79bB31c3a284a4abA80bd0E8d8"
]
},
"chain": "zama",
"pastUpgrades": [
{
"timestamp": 1763504842,
"transactionHash": "0x880800809b7723cf723efc897cdeb0f9a560530317f1281a61601851f1ef0449",
"implementations": [
"zama:0x74adf0e5324Ba67d51872c27A025f1eEC0DaA500"
]
},
{
"timestamp": 1763504919,
"transactionHash": "0x8d530fcff93bb112195829d27e90eedf65f122f4262b809a5d57fbd9fcc1ea19",
"implementations": [
"zama:0x7bfF0c5aEF31a8AB7116594A492cBEe9a829fF74"
]
},
{
"timestamp": 1765291315,
"transactionHash": "0x1be878372ad005809903c742e7c3ea908bfcaa1f1e63ebac2eeb0834d499fcc7",
"implementations": [
"zama:0xA08c4367eB984945da2dad5BF7d94D1B2863197A"
]
},
{
"timestamp": 1786036264,
"transactionHash": "0x350755101263bed64dc377ef6f3ef07f95f97918b689967a60ee625d0d9e025c",
"implementations": [
"zama:0xf9f0F5ef8301CF1573EBe0F45E13A4CabB621821"
]
},
{
"timestamp": 1791453910,
"transactionHash": "0x2dc9ffacebc169a90ee746b5818b83d470bf7dbc5855c1ae05268b76caf604aa",
"implementations": [
"zama:0xa9A3eA1cdD078a79bB31c3a284a4abA80bd0E8d8"
]
}
],
"description": "Gateway contract that receives encrypted input verification requests from registered and enabled host chains, collects coprocessor responses, and emits a threshold-signed attestation once coprocessor consensus is reached. Ethereum InputVerifier verifies attestations against this contract's EIP-712 domain.\n* Roles:\n * **admin**: EOA 1\n * **gatewayCoprocessorSigners**: EOA 2\n * **gatewayCoprocessorTxSenders**: EOA 2\n * **gatewayOwner**: SafeL2",
"description": "Gateway contract that receives encrypted input verification requests from registered and enabled host chains, collects coprocessor responses, and emits a threshold-signed attestation once coprocessor consensus is reached. Since v0.5.0, if GatewayConfig designates a priority coprocessor, that coprocessor's single response finalizes verification or rejection and the attestation carries only its signature. Ethereum InputVerifier verifies attestations against this contract's EIP-712 domain.\n* Roles:\n * **admin**: EOA 2\n * **gatewayCoprocessorSigners**: EOA 1\n * **gatewayCoprocessorTxSenders**: EOA 1\n * **gatewayOwner**: SafeL2\n * **gatewayPriorityCoprocessorTxSender**: EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"id": "EOA-2",
"name": "EOA 2",
"delay": "no"
},
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.mainnet.zama.org/address/0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287#code"
},
{
"name": "CiphertextCommits",
"isVerified": true,
"address": "zama:0xd82cF70FC102028cd01acB87D0E107780ae4F41F",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zama:0x0000000000000000000000000000000000000000"
],
"implementations": [
"zama:0xB373Ae42736E3C266D4A5D090c00c7f0Bda06622"
"zama:0x81a6CBD6B1bb0296BfFd38AD8584918640F35948"
]
},
"chain": "zama",
"pastUpgrades": [
{
"timestamp": 1763504840,
"transactionHash": "0xd9fa2324e7460bb03aab530a0aa72d0d9bd6e029b6dc4cba601584558184a475",
"implementations": [
"zama:0x74adf0e5324Ba67d51872c27A025f1eEC0DaA500"
]
},
{
"timestamp": 1763504922,
"transactionHash": "0x23f1f4743b50b67226581c9755326253e470e0784661f65766f8a02f8db6e770",
"implementations": [
"zama:0xd550654F0cD1B56e1C887569A5F7b5e643Fd3e47"
]
},
{
"timestamp": 1765291041,
"transactionHash": "0x36d9d960dd681eff0022eac04f63b06c514b54296f7c248ea6041b785ef59977",
"implementations": [
"zama:0xC92f2dc7eF79728ed32e745020EF463270217e78"
]
},
{
"timestamp": 1786036264,
"transactionHash": "0x350755101263bed64dc377ef6f3ef07f95f97918b689967a60ee625d0d9e025c",
"implementations": [
"zama:0xB373Ae42736E3C266D4A5D090c00c7f0Bda06622"
]
},
{
"timestamp": 1791453910,
"transactionHash": "0x2dc9ffacebc169a90ee746b5818b83d470bf7dbc5855c1ae05268b76caf604aa",
"implementations": [
"zama:0x81a6CBD6B1bb0296BfFd38AD8584918640F35948"
]
}
],
"description": "Gateway contract that stores ciphertext and SNS ciphertext digests after coprocessor consensus, allowing decryption requests to reference committed ciphertext material. Digests referencing unregistered or disabled host chains are rejected.\n* Roles:\n * **admin**: EOA 1\n * **gatewayCoprocessorTxSenders**: EOA 2\n * **gatewayOwner**: SafeL2",
"description": "Gateway contract that stores ciphertext and SNS ciphertext digests after coprocessor consensus, allowing decryption requests to reference committed ciphertext material. Digests referencing unregistered or disabled host chains are rejected. Since v0.5.0, if GatewayConfig designates a priority coprocessor, that coprocessor's single submission commits the material on its own.\n* Roles:\n * **admin**: EOA 2\n * **gatewayCoprocessorTxSenders**: EOA 1\n * **gatewayOwner**: SafeL2\n * **gatewayPriorityCoprocessorTxSender**: EOA 1",
"upgradableBy": [
{
"id": "EOA-1",
"name": "EOA 1",
"id": "EOA-2",
"name": "EOA 2",
"delay": "no"
},
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.mainnet.zama.org/address/0xd82cF70FC102028cd01acB87D0E107780ae4F41F#code"
},
{
"name": "GatewayConfig",
"isVerified": true,
"address": "zama:0xDE537Be194777A56f8B19d14079E6a78249390ab",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zama:0x5f0F86BcEad6976711C9B131bCa5D30E767fe2bE"
],
"implementations": [
"zama:0x1950aD98e834f6c07553365196d4CddeD179c536"
"zama:0x94209410f6CAa4A8c6Fd7ED4AB67560eD8A3002C"
]
},
"chain": "zama",
"pastUpgrades": [
{
"timestamp": 1763504825,
"transactionHash": "0x716ebd474f8714fb9e32f2eec6bb28083e1fe7e0185494fab8ce0ca70a26339e",
"implementations": [
"zama:0xf0EfBe52c0a3B07718D5eEFfb9FCa9E442988BeF"
]
},
{
"timestamp": 1763504917,
"transactionHash": "0x30ac1d1808d4dfbad21cad05b50d62b861cf578cd97b43693488ad269287f608",
"implementations": [
"zama:0x96C188a54E880Fe86741b8ef19C429234b72A9Af"
]
},
{
"timestamp": 1765291588,
"transactionHash": "0xd05685ebd7a7a76a93963ade6cabe69887f3e0f2160eb1a122abc9eb347550f5",
"implementations": [
"zama:0xDa97dfc327349F7C1333610C80cc20971eD0eb0f"
]
},
{
"timestamp": 1783671340,
"transactionHash": "0x5d63d8d9bf4790e7169cd1d6c440262aad29368190932f823377df311f389217",
"implementations": [
"zama:0x2294E3C211238Ae31E2824576CCd7f996CC7Dc00"
]
},
{
"timestamp": 1786036264,
"transactionHash": "0x350755101263bed64dc377ef6f3ef07f95f97918b689967a60ee625d0d9e025c",
"implementations": [
"zama:0x1950aD98e834f6c07553365196d4CddeD179c536"
]
},
{
"timestamp": 1791453910,
"transactionHash": "0x2dc9ffacebc169a90ee746b5818b83d470bf7dbc5855c1ae05268b76caf604aa",
"implementations": [
"zama:0x94209410f6CAa4A8c6Fd7ED4AB67560eD8A3002C"
]
}
],
"description": "Central configuration contract for the Zama Gateway. A KMS context snapshots node transaction senders, signers, and workflow thresholds; the owner can create new contexts, retune the thresholds of any live context, and destroy non-current contexts, which immediately invalidates them for decryption. Registered host chains can be disabled, re-enabled, or removed by the owner.\n* Roles:\n * **admin**: SafeL2\n * **getCoprocessorSigners**: EOA 2\n * **getCoprocessorTxSenders**: EOA 2\n * **getCustodianSigners**: EOA 3\n * **getCustodianTxSenders**: EOA 3\n * **getKmsSigners**: EOA 10, EOA 11, EOA 12, EOA 15, EOA 16, EOA 17, EOA 18, EOA 20, EOA 23, EOA 26, EOA 27, EOA 28, EOA 5\n * **getKmsTxSenders**: EOA 13, EOA 14, EOA 19, EOA 21, EOA 22, EOA 24, EOA 25, EOA 29, EOA 4, EOA 6, EOA 7, EOA 8, EOA 9\n * **owner**: SafeL2\n * **pendingOwner**: EOA 1",
"description": "Central configuration contract for the Zama Gateway. A KMS context snapshots node transaction senders, signers, and workflow thresholds; the owner can create new contexts, retune the thresholds of any live context, and destroy non-current contexts, which immediately invalidates them for decryption. Registered host chains can be disabled, re-enabled, or removed by the owner. Since v0.7.0 the owner can designate a priority coprocessor transaction sender whose single response finalizes coprocessor consensus in InputVerification and CiphertextCommits, making the coprocessor majority threshold inert, and coprocessor set and threshold updates are applied live without pausing InputVerification.\n* Roles:\n * **admin**: SafeL2\n * **getCoprocessorSigners**: EOA 1\n * **getCoprocessorTxSenders**: EOA 1\n * **getCustodianSigners**: EOA 3\n * **getCustodianTxSenders**: EOA 3\n * **getKmsSigners**: EOA 10, EOA 11, EOA 12, EOA 15, EOA 16, EOA 17, EOA 18, EOA 20, EOA 23, EOA 26, EOA 27, EOA 28, EOA 5\n * **getKmsTxSenders**: EOA 13, EOA 14, EOA 19, EOA 21, EOA 22, EOA 24, EOA 25, EOA 29, EOA 4, EOA 6, EOA 7, EOA 8, EOA 9\n * **getPriorityCoprocessorTxSender**: EOA 1\n * **owner**: SafeL2\n * **pendingOwner**: EOA 2",
"upgradableBy": [
{
"name": "SafeL2",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://explorer.mainnet.zama.org/address/0xDE537Be194777A56f8B19d14079E6a78249390ab#code"
},
{
"name": "GatewayPauserSet",
"isVerified": true,
"address": "zama:0x571ecb596fCc5c840DA35CbeCA175580db50ac1b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "zama",
"description": "Maintains the set of accounts allowed to pause gateway contracts. The set is managed by the GatewayConfig owner.\n* Roles:\n * **gatewayOwner**: SafeL2\n * **pausers**: EOA 61, EOA 62, EOA 63, EOA 64",
"discoveryDrivenData": true,
"url": "https://explorer.mainnet.zama.org/address/0x571ecb596fCc5c840DA35CbeCA175580db50ac1b#code"
}
]
},
"risks": []
}
+1 -1
{
"baseTimestamp": 1790851379,
"baseTimestamp": 1791458506,
"contractsDiscoDriven": false,
"hasDiscoUi": false,
"isDiscoDriven": false,
"permissionsDiscoDriven": false
}
+14 -0
[
{
"id": "5931caeb",
"date": "Thu, 08 Oct 2026 11:23:05 GMT",
"timestamp": 1791458506,
"description": "Upgraded:\n\n- Gateway contracts introduce a priority coprocessor mode, where a single registered coprocessor can ignore the majority threshold and finalize input-proof verification and rejection, and ciphertext commits on its own (GatewayConfig: https://disco.l2beat.com/diff/zama:0x1950aD98e834f6c07553365196d4CddeD179c536/zama:0x94209410f6CAa4A8c6Fd7ED4AB67560eD8A3002C, InputVerification: https://disco.l2beat.com/diff/zama:0xf9f0F5ef8301CF1573EBe0F45E13A4CabB621821/zama:0xa9A3eA1cdD078a79bB31c3a284a4abA80bd0E8d8, CiphertextCommits: https://disco.l2beat.com/diff/zama:0xB373Ae42736E3C266D4A5D090c00c7f0Bda06622/zama:0x81a6CBD6B1bb0296BfFd38AD8584918640F35948). This mode effectively removes coprocessor decentralization. Zama coprocessor is also set as the priority coprocessor.\n- FHEVMExecutor has new validity checks (https://disco.l2beat.com/diff/eth:0xf444B2B5e45cD07F1E735122F53A2d70A8c81dB5/eth:0x0675c7BFA34aF170C49e6590A2cBf845c3029d7B).",
"isHighSeverity": true,
"changeCount": 51,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract FHEVMExecutor (eth:0xD82385dADa1ae3E969447f20A3164F6213100e75) [zama/ZamaFHEVMExecutor_v0_5_0] {\n +++ description: FHEVM executor that accepts encrypted operation requests, accounts for computation usage, and stores ciphertext handles for operation results. v0.5.0 rejects plaintext scalar operands and trivial-encryption inputs that do not fit their FHE type, checks division by zero in the shared binary-operation path, and adds a checkHandleType view that asserts the type of an initialized handle.\n template:\n- \"zama/ZamaFHEVMExecutor_v0_4_0\"\n+ \"zama/ZamaFHEVMExecutor_v0_5_0\"\n sourceHashes.1:\n- \"0x8521799e0a57218bcbd587c2f46222a266bbcbe2f27780cc0bf6ed66eb9cda1f\"\n+ \"0x270ee2b9f564ae13a2f925f057cc5baca30e031fab0362ab7ce086bdd2cd1a01\"\n description:\n- \"FHEVM executor that accepts encrypted operation requests, accounts for computation usage, and stores ciphertext handles for operation results. v0.4.0 adds the n-ary encrypted operations fheSum and fheIsIn (encrypted set membership) over bounded ciphertext collections.\"\n+ \"FHEVM executor that accepts encrypted operation requests, accounts for computation usage, and stores ciphertext handles for operation results. v0.5.0 rejects plaintext scalar operands and trivial-encryption inputs that do not fit their FHE type, checks division by zero in the shared binary-operation path, and adds a checkHandleType view that asserts the type of an initialized handle.\"\n values.$implementation:\n- \"eth:0xf444B2B5e45cD07F1E735122F53A2d70A8c81dB5\"\n+ \"eth:0x0675c7BFA34aF170C49e6590A2cBf845c3029d7B\"\n values.$pastUpgrades.5:\n+ [\"2026-10-05T16:11:11.000Z\",\"0x63594740e6849980ffeecf14392b8b7f3e1e382c2e1ea023eb7a3df345f61328\",[\"eth:0x0675c7BFA34aF170C49e6590A2cBf845c3029d7B\"]]\n values.$upgradeCount:\n- 5\n+ 6\n values.getVersion:\n- \"FHEVMExecutor v0.4.0\"\n+ \"FHEVMExecutor v0.5.0\"\n implementationNames.eth:0xf444B2B5e45cD07F1E735122F53A2d70A8c81dB5:\n- \"FHEVMExecutor\"\n implementationNames.eth:0x0675c7BFA34aF170C49e6590A2cBf845c3029d7B:\n+ \"FHEVMExecutor\"\n }\n```\n\n```diff\n EOA (zama:0x373E36A8684A3344E177C5894179845Cbe57AE44) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"zama:0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287\",\"description\":\"finalize encrypted input proof verification or rejection in InputVerification alone while priority mode is active.\",\"role\":\".gatewayPriorityCoprocessorTxSender\"}\n receivedPermissions.4:\n+ {\"permission\":\"interact\",\"from\":\"zama:0xd82cF70FC102028cd01acB87D0E107780ae4F41F\",\"description\":\"commit ciphertext and SNS ciphertext digests to CiphertextCommits alone while priority mode is active.\",\"role\":\".gatewayPriorityCoprocessorTxSender\"}\n receivedPermissions.6:\n+ {\"permission\":\"interact\",\"from\":\"zama:0xDE537Be194777A56f8B19d14079E6a78249390ab\",\"description\":\"finalize coprocessor consensus alone for encrypted input proofs and ciphertext material commitments while priority mode is active.\",\"role\":\".getPriorityCoprocessorTxSender\"}\n }\n```\n\n```diff\n contract SafeL2 (zama:0x5f0F86BcEad6976711C9B131bCa5D30E767fe2bE) [GnosisSafe] {\n +++ description: Gateway owner Safe. Its LayerZero governance module is outside the Zama Gateway protocol surface covered here.\n receivedPermissions.4.description:\n- \"create KMS contexts that immediately become current, destroy historical KMS contexts, update thresholds of any live context, manage coprocessors, custodians and host chains, transfer ownership, and unpause gateway workflow contracts.\"\n+ \"create KMS contexts that immediately become current, destroy historical KMS contexts, update thresholds of any live context, manage coprocessors, custodians and host chains, set or remove the priority coprocessor that alone finalizes coprocessor consensus, transfer ownership, and unpause gateway workflow contracts.\"\n }\n```\n\n```diff\n contract InputVerification (zama:0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287) [zama/InputVerification_v0_5_0] {\n +++ description: Gateway contract that receives encrypted input verification requests from registered and enabled host chains, collects coprocessor responses, and emits a threshold-signed attestation once coprocessor consensus is reached. Since v0.5.0, if GatewayConfig designates a priority coprocessor, that coprocessor's single response finalizes verification or rejection and the attestation carries only its signature. Ethereum InputVerifier verifies attestations against this contract's EIP-712 domain.\n template:\n- \"zama/InputVerification\"\n+ \"zama/InputVerification_v0_5_0\"\n sourceHashes.1:\n- \"0x58bb055397e294a46ebccbc53c94bb2494bf05acd7ad77f2fb7cc46b3ef1eb92\"\n+ \"0x5018850c43e4cdb57f9d66bfa3b13efd5321f0c3d39a78259aab0c007663a1ef\"\n description:\n- \"Gateway contract that receives encrypted input verification requests from registered and enabled host chains, collects coprocessor responses, and emits a threshold-signed attestation once coprocessor consensus is reached. Ethereum InputVerifier verifies attestations against this contract's EIP-712 domain.\"\n+ \"Gateway contract that receives encrypted input verification requests from registered and enabled host chains, collects coprocessor responses, and emits a threshold-signed attestation once coprocessor consensus is reached. Since v0.5.0, if GatewayConfig designates a priority coprocessor, that coprocessor's single response finalizes verification or rejection and the attestation carries only its signature. Ethereum InputVerifier verifies attestations against this contract's EIP-712 domain.\"\n values.$implementation:\n- \"zama:0xf9f0F5ef8301CF1573EBe0F45E13A4CabB621821\"\n+ \"zama:0xa9A3eA1cdD078a79bB31c3a284a4abA80bd0E8d8\"\n values.$pastUpgrades.4:\n+ [\"2026-10-08T10:05:10.000Z\",\"0x2dc9ffacebc169a90ee746b5818b83d470bf7dbc5855c1ae05268b76caf604aa\",[\"zama:0xa9A3eA1cdD078a79bB31c3a284a4abA80bd0E8d8\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.getVersion:\n- \"InputVerification v0.4.0\"\n+ \"InputVerification v0.5.0\"\n+++ description: Priority coprocessor transaction sender configured in GatewayConfig, or zero when disabled. While set, this single coprocessor finalizes encrypted input proof verification and rejection on its own and other coprocessor responses cannot finalize.\n+++ severity: HIGH\n values.gatewayPriorityCoprocessorTxSender:\n+ \"zama:0x373E36A8684A3344E177C5894179845Cbe57AE44\"\n fieldMeta.gatewayCoprocessorMajorityThreshold.description:\n- \"Minimum number of matching coprocessor responses required for an encrypted input proof to be verified or rejected.\"\n+ \"Minimum number of matching coprocessor responses required for an encrypted input proof to be verified or rejected. Inert while a priority coprocessor is set in GatewayConfig (see gatewayPriorityCoprocessorTxSender).\"\n fieldMeta.gatewayPriorityCoprocessorTxSender:\n+ {\"severity\":\"HIGH\",\"description\":\"Priority coprocessor transaction sender configured in GatewayConfig, or zero when disabled. While set, this single coprocessor finalizes encrypted input proof verification and rejection on its own and other coprocessor responses cannot finalize.\",\"type\":\"PERMISSION\"}\n implementationNames.zama:0xf9f0F5ef8301CF1573EBe0F45E13A4CabB621821:\n- \"InputVerification\"\n implementationNames.zama:0xa9A3eA1cdD078a79bB31c3a284a4abA80bd0E8d8:\n+ \"InputVerification\"\n }\n```\n\n```diff\n contract CiphertextCommits (zama:0xd82cF70FC102028cd01acB87D0E107780ae4F41F) [zama/CiphertextCommits_v0_5_0] {\n +++ description: Gateway contract that stores ciphertext and SNS ciphertext digests after coprocessor consensus, allowing decryption requests to reference committed ciphertext material. Digests referencing unregistered or disabled host chains are rejected. Since v0.5.0, if GatewayConfig designates a priority coprocessor, that coprocessor's single submission commits the material on its own.\n template:\n- \"zama/CiphertextCommits\"\n+ \"zama/CiphertextCommits_v0_5_0\"\n sourceHashes.1:\n- \"0xa3aa22a184258ca16a5d83ce495ae0d307d4c5ec9fda8a7622d4f95728f4af03\"\n+ \"0x2b3db0e0d5ff22923e545ffb64992573f75c3b020179bd81534fb16c054dfa7c\"\n description:\n- \"Gateway contract that stores ciphertext and SNS ciphertext digests after coprocessor consensus, allowing decryption requests to reference committed ciphertext material. Digests referencing unregistered or disabled host chains are rejected.\"\n+ \"Gateway contract that stores ciphertext and SNS ciphertext digests after coprocessor consensus, allowing decryption requests to reference committed ciphertext material. Digests referencing unregistered or disabled host chains are rejected. Since v0.5.0, if GatewayConfig designates a priority coprocessor, that coprocessor's single submission commits the material on its own.\"\n values.$implementation:\n- \"zama:0xB373Ae42736E3C266D4A5D090c00c7f0Bda06622\"\n+ \"zama:0x81a6CBD6B1bb0296BfFd38AD8584918640F35948\"\n values.$pastUpgrades.4:\n+ [\"2026-10-08T10:05:10.000Z\",\"0x2dc9ffacebc169a90ee746b5818b83d470bf7dbc5855c1ae05268b76caf604aa\",[\"zama:0x81a6CBD6B1bb0296BfFd38AD8584918640F35948\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.getVersion:\n- \"CiphertextCommits v0.4.0\"\n+ \"CiphertextCommits v0.5.0\"\n+++ description: Priority coprocessor transaction sender configured in GatewayConfig, or zero when disabled. While set, this single coprocessor commits ciphertext material on its own and other coprocessor submissions cannot finalize.\n+++ severity: HIGH\n values.gatewayPriorityCoprocessorTxSender:\n+ \"zama:0x373E36A8684A3344E177C5894179845Cbe57AE44\"\n fieldMeta.gatewayCoprocessorMajorityThreshold.description:\n- \"Minimum number of matching coprocessor submissions required before ciphertext material is committed.\"\n+ \"Minimum number of matching coprocessor submissions required before ciphertext material is committed. Inert while a priority coprocessor is set in GatewayConfig (see gatewayPriorityCoprocessorTxSender).\"\n fieldMeta.gatewayPriorityCoprocessorTxSender:\n+ {\"severity\":\"HIGH\",\"description\":\"Priority coprocessor transaction sender configured in GatewayConfig, or zero when disabled. While set, this single coprocessor commits ciphertext material on its own and other coprocessor submissions cannot finalize.\",\"type\":\"PERMISSION\"}\n implementationNames.zama:0xB373Ae42736E3C266D4A5D090c00c7f0Bda06622:\n- \"CiphertextCommits\"\n implementationNames.zama:0x81a6CBD6B1bb0296BfFd38AD8584918640F35948:\n+ \"CiphertextCommits\"\n }\n```\n\n```diff\n contract GatewayConfig (zama:0xDE537Be194777A56f8B19d14079E6a78249390ab) [zama/GatewayConfig_v0_7_0] {\n +++ description: Central configuration contract for the Zama Gateway. A KMS context snapshots node transaction senders, signers, and workflow thresholds; the owner can create new contexts, retune the thresholds of any live context, and destroy non-current contexts, which immediately invalidates them for decryption. Registered host chains can be disabled, re-enabled, or removed by the owner. Since v0.7.0 the owner can designate a priority coprocessor transaction sender whose single response finalizes coprocessor consensus in InputVerification and CiphertextCommits, making the coprocessor majority threshold inert, and coprocessor set and threshold updates are applied live without pausing InputVerification.\n template:\n- \"zama/GatewayConfig_v0_6_0\"\n+ \"zama/GatewayConfig_v0_7_0\"\n sourceHashes.1:\n- \"0xe903576aaecdd97c5036c6bc029149a11b44484c78d9c6b0d802a882d4744597\"\n+ \"0x26ff42c37647db207e8c9fa6bbc7ff8e6a15f782d4f85480a5fe711b95f25894\"\n description:\n- \"Central configuration contract for the Zama Gateway. A KMS context snapshots node transaction senders, signers, and workflow thresholds; the owner can create new contexts, retune the thresholds of any live context, and destroy non-current contexts, which immediately invalidates them for decryption. Registered host chains can be disabled, re-enabled, or removed by the owner.\"\n+ \"Central configuration contract for the Zama Gateway. A KMS context snapshots node transaction senders, signers, and workflow thresholds; the owner can create new contexts, retune the thresholds of any live context, and destroy non-current contexts, which immediately invalidates them for decryption. Registered host chains can be disabled, re-enabled, or removed by the owner. Since v0.7.0 the owner can designate a priority coprocessor transaction sender whose single response finalizes coprocessor consensus in InputVerification and CiphertextCommits, making the coprocessor majority threshold inert, and coprocessor set and threshold updates are applied live without pausing InputVerification.\"\n values.$implementation:\n- \"zama:0x1950aD98e834f6c07553365196d4CddeD179c536\"\n+ \"zama:0x94209410f6CAa4A8c6Fd7ED4AB67560eD8A3002C\"\n values.$pastUpgrades.5:\n+ [\"2026-10-08T10:05:10.000Z\",\"0x2dc9ffacebc169a90ee746b5818b83d470bf7dbc5855c1ae05268b76caf604aa\",[\"zama:0x94209410f6CAa4A8c6Fd7ED4AB67560eD8A3002C\"]]\n values.$upgradeCount:\n- 5\n+ 6\n values.getVersion:\n- \"GatewayConfig v0.6.0\"\n+ \"GatewayConfig v0.7.0\"\n+++ description: Priority coprocessor transaction sender, or zero when priority mode is disabled. While set, a single response from this registered coprocessor finalizes encrypted input proof verification and rejection in InputVerification and ciphertext material commitments in CiphertextCommits; the coprocessor majority threshold is inert and other coprocessors cannot finalize. The owner can set or remove it live, and updateCoprocessors cannot drop the active priority coprocessor or rotate its signer.\n+++ severity: HIGH\n values.getPriorityCoprocessorTxSender:\n+ \"zama:0x373E36A8684A3344E177C5894179845Cbe57AE44\"\n fieldMeta.owner.description:\n- \"Owner of GatewayConfig. This account creates and destroys KMS contexts, changes the thresholds of any live context, manages coprocessors, custodians and host chains (including disabling and removing them), transfers ownership, and unpauses gateway contracts. A newly created context becomes current immediately; older contexts remain selectable by Decryption requests until destroyed.\"\n+ \"Owner of GatewayConfig. This account creates and destroys KMS contexts, changes the thresholds of any live context, manages coprocessors, custodians and host chains (including disabling and removing them), sets or removes the priority coprocessor, transfers ownership, and unpauses gateway contracts. A newly created context becomes current immediately; older contexts remain selectable by Decryption requests until destroyed. Coprocessor set, threshold and priority updates are applied live without pausing InputVerification.\"\n fieldMeta.inputVerification.description:\n- \"InputVerification workflow contract paused and unpaused by GatewayConfig. Coprocessor set and threshold updates require this contract to be paused first.\"\n+ \"InputVerification workflow contract paused and unpaused by GatewayConfig. Since v0.7.0 coprocessor set, threshold and priority coprocessor updates are applied live without pausing this contract first.\"\n fieldMeta.getCoprocessorMajorityThreshold.description:\n- \"Minimum number of matching coprocessor messages required for gateway coprocessor consensus. Updates require InputVerification to be paused first.\"\n+ \"Minimum number of matching coprocessor messages required for gateway coprocessor consensus. Updates are applied live without pausing InputVerification. The threshold is inert while a priority coprocessor is set (see getPriorityCoprocessorTxSender).\"\n fieldMeta.getPriorityCoprocessorTxSender:\n+ {\"severity\":\"HIGH\",\"description\":\"Priority coprocessor transaction sender, or zero when priority mode is disabled. While set, a single response from this registered coprocessor finalizes encrypted input proof verification and rejection in InputVerification and ciphertext material commitments in CiphertextCommits; the coprocessor majority threshold is inert and other coprocessors cannot finalize. The owner can set or remove it live, and updateCoprocessors cannot drop the active priority coprocessor or rotate its signer.\",\"type\":\"PERMISSION\"}\n implementationNames.zama:0x1950aD98e834f6c07553365196d4CddeD179c536:\n- \"GatewayConfig\"\n implementationNames.zama:0x94209410f6CAa4A8c6Fd7ED4AB67560eD8A3002C:\n+ \"GatewayConfig\"\n }\n```"
}
]
},
{
"id": "0f767d21",
"date": "Thu, 01 Oct 2026 11:11:08 GMT",
"timestamp": 1790851379,
"description": "A Safe that is one of the signers of ZamaGovMultisigA (eth:0x69E55790880d0ABa56E48Ee1f7fc3834b0F5c223) lowered its own threshold from 3/5 to 2/5.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Safe (eth:0x69E55790880d0ABa56E48Ee1f7fc3834b0F5c223) [GnosisSafe] {\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```"
}
]
},
{
"id": "08457d02",
"date": "Thu, 17 Sep 2026 07:51:47 GMT",
"timestamp": 1789631397,
"description": "Add 17 new confidential wrappers (WBTC, AUSD, PENDLE and 14 Morpho vault shares)",
"isHighSeverity": true,
"changeCount": 327,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ConfidentialSteakUSDTWrapper (eth:0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789152239\n sinceBlock:\n+ 25956032\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T18:43:59.000Z\",\"0xe9f33dc7a110fea67894ef7f3ef9254918eaabeb7ad01facde7cefb240395b4d\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0x34822f7ff3c28eeffe2100070c17282c346ff85a1dff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000beef003c68896c7d2c3c60d363e8d71a49ab2bf9000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016436f6e666964656e7469616c20737465616b5553445400000000000000000000000000000000000000000000000000000000000000000000000000000000000a63737465616b555344540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ab646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c20737465616b55534454222c2273796d626f6c223a2263737465616b55534454222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f6620737465616b5553445420736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential steakUSDT\\\",\\\"symbol\\\":\\\"csteakUSDT\\\",\\\"description\\\":\\\"Confidential wrapper of steakUSDT shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":14680995207,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential steakUSDT\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"csteakUSDT\",\"underlying\":\"eth:0xbeef003C68896c7D2c3c60d363e8d71a49Ab2bf9\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialArmUSDCpWrapper (eth:0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789150751\n sinceBlock:\n+ 25955908\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T18:19:11.000Z\",\"0xd55cc3a9346ae5156efdfbbb3d628e8d93de08f419e3f0ec55ae90bde92e28c0\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0x644c44341fb497f2c95372332a363de4c13716dae4ff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000005dc53a23adc9f2bed98de6f59f7f309a7c71ff2b000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015436f6e666964656e7469616c2061726d5553444370000000000000000000000000000000000000000000000000000000000000000000000000000000000000096361726d5553444370000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2061726d5553444370222c2273796d626f6c223a226361726d5553444370222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f662061726d555344437020736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential armUSDCp\\\",\\\"symbol\\\":\\\"carmUSDCp\\\",\\\"description\\\":\\\"Confidential wrapper of armUSDCp shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":44322139,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential armUSDCp\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"carmUSDCp\",\"underlying\":\"eth:0x5dc53a23AdC9f2Bed98de6F59F7F309a7c71FF2B\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialRoxUSDCyWrapper (eth:0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789154375\n sinceBlock:\n+ 25956208\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T19:19:35.000Z\",\"0x7a7eadb1e667732e52a0064b3a1f253a562fb35d34d1bc96663bbdf0f95a8f1a\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0x1e6c1758ea30006c2f61217e9871a6078eabde730dff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000e0181090c22579b6a217f1522cbf8c9f1f0c1965000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015436f6e666964656e7469616c20726f7855534443790000000000000000000000000000000000000000000000000000000000000000000000000000000000000963726f785553444379000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c20726f785553444379222c2273796d626f6c223a2263726f785553444379222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f6620726f78555344437920736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential roxUSDCy\\\",\\\"symbol\\\":\\\"croxUSDCy\\\",\\\"description\\\":\\\"Confidential wrapper of roxUSDCy shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":2439415333,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential roxUSDCy\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"croxUSDCy\",\"underlying\":\"eth:0xE0181090c22579B6A217f1522cbf8c9f1F0C1965\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialBbqUSDCWrapper (eth:0x501b014f86a73A7199E00cB31C0e9565Ac51e51B) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789153067\n sinceBlock:\n+ 25956100\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T18:57:47.000Z\",\"0x889469791190aaf6a60a02c423bd1080bf1dd4bfb768f778521e3ca927690d59\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0x758c540d42b12937c09fd38fa132bee98db9dd9d0eff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000beeff2c5bf38f90e3482a8b19f12e5a6d2fca757000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014436f6e666964656e7469616c20626271555344430000000000000000000000000000000000000000000000000000000000000000000000000000000000000008636262715553444300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a5646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2062627155534443222c2273796d626f6c223a226362627155534443222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f66206262715553444320736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential bbqUSDC\\\",\\\"symbol\\\":\\\"cbbqUSDC\\\",\\\"description\\\":\\\"Confidential wrapper of bbqUSDC shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":1956111260,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential bbqUSDC\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"cbbqUSDC\",\"underlying\":\"eth:0xbeeff2C5bF38f90e3482a8b19F12E5a6D2FCa757\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0x501b014f86a73A7199E00cB31C0e9565Ac51e51B\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialArmUSDTpWrapper (eth:0x63a60aCC304b84eF829b263f28e7b636Bf77d45A) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789153331\n sinceBlock:\n+ 25956122\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T19:02:11.000Z\",\"0x46e9abc4237bb9560dc0595f6f18dd84cc984a09adfac882e44c84b37fcb23f0\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0x560fcb18c119c407d71736cdabda00a98dc7b5307bff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000bf29043164660c60a2a72cd15ffe2304e87b6838000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015436f6e666964656e7469616c2061726d5553445470000000000000000000000000000000000000000000000000000000000000000000000000000000000000096361726d5553445470000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2061726d5553445470222c2273796d626f6c223a226361726d5553445470222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f662061726d555344547020736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential armUSDTp\\\",\\\"symbol\\\":\\\"carmUSDTp\\\",\\\"description\\\":\\\"Confidential wrapper of armUSDTp shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":18928591,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential armUSDTp\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"carmUSDTp\",\"underlying\":\"eth:0xBf29043164660C60A2a72Cd15FFe2304e87B6838\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0x63a60aCC304b84eF829b263f28e7b636Bf77d45A\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialFAUSDeWrapper (eth:0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789148387\n sinceBlock:\n+ 25955712\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T17:39:47.000Z\",\"0x7eef71a0892e61b5b1db77cc9443cf2951497ef28c483823b22b69bf623c5f24\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0x2f395b4b3182fbeb1513ac72de45fd8382496e4788ff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000032401b9fb79065bc15949de0bd43927492f02f0c000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013436f6e666964656e7469616c20664155534465000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007636641555344650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c20664155534465222c2273796d626f6c223a2263664155534465222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f662066415553446520736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential fAUSDe\\\",\\\"symbol\\\":\\\"cfAUSDe\\\",\\\"description\\\":\\\"Confidential wrapper of fAUSDe shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":120155535,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential fAUSDe\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"cfAUSDe\",\"underlying\":\"eth:0x32401B9fb79065Bc15949DE0BD43927492f02F0C\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialArmUSDCsWrapper (eth:0x77F8207ee451441336538bA07a2F425780dED8DB) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789151411\n sinceBlock:\n+ 25955963\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T18:30:11.000Z\",\"0x96d24e2718e693259e6f30d476fc2a1157018ee8b4978f224807e2ecb06f6c56\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0x04eede51a52f5c474b858c4dec93e3f8ddb87fba80ff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000a2eaad0d586cf9fd73bb2c09cf6a7e3e187d68cd000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015436f6e666964656e7469616c2061726d5553444373000000000000000000000000000000000000000000000000000000000000000000000000000000000000096361726d5553444373000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2061726d5553444373222c2273796d626f6c223a226361726d5553444373222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f662061726d555344437320736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential armUSDCs\\\",\\\"symbol\\\":\\\"carmUSDCs\\\",\\\"description\\\":\\\"Confidential wrapper of armUSDCs shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":48148590,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential armUSDCs\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"carmUSDCs\",\"underlying\":\"eth:0xA2EAaD0D586cF9FD73bb2c09cF6A7E3e187D68cd\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0x77F8207ee451441336538bA07a2F425780dED8DB\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialBbqUSDTWrapper (eth:0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789152695\n sinceBlock:\n+ 25956070\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T18:51:35.000Z\",\"0x015d053c281a8ebb13d7170b1f91cdbac616e0aff901335a9cdb542dd15137dd\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0x4c174f25773bdd4f4283b52e5a6e86343af1338f0fff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000beeff07d991c04cd640de9f15c08ba59c4fedeb7000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014436f6e666964656e7469616c20626271555344540000000000000000000000000000000000000000000000000000000000000000000000000000000000000008636262715553445400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a5646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2062627155534454222c2273796d626f6c223a226362627155534454222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f66206262715553445420736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential bbqUSDT\\\",\\\"symbol\\\":\\\"cbbqUSDT\\\",\\\"description\\\":\\\"Confidential wrapper of bbqUSDT shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":528600765,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential bbqUSDT\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"cbbqUSDT\",\"underlying\":\"eth:0xbeeff07d991C04CD640DE9F15C08ba59c4FEDEb7\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialPENDLEWrapper (eth:0x8900123F7e17709C1D80eda1E611A9503Cf1B3df) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789150991\n sinceBlock:\n+ 25955928\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T18:23:11.000Z\",\"0x81bc67cd541d90df6904fd05608b64880b98be74fb5c1c0f5e4f17a0ec779561\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0xba6c9ebe37b031712a8c7bc4ad41ca77a160d6ab93ff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000808507121b80c02388fad14726482e061b8da827000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013436f6e666964656e7469616c2050454e444c450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076350454e444c450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2050454e444c45222c2273796d626f6c223a226350454e444c45222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f662050454e444c4520736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential PENDLE\\\",\\\"symbol\\\":\\\"cPENDLE\\\",\\\"description\\\":\\\"Confidential wrapper of PENDLE shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":22973360000,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential PENDLE\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"cPENDLE\",\"underlying\":\"eth:0x808507121B80c02388fAd14726482e061B8da827\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0x8900123F7e17709C1D80eda1E611A9503Cf1B3df\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract Safe (eth:0x8c0E2c46F96756C49DBd6723F4C57a03a254B4B0) [GnosisSafe] {\n +++ description: None\n values.$members.2:\n- \"eth:0x8a686b039c0323e990Be80991a16bdaAb78113AC\"\n+ \"eth:0xFd23FcEFC76B5fCe924d0D460D9AE4a0e1CF0B99\"\n }\n```\n\n```diff\n contract ConfidentialPAPYWrapper (eth:0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789151975\n sinceBlock:\n+ 25956010\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T18:39:35.000Z\",\"0xeb2532285d2ac5d8939481a8bfa78ddd8fc0418d031cfc525d97bf7201939a66\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0x2982980665e6d3df2f508ec3225920cf36877b15caff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000b344e331a3cda61d329fb3cca2be5942da87c418000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef300000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011436f6e666964656e7469616c205041505900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056350415059000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2050415059222c2273796d626f6c223a226350415059222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f66205041505920736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential PAPY\\\",\\\"symbol\\\":\\\"cPAPY\\\",\\\"description\\\":\\\"Confidential wrapper of PAPY shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":310251261912,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential PAPY\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"cPAPY\",\"underlying\":\"eth:0xB344e331A3cDa61D329fb3Cca2Be5942da87c418\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialFcUSDTWrapper (eth:0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789388567\n sinceBlock:\n+ 25975670\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-14T12:22:47.000Z\",\"0xac60b0c2440232297fb1e4b7aabe445e32b69cc56d0d7be02bef6f4bba219ff9\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0xa7bea747da47fb3d7e6e2afda103a240e2e974e913ff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000b48c056c5608ba2ee4cd94af2bf4b1f25295bd7e000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013436f6e666964656e7469616c20666355534454000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007636663555344540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a2646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c20666355534454222c2273796d626f6c223a2263666355534454222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f662066635553445420736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential fcUSDT\\\",\\\"symbol\\\":\\\"cfcUSDT\\\",\\\"description\\\":\\\"Confidential wrapper of fcUSDT shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":1680592832924,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential fcUSDT\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"cfcUSDT\",\"underlying\":\"eth:0xb48C056C5608bA2Ee4cD94AF2bF4b1F25295Bd7e\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialRoxcUSDCWrapper (eth:0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789153955\n sinceBlock:\n+ 25956174\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T19:12:35.000Z\",\"0x3ef21251bb814e05e1ad9812ad70d000318e223d8655c395944d1ca345984f7a\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0xf3c25fec6e0e39fa9bb6dafe9cbc5e21e3da59e23dff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000c207d3f66537d7f66456808379a0e560cf20da36000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015436f6e666964656e7469616c20726f7863555344430000000000000000000000000000000000000000000000000000000000000000000000000000000000000963726f786355534443000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c20726f786355534443222c2273796d626f6c223a2263726f786355534443222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f6620726f78635553444320736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential roxcUSDC\\\",\\\"symbol\\\":\\\"croxcUSDC\\\",\\\"description\\\":\\\"Confidential wrapper of roxcUSDC shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":7942254635408,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential roxcUSDC\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"croxcUSDC\",\"underlying\":\"eth:0xc207d3f66537D7F66456808379A0E560cF20Da36\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract DAO (eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3) [zama/ZamaDAO] {\n +++ description: Aragon DAO that stores governance state and executes proposal action batches.\n directlyReceivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.3:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.4:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x501b014f86a73A7199E00cB31C0e9565Ac51e51B\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.5:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x63a60aCC304b84eF829b263f28e7b636Bf77d45A\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.10:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.11:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x77F8207ee451441336538bA07a2F425780dED8DB\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.12:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.15:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x8900123F7e17709C1D80eda1E611A9503Cf1B3df\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.16:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.17:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.20:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.24:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.26:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.31:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.36:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.39:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xF921A5B0634f4236B21A4e948317abf9a2E86B6f\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\"}\n directlyReceivedPermissions.40:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73\",\"role\":\"admin\"}\n directlyReceivedPermissions.41:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c\",\"role\":\"admin\"}\n directlyReceivedPermissions.43:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f\",\"role\":\"admin\"}\n directlyReceivedPermissions.44:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x501b014f86a73A7199E00cB31C0e9565Ac51e51B\",\"role\":\"admin\"}\n directlyReceivedPermissions.45:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x63a60aCC304b84eF829b263f28e7b636Bf77d45A\",\"role\":\"admin\"}\n directlyReceivedPermissions.49:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6\",\"role\":\"admin\"}\n directlyReceivedPermissions.51:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x77F8207ee451441336538bA07a2F425780dED8DB\",\"role\":\"admin\"}\n directlyReceivedPermissions.52:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273\",\"role\":\"admin\"}\n directlyReceivedPermissions.55:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x8900123F7e17709C1D80eda1E611A9503Cf1B3df\",\"role\":\"admin\"}\n directlyReceivedPermissions.56:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c\",\"role\":\"admin\"}\n directlyReceivedPermissions.57:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F\",\"role\":\"admin\"}\n directlyReceivedPermissions.60:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30\",\"role\":\"admin\"}\n directlyReceivedPermissions.62:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC\",\"role\":\"admin\"}\n directlyReceivedPermissions.64:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B\",\"role\":\"admin\"}\n directlyReceivedPermissions.69:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d\",\"role\":\"admin\"}\n directlyReceivedPermissions.73:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2\",\"role\":\"admin\"}\n directlyReceivedPermissions.76:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xF921A5B0634f4236B21A4e948317abf9a2E86B6f\",\"role\":\"admin\"}\n }\n```\n\n```diff\n contract ConfidentialPendleUSDCWrapper (eth:0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789150499\n sinceBlock:\n+ 25955887\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T18:14:59.000Z\",\"0x245c01d53b1793bf5bcdcc33260534472552aeb287fa76e0330648a25385f7f1\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0x0c1aa706cc1144ed21d09130a4f9078a921fbd5033ff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000055c1b6e461a6334b567baf0feb5d728715446f05000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017436f6e666964656e7469616c2070656e646c6555534443000000000000000000000000000000000000000000000000000000000000000000000000000000000b6370656e646c655553444300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ae646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2070656e646c6555534443222c2273796d626f6c223a226370656e646c6555534443222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f662070656e646c655553444320736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential pendleUSDC\\\",\\\"symbol\\\":\\\"cpendleUSDC\\\",\\\"description\\\":\\\"Confidential wrapper of pendleUSDC shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":501767205337,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential pendleUSDC\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"cpendleUSDC\",\"underlying\":\"eth:0x55C1B6e461a6334B567bAF0FEb5D728715446f05\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialArmUSDTsWrapper (eth:0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789150187\n sinceBlock:\n+ 25955861\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T18:09:47.000Z\",\"0x0126561c5f1b610e7f7dac5a364b5e6122bf5c3cb86f56908b94a94893df33b5\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0xd1389d02871d3a639bc4d6aba33b056ab38002446aff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a0000000000000000000000000500ae64100d7dbdb640531085c2f5d40cdc8930d000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015436f6e666964656e7469616c2061726d5553445473000000000000000000000000000000000000000000000000000000000000000000000000000000000000096361726d5553445473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2061726d5553445473222c2273796d626f6c223a226361726d5553445473222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f662061726d555344547320736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential armUSDTs\\\",\\\"symbol\\\":\\\"carmUSDTs\\\",\\\"description\\\":\\\"Confidential wrapper of armUSDTs shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":21141620,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential armUSDTs\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"carmUSDTs\",\"underlying\":\"eth:0x500aE64100D7DbDb640531085C2F5d40cDC8930D\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ZamaGovMultisigB (eth:0xBc860b6a4C860C5424B84A056E53ACFb2C99a38F) [zama/Multisig] {\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n+++ description: Current multisig members reconstructed from MembersAdded and MembersRemoved events.\n values.$members.5:\n+ \"eth:0x8aA8D71520d88a1Ed2B4257348134b94e00A9978\"\n+++ description: Number of addresses currently listed as multisig members.\n+++ severity: HIGH\n values.addresslistLength:\n- 5\n+ 6\n receivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.3:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.4:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x501b014f86a73A7199E00cB31C0e9565Ac51e51B\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.5:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x63a60aCC304b84eF829b263f28e7b636Bf77d45A\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.10:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.11:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x77F8207ee451441336538bA07a2F425780dED8DB\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.12:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.15:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x8900123F7e17709C1D80eda1E611A9503Cf1B3df\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.16:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.17:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.20:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.26:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.28:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.33:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.38:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.41:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xF921A5B0634f4236B21A4e948317abf9a2E86B6f\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.42:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.43:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.45:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.46:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x501b014f86a73A7199E00cB31C0e9565Ac51e51B\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.47:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x63a60aCC304b84eF829b263f28e7b636Bf77d45A\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.51:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.53:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x77F8207ee451441336538bA07a2F425780dED8DB\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.54:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.57:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x8900123F7e17709C1D80eda1E611A9503Cf1B3df\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.58:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.59:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.62:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.64:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.66:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.71:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.75:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.78:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xF921A5B0634f4236B21A4e948317abf9a2E86B6f\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n }\n```\n\n```diff\n contract ConfidentialWBTCWrapper (eth:0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789148087\n sinceBlock:\n+ 25955687\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T17:34:47.000Z\",\"0x2542e4587e213e5d97c9589fb98ce80648043a69f8e55417b045677f64bac13e\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0xb293c90de6003b4312a23ada60e8ae0e519e32ee59ff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef300000000000000000000000000000000000000000000000000000000000002600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011436f6e666964656e7469616c205742544300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056357425443000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2057425443222c2273796d626f6c223a226357425443222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f66205742544320736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential WBTC\\\",\\\"symbol\\\":\\\"cWBTC\\\",\\\"description\\\":\\\"Confidential wrapper of WBTC shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":2455315,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential WBTC\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":100,\"symbol\":\"cWBTC\",\"underlying\":\"eth:0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ZamaGovMultisigA (eth:0xE43c73aAb2b6aBBad6d0461997ce1cfea5ABe66f) [zama/Multisig] {\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n receivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.3:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.4:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x501b014f86a73A7199E00cB31C0e9565Ac51e51B\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.5:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x63a60aCC304b84eF829b263f28e7b636Bf77d45A\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.10:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.11:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x77F8207ee451441336538bA07a2F425780dED8DB\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.12:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.15:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x8900123F7e17709C1D80eda1E611A9503Cf1B3df\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.16:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.17:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.20:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.26:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.28:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.33:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.38:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.41:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xF921A5B0634f4236B21A4e948317abf9a2E86B6f\",\"description\":\"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\",\"role\":\".owner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.42:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.43:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.45:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.46:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x501b014f86a73A7199E00cB31C0e9565Ac51e51B\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.47:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x63a60aCC304b84eF829b263f28e7b636Bf77d45A\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.51:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.53:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x77F8207ee451441336538bA07a2F425780dED8DB\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.54:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.57:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x8900123F7e17709C1D80eda1E611A9503Cf1B3df\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.58:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.59:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.62:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.64:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.66:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.71:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.75:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.78:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xF921A5B0634f4236B21A4e948317abf9a2E86B6f\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n }\n```\n\n```diff\n contract ConfidentialAUSDWrapper (eth:0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789146719\n sinceBlock:\n+ 25955573\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T17:11:59.000Z\",\"0x696d006e217f5ccda05c1bf61a575622009037f45ec832dac617dbce7edaf677\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0xda30806eba9dd325b0ab4aa4b31b25b773035efd6bff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000efe302beaa2b3e6e1b18d08d69a9012a000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000260e816d97f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000011436f6e666964656e7469616c204155534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000056341555344000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009c646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2041555344222c2273796d626f6c223a226341555344222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f66204155534420736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential AUSD\\\",\\\"symbol\\\":\\\"cAUSD\\\",\\\"description\\\":\\\"Confidential wrapper of AUSD shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0xe816d97f\",\"inferredTotalSupply\":196279400000,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential AUSD\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1,\"symbol\":\"cAUSD\",\"underlying\":\"eth:0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract ConfidentialTokenWrappersRegistry (eth:0xeb5015fF021DB115aCe010f23F55C2591059bBA0) [zama/ConfidentialTokenWrappersRegistry] {\n +++ description: Registry for Zama confidential token wrappers.\n values.getTokenConfidentialTokenPairs.9:\n+ {\"tokenAddress\":\"eth:0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a\",\"confidentialTokenAddress\":\"eth:0xEa9A15A29DD180c40442142CaeEfC491d37bfDB2\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.10:\n+ {\"tokenAddress\":\"eth:0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599\",\"confidentialTokenAddress\":\"eth:0xd86aE89C089B380f064Fe01899B4071F1eb6Bb3d\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.11:\n+ {\"tokenAddress\":\"eth:0x32401B9fb79065Bc15949DE0BD43927492f02F0C\",\"confidentialTokenAddress\":\"eth:0x76A3f985315aAc9789Cb5BF8A5bb83BFF55FD5a6\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.12:\n+ {\"tokenAddress\":\"eth:0x3d5EcCb62974178236A768A7ef14D3ce468Fbe91\",\"confidentialTokenAddress\":\"eth:0xF921A5B0634f4236B21A4e948317abf9a2E86B6f\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.13:\n+ {\"tokenAddress\":\"eth:0x500aE64100D7DbDb640531085C2F5d40cDC8930D\",\"confidentialTokenAddress\":\"eth:0xbaC6DeDf2C10D6D381F9DBd9EFd69D93FfCef50B\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.14:\n+ {\"tokenAddress\":\"eth:0x55C1B6e461a6334B567bAF0FEb5D728715446f05\",\"confidentialTokenAddress\":\"eth:0xb6e5299fc56053DD5440104Fd6Fd2A3CD064edbC\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.15:\n+ {\"tokenAddress\":\"eth:0x5dc53a23AdC9f2Bed98de6F59F7F309a7c71FF2B\",\"confidentialTokenAddress\":\"eth:0x2ebBd099f66b0ca94DD82B4c06fe3eEf6AFf853c\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.16:\n+ {\"tokenAddress\":\"eth:0x808507121B80c02388fAd14726482e061B8da827\",\"confidentialTokenAddress\":\"eth:0x8900123F7e17709C1D80eda1E611A9503Cf1B3df\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.17:\n+ {\"tokenAddress\":\"eth:0xA2EAaD0D586cF9FD73bb2c09cF6A7E3e187D68cd\",\"confidentialTokenAddress\":\"eth:0x77F8207ee451441336538bA07a2F425780dED8DB\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.18:\n+ {\"tokenAddress\":\"eth:0xB344e331A3cDa61D329fb3Cca2Be5942da87c418\",\"confidentialTokenAddress\":\"eth:0x9ABb8f3dC2863B1F108DeD7ea41902fEF6732A8c\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.19:\n+ {\"tokenAddress\":\"eth:0xbeef003C68896c7D2c3c60d363e8d71a49Ab2bf9\",\"confidentialTokenAddress\":\"eth:0x1F6A937119c0c34Db0a2c4F000386a3BfD4A9e73\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.20:\n+ {\"tokenAddress\":\"eth:0xbeeff07d991C04CD640DE9F15C08ba59c4FEDEb7\",\"confidentialTokenAddress\":\"eth:0x80Ae7dbCe3c1696d3eeD04Ec8348c3C432322273\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.21:\n+ {\"tokenAddress\":\"eth:0xbeeff2C5bF38f90e3482a8b19F12E5a6D2FCa757\",\"confidentialTokenAddress\":\"eth:0x501b014f86a73A7199E00cB31C0e9565Ac51e51B\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.22:\n+ {\"tokenAddress\":\"eth:0xBf29043164660C60A2a72Cd15FFe2304e87B6838\",\"confidentialTokenAddress\":\"eth:0x63a60aCC304b84eF829b263f28e7b636Bf77d45A\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.23:\n+ {\"tokenAddress\":\"eth:0xc207d3f66537D7F66456808379A0E560cF20Da36\",\"confidentialTokenAddress\":\"eth:0xB1B18Ad1F16D744c470cb6B09Cb826AfFcc9EB30\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.24:\n+ {\"tokenAddress\":\"eth:0xE0181090c22579B6A217f1522cbf8c9f1F0C1965\",\"confidentialTokenAddress\":\"eth:0x4FCCF8046FB7FB7AB76321BD39C27453e396B88f\",\"isValid\":true}\n values.getTokenConfidentialTokenPairs.25:\n+ {\"tokenAddress\":\"eth:0xb48C056C5608bA2Ee4cD94AF2bF4b1F25295Bd7e\",\"confidentialTokenAddress\":\"eth:0xA28A369Df348ac232E4DAF7B0Ef90280d8707D7F\",\"isValid\":true}\n values.getTokenConfidentialTokenPairsLength:\n- 9\n+ 26\n }\n```\n\n```diff\n contract ConfidentialArmcWBTCWrapper (eth:0xF921A5B0634f4236B21A4e948317abf9a2E86B6f) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n type:\n- \"EOA\"\n+ \"Contract\"\n proxyType:\n- \"EOA\"\n+ \"EIP1967 proxy\"\n template:\n+ \"zama/ConfidentialWrapper\"\n sourceHashes:\n+ [\"0x7df5501f3f5ffd35e0c61153fcd76f37533ab73a80adf20a7a19b30c246faea3\",\"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"]\n description:\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n deployerAddress:\n+ \"eth:0xe02e3b1cbEc07FC8D03B2eD15ddCe743403A013b\"\n sinceTimestamp:\n+ 1789148987\n sinceBlock:\n+ 25955762\n values:\n+ {\"$admin\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"$implementation\":\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"$pastUpgrades\":[[\"2026-09-11T17:49:47.000Z\",\"0xd938d016e57611121abc327202b921dc60afe8d505b7eaee1f0dd7dd67eca127\",[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\"]]],\"$upgradeCount\":1,\"blockedUsers\":[],\"confidentialProtocolId\":1,\"confidentialTotalSupply\":\"0xdd80ab784134afca1c9b4e212234cbd1efc5af6adeff00000000000000010500\",\"constructorArgs\":[\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\",\"0x6e690fe60000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001a00000000000000000000000003d5eccb62974178236a768a7ef14d3ce468fbe91000000000000000000000000b6d69d5f334d8b97b194617b53c6ab62f8681ef30000000000000000000000000000000000000000000000000000000000000280000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000015436f6e666964656e7469616c2061726d6357425443000000000000000000000000000000000000000000000000000000000000000000000000000000000000096361726d6357425443000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a8646174613a6170706c69636174696f6e2f6a736f6e3b757466382c7b226e616d65223a22436f6e666964656e7469616c2061726d6357425443222c2273796d626f6c223a226361726d6357425443222c226465736372697074696f6e223a22436f6e666964656e7469616c2077726170706572206f662061726d635742544320736869656c64696e6720697420696e746f206120636f6e666964656e7469616c20746f6b656e227d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\"],\"contractURI\":\"data:application/json;utf8,{\\\"name\\\":\\\"Confidential armcWBTC\\\",\\\"symbol\\\":\\\"carmcWBTC\\\",\\\"description\\\":\\\"Confidential wrapper of armcWBTC shielding it into a confidential token\\\"}\",\"decimals\":6,\"fheAcl\":\"eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6\",\"fheCoprocessor\":\"eth:0xD82385dADa1ae3E969447f20A3164F6213100e75\",\"fheKmsVerifier\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"getUnderlyingDenyListSelector\":\"0x00000000\",\"inferredTotalSupply\":245032,\"maxTotalSupply\":\"18446744073709551615\",\"name\":\"Confidential armcWBTC\",\"observers\":[],\"owner\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\",\"paused\":false,\"pauser\":\"eth:0x0000000000000000000000000000000000000000\",\"pendingOwner\":\"eth:0x0000000000000000000000000000000000000000\",\"rate\":1000000000000,\"symbol\":\"carmcWBTC\",\"underlying\":\"eth:0x3d5EcCb62974178236A768A7ef14D3ce468Fbe91\",\"UPGRADE_INTERFACE_VERSION\":\"5.0.0\"}\n fieldMeta:\n+ {\"owner\":{\"severity\":\"HIGH\",\"description\":\"Current owner of the wrapper.\",\"type\":\"PERMISSION\"},\"pendingOwner\":{\"severity\":\"HIGH\",\"description\":\"Pending owner for a two-step ownership transfer.\",\"type\":\"PERMISSION\"},\"underlying\":{\"description\":\"ERC-20 token escrowed by this wrapper.\"},\"getUnderlyingDenyListSelector\":{\"severity\":\"HIGH\",\"description\":\"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\",\"type\":\"RISK_PARAMETER\"},\"blockedUsers\":{\"severity\":\"HIGH\",\"description\":\"Wrapper-local denylist reconstructed from UserBlocked and UserUnblocked events.\",\"type\":\"PERMISSION\"},\"observers\":{\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"},\"pauser\":{\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"},\"paused\":{\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"},\"fheAcl\":{\"description\":\"Zama ACL contract used by the confidential token stack to check which accounts/contracts may use encrypted handles.\"},\"fheCoprocessor\":{\"description\":\"Zama FHE coprocessor/executor contract that receives encrypted-operation requests and stores encrypted-result handles.\"},\"fheKmsVerifier\":{\"description\":\"Zama KMS verifier contract used to verify threshold decryption/signature material returned by the offchain KMS.\"}}\n implementationNames:\n+ {\"eth:0xF921A5B0634f4236B21A4e948317abf9a2E86B6f\":\"ERC1967Proxy\",\"eth:0x35E980f5Fe42BBA64C1ed0332AADACb98faBDDaD\":\"ConfidentialWrapper\"}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```"
}
]
},
{
"id": "4697bd9a",
"date": "Thu, 27 Aug 2026 12:39:40 GMT",
"timestamp": 1787834146,
"description": "All nine confidential token wrappers were upgraded to a shared new implementation named `ConfidentialWrapper` (eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8). Compared to the previous `ConfidentialWrapperV3`, the upgrade adds two subsystems:\n\n1. Observers: the owner can add/remove observer accounts that receive a wildcard, non-expiring user-decryption delegation over all wrapper-owned encrypted handles, i.e. they can decrypt every confidential balance and transfer amount of the wrapper.\n2. Pausing: an owner-set pauser address can pause wrapping, unwrapping, unwrap finalization and confidential transfers; only the owner can unpause.",
"isHighSeverity": true,
"changeCount": 171,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ConfidentialSteakcUSDCWrapper (eth:0x66Bf74E96900D1a19c7070D939D124f2F565C458) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n template:\n- \"zama/ConfidentialWrapperV3\"\n+ \"zama/ConfidentialWrapper\"\n sourceHashes.1:\n- \"0xc6ef75f9a2275b9cfb58b0322dfb55b63e1630022b171af50f1851ee8052447b\"\n+ \"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"\n description:\n- \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\"\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n values.$implementation:\n- \"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5\"\n+ \"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"\n values.$pastUpgrades.2:\n+ [\"2026-08-25T15:59:35.000Z\",\"0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0\",[\"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"]]\n values.$upgradeCount:\n- 2\n+ 3\n+++ description: Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\n+++ severity: HIGH\n values.getUnderlyingDenyListSelector:\n- {\"isSet\":false,\"selector\":\"0x00000000\"}\n+ \"0x00000000\"\n+++ description: Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\n+++ severity: HIGH\n values.observers:\n+ []\n+++ description: Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\n values.paused:\n+ false\n+++ description: Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\n values.pauser:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n fieldMeta.getUnderlyingDenyListSelector.description:\n- \"Underlying-token denylist hook used by the wrapper. If enabled, the wrapper calls this selector on the underlying token before restricted operations.\"\n+ \"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\"\n fieldMeta.observers:\n+ {\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"}\n fieldMeta.pauser:\n+ {\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"}\n fieldMeta.paused:\n+ {\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5:\n- \"ConfidentialWrapperV3\"\n implementationNames.eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8:\n+ \"ConfidentialWrapper\"\n }\n```\n\n```diff\n contract ConfidentialXAUTWrapper (eth:0x73cc9aF9d6BEFdb3c3fAf8a5E8c05Cb95FdaEEf1) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n template:\n- \"zama/ConfidentialWrapperV3\"\n+ \"zama/ConfidentialWrapper\"\n sourceHashes.1:\n- \"0xc6ef75f9a2275b9cfb58b0322dfb55b63e1630022b171af50f1851ee8052447b\"\n+ \"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"\n description:\n- \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\"\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n values.$implementation:\n- \"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5\"\n+ \"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"\n values.$pastUpgrades.3:\n+ [\"2026-08-25T15:59:35.000Z\",\"0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0\",[\"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"]]\n values.$upgradeCount:\n- 3\n+ 4\n+++ description: Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\n+++ severity: HIGH\n values.getUnderlyingDenyListSelector:\n- {\"isSet\":true,\"selector\":\"0xfbac3951\"}\n+ \"0xfbac3951\"\n+++ description: Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\n+++ severity: HIGH\n values.observers:\n+ []\n+++ description: Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\n values.paused:\n+ false\n+++ description: Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\n values.pauser:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n fieldMeta.getUnderlyingDenyListSelector.description:\n- \"Underlying-token denylist hook used by the wrapper. If enabled, the wrapper calls this selector on the underlying token before restricted operations.\"\n+ \"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\"\n fieldMeta.observers:\n+ {\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"}\n fieldMeta.pauser:\n+ {\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"}\n fieldMeta.paused:\n+ {\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5:\n- \"ConfidentialWrapperV3\"\n implementationNames.eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8:\n+ \"ConfidentialWrapper\"\n }\n```\n\n```diff\n contract ConfidentialZAMAWrapper (eth:0x80CB147Fd86dC6dEe3Eee7e4Cee33d1397d98071) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n template:\n- \"zama/ConfidentialWrapperV3\"\n+ \"zama/ConfidentialWrapper\"\n sourceHashes.1:\n- \"0xc6ef75f9a2275b9cfb58b0322dfb55b63e1630022b171af50f1851ee8052447b\"\n+ \"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"\n description:\n- \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\"\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n values.$implementation:\n- \"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5\"\n+ \"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"\n values.$pastUpgrades.3:\n+ [\"2026-08-25T15:59:35.000Z\",\"0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0\",[\"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"]]\n values.$upgradeCount:\n- 3\n+ 4\n+++ description: Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\n+++ severity: HIGH\n values.getUnderlyingDenyListSelector:\n- {\"isSet\":false,\"selector\":\"0x00000000\"}\n+ \"0x00000000\"\n+++ description: Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\n+++ severity: HIGH\n values.observers:\n+ []\n+++ description: Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\n values.paused:\n+ false\n+++ description: Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\n values.pauser:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n fieldMeta.getUnderlyingDenyListSelector.description:\n- \"Underlying-token denylist hook used by the wrapper. If enabled, the wrapper calls this selector on the underlying token before restricted operations.\"\n+ \"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\"\n fieldMeta.observers:\n+ {\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"}\n fieldMeta.pauser:\n+ {\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"}\n fieldMeta.paused:\n+ {\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5:\n- \"ConfidentialWrapperV3\"\n implementationNames.eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8:\n+ \"ConfidentialWrapper\"\n }\n```\n\n```diff\n contract ConfidentialBRONWrapper (eth:0x85dE671c3bec1aDeD752c3Cea943521181C826bc) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n template:\n- \"zama/ConfidentialWrapperV3\"\n+ \"zama/ConfidentialWrapper\"\n sourceHashes.1:\n- \"0xc6ef75f9a2275b9cfb58b0322dfb55b63e1630022b171af50f1851ee8052447b\"\n+ \"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"\n description:\n- \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\"\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n values.$implementation:\n- \"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5\"\n+ \"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"\n values.$pastUpgrades.3:\n+ [\"2026-08-25T15:59:35.000Z\",\"0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0\",[\"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"]]\n values.$upgradeCount:\n- 3\n+ 4\n+++ description: Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\n+++ severity: HIGH\n values.getUnderlyingDenyListSelector:\n- {\"isSet\":false,\"selector\":\"0x00000000\"}\n+ \"0x00000000\"\n+++ description: Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\n+++ severity: HIGH\n values.observers:\n+ []\n+++ description: Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\n values.paused:\n+ false\n+++ description: Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\n values.pauser:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n fieldMeta.getUnderlyingDenyListSelector.description:\n- \"Underlying-token denylist hook used by the wrapper. If enabled, the wrapper calls this selector on the underlying token before restricted operations.\"\n+ \"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\"\n fieldMeta.observers:\n+ {\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"}\n fieldMeta.pauser:\n+ {\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"}\n fieldMeta.paused:\n+ {\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5:\n- \"ConfidentialWrapperV3\"\n implementationNames.eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8:\n+ \"ConfidentialWrapper\"\n }\n```\n\n```diff\n contract ConfidentialTGBPWrapper (eth:0xa873750ccBafD5ec7Dd13bfD5237d7129832eDD9) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n template:\n- \"zama/ConfidentialWrapperV3\"\n+ \"zama/ConfidentialWrapper\"\n sourceHashes.1:\n- \"0xc6ef75f9a2275b9cfb58b0322dfb55b63e1630022b171af50f1851ee8052447b\"\n+ \"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"\n description:\n- \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\"\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n values.$implementation:\n- \"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5\"\n+ \"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"\n values.$pastUpgrades.3:\n+ [\"2026-08-25T15:59:35.000Z\",\"0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0\",[\"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"]]\n values.$upgradeCount:\n- 3\n+ 4\n+++ description: Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\n+++ severity: HIGH\n values.getUnderlyingDenyListSelector:\n- {\"isSet\":true,\"selector\":\"0x97f735d5\"}\n+ \"0x97f735d5\"\n+++ description: Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\n+++ severity: HIGH\n values.observers:\n+ []\n+++ description: Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\n values.paused:\n+ false\n+++ description: Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\n values.pauser:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n fieldMeta.getUnderlyingDenyListSelector.description:\n- \"Underlying-token denylist hook used by the wrapper. If enabled, the wrapper calls this selector on the underlying token before restricted operations.\"\n+ \"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\"\n fieldMeta.observers:\n+ {\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"}\n fieldMeta.pauser:\n+ {\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"}\n fieldMeta.paused:\n+ {\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5:\n- \"ConfidentialWrapperV3\"\n implementationNames.eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8:\n+ \"ConfidentialWrapper\"\n }\n```\n\n```diff\n contract ConfidentialUSDTWrapper (eth:0xAe0207C757Aa2B4019Ad96edD0092ddc63EF0c50) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n template:\n- \"zama/ConfidentialWrapperV3\"\n+ \"zama/ConfidentialWrapper\"\n sourceHashes.1:\n- \"0xc6ef75f9a2275b9cfb58b0322dfb55b63e1630022b171af50f1851ee8052447b\"\n+ \"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"\n description:\n- \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\"\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n values.$implementation:\n- \"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5\"\n+ \"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"\n values.$pastUpgrades.3:\n+ [\"2026-08-25T15:59:35.000Z\",\"0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0\",[\"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"]]\n values.$upgradeCount:\n- 3\n+ 4\n+++ description: Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\n+++ severity: HIGH\n values.getUnderlyingDenyListSelector:\n- {\"isSet\":true,\"selector\":\"0x59bf1abe\"}\n+ \"0x59bf1abe\"\n+++ description: Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\n+++ severity: HIGH\n values.observers:\n+ []\n+++ description: Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\n values.paused:\n+ false\n+++ description: Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\n values.pauser:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n fieldMeta.getUnderlyingDenyListSelector.description:\n- \"Underlying-token denylist hook used by the wrapper. If enabled, the wrapper calls this selector on the underlying token before restricted operations.\"\n+ \"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\"\n fieldMeta.observers:\n+ {\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"}\n fieldMeta.pauser:\n+ {\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"}\n fieldMeta.paused:\n+ {\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5:\n- \"ConfidentialWrapperV3\"\n implementationNames.eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8:\n+ \"ConfidentialWrapper\"\n }\n```\n\n```diff\n contract DAO (eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3) [zama/ZamaDAO] {\n +++ description: Aragon DAO that stores governance state and executes proposal action batches.\n directlyReceivedPermissions.1.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n directlyReceivedPermissions.4.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n directlyReceivedPermissions.5.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n directlyReceivedPermissions.6.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n directlyReceivedPermissions.7.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n directlyReceivedPermissions.8.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n directlyReceivedPermissions.12.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n directlyReceivedPermissions.17.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n directlyReceivedPermissions.18.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n }\n```\n\n```diff\n contract ConfidentialBbqTGBPWrapper (eth:0xBA4cFF6ED6F7Cb2A58776dECa4E984b498446762) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n template:\n- \"zama/ConfidentialWrapperV3\"\n+ \"zama/ConfidentialWrapper\"\n sourceHashes.1:\n- \"0xc6ef75f9a2275b9cfb58b0322dfb55b63e1630022b171af50f1851ee8052447b\"\n+ \"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"\n description:\n- \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\"\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n values.$implementation:\n- \"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5\"\n+ \"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"\n values.$pastUpgrades.2:\n+ [\"2026-08-25T15:59:35.000Z\",\"0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0\",[\"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"]]\n values.$upgradeCount:\n- 2\n+ 3\n+++ description: Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\n+++ severity: HIGH\n values.getUnderlyingDenyListSelector:\n- {\"isSet\":false,\"selector\":\"0x00000000\"}\n+ \"0x00000000\"\n+++ description: Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\n+++ severity: HIGH\n values.observers:\n+ []\n+++ description: Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\n values.paused:\n+ false\n+++ description: Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\n values.pauser:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n fieldMeta.getUnderlyingDenyListSelector.description:\n- \"Underlying-token denylist hook used by the wrapper. If enabled, the wrapper calls this selector on the underlying token before restricted operations.\"\n+ \"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\"\n fieldMeta.observers:\n+ {\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"}\n fieldMeta.pauser:\n+ {\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"}\n fieldMeta.paused:\n+ {\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5:\n- \"ConfidentialWrapperV3\"\n implementationNames.eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8:\n+ \"ConfidentialWrapper\"\n }\n```\n\n```diff\n contract ZamaGovMultisigB (eth:0xBc860b6a4C860C5424B84A056E53ACFb2C99a38F) [zama/Multisig] {\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n receivedPermissions.1.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.4.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.5.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.6.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.7.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.8.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.14.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.19.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.20.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n }\n```\n\n```diff\n contract ConfidentialWETHWrapper (eth:0xda9396b82634Ea99243cE51258B6A5Ae512D4893) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n template:\n- \"zama/ConfidentialWrapperV3\"\n+ \"zama/ConfidentialWrapper\"\n sourceHashes.1:\n- \"0xc6ef75f9a2275b9cfb58b0322dfb55b63e1630022b171af50f1851ee8052447b\"\n+ \"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"\n description:\n- \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\"\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n values.$implementation:\n- \"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5\"\n+ \"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"\n values.$pastUpgrades.3:\n+ [\"2026-08-25T15:59:35.000Z\",\"0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0\",[\"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"]]\n values.$upgradeCount:\n- 3\n+ 4\n+++ description: Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\n+++ severity: HIGH\n values.getUnderlyingDenyListSelector:\n- {\"isSet\":false,\"selector\":\"0x00000000\"}\n+ \"0x00000000\"\n+++ description: Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\n+++ severity: HIGH\n values.observers:\n+ []\n+++ description: Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\n values.paused:\n+ false\n+++ description: Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\n values.pauser:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n fieldMeta.getUnderlyingDenyListSelector.description:\n- \"Underlying-token denylist hook used by the wrapper. If enabled, the wrapper calls this selector on the underlying token before restricted operations.\"\n+ \"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\"\n fieldMeta.observers:\n+ {\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"}\n fieldMeta.pauser:\n+ {\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"}\n fieldMeta.paused:\n+ {\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5:\n- \"ConfidentialWrapperV3\"\n implementationNames.eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8:\n+ \"ConfidentialWrapper\"\n }\n```\n\n```diff\n contract ZamaGovMultisigA (eth:0xE43c73aAb2b6aBBad6d0461997ce1cfea5ABe66f) [zama/Multisig] {\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n receivedPermissions.1.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.4.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.5.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.6.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.7.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.8.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.14.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.19.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n receivedPermissions.20.description:\n- \"block and unblock users, and transfer ownership.\"\n+ \"block and unblock users, add and remove observers (wildcard decryption access to all balances of this wrapper), set the pauser and the underlying denylist selector, unpause, and transfer ownership.\"\n }\n```\n\n```diff\n contract ConfidentialUSDCWrapper (eth:0xe978F22157048E5DB8E5d07971376e86671672B2) [zama/ConfidentialWrapper] {\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\n template:\n- \"zama/ConfidentialWrapperV3\"\n+ \"zama/ConfidentialWrapper\"\n sourceHashes.1:\n- \"0xc6ef75f9a2275b9cfb58b0322dfb55b63e1630022b171af50f1851ee8052447b\"\n+ \"0x111b5cc66fc29cac57ed685c50a509014181cbf98122b5fd89c0449eea3fab5f\"\n description:\n- \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\"\n+ \"ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, optional underlying-token denylist checks, owner-managed observers with wildcard decryption access, and pausing.\"\n values.$implementation:\n- \"eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5\"\n+ \"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"\n values.$pastUpgrades.3:\n+ [\"2026-08-25T15:59:35.000Z\",\"0x55c55172da4c231406a41da3838bff87dc9b361c62f208fe0e60994a1b82b0b0\",[\"eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8\"]]\n values.$upgradeCount:\n- 3\n+ 4\n+++ description: Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\n+++ severity: HIGH\n values.getUnderlyingDenyListSelector:\n- {\"isSet\":true,\"selector\":\"0xfe575a87\"}\n+ \"0xfe575a87\"\n+++ description: Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\n+++ severity: HIGH\n values.observers:\n+ []\n+++ description: Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\n values.paused:\n+ false\n+++ description: Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\n values.pauser:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n fieldMeta.getUnderlyingDenyListSelector.description:\n- \"Underlying-token denylist hook used by the wrapper. If enabled, the wrapper calls this selector on the underlying token before restricted operations.\"\n+ \"Underlying-token denylist hook used by the wrapper. If enabled (non-zero), the wrapper calls this selector on the underlying token before restricted operations.\"\n fieldMeta.observers:\n+ {\"severity\":\"HIGH\",\"description\":\"Accounts holding a wildcard user-decryption delegation over all wrapper-owned encrypted handles. Observers can decrypt every confidential balance and transfer amount of this wrapper, so adding one changes its privacy guarantees.\",\"type\":\"PERMISSION\"}\n fieldMeta.pauser:\n+ {\"description\":\"Address allowed to pause the wrapper (zero address means pausing is disabled). Only the owner can unpause.\",\"type\":\"PERMISSION\"}\n fieldMeta.paused:\n+ {\"description\":\"Whether wrapping, unwrapping, unwrap finalization and confidential transfers are currently halted.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0x5226fe30Fa7Bf20C1Cd33F125f77D0c42d3c23b5:\n- \"ConfidentialWrapperV3\"\n implementationNames.eth:0x2ABad2203Eba104b52cf040cCcFA100Df15687F8:\n+ \"ConfidentialWrapper\"\n }\n```"
}
]
},
{
"id": "45f1347a",
"date": "Tue, 25 Aug 2026 08:55:02 GMT",
"timestamp": 1787648016,
"description": "Add multisig signer.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```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": "07be036e",
"date": "Wed, 12 Aug 2026 12:58:00 GMT",
"timestamp": 1786539392,
"description": "Zama FHEVM host-chain upgrade (the Ethereum-side counterpart of the 2026-08-07 Gateway upgrade that moved KMS management off the Gateway): ZamaGovMultisigB executed a DAO (ACL owner) proposal that upgraded four host contracts and initialized two new ones in a single transaction. Governance is unchanged — everything below remains controlled by the Aragon DAO without a timelock.\n\n- KMSVerifier v0.2.0 -> v0.3.0 ([implementation diff](https://disco.l2beat.com/diff/eth:0xd0d0C7E1bc1E2F6Cd00E3b4B1083DdD9969155FD/eth:0x390683dEa46a61786f4F0807bf3559038Cf43Fa4)): all KMS context management (signer sets, thresholds, context create/destroy) is removed from the verifier and moved to the new ProtocolConfig contract. The KMSVerifier is now a stateless proof checker whose signer- and threshold-reads delegate to ProtocolConfig. Public decryption proofs can still select any non-destroyed context via extraData v1.\n- New ProtocolConfig v0.1.0 (proxy eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4, impl eth:0x25c76298Fb4d15bFADce4798519a7B37ac0076E7): ACL-owner-governed registry of KMS nodes (signer + tx-sender + metadata) and contexts, now with four separate per-context thresholds: publicDecryption (7), userDecryption (9), kmsGen and mpc. exactly one context is live. the ACL owner can now retune the thresholds of any live context — including the current one — in place, mirroring GatewayConfig v0.6.0 on the Gateway.\n- New KMSGeneration v0.1.0 (proxy eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa, impl eth:0x5DD95e97287672b5d86dd3a427E855099E5AC940): FHE key- and CRS-generation is now orchestrated onchain on Ethereum (previously not orchestrated onchain at all after being removed from the Gateway KMSGeneration v0.5.0). The ACL owner triggers keygen/crsgen and can abort them; KMS nodes respond with EIP-712 signatures that reach consensus at the ProtocolConfig kmsGen threshold.\n- ACL v0.3.0 -> v0.4.0 ([implementation diff](https://disco.l2beat.com/diff/eth:0x3F6D970d30E1FFE9657aa8072C82dA10eef1c3D6/eth:0x9A017e0ba4c19A325D5a89f5dd2112e605E85418)): adds wildcard user-decryption delegation — a user can delegate user decryption of their handles across all app contracts at once\n- FHEVMExecutor v0.3.0 -> v0.4.0 ([implementation diff](https://disco.l2beat.com/diff/eth:0xC38aAfCBB73Fd4bd6f995275079C4Add9C1687E5/eth:0xf444B2B5e45cD07F1E735122F53A2d70A8c81dB5)): adds two n-ary encrypted operations, `fheSum` (sum over up to 100/60 ciphertexts depending on width) and `fheIsIn` (encrypted set membership), with per-element ACL checks on inputs.\n- HCULimit v0.2.0 -> v0.3.0 ([implementation diff](https://disco.l2beat.com/diff/eth:0x0F2B7e8F19ADc874F21e27ADAA4B22FC00a0B442/eth:0x69A91389006443448d8E90Fd84B6bDF5ae253837)): adds HCU pricing for the new fheSum/fheIsIn operations and a guard reserving the zero transient-storage slot for the per-transaction HCU accumulator (a handle of 0x0 can no longer read/write it). Limits themselves are unchanged (empty reinitializer).",
"isHighSeverity": true,
"changeCount": 160,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract HCULimit (eth:0x3b4da65e45Fda2CAa0285A735ab4361a44F171E2) [zama/ZamaHCULimit_v0_3_0] {\n +++ description: Tracks and enforces per-transaction and per-block homomorphic computation unit limits for FHEVM operation requests. v0.3.0 adds pricing for the fheSum and fheIsIn operations.\n template:\n- \"zama/ZamaHCULimit_v0_2_0\"\n+ \"zama/ZamaHCULimit_v0_3_0\"\n sourceHashes.1:\n- \"0xc52e1b93c97602e6da1f1925e14fc5454426a778875655ec17910be5e217b98e\"\n+ \"0x7ca7880da7a551111a41d9a1673890e2a6c1dd27c3cdf51a82f893b410b2d038\"\n description:\n- \"Tracks and enforces per-transaction and per-block homomorphic computation unit limits for FHEVM operation requests.\"\n+ \"Tracks and enforces per-transaction and per-block homomorphic computation unit limits for FHEVM operation requests. v0.3.0 adds pricing for the fheSum and fheIsIn operations.\"\n values.$implementation:\n- \"eth:0x0F2B7e8F19ADc874F21e27ADAA4B22FC00a0B442\"\n+ \"eth:0x69A91389006443448d8E90Fd84B6bDF5ae253837\"\n values.$pastUpgrades.3:\n+ [\"2026-08-10T11:50:47.000Z\",\"0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78\",[\"eth:0x69A91389006443448d8E90Fd84B6bDF5ae253837\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.getVersion:\n- \"HCULimit v0.2.0\"\n+ \"HCULimit v0.3.0\"\n implementationNames.eth:0x0F2B7e8F19ADc874F21e27ADAA4B22FC00a0B442:\n- \"HCULimit\"\n implementationNames.eth:0x69A91389006443448d8E90Fd84B6bDF5ae253837:\n+ \"HCULimit\"\n }\n```\n\n```diff\n EOA (eth:0x41b19EB4585450db79ac03ba9503106EC7895905) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n EOA (eth:0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n EOA (eth:0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n EOA (eth:0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n contract KMSVerifier (eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03) [zama/ZamaKMSVerifier_v0_3_0] {\n +++ description: Ethereum host-chain verifier for public decryption results produced through the Zama Gateway Decryption contract. Since v0.3.0 it is a stateless proof checker: KMS signer sets and thresholds are read from the ProtocolConfig contract, and confidential token wrappers accept a decrypted value when it is signed by the threshold of the current or any explicitly selected non-destroyed KMS context.\n template:\n- \"zama/ZamaKMSVerifier_v0_2_0\"\n+ \"zama/ZamaKMSVerifier_v0_3_0\"\n sourceHashes.1:\n- \"0xa40292fe461810a065f80e305f6b85ab3ca2cfd416dc965d4791a111554cf638\"\n+ \"0x83222b4971c6b79adbd52cb7d500d84b7d2d59886f828b6a1cdc128dcd2bb9d1\"\n description:\n- \"Ethereum host-chain verifier for public decryption results produced through the Zama Gateway Decryption contract. Confidential token wrappers accept a decrypted value when it is signed by the threshold of the current or any retained non-destroyed KMS context.\"\n+ \"Ethereum host-chain verifier for public decryption results produced through the Zama Gateway Decryption contract. Since v0.3.0 it is a stateless proof checker: KMS signer sets and thresholds are read from the ProtocolConfig contract, and confidential token wrappers accept a decrypted value when it is signed by the threshold of the current or any explicitly selected non-destroyed KMS context.\"\n values.$implementation:\n- \"eth:0xd0d0C7E1bc1E2F6Cd00E3b4B1083DdD9969155FD\"\n+ \"eth:0x390683dEa46a61786f4F0807bf3559038Cf43Fa4\"\n values.$pastUpgrades.3:\n+ [\"2026-08-10T11:50:47.000Z\",\"0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78\",[\"eth:0x390683dEa46a61786f4F0807bf3559038Cf43Fa4\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.createdKmsContexts:\n- []\n values.getVersion:\n- \"KMSVerifier v0.2.0\"\n+ \"KMSVerifier v0.3.0\"\n values.initialKmsContextId:\n- \"3166189940082864718613269121331309980362851143201109172953918312716374638593\"\n values.initialKmsContextSigners:\n- [\"eth:0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f\",\"eth:0xdC472efa1642D5afB684aAaa546E22FB24AAB965\",\"eth:0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3\",\"eth:0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f\",\"eth:0x41b19EB4585450db79ac03ba9503106EC7895905\",\"eth:0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921\",\"eth:0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D\",\"eth:0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8\",\"eth:0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f\",\"eth:0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58\",\"eth:0x7C17BE232e5968BDa9516478B798b9E90D013fCC\",\"eth:0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385\",\"eth:0xB7978e602D2AF68258dA614AF949E014BF0DE0eb\"]\n+++ description: ProtocolConfig contract that stores the KMS contexts (signer sets and thresholds) this verifier reads during proof verification. Referenced as a compile-time constant without a getter.\n values.protocolConfig:\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n fieldMeta.aclOwner.severity:\n- \"HIGH\"\n fieldMeta.aclOwner.description:\n- \"Owner of the Zama ACL contract. This account can create a new KMS signer context that immediately becomes the default verifier authority, and can destroy any non-current context.\"\n+ \"Owner of the Zama ACL contract. This account is authorized by onlyACLOwner for KMSVerifier upgrades. Context and threshold management moved to ProtocolConfig in v0.3.0.\"\n fieldMeta.getKmsSigners.severity:\n- \"HIGH\"\n fieldMeta.getKmsSigners.description:\n- \"KMS signers in the current context. Permission coverage is also indexed through initialKmsContextSigners and createdKmsContexts so superseded contexts remain visible.\"\n+ \"KMS signers in the current context, read through from ProtocolConfig where they are indexed for permissions and monitoring.\"\n fieldMeta.initialKmsContextId:\n- {\"severity\":\"HIGH\",\"description\":\"Identifier of the first v0.2 KMS context created from the source-defined context counter during initialization or migration.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.initialKmsContextSigners:\n- {\"severity\":\"HIGH\",\"description\":\"Signers in the first v0.2 KMS context. This code-defined context remains authorized for public decryption proofs after later rotations unless the ACL owner explicitly destroys it.\",\"type\":\"PERMISSION\"}\n fieldMeta.createdKmsContexts:\n- {\"severity\":\"HIGH\",\"description\":\"Non-destroyed KMS contexts created after the v0.2 migration, reconstructed from context creation and destruction events. Each context is an immutable signer and threshold snapshot that can attest results for any ciphertext handle; it is not scoped to ciphertext age or key ID.\",\"type\":\"PERMISSION\"}\n fieldMeta.getThreshold.severity:\n- \"HIGH\"\n fieldMeta.getThreshold.description:\n- \"Minimum number of KMS signatures from the current context required to accept a public decryption result. Retained contexts keep their own immutable thresholds.\"\n+ \"Minimum number of unique valid KMS signatures required to accept a public decryption result, read through from the ProtocolConfig public-decryption threshold of the current context.\"\n fieldMeta.getCurrentKmsContextId.severity:\n- \"HIGH\"\n fieldMeta.getCurrentKmsContextId.description:\n- \"Identifier of the context used when proof extraData is empty or starts with version 0. Version 1 extraData can explicitly select any non-destroyed historical context, including for ciphertexts created after that context was superseded.\"\n+ \"Identifier of the context used when proof extraData is empty or starts with version 0. Version 1 extraData can explicitly select any non-destroyed context, including for ciphertexts created after that context was superseded.\"\n fieldMeta.protocolConfig:\n+ {\"description\":\"ProtocolConfig contract that stores the KMS contexts (signer sets and thresholds) this verifier reads during proof verification. Referenced as a compile-time constant without a getter.\",\"type\":\"EXTERNAL\"}\n implementationNames.eth:0xd0d0C7E1bc1E2F6Cd00E3b4B1083DdD9969155FD:\n- \"KMSVerifier\"\n implementationNames.eth:0x390683dEa46a61786f4F0807bf3559038Cf43Fa4:\n+ \"KMSVerifier\"\n }\n```\n\n```diff\n EOA (eth:0x7C17BE232e5968BDa9516478B798b9E90D013fCC) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n EOA (eth:0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n EOA (eth:0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n EOA (eth:0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n contract DAO (eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3) [zama/ZamaDAO] {\n +++ description: Aragon DAO that stores governance state and executes proposal action batches.\n directlyReceivedPermissions.5:\n- {\"permission\":\"interact\",\"from\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"description\":\"create KMS signer contexts with arbitrary signer sets and thresholds, and destroy non-current contexts. A malicious context can attest an inflated unwrap amount and drain pooled wrapper backing.\",\"role\":\".aclOwner\"}\n directlyReceivedPermissions.15.description:\n- \"transfer ACL ownership, unpause the ACL, block or unblock accounts, manage PauserSet membership, and create or destroy KMSVerifier signer contexts.\"\n+ \"transfer ACL ownership, unpause the ACL, block or unblock accounts, and manage PauserSet membership.\"\n directlyReceivedPermissions.16:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\",\"description\":\"create KMS contexts with arbitrary node sets and thresholds that immediately become the default verifier authority, destroy non-current contexts, and retune the per-context thresholds (public decryption, user decryption, key generation, MPC) of any live context including the current one. A malicious context or lowered threshold can attest an inflated unwrap amount and drain pooled wrapper backing.\",\"role\":\".aclOwner\"}\n directlyReceivedPermissions.22:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa\",\"description\":\"trigger and abort FHE key and CRS generation rounds executed by the KMS nodes.\",\"role\":\".aclOwner\"}\n directlyReceivedPermissions.36:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\",\"description\":\"upgrade the ProtocolConfig implementation.\",\"role\":\".aclOwner\"}\n directlyReceivedPermissions.42:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa\",\"description\":\"upgrade the KMSGeneration implementation.\",\"role\":\".aclOwner\"}\n }\n```\n\n```diff\n EOA (eth:0xB7978e602D2AF68258dA614AF949E014BF0DE0eb) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n contract ZamaGovMultisigB (eth:0xBc860b6a4C860C5424B84A056E53ACFb2C99a38F) [zama/Multisig] {\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n receivedPermissions.5:\n- {\"permission\":\"interact\",\"from\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"description\":\"create KMS signer contexts with arbitrary signer sets and thresholds, and destroy non-current contexts. A malicious context can attest an inflated unwrap amount and drain pooled wrapper backing.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.17.description:\n- \"transfer ACL ownership, unpause the ACL, block or unblock accounts, manage PauserSet membership, and create or destroy KMSVerifier signer contexts.\"\n+ \"transfer ACL ownership, unpause the ACL, block or unblock accounts, and manage PauserSet membership.\"\n receivedPermissions.18:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\",\"description\":\"create KMS contexts with arbitrary node sets and thresholds that immediately become the default verifier authority, destroy non-current contexts, and retune the per-context thresholds (public decryption, user decryption, key generation, MPC) of any live context including the current one. A malicious context or lowered threshold can attest an inflated unwrap amount and drain pooled wrapper backing.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.24:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa\",\"description\":\"trigger and abort FHE key and CRS generation rounds executed by the KMS nodes.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.38:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\",\"description\":\"upgrade the ProtocolConfig implementation.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.44:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa\",\"description\":\"upgrade the KMSGeneration implementation.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n }\n```\n\n```diff\n EOA (eth:0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n contract ACL (eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6) [zama/ZamaACL_v0_4_0] {\n +++ description: Ethereum host-chain access-control registry for encrypted handles, storing handle allowances and delegation state for ciphertext references. Its public-decryption and user-delegation events are mirrored into the Gateway MultichainACL by coprocessor consensus. Since v0.4.0 users can delegate user decryption of their handles across all app contracts at once via a wildcard delegation.\n template:\n- \"zama/ZamaACL_v0_3_0\"\n+ \"zama/ZamaACL_v0_4_0\"\n sourceHashes.1:\n- \"0x47f47986a3024b31fa3caee357720f4fba4ea3fae419ff53eebe1a66e87d69ef\"\n+ \"0xa69c606dd333427d22d0b664b3c7b39118934dd95a2b7b37c737e37b39bba7e5\"\n description:\n- \"Ethereum host-chain access-control registry for encrypted handles, storing handle allowances and delegation state for ciphertext references. Its public-decryption and user-delegation events are mirrored into the Gateway MultichainACL by coprocessor consensus.\"\n+ \"Ethereum host-chain access-control registry for encrypted handles, storing handle allowances and delegation state for ciphertext references. Its public-decryption and user-delegation events are mirrored into the Gateway MultichainACL by coprocessor consensus. Since v0.4.0 users can delegate user decryption of their handles across all app contracts at once via a wildcard delegation.\"\n values.$implementation:\n- \"eth:0x3F6D970d30E1FFE9657aa8072C82dA10eef1c3D6\"\n+ \"eth:0x9A017e0ba4c19A325D5a89f5dd2112e605E85418\"\n values.$pastUpgrades.4:\n+ [\"2026-08-10T11:50:47.000Z\",\"0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78\",[\"eth:0x9A017e0ba4c19A325D5a89f5dd2112e605E85418\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.getVersion:\n- \"ACL v0.3.0\"\n+ \"ACL v0.4.0\"\n+++ description: Sentinel contract address that a user can pass to delegateForUserDecryption to delegate user decryption of their handles across all app contracts at once. The wildcard does not bypass per-handle allowances.\n values.WILDCARD_DELEGATION_ADDRESS:\n+ \"eth:0xFFfFfFffFFfffFFfFFfFFFFFffFFFffffFfFFFfF\"\n fieldMeta.owner.description:\n- \"Owner of the ACL and host-contract owner checked by onlyACLOwner in the Zama verifier and helper contracts.\"\n+ \"Owner of the ACL and host-contract owner checked by onlyACLOwner in the Zama verifier and helper contracts, including ProtocolConfig and KMSGeneration.\"\n fieldMeta.WILDCARD_DELEGATION_ADDRESS:\n+ {\"description\":\"Sentinel contract address that a user can pass to delegateForUserDecryption to delegate user decryption of their handles across all app contracts at once. The wildcard does not bypass per-handle allowances.\"}\n implementationNames.eth:0x3F6D970d30E1FFE9657aa8072C82dA10eef1c3D6:\n- \"ACL\"\n implementationNames.eth:0x9A017e0ba4c19A325D5a89f5dd2112e605E85418:\n+ \"ACL\"\n }\n```\n\n```diff\n contract ProtocolConfig (eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4) [zama/ZamaProtocolConfig] {\n +++ description: Ethereum host-chain registry of KMS node sets, per-context thresholds, and context lifecycle, introduced in the v0.3.0 KMSVerifier upgrade. A KMS context snapshots node transaction senders and signers; the four per-context thresholds (public decryption, user decryption, key generation, MPC) can be retuned by the ACL owner for any live context, including the current one. A newly created context becomes current immediately; older contexts remain selectable for public decryption proofs until destroyed.\n name:\n- \"EmptyUUPSProxy\"\n+ \"ProtocolConfig\"\n sourceHashes.1:\n- \"0xc71891567f1a766aa3a25d1830c5362e3bcf7682574b11b20a51401acb718db4\"\n+ \"0x3ded50e4089de288e1a23ff043bc49ad1ab743d9c4d68dff679355192bc0edbd\"\n values.$implementation:\n- \"eth:0xC94790325C61A7D98e90d835ea89777d64b17492\"\n+ \"eth:0x25c76298Fb4d15bFADce4798519a7B37ac0076E7\"\n values.$pastUpgrades.1:\n+ [\"2026-08-10T11:50:47.000Z\",\"0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78\",[\"eth:0x25c76298Fb4d15bFADce4798519a7B37ac0076E7\"]]\n values.$upgradeCount:\n- 1\n+ 2\n+++ description: Owner of the Zama ACL contract. This account is authorized by onlyACLOwner for all ProtocolConfig administration.\n+++ severity: HIGH\n values.aclOwner:\n+ \"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"\n+++ description: KMS contexts created after the ProtocolConfig migration, reconstructed from NewKmsContext and KmsContextDestroyed events with their node sets and creation thresholds. The context created by initializeFromMigration does not emit this event and is indexed through the live getters and project overrides. Thresholds can be retuned per context after creation.\n+++ severity: HIGH\n values.createdKmsContexts:\n+ []\n+++ description: KMS signers from contexts created after the ProtocolConfig migration. They remain authorized for public decryption proofs that select their context until the ACL owner destroys that context.\n+++ severity: HIGH\n values.createdKmsContextSigners:\n+ []\n+++ description: KMS transaction senders from contexts created after the ProtocolConfig migration. They remain authorized to submit key- and CRS-generation responses for their context until the ACL owner destroys that context.\n values.createdKmsContextTxSenders:\n+ []\n+++ description: KMS node transaction-sender addresses in the current context. These accounts submit key- and CRS-generation responses to the Ethereum KMSGeneration contract.\n values.currentKmsTxSenders:\n+ [\"eth:0x711EBE8aA590f9C9904ff279239E89dB2eFbC890\",\"eth:0xB4CE988D382425F64c99A352375F72A5f1cf6FFB\",\"eth:0x4eC7200E392B97913cbD6d8160B011406EB019F1\",\"eth:0xEd1D622bd59d657580aBAc65312b40B4B2dA6236\",\"eth:0x74a1E2e87a4026b7B8b5252c747E514159515e9a\",\"eth:0x0e25B8DB74c754C8275C0B219ba2A6CD7c59E31D\",\"eth:0x577Fd21e4BC7D644A4177C4B89146e1Ab394De04\",\"eth:0xbaac6F9DD84bFB303F05B4DE45A88Eec86855BD0\",\"eth:0x43e4c21cf9d24Dc5b4e00031349EC213A2ba8340\",\"eth:0xC105B5933446658D226582f7A112F49a70b54364\",\"eth:0xbcF4943A856497FB2345409D35f4d1eae9A0363E\",\"eth:0xD227C4B573800EdA3bAdA6DAC872E9134E012e6D\",\"eth:0x487e41623b7FeB464ff79F7326DCa791c9a1c5EC\"]\n+++ description: KMS contexts destroyed by the ACL owner. Destroyed contexts are invalid: their per-context getters revert and public decryption proofs can no longer select them.\n+++ severity: HIGH\n values.destroyedKmsContexts:\n+ []\n+++ description: Identifier of the current KMS context, used by verifiers when a proof does not explicitly select a historical context.\n values.getCurrentKmsContextId:\n+ \"3166189940082864718613269121331309980362851143201109172953918312716374638593\"\n+++ description: Minimum number of KMS responses from the current context required to reach consensus on key- and CRS-generation results in KMSGeneration.\n values.getKmsGenThreshold:\n+ 7\n+++ description: KMS signer addresses in the current context. Their signatures are accepted by the Ethereum KMSVerifier for public decryption results and by KMSGeneration for key- and CRS-generation responses. Signers from other live contexts remain authorized for proofs that select their context until that context is destroyed.\n+++ severity: HIGH\n values.getKmsSigners:\n+ [\"eth:0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f\",\"eth:0xdC472efa1642D5afB684aAaa546E22FB24AAB965\",\"eth:0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3\",\"eth:0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f\",\"eth:0x41b19EB4585450db79ac03ba9503106EC7895905\",\"eth:0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921\",\"eth:0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D\",\"eth:0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8\",\"eth:0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f\",\"eth:0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58\",\"eth:0x7C17BE232e5968BDa9516478B798b9E90D013fCC\",\"eth:0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385\",\"eth:0xB7978e602D2AF68258dA614AF949E014BF0DE0eb\"]\n+++ description: MPC threshold recorded for the current context. The KMS SDK derives its effective MPC threshold from the nodes it knows about instead of reading this value.\n values.getMpcThreshold:\n+ 4\n+++ description: Minimum number of KMS signatures from the current context required to accept a public decryption result. Retunable in place by the ACL owner without rotating the context.\n+++ severity: HIGH\n values.getPublicDecryptionThreshold:\n+ 7\n+++ description: Minimum number of KMS signatures from the current context required for user decryption verification. Retunable in place by the ACL owner without rotating the context.\n+++ severity: HIGH\n values.getUserDecryptionThreshold:\n+ 9\n values.getVersion:\n+ \"ProtocolConfig v0.1.0\"\n+++ description: Live public-decryption threshold of the migrated context, retunable in place by the ACL owner. It remains security-critical after future rotations while the context is live. This call reverts once the context is destroyed; remove the field then.\n+++ severity: HIGH\n values.migratedKmsContextPublicDecryptionThreshold:\n+ 7\n+++ description: Live KMS signer set of the migrated context. Node membership is immutable, so these signers remain authorized for proofs selecting this context after future rotations. This call reverts once the context is destroyed; remove the field then.\n+++ severity: HIGH\n values.migratedKmsContextSigners:\n+ [\"eth:0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f\",\"eth:0xdC472efa1642D5afB684aAaa546E22FB24AAB965\",\"eth:0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3\",\"eth:0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f\",\"eth:0x41b19EB4585450db79ac03ba9503106EC7895905\",\"eth:0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921\",\"eth:0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D\",\"eth:0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8\",\"eth:0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f\",\"eth:0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58\",\"eth:0x7C17BE232e5968BDa9516478B798b9E90D013fCC\",\"eth:0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385\",\"eth:0xB7978e602D2AF68258dA614AF949E014BF0DE0eb\"]\n+++ description: Live user-decryption threshold of the migrated context, retunable in place by the ACL owner. This call reverts once the context is destroyed; remove the field then.\n values.migratedKmsContextUserDecryptionThreshold:\n+ 9\n errors:\n- {\"migratedKmsContextPublicDecryptionThreshold\":\"Processing error occurred.\",\"migratedKmsContextSigners\":\"Processing error occurred.\",\"migratedKmsContextUserDecryptionThreshold\":\"Processing error occurred.\",\"proxiableUUID\":\"Processing error occurred.\"}\n fieldMeta.aclOwner:\n+ {\"severity\":\"HIGH\",\"description\":\"Owner of the Zama ACL contract. This account is authorized by onlyACLOwner for all ProtocolConfig administration.\",\"type\":\"PERMISSION\"}\n fieldMeta.getKmsSigners:\n+ {\"severity\":\"HIGH\",\"description\":\"KMS signer addresses in the current context. Their signatures are accepted by the Ethereum KMSVerifier for public decryption results and by KMSGeneration for key- and CRS-generation responses. Signers from other live contexts remain authorized for proofs that select their context until that context is destroyed.\",\"type\":\"PERMISSION\"}\n fieldMeta.currentKmsTxSenders:\n+ {\"description\":\"KMS node transaction-sender addresses in the current context. These accounts submit key- and CRS-generation responses to the Ethereum KMSGeneration contract.\",\"type\":\"PERMISSION\"}\n fieldMeta.getPublicDecryptionThreshold:\n+ {\"severity\":\"HIGH\",\"description\":\"Minimum number of KMS signatures from the current context required to accept a public decryption result. Retunable in place by the ACL owner without rotating the context.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getUserDecryptionThreshold:\n+ {\"severity\":\"HIGH\",\"description\":\"Minimum number of KMS signatures from the current context required for user decryption verification. Retunable in place by the ACL owner without rotating the context.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getKmsGenThreshold:\n+ {\"description\":\"Minimum number of KMS responses from the current context required to reach consensus on key- and CRS-generation results in KMSGeneration.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getMpcThreshold:\n+ {\"description\":\"MPC threshold recorded for the current context. The KMS SDK derives its effective MPC threshold from the nodes it knows about instead of reading this value.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getCurrentKmsContextId:\n+ {\"description\":\"Identifier of the current KMS context, used by verifiers when a proof does not explicitly select a historical context.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.createdKmsContexts:\n+ {\"severity\":\"HIGH\",\"description\":\"KMS contexts created after the ProtocolConfig migration, reconstructed from NewKmsContext and KmsContextDestroyed events with their node sets and creation thresholds. The context created by initializeFromMigration does not emit this event and is indexed through the live getters and project overrides. Thresholds can be retuned per context after creation.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.createdKmsContextSigners:\n+ {\"severity\":\"HIGH\",\"description\":\"KMS signers from contexts created after the ProtocolConfig migration. They remain authorized for public decryption proofs that select their context until the ACL owner destroys that context.\",\"type\":\"PERMISSION\"}\n fieldMeta.createdKmsContextTxSenders:\n+ {\"description\":\"KMS transaction senders from contexts created after the ProtocolConfig migration. They remain authorized to submit key- and CRS-generation responses for their context until the ACL owner destroys that context.\",\"type\":\"PERMISSION\"}\n fieldMeta.destroyedKmsContexts:\n+ {\"severity\":\"HIGH\",\"description\":\"KMS contexts destroyed by the ACL owner. Destroyed contexts are invalid: their per-context getters revert and public decryption proofs can no longer select them.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0xC94790325C61A7D98e90d835ea89777d64b17492:\n- \"EmptyUUPSProxy\"\n implementationNames.eth:0x25c76298Fb4d15bFADce4798519a7B37ac0076E7:\n+ \"ProtocolConfig\"\n template:\n+ \"zama/ZamaProtocolConfig\"\n description:\n+ \"Ethereum host-chain registry of KMS node sets, per-context thresholds, and context lifecycle, introduced in the v0.3.0 KMSVerifier upgrade. A KMS context snapshots node transaction senders and signers; the four per-context thresholds (public decryption, user decryption, key generation, MPC) can be retuned by the ACL owner for any live context, including the current one. A newly created context becomes current immediately; older contexts remain selectable for public decryption proofs until destroyed.\"\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```\n\n```diff\n contract FHEVMExecutor (eth:0xD82385dADa1ae3E969447f20A3164F6213100e75) [zama/ZamaFHEVMExecutor_v0_4_0] {\n +++ description: FHEVM executor that accepts encrypted operation requests, accounts for computation usage, and stores ciphertext handles for operation results. v0.4.0 adds the n-ary encrypted operations fheSum and fheIsIn (encrypted set membership) over bounded ciphertext collections.\n template:\n- \"zama/ZamaFHEVMExecutor_v0_3_0\"\n+ \"zama/ZamaFHEVMExecutor_v0_4_0\"\n sourceHashes.1:\n- \"0xf475718e9125acfc2f69d3c9cca8cedb9a15c644da7490f7f5fe0ae2690a77cc\"\n+ \"0x8521799e0a57218bcbd587c2f46222a266bbcbe2f27780cc0bf6ed66eb9cda1f\"\n description:\n- \"FHEVM executor that accepts encrypted operation requests, accounts for computation usage, and stores ciphertext handles for operation results.\"\n+ \"FHEVM executor that accepts encrypted operation requests, accounts for computation usage, and stores ciphertext handles for operation results. v0.4.0 adds the n-ary encrypted operations fheSum and fheIsIn (encrypted set membership) over bounded ciphertext collections.\"\n values.$implementation:\n- \"eth:0xC38aAfCBB73Fd4bd6f995275079C4Add9C1687E5\"\n+ \"eth:0xf444B2B5e45cD07F1E735122F53A2d70A8c81dB5\"\n values.$pastUpgrades.4:\n+ [\"2026-08-10T11:50:47.000Z\",\"0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78\",[\"eth:0xf444B2B5e45cD07F1E735122F53A2d70A8c81dB5\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.getVersion:\n- \"FHEVMExecutor v0.3.0\"\n+ \"FHEVMExecutor v0.4.0\"\n implementationNames.eth:0xC38aAfCBB73Fd4bd6f995275079C4Add9C1687E5:\n- \"FHEVMExecutor\"\n implementationNames.eth:0xf444B2B5e45cD07F1E735122F53A2d70A8c81dB5:\n+ \"FHEVMExecutor\"\n }\n```\n\n```diff\n EOA (eth:0xdC472efa1642D5afB684aAaa546E22FB24AAB965) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n EOA (eth:0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n contract ZamaGovMultisigA (eth:0xE43c73aAb2b6aBBad6d0461997ce1cfea5ABe66f) [zama/Multisig] {\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n receivedPermissions.5:\n- {\"permission\":\"interact\",\"from\":\"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\",\"description\":\"create KMS signer contexts with arbitrary signer sets and thresholds, and destroy non-current contexts. A malicious context can attest an inflated unwrap amount and drain pooled wrapper backing.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.17.description:\n- \"transfer ACL ownership, unpause the ACL, block or unblock accounts, manage PauserSet membership, and create or destroy KMSVerifier signer contexts.\"\n+ \"transfer ACL ownership, unpause the ACL, block or unblock accounts, and manage PauserSet membership.\"\n receivedPermissions.18:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\",\"description\":\"create KMS contexts with arbitrary node sets and thresholds that immediately become the default verifier authority, destroy non-current contexts, and retune the per-context thresholds (public decryption, user decryption, key generation, MPC) of any live context including the current one. A malicious context or lowered threshold can attest an inflated unwrap amount and drain pooled wrapper backing.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.24:\n+ {\"permission\":\"interact\",\"from\":\"eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa\",\"description\":\"trigger and abort FHE key and CRS generation rounds executed by the KMS nodes.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.38:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\",\"description\":\"upgrade the ProtocolConfig implementation.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.44:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa\",\"description\":\"upgrade the KMSGeneration implementation.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n }\n```\n\n```diff\n EOA (eth:0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f) {\n +++ description: None\n receivedPermissions.0.description:\n- \"sign public decryption results accepted by the KMSVerifier.\"\n+ \"sign public decryption results accepted by the KMSVerifier and key- and CRS-generation responses accepted by KMSGeneration.\"\n receivedPermissions.0.from:\n- \"eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03\"\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n }\n```\n\n```diff\n contract KMSGeneration (eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa) [zama/ZamaKMSGeneration] {\n +++ description: Orchestrates FHE key and CRS generation on the Ethereum host chain, taking over the workflows removed from the Gateway KMSGeneration in v0.5.0. The ACL owner triggers and aborts generations; KMS node transaction senders registered in ProtocolConfig submit EIP-712-signed responses that activate a key or CRS once the ProtocolConfig key-generation threshold is reached.\n name:\n- \"EmptyUUPSProxy\"\n+ \"KMSGeneration\"\n sourceHashes.1:\n- \"0xc71891567f1a766aa3a25d1830c5362e3bcf7682574b11b20a51401acb718db4\"\n+ \"0x265ec46d9bb4498caf973d6a60d3cbbe1f3ceff12597fcd3140bdff9e6322f76\"\n values.$implementation:\n- \"eth:0xC94790325C61A7D98e90d835ea89777d64b17492\"\n+ \"eth:0x5DD95e97287672b5d86dd3a427E855099E5AC940\"\n values.$pastUpgrades.1:\n+ [\"2026-08-10T11:50:47.000Z\",\"0x3a73cbfe82d45d522aafa83acbc4a44dd89a2b409530e3a52d0076009a036c78\",[\"eth:0x5DD95e97287672b5d86dd3a427E855099E5AC940\"]]\n values.$upgradeCount:\n- 1\n+ 2\n+++ description: Owner of the Zama ACL contract. This account is authorized by onlyACLOwner for KMSGeneration administration.\n values.aclOwner:\n+ \"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"\n+++ description: EIP-712 domain against which KMS key- and CRS-generation response signatures are verified.\n values.eip712Domain:\n+ {\"fields\":\"0x0f\",\"name\":\"KMSGeneration\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]}\n+++ description: Identifier of the currently active CRS generated through this contract.\n values.getActiveCrsId:\n+ \"2261564242916331941866620800950935700259179388000792266395655937654553313281\"\n+++ description: Identifier of the currently active FHE key generated through this contract.\n values.getActiveKeyId:\n+ \"1809251394333065553493296640760748560207343510400633813116524750123642650625\"\n values.getCrsCounter:\n+ \"2261564242916331941866620800950935700259179388000792266395655937654553313281\"\n values.getKeyCounter:\n+ \"1809251394333065553493296640760748560207343510400633813116524750123642650625\"\n values.getVersion:\n+ \"KMSGeneration v0.1.0\"\n+++ description: ProtocolConfig contract providing the KMS node set and the key-generation consensus threshold. Referenced as a compile-time constant without a getter.\n values.protocolConfig:\n+ \"eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4\"\n errors:\n- {\"proxiableUUID\":\"Processing error occurred.\"}\n implementationNames.eth:0xC94790325C61A7D98e90d835ea89777d64b17492:\n- \"EmptyUUPSProxy\"\n implementationNames.eth:0x5DD95e97287672b5d86dd3a427E855099E5AC940:\n+ \"KMSGeneration\"\n template:\n+ \"zama/ZamaKMSGeneration\"\n description:\n+ \"Orchestrates FHE key and CRS generation on the Ethereum host chain, taking over the workflows removed from the Gateway KMSGeneration in v0.5.0. The ACL owner triggers and aborts generations; KMS node transaction senders registered in ProtocolConfig submit EIP-712-signed responses that activate a key or CRS once the ProtocolConfig key-generation threshold is reached.\"\n fieldMeta:\n+ {\"protocolConfig\":{\"description\":\"ProtocolConfig contract providing the KMS node set and the key-generation consensus threshold. Referenced as a compile-time constant without a getter.\",\"type\":\"EXTERNAL\"},\"aclOwner\":{\"description\":\"Owner of the Zama ACL contract. This account is authorized by onlyACLOwner for KMSGeneration administration.\",\"type\":\"PERMISSION\"},\"getActiveKeyId\":{\"description\":\"Identifier of the currently active FHE key generated through this contract.\"},\"getActiveCrsId\":{\"description\":\"Identifier of the currently active CRS generated through this contract.\"},\"eip712Domain\":{\"description\":\"EIP-712 domain against which KMS key- and CRS-generation response signatures are verified.\"}}\n category:\n+ {\"name\":\"Local Infrastructure\",\"priority\":5}\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract EmptyUUPSProxy (eth:0xD8236B57394f90726b26aB25D38CeAC776E1a7C4) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract EmptyUUPSProxy (eth:0xf102cC9A9D2174630c394f5b7B7D63104E348daa) [N/A]\n +++ description: None\n```"
}
]
},
{
"id": "5b83a932",
"date": "Fri, 07 Aug 2026 12:57:23 GMT",
"timestamp": 1786107356,
"description": "Zama Gateway upgrade: a larger upgrade that touches key generation and is only half deployed.\n\n- Decryption v0.4.0 -> v0.5.0: requests now pin a KMS context at request time and responses must reference the pinned context\n- GatewayConfig v0.5.0 -> v0.6.0: the owner can now destroy non-current KMS contexts (immediately invalidating them for decryption), retune thresholds of any live context (context-scoped events), and disable/enable/remove host chains. Coprocessor updates now require InputVerification to be paused.\n- KMSGeneration v0.4.0 -> v0.5.0: now view-only; all key/CRS/PRSS/resharing workflows were removed from the gateway after their move to Ethereum (getActiveKeyId/getActiveCrsId are gone).\n- InputVerification v0.3.0 -> v0.4.0 and CiphertextCommits v0.3.0 -> v0.4.0: minor; both now reject requests/handles from disabled host chains, and CiphertextCommits dropped its KMSGeneration reference.\n- a Polygon host chain (chainId 137) is now registered in GatewayConfig.",
"isHighSeverity": true,
"changeCount": 133,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (zama:0x0e25B8DB74c754C8275C0B219ba2A6CD7c59E31D) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n contract Decryption (zama:0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24) [zama/Decryption_v0_5_0] {\n +++ description: Gateway contract that orchestrates public and user decryption requests and checks committed ciphertext material. Each request pins a KMS context at request time (explicitly through extraData or the then-current context) and rejects unknown or destroyed contexts; responses must reference the pinned context. Requests recorded before v0.5.0 fall back to the context declared by each response. KMS nodes enforce host-chain ACL state offchain, and Ethereum KMSVerifier verifies public results against this contract's EIP-712 domain.\n template:\n- \"zama/Decryption_v0_4_0\"\n+ \"zama/Decryption_v0_5_0\"\n sourceHashes.1:\n- \"0xcd821ac822a19a355acde1dd7ce435e2a6e16e21017756b899c058ee64552e28\"\n+ \"0x1dd2af26cc2be12ff30232e8df9c95ec66fcbc987f40372ad56a9d8f1073260c\"\n description:\n- \"Gateway contract that orchestrates public and user decryption requests and checks committed ciphertext material. Each response independently selects a KMS context through extraData, or uses the context current when the response executes; requests do not store a context. KMS nodes enforce host-chain ACL state offchain, and Ethereum KMSVerifier verifies public results against this contract's EIP-712 domain.\"\n+ \"Gateway contract that orchestrates public and user decryption requests and checks committed ciphertext material. Each request pins a KMS context at request time (explicitly through extraData or the then-current context) and rejects unknown or destroyed contexts; responses must reference the pinned context. Requests recorded before v0.5.0 fall back to the context declared by each response. KMS nodes enforce host-chain ACL state offchain, and Ethereum KMSVerifier verifies public results against this contract's EIP-712 domain.\"\n values.$implementation:\n- \"zama:0x943CEfD1A00d3ae5b298bB10D4EddA09B279C8B0\"\n+ \"zama:0x86F8e9626cCff3f2eB3dA248F33DfF43531DBFD8\"\n values.$pastUpgrades.4:\n+ [\"2026-08-06T17:11:04.000Z\",\"0x350755101263bed64dc377ef6f3ef07f95f97918b689967a60ee625d0d9e025c\",[\"zama:0x86F8e9626cCff3f2eB3dA248F33DfF43531DBFD8\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.getVersion:\n- \"Decryption v0.4.0\"\n+ \"Decryption v0.5.0\"\n fieldMeta.gatewayMultichainACL.description:\n- \"MultichainACL contract containing the gateway-side host-chain ACL mirror. The upgraded Decryption contract no longer checks it onchain and relies on KMS nodes to enforce ACL state.\"\n+ \"MultichainACL contract containing the gateway-side host-chain ACL mirror. Decryption does not check it onchain and relies on KMS nodes to enforce ACL state.\"\n fieldMeta.gatewayKmsTxSenders.description:\n- \"KMS transaction-sender addresses configured in the current GatewayConfig context. Historical context senders can also submit responses when response extraData explicitly selects their retained context. Post-migration contexts are indexed on GatewayConfig; migration-created membership requires a project override because no creation event was emitted.\"\n+ \"KMS transaction-sender addresses configured in the current GatewayConfig context. Senders from other live contexts can still submit responses to requests that pinned their context; destroying a context revokes this. Post-migration contexts are indexed on GatewayConfig; migration-created membership requires a project override because no creation event was emitted.\"\n fieldMeta.gatewayKmsSigners.description:\n- \"KMS signer addresses configured in the current GatewayConfig context. Historical context signers can also sign responses when response extraData explicitly selects their retained context. Post-migration contexts are indexed on GatewayConfig; migration-created membership requires a project override because no creation event was emitted.\"\n+ \"KMS signer addresses configured in the current GatewayConfig context. Signers from other live contexts can still sign responses to requests that pinned their context; destroying a context revokes this. Post-migration contexts are indexed on GatewayConfig; migration-created membership requires a project override because no creation event was emitted.\"\n fieldMeta.gatewayKmsContextId.description:\n- \"Current GatewayConfig KMS context used by responses whose extraData is empty or starts with version 0. Requests do not bind this value, so a rotation can change the context used to answer an already pending request.\"\n+ \"Current GatewayConfig KMS context, pinned by new requests whose extraData is empty or starts with version 0. The pin is stored per request, so a later rotation does not change the context or thresholds used to answer a pending request. Requests recorded before v0.5.0 have no pin and fall back to the context declared by each response.\"\n fieldMeta.gatewayPublicDecryptionThreshold.description:\n- \"Minimum matching-signature count for the current context. Public responses are grouped by a digest containing raw extraData; identical empty or version 0 extraData can accumulate responses across a context rotation while the last response selects the threshold checked.\"\n+ \"Minimum matching-signature count for public decryption consensus in the current context. Each request is answered under the threshold of its pinned context, which the GatewayConfig owner can retune per context.\"\n fieldMeta.gatewayUserDecryptionThreshold.description:\n- \"Minimum response count for the current context. User response counts are stored per request rather than per context, so valid shares submitted under different contexts can be combined and the last response selects the threshold checked.\"\n+ \"Minimum response count for user decryption consensus in the current context. Each request is answered under the threshold of its pinned context, which the GatewayConfig owner can retune per context.\"\n implementationNames.zama:0x943CEfD1A00d3ae5b298bB10D4EddA09B279C8B0:\n- \"Decryption\"\n implementationNames.zama:0x86F8e9626cCff3f2eB3dA248F33DfF43531DBFD8:\n+ \"Decryption\"\n }\n```\n\n```diff\n contract KMSGeneration (zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3) [zama/KMSGeneration_v0_5_0] {\n +++ description: View-only gateway contract retaining historical queries for previously generated FHE keys and CRS materials. All state-changing key-generation, CRS-generation, PRSS, and key-resharing workflows were removed in v0.5.0 after their move to Ethereum.\n template:\n- \"zama/KMSGeneration\"\n+ \"zama/KMSGeneration_v0_5_0\"\n sourceHashes.1:\n- \"0x24b946dbf9b33a087ddcfba5bef6adfb4fb85c47ee48d0f3d35487b5a76900dc\"\n+ \"0x19abe2dec360556cd7dd3bbf0197f56dcaf76dc5889859f0e18046a971c70498\"\n description:\n- \"Gateway contract that orchestrates FHE key generation, CRS generation, PRSS initialization, and key resharing through threshold KMS responses.\"\n+ \"View-only gateway contract retaining historical queries for previously generated FHE keys and CRS materials. All state-changing key-generation, CRS-generation, PRSS, and key-resharing workflows were removed in v0.5.0 after their move to Ethereum.\"\n values.$implementation:\n- \"zama:0x3d345DFc156381E6060Cdf652cDf7f92DF94fAFF\"\n+ \"zama:0x68CEb7709aC1bcD60e36c4144a243A445A2cb076\"\n values.$pastUpgrades.3:\n+ [\"2026-08-06T17:11:04.000Z\",\"0x350755101263bed64dc377ef6f3ef07f95f97918b689967a60ee625d0d9e025c\",[\"zama:0x68CEb7709aC1bcD60e36c4144a243A445A2cb076\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.gatewayKmsGenThreshold:\n- 7\n values.gatewayKmsSigners:\n- [\"zama:0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f\",\"zama:0xdC472efa1642D5afB684aAaa546E22FB24AAB965\",\"zama:0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3\",\"zama:0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f\",\"zama:0x41b19EB4585450db79ac03ba9503106EC7895905\",\"zama:0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921\",\"zama:0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D\",\"zama:0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8\",\"zama:0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f\",\"zama:0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58\",\"zama:0x7C17BE232e5968BDa9516478B798b9E90D013fCC\",\"zama:0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385\",\"zama:0xB7978e602D2AF68258dA614AF949E014BF0DE0eb\"]\n values.gatewayKmsTxSenders:\n- [\"zama:0x711EBE8aA590f9C9904ff279239E89dB2eFbC890\",\"zama:0xB4CE988D382425F64c99A352375F72A5f1cf6FFB\",\"zama:0x4eC7200E392B97913cbD6d8160B011406EB019F1\",\"zama:0xEd1D622bd59d657580aBAc65312b40B4B2dA6236\",\"zama:0x74a1E2e87a4026b7B8b5252c747E514159515e9a\",\"zama:0x0e25B8DB74c754C8275C0B219ba2A6CD7c59E31D\",\"zama:0x577Fd21e4BC7D644A4177C4B89146e1Ab394De04\",\"zama:0xbaac6F9DD84bFB303F05B4DE45A88Eec86855BD0\",\"zama:0x43e4c21cf9d24Dc5b4e00031349EC213A2ba8340\",\"zama:0xC105B5933446658D226582f7A112F49a70b54364\",\"zama:0xbcF4943A856497FB2345409D35f4d1eae9A0363E\",\"zama:0xD227C4B573800EdA3bAdA6DAC872E9134E012e6D\",\"zama:0x487e41623b7FeB464ff79F7326DCa791c9a1c5EC\"]\n values.getActiveCrsId:\n- \"2261564242916331941866620800950935700259179388000792266395655937654553313281\"\n values.getActiveKeyId:\n- \"1809251394333065553493296640760748560207343510400633813116524750123642650625\"\n values.getVersion:\n- \"KMSGeneration v0.4.0\"\n+ \"KMSGeneration v0.5.0\"\n fieldMeta.gatewayConfig.description:\n- \"GatewayConfig contract used as the source of truth for the gateway owner, KMS set, and KMS generation threshold.\"\n+ \"GatewayConfig contract used as the source of truth for the gateway owner and for resolving KMS node storage URLs in historical material queries.\"\n fieldMeta.gatewayOwner.description:\n- \"Owner of GatewayConfig. This account authorizes KMSGeneration upgrades and can trigger key, CRS, PRSS, and key-resharing workflows.\"\n+ \"Owner of GatewayConfig. This account authorizes KMSGeneration upgrades.\"\n fieldMeta.gatewayKmsTxSenders:\n- {\"severity\":\"HIGH\",\"description\":\"KMS transaction-sender addresses configured in GatewayConfig. These accounts may submit preprocessing keygen, keygen, and CRS generation responses.\",\"type\":\"PERMISSION\"}\n fieldMeta.gatewayKmsSigners:\n- {\"severity\":\"HIGH\",\"description\":\"KMS signer addresses configured in GatewayConfig. Their EIP-712 signatures determine whether key and CRS generation responses reach threshold.\",\"type\":\"PERMISSION\"}\n fieldMeta.gatewayKmsGenThreshold:\n- {\"severity\":\"HIGH\",\"description\":\"Minimum number of matching KMS responses required before key or CRS generation reaches consensus.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getActiveKeyId:\n- {\"severity\":\"HIGH\",\"description\":\"Identifier of the active FHE key generated through KMS consensus.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getActiveCrsId:\n- {\"severity\":\"HIGH\",\"description\":\"Identifier of the active CRS generated through KMS consensus.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.eip712Domain.description:\n- \"EIP-712 domain used when validating KMS signatures over key-generation and CRS-generation responses.\"\n+ \"EIP-712 domain retained from the KMS generation workflows removed in v0.5.0.\"\n implementationNames.zama:0x3d345DFc156381E6060Cdf652cDf7f92DF94fAFF:\n- \"KMSGeneration\"\n implementationNames.zama:0x68CEb7709aC1bcD60e36c4144a243A445A2cb076:\n+ \"KMSGeneration\"\n }\n```\n\n```diff\n EOA (zama:0x41b19EB4585450db79ac03ba9503106EC7895905) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x43e4c21cf9d24Dc5b4e00031349EC213A2ba8340) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x487e41623b7FeB464ff79F7326DCa791c9a1c5EC) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x4eC7200E392B97913cbD6d8160B011406EB019F1) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x577Fd21e4BC7D644A4177C4B89146e1Ab394De04) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n contract SafeL2 (zama:0x5f0F86BcEad6976711C9B131bCa5D30E767fe2bE) [GnosisSafe] {\n +++ description: Gateway owner Safe. Its LayerZero governance module is outside the Zama Gateway protocol surface covered here.\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"start KMS key generation, CRS generation, PRSS initialization, and key resharing.\",\"role\":\".gatewayOwner\"}\n receivedPermissions.5.description:\n- \"create KMS contexts that immediately become current, update current thresholds and other gateway configuration, transfer ownership, and unpause gateway workflow contracts. Historical KMS contexts cannot be removed in this version.\"\n+ \"create KMS contexts that immediately become current, destroy historical KMS contexts, update thresholds of any live context, manage coprocessors, custodians and host chains, transfer ownership, and unpause gateway workflow contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x711EBE8aA590f9C9904ff279239E89dB2eFbC890) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x74a1E2e87a4026b7B8b5252c747E514159515e9a) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x7C17BE232e5968BDa9516478B798b9E90D013fCC) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0xB4CE988D382425F64c99A352375F72A5f1cf6FFB) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0xB7978e602D2AF68258dA614AF949E014BF0DE0eb) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0xbaac6F9DD84bFB303F05B4DE45A88Eec86855BD0) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0xbcF4943A856497FB2345409D35f4d1eae9A0363E) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0xC105B5933446658D226582f7A112F49a70b54364) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n contract InputVerification (zama:0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287) [zama/InputVerification] {\n +++ description: Gateway contract that receives encrypted input verification requests from registered and enabled host chains, collects coprocessor responses, and emits a threshold-signed attestation once coprocessor consensus is reached. Ethereum InputVerifier verifies attestations against this contract's EIP-712 domain.\n sourceHashes.1:\n- \"0x52c38ce781ecef28b118222541c9b079f2ae7d6402452584e620e84ca347875f\"\n+ \"0x58bb055397e294a46ebccbc53c94bb2494bf05acd7ad77f2fb7cc46b3ef1eb92\"\n values.$implementation:\n- \"zama:0xA08c4367eB984945da2dad5BF7d94D1B2863197A\"\n+ \"zama:0xf9f0F5ef8301CF1573EBe0F45E13A4CabB621821\"\n values.$pastUpgrades.3:\n+ [\"2026-08-06T17:11:04.000Z\",\"0x350755101263bed64dc377ef6f3ef07f95f97918b689967a60ee625d0d9e025c\",[\"zama:0xf9f0F5ef8301CF1573EBe0F45E13A4CabB621821\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.getVersion:\n- \"InputVerification v0.3.0\"\n+ \"InputVerification v0.4.0\"\n implementationNames.zama:0xA08c4367eB984945da2dad5BF7d94D1B2863197A:\n- \"InputVerification\"\n implementationNames.zama:0xf9f0F5ef8301CF1573EBe0F45E13A4CabB621821:\n+ \"InputVerification\"\n }\n```\n\n```diff\n EOA (zama:0xD227C4B573800EdA3bAdA6DAC872E9134E012e6D) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```\n\n```diff\n contract CiphertextCommits (zama:0xd82cF70FC102028cd01acB87D0E107780ae4F41F) [zama/CiphertextCommits] {\n +++ description: Gateway contract that stores ciphertext and SNS ciphertext digests after coprocessor consensus, allowing decryption requests to reference committed ciphertext material. Digests referencing unregistered or disabled host chains are rejected.\n sourceHashes.1:\n- \"0x70a834887489420cb7ea7044739bcc74d735be01e262a27ea23132992d21a898\"\n+ \"0xa3aa22a184258ca16a5d83ce495ae0d307d4c5ec9fda8a7622d4f95728f4af03\"\n values.$implementation:\n- \"zama:0xC92f2dc7eF79728ed32e745020EF463270217e78\"\n+ \"zama:0xB373Ae42736E3C266D4A5D090c00c7f0Bda06622\"\n values.$pastUpgrades.3:\n+ [\"2026-08-06T17:11:04.000Z\",\"0x350755101263bed64dc377ef6f3ef07f95f97918b689967a60ee625d0d9e025c\",[\"zama:0xB373Ae42736E3C266D4A5D090c00c7f0Bda06622\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.getVersion:\n- \"CiphertextCommits v0.3.0\"\n+ \"CiphertextCommits v0.4.0\"\n implementationNames.zama:0xC92f2dc7eF79728ed32e745020EF463270217e78:\n- \"CiphertextCommits\"\n implementationNames.zama:0xB373Ae42736E3C266D4A5D090c00c7f0Bda06622:\n+ \"CiphertextCommits\"\n }\n```\n\n```diff\n EOA (zama:0xdC472efa1642D5afB684aAaa546E22FB24AAB965) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n contract GatewayConfig (zama:0xDE537Be194777A56f8B19d14079E6a78249390ab) [zama/GatewayConfig_v0_6_0] {\n +++ description: Central configuration contract for the Zama Gateway. A KMS context snapshots node transaction senders, signers, and workflow thresholds; the owner can create new contexts, retune the thresholds of any live context, and destroy non-current contexts, which immediately invalidates them for decryption. Registered host chains can be disabled, re-enabled, or removed by the owner.\n template:\n- \"zama/GatewayConfig_v0_5_0\"\n+ \"zama/GatewayConfig_v0_6_0\"\n sourceHashes.1:\n- \"0x1089121569189032b8cee0dae0c71eedecf7757f712a6d14ef684915093c6747\"\n+ \"0xe903576aaecdd97c5036c6bc029149a11b44484c78d9c6b0d802a882d4744597\"\n description:\n- \"Central configuration contract for the Zama Gateway. A KMS context snapshots node transaction senders, signers, and workflow thresholds; historical contexts remain stored and selectable by Decryption because this version has no context-destruction function.\"\n+ \"Central configuration contract for the Zama Gateway. A KMS context snapshots node transaction senders, signers, and workflow thresholds; the owner can create new contexts, retune the thresholds of any live context, and destroy non-current contexts, which immediately invalidates them for decryption. Registered host chains can be disabled, re-enabled, or removed by the owner.\"\n values.$implementation:\n- \"zama:0x2294E3C211238Ae31E2824576CCd7f996CC7Dc00\"\n+ \"zama:0x1950aD98e834f6c07553365196d4CddeD179c536\"\n values.$pastUpgrades.4:\n+ [\"2026-08-06T17:11:04.000Z\",\"0x350755101263bed64dc377ef6f3ef07f95f97918b689967a60ee625d0d9e025c\",[\"zama:0x1950aD98e834f6c07553365196d4CddeD179c536\"]]\n values.$upgradeCount:\n- 4\n+ 5\n+++ description: Registered host chains and their host-chain FHEVMExecutor and ACL endpoints. Returned addresses belong to the listed host chain, not to the gateway chain; Ethereum entries are exposed as formatted cross-chain references in ethereumHostChains.\n values.getHostChains.1:\n+ {\"chainId\":137,\"fhevmExecutorAddress\":\"zama:0xAB0075E77fe06083f52bdf10e2ccDB3712483057\",\"aclAddress\":\"zama:0x6737F17e31cf26a1b62fb0362acC5a16CB156F49\",\"name\":\"polygon\",\"website\":\"https://polygonscan.com\"}\n values.getVersion:\n- \"GatewayConfig v0.5.0\"\n+ \"GatewayConfig v0.6.0\"\n+++ description: KMS contexts destroyed by the owner. Destroyed contexts are invalid: their per-context getters revert, new requests cannot pin them, and pending requests pinned to them can no longer reach consensus.\n+++ severity: HIGH\n values.destroyedKmsContexts:\n+ []\n+++ description: Registered host chains currently disabled by the owner. Gateway workflows reject requests and ciphertext handles referencing disabled chains; a chain must be disabled before it can be removed.\n+++ severity: HIGH\n values.disabledHostChains:\n+ []\n fieldMeta.owner.description:\n- \"Owner of GatewayConfig. This account creates KMS contexts, changes the current context's thresholds, manages coprocessors, custodians and host chains, transfers ownership, and unpauses gateway contracts. A newly created context becomes current immediately, while all older contexts remain selectable by Decryption.\"\n+ \"Owner of GatewayConfig. This account creates and destroys KMS contexts, changes the thresholds of any live context, manages coprocessors, custodians and host chains (including disabling and removing them), transfers ownership, and unpauses gateway contracts. A newly created context becomes current immediately; older contexts remain selectable by Decryption requests until destroyed.\"\n fieldMeta.inputVerification.description:\n- \"InputVerification workflow contract paused and unpaused by GatewayConfig.\"\n+ \"InputVerification workflow contract paused and unpaused by GatewayConfig. Coprocessor set and threshold updates require this contract to be paused first.\"\n fieldMeta.ethereumHostChains.description:\n- \"Ethereum host-chain endpoints registered in GatewayConfig, derived from getHostChains entries with chainId 1. These are the L1 FHEVMExecutor and ACL contracts whose state is used by the Gateway workflows.\"\n+ \"Ethereum host-chain endpoints registered in GatewayConfig, derived from getHostChains entries with chainId 1. These are the L1 FHEVMExecutor and ACL contracts whose state is used by the Gateway workflows. Disabled-but-not-removed chains still appear here; see disabledHostChains.\"\n fieldMeta.getKmsTxSenders.description:\n- \"KMS transaction-sender addresses in the current Gateway context. Historical context senders remain authorized for Decryption responses that explicitly select their context; post-migration contexts are indexed here and the migrated context is indexed on Decryption.\"\n+ \"KMS transaction-sender addresses in the current Gateway context. Senders from other live contexts remain authorized for Decryption requests that pinned their context until the context is destroyed; post-migration contexts are indexed here and the migrated context is indexed on Decryption.\"\n fieldMeta.getKmsSigners.description:\n- \"KMS signer addresses in the current Gateway context. Historical context signers remain authorized for explicitly selected Decryption responses; post-migration contexts are indexed here and the migrated context is indexed on Decryption.\"\n+ \"KMS signer addresses in the current Gateway context. Signers from other live contexts remain authorized for Decryption requests that pinned their context until the context is destroyed; post-migration contexts are indexed here and the migrated context is indexed on Decryption.\"\n fieldMeta.createdKmsContexts.description:\n- \"KMS contexts created after migration, reconstructed from UpdateKmsContext events with their node set and creation thresholds. Nodes remain authorized for Decryption indefinitely; later threshold-update events do not identify a context, so final historical thresholds must be read through context-specific getters or project overrides.\"\n+ \"KMS contexts created after migration, reconstructed from UpdateKmsContext events with their node set and creation thresholds. Contexts stay selectable by Decryption requests until destroyed (see destroyedKmsContexts). Thresholds can be retuned per context after creation; current values must be read through context-specific getters or project overrides.\"\n fieldMeta.createdKmsContextTxSenders.description:\n- \"KMS transaction senders from contexts created after migration. They remain authorized for Decryption responses that select their context because GatewayConfig has no context-destruction function.\"\n+ \"KMS transaction senders from contexts created after migration. They remain authorized for Decryption requests that pinned their context until the owner destroys that context.\"\n fieldMeta.createdKmsContextSigners.description:\n- \"KMS signers from contexts created after migration. They remain authorized for Decryption responses that select their context because GatewayConfig has no context-destruction function.\"\n+ \"KMS signers from contexts created after migration. They remain authorized for Decryption requests that pinned their context until the owner destroys that context.\"\n fieldMeta.getMpcThreshold.description:\n- \"MPC threshold for KMS key material generation in the current context.\"\n+ \"MPC threshold for KMS key material generation in the current context. The owner can retune it per context.\"\n fieldMeta.getCurrentKmsContextId.description:\n- \"Identifier of the context used when a Decryption response has empty or version 0 extraData. Version 1 responses can explicitly select any historical context, and requests do not store or bind a context.\"\n+ \"Identifier of the context pinned by new Decryption requests whose extraData is empty or starts with version 0. Version 1 request extraData can explicitly pin any live context; responses must match the pinned context.\"\n fieldMeta.getPublicDecryptionThresholdForContext.description:\n- \"Minimum number of KMS signatures required for public decryption consensus in the current context.\"\n+ \"Minimum number of KMS signatures required for public decryption consensus in the current context. The owner can retune it per context.\"\n fieldMeta.getUserDecryptionThresholdForContext.description:\n- \"Minimum number of KMS shares required for user decryption consensus in the current context.\"\n+ \"Minimum number of KMS shares required for user decryption consensus in the current context. The owner can retune it per context.\"\n fieldMeta.getKmsGenThreshold.description:\n- \"Minimum number of KMS signatures required for key and CRS generation consensus in the current context.\"\n+ \"Minimum number of KMS signatures required for key and CRS generation consensus in the current context. Consumed by the Ethereum-side KMS generation since gateway KMSGeneration v0.5.0.\"\n fieldMeta.getCoprocessorMajorityThreshold.description:\n- \"Minimum number of matching coprocessor messages required for gateway coprocessor consensus.\"\n+ \"Minimum number of matching coprocessor messages required for gateway coprocessor consensus. Updates require InputVerification to be paused first.\"\n fieldMeta.destroyedKmsContexts:\n+ {\"severity\":\"HIGH\",\"description\":\"KMS contexts destroyed by the owner. Destroyed contexts are invalid: their per-context getters revert, new requests cannot pin them, and pending requests pinned to them can no longer reach consensus.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.disabledHostChains:\n+ {\"severity\":\"HIGH\",\"description\":\"Registered host chains currently disabled by the owner. Gateway workflows reject requests and ciphertext handles referencing disabled chains; a chain must be disabled before it can be removed.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.zama:0x2294E3C211238Ae31E2824576CCd7f996CC7Dc00:\n- \"GatewayConfig\"\n implementationNames.zama:0x1950aD98e834f6c07553365196d4CddeD179c536:\n+ \"GatewayConfig\"\n }\n```\n\n```diff\n EOA (zama:0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"sign KMS key-generation and CRS-generation material accepted by KMSGeneration.\",\"role\":\".gatewayKmsSigners\"}\n receivedPermissions.2.description:\n- \"sign KMS decryption, key-generation, and CRS-generation material accepted by gateway contracts.\"\n+ \"sign KMS decryption material accepted by gateway contracts.\"\n }\n```\n\n```diff\n EOA (zama:0xEd1D622bd59d657580aBAc65312b40B4B2dA6236) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3\",\"description\":\"submit KMS key-generation and CRS-generation responses to KMSGeneration.\",\"role\":\".gatewayKmsTxSenders\"}\n receivedPermissions.2.description:\n- \"submit KMS decryption, key-generation, and CRS-generation responses to gateway contracts.\"\n+ \"submit KMS decryption responses to gateway contracts.\"\n }\n```"
}
]
},
{
"id": "012462c7",
"date": "Tue, 04 Aug 2026 13:19:56 GMT",
"timestamp": 1785844532,
"description": "ZamaGovMultisigB executed a proposal rotating two ZamaGovMultisigA members while preserving its 9-of-17 threshold.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZamaGovMultisigA (eth:0xE43c73aAb2b6aBBad6d0461997ce1cfea5ABe66f) [zama/Multisig] {\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n+++ description: Current multisig members reconstructed from MembersAdded and MembersRemoved events.\n values.$members.5:\n- \"eth:0x32f3D0D7E20Ca11Cad21f32Dad91506ea89f5897\"\n+++ description: Current multisig members reconstructed from MembersAdded and MembersRemoved events.\n values.$members.6:\n- \"eth:0xE53e32a669357Ab0360103d8f294812B914AF9e4\"\n+++ description: Current multisig members reconstructed from MembersAdded and MembersRemoved events.\n values.$members.15:\n+ \"eth:0xc49376C4D044011eEce6eE69eFAe06f0Cc2bd008\"\n+++ description: Current multisig members reconstructed from MembersAdded and MembersRemoved events.\n values.$members.16:\n+ \"eth:0x27B1c34F2aeEc91F9704BD1CE288E5c667F29045\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Safe (eth:0xE53e32a669357Ab0360103d8f294812B914AF9e4) [GnosisSafe]\n +++ description: None\n```"
}
]
},
{
"id": "3a509885",
"date": "Thu, 23 Jul 2026 14:09:37 GMT",
"timestamp": 1784815701,
"description": "The Safe signer set changed from 2-of-3 to 3-of-5, removing two signers and adding four.",
"isHighSeverity": false,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n EOA (eth:0x4202860Fa6afAF3e2977cD139Ac693a05e4f9450)\n +++ description: None\n```\n\n```diff\n contract Safe (eth:0x69E55790880d0ABa56E48Ee1f7fc3834b0F5c223) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x5e4f2616AA570d60EC6D7BBF08D070fb81353553\"\n values.$members.1:\n+ \"eth:0x1E3eafD783D47c36dC5CD529721E6cc16456Cc0F\"\n values.$members.1:\n- \"eth:0x7df0Fe803832BB3Ca8906a6e49968C2421C1aE9B\"\n+ \"eth:0x0BBc1d7ceB10a0a00dD3aeBcA37e85D60d4a1103\"\n values.$members.2:\n- \"eth:0x4202860Fa6afAF3e2977cD139Ac693a05e4f9450\"\n+ \"eth:0xFa4902732675Ee16a508487E4fDcb910fFb00A20\"\n values.$threshold:\n- 2\n+ 3\n values.multisigThreshold:\n- \"2 of 3 (67%)\"\n+ \"3 of 5 (60%)\"\n }\n```"
}
]
},
{
"id": "a657d096",
"date": "Mon, 13 Jul 2026 09:17:17 GMT",
"timestamp": 1783927795,
"description": "Introduces KMS signer set rotation on Ethereum and the Gateway: each signer set is called a context and is valid and retains all permissions until specifically invalidated ('destroyed'). HCULimit adds per-transaction and per-block caps plus a bypass whitelist.",
"isHighSeverity": true,
"changeCount": 112,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract HCULimit (eth:0x3b4da65e45Fda2CAa0285A735ab4361a44F171E2) [zama/ZamaHCULimit_v0_2_0] {\n +++ description: Tracks and enforces per-transaction and per-block homomorphic computation unit limits for FHEVM operation requests.\n template:\n- \"zama/ZamaHCULimit\"\n+ \"zama/ZamaHCULimit_v0_2_0\"\n sourceHashes.1:\n- \"0xb4b32e3ee98a51750d9ec0af3a9c599dbb6e097cdf4f55f37e198a75f0f2e5eb\"\n+ \"0xc52e1b93c97602e6da1f1925e14fc5454426a778875655ec17910be5e217b98e\"\n description:\n- \"Tracks and enforces homomorphic computation unit limits for FHEVM operation requests.\"\n+ \"Tracks and enforces per-transaction and per-block homomorphic computation unit limits for FHEVM operation requests.\"\n values.$implementation:\n- \"eth:0x4E4329F10f7EE88a5dDB13716B8bE00c077CBeb6\"\n+ \"eth:0x0F2B7e8F19ADc874F21e27ADAA4B22FC00a0B442\"\n values.$pastUpgrades.2:\n+ [\"2026-07-10T08:34:11.000Z\",\"0xec2212fb2d35b72388507e5fe9c218c97512b943b5f28cedbfba35b7ac9bd224\",[\"eth:0x0F2B7e8F19ADc874F21e27ADAA4B22FC00a0B442\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.getVersion:\n- \"HCULimit v0.1.0\"\n+ \"HCULimit v0.2.0\"\n+++ description: Callers that bypass the global per-block HCU cap, reconstructed from whitelist events.\n+++ severity: HIGH\n values.blockHCUWhitelist:\n+ []\n+++ description: Maximum HCU consumed by non-whitelisted callers in one block.\n+++ severity: HIGH\n values.getGlobalHCUCapPerBlock:\n+ 281474976710655\n+++ description: Maximum sequential HCU depth allowed in one transaction.\n+++ severity: HIGH\n values.getMaxHCUDepthPerTx:\n+ 5000000\n+++ description: Maximum total HCU allowed in one transaction.\n+++ severity: HIGH\n values.getMaxHCUPerTx:\n+ 20000000\n fieldMeta.getGlobalHCUCapPerBlock:\n+ {\"severity\":\"HIGH\",\"description\":\"Maximum HCU consumed by non-whitelisted callers in one block.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getMaxHCUDepthPerTx:\n+ {\"severity\":\"HIGH\",\"description\":\"Maximum sequential HCU depth allowed in one transaction.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getMaxHCUPerTx:\n+ {\"severity\":\"HIGH\",\"description\":\"Maximum total HCU allowed in one transaction.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.blockHCUWhitelist:\n+ {\"severity\":\"HIGH\",\"description\":\"Callers that bypass the global per-block HCU cap, reconstructed from whitelist events.\",\"type\":\"PERMISSION\"}\n fieldMeta.getBlockMeter:\n+ {\"description\":\"HCU consumed by non-whitelisted callers in the current block.\"}\n implementationNames.eth:0x4E4329F10f7EE88a5dDB13716B8bE00c077CBeb6:\n- \"HCULimit\"\n implementationNames.eth:0x0F2B7e8F19ADc874F21e27ADAA4B22FC00a0B442:\n+ \"HCULimit\"\n }\n```\n\n```diff\n contract KMSVerifier (eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03) [zama/ZamaKMSVerifier_v0_2_0] {\n +++ description: Ethereum host-chain verifier for public decryption results produced through the Zama Gateway Decryption contract. Confidential token wrappers accept a decrypted value when it is signed by the threshold of the current or any retained non-destroyed KMS context.\n template:\n- \"zama/ZamaKMSVerifier\"\n+ \"zama/ZamaKMSVerifier_v0_2_0\"\n sourceHashes.1:\n- \"0xe6773e8f1549070f8e0fcae01d4bcf98332a43c1b6f2d4eca1a108295c327d8e\"\n+ \"0xa40292fe461810a065f80e305f6b85ab3ca2cfd416dc965d4791a111554cf638\"\n description:\n- \"Ethereum host-chain verifier for public decryption results produced through the Zama Gateway Decryption contract. Confidential token wrappers use it before accepting decrypted values.\"\n+ \"Ethereum host-chain verifier for public decryption results produced through the Zama Gateway Decryption contract. Confidential token wrappers accept a decrypted value when it is signed by the threshold of the current or any retained non-destroyed KMS context.\"\n values.$implementation:\n- \"eth:0x8210A6c69FAc2e9856C7a19Ee70b26cFa3A4F0E2\"\n+ \"eth:0xd0d0C7E1bc1E2F6Cd00E3b4B1083DdD9969155FD\"\n values.$pastUpgrades.2:\n+ [\"2026-07-10T08:34:11.000Z\",\"0xec2212fb2d35b72388507e5fe9c218c97512b943b5f28cedbfba35b7ac9bd224\",[\"eth:0xd0d0C7E1bc1E2F6Cd00E3b4B1083DdD9969155FD\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.getVersion:\n- \"KMSVerifier v0.1.0\"\n+ \"KMSVerifier v0.2.0\"\n+++ description: Non-destroyed KMS contexts created after the v0.2 migration, reconstructed from context creation and destruction events. Each context is an immutable signer and threshold snapshot that can attest results for any ciphertext handle; it is not scoped to ciphertext age or key ID.\n+++ severity: HIGH\n values.createdKmsContexts:\n+ []\n+++ description: Identifier of the context used when proof extraData is empty or starts with version 0. Version 1 extraData can explicitly select any non-destroyed historical context, including for ciphertexts created after that context was superseded.\n+++ severity: HIGH\n values.getCurrentKmsContextId:\n+ \"3166189940082864718613269121331309980362851143201109172953918312716374638593\"\n+++ description: Identifier of the first v0.2 KMS context created from the source-defined context counter during initialization or migration.\n+++ severity: HIGH\n values.initialKmsContextId:\n+ \"3166189940082864718613269121331309980362851143201109172953918312716374638593\"\n+++ description: Signers in the first v0.2 KMS context. This code-defined context remains authorized for public decryption proofs after later rotations unless the ACL owner explicitly destroys it.\n+++ severity: HIGH\n values.initialKmsContextSigners:\n+ [\"eth:0xe9f7ecfF21a2e0Ca58eA26ae869FEF38ab49ed6f\",\"eth:0xdC472efa1642D5afB684aAaa546E22FB24AAB965\",\"eth:0xbf05c17BEB0BF2F2c78Cd491A53a148e035279C3\",\"eth:0x915055c5F05C0d88BCdf1e3DfBA18aBD2a18350f\",\"eth:0x41b19EB4585450db79ac03ba9503106EC7895905\",\"eth:0x6e5f02Cd4B33f0Cf4ED5326ac9eE25e5aA8c4921\",\"eth:0x966188a1f697F6A1B5cfA51495DD8A8A7b5CdB8D\",\"eth:0x5d0e7033774dD43eE546D49b72Bd0B561E52f7C8\",\"eth:0xDFc9Dcb3D206AA164770874f36a4B5AD2EE5194f\",\"eth:0x7C5Eeb4D8CED0101799B8Cc212eE874097364F58\",\"eth:0x7C17BE232e5968BDa9516478B798b9E90D013fCC\",\"eth:0x6016DCA5e91e62826e3FEA1Fb0a763602dc1E385\",\"eth:0xB7978e602D2AF68258dA614AF949E014BF0DE0eb\"]\n fieldMeta.aclOwner.description:\n- \"Owner of the Zama ACL contract. This account is authorized by onlyACLOwner to rotate the KMS signer set and threshold.\"\n+ \"Owner of the Zama ACL contract. This account can create a new KMS signer context that immediately becomes the default verifier authority, and can destroy any non-current context.\"\n fieldMeta.getKmsSigners.description:\n- \"KMS signers accepted by KMSVerifier. The threshold number of these signers must sign public decryption results for the Gateway Decryption EIP-712 domain before wrappers accept the decrypted values.\"\n+ \"KMS signers in the current context. Permission coverage is also indexed through initialKmsContextSigners and createdKmsContexts so superseded contexts remain visible.\"\n fieldMeta.getThreshold.description:\n- \"Minimum number of configured KMS signer signatures required to accept a public decryption result.\"\n+ \"Minimum number of KMS signatures from the current context required to accept a public decryption result. Retained contexts keep their own immutable thresholds.\"\n fieldMeta.initialKmsContextId:\n+ {\"severity\":\"HIGH\",\"description\":\"Identifier of the first v0.2 KMS context created from the source-defined context counter during initialization or migration.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.initialKmsContextSigners:\n+ {\"severity\":\"HIGH\",\"description\":\"Signers in the first v0.2 KMS context. This code-defined context remains authorized for public decryption proofs after later rotations unless the ACL owner explicitly destroys it.\",\"type\":\"PERMISSION\"}\n fieldMeta.createdKmsContexts:\n+ {\"severity\":\"HIGH\",\"description\":\"Non-destroyed KMS contexts created after the v0.2 migration, reconstructed from context creation and destruction events. Each context is an immutable signer and threshold snapshot that can attest results for any ciphertext handle; it is not scoped to ciphertext age or key ID.\",\"type\":\"PERMISSION\"}\n fieldMeta.getCurrentKmsContextId:\n+ {\"severity\":\"HIGH\",\"description\":\"Identifier of the context used when proof extraData is empty or starts with version 0. Version 1 extraData can explicitly select any non-destroyed historical context, including for ciphertexts created after that context was superseded.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.eth:0x8210A6c69FAc2e9856C7a19Ee70b26cFa3A4F0E2:\n- \"KMSVerifier\"\n implementationNames.eth:0xd0d0C7E1bc1E2F6Cd00E3b4B1083DdD9969155FD:\n+ \"KMSVerifier\"\n }\n```\n\n```diff\n contract DAO (eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3) [zama/ZamaDAO] {\n +++ description: Aragon DAO that stores governance state and executes proposal action batches.\n directlyReceivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x3b4da65e45Fda2CAa0285A735ab4361a44F171E2\",\"description\":\"change the per-block and per-transaction HCU limits and manage callers that bypass the per-block limit.\",\"role\":\".aclOwner\"}\n directlyReceivedPermissions.4.description:\n- \"set the KMS signer set and signature threshold used for public decryption verification.\"\n+ \"create KMS signer contexts with arbitrary signer sets and thresholds, and destroy non-current contexts. A malicious context can attest an inflated unwrap amount and drain pooled wrapper backing.\"\n directlyReceivedPermissions.14.description:\n- \"transfer ACL ownership, unpause the ACL, block or unblock accounts, manage PauserSet membership, and update Zama verifier signer sets and thresholds.\"\n+ \"transfer ACL ownership, unpause the ACL, block or unblock accounts, manage PauserSet membership, and create or destroy KMSVerifier signer contexts.\"\n }\n```\n\n```diff\n contract ZamaGovMultisigB (eth:0xBc860b6a4C860C5424B84A056E53ACFb2C99a38F) [zama/Multisig] {\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n receivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x3b4da65e45Fda2CAa0285A735ab4361a44F171E2\",\"description\":\"change the per-block and per-transaction HCU limits and manage callers that bypass the per-block limit.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.4.description:\n- \"set the KMS signer set and signature threshold used for public decryption verification.\"\n+ \"create KMS signer contexts with arbitrary signer sets and thresholds, and destroy non-current contexts. A malicious context can attest an inflated unwrap amount and drain pooled wrapper backing.\"\n receivedPermissions.16.description:\n- \"transfer ACL ownership, unpause the ACL, block or unblock accounts, manage PauserSet membership, and update Zama verifier signer sets and thresholds.\"\n+ \"transfer ACL ownership, unpause the ACL, block or unblock accounts, manage PauserSet membership, and create or destroy KMSVerifier signer contexts.\"\n }\n```\n\n```diff\n contract ACL (eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6) [zama/ZamaACL_v0_3_0] {\n +++ description: Ethereum host-chain access-control registry for encrypted handles, storing handle allowances and delegation state for ciphertext references. Its public-decryption and user-delegation events are mirrored into the Gateway MultichainACL by coprocessor consensus.\n template:\n- \"zama/ZamaACL\"\n+ \"zama/ZamaACL_v0_3_0\"\n sourceHashes.1:\n- \"0x5f835dee1c2a2676dc34ff636b1df73f1fe8b58073069d0a8df7687cd834f35f\"\n+ \"0x47f47986a3024b31fa3caee357720f4fba4ea3fae419ff53eebe1a66e87d69ef\"\n values.$implementation:\n- \"eth:0x96B171e4f8eCda0FFdD128b319Fa185b14f99D76\"\n+ \"eth:0x3F6D970d30E1FFE9657aa8072C82dA10eef1c3D6\"\n values.$pastUpgrades.3:\n+ [\"2026-07-10T08:34:11.000Z\",\"0xec2212fb2d35b72388507e5fe9c218c97512b943b5f28cedbfba35b7ac9bd224\",[\"eth:0x3F6D970d30E1FFE9657aa8072C82dA10eef1c3D6\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.getVersion:\n- \"ACL v0.2.0\"\n+ \"ACL v0.3.0\"\n implementationNames.eth:0x96B171e4f8eCda0FFdD128b319Fa185b14f99D76:\n- \"ACL\"\n implementationNames.eth:0x3F6D970d30E1FFE9657aa8072C82dA10eef1c3D6:\n+ \"ACL\"\n }\n```\n\n```diff\n contract FHEVMExecutor (eth:0xD82385dADa1ae3E969447f20A3164F6213100e75) [zama/ZamaFHEVMExecutor_v0_3_0] {\n +++ description: FHEVM executor that accepts encrypted operation requests, accounts for computation usage, and stores ciphertext handles for operation results.\n template:\n- \"zama/ZamaFHEVMExecutor\"\n+ \"zama/ZamaFHEVMExecutor_v0_3_0\"\n sourceHashes.1:\n- \"0xc3b56811670be45b7f1aac864be6855e3875c8e449c2fe3cbb540143f0dacddb\"\n+ \"0xf475718e9125acfc2f69d3c9cca8cedb9a15c644da7490f7f5fe0ae2690a77cc\"\n values.$implementation:\n- \"eth:0xde3624dA8d9c45B57674cA0AcAC40630682211bb\"\n+ \"eth:0xC38aAfCBB73Fd4bd6f995275079C4Add9C1687E5\"\n values.$pastUpgrades.3:\n+ [\"2026-07-10T08:34:11.000Z\",\"0xec2212fb2d35b72388507e5fe9c218c97512b943b5f28cedbfba35b7ac9bd224\",[\"eth:0xC38aAfCBB73Fd4bd6f995275079C4Add9C1687E5\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.getVersion:\n- \"FHEVMExecutor v0.2.0\"\n+ \"FHEVMExecutor v0.3.0\"\n fieldMeta.getHCULimitAddress.description:\n- \"HCULimit contract used to account for homomorphic computation units consumed by encrypted operations.\"\n+ \"HCULimit contract used to account for homomorphic computation units consumed by encrypted operations for the original external caller.\"\n fieldMeta.getHandleVersion.description:\n- \"Current ciphertext handle version emitted by the executor.\"\n+ \"Current ciphertext handle version emitted by the executor. Version 1 result handles include operation-specific domain separation and block context in their derivation.\"\n implementationNames.eth:0xde3624dA8d9c45B57674cA0AcAC40630682211bb:\n- \"FHEVMExecutor\"\n implementationNames.eth:0xC38aAfCBB73Fd4bd6f995275079C4Add9C1687E5:\n+ \"FHEVMExecutor\"\n }\n```\n\n```diff\n contract ZamaGovMultisigA (eth:0xE43c73aAb2b6aBBad6d0461997ce1cfea5ABe66f) [zama/Multisig] {\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n receivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x3b4da65e45Fda2CAa0285A735ab4361a44F171E2\",\"description\":\"change the per-block and per-transaction HCU limits and manage callers that bypass the per-block limit.\",\"role\":\".aclOwner\",\"via\":[{\"address\":\"eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3\"}]}\n receivedPermissions.4.description:\n- \"set the KMS signer set and signature threshold used for public decryption verification.\"\n+ \"create KMS signer contexts with arbitrary signer sets and thresholds, and destroy non-current contexts. A malicious context can attest an inflated unwrap amount and drain pooled wrapper backing.\"\n receivedPermissions.16.description:\n- \"transfer ACL ownership, unpause the ACL, block or unblock accounts, manage PauserSet membership, and update Zama verifier signer sets and thresholds.\"\n+ \"transfer ACL ownership, unpause the ACL, block or unblock accounts, manage PauserSet membership, and create or destroy KMSVerifier signer contexts.\"\n }\n```\n\n```diff\n contract Decryption (zama:0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24) [zama/Decryption_v0_4_0] {\n +++ description: Gateway contract that orchestrates public and user decryption requests and checks committed ciphertext material. Each response independently selects a KMS context through extraData, or uses the context current when the response executes; requests do not store a context. KMS nodes enforce host-chain ACL state offchain, and Ethereum KMSVerifier verifies public results against this contract's EIP-712 domain.\n template:\n- \"zama/Decryption\"\n+ \"zama/Decryption_v0_4_0\"\n sourceHashes.1:\n- \"0xd2e9269a1dc3580af2eaa84178722c052767a5d174734ececeddeea5bacd1929\"\n+ \"0xcd821ac822a19a355acde1dd7ce435e2a6e16e21017756b899c058ee64552e28\"\n description:\n- \"Gateway contract that orchestrates public and user decryption requests, checks mirrored host-chain ACL state, collects KMS responses, and emits results once the configured KMS threshold is reached. Ethereum KMSVerifier verifies public decryption results against this contract's EIP-712 domain.\"\n+ \"Gateway contract that orchestrates public and user decryption requests and checks committed ciphertext material. Each response independently selects a KMS context through extraData, or uses the context current when the response executes; requests do not store a context. KMS nodes enforce host-chain ACL state offchain, and Ethereum KMSVerifier verifies public results against this contract's EIP-712 domain.\"\n values.$implementation:\n- \"zama:0xe691cE3d7a71E2eC9E96AF5bdD263FfEB124F8dE\"\n+ \"zama:0x943CEfD1A00d3ae5b298bB10D4EddA09B279C8B0\"\n values.$pastUpgrades.3:\n+ [\"2026-07-10T08:15:40.000Z\",\"0x5d63d8d9bf4790e7169cd1d6c440262aad29368190932f823377df311f389217\",[\"zama:0x943CEfD1A00d3ae5b298bB10D4EddA09B279C8B0\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.getVersion:\n- \"Decryption v0.3.0\"\n+ \"Decryption v0.4.0\"\n+++ description: Current GatewayConfig KMS context used by responses whose extraData is empty or starts with version 0. Requests do not bind this value, so a rotation can change the context used to answer an already pending request.\n+++ severity: HIGH\n values.gatewayKmsContextId:\n+ \"3166189940082864718613269121331309980362851143201109172953918312716374638593\"\n fieldMeta.gatewayMultichainACL.description:\n- \"MultichainACL contract containing the gateway-side ACL mirror checked before public or user decryptions are accepted.\"\n+ \"MultichainACL contract containing the gateway-side host-chain ACL mirror. The upgraded Decryption contract no longer checks it onchain and relies on KMS nodes to enforce ACL state.\"\n fieldMeta.gatewayKmsTxSenders.description:\n- \"KMS transaction-sender addresses configured in GatewayConfig. These accounts may submit signed public decryption results and user decryption shares.\"\n+ \"KMS transaction-sender addresses configured in the current GatewayConfig context. Historical context senders can also submit responses when response extraData explicitly selects their retained context. Post-migration contexts are indexed on GatewayConfig; migration-created membership requires a project override because no creation event was emitted.\"\n fieldMeta.gatewayKmsSigners.description:\n- \"KMS signer addresses configured in GatewayConfig. Their EIP-712 signatures determine whether public decryption results and user decryption shares reach threshold.\"\n+ \"KMS signer addresses configured in the current GatewayConfig context. Historical context signers can also sign responses when response extraData explicitly selects their retained context. Post-migration contexts are indexed on GatewayConfig; migration-created membership requires a project override because no creation event was emitted.\"\n fieldMeta.gatewayPublicDecryptionThreshold.description:\n- \"Minimum number of matching KMS signatures required before a public decryption result is emitted.\"\n+ \"Minimum matching-signature count for the current context. Public responses are grouped by a digest containing raw extraData; identical empty or version 0 extraData can accumulate responses across a context rotation while the last response selects the threshold checked.\"\n fieldMeta.gatewayUserDecryptionThreshold.description:\n- \"Minimum number of KMS shares required before a user decryption request is considered threshold-reached.\"\n+ \"Minimum response count for the current context. User response counts are stored per request rather than per context, so valid shares submitted under different contexts can be combined and the last response selects the threshold checked.\"\n fieldMeta.gatewayKmsContextId:\n+ {\"severity\":\"HIGH\",\"description\":\"Current GatewayConfig KMS context used by responses whose extraData is empty or starts with version 0. Requests do not bind this value, so a rotation can change the context used to answer an already pending request.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.zama:0xe691cE3d7a71E2eC9E96AF5bdD263FfEB124F8dE:\n- \"Decryption\"\n implementationNames.zama:0x943CEfD1A00d3ae5b298bB10D4EddA09B279C8B0:\n+ \"Decryption\"\n }\n```\n\n```diff\n contract SafeL2 (zama:0x5f0F86BcEad6976711C9B131bCa5D30E767fe2bE) [GnosisSafe] {\n +++ description: Gateway owner Safe. Its LayerZero governance module is outside the Zama Gateway protocol surface covered here.\n receivedPermissions.5.description:\n- \"update KMS, coprocessor, custodian, host-chain, and threshold configuration, transfer GatewayConfig ownership, and unpause gateway workflow contracts.\"\n+ \"create KMS contexts that immediately become current, update current thresholds and other gateway configuration, transfer ownership, and unpause gateway workflow contracts. Historical KMS contexts cannot be removed in this version.\"\n }\n```\n\n```diff\n contract GatewayConfig (zama:0xDE537Be194777A56f8B19d14079E6a78249390ab) [zama/GatewayConfig_v0_5_0] {\n +++ description: Central configuration contract for the Zama Gateway. A KMS context snapshots node transaction senders, signers, and workflow thresholds; historical contexts remain stored and selectable by Decryption because this version has no context-destruction function.\n template:\n- \"zama/GatewayConfig\"\n+ \"zama/GatewayConfig_v0_5_0\"\n sourceHashes.1:\n- \"0x40662103941fd76e1fc3b63e38f9036b39d3394d96fe2c46db9640bcbbc76d4b\"\n+ \"0x1089121569189032b8cee0dae0c71eedecf7757f712a6d14ef684915093c6747\"\n description:\n- \"Central configuration contract for the Zama Gateway. It stores the KMS, coprocessor, custodian, host-chain, pauser, and consensus-threshold configuration used by the gateway workflow contracts.\"\n+ \"Central configuration contract for the Zama Gateway. A KMS context snapshots node transaction senders, signers, and workflow thresholds; historical contexts remain stored and selectable by Decryption because this version has no context-destruction function.\"\n values.$implementation:\n- \"zama:0xDa97dfc327349F7C1333610C80cc20971eD0eb0f\"\n+ \"zama:0x2294E3C211238Ae31E2824576CCd7f996CC7Dc00\"\n values.$pastUpgrades.3:\n+ [\"2026-07-10T08:15:40.000Z\",\"0x5d63d8d9bf4790e7169cd1d6c440262aad29368190932f823377df311f389217\",[\"zama:0x2294E3C211238Ae31E2824576CCd7f996CC7Dc00\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.getPublicDecryptionThreshold:\n- 7\n values.getUserDecryptionThreshold:\n- 9\n values.getVersion:\n- \"GatewayConfig v0.4.0\"\n+ \"GatewayConfig v0.5.0\"\n+++ description: KMS contexts created after migration, reconstructed from UpdateKmsContext events with their node set and creation thresholds. Nodes remain authorized for Decryption indefinitely; later threshold-update events do not identify a context, so final historical thresholds must be read through context-specific getters or project overrides.\n+++ severity: HIGH\n values.createdKmsContexts:\n+ []\n+++ description: KMS signers from contexts created after migration. They remain authorized for Decryption responses that select their context because GatewayConfig has no context-destruction function.\n+++ severity: HIGH\n values.createdKmsContextSigners:\n+ []\n+++ description: KMS transaction senders from contexts created after migration. They remain authorized for Decryption responses that select their context because GatewayConfig has no context-destruction function.\n+++ severity: HIGH\n values.createdKmsContextTxSenders:\n+ []\n+++ description: Identifier of the context used when a Decryption response has empty or version 0 extraData. Version 1 responses can explicitly select any historical context, and requests do not store or bind a context.\n+++ severity: HIGH\n values.getCurrentKmsContextId:\n+ \"3166189940082864718613269121331309980362851143201109172953918312716374638593\"\n+++ description: Minimum number of KMS signatures required for public decryption consensus in the current context.\n+++ severity: HIGH\n values.getPublicDecryptionThresholdForContext:\n+ 7\n+++ description: Minimum number of KMS shares required for user decryption consensus in the current context.\n+++ severity: HIGH\n values.getUserDecryptionThresholdForContext:\n+ 9\n fieldMeta.owner.description:\n- \"Owner of GatewayConfig. This account manages KMS nodes, coprocessors, custodians, host chains, consensus thresholds, ownership, and gateway unpausing.\"\n+ \"Owner of GatewayConfig. This account creates KMS contexts, changes the current context's thresholds, manages coprocessors, custodians and host chains, transfers ownership, and unpauses gateway contracts. A newly created context becomes current immediately, while all older contexts remain selectable by Decryption.\"\n fieldMeta.getKmsTxSenders.description:\n- \"KMS transaction-sender addresses registered for this gateway. These accounts submit KMS responses to gateway contracts.\"\n+ \"KMS transaction-sender addresses in the current Gateway context. Historical context senders remain authorized for Decryption responses that explicitly select their context; post-migration contexts are indexed here and the migrated context is indexed on Decryption.\"\n fieldMeta.getKmsSigners.description:\n- \"KMS signer addresses registered for this gateway. Thresholds over these signers secure public and user decryption, key generation, and CRS generation.\"\n+ \"KMS signer addresses in the current Gateway context. Historical context signers remain authorized for explicitly selected Decryption responses; post-migration contexts are indexed here and the migrated context is indexed on Decryption.\"\n fieldMeta.getMpcThreshold.description:\n- \"MPC threshold for KMS key material generation.\"\n+ \"MPC threshold for KMS key material generation in the current context.\"\n fieldMeta.getPublicDecryptionThreshold:\n- {\"severity\":\"HIGH\",\"description\":\"Minimum number of KMS signatures required for public decryption consensus.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getUserDecryptionThreshold:\n- {\"severity\":\"HIGH\",\"description\":\"Minimum number of KMS shares required for user decryption consensus.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getKmsGenThreshold.description:\n- \"Minimum number of KMS signatures required for key and CRS generation consensus.\"\n+ \"Minimum number of KMS signatures required for key and CRS generation consensus in the current context.\"\n fieldMeta.createdKmsContexts:\n+ {\"severity\":\"HIGH\",\"description\":\"KMS contexts created after migration, reconstructed from UpdateKmsContext events with their node set and creation thresholds. Nodes remain authorized for Decryption indefinitely; later threshold-update events do not identify a context, so final historical thresholds must be read through context-specific getters or project overrides.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.createdKmsContextTxSenders:\n+ {\"severity\":\"HIGH\",\"description\":\"KMS transaction senders from contexts created after migration. They remain authorized for Decryption responses that select their context because GatewayConfig has no context-destruction function.\",\"type\":\"PERMISSION\"}\n fieldMeta.createdKmsContextSigners:\n+ {\"severity\":\"HIGH\",\"description\":\"KMS signers from contexts created after migration. They remain authorized for Decryption responses that select their context because GatewayConfig has no context-destruction function.\",\"type\":\"PERMISSION\"}\n fieldMeta.getCurrentKmsContextId:\n+ {\"severity\":\"HIGH\",\"description\":\"Identifier of the context used when a Decryption response has empty or version 0 extraData. Version 1 responses can explicitly select any historical context, and requests do not store or bind a context.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getPublicDecryptionThresholdForContext:\n+ {\"severity\":\"HIGH\",\"description\":\"Minimum number of KMS signatures required for public decryption consensus in the current context.\",\"type\":\"RISK_PARAMETER\"}\n fieldMeta.getUserDecryptionThresholdForContext:\n+ {\"severity\":\"HIGH\",\"description\":\"Minimum number of KMS shares required for user decryption consensus in the current context.\",\"type\":\"RISK_PARAMETER\"}\n implementationNames.zama:0xDa97dfc327349F7C1333610C80cc20971eD0eb0f:\n- \"GatewayConfig\"\n implementationNames.zama:0x2294E3C211238Ae31E2824576CCd7f996CC7Dc00:\n+ \"GatewayConfig\"\n }\n```"
}
]
},
{
"id": "6378d3a6",
"date": "Mon, 29 Jun 2026 15:21:07 GMT",
"timestamp": 1782746392,
"description": "Initial discovery.",
"isHighSeverity": false,
"changeCount": 37,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract ZamaGovMemberDAO (eth:0x31bBD7a242A38372DE92CA304fE29C12C90A382C) [zama/ZamaDAO]\n +++ description: Aragon DAO that stores governance state and executes proposal action batches.\n```\n\n```diff\n+ Status: CREATED\n contract HCULimit (eth:0x3b4da65e45Fda2CAa0285A735ab4361a44F171E2) [zama/ZamaHCULimit]\n +++ description: Tracks and enforces homomorphic computation unit limits for FHEVM operation requests.\n```\n\n```diff\n+ Status: CREATED\n EOA (eth:0x4202860Fa6afAF3e2977cD139Ac693a05e4f9450)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Conduit Multisig 1 (eth:0x4a4962275DF8C60a80d3a25faEc5AA7De116A746) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ConfidentialSteakcUSDCWrapper (eth:0x66Bf74E96900D1a19c7070D939D124f2F565C458) [zama/ConfidentialWrapperV3]\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0x69E55790880d0ABa56E48Ee1f7fc3834b0F5c223) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Staking (Coprocessor) (eth:0x7147485b892158f2B875f7aC5Ea48A9937C66AE8) [zama/ProtocolStaking]\n +++ description: Staking contract that escrows ZAMA, issues non-transferable staked voting tokens, and mints protocol rewards to eligible stakers at a configurable reward rate.\n```\n\n```diff\n+ Status: CREATED\n contract ConfidentialXAUTWrapper (eth:0x73cc9aF9d6BEFdb3c3fAf8a5E8c05Cb95FdaEEf1) [zama/ConfidentialWrapperV3]\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\n```\n\n```diff\n+ Status: CREATED\n contract KMSVerifier (eth:0x77627828a55156b04Ac0DC0eb30467f1a552BB03) [zama/ZamaKMSVerifier]\n +++ description: Ethereum host-chain verifier for public decryption results produced through the Zama Gateway Decryption contract. Confidential token wrappers use it before accepting decrypted values.\n```\n\n```diff\n+ Status: CREATED\n contract ConfidentialZAMAWrapper (eth:0x80CB147Fd86dC6dEe3Eee7e4Cee33d1397d98071) [zama/ConfidentialWrapperV3]\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\n```\n\n```diff\n+ Status: CREATED\n contract ConfidentialBRONWrapper (eth:0x85dE671c3bec1aDeD752c3Cea943521181C826bc) [zama/ConfidentialWrapperV3]\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0x8c0E2c46F96756C49DBd6723F4C57a03a254B4B0) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0x97E18544e156724E4076945F10c288ecBBC94e54) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ConfidentialTGBPWrapper (eth:0xa873750ccBafD5ec7Dd13bfD5237d7129832eDD9) [zama/ConfidentialWrapperV3]\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\n```\n\n```diff\n+ Status: CREATED\n contract ConfidentialUSDTWrapper (eth:0xAe0207C757Aa2B4019Ad96edD0092ddc63EF0c50) [zama/ConfidentialWrapperV3]\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\n```\n\n```diff\n+ Status: CREATED\n contract DAO (eth:0xB6D69D5F334d8B97B194617B53c6aB62f8681Ef3) [zama/ZamaDAO]\n +++ description: Aragon DAO that stores governance state and executes proposal action batches.\n```\n\n```diff\n+ Status: CREATED\n contract ConfidentialBbqTGBPWrapper (eth:0xBA4cFF6ED6F7Cb2A58776dECa4E984b498446762) [zama/ConfidentialWrapperV3]\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\n```\n\n```diff\n+ Status: CREATED\n contract PauserSet (eth:0xbBfE1680b4a63ED05f7F80CE330BED7C992A586C) [zama/ZamaPauserSet]\n +++ description: Maintains the pauser account set used in pause-control checks.\n```\n\n```diff\n+ Status: CREATED\n contract ZamaGovMultisigB (eth:0xBc860b6a4C860C5424B84A056E53ACFb2C99a38F) [zama/Multisig]\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n```\n\n```diff\n+ Status: CREATED\n contract ACL (eth:0xcA2E8f1F656CD25C01F05d0b243Ab1ecd4a8ffb6) [zama/ZamaACL]\n +++ description: Ethereum host-chain access-control registry for encrypted handles, storing handle allowances and delegation state for ciphertext references. Its public-decryption and user-delegation events are mirrored into the Gateway MultichainACL by coprocessor consensus.\n```\n\n```diff\n+ Status: CREATED\n contract InputVerifier (eth:0xCe0FC2e05CFff1B719EFF7169f7D80Af770c8EA2) [zama/ZamaInputVerifier]\n +++ description: Ethereum host-chain verifier for encrypted input attestations produced by the Zama Gateway InputVerification contract. The FHEVMExecutor calls it before accepting user-provided ciphertext handles.\n```\n\n```diff\n+ Status: CREATED\n contract FHEVMExecutor (eth:0xD82385dADa1ae3E969447f20A3164F6213100e75) [zama/ZamaFHEVMExecutor]\n +++ description: FHEVM executor that accepts encrypted operation requests, accounts for computation usage, and stores ciphertext handles for operation results.\n```\n\n```diff\n+ Status: CREATED\n contract ConfidentialWETHWrapper (eth:0xda9396b82634Ea99243cE51258B6A5Ae512D4893) [zama/ConfidentialWrapperV3]\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\n```\n\n```diff\n+ Status: CREATED\n contract ZamaGovMultisigA (eth:0xE43c73aAb2b6aBBad6d0461997ce1cfea5ABe66f) [zama/Multisig]\n +++ description: Aragon multisig plugin for creating proposals and collecting approvals against a configurable threshold.\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0xE53e32a669357Ab0360103d8f294812B914AF9e4) [GnosisSafe]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ConfidentialUSDCWrapper (eth:0xe978F22157048E5DB8E5d07971376e86671672B2) [zama/ConfidentialWrapperV3]\n +++ description: ERC-20 wrapper that escrows an underlying token and issues confidential balances. It supports encrypted transfers, wrapping, unwrapping, local blocking, and optional underlying-token denylist checks.\n```\n\n```diff\n+ Status: CREATED\n contract Staking (KMS) (eth:0xe9b176CCaA8840DC3b3567bb83e2cD2a6c36F4Ab) [zama/ProtocolStaking]\n +++ description: Staking contract that escrows ZAMA, issues non-transferable staked voting tokens, and mints protocol rewards to eligible stakers at a configurable reward rate.\n```\n\n```diff\n+ Status: CREATED\n contract ConfidentialTokenWrappersRegistry (eth:0xeb5015fF021DB115aCe010f23F55C2591059bBA0) [zama/ConfidentialTokenWrappersRegistry]\n +++ description: Registry for Zama confidential token wrappers.\n```\n\n```diff\n+ Status: CREATED\n contract MultichainACL (zama:0x055d9FD50a612A9027716ec8db663E7D68562468) [zama/MultichainACL]\n +++ description: Gateway-side ACL mirror that records coprocessor consensus for host-chain public decryption permissions, account handle allowances, and delegated user-decryption access. For Ethereum, it mirrors ACL events emitted by the L1 ACL contract registered in GatewayConfig.\n```\n\n```diff\n+ Status: CREATED\n contract Decryption (zama:0x0f6024a97684f7d90ddb0fAAD79cB15F2C888D24) [zama/Decryption]\n +++ description: Gateway contract that orchestrates public and user decryption requests, checks mirrored host-chain ACL state, collects KMS responses, and emits results once the configured KMS threshold is reached. Ethereum KMSVerifier verifies public decryption results against this contract's EIP-712 domain.\n```\n\n```diff\n+ Status: CREATED\n contract KMSGeneration (zama:0x290947F9fed2d91fdB22f35E162aDfA744b7aEe3) [zama/KMSGeneration]\n +++ description: Gateway contract that orchestrates FHE key generation, CRS generation, PRSS initialization, and key resharing through threshold KMS responses.\n```\n\n```diff\n+ Status: CREATED\n contract GatewayPauserSet (zama:0x571ecb596fCc5c840DA35CbeCA175580db50ac1b) [zama/GatewayPauserSet]\n +++ description: Maintains the set of accounts allowed to pause gateway contracts. The set is managed by the GatewayConfig owner.\n```\n\n```diff\n+ Status: CREATED\n contract SafeL2 (zama:0x5f0F86BcEad6976711C9B131bCa5D30E767fe2bE) [GnosisSafe]\n +++ description: Gateway owner Safe. Its LayerZero governance module is outside the Zama Gateway protocol surface covered here.\n```\n\n```diff\n+ Status: CREATED\n contract ProtocolPayment (zama:0x7E179E45E5fe0a21015Be25185363B4F2F2F7e89) [zama/ProtocolPayment]\n +++ description: Gateway fee contract that charges ZAMA fees for encrypted input verification, public decryption, and user decryption requests, then forwards the collected fees to the configured fee burner sender.\n```\n\n```diff\n+ Status: CREATED\n contract InputVerification (zama:0xcB1bB072f38bdAF0F328CdEf1Fc6eDa1DF029287) [zama/InputVerification]\n +++ description: Gateway contract that receives encrypted input verification requests from registered host chains, collects coprocessor responses, and emits a threshold-signed attestation once coprocessor consensus is reached. Ethereum InputVerifier verifies attestations against this contract's EIP-712 domain.\n```\n\n```diff\n+ Status: CREATED\n contract CiphertextCommits (zama:0xd82cF70FC102028cd01acB87D0E107780ae4F41F) [zama/CiphertextCommits]\n +++ description: Gateway contract that stores ciphertext and SNS ciphertext digests after coprocessor consensus, allowing decryption requests to reference committed ciphertext material.\n```\n\n```diff\n+ Status: CREATED\n contract GatewayConfig (zama:0xDE537Be194777A56f8B19d14079E6a78249390ab) [zama/GatewayConfig]\n +++ description: Central configuration contract for the Zama Gateway. It stores the KMS, coprocessor, custodian, host-chain, pauser, and consensus-threshold configuration used by the gateway workflow contracts.\n```"
}
]
}
]
+16 -8
+1 -1
{
"baseTimestamp": 1790934395,
"baseTimestamp": 1791452652,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "11f5e2d6",
"date": "Thu, 08 Oct 2026 12:03:37 GMT",
"timestamp": 1791452652,
"description": "ZKsync Era chain adming increased execution delay from 3 hours to 1 day (following governance proposal ZIP-17).",
"isHighSeverity": false,
"changeCount": 2,
"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: MEDIUM\n values.executionDelayEra:\n- 10800\n+ 86400\n+++ severity: MEDIUM\n values.executionDelayEra_fmt:\n- \"3h\"\n+ \"1d\"\n }\n```"
}
]
},
{
"id": "eb0bad59",
"date": "Fri, 02 Oct 2026 12:42:33 GMT",
"timestamp": 1790934395,
"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 Era is tracked in `executionDelayEra` (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 zksync era 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.executionDelayEra:\n+ 10800\n+++ severity: HIGH\n values.executionDelayEra_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- {\"executionDelayEra\":\"Processing error occurred.\",\"executionDelayEra_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": "61cc8b2a",
"date": "Mon, 17 Aug 2026 11:30:53 GMT",
"timestamp": 1786966191,
"description": "Matter Labs 4/7 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 contract Diamond (eth:0x32400084C286CF3E17e7B677ea9583e60a000324) [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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n values.$pastUpgrades.28:\n+ [\"2026-08-16T09:36:47.000Z\",\"0xa22268c77351fd1c1e3c632ad2323425cb1f2330b2ee34686c0a081f93bdd423\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 28\n+ 29\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": "ded67cd2",
"date": "Mon, 10 Aug 2026 13:06:46 GMT",
"timestamp": 1786353960,
"description": "Matter Labs 4/7 multisig upgraded boojum verifier to v29.5 (was registered on chain type manager before). Verifier is not yet reproduced.\n\nConfig-related: added full batch lifecycle permissions to era multisig template, fixed incorrect permissions and descriptions.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x32400084C286CF3E17e7B677ea9583e60a000324) [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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n values.$pastUpgrades.27:\n+ [\"2026-08-08T17:03:47.000Z\",\"0x1586dea0c7326b2ae060b222925e9c752481cd049f907634a114200ecaa7baab\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 27\n+ 28\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": "98f55b94",
"date": "Mon, 27 Jul 2026 16:43:20 GMT",
"timestamp": 1785170172,
"description": "Upgraded boojum verifiers to the next version. It is not yet verified.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x32400084C286CF3E17e7B677ea9583e60a000324) [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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n values.$pastUpgrades.26:\n+ [\"2026-07-24T17:51:11.000Z\",\"0x3230654aa6e3c7d63a7f6d8bfe6eccabc98a11f18409af0fcadd12f8b65f34b4\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 26\n+ 27\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+ 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": "ef5b6f2d",
"date": "Thu, 23 Jul 2026 11:35:27 GMT",
"timestamp": 1784806460,
"description": "Rotated one validator.",
"isHighSeverity": true,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract EraMultisigValidator (eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d) [shared-zk-stack/ExecutionMultisigValidatorTimelock_Trackable] {\n +++ description: A multisig wrapper around `ValidatorTimelock` that requires a threshold of approvals before batch execution can proceed, provides additional security through 2FA.\n values.$members.3:\n- \"eth:0xd3cA2aDe062d453F410b5C5cfA1B2b89879AbE1b\"\n values.$members.7:\n+ \"eth:0x2400D5d69043d9BE4fF32c6F8F28047d605ad976\"\n+++ severity: HIGH\n values.multisigMembers.3:\n- \"eth:0xd3cA2aDe062d453F410b5C5cfA1B2b89879AbE1b\"\n+++ severity: HIGH\n values.multisigMembers.7:\n+ \"eth:0x2400D5d69043d9BE4fF32c6F8F28047d605ad976\"\n }\n```"
}
]
},
{
"id": "fb08d6d3",
"date": "Wed, 08 Jul 2026 09:09:53 GMT",
"timestamp": 1783501723,
"description": "Rotated 4 validator multisig members.",
"isHighSeverity": true,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract EraMultisigValidator (eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d) [shared-zk-stack/ExecutionMultisigValidatorTimelock_Trackable] {\n +++ description: A multisig wrapper around `ValidatorTimelock` that requires a threshold of approvals before batch execution can proceed, provides additional security through 2FA.\n values.$members.2:\n- \"eth:0x8ffC957cba878cDdF446574e88Cf7e1004fc953F\"\n values.$members.3:\n- \"eth:0x548409daf1D6766929F3927D1Ca1df0A13129a6b\"\n values.$members.6:\n+ \"eth:0xf6f32866b8De74683563fCCd07dE7e23431d0626\"\n values.$members.7:\n+ \"eth:0x809bc2e1519641B482730330922950a4972a2227\"\n+++ severity: HIGH\n values.multisigMembers.2:\n- \"eth:0x8ffC957cba878cDdF446574e88Cf7e1004fc953F\"\n+++ severity: HIGH\n values.multisigMembers.3:\n- \"eth:0x548409daf1D6766929F3927D1Ca1df0A13129a6b\"\n+++ severity: HIGH\n values.multisigMembers.6:\n+ \"eth:0xf6f32866b8De74683563fCCd07dE7e23431d0626\"\n+++ severity: HIGH\n values.multisigMembers.7:\n+ \"eth:0x809bc2e1519641B482730330922950a4972a2227\"\n }\n```"
}
]
},
{
"id": "c57fdf59",
"date": "Tue, 16 Jun 2026 09:45:55 GMT",
"timestamp": 1781603066,
"description": "Rotate operator EOAs.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract EraMultisigValidator (eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d) [shared-zk-stack/ExecutionMultisigValidatorTimelock_Trackable] {\n +++ description: A multisig wrapper around `ValidatorTimelock` that requires a threshold of approvals before batch execution can proceed, provides additional security through 2FA.\n values.executor.eth:0x32400084C286CF3E17e7B677ea9583e60a000324.0:\n- \"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\"\n+ \"eth:0xa90c7CDB553332948E2943431436117eCFb1e781\"\n values.executor.eth:0x32400084C286CF3E17e7B677ea9583e60a000324.1:\n- \"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"\n+ \"eth:0x28942E6870612893B96F77De0F485fcE3497AAA8\"\n }\n```"
}
]
},
{
"id": "af5012ae",
"date": "Mon, 04 May 2026 13:52:34 GMT",
"timestamp": 1777883283,
"description": "Era multisig validator now has 3 (out of 8) threshold, instead of 0. This effectively enables the multisig operation. This contract allows registered validators stop block execution.\n\nThis multisig is also made the only entity that can precommit, commit, revert, prove and execute blocks, earlier there were also two EOAs with these permissions.",
"isHighSeverity": true,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\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 values.validatorVTL.PRECOMMITTER_ROLE.members.0:\n- \"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\"\n values.validatorVTL.PRECOMMITTER_ROLE.members.1:\n- \"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"\n values.validatorVTL.COMMITTER_ROLE.members.0:\n- \"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\"\n values.validatorVTL.COMMITTER_ROLE.members.1:\n- \"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"\n values.validatorVTL.REVERTER_ROLE.members.0:\n- \"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\"\n values.validatorVTL.REVERTER_ROLE.members.1:\n- \"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"\n values.validatorVTL.PROVER_ROLE.members.0:\n- \"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\"\n values.validatorVTL.PROVER_ROLE.members.1:\n- \"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"\n values.validatorVTL.EXECUTOR_ROLE.members.0:\n- \"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\"\n values.validatorVTL.EXECUTOR_ROLE.members.1:\n- \"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"\n }\n```\n\n```diff\n EOA (eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\",\"role\":\".validatorVTL\"}\n }\n```\n\n```diff\n EOA (eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\",\"role\":\".validatorVTL\"}\n }\n```\n\n```diff\n contract EraMultisigValidator (eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d) {\n +++ description: A multisig wrapper around `ValidatorTimelock` that requires a threshold of approvals before batch execution can proceed, provides additional security through 2FA.\n values.$threshold:\n- 0\n+ 3\n+++ severity: HIGH\n values.threshold:\n- 0\n+ 3\n }\n```"
}
]
},
{
"id": "7ea7f3bc",
"date": "Mon, 27 Apr 2026 14:17:26 GMT",
"timestamp": 1777296071,
"description": "Upgraded ExecutionMultisigValidator: https://disco.l2beat.com/diff/eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7/eth:0xc954B4D51031870624f3e779Ead14C57249C111D (although diff is not very readable). This is a intermediary contract that lets validators stop block execution. The main changes are:\n\n- It is made EIP1967 upgradeable\n- Multisig rotation now emits events, which allows tracking the members in disco\n- Added EIP-712 structured data hashing\n- General refactor",
"isHighSeverity": false,
"changeCount": 22,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\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 values.validatorVTL.PRECOMMITTER_ROLE.members.0:\n- \"eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7\"\n values.validatorVTL.PRECOMMITTER_ROLE.members.2:\n+ \"eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d\"\n values.validatorVTL.COMMITTER_ROLE.members.0:\n- \"eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7\"\n values.validatorVTL.COMMITTER_ROLE.members.2:\n+ \"eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d\"\n values.validatorVTL.REVERTER_ROLE.members.0:\n- \"eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7\"\n values.validatorVTL.REVERTER_ROLE.members.2:\n+ \"eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d\"\n values.validatorVTL.PROVER_ROLE.members.0:\n- \"eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7\"\n values.validatorVTL.PROVER_ROLE.members.2:\n+ \"eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d\"\n values.validatorVTL.EXECUTOR_ROLE.members.0:\n- \"eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7\"\n values.validatorVTL.EXECUTOR_ROLE.members.2:\n+ \"eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d\"\n }\n```\n\n```diff\n- Status: DELETED\n reference (eth:0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n reference (eth:0x3F0009D00cc78979d00Eb635490F23E8d6aCc481)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n reference (eth:0x4A333c167Ce76C46149c6B0197977ae02aaeC929)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n reference (eth:0x5C7E59Dba6557C7dAB3B69ccd3E309d1965Cf1B1)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n reference (eth:0x7408A268e5E6e8F08917c5b71015F4B9044970C7)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n reference (eth:0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract Safe (eth:0xd972d03C8A45eF3c7937a279d998E4AeCCc2b63D)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract ExecutionMultisigValidator (eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7)\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. NOTE: This is a modified version of validatorTimelock, where a sufficient number of execution multisig members must approve a batch before execution. Multisig members are kept in a mapping and updates emit no events, so the only way to track them is to manually analyze all trxs from the owner.\n```\n\n```diff\n- Status: DELETED\n reference (eth:0xFAdb20191Ab38362C50f52909817B74214CA79AE)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (eth:0x0D8d1be440f997bDB9CA44C0140fD12551f99BBB)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n reference Matter Labs Multisig (eth:0x4e4943346848c4867F81dFb37c4cA9C5715A7828)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract EraMultisigValidator (eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d)\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. NOTE: This is a modified version of validatorTimelock, where a sufficient number of execution multisig members must approve a batch before execution. Multisig members are kept in a mapping.\n```"
}
]
},
{
"id": "58c839c2",
"date": "Mon, 20 Apr 2026 10:41:53 GMT",
"timestamp": 1776681649,
"description": "wstETH bridge resumed after being paused because of a potential vulnerability. Its implementation was upgraded adding one small check: https://disco.l2beat.com/diff/eth:0x9a810469F4a451Ebb7ef53672142053b4971587c/eth:0x43a66B32c9AdcA1A59b273E69b61Da5197c21cCd.",
"isHighSeverity": true,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1ERC20Bridge_wstETH (eth:0x41527B2d03844dB6b0945f25702cB958b6d55989) {\n +++ description: Bridge for depositing wrapped stETH (Lido) to ZKsync Era. These deposits and withdrawals do not go through the shared Bridge.\n sourceHashes.1:\n- \"0x8d6377528b46831d215e352a53f276acbd18ec4bc66c04894dd72dad36288c4d\"\n+ \"0x887b9d27b8b5ffb156d6a159bc56c0b8bb6e24d70f3568550066b1f247acf4fe\"\n values.$implementation:\n- \"eth:0x9a810469F4a451Ebb7ef53672142053b4971587c\"\n+ \"eth:0x43a66B32c9AdcA1A59b273E69b61Da5197c21cCd\"\n values.$pastUpgrades.1:\n+ [\"2026-04-17T16:42:11.000Z\",\"0xf43f6fe63edc60ae6eb0bc919b3c682ac0c068df7eb1cb44aa514302539f19cb\",[\"eth:0x43a66B32c9AdcA1A59b273E69b61Da5197c21cCd\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.isDepositsEnabled:\n- false\n+ true\n values.proxy__getImplementation:\n- \"eth:0x9a810469F4a451Ebb7ef53672142053b4971587c\"\n+ \"eth:0x43a66B32c9AdcA1A59b273E69b61Da5197c21cCd\"\n implementationNames.eth:0x9a810469F4a451Ebb7ef53672142053b4971587c:\n- \"L1ERC20Bridge\"\n implementationNames.eth:0x43a66B32c9AdcA1A59b273E69b61Da5197c21cCd:\n+ \"L1ERC20Bridge\"\n }\n```"
}
]
},
{
"id": "b2843227",
"date": "Wed, 04 Mar 2026 14:39:05 GMT",
"timestamp": 1772635080,
"description": "wstETH bridge paused deposits due to a potential vulnerability: https://x.com/lidofinance/status/2028803376306336068?s=46&t=q4Q232TdEyWIiMZPfDpI4A.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1ERC20Bridge_wstETH (eth:0x41527B2d03844dB6b0945f25702cB958b6d55989) {\n +++ description: Bridge for depositing wrapped stETH (Lido) to ZKsync Era. These deposits and withdrawals do not go through the shared Bridge.\n values.isDepositsEnabled:\n- true\n+ false\n }\n```"
}
]
},
{
"id": "fdc9ffaa",
"date": "Mon, 09 Feb 2026 12:14:21 GMT",
"timestamp": 1770639008,
"description": "Upgraded verifiers to the next version.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n values.$pastUpgrades.25:\n+ [\"2026-02-06T15:23:35.000Z\",\"0x96d827f588ce0b3868ebdf99ca1099d1128a8112ddbb140416d9ffdcfd72e9af\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 25\n+ 26\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- 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": "35e6a989",
"date": "Mon, 02 Feb 2026 16:04:50 GMT",
"timestamp": 1770040942,
"description": "Zksync Era migrated its settlement layer from Gateway back to Ethereum. See migration initiated event here: https://gateway.explorer.zksync.io/address/0x000000000000000000000000000000000001000a#events and migration finalized event here: https://etherscan.io/tx/0x2829993f6183647fc954ec75b67441ab0e597f445a3f5d6f976733775ca06f26#eventlog. Bridgehub on L1 returns settlement layer 1 for chain ID 324 (zksync era): https://etherscan.io/address/0x303a465B659cBB0ab36eE643eA362c509EEb5213#readProxyContract#F28.\n\nCommented out all gateway-related discovery for zksync2 in config.jsonc.",
"isHighSeverity": false,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\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 values.validatorVTL:\n+ {\"PRECOMMITTER_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7\",\"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\",\"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"]},\"COMMITTER_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7\",\"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\",\"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"]},\"REVERTER_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7\",\"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\",\"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"]},\"PROVER_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7\",\"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\",\"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"]},\"EXECUTOR_ROLE\":{\"adminRole\":\"DEFAULT_ADMIN_ROLE\",\"members\":[\"eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7\",\"eth:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\",\"eth:0xc75cDcBEef3aE3365ABF0217815748586F9047F1\"]}}\n errors:\n- {\"validatorVTL\":\"Processing error occurred.\"}\n }\n```\n\n```diff\n contract Diamond (eth:0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n values.getSettlementLayer:\n- \"eth:0x6E96D1172a6593D5027Af3c2664C5112Ca75F2B9\"\n+ \"eth:0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n+ Status: CREATED\n reference (eth:0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n reference (eth:0x3F0009D00cc78979d00Eb635490F23E8d6aCc481)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n reference (eth:0x4A333c167Ce76C46149c6B0197977ae02aaeC929)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n reference (eth:0x5C7E59Dba6557C7dAB3B69ccd3E309d1965Cf1B1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n reference (eth:0x7408A268e5E6e8F08917c5b71015F4B9044970C7)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n reference (eth:0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0xd972d03C8A45eF3c7937a279d998E4AeCCc2b63D)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ExecutionMultisigValidator (eth:0xE222D6354b49eaF8a7099fC4E7F9C0B4FE72d1E7)\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. NOTE: This is a modified version of validatorTimelock, where a sufficient number of execution multisig members must approve a batch before execution. Multisig members are kept in a mapping and updates emit no events, so the only way to track them is to manually analyze all trxs from the owner.\n```\n\n```diff\n+ Status: CREATED\n reference (eth:0xFAdb20191Ab38362C50f52909817B74214CA79AE)\n +++ description: None\n```"
},
{
"kind": "config-related-changes",
"body": "```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 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": "591f6152",
"date": "Mon, 26 Jan 2026 12:10:15 GMT",
"timestamp": 1769426961,
"description": "Upgraded zksync verifiers both on L1 and on gateway to new versions, which were not observed before. Upgrade tx: https://tools.l2beat.com/decoder-new/?hash=0xbeeccb50304cf1e2e0b3dc39e57f8f30ea7e0c9da7a774c9b984245e11d990eb&data=AwA.",
"isHighSeverity": true,
"changeCount": 27,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n values.$pastUpgrades.24:\n+ [\"2026-01-23T15:58:23.000Z\",\"0xbeeccb50304cf1e2e0b3dc39e57f8f30ea7e0c9da7a774c9b984245e11d990eb\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 24\n+ 25\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- 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 contract ChainTypeManager (gateway:0x912B84EEEEBeca74d307b9a2b09c68332aa5426C) {\n +++ description: Defines L2 diamond contract versions, creation and upgrade data and the proof system for all ZK stack chains connected to it. ZK chains are children of this central contract and can only upgrade to versions that were previously registered here. The current protocol version is 0,29,3.\n description:\n- \"Defines L2 diamond contract versions, creation and upgrade data and the proof system for all ZK stack chains connected to it. ZK chains are children of this central contract and can only upgrade to versions that were previously registered here. The current protocol version is 0,29,2.\"\n+ \"Defines L2 diamond contract versions, creation and upgrade data and the proof system for all ZK stack chains connected to it. ZK chains are children of this central contract and can only upgrade to versions that were previously registered here. The current protocol version is 0,29,3.\"\n values.getSemverProtocolVersion.2:\n- 2\n+ 3\n values.initialCutHash:\n- \"0xa45cb9645f08f62fa6383c2a863147b1093d45348c756f8c80d53492ffff2a5c\"\n+ \"0x0ca0737ed7e5bc5115a11dcb22a0ec21bcb88d4e4ba07f62f3662456899cdd2b\"\n values.protocolVersion:\n- 124554051586\n+ 124554051587\n values.storedBatchZero:\n- \"0x94ea55f176a52a81ad3c45b49c6230fa0732968e6a5b067c5e678b280d5155d7\"\n+ \"0x4e89e7408b8a0abb45917cb07d586b1b0affca0ba4e6fd450504bdea9dd079a1\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (gateway:0xa99f11045E14d068088786CF6b61e8730817Cf52)\n +++ description: A router contract for verifiers. Routes verification requests to gateway:0xD837976329d59057b27192f0cF6c8f357143670A or gateway:0xfA7c56B328bEb5deB9218f3a4b60ADc59Bb6Ad8d depending on the supplied proof type.\n```\n\n```diff\n contract DiamondProxy (gateway:0xCE7CBd23193d029410b40e0fD8a79a5121f9250C) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n values.$pastUpgrades.3:\n+ [\"2026-01-23T16:16:24.000Z\",\"0x287914aa0effa2e7649b70f693cd8754d21d7d3c63ed0551e96c0c4120c2d1ab\",[\"gateway:0xA5319D931A565F844f45F8E1Be0D367c23290830\",\"gateway:0xA53748c202D55E2974b1c2d604f6EED913FF0C72\",\"gateway:0xc3Ec2D1b52741a84Ed981D5AdCBe3db27f90589B\",\"gateway:0x72E0D690E43Fa226b1E98DAB3e3159a2B2B17014\"]]\n values.$upgradeCount:\n- 3\n+ 4\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- \"gateway:0xa99f11045E14d068088786CF6b61e8730817Cf52\"\n+ \"gateway:0x9A9Cc7ca19F340C0084aDf2D20acbD2F2735A0d0\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (gateway:0xD837976329d59057b27192f0cF6c8f357143670A)\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 (gateway:0xfA7c56B328bEb5deB9218f3a4b60ADc59Bb6Ad8d)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n reference DualVerifier (eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (gateway:0x7e81F6502209F1A114065A8f70820Ab5e28EE369)\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 (gateway:0x9A9Cc7ca19F340C0084aDf2D20acbD2F2735A0d0)\n +++ description: A router contract for verifiers. Routes verification requests to gateway:0xA14909eE4D20ebefd039094De75Fb440538799C1 or gateway:0x7e81F6502209F1A114065A8f70820Ab5e28EE369 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (gateway:0xA14909eE4D20ebefd039094De75Fb440538799C1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
},
{
"kind": "config-related-changes",
"body": "```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```"
}
]
},
{
"id": "6a49340c",
"date": "Fri, 07 Nov 2025 09:03:39 GMT",
"timestamp": 1762505590,
"description": "Verified sources for ChainAssetHandler on Gateway, the smart contract is the same as on L1.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n contract ChainAssetHandler (gateway:0x000000000000000000000000000000000001000a) {\n +++ description: Specialized contract for managing chain assets, i.e. chain migrations.\n name:\n- \"ChainAssetHandler_unverified\"\n+ \"ChainAssetHandler\"\n unverified:\n- true\n+++ severity: HIGH\n values.migrationPaused:\n+ false\n+++ description: zk chain migrations that were started\n+++ severity: HIGH\n values.migrations:\n+ []\n values.owner:\n+ \"gateway:0xF41EcA3047B37dc7d88849de4a4dc07937Ad6bc4\"\n+++ description: this 'paused' is unrelated to migrations and only used for initialization.\n+++ severity: LOW\n values.paused:\n+ false\n values.pendingOwner:\n+ \"gateway:0x0000000000000000000000000000000000000000\"\n implementationNames.gateway:0x000000000000000000000000000000000001000a:\n- \"\"\n+ \"ChainAssetHandler\"\n template:\n+ \"shared-zk-stack/ChainAssetHandler\"\n sourceHashes:\n+ [\"0x0ae09698e3bbec162b9457ba33b3184a082d0d89367f001764f8b8b22a1f950d\"]\n description:\n+ \"Specialized contract for managing chain assets, i.e. chain migrations.\"\n fieldMeta:\n+ {\"migrationPaused\":{\"severity\":\"HIGH\"},\"paused\":{\"severity\":\"LOW\",\"description\":\"this 'paused' is unrelated to migrations and only used for initialization.\"},\"migrations\":{\"severity\":\"HIGH\",\"description\":\"zk chain migrations that were started\"}}\n }\n```"
}
]
},
{
"id": "81476c5a",
"date": "Mon, 03 Nov 2025 16:50:08 GMT",
"timestamp": 1762183851,
"description": "Upgraded BridgeHub and MessageRoot on gateway to v29. Could not identify the diff on L2AssetRouter, but source hash changed. Also deployed ChainAssetHandler that is not verified on Gateway.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ChainAssetHandler_unverified (gateway:0x000000000000000000000000000000000001000a)\n +++ description: None\n```"
}
]
},
{
"id": "b0d171bf",
"date": "Fri, 24 Oct 2025 09:13:45 GMT",
"timestamp": 1761294991,
"description": "v29.2 upgrade. see also [Shared ZK Stack Updates](../shared-zk-stack/diffHistory.md#zip-12-v29-interop-messaging-upgrade).\n\nDiamond on Ethereum - https://disco.l2beat.com/diff/eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC/eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\n- interop support for chains on Gateway (none currently)\n- interfaces for the new chain asset handler etc.\n\nValidatorTimelock - https://disco.l2beat.com/diff/eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564/eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8\n- moved to custom accesscontrol setup (chainAdmin is hardcoded DEFAULT_ADMIN_ROLE, can manage all other roles)\n- support for preconfs\n- chainaddress instead of chainid\n- lots of updates that do not overly change how VTL worked in the past\n- exec delay 0 on gateway\n\nVerifier updates.",
"isHighSeverity": true,
"changeCount": 93,
"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 contract ZKsync (eth:0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\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.23:\n+ [\"2025-10-22T15:22:35.000Z\",\"0xcdb33c10c6fcef0fe1597e4c87403763e4378af8822c05ed303cd590bdbd72b9\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 23\n+ 24\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:0xa8CB082A5a689E0d594d7da1E2d72A3D63aDc1bD\"\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 contract ProxyAdmin (gateway:0x0A8a176B6F5962122C6E8F8815278f873D74021f) {\n +++ description: None\n directlyReceivedPermissions.2:\n+ {\"permission\":\"upgrade\",\"from\":\"gateway:0xe279aF77D3C1685022641ffE1b9b538c5eA0Ae24\",\"role\":\"admin\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (gateway:0x3CFB3a80Af42cBE4d82C14301690A62D53e870a5)\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 (gateway:0x92A9Fd0E84354213D9c3d33128eDd6Ea55ee0717)\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 (gateway:0xb83fdD24F40cb2AA5CC9c2A2A0c06E50fA9B4CEa)\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 contract DiamondProxy (gateway:0xCE7CBd23193d029410b40e0fD8a79a5121f9250C) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n sourceHashes.1:\n- \"0xbc2380479529743c27e6ab96cdf08210319fadcbca0856cf50c6b1b54bf8437f\"\n+ \"0xc7513302e4e09efc907df5e645d9f8037b1d02409f9a9089f61061c8951ef1ff\"\n values.$implementation.0:\n- \"gateway:0xa365401Dc76d077c702965ECc39CfbfE436A6167\"\n+ \"gateway:0xA5319D931A565F844f45F8E1Be0D367c23290830\"\n values.$implementation.1:\n- \"gateway:0xEE7f08400FDa3A46D32Ae78eBEC2D3841CeC53b7\"\n+ \"gateway:0xA53748c202D55E2974b1c2d604f6EED913FF0C72\"\n values.$implementation.2:\n- \"gateway:0x7f124F72fB4f978798ffdedAD3332b0ce750F399\"\n+ \"gateway:0xc3Ec2D1b52741a84Ed981D5AdCBe3db27f90589B\"\n values.$implementation.3:\n- \"gateway:0x4659780be9E0863eFB2BAE5DD77E31e371f2d3C8\"\n+ \"gateway:0x72E0D690E43Fa226b1E98DAB3e3159a2B2B17014\"\n values.$pastUpgrades.2:\n+ [\"2025-10-22T15:38:05.000Z\",\"0x1e4b02e288d02d1e3636fd2ec6e08d7ef08d02e22580ee38564c8ba41adc7727\",[\"gateway:0xA5319D931A565F844f45F8E1Be0D367c23290830\",\"gateway:0xA53748c202D55E2974b1c2d604f6EED913FF0C72\",\"gateway:0xc3Ec2D1b52741a84Ed981D5AdCBe3db27f90589B\",\"gateway:0x72E0D690E43Fa226b1E98DAB3e3159a2B2B17014\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.facetAddresses.0:\n- \"gateway:0xa365401Dc76d077c702965ECc39CfbfE436A6167\"\n+ \"gateway:0xA5319D931A565F844f45F8E1Be0D367c23290830\"\n values.facetAddresses.1:\n- \"gateway:0xEE7f08400FDa3A46D32Ae78eBEC2D3841CeC53b7\"\n+ \"gateway:0xA53748c202D55E2974b1c2d604f6EED913FF0C72\"\n values.facetAddresses.2:\n- \"gateway:0x7f124F72fB4f978798ffdedAD3332b0ce750F399\"\n+ \"gateway:0xc3Ec2D1b52741a84Ed981D5AdCBe3db27f90589B\"\n values.facetAddresses.3:\n- \"gateway:0x4659780be9E0863eFB2BAE5DD77E31e371f2d3C8\"\n+ \"gateway:0x72E0D690E43Fa226b1E98DAB3e3159a2B2B17014\"\n values.facets.gateway:0xa365401Dc76d077c702965ECc39CfbfE436A6167:\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.gateway:0xEE7f08400FDa3A46D32Ae78eBEC2D3841CeC53b7:\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.gateway:0x7f124F72fB4f978798ffdedAD3332b0ce750F399:\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.gateway:0x4659780be9E0863eFB2BAE5DD77E31e371f2d3C8:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.gateway:0xA5319D931A565F844f45F8E1Be0D367c23290830:\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.gateway:0xA53748c202D55E2974b1c2d604f6EED913FF0C72:\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.gateway:0xc3Ec2D1b52741a84Ed981D5AdCBe3db27f90589B:\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.gateway:0x72E0D690E43Fa226b1E98DAB3e3159a2B2B17014:\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- \"gateway:0xE841B98E524D827bBA664d19CB736C817707E730\"\n+ \"gateway:0xa99f11045E14d068088786CF6b61e8730817Cf52\"\n values.validators.0:\n- \"gateway:0xb83fdD24F40cb2AA5CC9c2A2A0c06E50fA9B4CEa\"\n+ \"gateway:0xe279aF77D3C1685022641ffE1b9b538c5eA0Ae24\"\n values.getRollupDAManager:\n+ \"gateway:0x5E12D7E0bB68029afbeC83ccB9E8eDE6019ef073\"\n implementationNames.gateway:0xa365401Dc76d077c702965ECc39CfbfE436A6167:\n- \"AdminFacet\"\n implementationNames.gateway:0xEE7f08400FDa3A46D32Ae78eBEC2D3841CeC53b7:\n- \"GettersFacet\"\n implementationNames.gateway:0x7f124F72fB4f978798ffdedAD3332b0ce750F399:\n- \"MailboxFacet\"\n implementationNames.gateway:0x4659780be9E0863eFB2BAE5DD77E31e371f2d3C8:\n- \"ExecutorFacet\"\n implementationNames.gateway:0xA5319D931A565F844f45F8E1Be0D367c23290830:\n+ \"AdminFacet\"\n implementationNames.gateway:0xA53748c202D55E2974b1c2d604f6EED913FF0C72:\n+ \"GettersFacet\"\n implementationNames.gateway:0xc3Ec2D1b52741a84Ed981D5AdCBe3db27f90589B:\n+ \"MailboxFacet\"\n implementationNames.gateway:0x72E0D690E43Fa226b1E98DAB3e3159a2B2B17014:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (gateway:0xE841B98E524D827bBA664d19CB736C817707E730)\n +++ description: A router contract for verifiers. Routes verification requests to gateway:0x3CFB3a80Af42cBE4d82C14301690A62D53e870a5 or gateway:0x92A9Fd0E84354213D9c3d33128eDd6Ea55ee0717 depending on the supplied proof type.\n```\n\n```diff\n EOA ProtocolUpgradeHandler_l2Alias (gateway:0xF41EcA3047B37dc7d88849de4a4dc07937Ad6bc4) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"gateway:0x5E12D7E0bB68029afbeC83ccB9E8eDE6019ef073\",\"description\":\"manage allowed rollup DA pairs (allowed to be used by rollups in permanent rollup mode).\",\"role\":\".owner\"}\n receivedPermissions.5:\n+ {\"permission\":\"upgrade\",\"from\":\"gateway:0xe279aF77D3C1685022641ffE1b9b538c5eA0Ae24\",\"role\":\"admin\",\"via\":[{\"address\":\"gateway:0x0A8a176B6F5962122C6E8F8815278f873D74021f\"}]}\n }\n```\n\n```diff\n+ Status: CREATED\n reference DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n reference RollupDAManager (eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract RollupDAManager (gateway:0x5E12D7E0bB68029afbeC83ccB9E8eDE6019ef073)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (gateway:0xa99f11045E14d068088786CF6b61e8730817Cf52)\n +++ description: A router contract for verifiers. Routes verification requests to gateway:0xD837976329d59057b27192f0cF6c8f357143670A or gateway:0xfA7c56B328bEb5deB9218f3a4b60ADc59Bb6Ad8d depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (gateway:0xD837976329d59057b27192f0cF6c8f357143670A)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract ZKsyncValidatorTimelock (gateway:0xe279aF77D3C1685022641ffE1b9b538c5eA0Ae24)\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 L1VerifierPlonk (gateway:0xfA7c56B328bEb5deB9218f3a4b60ADc59Bb6Ad8d)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\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: CREATED\n contract L1VerifierPlonk (eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "96cf5844",
"date": "Thu, 16 Oct 2025 08:51:05 GMT",
"timestamp": 1760603825,
"description": "minor upgrade of the L1ERC20Bridge for v29 compatibility\nhttps://disco.l2beat.com/diff/eth:0x2Dd3329A2Ae9de60Da02828A34f0cB6d6aff9142/eth:0x6ed98623e0B51be68748aB5091Aa891Adb883e13\n\nfor the v29 upgrade to shared contracts refer to [Shared Rollup Updates](../shared-zk-stack/diffHistory.md#zip-12-v29-interop-messaging-upgrade) for details.",
"isHighSeverity": true,
"changeCount": 23,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1ERC20Bridge (eth:0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063) {\n +++ description: Legacy bridge for depositing ERC20 tokens to ZKsync Era. Forwards deposits and withdrawals to the BridgeHub.\n sourceHashes.1:\n- \"0xa470a4cd272abd74efdef01a347542477159dba5fc965b47dca90736ae6f42db\"\n+ \"0x06c15368f64705eeb39a91543201cca750ade72c506049ef974548a8c85481f2\"\n values.$implementation:\n- \"eth:0x2Dd3329A2Ae9de60Da02828A34f0cB6d6aff9142\"\n+ \"eth:0x6ed98623e0B51be68748aB5091Aa891Adb883e13\"\n values.$pastUpgrades.10:\n+ [\"2025-10-15T09:09:11.000Z\",\"0xa022a2ce09b145eb5d0c4342b3f3583e79b66ee7205ab986322be819f277ba83\",[\"eth:0x6ed98623e0B51be68748aB5091Aa891Adb883e13\"]]\n values.$upgradeCount:\n- 10\n+ 11\n implementationNames.eth:0x2Dd3329A2Ae9de60Da02828A34f0cB6d6aff9142:\n- \"L1ERC20Bridge\"\n implementationNames.eth:0x6ed98623e0B51be68748aB5091Aa891Adb883e13:\n+ \"L1ERC20Bridge\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1GenesisUpgrade (gateway:0x540E6ED9FC06dFCbf0a38Dcc7Ed7Ea3F56C551de)\n +++ description: Diamond implementation code to initialize new ZK chains. Used to set their chainID.\n```\n\n```diff\n contract ChainTypeManager (gateway:0x912B84EEEEBeca74d307b9a2b09c68332aa5426C) {\n +++ description: Defines L2 diamond contract versions, creation and upgrade data and the proof system for all ZK stack chains connected to it. ZK chains are children of this central contract and can only upgrade to versions that were previously registered here. The current protocol version is 0,29,2.\n sourceHashes.1:\n- \"0x5462a6c55c6e9f2d98c21f2588b2b9a4de1dc41ba0c10906f8965e21849a3a52\"\n+ \"0xee0ad6dd34008989477a03f84eca5083a1cb79b46c01c850617d62c7b406c4ba\"\n description:\n- \"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,28,1.\"\n+ \"Defines L2 diamond contract versions, creation and upgrade data and the proof system for all ZK stack chains connected to it. ZK chains are children of this central contract and can only upgrade to versions that were previously registered here. The current protocol version is 0,29,2.\"\n values.$implementation:\n- \"gateway:0x6655933e34d8FD8f6d2CC7d5175bFC06112B7474\"\n+ \"gateway:0xE169B1AF9C39c97861f91D7C3009E093A681F568\"\n values.$pastUpgrades.2:\n+ [\"2025-10-15T09:26:53.000Z\",\"0x99ccfbcc9c20ff996decae7e65699200acde9905a700532b4253aa02056194f3\",[\"gateway:0xE169B1AF9C39c97861f91D7C3009E093A681F568\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.getSemverProtocolVersion.1:\n- 28\n+ 29\n values.getSemverProtocolVersion.2:\n- 1\n+ 2\n values.initialCutHash:\n- \"0xd3891c3aee249d0a86bba7198ac35ffc02c7e54e8db6fdd3bd5ae43ea8cd5d06\"\n+ \"0xa45cb9645f08f62fa6383c2a863147b1093d45348c756f8c80d53492ffff2a5c\"\n values.initialForceDeploymentHash:\n- \"0xed1057fbf858575d7348c4f2c82dd034534c62d97d0ac1d46f98ed197403f3d9\"\n+ \"0xad3fb7f31b114db9c3bce490d6ff173ee5bb075efddae0bd6ed01432f5c09860\"\n values.l1GenesisUpgrade:\n- \"gateway:0x540E6ED9FC06dFCbf0a38Dcc7Ed7Ea3F56C551de\"\n+ \"gateway:0x67b069aB0c634B03427ca284F701BE92d84d78ad\"\n values.protocolVersion:\n- 120259084289\n+ 124554051586\n values.storedBatchZero:\n- \"0x9629612e3685846dc5056347758c0f8286fc877383c762aa17b1411758a582d8\"\n+ \"0x94ea55f176a52a81ad3c45b49c6230fa0732968e6a5b067c5e678b280d5155d7\"\n values.validatorTimelockPostV29:\n+ \"gateway:0xe279aF77D3C1685022641ffE1b9b538c5eA0Ae24\"\n implementationNames.gateway:0x6655933e34d8FD8f6d2CC7d5175bFC06112B7474:\n- \"ChainTypeManager\"\n implementationNames.gateway:0xE169B1AF9C39c97861f91D7C3009E093A681F568:\n+ \"ChainTypeManager\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1GenesisUpgrade (gateway:0x67b069aB0c634B03427ca284F701BE92d84d78ad)\n +++ description: Diamond implementation code to initialize new ZK chains. Used to set their chainID.\n```"
}
]
},
{
"id": "96d3c4de",
"date": "Mon, 06 Oct 2025 13:33:08 GMT",
"timestamp": 1759757522,
"description": "Rotated zkStack validator on Gateway.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (gateway:0x30066439887C0a509Cb38E45c9262E6924a29BbD) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"gateway:0xb83fdD24F40cb2AA5CC9c2A2A0c06E50fA9B4CEa\",\"role\":\".validatorsVTL\"}\n }\n```\n\n```diff\n contract ZKsyncValidatorTimelock (gateway:0xb83fdD24F40cb2AA5CC9c2A2A0c06E50fA9B4CEa) {\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 values.validatorsVTL.1:\n- \"gateway:0x30066439887C0a509Cb38E45c9262E6924a29BbD\"\n+ \"gateway:0x882A6C2ecbAbfFc40686D599a9375ad3b35427Fd\"\n }\n```"
}
]
},
{
"id": "70c29b00",
"date": "Sat, 02 Aug 2025 07:32:34 GMT",
"timestamp": 1754118945,
"description": "Emergency upgrade to protocol version v28.1, which only affects the verifiers. No post-mortem yet: https://x.com/zksync/status/1951434107575214429.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n values.$pastUpgrades.22:\n+ [\"2025-08-01T23:42:11.000Z\",\"0x4408299240ea4bef17153116dbd0ab1fbd58dbe9a4b9fb177b7664a71e9c70f1\",[\"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 22\n+ 23\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```"
},
{
"kind": "config-related-changes",
"body": "```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 L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "363c9148",
"date": "Sat, 02 Aug 2025 07:32:34 GMT",
"timestamp": 1754118945,
"description": "Emergency upgrade to [protocol version v28.1](https://app.blocksec.com/explorer/tx/eth/0x3c27a371dbd4f6b0d97a87f950065eb48db3c51ae4e962d1b6b4d4e32d2fbdb1), which only affects the verifiers and is only activated for zksync era and gateway so far.\n\ndiff fflonk: https://disco.l2beat.com/diff/eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b/eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911\ndiff plonk: https://disco.l2beat.com/diff/eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1/eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6",
"isHighSeverity": true,
"changeCount": 18,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract MessageRoot (0x0000000000000000000000000000000000010005) {\n +++ description: Aggregates remote bridge message roots from all ZK stack chains. To be used with the Gateway when deployed.\n values.getAggregatedRoot:\n- \"0x1efdc979c76a9e2208d0c0e633ddc43a7a675bbf6051a0e20fbc58aa8a716444\"\n+ \"0x65bc8ad8b41eccd5def25a01cde8e9bb99f19519cdcb3872f67da5cfba44b87b\"\n }\n```\n\n```diff\n EOA (0x30066439887C0a509Cb38E45c9262E6924a29BbD) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"gateway:0xb83fdD24F40cb2AA5CC9c2A2A0c06E50fA9B4CEa\",\"role\":\".validatorsVTL\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0x63825fc80a4B8d96EE99d37E958a3A5B01b995D9)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract ChainTypeManager (0x912B84EEEEBeca74d307b9a2b09c68332aa5426C) {\n +++ 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,28,1.\n description:\n- \"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,28,0.\"\n+ \"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,28,1.\"\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.initialCutHash:\n- \"0x1d2a4ca6403b6266f7ba6b838d98e1e98f8eb4ae81e496b888d71011fb89870e\"\n+ \"0xd3891c3aee249d0a86bba7198ac35ffc02c7e54e8db6fdd3bd5ae43ea8cd5d06\"\n values.protocolVersion:\n- 120259084288\n+ 120259084289\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (0xA7F2EDAcDcc54a9c711639eEe9d0b27C96F0F3B6)\n +++ description: A router contract for verifiers. Routes verification requests to gateway:0x63825fc80a4B8d96EE99d37E958a3A5B01b995D9 or gateway:0xb742F4d52F6A5e98F11EAc60A7f75Acee534B831 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0xb742F4d52F6A5e98F11EAc60A7f75Acee534B831)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract ZKsyncValidatorTimelock (0xb83fdD24F40cb2AA5CC9c2A2A0c06E50fA9B4CEa) {\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 values.validatorsVTL.1:\n+ \"gateway:0x30066439887C0a509Cb38E45c9262E6924a29BbD\"\n }\n```\n\n```diff\n contract DiamondProxy (0xCE7CBd23193d029410b40e0fD8a79a5121f9250C) {\n +++ description: The main contract defining the Layer 2. Operator actions like committing 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 values.$pastUpgrades.1:\n+ [\"2025-08-01T23:57:13.000Z\",\"0x317f561c5cc2944ec00a48e69c538f79bb6f519f8cbdea88005f484cfdd8daa0\",[\"gateway:0xa365401Dc76d077c702965ECc39CfbfE436A6167\",\"gateway:0xEE7f08400FDa3A46D32Ae78eBEC2D3841CeC53b7\",\"gateway:0x7f124F72fB4f978798ffdedAD3332b0ce750F399\",\"gateway:0x4659780be9E0863eFB2BAE5DD77E31e371f2d3C8\"]]\n values.$upgradeCount:\n- 1\n+ 2\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- \"gateway:0xA7F2EDAcDcc54a9c711639eEe9d0b27C96F0F3B6\"\n+ \"gateway:0xE841B98E524D827bBA664d19CB736C817707E730\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x3CFB3a80Af42cBE4d82C14301690A62D53e870a5)\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 (0x92A9Fd0E84354213D9c3d33128eDd6Ea55ee0717)\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 (0xE841B98E524D827bBA664d19CB736C817707E730)\n +++ description: A router contract for verifiers. Routes verification requests to gateway:0x3CFB3a80Af42cBE4d82C14301690A62D53e870a5 or gateway:0x92A9Fd0E84354213D9c3d33128eDd6Ea55ee0717 depending on the supplied proof type.\n```"
}
]
},
{
"id": "8cabc948",
"date": "Thu, 31 Jul 2025 15:03:02 GMT",
"timestamp": 1753972594,
"description": "zksync era migrates to the gateway for settlement.\n\npermissions and upgrades remain the same. tracked transactions are now updated to track the Gateway liveness on ethereum, which is at best an approximation of ZKsync Era and needs to be changed as soon as other chains migrate. for full liveness and preconf liveness we would need tracked transactions on the gateway.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n values.getSettlementLayer:\n- \"eth:0x0000000000000000000000000000000000000000\"\n+ \"eth:0x6E96D1172a6593D5027Af3c2664C5112Ca75F2B9\"\n }\n```"
}
]
},
{
"id": "f0c16a1d",
"date": "Thu, 31 Jul 2025 15:03:02 GMT",
"timestamp": 1753972594,
"description": "initial discovery after the migration to gateway. the only change wrt L1 are the DA validator contract and the partial validator timelock.",
"isHighSeverity": false,
"changeCount": 14,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract Bridgehub (0x0000000000000000000000000000000000010002)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract L2AssetRouter (0x0000000000000000000000000000000000010003)\n +++ description: Bridge routing contract that exists once on every zk stack chain and keeps mappings of assets to their escrows (asset handlers) and deployment trackers.\n```\n\n```diff\n+ Status: CREATED\n contract MessageRoot (0x0000000000000000000000000000000000010005)\n +++ description: Aggregates remote bridge message roots from all ZK stack chains. To be used with the Gateway when deployed.\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0x0A8a176B6F5962122C6E8F8815278f873D74021f)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1GenesisUpgrade (0x540E6ED9FC06dFCbf0a38Dcc7Ed7Ea3F56C551de)\n +++ description: Diamond implementation code to initialize new ZK chains. Used to set their chainID.\n```\n\n```diff\n+ Status: CREATED\n contract RelayedSLDAValidator (0x595b8C88B9e5f3a4c596C3e81BE6e11D53Bb9200)\n +++ description: Plugs into the DAValidator interface of zk stack Diamond contracts. This 'DA validator' simply checks correct formatting and encoding of data and relays it via the L1Messenger to L1 to guarantee data availability.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x63825fc80a4B8d96EE99d37E958a3A5B01b995D9)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract ServerNotifier (0x796b7bDba8B8027Aa79BE96a0D5368FB86df560a)\n +++ description: A simple contract that can be called by the ChainAdmin to emit notifications about chain migrations.\n```\n\n```diff\n+ Status: CREATED\n contract ChainTypeManager (0x912B84EEEEBeca74d307b9a2b09c68332aa5426C)\n +++ 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,28,0.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0xA7F2EDAcDcc54a9c711639eEe9d0b27C96F0F3B6)\n +++ description: A router contract for verifiers. Routes verification requests to gateway:0x63825fc80a4B8d96EE99d37E958a3A5B01b995D9 or gateway:0xb742F4d52F6A5e98F11EAc60A7f75Acee534B831 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0xb742F4d52F6A5e98F11EAc60A7f75Acee534B831)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract ZKsyncValidatorTimelock (0xb83fdD24F40cb2AA5CC9c2A2A0c06E50fA9B4CEa)\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 PartialValidatorTimelock (0xcA027Fa98cdce4515E76ECf8dfb4189B16eE72A2)\n +++ description: If registrered as a validator in the gateway:0xb83fdD24F40cb2AA5CC9c2A2A0c06E50fA9B4CEa, forwards calls to it, but restricted to `commit`- and `revertBatchesSharedBridge()`.\n```\n\n```diff\n+ Status: CREATED\n contract DiamondProxy (0xCE7CBd23193d029410b40e0fD8a79a5121f9250C)\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n```"
}
]
},
{
"id": "f132ccd0",
"date": "Mon, 14 Jul 2025 12:47:21 GMT",
"timestamp": 1752497241,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 10,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Governance (0x0b622A2061EaccAE1c664eBC3E868b8438e03F61)\n +++ description: Old Governance contract for ZKsync Era allowing for proposals in form of transactions. The minimum delay is 0s.\n```\n\n```diff\n+ Status: CREATED\n contract ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324)\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n```\n\n```diff\n+ Status: CREATED\n contract L1ERC20Bridge_wstETH (0x41527B2d03844dB6b0945f25702cB958b6d55989)\n +++ description: Bridge for depositing wrapped stETH (Lido) to ZKsync Era. These deposits and withdrawals do not go through the shared Bridge.\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 L1ERC20Bridge (0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063)\n +++ description: Legacy bridge for depositing ERC20 tokens to ZKsync Era. Forwards deposits and withdrawals to the BridgeHub.\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 ValidatorTimelock3 (0xa8CB082A5a689E0d594d7da1E2d72A3D63aDc1bD)\n +++ description: Intermediary contract between the *Validators* and the ZKsync Era diamond that delays block execution (ie withdrawals and other L2 --> L1 messages) by 21h. This contract is a remnant from pre Elastic Chain times.\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": "0d60433d",
"date": "Tue, 24 Jun 2025 15:55:56 GMT",
"timestamp": 1750780556,
"description": "[protocol update v28](https://www.tally.xyz/gov/zksync/proposal/54063168049426383294336598998322383147338444177076559098597792110160570100155?govId=eip155:324:0x76705327e682F2d96943280D99464Ab61219e34f) for zksync era:\n- no changes on L1 except for the VKeys\n- adds precompiles for elliptic curve operations (ECAdd, ECMul, ECPairing) and modular exponentiation (ModExp) on L2 (see also shared-zk-stack diffHistory)",
"isHighSeverity": true,
"changeCount": 105,
"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 ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n values.$implementation.3:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.$implementation.2:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.$implementation.1:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.$implementation.0:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.$pastUpgrades.21:\n+ [\"2023-09-22T17:22:47.000Z\",\"0x5e3ce9e7d3920f293487a5581146f8333191a4068762db6fe4d1eec65a3fb805\",[\"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\",\"0x7444DE636699F080cA1C033528D2bB3705B391Ce\",\"0x62aA95ac4740A367746A664C4C69034d52E968EF\",\"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\",\"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"]]\n values.$pastUpgrades.20.2.4:\n- \"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\"\n values.$pastUpgrades.20.2.3:\n- \"0x62aA95ac4740A367746A664C4C69034d52E968EF\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$pastUpgrades.20.2.2:\n- \"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$pastUpgrades.20.2.1:\n- \"0x7444DE636699F080cA1C033528D2bB3705B391Ce\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$pastUpgrades.20.2.0:\n- \"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.20.1:\n- \"2023-09-22T17:22:47.000Z\"\n+ \"0xf20c9ac3a8c84e97d8403833810d9c2d38f29bb18f592b983e69e14da66b1d12\"\n values.$pastUpgrades.20.0:\n- \"0x5e3ce9e7d3920f293487a5581146f8333191a4068762db6fe4d1eec65a3fb805\"\n+ \"2025-05-05T12:02:59.000Z\"\n values.$pastUpgrades.19.2.4:\n+ \"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\"\n values.$pastUpgrades.19.2.3:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x62aA95ac4740A367746A664C4C69034d52E968EF\"\n values.$pastUpgrades.19.2.2:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"\n values.$pastUpgrades.19.2.1:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x7444DE636699F080cA1C033528D2bB3705B391Ce\"\n values.$pastUpgrades.19.2.0:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\"\n values.$pastUpgrades.19.1:\n- \"0xf20c9ac3a8c84e97d8403833810d9c2d38f29bb18f592b983e69e14da66b1d12\"\n+ \"0x0de4556791139b205562b388f2ddc4a2d2ec1bf0996feea38158535cd7e1a5c6\"\n values.$pastUpgrades.19.0:\n- \"2025-05-05T12:02:59.000Z\"\n+ \"2023-10-20T16:15:35.000Z\"\n values.$pastUpgrades.18.1:\n- \"0x0de4556791139b205562b388f2ddc4a2d2ec1bf0996feea38158535cd7e1a5c6\"\n+ \"2023-09-07T10:53:11.000Z\"\n values.$pastUpgrades.18.0:\n- \"2023-10-20T16:15:35.000Z\"\n+ \"0x72983cd25802230545bcb38b805638b0ffa17990ad51e8843e55519fe96d702c\"\n values.$pastUpgrades.17.2.4:\n- \"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\"\n values.$pastUpgrades.17.2.3:\n- \"0x62aA95ac4740A367746A664C4C69034d52E968EF\"\n+ \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n values.$pastUpgrades.17.2.2:\n- \"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"\n+ \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n values.$pastUpgrades.17.2.1:\n- \"0x7444DE636699F080cA1C033528D2bB3705B391Ce\"\n+ \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n values.$pastUpgrades.17.2.0:\n- \"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\"\n+ \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n values.$pastUpgrades.17.1:\n- \"2023-09-07T10:53:11.000Z\"\n+ \"0x2060aa785aeefa91a0b103accc9df689c7a2056aacfa70309492e729ddea4565\"\n values.$pastUpgrades.17.0:\n- \"0x72983cd25802230545bcb38b805638b0ffa17990ad51e8843e55519fe96d702c\"\n+ \"2024-08-06T09:50:47.000Z\"\n values.$pastUpgrades.16.2:\n- [\"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\",\"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\",\"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\",\"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"]\n+ \"0x4f45a603cfe9fb680e13fc3ecb48aed0ba73e198e7be5f53e39f016384d262b0\"\n values.$pastUpgrades.16.1:\n- \"0x2060aa785aeefa91a0b103accc9df689c7a2056aacfa70309492e729ddea4565\"\n+ [\"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\",\"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\",\"0x5575218cECd370E1d630d1AdB03c254B0B376821\",\"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"]\n values.$pastUpgrades.16.0:\n- \"2024-08-06T09:50:47.000Z\"\n+ \"2025-01-10T14:55:59.000Z\"\n values.$pastUpgrades.15.2:\n- \"0x4f45a603cfe9fb680e13fc3ecb48aed0ba73e198e7be5f53e39f016384d262b0\"\n+ [\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]\n values.$pastUpgrades.15.1:\n- [\"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\",\"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\",\"0x5575218cECd370E1d630d1AdB03c254B0B376821\",\"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"]\n+ \"0x2c6aa40efd0500a015b036cf03de961b6e2aa2c726d21b5b8cede9a91964c12f\"\n values.$pastUpgrades.15.0:\n- \"2025-01-10T14:55:59.000Z\"\n+ \"2025-03-12T14:59:11.000Z\"\n values.$pastUpgrades.14.2.4:\n+ \"0xab458aCbD8FF9B6cF7B8a029705A02F70DCDBf7D\"\n values.$pastUpgrades.14.2.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x8c0f38F13526fCB379a80B87F4DEbdBCC9CAEcbD\"\n values.$pastUpgrades.14.2.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0xf002dFBc52C250a2E14C148041aDB8567a0B19BD\"\n values.$pastUpgrades.14.2.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0x9B1A10bDC4A40219544C835263b2cA3f3e689693\"\n values.$pastUpgrades.14.2.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0xA389bF185B301C8e20E79E3098e71399914035dF\"\n values.$pastUpgrades.14.1:\n- \"0x2c6aa40efd0500a015b036cf03de961b6e2aa2c726d21b5b8cede9a91964c12f\"\n+ \"2023-08-16T10:15:11.000Z\"\n values.$pastUpgrades.14.0:\n- \"2025-03-12T14:59:11.000Z\"\n+ \"0x83d729e260c7ac2cf439aa2b8e667454489e4fb8d4965aaa9dc8e2fb95a44f46\"\n values.$pastUpgrades.13.2:\n- [\"0x9B1A10bDC4A40219544C835263b2cA3f3e689693\",\"0xA389bF185B301C8e20E79E3098e71399914035dF\",\"0xf002dFBc52C250a2E14C148041aDB8567a0B19BD\",\"0xab458aCbD8FF9B6cF7B8a029705A02F70DCDBf7D\",\"0x8c0f38F13526fCB379a80B87F4DEbdBCC9CAEcbD\"]\n+ \"2023-12-04T20:29:11.000Z\"\n values.$pastUpgrades.13.1:\n- \"2023-08-16T10:15:11.000Z\"\n+ \"0x9f0e9ecd78b5c17ff95c130b183df452486a0f784705927e608fd90a00aa9bcd\"\n values.$pastUpgrades.13.0:\n- \"0x83d729e260c7ac2cf439aa2b8e667454489e4fb8d4965aaa9dc8e2fb95a44f46\"\n+ [\"0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\",\"0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\",\"0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\",\"0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269\"]\n values.$pastUpgrades.12.2:\n- \"2023-12-04T20:29:11.000Z\"\n+ [\"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\",\"0x7444DE636699F080cA1C033528D2bB3705B391Ce\",\"0x62aA95ac4740A367746A664C4C69034d52E968EF\",\"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\",\"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"]\n values.$pastUpgrades.12.1:\n- \"0x9f0e9ecd78b5c17ff95c130b183df452486a0f784705927e608fd90a00aa9bcd\"\n+ \"2023-11-01T16:41:35.000Z\"\n values.$pastUpgrades.12.0:\n- [\"0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\",\"0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\",\"0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\",\"0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269\"]\n+ \"0x4d3e09380ee604e75800fd61da0c1771987e1cbca7c5254e8c7479e3dd0e3b37\"\n values.$pastUpgrades.11.2.4:\n- \"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\"\n+ \"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"\n values.$pastUpgrades.11.2.3:\n- \"0x62aA95ac4740A367746A664C4C69034d52E968EF\"\n+ \"0x16615a85B451edfb6FCBea0b34405D9C7ca1a22A\"\n values.$pastUpgrades.11.2.2:\n- \"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"\n+ \"0x7444DE636699F080cA1C033528D2bB3705B391Ce\"\n values.$pastUpgrades.11.2.1:\n- \"0x7444DE636699F080cA1C033528D2bB3705B391Ce\"\n+ \"0xc6f7e57C6e1e20468D869Fe33675524e243CD6a0\"\n values.$pastUpgrades.11.2.0:\n- \"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\"\n+ \"0x5349E94435Cc9Cab9FfB40A492DA46935052733A\"\n values.$pastUpgrades.11.1:\n- \"2023-11-01T16:41:35.000Z\"\n+ \"2023-08-29T08:28:11.000Z\"\n values.$pastUpgrades.11.0:\n- \"0x4d3e09380ee604e75800fd61da0c1771987e1cbca7c5254e8c7479e3dd0e3b37\"\n+ \"0x8cdc268e23c0fa073ab3f1b75bd32a2cf05ea1e268a07c1aec44d5805f22fb12\"\n values.$pastUpgrades.10.2:\n- [\"0xc6f7e57C6e1e20468D869Fe33675524e243CD6a0\",\"0x7444DE636699F080cA1C033528D2bB3705B391Ce\",\"0x5349E94435Cc9Cab9FfB40A492DA46935052733A\",\"0x16615a85B451edfb6FCBea0b34405D9C7ca1a22A\",\"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"]\n+ \"2024-02-05T14:30:47.000Z\"\n values.$pastUpgrades.10.1:\n- \"2023-08-29T08:28:11.000Z\"\n+ \"0x937dd21a05142c02159170dafb1bbaaa145ae7bd2c29bf512534fbec9ff801ab\"\n values.$pastUpgrades.10.0:\n- \"0x8cdc268e23c0fa073ab3f1b75bd32a2cf05ea1e268a07c1aec44d5805f22fb12\"\n+ [\"0xE6426c725cB507168369c10284390E59d91eC821\",\"0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B\",\"0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB\",\"0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a\"]\n values.$pastUpgrades.9.2:\n- \"2024-02-05T14:30:47.000Z\"\n+ [\"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\",\"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\",\"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\",\"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"]\n values.$pastUpgrades.9.1:\n- \"0x937dd21a05142c02159170dafb1bbaaa145ae7bd2c29bf512534fbec9ff801ab\"\n+ \"2024-06-06T11:55:23.000Z\"\n values.$pastUpgrades.9.0:\n- [\"0xE6426c725cB507168369c10284390E59d91eC821\",\"0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B\",\"0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB\",\"0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a\"]\n+ \"0x71a3b924989f551cbf3024fcd6b52aeb9a52902d95c0efb690e7340d667b6e21\"\n values.$pastUpgrades.8.2:\n- [\"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\",\"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\",\"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\",\"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"]\n+ \"2023-12-21T11:51:35.000Z\"\n values.$pastUpgrades.8.1:\n- \"2024-06-06T11:55:23.000Z\"\n+ [\"0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967\",\"0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7\",\"0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58\",\"0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d\"]\n values.$pastUpgrades.8.0:\n- \"0x71a3b924989f551cbf3024fcd6b52aeb9a52902d95c0efb690e7340d667b6e21\"\n+ \"0x2200e7109d3abbb74cb03144fea37f7227188e1fcaba4538bd9dfa3fa17cca02\"\n values.$pastUpgrades.7.2:\n- \"2023-12-21T11:51:35.000Z\"\n+ \"2024-03-11T14:32:11.000Z\"\n values.$pastUpgrades.7.1:\n- [\"0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967\",\"0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7\",\"0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58\",\"0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d\"]\n+ \"0xa5fd3584a815267a84a5686b386d911ed7e53d6c1863ff64a57ef0f7085bd4d7\"\n values.$pastUpgrades.7.0:\n- \"0x2200e7109d3abbb74cb03144fea37f7227188e1fcaba4538bd9dfa3fa17cca02\"\n+ [\"0x230214F0224C7E0485f348a79512ad00514DB1F7\",\"0x10113bB3a8e64f8eD67003126adC8CE74C34610c\",\"0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7\",\"0xfd3779e6214eBBd40f5F5890351298e123A46BA6\"]\n values.$pastUpgrades.6.2:\n- \"2024-03-11T14:32:11.000Z\"\n+ \"2025-06-23T23:51:35.000Z\"\n values.$pastUpgrades.6.1:\n- \"0xa5fd3584a815267a84a5686b386d911ed7e53d6c1863ff64a57ef0f7085bd4d7\"\n+ \"0x57b72110d70a2c2f9b7762a0069d3c61d6b58888a4ac6bec35adde7d3f664a57\"\n values.$pastUpgrades.6.0.3:\n- \"0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.$pastUpgrades.6.0.2:\n- \"0x230214F0224C7E0485f348a79512ad00514DB1F7\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.$pastUpgrades.6.0.1:\n- \"0x10113bB3a8e64f8eD67003126adC8CE74C34610c\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.$pastUpgrades.6.0.0:\n- \"0xfd3779e6214eBBd40f5F5890351298e123A46BA6\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.$upgradeCount:\n- 21\n+ 22\n values.facetAddresses.3:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.facetAddresses.2:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.facetAddresses.1:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.facetAddresses.0:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\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.0:\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 L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\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 (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": "c254820d",
"date": "Wed, 14 May 2025 14:05:56 GMT",
"timestamp": 1747231556,
"description": "Add 2 new validators behind the VTL.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (0x0D3250c3D5FAcb74Ac15834096397a3Ef790ec99) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n EOA (0x3527439923a63F8C13CF72b8Fe80a77f6e572092) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\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.1:\n- \"0x0D3250c3D5FAcb74Ac15834096397a3Ef790ec99\"\n+ \"0xE1D8d4C8656949764c2c9Fa9faB2C15d3F42e6C2\"\n values.validatorsVTL.0:\n- \"0x3527439923a63F8C13CF72b8Fe80a77f6e572092\"\n+ \"0x30066439887C0a509Cb38E45c9262E6924a29BbD\"\n }\n```"
}
]
},
{
"id": "8c1eeeb8",
"date": "Tue, 06 May 2025 10:31:21 GMT",
"timestamp": 1746527481,
"description": "[v27 self-serve Upgrade](https://github.com/matter-labs/era-contracts/blob/6bc90a37ac458db04a81d380ce5379e4a149aef4/docs/upgrade_history/v27_evm_emulation/v27-evm-emulation.md) execution for the Diamond contract:\n- allowEvmEmulation() in the AdminFacet activates the EVM emulator on L2\n- getL2EvmEmulatorBytecodeHash() gets the bytecode hash of the EVM emulator L2 system contract\n- requestL2ServiceTransaction() onlySelf in the Mailbox is used to initially set up the EVM emulator\n\nnew DualVerifier which routes to PlonK vs fflonk verifier depending on the proof.\n\nno risk-related changes.",
"isHighSeverity": true,
"changeCount": 40,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n sourceHashes.4:\n- \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n+ \"0x46ab6472330f39b5dde71de5fc30609f34ecfa68c11673e09438f6db607279ea\"\n sourceHashes.3:\n- \"0x46ab6472330f39b5dde71de5fc30609f34ecfa68c11673e09438f6db607279ea\"\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.20:\n+ [\"2023-09-22T17:22:47.000Z\",\"0x5e3ce9e7d3920f293487a5581146f8333191a4068762db6fe4d1eec65a3fb805\",[\"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\",\"0x7444DE636699F080cA1C033528D2bB3705B391Ce\",\"0x62aA95ac4740A367746A664C4C69034d52E968EF\",\"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\",\"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"]]\n values.$pastUpgrades.19.2.4:\n- \"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\"\n values.$pastUpgrades.19.2.3:\n- \"0x62aA95ac4740A367746A664C4C69034d52E968EF\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$pastUpgrades.19.2.2:\n- \"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$pastUpgrades.19.2.1:\n- \"0x7444DE636699F080cA1C033528D2bB3705B391Ce\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$pastUpgrades.19.2.0:\n- \"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.19.1:\n- \"2023-09-22T17:22:47.000Z\"\n+ \"0xf20c9ac3a8c84e97d8403833810d9c2d38f29bb18f592b983e69e14da66b1d12\"\n values.$pastUpgrades.19.0:\n- \"0x5e3ce9e7d3920f293487a5581146f8333191a4068762db6fe4d1eec65a3fb805\"\n+ \"2025-05-05T12:02:59.000Z\"\n values.$upgradeCount:\n- 20\n+ 21\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 }\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": "bff2a528",
"date": "Fri, 25 Apr 2025 13:36:51 GMT",
"timestamp": 1745588211,
"description": "TX filterer removed.",
"isHighSeverity": true,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n issuedPermissions.3:\n- {\"permission\":\"interact\",\"to\":\"0xa8CB082A5a689E0d594d7da1E2d72A3D63aDc1bD\",\"description\":\"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\",\"via\":[]}\n issuedPermissions.2.to:\n- \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"0xa8CB082A5a689E0d594d7da1E2d72A3D63aDc1bD\"\n issuedPermissions.1.to:\n- \"0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n issuedPermissions.0.to:\n- \"0x62F3376E73cF96A0C3232682a88dbe31B8D2FA4f\"\n+ \"0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n issuedPermissions.0.description:\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.\"\n+ \"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\"\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- \"0x62F3376E73cF96A0C3232682a88dbe31B8D2FA4f\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n- Status: DELETED\n contract TransactionFilterer (0x62F3376E73cF96A0C3232682a88dbe31B8D2FA4f)\n +++ description: None\n```"
}
]
},
{
"id": "0dff75a3",
"date": "Fri, 18 Apr 2025 18:39:54 GMT",
"timestamp": 1745001594,
"description": "New transaction filterer, still unverified.\n\nFunnily, claude can decompile it and the censored addy matches:\n```\n// SPDX-License-Identifier: MIT\npragma solidity ^0.8.24;\n\ncontract ProtectedAddressValidator {\n address constant PROTECTED_ADDRESS = 0xb1027ed67f89c9f588e097f70807163fec1005d3;\n\n function isValid(\n address addr1,\n address addr2,\n uint256 param1,\n uint256 param2,\n bytes calldata data,\n address addr3\n ) external pure returns (bool) {\n // If first address matches protected address, return false\n if (addr1 == PROTECTED_ADDRESS) {\n return false;\n }\n\n // Check data length - must be at least 20 bytes (size of an address)\n uint256 dataLength = data.length;\n if (dataLength < 20) {\n return true;\n }\n\n // Loop through data to check for protected address\n for (uint256 i = 0; i < dataLength - 20; i++) {\n // Extract address from data at current position\n address extractedAddress;\n assembly {\n // Load 32 bytes and mask to get an address (20 bytes)\n let ptr := add(add(data.offset, 32), i)\n extractedAddress := and(mload(ptr), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)\n }\n\n // If extracted address matches protected address, return false\n if (extractedAddress == PROTECTED_ADDRESS) {\n return false;\n }\n }\n\n // No protected address found in data, return true\n return true;\n }\n}\n\n```",
"isHighSeverity": true,
"changeCount": 7,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n issuedPermissions.1.to:\n- \"0xC8Cc8454fBe5919431D425fcA9dC6aF055db7C78\"\n+ \"0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n issuedPermissions.1.description:\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.\"\n+ \"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\"\n issuedPermissions.0.to:\n- \"0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n+ \"0x62F3376E73cF96A0C3232682a88dbe31B8D2FA4f\"\n issuedPermissions.0.description:\n- \"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\"\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.\"\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- \"0xC8Cc8454fBe5919431D425fcA9dC6aF055db7C78\"\n+ \"0x62F3376E73cF96A0C3232682a88dbe31B8D2FA4f\"\n }\n```\n\n```diff\n- Status: DELETED\n contract (0xC8Cc8454fBe5919431D425fcA9dC6aF055db7C78)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TransactionFilterer (0x62F3376E73cF96A0C3232682a88dbe31B8D2FA4f)\n +++ description: None\n```"
}
]
},
{
"id": "6fa1ad76",
"date": "Wed, 16 Apr 2025 12:33:13 GMT",
"timestamp": 1744806793,
"description": "TransactionFilterer added. Risks already reflect this and the filterer contract will show up as unverified/red.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\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. isPermanentRollup was set to true in this contract which prevents changing the DA mode to Validium in the future.\n issuedPermissions.3:\n+ {\"permission\":\"interact\",\"to\":\"0xa8CB082A5a689E0d594d7da1E2d72A3D63aDc1bD\",\"description\":\"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\",\"via\":[]}\n issuedPermissions.2.to:\n- \"0xa8CB082A5a689E0d594d7da1E2d72A3D63aDc1bD\"\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n issuedPermissions.1.to:\n- \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"0xC8Cc8454fBe5919431D425fcA9dC6aF055db7C78\"\n issuedPermissions.1.description:\n- \"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\"\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.\"\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+ \"0xC8Cc8454fBe5919431D425fcA9dC6aF055db7C78\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract (0xC8Cc8454fBe5919431D425fcA9dC6aF055db7C78)\n +++ description: None\n```"
}
]
},
{
"id": "76e3d72b",
"date": "Wed, 02 Apr 2025 15:08:29 GMT",
"timestamp": 1743606509,
"description": "shared zk stack contracts upgraded to v26: config related changes for all children chains.",
"isHighSeverity": true,
"changeCount": 21,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1ERC20Bridge (0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063) {\n +++ description: Legacy bridge for depositing ERC20 tokens to ZKsync Era. Forwards deposits and withdrawals to the BridgeHub.\n sourceHashes.0:\n- \"0x179b79e02a71cc452486d433271b925a402363053a3dd4e9d83837877c677dfd\"\n+ \"0xa470a4cd272abd74efdef01a347542477159dba5fc965b47dca90736ae6f42db\"\n values.$implementation:\n- \"0x8D231E4097C3cb200Ed62134B466AA615cE60336\"\n+ \"0x2Dd3329A2Ae9de60Da02828A34f0cB6d6aff9142\"\n values.$pastUpgrades.9:\n+ [\"2024-06-06T13:20:35.000Z\",\"0xb689a0cfff9af4bb1d1da94c404d396f24d5cf5031c31647671549c717cdba7a\",[\"0x8191975d8B0851C7f0740918896Cf298c09aA05E\"]]\n values.$pastUpgrades.8.2:\n- [\"0x8191975d8B0851C7f0740918896Cf298c09aA05E\"]\n+ \"0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5\"\n values.$pastUpgrades.8.1:\n- \"2024-06-06T13:20:35.000Z\"\n+ [\"0x8D231E4097C3cb200Ed62134B466AA615cE60336\"]\n values.$pastUpgrades.8.0:\n- \"0xb689a0cfff9af4bb1d1da94c404d396f24d5cf5031c31647671549c717cdba7a\"\n+ \"2025-01-08T16:00:35.000Z\"\n values.$pastUpgrades.7.2:\n- \"0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5\"\n+ \"2023-12-04T20:29:11.000Z\"\n values.$pastUpgrades.7.1:\n- [\"0x8D231E4097C3cb200Ed62134B466AA615cE60336\"]\n+ \"0x9f0e9ecd78b5c17ff95c130b183df452486a0f784705927e608fd90a00aa9bcd\"\n values.$pastUpgrades.7.0:\n- \"2025-01-08T16:00:35.000Z\"\n+ [\"0x03F3F3c12e11C2FAA60080bd3F7f80AADF369a33\"]\n values.$pastUpgrades.6.2:\n- \"2023-12-04T20:29:11.000Z\"\n+ \"0xa462b66e80e973da1eaea5a5bde5a1b4ff6a1a3b29ac4db25922712e71900e80\"\n values.$pastUpgrades.6.1:\n- \"0x9f0e9ecd78b5c17ff95c130b183df452486a0f784705927e608fd90a00aa9bcd\"\n+ \"2023-04-25T12:37:35.000Z\"\n values.$pastUpgrades.6.0.0:\n- \"0x03F3F3c12e11C2FAA60080bd3F7f80AADF369a33\"\n+ \"0x38ABF296EE79621A225AA85086853b0dA3225D2F\"\n values.$pastUpgrades.5.2:\n- \"0xa462b66e80e973da1eaea5a5bde5a1b4ff6a1a3b29ac4db25922712e71900e80\"\n+ \"2025-03-31T08:00:47.000Z\"\n values.$pastUpgrades.5.1:\n- \"2023-04-25T12:37:35.000Z\"\n+ [\"0x2Dd3329A2Ae9de60Da02828A34f0cB6d6aff9142\"]\n values.$pastUpgrades.5.0:\n- [\"0x38ABF296EE79621A225AA85086853b0dA3225D2F\"]\n+ \"0x96a2f14c85022136ab3d4e568e9f1fe8f4611a4a2597f979332840259378f6b3\"\n values.$upgradeCount:\n- 9\n+ 10\n values.SHARED_BRIDGE:\n- \"0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB\"\n values.ERA_CHAIN_ID:\n+ 324\n values.L1_ASSET_ROUTER:\n+ \"0x8829AD80E425C646DAB305381ff105169FeEcE56\"\n values.L1_NATIVE_TOKEN_VAULT:\n+ \"0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6\"\n values.L1_NULLIFIER:\n+ \"0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB\"\n }\n```"
}
]
},
{
"id": "5a8ad8b1",
"date": "Fri, 14 Mar 2025 12:01:34 GMT",
"timestamp": 1741953694,
"description": "ZKsync upgrades their diamond as a part of the v26 protocol upgrade. There are no major changes because the ChainTypeManager and other shared L1 contracts are not used yet. As soon as part 2 of ZIP-6 is executed, the new features of the diamond (in relation to the new bridge and CTM) must be reviewed. part 2 of ZIP-6 is waiting for more chains to upgrade their diamonds(2 weeks).\n\nCurrent status of protocol upgrade v26:\n1) [ZIP-5] Upgrade Governance Contracts (new ProtocolUpgradeHandler) EXECUTED\n2) [ZIP-6] Prepare ZKsync for ZK Gateway part 1 (new protocolVersion and diamond implementations) EXECUTED, we are here\n---- 2 weeks time for chains to upgrade their diamonds----\n3) [ZIP-6] Prepare ZKsync for ZK Gateway part 2 (new bridge, ChainTypeManager and shared contracts upgrade) READY L1, ready to execute\n4) [ZIP-8] patch for protocol v26, in voting on L2",
"isHighSeverity": true,
"changeCount": 60,
"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 (0x0D3250c3D5FAcb74Ac15834096397a3Ef790ec99) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n contract ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\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+ \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n sourceHashes.3:\n- \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n+ \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n sourceHashes.2:\n- \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n+ \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n sourceHashes.1:\n- \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n+ \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\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\":\"0xa8CB082A5a689E0d594d7da1E2d72A3D63aDc1bD\",\"description\":\"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\",\"via\":[]}\n issuedPermissions.1.to:\n- \"0xa8CB082A5a689E0d594d7da1E2d72A3D63aDc1bD\"\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n values.$implementation.3:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.$implementation.2:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.$implementation.1:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.$implementation.0:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.$pastUpgrades.19:\n+ [\"2025-03-12T14:59:11.000Z\",\"0x2c6aa40efd0500a015b036cf03de961b6e2aa2c726d21b5b8cede9a91964c12f\",[\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]]\n values.$upgradeCount:\n- 19\n+ 20\n values.daMode:\n- 0\n values.facetAddresses.3:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.facetAddresses.2:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.facetAddresses.1:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.facetAddresses.0:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\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.1:\n- 25\n+ 26\n values.getStateTransitionManager:\n- \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n values.getVerifier:\n- \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n+ \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n values.txFilterer:\n- []\n values.validators.2:\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n values.getBaseTokenAssetId:\n+ \"0x05e1c3ae4b9732444ae25217ac7666e46fa365fee1768de00c9fcb65532b7609\"\n values.getChainId:\n+ 324\n values.getChainTypeManager:\n+ \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n+++ severity: HIGH\n values.getDAValidatorPair:\n+ [\"0x72213dfe8CA61B0A782970dCFebFb877778f9119\",\"0xfa96A3Da88f201433911bEFf3Ecc434CB1222731\"]\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 contract undefined (0x3527439923a63F8C13CF72b8Fe80a77f6e572092) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\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.1:\n+ \"0x3527439923a63F8C13CF72b8Fe80a77f6e572092\"\n values.validatorsVTL.0:\n+ \"0x0D3250c3D5FAcb74Ac15834096397a3Ef790ec99\"\n issuedPermissions:\n+ [{\"permission\":\"validateZkStack\",\"to\":\"0x0D3250c3D5FAcb74Ac15834096397a3Ef790ec99\",\"via\":[]},{\"permission\":\"validateZkStack\",\"to\":\"0x3527439923a63F8C13CF72b8Fe80a77f6e572092\",\"via\":[]}]\n receivedPermissions:\n+ [{\"permission\":\"interact\",\"from\":\"0x32400084C286CF3E17e7B677ea9583e60a000324\",\"description\":\"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\"}]\n }\n```\n\n```diff\n+ Status: CREATED\n contract RollupL1DAValidator (0x72213dfe8CA61B0A782970dCFebFb877778f9119)\n +++ 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```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```"
},
{
"kind": "config-related-changes",
"body": "```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```"
}
]
},
{
"id": "bec924d0",
"date": "Tue, 11 Mar 2025 08:00:35 GMT",
"timestamp": 1741680035,
"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": "8394a835",
"date": "Mon, 03 Feb 2025 14:33:50 GMT",
"timestamp": 1738593230,
"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": "9da5fcdf",
"date": "Tue, 28 Jan 2025 06:34:24 GMT",
"timestamp": 1738046064,
"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": "59f451bc",
"date": "Wed, 15 Jan 2025 13:55:12 GMT",
"timestamp": 1736949312,
"description": "Upgrade the diamond contract to the predeployed v25 in context of the ['protocol defence' upgrade](https://github.com/matter-labs/era-contracts/pull/774).\n\nThis updrade brings formatting, gas optimizations and minor changes only.",
"isHighSeverity": false,
"changeCount": 30,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n +++ description: None\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.18:\n+ [\"2025-01-10T14:55:59.000Z\",\"0x4f45a603cfe9fb680e13fc3ecb48aed0ba73e198e7be5f53e39f016384d262b0\",[\"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\",\"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\",\"0x5575218cECd370E1d630d1AdB03c254B0B376821\",\"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"]]\n values.$upgradeCount:\n- 18\n+ 19\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+++ description: Protocol version, increments with each protocol change\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: None\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: None\n```"
}
]
},
{
"id": "ed3e844c",
"date": "Thu, 09 Jan 2025 07:00:47 GMT",
"timestamp": 1736406047,
"description": "Upgrade L1ERC20Bridge.\n\nMinor changes only (replacing `require()` with `if(revert()))` and adding docs). [Tally proposal](https://www.tally.xyz/gov/zksync/proposal/39897055470405054808751466940888279812739313934036970931300785151980460250983?govId=eip155:324:0x76705327e682F2d96943280D99464Ab61219e34f).",
"isHighSeverity": true,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1ERC20Bridge (0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063) {\n +++ description: None\n sourceHashes.1:\n- \"0xddcdd4b758b565f39e4924d6a66afc27850a66e5f1022fb1c008d10f85af1028\"\n+ \"0x179b79e02a71cc452486d433271b925a402363053a3dd4e9d83837877c677dfd\"\n values.$implementation:\n- \"0x8191975d8B0851C7f0740918896Cf298c09aA05E\"\n+ \"0x8D231E4097C3cb200Ed62134B466AA615cE60336\"\n values.$pastUpgrades.8:\n+ [\"2025-01-08T16:00:35.000Z\",\"0xc90d135e4b8ab58304853f3be34b2fefd18c2a817d3d250e7b669e024d5277c5\",[\"0x8D231E4097C3cb200Ed62134B466AA615cE60336\"]]\n values.$upgradeCount:\n- 8\n+ 9\n }\n```"
}
]
},
{
"id": "3536a722",
"date": "Sun, 15 Sep 2024 09:49:19 GMT",
"timestamp": 1726393759,
"description": "",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Governance (0x0b622A2061EaccAE1c664eBC3E868b8438e03F61)\n +++ description: None\n```"
}
]
},
{
"id": "2ed0a950",
"date": "Tue, 06 Aug 2024 12:34:21 GMT",
"timestamp": 1722947661,
"description": "The admin- and protocolVersion of ZKsync diamond are changed. (No code changes)\nThe new ChainAdmin is used as admin (but is owned by the known Matter Labs Multisig), so there are no net changes in permissions.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ZKsync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n +++ description: None\n values.getAdmin:\n- \"0x0b622A2061EaccAE1c664eBC3E868b8438e03F61\"\n+ \"0x2cf3bD6a9056b39999F3883955E183F655345063\"\n+++ description: Protocol version, increments with each protocol change\n+++ severity: MEDIUM\n values.getProtocolVersion:\n- 103079215105\n+ 103079215106\n values.getSemverProtocolVersion.2:\n- 1\n+ 2\n }\n```"
}
]
},
{
"id": "8cc91fd6",
"date": "Fri, 26 Jul 2024 08:58:17 GMT",
"timestamp": 1721984297,
"description": "Matter Labs Multisig changes one signer, and removes another.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Matter Labs Multisig (0x4e4943346848c4867F81dFb37c4cA9C5715A7828) {\n +++ description: Can instantly upgrade all contracts and roles in the zksync Era contracts\n values.$multisigThreshold:\n- \"4 of 8 (50%)\"\n+ \"4 of 7 (57%)\"\n+++ description: Signers of the multisig\n+++ type: PERMISSION\n+++ severity: LOW\n values.getOwners.7:\n- \"0x700DA14328eC2F81053E5B6aAE4803E16BEdF1df\"\n+++ description: Signers of the multisig\n+++ type: PERMISSION\n+++ severity: LOW\n values.getOwners.6:\n- \"0x1567AC0764142e91aB0A9C65C568f0DbE9E168BF\"\n+ \"0x700DA14328eC2F81053E5B6aAE4803E16BEdF1df\"\n+++ description: Signers of the multisig\n+++ type: PERMISSION\n+++ severity: LOW\n values.getOwners.5:\n- \"0x9dF8bc0918F357c766A5697E031fF5237c05747A\"\n+ \"0xfd03dA3aeb6807a98db96C1704Ea4CFf031BaEd2\"\n+++ description: Signers of the multisig\n+++ type: PERMISSION\n+++ severity: LOW\n values.getOwners.4:\n- \"0x702caCafA54B88e9c54449563Fb2e496e85c78b7\"\n+ \"0x9dF8bc0918F357c766A5697E031fF5237c05747A\"\n+++ description: Signers of the multisig\n+++ type: PERMISSION\n+++ severity: LOW\n values.getOwners.3:\n- \"0x84298D79ad2CD4eC0d9Ca1959F9d9f40Bc07152f\"\n+ \"0x702caCafA54B88e9c54449563Fb2e496e85c78b7\"\n }\n```"
}
]
},
{
"id": "46b76210",
"date": "Fri, 07 Jun 2024 14:02:15 GMT",
"timestamp": 1717768935,
"description": "Upgrade v24 - VM version 1.5.0. (was initially scheduled for May 13)\n\n[CHANGELOG](https://github.com/zkSync-Community-Hub/zksync-developers/discussions/519)\n\nMain points:\n- New shared L1 escrow and Bridgehub for zkSync Era and all future ZK stack chains \n- New StateTransitionManager (shared proof verification for ZK stack chains with the same EVM implementation, currently only one)\n\n### New architecture summary\n\nEach ZK stack chain including zkSync Era has its own diamond contract similar to the old model, with all chain-specific logic inside. ZK stack chains with the same EVM logic can share a State Transition Manager (STM), which is responsible for proof verification for each connected chain. The multiple future STMs in turn are connected through the single Bridgehub, which allows L1 to L2 and L2 to L2 message passing. Below it is the shared bridge for all registered ZK stack chains.\n\n### Changes to the zkSync Era diamond\n#### AdminFacet.sol\n\n- L1--> L2 Transaction filtering (can set tx filtering contract)\n- Governor role removed (onlyGovernor functions are now mostly onlySTM)\n- VerifierParams moved to STM\n- Support for custom native token ('basetoken')\n- Function `upgradeChainFromVersion()` added: Allows to upgrade the diamond with preformed calldata (can be used for synchronous upgrading of multiple chains in the future)\n\n#### ExecutorFacet.sol\n\n- Support for more Blobs in one transaction (6, up from 2)\n- ChainID can be added to committing, proving, executing, reverting of batches\n- `PubdataPricingMode.Validium` implemented (was not usable before)\n- New upgrade logic in `commitBatches()`: L2 upgrade will be logged on L1\n\n### MailBoxFacet.sol\n\n- New function `transferEthToSharedBridge()` can be used to move all ETH to a shared bridge by the `BaseTokenBridge` address\n- `requestL2Transaction()` is still available, but can also be accessed via Bridgehub",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n +++ description: None\n values.getL2SystemContractsUpgradeBatchNumber:\n- 484290\n+ 0\n values.getL2SystemContractsUpgradeBlockNumber:\n- 484290\n+ 0\n values.getL2SystemContractsUpgradeTxHash:\n- \"0xb88380066d84222045097f0fad44e876c361dc27f5367d46decb294ba1a7d29c\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "6a5eae28",
"date": "Thu, 06 Jun 2024 16:52:10 GMT",
"timestamp": 1717692730,
"description": "Provide description of changes. This section will be preserved.",
"isHighSeverity": true,
"changeCount": 118,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n +++ description: None\n upgradeability.facets.3:\n- \"0xfd3779e6214eBBd40f5F5890351298e123A46BA6\"\n+ \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n upgradeability.facets.2:\n- \"0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7\"\n+ \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n upgradeability.facets.1:\n- \"0x10113bB3a8e64f8eD67003126adC8CE74C34610c\"\n+ \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n upgradeability.facets.0:\n- \"0x230214F0224C7E0485f348a79512ad00514DB1F7\"\n+ \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n implementations.3:\n- \"0xfd3779e6214eBBd40f5F5890351298e123A46BA6\"\n+ \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n implementations.2:\n- \"0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7\"\n+ \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n implementations.1:\n- \"0x10113bB3a8e64f8eD67003126adC8CE74C34610c\"\n+ \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n implementations.0:\n- \"0x230214F0224C7E0485f348a79512ad00514DB1F7\"\n+ \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n values.facetAddresses.3:\n- \"0xfd3779e6214eBBd40f5F5890351298e123A46BA6\"\n+ \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n values.facetAddresses.2:\n- \"0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7\"\n+ \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n values.facetAddresses.1:\n- \"0x10113bB3a8e64f8eD67003126adC8CE74C34610c\"\n+ \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n values.facetAddresses.0:\n- \"0x230214F0224C7E0485f348a79512ad00514DB1F7\"\n+ \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n values.facets.3.1.7:\n+ \"0x0f23da43\"\n values.facets.3.1.6:\n+ \"0x97c09d34\"\n values.facets.3.1.5:\n+ \"0xc37533bb\"\n values.facets.3.1.4:\n+ \"0x7f61885c\"\n values.facets.3.1.3:\n- \"0x97c09d34\"\n+ \"0x6f497ac6\"\n values.facets.3.1.2:\n- \"0x7f61885c\"\n+ \"0xc3d93e7c\"\n values.facets.3.1.1:\n- \"0xc3d93e7c\"\n+ \"0x6edd4f12\"\n values.facets.3.0:\n- \"0xfd3779e6214eBBd40f5F5890351298e123A46BA6\"\n+ \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n values.facets.2.1.7:\n+ \"0xc924de35\"\n values.facets.2.1.6:\n+ \"0xeb672419\"\n values.facets.2.1.5:\n- \"0xeb672419\"\n+ \"0xe4948f43\"\n values.facets.2.1.4:\n- \"0xe4948f43\"\n+ \"0x263b7f8e\"\n values.facets.2.1.3:\n- \"0x263b7f8e\"\n+ \"0x042901c7\"\n values.facets.2.1.2:\n- \"0x042901c7\"\n+ \"0xb473318e\"\n values.facets.2.1.1:\n- \"0xb473318e\"\n+ \"0x6c0960f9\"\n values.facets.2.1.0:\n- \"0x6c0960f9\"\n+ \"0x12f43dab\"\n values.facets.2.0:\n- \"0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7\"\n+ \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n values.facets.1.1.40:\n+ \"0x74f4d30d\"\n values.facets.1.1.39:\n+ \"0xb22dd78e\"\n values.facets.1.1.38:\n+ \"0x56142d7a\"\n values.facets.1.1.37:\n+ \"0x9cd939e4\"\n values.facets.1.1.36:\n+ \"0xfacd743b\"\n values.facets.1.1.35:\n+ \"0xe81e0ba1\"\n values.facets.1.1.34:\n+ \"0xc3bbd2d7\"\n values.facets.1.1.33:\n+ \"0xbd7c5412\"\n values.facets.1.1.32:\n- \"0x74f4d30d\"\n+ \"0x29b98c67\"\n values.facets.1.1.31:\n- \"0xb22dd78e\"\n+ \"0x18e3a941\"\n values.facets.1.1.30:\n- \"0x56142d7a\"\n+ \"0x46657fe9\"\n values.facets.1.1.29:\n- \"0x9cd939e4\"\n+ \"0xa1954fc5\"\n values.facets.1.1.28:\n- \"0xfacd743b\"\n+ \"0xaf6a2dcd\"\n values.facets.1.1.27:\n- \"0xe81e0ba1\"\n+ \"0x39607382\"\n values.facets.1.1.26:\n- \"0xc3bbd2d7\"\n+ \"0xfe26699e\"\n values.facets.1.1.25:\n- \"0xbd7c5412\"\n+ \"0xef3f0bae\"\n values.facets.1.1.24:\n- \"0x29b98c67\"\n+ \"0xb8c2f66f\"\n values.facets.1.1.23:\n- \"0x18e3a941\"\n+ \"0xdb1f0bf9\"\n values.facets.1.1.22:\n- \"0x46657fe9\"\n+ \"0x5518c73b\"\n values.facets.1.1.21:\n- \"0xa1954fc5\"\n+ \"0xf5c1182c\"\n values.facets.1.1.20:\n- \"0xaf6a2dcd\"\n+ \"0x06d49e5b\"\n values.facets.1.1.19:\n- \"0x39607382\"\n+ \"0x33ce93fe\"\n values.facets.1.1.18:\n- \"0xfe26699e\"\n+ \"0x0ec6b0b7\"\n values.facets.1.1.17:\n- \"0xef3f0bae\"\n+ \"0x631f4bac\"\n values.facets.1.1.16:\n- \"0xb8c2f66f\"\n+ \"0xd0468156\"\n values.facets.1.1.15:\n- \"0xdb1f0bf9\"\n+ \"0x7b30c8da\"\n values.facets.1.1.14:\n- \"0x33ce93fe\"\n+ \"0x9d1b5a81\"\n values.facets.1.1.13:\n- \"0x0ec6b0b7\"\n+ \"0xe5355c75\"\n values.facets.1.1.12:\n- \"0x631f4bac\"\n+ \"0xfd791f3c\"\n values.facets.1.1.11:\n- \"0x8665b150\"\n+ \"0xd86970d8\"\n values.facets.1.1.10:\n- \"0x7b30c8da\"\n+ \"0x79823c9a\"\n values.facets.1.1.9:\n- \"0x9d1b5a81\"\n+ \"0x3591c1a0\"\n values.facets.1.1.8:\n- \"0xe5355c75\"\n+ \"0x086a56f8\"\n values.facets.1.1.7:\n- \"0xfd791f3c\"\n+ \"0x98acd7a6\"\n values.facets.1.1.6:\n- \"0xd86970d8\"\n+ \"0x6e9960c3\"\n values.facets.1.1.5:\n- \"0x4fc07d75\"\n+ \"0x7a0ed627\"\n values.facets.1.1.4:\n- \"0x79823c9a\"\n+ \"0xadfca15e\"\n values.facets.1.1.3:\n- \"0x7a0ed627\"\n+ \"0x52ef6b2c\"\n values.facets.1.1.2:\n- \"0xadfca15e\"\n+ \"0xcdffacc6\"\n values.facets.1.1.1:\n- \"0x52ef6b2c\"\n+ \"0xea6c029c\"\n values.facets.1.1.0:\n- \"0xcdffacc6\"\n+ \"0x1de72e34\"\n values.facets.1.0:\n- \"0x10113bB3a8e64f8eD67003126adC8CE74C34610c\"\n+ \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n values.facets.0.1.12:\n+ \"0xfc57565f\"\n values.facets.0.1.11:\n+ \"0x17338945\"\n values.facets.0.1.10:\n- \"0x17338945\"\n+ \"0x4623c91d\"\n values.facets.0.1.9:\n- \"0x4623c91d\"\n+ \"0x21f603d7\"\n values.facets.0.1.8:\n- \"0xbe6f11cf\"\n+ \"0x235d9eb5\"\n values.facets.0.1.7:\n- \"0x1cc5d103\"\n+ \"0xe76db865\"\n values.facets.0.1.6:\n- \"0xf235757f\"\n+ \"0xbe6f11cf\"\n values.facets.0.1.5:\n- \"0x4dd18bf5\"\n+ \"0x1cc5d103\"\n values.facets.0.1.4:\n- \"0x27ae4c16\"\n+ \"0x4dd18bf5\"\n values.facets.0.1.3:\n- \"0xa9f6d941\"\n+ \"0x27ae4c16\"\n values.facets.0.1.2:\n- \"0x64bf8d66\"\n+ \"0xa9f6d941\"\n values.facets.0.1.1:\n- \"0xe58bb639\"\n+ \"0x64bf8d66\"\n values.facets.0.0:\n- \"0x230214F0224C7E0485f348a79512ad00514DB1F7\"\n+ \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n values.getGovernor:\n- \"0x0b622A2061EaccAE1c664eBC3E868b8438e03F61\"\n values.getL2BootloaderBytecodeHash:\n- \"0x010007ede999d096c84553fb514d3d6ca76fbf39789dda76bfeda9f3ae06236e\"\n+ \"0x010008e742608b21bf7eb23c1a9d0602047e3618b464c9b59c0fba3b3d7ab66e\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100055b041eb28aff6e3a6e0f37c31fd053fc9ef142683b05e5f0aee6934066\"\n+ \"0x01000563374c277a2c1e34659a2a1e87371bb6d852ce142022d497bfb50b9e32\"\n values.getL2SystemContractsUpgradeBatchNumber:\n- 0\n+ 484290\n values.getL2SystemContractsUpgradeBlockNumber:\n- 0\n+ 484290\n values.getL2SystemContractsUpgradeTxHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0xb88380066d84222045097f0fad44e876c361dc27f5367d46decb294ba1a7d29c\"\n values.getPendingGovernor:\n- \"0x0000000000000000000000000000000000000000\"\n+++ description: Protocol version, increments with each protocol change\n+++ severity: MEDIUM\n values.getProtocolVersion:\n- 22\n+ 103079215105\n values.getVerifier:\n- \"0xdd9C826196cf3510B040A8784D85aE36674c7Ed2\"\n+ \"0x70F3FBf8a427155185Ec90BED8a3434203de9604\"\n+++ description: Verifier parameters used for proving batches\n+++ severity: LOW\n values.getVerifierParams.1:\n- \"0x400a4b532c6f072c00d1806ef299300d4c104f4ac55bd8698ade78894fcadc0a\"\n+ \"0xf9664f4324c1400fa5c3822d667f30e873f53f1b8033180cd15fe41c1e2355c6\"\n+++ description: Verifier parameters used for proving batches\n+++ severity: LOW\n values.getVerifierParams.0:\n- \"0x5a3ef282b21e12fe1f4438e5bb158fc5060b160559c5158c6389d62d9fe3d080\"\n+ \"0xf520cd5b37e74e19fdb369c8d676a04dce8a19457497ac6686d2bb95d94109c8\"\n values.baseTokenGasPriceMultiplierDenominator:\n+ 1\n values.baseTokenGasPriceMultiplierNominator:\n+ 1\n values.getAdmin:\n+ \"0x0b622A2061EaccAE1c664eBC3E868b8438e03F61\"\n values.getBaseToken:\n+ \"0x0000000000000000000000000000000000000001\"\n values.getBaseTokenBridge:\n+ \"0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB\"\n values.getBridgehub:\n+ \"0x303a465B659cBB0ab36eE643eA362c509EEb5213\"\n values.getPendingAdmin:\n+ \"0x0000000000000000000000000000000000000000\"\n values.getPubdataPricingMode:\n+ 0\n values.getSemverProtocolVersion:\n+ [0,24,1]\n values.getStateTransitionManager:\n+ \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n }\n```\n\n```diff\n contract L1ERC20Bridge (0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063) {\n +++ description: None\n upgradeability.implementation:\n- \"0x810c6598CAaA08B61f6430Df5a8e120B3390d78A\"\n+ \"0x8191975d8B0851C7f0740918896Cf298c09aA05E\"\n upgradeability.admin:\n- \"0x0b622A2061EaccAE1c664eBC3E868b8438e03F61\"\n+ \"0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1\"\n implementations.0:\n- \"0x810c6598CAaA08B61f6430Df5a8e120B3390d78A\"\n+ \"0x8191975d8B0851C7f0740918896Cf298c09aA05E\"\n values.SHARED_BRIDGE:\n+ \"0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0xdd9C826196cf3510B040A8784D85aE36674c7Ed2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract BridgeHub (0x303a465B659cBB0ab36eE643eA362c509EEb5213)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GenesisUpgrade (0x3dDD7ED2AeC0758310A4C6596522FCAeD108DdA2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock_NEW (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\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 WETH9 (0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract StateTransitionManager (0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1SharedBridge (0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB)\n +++ description: None\n```"
}
]
},
{
"id": "97dfc2d4",
"date": "Wed, 10 Apr 2024 09:02:17 GMT",
"timestamp": 1712739737,
"description": "Add wstETH escrow governed by Lido.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract L1ERC20Bridge_wstETH (0x41527B2d03844dB6b0945f25702cB958b6d55989)\n +++ description: None\n```"
}
]
},
{
"id": "9dbc9655",
"date": "Wed, 13 Mar 2024 11:11:36 GMT",
"timestamp": 1710328296,
"description": "A verification parameter named recursionLeafLevelVkHash is updated suggesting a change in how the verifier should prove batches.\nProtocol version is updated from 21 to 22.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n +++ description: None\n+++ description: Protocol version, increments with each protocol change\n+++ severity: MEDIUM\n values.getProtocolVersion:\n- 21\n+ 22\n+++ description: Verifier parameters used for proving batches\n+++ severity: LOW\n values.getVerifierParams.1:\n- \"0x062362cb3eaf1f631406cbe19bf2a2c5d0d9ea69d069309a6003addae9f387be\"\n+ \"0x400a4b532c6f072c00d1806ef299300d4c104f4ac55bd8698ade78894fcadc0a\"\n }\n```"
}
]
},
{
"id": "e467f488",
"date": "Tue, 12 Mar 2024 12:09:43 GMT",
"timestamp": 1710245383,
"description": "### ZkSync\n\nProtocol version was updated from 20 to 21.\n\n#### Executor\n\nThis upgrade introduces logic allowing the use of EIP-4844 blobs for data availability, also keeping calldata as an option. L2 contracts where updated with batch 459581.\n\n### ValidatorTimelock\n\nAllows to whitelist multiple validators (rather than only 1).\n\n### Verifier\n\nNew keys",
"isHighSeverity": false,
"changeCount": 25,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n +++ description: None\n upgradeability.facets.3:\n- \"0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a\"\n+ \"0xfd3779e6214eBBd40f5F5890351298e123A46BA6\"\n upgradeability.facets.2:\n- \"0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB\"\n+ \"0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7\"\n upgradeability.facets.1:\n- \"0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B\"\n+ \"0x10113bB3a8e64f8eD67003126adC8CE74C34610c\"\n upgradeability.facets.0:\n- \"0xE6426c725cB507168369c10284390E59d91eC821\"\n+ \"0x230214F0224C7E0485f348a79512ad00514DB1F7\"\n implementations.3:\n- \"0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a\"\n+ \"0xfd3779e6214eBBd40f5F5890351298e123A46BA6\"\n implementations.2:\n- \"0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB\"\n+ \"0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7\"\n implementations.1:\n- \"0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B\"\n+ \"0x10113bB3a8e64f8eD67003126adC8CE74C34610c\"\n implementations.0:\n- \"0xE6426c725cB507168369c10284390E59d91eC821\"\n+ \"0x230214F0224C7E0485f348a79512ad00514DB1F7\"\n values.facetAddresses.3:\n- \"0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a\"\n+ \"0xfd3779e6214eBBd40f5F5890351298e123A46BA6\"\n values.facetAddresses.2:\n- \"0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB\"\n+ \"0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7\"\n values.facetAddresses.1:\n- \"0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B\"\n+ \"0x10113bB3a8e64f8eD67003126adC8CE74C34610c\"\n values.facetAddresses.0:\n- \"0xE6426c725cB507168369c10284390E59d91eC821\"\n+ \"0x230214F0224C7E0485f348a79512ad00514DB1F7\"\n values.facets.3.0:\n- \"0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a\"\n+ \"0xfd3779e6214eBBd40f5F5890351298e123A46BA6\"\n values.facets.2.0:\n- \"0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB\"\n+ \"0xA57F9FFD65fC0F5792B5e958dF42399a114EC7e7\"\n values.facets.1.0:\n- \"0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B\"\n+ \"0x10113bB3a8e64f8eD67003126adC8CE74C34610c\"\n values.facets.0.0:\n- \"0xE6426c725cB507168369c10284390E59d91eC821\"\n+ \"0x230214F0224C7E0485f348a79512ad00514DB1F7\"\n values.getL2BootloaderBytecodeHash:\n- \"0x010007ed0e328b940e241f7666a6303b7ffd4e3fd7e8c154d6e7556befe6cd6d\"\n+ \"0x010007ede999d096c84553fb514d3d6ca76fbf39789dda76bfeda9f3ae06236e\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100055b7a8be90522251be8be1a186464d056462973502ac8a0437c85e4d2a9\"\n+ \"0x0100055b041eb28aff6e3a6e0f37c31fd053fc9ef142683b05e5f0aee6934066\"\n values.getProtocolVersion:\n- 20\n+ 21\n values.getVerifier:\n- \"0x3390051435eCB25a9610A1cF17d1BA0a228A0560\"\n+ \"0xdd9C826196cf3510B040A8784D85aE36674c7Ed2\"\n values.validators.0:\n- \"0xa0425d71cB1D6fb80E65a5361a04096E0672De03\"\n+ \"0xa8CB082A5a689E0d594d7da1E2d72A3D63aDc1bD\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0x3390051435eCB25a9610A1cF17d1BA0a228A0560)\n +++ description: None\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (0xa0425d71cB1D6fb80E65a5361a04096E0672De03)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0xa8CB082A5a689E0d594d7da1E2d72A3D63aDc1bD)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xdd9C826196cf3510B040A8784D85aE36674c7Ed2)\n +++ description: None\n```"
}
]
},
{
"id": "77bfaab6",
"date": "Wed, 21 Feb 2024 10:47:09 GMT",
"timestamp": 1708512429,
"description": "Updated the SafeERC20 library. Deprecated some methods.",
"isHighSeverity": true,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1ERC20Bridge (0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063) {\n upgradeability.implementation:\n- \"0x79Cc1DF74Ac2d1B0876498C9FcE32c7e34F57B43\"\n+ \"0x810c6598CAaA08B61f6430Df5a8e120B3390d78A\"\n implementations.0:\n- \"0x79Cc1DF74Ac2d1B0876498C9FcE32c7e34F57B43\"\n+ \"0x810c6598CAaA08B61f6430Df5a8e120B3390d78A\"\n }\n```"
}
]
},
{
"id": "2f064657",
"date": "Thu, 08 Feb 2024 08:13:36 GMT",
"timestamp": 1707380016,
"description": "Overall big picture change is that factors used to calculate `gasPrice` can now\nbe changed by the governor and are not hardcoded.\n\n### ZkSync\n\n#### Base\n\nRevert in `onlyGovernorOrAdmin` with error code instead of a message.\nAdded some comments.\n\n### Admin\n\nNew function (`changeFeeParams`) callable only by the governor.\nIt overwrites data used to calculate the gasPrice for the L1 -> L2 tx.\n\n### Diamond\n\nThe variable `DIAMOND_INIT_SUCCESS_RETURN_VALUE` changed from `constant` to `internal`.\nAnd `DIAMOND_STORAGE_POSITION` changed from `constant` to `private`.\n\n### PriorityQueue\n\nSuperfluous, basically comments.\n\n### Config\n\nRemoved a bunch of configuration values:\n\n```solidity\nuint256 constant INITIAL_STORAGE_CHANGE_SERIALIZE_SIZE = 64;\nuint256 constant MAX_INITIAL_STORAGE_CHANGES_COMMITMENT_BYTES = 4 + INITIAL_STORAGE_CHANGE_SERIALIZE_SIZE * 4765;\nuint256 constant REPEATED_STORAGE_CHANGE_SERIALIZE_SIZE = 40;\nuint256 constant MAX_REPEATED_STORAGE_CHANGES_COMMITMENT_BYTES = 4 + REPEATED_STORAGE_CHANGE_SERIALIZE_SIZE * 7564;\nuint256 constant UPGRADE_NOTICE_PERIOD = 0;\nuint256 constant MAX_PUBDATA_PER_BATCH = 110000;\nuint256 constant PRIORITY_TX_MAX_PUBDATA = 99000;\nuint256 constant FAIR_L2_GAS_PRICE = 500000000;\nuint256 constant BATCH_OVERHEAD_L2_GAS = 1200000;\nuint256 constant BATCH_OVERHEAD_L1_GAS = 1000000;\nuint256 constant BATCH_OVERHEAD_PUBDATA = BATCH_OVERHEAD_L1_GAS / L1_GAS_PER_PUBDATA_BYTE;\nuint256 constant MAX_TRANSACTIONS_IN_BATCH = 1024;\nuint256 constant BOOTLOADER_TX_ENCODING_SPACE = 8740224;\n```\n\nThe value `L2_TX_MAX_GAS_LIMIT` is not renamed to `MAX_GAS_PER_TRANSACTION`.\n\nAdded two new configuration values:\n\n```solidity\nuint256 constant TX_SLOT_OVERHEAD_L2_GAS = 10000; // overhead for a transaction slot in L2 gas\nuint256 constant MEMORY_OVERHEAD_GAS = 10; // overhead for each byte of the bootloader memory\n```\n\n### Storage\n\nIntroduced `PubdataPricingMode` enum and `FeeParams` structure that uses that\nenum. It seems like `FeeParams` is there to allow the governor to overwrite the\ngas pricing/gas amounts on things that were before constant and are not removed\nfrom the Config. The enum `PubdataPricingMode` is just a switch between\n`Rollup` and `Validium`.\n\nDeprecated the `totalDepositedAmountPerUser` field.\n\n### Getters\n\nOnly changes are comments, or the structure of imports is different.\n\n### Math\n\nSyntax/formatting changes - (like `x * 8` changed to `x << 3`) - or comments.\n\n### L2ContractHelper\n\nThe constant `CREATE2_PREFIX` is now `private`.\n\n### L2ContractAddresses\n\nRemoved `L2_BYTECODE_COMPRESSOR_SYSTEM_CONTRACT_ADDR`.\n\n### Mailbox\n\nAdditional comments, syntax/formatting changes. The `_deriveL2GasPrice()`\nfunction now uses `FeeParams` to derive the gas price.\n\n### Executor\n\nAdditional comments, syntax/formatting changes. Removed a helper function\n`_maxU256()`. In `_createBatchCommitment()` the result now includes four zero\nbytes32, described as to be replaced with EIP4844 commitments.\n\n### Verifier\n\nTwo out of eight gate setup commitments changed and added some comments.",
"isHighSeverity": false,
"changeCount": 32,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n upgradeability.facets.3:\n- \"0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d\"\n+ \"0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a\"\n upgradeability.facets.2:\n- \"0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58\"\n+ \"0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB\"\n upgradeability.facets.1:\n- \"0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7\"\n+ \"0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B\"\n upgradeability.facets.0:\n- \"0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967\"\n+ \"0xE6426c725cB507168369c10284390E59d91eC821\"\n implementations.3:\n- \"0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d\"\n+ \"0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a\"\n implementations.2:\n- \"0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58\"\n+ \"0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB\"\n implementations.1:\n- \"0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7\"\n+ \"0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B\"\n implementations.0:\n- \"0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967\"\n+ \"0xE6426c725cB507168369c10284390E59d91eC821\"\n values.facetAddresses.3:\n- \"0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d\"\n+ \"0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a\"\n values.facetAddresses.2:\n- \"0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58\"\n+ \"0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB\"\n values.facetAddresses.1:\n- \"0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7\"\n+ \"0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B\"\n values.facetAddresses.0:\n- \"0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967\"\n+ \"0xE6426c725cB507168369c10284390E59d91eC821\"\n values.facets.3.0:\n- \"0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d\"\n+ \"0x3a4ef67C6cAb51444E5d3861843F7f4a37F64F0a\"\n values.facets.2.0:\n- \"0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58\"\n+ \"0x0f58Fd6c9Ed966e09C1dFFBc8E6FF600ec65f6eB\"\n values.facets.1.0:\n- \"0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7\"\n+ \"0xc4a5e861df9DD9495f8Dba1c260913d1A9b8Ec2B\"\n values.facets.0.1[10]:\n+ \"0x17338945\"\n values.facets.0.1.9:\n- \"0x17338945\"\n+ \"0x4623c91d\"\n values.facets.0.1.8:\n- \"0x4623c91d\"\n+ \"0xbe6f11cf\"\n values.facets.0.1.7:\n- \"0xbe6f11cf\"\n+ \"0x1cc5d103\"\n values.facets.0.1.6:\n- \"0x1cc5d103\"\n+ \"0xf235757f\"\n values.facets.0.1.5:\n- \"0xf235757f\"\n+ \"0x4dd18bf5\"\n values.facets.0.1.4:\n- \"0x4dd18bf5\"\n+ \"0x27ae4c16\"\n values.facets.0.1.3:\n- \"0x27ae4c16\"\n+ \"0xa9f6d941\"\n values.facets.0.1.2:\n- \"0xa9f6d941\"\n+ \"0x64bf8d66\"\n values.facets.0.0:\n- \"0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967\"\n+ \"0xE6426c725cB507168369c10284390E59d91eC821\"\n values.getL2BootloaderBytecodeHash:\n- \"0x01000831ba7021800f5d9103772fcc7463ed7e764a2a3624cacca6b3826172d0\"\n+ \"0x010007ed0e328b940e241f7666a6303b7ffd4e3fd7e8c154d6e7556befe6cd6d\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100055bf7f1bc4237c2be24252fb6737cc235194139e544933c1dbf25c24ee8\"\n+ \"0x0100055b7a8be90522251be8be1a186464d056462973502ac8a0437c85e4d2a9\"\n values.getProtocolVersion:\n- 19\n+ 20\n values.getVerifier:\n- \"0xB465882F67d236DcC0D090F78ebb0d838e9719D8\"\n+ \"0x3390051435eCB25a9610A1cF17d1BA0a228A0560\"\n values.getVerifierParams.1:\n- \"0x14628525c227822148e718ca1138acfc6d25e759e19452455d89f7f610c3dcb8\"\n+ \"0x062362cb3eaf1f631406cbe19bf2a2c5d0d9ea69d069309a6003addae9f387be\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0xB465882F67d236DcC0D090F78ebb0d838e9719D8) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x3390051435eCB25a9610A1cF17d1BA0a228A0560) {\n }\n```"
}
]
},
{
"id": "54f097de",
"date": "Tue, 09 Jan 2024 10:44:03 GMT",
"timestamp": 1704797043,
"description": "Overall seems like a step towards introducing a security council.\nThe Governance contract is improved and written in a way that allows to simply set the security councils address and increase the minimum delay.\nAny reference to AllowList has been deleted in favour of Governance.\nRemoved the deposit limit.\n\n### L1ERC20Bridge\n\nWhen calling `deposit()`, `claimFailedDeposit()` and `finalizeWithdrawal()` the `senderCanCallFunction()` modifier has been removed.\nIn the first two functions the call to `_verifyDepositLimit()` is no longer being made because the function has been removed.\n\n### zkSync\n\n- Admin facet: setting a new pending admin is done by governor only instead of governor or admin.\n- Getters facet: everything related to AllowList is removed.\n- Mailbox facet: when calling `finalizeEthWithdrawal()`, `requestL2Transaction()` the `senderCanCallFunction()` modifier has been removed. In the latter function the call to `_verifyDepositLimit()` is removed.\n\n### Governance\n\nA new contract admin of L1ERC20Bridge and ValidatorTimelock.\nOwned by zkSync Era Multisig, securityCouncil set to zero.\nOwner can schedule a transparent (you see the upgrade data on-chain) or a shadow (you don't see the upgrade data on-chain) upgrade.\nWhile scheduling an upgrade the owner chooses a delay, that delay has to be bigger than `minDelay` - currently that is set to zero.\nCanceling the upgrade can be done only by the owner.\nThe owner or security council can call `execute()` that performs the upgrade if the delay is up.\nOnly the security council can call `executeInstant()` that performs the upgrade even if the delay is not up.",
"isHighSeverity": true,
"changeCount": 57,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract AllowList (0x0C0dC1171258694635AA50cec5845aC1031cA6d7) {\n }\n```\n\n```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n upgradeability.facets.3:\n- \"0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269\"\n+ \"0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d\"\n upgradeability.facets.2:\n- \"0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\"\n+ \"0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58\"\n upgradeability.facets.1:\n- \"0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\"\n+ \"0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7\"\n upgradeability.facets.0:\n- \"0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\"\n+ \"0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967\"\n implementations.3:\n- \"0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269\"\n+ \"0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d\"\n implementations.2:\n- \"0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\"\n+ \"0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58\"\n implementations.1:\n- \"0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\"\n+ \"0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7\"\n implementations.0:\n- \"0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\"\n+ \"0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967\"\n values.facetAddresses.3:\n- \"0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269\"\n+ \"0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d\"\n values.facetAddresses.2:\n- \"0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\"\n+ \"0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58\"\n values.facetAddresses.1:\n- \"0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\"\n+ \"0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7\"\n values.facetAddresses.0:\n- \"0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\"\n+ \"0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967\"\n values.facets.3.0:\n- \"0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269\"\n+ \"0xc40e5BE1a6D18DdB14268D32dc6075FCf72fF16d\"\n values.facets.2.0:\n- \"0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\"\n+ \"0x2FbF76bAE617cE41AdB9021907F02e2bF187BB58\"\n values.facets.1.1[33]:\n- \"0x74f4d30d\"\n values.facets.1.1.32:\n- \"0xb22dd78e\"\n+ \"0x74f4d30d\"\n values.facets.1.1.31:\n- \"0x56142d7a\"\n+ \"0xb22dd78e\"\n values.facets.1.1.30:\n- \"0x9cd939e4\"\n+ \"0x56142d7a\"\n values.facets.1.1.29:\n- \"0xfacd743b\"\n+ \"0x9cd939e4\"\n values.facets.1.1.28:\n- \"0xe81e0ba1\"\n+ \"0xfacd743b\"\n values.facets.1.1.27:\n- \"0xc3bbd2d7\"\n+ \"0xe81e0ba1\"\n values.facets.1.1.26:\n- \"0xbd7c5412\"\n+ \"0xc3bbd2d7\"\n values.facets.1.1.25:\n- \"0x29b98c67\"\n+ \"0xbd7c5412\"\n values.facets.1.1.24:\n- \"0x18e3a941\"\n+ \"0x29b98c67\"\n values.facets.1.1.23:\n- \"0x46657fe9\"\n+ \"0x18e3a941\"\n values.facets.1.1.22:\n- \"0xa1954fc5\"\n+ \"0x46657fe9\"\n values.facets.1.1.21:\n- \"0xaf6a2dcd\"\n+ \"0xa1954fc5\"\n values.facets.1.1.20:\n- \"0x39607382\"\n+ \"0xaf6a2dcd\"\n values.facets.1.1.19:\n- \"0xfe26699e\"\n+ \"0x39607382\"\n values.facets.1.1.18:\n- \"0xef3f0bae\"\n+ \"0xfe26699e\"\n values.facets.1.1.17:\n- \"0xb8c2f66f\"\n+ \"0xef3f0bae\"\n values.facets.1.1.16:\n- \"0xdb1f0bf9\"\n+ \"0xb8c2f66f\"\n values.facets.1.1.15:\n- \"0x33ce93fe\"\n+ \"0xdb1f0bf9\"\n values.facets.1.1.14:\n- \"0x0ec6b0b7\"\n+ \"0x33ce93fe\"\n values.facets.1.1.13:\n- \"0x631f4bac\"\n+ \"0x0ec6b0b7\"\n values.facets.1.1.12:\n- \"0x8665b150\"\n+ \"0x631f4bac\"\n values.facets.1.1.11:\n- \"0x7b30c8da\"\n+ \"0x8665b150\"\n values.facets.1.1.10:\n- \"0x9d1b5a81\"\n+ \"0x7b30c8da\"\n values.facets.1.1.9:\n- \"0xe5355c75\"\n+ \"0x9d1b5a81\"\n values.facets.1.1.8:\n- \"0xfd791f3c\"\n+ \"0xe5355c75\"\n values.facets.1.1.7:\n- \"0xd86970d8\"\n+ \"0xfd791f3c\"\n values.facets.1.1.6:\n- \"0x4fc07d75\"\n+ \"0xd86970d8\"\n values.facets.1.1.5:\n- \"0x79823c9a\"\n+ \"0x4fc07d75\"\n values.facets.1.1.4:\n- \"0xa7cd63b7\"\n+ \"0x79823c9a\"\n values.facets.1.0:\n- \"0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\"\n+ \"0x5edb1756c0A0F933EB87f9d69DfA1db3167547a7\"\n values.facets.0.0:\n- \"0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\"\n+ \"0xAeA49FCEbe3A93ADaE67FF668C0ac87799537967\"\n values.getAllowList:\n- \"0x0C0dC1171258694635AA50cec5845aC1031cA6d7\"\n values.getGovernor:\n- \"0x4e4943346848c4867F81dFb37c4cA9C5715A7828\"\n+ \"0x0b622A2061EaccAE1c664eBC3E868b8438e03F61\"\n values.getL2BootloaderBytecodeHash:\n- \"0x01000983d4ac4f797cf5c077e022f72284969b13248c2a8e9846f574bdeb5b88\"\n+ \"0x01000831ba7021800f5d9103772fcc7463ed7e764a2a3624cacca6b3826172d0\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x01000651c5ae96f2aab07d720439e42491bb44c6384015e3a08e32620a4d582d\"\n+ \"0x0100055bf7f1bc4237c2be24252fb6737cc235194139e544933c1dbf25c24ee8\"\n values.getProtocolVersion:\n- 18\n+ 19\n }\n```\n\n```diff\n contract L1ERC20Bridge (0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063) {\n upgradeability.implementation:\n- \"0x03F3F3c12e11C2FAA60080bd3F7f80AADF369a33\"\n+ \"0x79Cc1DF74Ac2d1B0876498C9FcE32c7e34F57B43\"\n upgradeability.admin:\n- \"0x4e4943346848c4867F81dFb37c4cA9C5715A7828\"\n+ \"0x0b622A2061EaccAE1c664eBC3E868b8438e03F61\"\n implementations.0:\n- \"0x03F3F3c12e11C2FAA60080bd3F7f80AADF369a33\"\n+ \"0x79Cc1DF74Ac2d1B0876498C9FcE32c7e34F57B43\"\n }\n```\n\n```diff\n contract ValidatorTimelock (0xa0425d71cB1D6fb80E65a5361a04096E0672De03) {\n values.owner:\n- \"0x4e4943346848c4867F81dFb37c4cA9C5715A7828\"\n+ \"0x0b622A2061EaccAE1c664eBC3E868b8438e03F61\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Governance (0x0b622A2061EaccAE1c664eBC3E868b8438e03F61) {\n }\n```"
}
]
},
{
"id": "cdbb5dce",
"date": "Fri, 08 Dec 2023 10:06:01 GMT",
"timestamp": 1702029961,
"description": "The big picture of these changes are the following:\n\n- Migrated Solidity from 0.8.13 to 0.8.20.\n- Moved from working on blocks to working on batches.\n- Any mention to Security Council have been removed, contracts have been simplified basing on that fact\n- Refactor and updates of the verifier algorithm\n\nHere follows a description of changes to each particular contract.\n\n### LibMap\n\nA new library described as \"Library for storage of packed unsigned integers\".\nTaken from open-source solady library package (https://github.com/Vectorized/solady).\nIt's just an gas optimized uint32 array.\nIt seems like they just extracted what they needed from it, because the solady version supports more than just uint32s.\n\n### ValidatorTimelock\n\nUses LibMap to replace a mapping of `uint256 => uint256`, it mapped from the block number to the block timestamp.\nRight now using LibMap they essentially have `uint64 => uint32`, it maps from batch number to the block timestamp.\nThe timestamp is truncated to `uint32`, this will wrap in the year 2106.\nThey have introduced a getter for the timestamp of the block `getCommittedBatchTimestamp`, but it's not used by any of the code.\nIn `executeBatches` the assertion changed from `require(block.timestamp > commitBlockTimestamp + delay)` to `require(block.timestamp >= commitBatchTimestamp + delay)`, now it's inclusive.\n\n### L1ERC20Bridge\n\nMoved to batches, simple renames.\n\n### Diamond\n\nBetter check for facet without code, instead of doing `require(_facet != address(0))` they now do `require(_facet.code.length > 0)`.\nReverts in `_initializeDiamondCut()` will now revert with decoded calldata if it's possible, if not it will just revert with the previous error code.\n\n### Verifier\n\nExtracted an interface into IVerifier.\nVerifier now a single file contract, where before it included `PairingsBn254.sol`, `TranscriptLib.sol`, `Plonk4VerifierWithAccessToDNext.sol`.\nIt was flattened and refactored for readability, but I'm unable to verify that this is the same verification algorithm.\n\n### Storage\n\n`UpgradeStorage upgrades` is now deprecated.\nA new role, called `admin` and `pendingAdmin`.\n\n### Base\n\nRemoved `onlySecurityCouncil` modifier and added `onlyGovernorOrAdmin`.\n\n### AllowList\n\nNew event\n\n```\nevent UpdateDepositLimit(address indexed l1Token, bool depositLimitation, uint256 depositCap);\n```\n\nthat is emitted in the call to this function - that is in AllowList.sol:\n\n```\nfunction setDepositLimit(address _l1Token, bool _depositLimitation, uint256 _depositCap) external onlyOwner\n```\n\n### zkSync\n\nFacets:\n\n- changed from DiamondCut => Admin (0x409560DE546e057ce5bD5dB487EdF2bB5E785baB)\n- same => Getters (0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4)\n- same => Mailbox (0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08)\n- same => Executor (0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269)\n\nThe 5th facet was Governance facet, it was removed so we now have 4 facets instead of 5.\nThe first facet (DiamondCut) has been replaced with Admin.\n\n#### Admin\n\nAdmin is an implementation of IAdmin interface.\nThat interface is a combination of IGovernance and IDiamondCut.\nIAdmin implements the entire IGovernance interface.\nIt also implements parts of the IDiamondCut interface, like `executeUpgrade()`, `freezeDiamond()` and `unfreezeDiamond()`.\nEverything relating to proposal and security council has been removed.\nThe new functions that were in neither of these two interfaces are `setPendingAdmin()` and `acceptAdmin()`.\nImplementation of Admin is a combination of implementations for Governance and DiamondCut facets from before.\n\n#### Getters\n\nThe default IGetters interface has moved to working on batches instead of blocks.\nAdditionally getters for functions referencing Security Council have been removed (since they returned zero addresses either way).\nThe legacy interface is still supported, but it just returns the values in batches.\n\n#### Mailbox\n\nVariable renaming to move to batches instead of blocks\n\n#### Executor\n\nBatch commitment uses three inputs: pass through from batches, meta params and auxiliary output from the batch.\nThe first two, stay the same after the update.\nBut the third input (auxiliary output from the batch) changed most of the input that it takes.\nRight now, the prover verifies both the main and the recursive proof in the same step.\nRefactored the way logs from L2 indicate what they are, instead of different senders use `logKeys` and `logValues`.",
"isHighSeverity": true,
"changeCount": 84,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n upgradeability.facets[4]:\n- \"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"\n upgradeability.facets.3:\n- \"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\"\n+ \"0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269\"\n upgradeability.facets.2:\n- \"0x62aA95ac4740A367746A664C4C69034d52E968EF\"\n+ \"0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\"\n upgradeability.facets.1:\n- \"0x7444DE636699F080cA1C033528D2bB3705B391Ce\"\n+ \"0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\"\n upgradeability.facets.0:\n- \"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\"\n+ \"0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\"\n implementations[4]:\n- \"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"\n implementations.3:\n- \"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\"\n+ \"0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269\"\n implementations.2:\n- \"0x62aA95ac4740A367746A664C4C69034d52E968EF\"\n+ \"0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\"\n implementations.1:\n- \"0x7444DE636699F080cA1C033528D2bB3705B391Ce\"\n+ \"0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\"\n implementations.0:\n- \"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\"\n+ \"0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\"\n values.facetAddresses[4]:\n- \"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\"\n values.facetAddresses.3:\n- \"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\"\n+ \"0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269\"\n values.facetAddresses.2:\n- \"0x62aA95ac4740A367746A664C4C69034d52E968EF\"\n+ \"0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\"\n values.facetAddresses.1:\n- \"0x7444DE636699F080cA1C033528D2bB3705B391Ce\"\n+ \"0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\"\n values.facetAddresses.0:\n- \"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\"\n+ \"0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\"\n values.facets[4]:\n- [\"0x2E64926BE35412f7710A3E097Ba076740bF97CC0\",[\"0xe58bb639\",\"0xf235757f\",\"0x1cc5d103\",\"0xbe6f11cf\",\"0x4623c91d\"]]\n values.facets.3.1.3:\n- \"0xa9a2d18a\"\n+ \"0x97c09d34\"\n values.facets.3.1.2:\n- \"0x7739cbe7\"\n+ \"0x7f61885c\"\n values.facets.3.1.1:\n- \"0xce9dcf16\"\n+ \"0xc3d93e7c\"\n values.facets.3.1.0:\n- \"0x0c4dd810\"\n+ \"0x701f58c5\"\n values.facets.3.0:\n- \"0x7Ed066718Dfb1b2B04D94780Eca92b67ECF3330b\"\n+ \"0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269\"\n values.facets.2.0:\n- \"0x62aA95ac4740A367746A664C4C69034d52E968EF\"\n+ \"0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\"\n values.facets.1.1[34]:\n- \"0x74f4d30d\"\n values.facets.1.1.33:\n- \"0x56142d7a\"\n+ \"0x74f4d30d\"\n values.facets.1.1.32:\n- \"0x9cd939e4\"\n+ \"0xb22dd78e\"\n values.facets.1.1.31:\n- \"0xfacd743b\"\n+ \"0x56142d7a\"\n values.facets.1.1.30:\n- \"0xe81e0ba1\"\n+ \"0x9cd939e4\"\n values.facets.1.1.29:\n- \"0xc3bbd2d7\"\n+ \"0xfacd743b\"\n values.facets.1.1.28:\n- \"0xbd7c5412\"\n+ \"0xe81e0ba1\"\n values.facets.1.1.27:\n- \"0x29b98c67\"\n+ \"0xc3bbd2d7\"\n values.facets.1.1.26:\n- \"0x3db920ce\"\n+ \"0xbd7c5412\"\n values.facets.1.1.25:\n- \"0x18e3a941\"\n+ \"0x29b98c67\"\n values.facets.1.1.24:\n- \"0x46657fe9\"\n+ \"0x18e3a941\"\n values.facets.1.1.23:\n- \"0xa39980a0\"\n+ \"0x46657fe9\"\n values.facets.1.1.18:\n- \"0x0ef240a0\"\n+ \"0xef3f0bae\"\n values.facets.1.1.17:\n- \"0x33ce93fe\"\n+ \"0xb8c2f66f\"\n values.facets.1.1.16:\n- \"0xe39d3bff\"\n+ \"0xdb1f0bf9\"\n values.facets.1.1.15:\n- \"0x1b60e626\"\n+ \"0x33ce93fe\"\n values.facets.1.1.9:\n- \"0xfd791f3c\"\n+ \"0xe5355c75\"\n values.facets.1.1.8:\n- \"0xd86970d8\"\n+ \"0xfd791f3c\"\n values.facets.1.1.7:\n- \"0x4fc07d75\"\n+ \"0xd86970d8\"\n values.facets.1.1.6:\n- \"0x79823c9a\"\n+ \"0x4fc07d75\"\n values.facets.1.1.5:\n- \"0xfe10226d\"\n+ \"0x79823c9a\"\n values.facets.1.0:\n- \"0x7444DE636699F080cA1C033528D2bB3705B391Ce\"\n+ \"0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\"\n values.facets.0.1[9]:\n+ \"0x17338945\"\n values.facets.0.1[8]:\n+ \"0x4623c91d\"\n values.facets.0.1.7:\n- \"0x587809c7\"\n+ \"0xbe6f11cf\"\n values.facets.0.1.6:\n- \"0x17338945\"\n+ \"0x1cc5d103\"\n values.facets.0.1.5:\n- \"0xbeda4b12\"\n+ \"0xf235757f\"\n values.facets.0.1.4:\n- \"0x8043760a\"\n+ \"0x4dd18bf5\"\n values.facets.0.1.3:\n- \"0x0551448c\"\n+ \"0x27ae4c16\"\n values.facets.0.1.2:\n- \"0x27ae4c16\"\n+ \"0xa9f6d941\"\n values.facets.0.1.1:\n- \"0x36d4eb84\"\n+ \"0xe58bb639\"\n values.facets.0.1.0:\n- \"0x73fb9297\"\n+ \"0x0e18b681\"\n values.facets.0.0:\n- \"0xdC7c3D03845EfE2c4a9E758A70a68BA6bba9FaC4\"\n+ \"0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\"\n values.getAllowList:\n- \"0x8ffd57A9B2dcc10327768b601468FA192adC5C86\"\n+ \"0x0C0dC1171258694635AA50cec5845aC1031cA6d7\"\n values.getCurrentProposalId:\n- 11\n values.getL2BootloaderBytecodeHash:\n- \"0x0100089b8a2f2e6a20ba28f02c9e0ed0c13d702932364561a0ea61621f65f0a8\"\n+ \"0x01000983d4ac4f797cf5c077e022f72284969b13248c2a8e9846f574bdeb5b88\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100067d16a5485875b4249040bf421f53e869337fe118ec747cf40a4c777e5f\"\n+ \"0x01000651c5ae96f2aab07d720439e42491bb44c6384015e3a08e32620a4d582d\"\n values.getProposedUpgradeHash:\n- \"0x31e9893a0c33de66bfd89adc9068af6500d315f89c83cb52f018b8dd002faa6c\"\n values.getProposedUpgradeTimestamp:\n- 1701681527\n values.getProtocolVersion:\n- 17\n+ 18\n values.getSecurityCouncil:\n- \"0x0000000000000000000000000000000000000000\"\n values.getUpgradeProposalState:\n- 1\n values.getVerifier:\n- \"0x3F04F86f14aB74953fDAEde8175e0714eB8e798e\"\n+ \"0xB465882F67d236DcC0D090F78ebb0d838e9719D8\"\n values.getVerifierParams.2:\n- \"0x18c1639094f58177409186e8c48d9f577c9410901d2f1d486b3e7d6cf553ae4c\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n values.getVerifierParams.1:\n- \"0x101e08b00193e529145ee09823378ef51a3bc8966504064f1f6ba3f1ba863210\"\n+ \"0x14628525c227822148e718ca1138acfc6d25e759e19452455d89f7f610c3dcb8\"\n values.getVerifierParams.0:\n- \"0x1186ec268d49f1905f8d9c1e9d39fc33e98c74f91d91a21b8f7ef78bd09a8db8\"\n+ \"0x5a3ef282b21e12fe1f4438e5bb158fc5060b160559c5158c6389d62d9fe3d080\"\n values.isApprovedBySecurityCouncil:\n- false\n values.validators.0:\n- \"0x3dB52cE065f728011Ac6732222270b3F2360d919\"\n+ \"0xa0425d71cB1D6fb80E65a5361a04096E0672De03\"\n values.getL2SystemContractsUpgradeBatchNumber:\n+ 0\n values.getTotalBatchesCommitted:\n+ 336365\n values.getTotalBatchesExecuted:\n+ 335480\n values.getTotalBatchesVerified:\n+ 336239\n values.storedBatchHash:\n+ [\"0x0ac272ab86763ec2bc093492128eb0bb7afac0ddb385e4ceb2fdb107f2946f2b\",\"0x476876ca9c9fa49b1390ae47a04f7434936b77c22af7a055077f2e3486e6fb65\",\"0x41de068e7043f90c7a5b6c9c80251979c333dc931859a2ec10ef17c9032db250\",\"0x545ada4b4f784c3a471137da517a9f99ae401c7daa63d951a20222605b12ccbf\",\"0xdf353be1f590760d533530c19b53309dde820f3c962a5317c89bcd299130c834\"]\n errors:\n+ {\"storedBatchHash\":\"Too many values. Update configuration to explore fully\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (0x3dB52cE065f728011Ac6732222270b3F2360d919) {\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0x3F04F86f14aB74953fDAEde8175e0714eB8e798e) {\n }\n```\n\n```diff\n contract L1ERC20Bridge (0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063) {\n upgradeability.implementation:\n- \"0x7FB17101A744e156e63d5fF6A4775fb48756577c\"\n+ \"0x03F3F3c12e11C2FAA60080bd3F7f80AADF369a33\"\n implementations.0:\n- \"0x7FB17101A744e156e63d5fF6A4775fb48756577c\"\n+ \"0x03F3F3c12e11C2FAA60080bd3F7f80AADF369a33\"\n }\n```\n\n```diff\n- Status: DELETED\n contract AllowList (0x8ffd57A9B2dcc10327768b601468FA192adC5C86) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract AllowList (0x0C0dC1171258694635AA50cec5845aC1031cA6d7) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0xa0425d71cB1D6fb80E65a5361a04096E0672De03) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xB465882F67d236DcC0D090F78ebb0d838e9719D8) {\n }\n```"
}
]
},
{
"id": "a022f9e0",
"date": "Mon, 04 Dec 2023 12:52:34 GMT",
"timestamp": 1701694354,
"description": "A new upgrade proposal has been detected.\nImplementations:\nDefaultUpgrade: 0x567e1B57A80a7F048A7402191F96C62730e30dB2\nAdminFacet: 0x409560DE546e057ce5bD5dB487EdF2bB5E785baB\nGettersFacet: 0xF3ACF6a03ea4a914B78Ec788624B25ceC37c14A4\nMailboxFacet: 0x63b5EC36B09384fFA7106A80Ec7cfdFCa521fD08\nExecutorFacet: 0x9e3Fa34a10619fEDd7aE40A3fb86FA515fcfd269",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n values.getCurrentProposalId:\n- 10\n+ 11\n values.getProposedUpgradeHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x31e9893a0c33de66bfd89adc9068af6500d315f89c83cb52f018b8dd002faa6c\"\n values.getProposedUpgradeTimestamp:\n- 0\n+ 1701681527\n values.getUpgradeProposalState:\n- 0\n+ 1\n }\n```"
}
]
},
{
"id": "a09600c9",
"date": "Tue, 21 Nov 2023 15:32:06 GMT",
"timestamp": 1700580726,
"description": "Change in the zkSync Era Multisig owners - one address is removed and another is added.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync Era Multisig (0x4e4943346848c4867F81dFb37c4cA9C5715A7828) {\n values.getOwners.7:\n- \"0xa265146cA40F52cfC439888D0b4291b5440e6769\"\n+ \"0x700DA14328eC2F81053E5B6aAE4803E16BEdF1df\"\n }\n```"
}
]
},
{
"id": "77994965",
"date": "Thu, 02 Nov 2023 07:24:20 GMT",
"timestamp": 1698909860,
"description": "Proposal updates (the upgrade is executed): a verification key has been updated, meaning that the circuit has been updated.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n values.getProposedUpgradeHash:\n- \"0x306f3cc703e0e1ab18693aab35276f2dbc745f5de480cee904d05de511ca8415\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n values.getProposedUpgradeTimestamp:\n- 1698826475\n+ 0\n values.getProtocolVersion:\n- 16\n+ 17\n values.getUpgradeProposalState:\n- 1\n+ 0\n values.getVerifierParams.2:\n- \"0x236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed45\"\n+ \"0x18c1639094f58177409186e8c48d9f577c9410901d2f1d486b3e7d6cf553ae4c\"\n }\n```"
}
]
},
{
"id": "08562fc6",
"date": "Wed, 01 Nov 2023 11:26:01 GMT",
"timestamp": 1698837961,
"description": "A new proposal is detected.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n values.getCurrentProposalId:\n- 9\n+ 10\n values.getProposedUpgradeHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x306f3cc703e0e1ab18693aab35276f2dbc745f5de480cee904d05de511ca8415\"\n values.getProposedUpgradeTimestamp:\n- 0\n+ 1698826475\n values.getUpgradeProposalState:\n- 0\n+ 1\n }\n```"
}
]
},
{
"id": "81da15da",
"date": "Fri, 27 Oct 2023 10:26:34 GMT",
"timestamp": 1698402394,
"description": "A new proposal has been detected.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n values.getCurrentProposalId:\n- 8\n+ 9\n values.getProtocolVersion:\n- 15\n+ 16\n }\n```"
}
]
},
{
"id": "469b08ac",
"date": "Tue, 26 Sep 2023 10:27:16 GMT",
"timestamp": 1695724036,
"description": "",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n values.getProposedUpgradeHash:\n- \"0x7d39289c3d9fd4fd8d86ed97abcdcfe208677042a65de6cccb91dc97e2936be9\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n values.getProposedUpgradeTimestamp:\n- 1695294167\n+ 0\n values.getProtocolVersion:\n- 14\n+ 15\n values.getUpgradeProposalState:\n- 1\n+ 0\n values.getVerifierParams.2:\n- \"0x0a3657f884af32d3a573c5fdb3440c9ac45271ede8c982faeaae7434d032ab3e\"\n+ \"0x236c97bfbe75ff507e03909fae32a78be3a70d1b468b183f430010810284ed45\"\n }\n```\n\n```diff\n contract ValidatorTimelock (0x3dB52cE065f728011Ac6732222270b3F2360d919) {\n values.revertedBlocks:\n+ []\n }\n```"
}
]
},
{
"id": "c5b83aa8",
"date": "Thu, 21 Sep 2023 12:39:16 GMT",
"timestamp": 1695299956,
"description": "",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract zkSync (0x32400084C286CF3E17e7B677ea9583e60a000324) {\n values.getCurrentProposalId:\n- 7\n+ 8\n values.getProposedUpgradeHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x7d39289c3d9fd4fd8d86ed97abcdcfe208677042a65de6cccb91dc97e2936be9\"\n values.getProposedUpgradeTimestamp:\n- 0\n+ 1695294167\n values.getUpgradeProposalState:\n- 0\n+ 1\n }\n```\n\n```diff\n contract zkSync Era Multisig (0x4e4943346848c4867F81dFb37c4cA9C5715A7828) {\n values.getOwners.1:\n- \"0xd7aF418d98C0F8EDbaa407fc30ad10382286F36F\"\n+ \"0xe79af29d618141Ffef951B240b250d47030D56d7\"\n }\n```"
}
]
}
]
+1 -7
{
"changes": [
{
"timestamp": 1679594519,
"type": "code",
"earliest": 1679594519
},
{
"timestamp": 1679598935,
"type": "code",
"earliest": 1679598935
},
{
"timestamp": 1679600999,
"type": "code",
"earliest": 1679600999
},
{
"timestamp": 1682366591,
"type": "code",
"earliest": 1682366591
},
{
"timestamp": 1682426255,
"type": "code",
"earliest": 1682426255
},
{
"timestamp": 1692180911,
"type": "code",
"earliest": 1692180911
},
{
"timestamp": 1692181295,
"type": "code",
"earliest": 1692181295
},
{
"timestamp": 1693297691,
"type": "code",
"earliest": 1693297691
},
{
"timestamp": 1694083991,
"type": "code",
"earliest": 1694083991
},
{
"timestamp": 1695403367,
"type": "code",
"updateId": "469b08ac",
"earliest": 1695403367
},
{
"timestamp": 1697818535,
"type": "code",
"updateId": "81da15da",
"earliest": 1697818535
},
{
"timestamp": 1698856895,
"type": "code",
"updateId": "77994965",
"earliest": 1698856895
},
{
"timestamp": 1701721751,
"type": "code",
"earliest": 1701721751
},
{
"timestamp": 1701721751,
"type": "code",
"updateId": "cdbb5dce",
"earliest": 1701721751
},
{
"timestamp": 1703156615,
"type": "state",
"updateId": "54f097de",
"earliest": 1703156615
},
{
"timestamp": 1703159495,
"type": "code",
"updateId": "54f097de",
"earliest": 1703159495
},
{
"timestamp": 1703242679,
"type": "code",
"earliest": 1703242679
},
{
"timestamp": 1707143447,
"type": "code",
"updateId": "2f064657",
"earliest": 1707143447
},
{
"timestamp": 1707388607,
"type": "code",
"earliest": 1707388607
},
{
"timestamp": 1710167531,
"type": "code",
"updateId": "e467f488",
"earliest": 1710167531
},
{
"timestamp": 1710285383,
"type": "code",
"updateId": "9dbc9655",
"earliest": 1710285383
},
{
"timestamp": 1717674923,
"type": "code",
"updateId": "6a5eae28",
"earliest": 1717674923
},
{
"timestamp": 1717680035,
"type": "code",
"earliest": 1717680035
},
{
"timestamp": 1722934619,
"type": "state",
"updateId": "2ed0a950",
"earliest": 1722934619
},
{
"timestamp": 1722934619,
"type": "state",
"updateId": "3347bf90",
"earliest": 1722934619
},
{
"timestamp": 1722934619,
"type": "code",
"updateId": "3347bf90",
"earliest": 1722934619
},
{
"timestamp": 1722937847,
"type": "code",
"updateId": "2ed0a950",
"earliest": 1722937847
},
{
"timestamp": 1724658671,
"type": "code",
"earliest": 1724658671
},
{
"timestamp": 1725887363,
"type": "code",
"earliest": 1725887363
},
{
"timestamp": 1726123295,
"type": "state",
"updateId": "88d8f58d",
"earliest": 1726123295
},
{
"timestamp": 1726123295,
"type": "state",
"updateId": "88d8f58d",
"earliest": 1726123295
},
{
"timestamp": 1726123295,
"type": "state",
"updateId": "88d8f58d",
"earliest": 1726123295
},
{
"timestamp": 1736352035,
"type": "code",
"earliest": 1736352035
},
{
"timestamp": 1736352035,
"type": "code",
"earliest": 1736352035
},
{
"timestamp": 1736352035,
"type": "code",
"earliest": 1736352035
},
{
"timestamp": 1736352035,
"type": "code",
"earliest": 1736352035
},
{
"timestamp": 1736520959,
"type": "code",
"earliest": 1736520959
},
{
"timestamp": 1736520959,
"type": "state",
"updateId": "59f451bc",
"earliest": 1736520959
},
{
"timestamp": 1740673526,
"type": "state",
"updateId": "d7262d25",
"earliest": 1740673526
},
{
"timestamp": 1741379564,
"type": "state",
"updateId": "616c7305",
"earliest": 1741379564
},
{
"timestamp": 1741630187,
"type": "state",
"updateId": "0819e8b8",
"earliest": 1741630187
},
{
"timestamp": 1741630187,
"type": "state",
"updateId": "0819e8b8",
"earliest": 1741630187
},
{
"timestamp": 1741630187,
"type": "state",
"updateId": "0819e8b8",
"earliest": 1741630187
},
{
"timestamp": 1741766891,
"type": "state",
"updateId": "42eff026",
"earliest": 1741766891
},
{
"timestamp": 1741791551,
"type": "code",
"earliest": 1741791551
},
{
"timestamp": 1741791551,
"type": "state",
"updateId": "5a8ad8b1",
"earliest": 1741791551
},
{
"timestamp": 1743408047,
"type": "code",
"earliest": 1743408047
},
{
"timestamp": 1743408047,
"type": "code",
"earliest": 1743408047
},
{
"timestamp": 1743408047,
"type": "code",
"earliest": 1743408047
},
{
"timestamp": 1743408047,
"type": "code",
"updateId": "ec59e2ee",
"earliest": 1743408047
},
{
"timestamp": 1743408047,
"type": "code",
"updateId": "ec59e2ee",
"earliest": 1743408047
},
{
"timestamp": 1744719383,
"type": "state",
"updateId": "6fa1ad76",
"earliest": 1744719383
},
{
"timestamp": 1744982567,
"type": "state",
"updateId": "0dff75a3",
"earliest": 1744982567
},
{
"timestamp": 1745497499,
"type": "state",
"updateId": "bff2a528",
"earliest": 1745497499
},
{
"timestamp": 1745843591,
"type": "code",
"earliest": 1745843591
},
{
"timestamp": 1745843591,
"type": "code",
"earliest": 1745843591
},
{
"timestamp": 1745843591,
"type": "code",
"earliest": 1745843591
},
{
"timestamp": 1745843591,
"type": "code",
"earliest": 1745843591
},
{
"timestamp": 1745843591,
"type": "code",
"earliest": 1745843591
},
{
"timestamp": 1745843591,
"type": "state",
"updateId": "73803b6d",
"earliest": 1745843591
},
{
"timestamp": 1746446579,
"type": "code",
"updateId": "8c1eeeb8",
"earliest": 1746446579
},
{
"timestamp": 1749497291,
"type": "state",
"updateId": "e4053ebe",
"earliest": 1749497291
},
{
"timestamp": 1750343219,
"type": "code",
"earliest": 1750343219
},
{
"timestamp": 1750343219,
"type": "code",
"earliest": 1750343219
},
{
"timestamp": 1750343219,
"type": "code",
"earliest": 1750343219
},
{
"timestamp": 1750343219,
"type": "code",
"earliest": 1750343219
},
{
"timestamp": 1750343219,
"type": "code",
"earliest": 1750343219
},
{
"timestamp": 1750343219,
"type": "code",
"earliest": 1750343219
},
{
"timestamp": 1750343219,
"type": "state",
"updateId": "702e5f55",
"earliest": 1750343219
},
{
"timestamp": 1750722695,
"type": "code",
"updateId": "0d60433d",
"earliest": 1750722695
},
{
"timestamp": 1753709927,
"type": "state",
"updateId": "8cabc948",
"earliest": 1753709927
},
{
"timestamp": 1754091731,
"type": "code",
"earliest": 1754091731
},
{
"timestamp": 1754091731,
"type": "state",
"updateId": "70c29b00",
"earliest": 1754091731
},
{
"timestamp": 1760519351,
"type": "code",
"earliest": 1760519351
},
{
"timestamp": 1760519351,
"type": "code",
"earliest": 1760519351
},
{
"timestamp": 1760519351,
"type": "code",
"earliest": 1760519351
},
{
"timestamp": 1760519351,
"type": "code",
"earliest": 1760519351
},
{
"timestamp": 1760519351,
"type": "code",
"earliest": 1760519351
},
{
"timestamp": 1760519351,
"type": "code",
"earliest": 1760519351
},
{
"timestamp": 1760519351,
"type": "code",
"earliest": 1760519351
},
{
"timestamp": 1760519351,
"type": "state",
"updateId": "5531704d",
"earliest": 1760519351
},
{
"timestamp": 1760519351,
"type": "state",
"updateId": "5531704d",
"earliest": 1760519351
},
{
"timestamp": 1760519351,
"type": "state",
"updateId": "5531704d",
"earliest": 1760519351
},
{
"timestamp": 1760519471,
"type": "code",
"earliest": 1760519471
},
{
"timestamp": 1761146555,
"type": "code",
"earliest": 1761146555
},
{
"timestamp": 1761146555,
"type": "state",
"updateId": "b0d171bf",
"earliest": 1761146555
},
{
"timestamp": 1764607787,
"type": "state",
"updateId": "7fc79d40",
"earliest": 1764607787
},
{
"timestamp": 1765195612,
"type": "code",
"earliest": 1765195612
},
{
"timestamp": 1769183903,
"type": "code",
"earliest": 1769183903
},
{
"timestamp": 1769183903,
"type": "state",
"updateId": "591f6152",
"earliest": 1769183903
},
{
"timestamp": 1769897051,
"type": "state",
"updateId": "35e6a989",
"earliest": 1769897051
},
{
"timestamp": 1770391415,
"type": "code",
"earliest": 1770391415
},
{
"timestamp": 1770391415,
"type": "state",
"updateId": "fdc9ffaa",
"earliest": 1770391415
},
{
"timestamp": 1777553063,
"type": "state",
"updateId": "af5012ae",
"earliest": 1777553063
},
{
"timestamp": 1779262271,
"type": "state",
"updateId": "ee77660f",
"earliest": 1779262271
},
{
"timestamp": 1784915471,
"type": "code",
"earliest": 1784915471
},
{
"timestamp": 1784915471,
"type": "state",
"updateId": "98f55b94",
"earliest": 1784915471
},
{
"timestamp": 1786208627,
"type": "code",
"earliest": 1786208627
},
{
"timestamp": 1786208627,
"type": "state",
"updateId": "ded67cd2",
"earliest": 1786208627
},
{
"timestamp": 1786873007,
"type": "code",
"earliest": 1786873007
},
{
"timestamp": 1786873007,
"type": "state",
"updateId": "61cc8b2a",
"earliest": 1786873007
},
{
"timestamp": 1790857727,
"type": "code",
"earliest": 1790857727
},
{
"timestamp": 1790857727,
"type": "state",
"updateId": "eb0bad59",
"earliest": 1790857727
}
],
"contracts": [
{
"name": "ValidatorTimelock",
"address": "eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"isVerified": true,
"ossifyingSince": 1790857727,
"codeChangeCount": 1,
"stateChangeCount": 1
"stateChangeCount": 0
},
{
"name": "Diamond",
"address": "eth:0x32400084C286CF3E17e7B677ea9583e60a000324",
"isVerified": true,
"ossifyingSince": 1786873007,
"codeChangeCount": 27,
"stateChangeCount": 16
},
{
"name": "EraDualVerifier",
"address": "eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081",
"isVerified": true,
"ossifyingSince": 1786713431,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "EraVerifierPlonk",
"address": "eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF",
"isVerified": true,
"ossifyingSince": 1786713407,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "EraVerifierFflonk",
"address": "eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9",
"isVerified": true,
"ossifyingSince": 1786713395,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ProtocolUpgradeHandler",
"address": "eth:0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3",
"isVerified": true,
"ossifyingSince": 1779262271,
"codeChangeCount": 2,
"stateChangeCount": 1
},
{
"name": "EraMultisigValidator",
"address": "eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d",
"isVerified": true,
"ossifyingSince": 1777553063,
"codeChangeCount": 0,
"stateChangeCount": 1
},
{
"name": "EmergencyUpgradeBoard",
"address": "eth:0xF73a7dCfa68E52030ec39E41a23DCA51F3aAa111",
"isVerified": true,
"ossifyingSince": 1776678563,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "SecurityCouncil",
"address": "eth:0x59195219d1176E42f8e607e9AC114926D47f9035",
"isVerified": true,
"ossifyingSince": 1776678539,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ProxyAdmin",
"address": "eth:0x0D8d1be440f997bDB9CA44C0140fD12551f99BBB",
"isVerified": true,
"ossifyingSince": 1775666447,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ZkToken",
"address": "zksync:0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E",
"isVerified": true,
"ossifyingSince": 1765195612,
"codeChangeCount": 1,
"stateChangeCount": 1
},
{
"name": "ZkTokenGovernor",
"address": "zksync:0xb83FF6501214ddF40C91C9565d095400f3F45746",
"isVerified": true,
"ossifyingSince": 1764607787,
"codeChangeCount": 0,
"stateChangeCount": 1
},
{
"name": "L1ERC20Bridge",
"address": "eth:0x57891966931Eb4Bb6FB81430E6cE0A03AAbDe063",
"isVerified": true,
"ossifyingSince": 1760519351,
"codeChangeCount": 10,
"stateChangeCount": 0
},
{
"name": "BridgeHub",
"address": "eth:0x303a465B659cBB0ab36eE643eA362c509EEb5213",
"isVerified": true,
"ossifyingSince": 1760519351,
"codeChangeCount": 6,
"stateChangeCount": 5
},
{
"name": "MessageRoot",
"address": "eth:0x5Ce9257755391D1509cD4eC1899d3F88A57BB4aD",
"isVerified": true,
"ossifyingSince": 1760519351,
"codeChangeCount": 2,
"stateChangeCount": 0
},
{
"name": "L1AssetRouter",
"address": "eth:0x8829AD80E425C646DAB305381ff105169FeEcE56",
"isVerified": true,
"ossifyingSince": 1760519351,
"codeChangeCount": 3,
"stateChangeCount": 0
},
{
"name": "L1NativeTokenVault",
"address": "eth:0xbeD1EB542f9a5aA6419Ff3deb921A372681111f6",
"isVerified": true,
"ossifyingSince": 1760519351,
"codeChangeCount": 3,
"stateChangeCount": 0
},
{
"name": "ChainTypeManager",
"address": "eth:0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C",
"isVerified": true,
"ossifyingSince": 1760519351,
"codeChangeCount": 6,
"stateChangeCount": 4
},
{
"name": "L1Nullifier",
"address": "eth:0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB",
"isVerified": true,
"ossifyingSince": 1760519351,
"codeChangeCount": 6,
"stateChangeCount": 2
},
{
"name": "RollupDAManager",
"address": "eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45",
"isVerified": true,
"ossifyingSince": 1760519351,
"codeChangeCount": 0,
"stateChangeCount": 3
},
{
"name": "ChainAssetHandler",
"address": "eth:0xDd5CB8B9037357B4cD37391A073798f8aaB61076",
"isVerified": true,
"ossifyingSince": 1758286391,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ZkProtocolGovernor",
"address": "zksync:0x76705327e682F2d96943280D99464Ab61219e34f",
"isVerified": true,
"ossifyingSince": 1740673526,
"codeChangeCount": 0,
"stateChangeCount": 1
},
{
"name": "RollupL1DAValidator",
"address": "eth:0x72213dfe8CA61B0A782970dCFebFb877778f9119",
"isVerified": true,
"ossifyingSince": 1739108915,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ZkTokenTimelockController",
"address": "zksync:0xe5d21A9179CA2E1F0F327d598D464CcF60d89c3d",
"isVerified": true,
"ossifyingSince": 1739000122,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "Guardians",
"address": "eth:0x600dA620Ab29F41ABC6596a15981e14cE58c86b8",
"isVerified": true,
"ossifyingSince": 1738855979,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ProxyAdmin",
"address": "eth:0x1e4c534e7ce1FF5621Ea506D99b367D7d8EFbE3e",
"isVerified": true,
"ossifyingSince": 1738855967,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ProtocolTimelockController",
"address": "zksync:0x085b8B6407f150D62adB1EF926F7f304600ec714",
"isVerified": true,
"ossifyingSince": 1738853604,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "EraChainAdminProxy",
"address": "eth:0x2cf3bD6a9056b39999F3883955E183F655345063",
"isVerified": true,
"ossifyingSince": 1722434735,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ProxyAdmin",
"address": "eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1",
"isVerified": true,
"ossifyingSince": 1717674923,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ZkTokenProxyAdmin",
"address": "zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC",
"isVerified": true,
"ossifyingSince": 1717674923,
"codeChangeCount": 0,
"stateChangeCount": 0
}
],
"deployments": [
1676315375,
1676370683,
1716317321,
1716317326,
1717520627,
1717520639,
1717520663,
1717521479,
1722434735,
1723144920,
1738853604,
1738855967,
1738855967,
1738855979,
1739000122,
1739000132,
1739108879,
1739108915,
1739109035,
1739109071,
1739109131,
1741679757,
1741679757,
1758286391,
1758289595,
1770639008,
1770639008,
1770639008,
1775666447,
1775666495,
1776678539,
1776678563,
1785170172,
1785170172,
1785170172,
1786353960,
1786353960,
1786353960,
1786713395,
1786713407,
1786713431
],
"observedSince": 1676384520
}