11a44108 (main)
and
928edde4 (PR)
+16 -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* 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": "Abstract Multisig",
"name": "Abstract Multisig",
"description": "A Multisig with 4/8 threshold. \n* Can upgrade **with no delay**\n * EraMultisigValidator [via: ProxyAdmin]\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: ChainAdmin]\n* Can interact with EraMultisigValidator\n * change the members and threshold of the Validator Multisig and set the delay between batch commitment and execution ",
"accounts": [
{
"address": "eth:0x7F3EaB9ccf1d8B9705F7ede895d3b4aC1b631063",
"type": "Contract",
"isVerified": true,
"name": "0x7F3E…1063",
"url": "https://etherscan.io/address/0x7F3EaB9ccf1d8B9705F7ede895d3b4aC1b631063"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x57533344e91d29f927AAEBee364A33633Bd205Ab",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x57533344e91d29f927AAEBee364A33633Bd205Ab"
},
{
"address": "eth:0xFC84E99984A3526dea97c408f5991A5E099f3Da2",
"type": "EOA",
"isVerified": true,
"name": "0xFC84…3Da2",
"url": "https://etherscan.io/address/0xFC84E99984A3526dea97c408f5991A5E099f3Da2"
},
{
"address": "eth:0x58536761C97F5037931b56efeE922471add0eEe8",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x58536761C97F5037931b56efeE922471add0eEe8"
},
{
"address": "eth:0x0807C9f0247084cf1C5aB86A8fb00e7c70Cd27eB",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x0807C9f0247084cf1C5aB86A8fb00e7c70Cd27eB"
},
{
"address": "eth:0x1CdfBDED92D46261837827607e674110Ca5a0575",
"type": "EOA",
"isVerified": true,
"name": "0x1Cdf…0575",
"url": "https://etherscan.io/address/0x1CdfBDED92D46261837827607e674110Ca5a0575"
},
{
"address": "eth:0x325407EEC948b97429068AF0cd8A8D95F06315a4",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x325407EEC948b97429068AF0cd8A8D95F06315a4"
},
{
"address": "eth:0x77D1124E9061d238430Df3F4311111BDf69a4CFA",
"type": "EOA",
"isVerified": true,
"name": "0x77D1…4CFA",
"url": "https://etherscan.io/address/0x77D1124E9061d238430Df3F4311111BDf69a4CFA"
},
{
"address": "eth:0x79CF3eCF9Bbfd793d8Be62ED44D98d9AfA657892",
"type": "Contract",
"isVerified": true,
"name": "Safe",
"url": "https://etherscan.io/address/0x79CF3eCF9Bbfd793d8Be62ED44D98d9AfA657892"
}
],
"discoveryDrivenData": true
},
{
"id": "Matter Labs Multisig",
"name": "Matter Labs Multisig",
"description": "A Multisig with 4/7 threshold. \n* Can upgrade **with no delay**\n * ServerNotifier [via: EraChainAdminProxy → ProxyAdmin]\n* Can interact with BridgeHub\n * create new zk chains (based on the current version), register tokens (ZK cluster Admin role) [via: EraChainAdminProxy]\n* Can interact with ChainTypeManager\n * set the pending admin of this contract and the ServerNotifier contract address (ZK cluster Admin role) [via: EraChainAdminProxy]",
"accounts": [
{
"address": "eth:0x4e4943346848c4867F81dFb37c4cA9C5715A7828",
"type": "Contract",
"isVerified": true,
"name": "0x4e49…7828",
"url": "https://etherscan.io/address/0x4e4943346848c4867F81dFb37c4cA9C5715A7828"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEE7d66B84175cc423900595d1807A0371D66dE46",
"type": "EOA",
"isVerified": true,
"name": "0xEE7d…dE46",
"url": "https://etherscan.io/address/0xEE7d66B84175cc423900595d1807A0371D66dE46"
},
{
"address": "eth:0x3F0009D00cc78979d00Eb635490F23E8d6aCc481",
"type": "EOA",
"isVerified": true,
"name": "0x3F00…c481",
"url": "https://etherscan.io/address/0x3F0009D00cc78979d00Eb635490F23E8d6aCc481"
},
{
"address": "eth:0xC9A814A4dFE108A4d2b0C01abb4c196Ed7FB3D83",
"type": "EOA",
"isVerified": true,
"name": "0xC9A8…3D83",
"url": "https://etherscan.io/address/0xC9A814A4dFE108A4d2b0C01abb4c196Ed7FB3D83"
},
{
"address": "eth:0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc",
"type": "EOA",
"isVerified": true,
"name": "0x3068…d2Bc",
"url": "https://etherscan.io/address/0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc"
},
{
"address": "eth:0xFAdb20191Ab38362C50f52909817B74214CA79AE",
"type": "EOA",
"isVerified": true,
"name": "0xFAdb…79AE",
"url": "https://etherscan.io/address/0xFAdb20191Ab38362C50f52909817B74214CA79AE"
},
{
"address": "eth:0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28",
"type": "EOA",
"isVerified": true,
"name": "0xAf0B…9B28",
"url": "https://etherscan.io/address/0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28"
},
{
"address": "eth:0x7408A268e5E6e8F08917c5b71015F4B9044970C7",
"type": "EOA",
"isVerified": true,
"name": "0x7408…70C7",
"url": "https://etherscan.io/address/0x7408A268e5E6e8F08917c5b71015F4B9044970C7"
}
],
"discoveryDrivenData": true
},
{
"id": "SecurityCouncil",
"name": "SecurityCouncil",
"description": "A Multisig with 6/8 threshold. \nCustom Multisig implementation that has a general threshold of 6 but also specific thresholds for upgrade approvals (4) or soft freezes (3).\n* Can interact with ProtocolUpgradeHandler\n * soft freeze, hard freeze, approve a protocol upgrade \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0x59195219d1176E42f8e607e9AC114926D47f9035",
"type": "Contract",
"isVerified": true,
"name": "0x5919…9035",
"url": "https://etherscan.io/address/0x59195219d1176E42f8e607e9AC114926D47f9035"
}
],
"chain": "ethereum",
"references": [
{
"title": "Security Council members - ZK Nation docs",
"url": "https://docs.zknation.io/zksync-governance/schedule-3-zksync-security-council"
}
],
"participants": [
{
"address": "eth:0x34Ea62D4b9bBB8AD927eFB6ab31E3Ab3474aC93a",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x34Ea62D4b9bBB8AD927eFB6ab31E3Ab3474aC93a"
},
{
"address": "eth:0x35eA56fd9eAd2567F339Eb9564B6940b9DD5653F",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x35eA56fd9eAd2567F339Eb9564B6940b9DD5653F"
},
{
"address": "eth:0x69462a81ba94D64c404575f1899a464F123497A2",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x69462a81ba94D64c404575f1899a464F123497A2"
},
{
"address": "eth:0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0"
},
{
"address": "eth:0x9B8Be3278B7F0168D82059eb6BAc5991DcdfA803",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x9B8Be3278B7F0168D82059eb6BAc5991DcdfA803"
},
{
"address": "eth:0xB7aC3A79A23B148c85fba259712c5A1e7ad0ca44",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xB7aC3A79A23B148c85fba259712c5A1e7ad0ca44"
},
{
"address": "eth:0xc3Abc9f9AA75Be8341E831482cdA0125a7B1A23e",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xc3Abc9f9AA75Be8341E831482cdA0125a7B1A23e"
},
{
"address": "eth:0xFB90Da9DC45378A1B50775Beb03aD10C7E8DC231",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xFB90Da9DC45378A1B50775Beb03aD10C7E8DC231"
}
],
"discoveryDrivenData": true
},
{
"id": "Guardians",
"name": "Guardians",
"description": "A Multisig with 5/8 threshold. \nCustom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n* Can interact with ProtocolUpgradeHandler\n * extend the legal veto period, approve a protocol upgrade \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0x600dA620Ab29F41ABC6596a15981e14cE58c86b8",
"type": "Contract",
"isVerified": true,
"name": "0x600d…86b8",
"url": "https://etherscan.io/address/0x600dA620Ab29F41ABC6596a15981e14cE58c86b8"
}
],
"chain": "ethereum",
"references": [
{
"title": "Guardians - ZK Nation docs",
"url": "https://docs.zknation.io/zksync-governance/schedule-4-zksync-guardians"
}
],
"participants": [
{
"address": "eth:0x015318c16AE443a20DE0A776dB06a59F0D279057",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x015318c16AE443a20DE0A776dB06a59F0D279057"
},
{
"address": "eth:0x178D8Eb1A1fb81B5102808A83318Bb04C6a9fC6D",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x178D8Eb1A1fb81B5102808A83318Bb04C6a9fC6D"
},
{
"address": "eth:0x2A90830083C5Ca1f18d7AA7fCDC2998f93475384",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x2A90830083C5Ca1f18d7AA7fCDC2998f93475384"
},
{
"address": "eth:0x538612F6eba6ff80FBD95D60dCDee16b8FfF2c0f",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x538612F6eba6ff80FBD95D60dCDee16b8FfF2c0f"
},
{
"address": "eth:0x55c671BcE13120387Ded710A1d1b80C0e3d8E857",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x55c671BcE13120387Ded710A1d1b80C0e3d8E857"
},
{
"address": "eth:0x590926dBCDfD19627c3BbD2A6Eb96DeC7a3AbF69",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x590926dBCDfD19627c3BbD2A6Eb96DeC7a3AbF69"
},
{
"address": "eth:0x6D26874130A174839b9cd8CB87Ed4E09D0c1a5f0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x6D26874130A174839b9cd8CB87Ed4E09D0c1a5f0"
},
{
"address": "eth:0xCe7a3dFcc35602155809920Ff65e093aa726f6cf",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xCe7a3dFcc35602155809920Ff65e093aa726f6cf"
}
],
"discoveryDrivenData": true
},
{
"id": "ValidatorTimelock",
"name": "ValidatorTimelock",
"accounts": [
{
"address": "eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"type": "Contract",
"isVerified": true,
"name": "0x2e51…b776",
"url": "https://etherscan.io/address/0x2e5110cF18678Ec99818bFAa849B8C881744b776"
}
],
"chain": "ethereum",
"description": "Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n* Can interact with Diamond\n * commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock ",
"description": "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": "EraMultisigValidator",
"name": "EraMultisigValidator",
"description": "A Multisig with 1/3 threshold. \nA multisig wrapper around `ValidatorTimelock` that requires a threshold of approvals before batch execution can proceed, provides additional security through 2FA.\n* 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 ",
"accounts": [
{
"address": "eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83",
"type": "Contract",
"isVerified": true,
"name": "0xC62B…fD83",
"url": "https://etherscan.io/address/0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x8C84654F387e1c6b75B5ECF6A786997da2e8037a",
"type": "EOA",
"isVerified": true,
"name": "0x8C84…037a",
"url": "https://etherscan.io/address/0x8C84654F387e1c6b75B5ECF6A786997da2e8037a"
},
{
"address": "eth:0xb279092b5D7637e22617178f31f08229bf4FCB42",
"type": "EOA",
"isVerified": true,
"name": "0xb279…CB42",
"url": "https://etherscan.io/address/0xb279092b5D7637e22617178f31f08229bf4FCB42"
},
{
"address": "eth:0x5CAb0d2fC3BACD6fd80E9412b77A1142652db327",
"type": "EOA",
"isVerified": true,
"name": "0x5CAb…b327",
"url": "https://etherscan.io/address/0x5CAb0d2fC3BACD6fd80E9412b77A1142652db327"
}
],
"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": "EOA-1-and-EOA-2",
"name": "EOA 1 and EOA 2",
"accounts": [
{
"address": "eth:0x6be789605b13Edb78749824633b9933D44B582ba",
"type": "EOA",
"isVerified": true,
"name": "0x6be7…82ba",
"url": "https://etherscan.io/address/0x6be789605b13Edb78749824633b9933D44B582ba",
"displayName": "EOA 1"
},
{
"address": "eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8",
"type": "EOA",
"isVerified": true,
"name": "0xD856…A0F8",
"url": "https://etherscan.io/address/0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with EraMultisigValidator\n * execute predefined protocol upgrades (diamond cuts registered in the ChainTypeManager) for the chain through this contract \n * initiate batch execution on L1 if approved by enough Validator Multisig members \n * revert unexecuted batches through this contract \n * submit batch precommitments on L1 through this contract \n * submit batch proofs on L1 through this contract \n * submit batches on L1 through this contract (no Validator Multisig approvals required) ",
"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": 1790592210,
"baseTimestamp": 1790939141,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "846189c0",
"date": "Fri, 02 Oct 2026 12:42:15 GMT",
"timestamp": 1790939141,
"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 Abstract is tracked in `executionDelayAbstract` (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 Abstract 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.executionDelayAbstract:\n+ 10800\n+++ severity: HIGH\n values.executionDelayAbstract_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- {\"executionDelayAbstract\":\"Processing error occurred.\",\"executionDelayAbstract_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": "17316234",
"date": "Mon, 17 Aug 2026 11:30:41 GMT",
"timestamp": 1786966176,
"description": "Abstract 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:0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.13:\n+ [\"2026-08-16T12:38:23.000Z\",\"0x3039621e033e2274d2efc899e880c6ccf4834e956a2c757c65295526e5fc5204\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 13\n+ 14\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": "69e44777",
"date": "Tue, 11 Aug 2026 07:46:46 GMT",
"timestamp": 1786434343,
"description": "Abstract multisig upgraded boojum verifiers to the latest version (the same as zksync Era, 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:0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.12:\n+ [\"2026-08-08T20:30:11.000Z\",\"0x7b15fc436b4e0afacf42accd854927504dc817cfc752ce1a4fad75b7631d8071\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 12\n+ 13\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 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": "90eb32ea",
"date": "Wed, 05 Aug 2026 10:22:44 GMT",
"timestamp": 1785925299,
"description": "Upgraded boojum verifiers to the latest version (the same as zksync Era, not yet reproduced). Also added one validator to the validator MS and removed one ms member of a gnosis safe.",
"isHighSeverity": true,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.11:\n+ [\"2026-08-04T11:25:23.000Z\",\"0xb0fa77c3fac001aff58b0cbeef7894fd44b89b3f62a4bd72df9de38072811092\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 11\n+ 12\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 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 contract Safe (eth:0x325407EEC948b97429068AF0cd8A8D95F06315a4) [GnosisSafe] {\n +++ description: None\n values.$members.2:\n- \"eth:0x23F48e7BF163941Ebeb7a6106B8ac712a8c54f75\"\n values.multisigThreshold:\n- \"2 of 6 (33%)\"\n+ \"2 of 5 (40%)\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract EraMultisigValidator (eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83) [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:0x5CAb0d2fC3BACD6fd80E9412b77A1142652db327\"\n+++ severity: HIGH\n values.multisigMembers.2:\n+ \"eth:0x5CAb0d2fC3BACD6fd80E9412b77A1142652db327\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract 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": "62a0aabb",
"date": "Tue, 30 Jun 2026 09:03:50 GMT",
"timestamp": 1782810164,
"description": "Moved two validator EOAs into a 1/2 validator multisig.",
"isHighSeverity": false,
"changeCount": 22,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_post29] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.validatorsVTL.0:\n- \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTL.1:\n- \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n+ \"eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.0:\n- \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.1:\n- \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n+ \"eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.0:\n- \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.1:\n- \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n+ \"eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.0:\n- \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.1:\n- \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n+ \"eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.0:\n- \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.1:\n- \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n+ \"eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.0:\n- \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.1:\n- \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n+ \"eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83\"\n }\n```\n\n```diff\n EOA (eth:0x6be789605b13Edb78749824633b9933D44B582ba) {\n +++ description: None\n receivedPermissions.0.role:\n- \".validatorsVTLFullAC\"\n+ \".executor\"\n receivedPermissions.0.description:\n- \"Permissioned to call the functions to commit, prove, execute and revert L2 batches through the ValidatorTimelock in the main Diamond contract.\"\n+ \"initiate batch execution on L1 if approved by enough Validator Multisig members.\"\n receivedPermissions.0.from:\n- \"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\"\n+ \"eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83\"\n }\n```\n\n```diff\n contract Abstract Multisig (eth:0x7F3EaB9ccf1d8B9705F7ede895d3b4aC1b631063) [GnosisSafe] {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x9B9256E7D5b696F7BD7525F42238Ba3d9BBD9cDA\"}]}\n directlyReceivedPermissions.0:\n+ {\"permission\":\"act\",\"from\":\"eth:0x9B9256E7D5b696F7BD7525F42238Ba3d9BBD9cDA\",\"role\":\".owner\"}\n }\n```\n\n```diff\n EOA (eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8) {\n +++ description: None\n receivedPermissions.0.role:\n- \".validatorsVTLFullAC\"\n+ \".executor\"\n receivedPermissions.0.description:\n- \"Permissioned to call the functions to commit, prove, execute and revert L2 batches through the ValidatorTimelock in the main Diamond contract.\"\n+ \"initiate batch execution on L1 if approved by enough Validator Multisig members.\"\n receivedPermissions.0.from:\n- \"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\"\n+ \"eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract ProxyAdmin (eth:0x9B9256E7D5b696F7BD7525F42238Ba3d9BBD9cDA) [global/ProxyAdmin]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract EraMultisigValidator (eth:0xC62BDE55caaB102714c6b9F7e29e05D9237EfD83) [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```"
}
]
},
{
"id": "93974b67",
"date": "Thu, 18 Jun 2026 10:18:53 GMT",
"timestamp": 1781777867,
"description": "Removed 2 (out of 4) registered validators.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_post29] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.validatorsVTL.0:\n- \"eth:0x415Ed64D42BC0c37AeaAEf79AA767d963Ef38807\"\n values.validatorsVTL.1:\n- \"eth:0x4b2d036D2c27192549ad5A2F2D9875E1843833De\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.0:\n- \"eth:0x415Ed64D42BC0c37AeaAEf79AA767d963Ef38807\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.1:\n- \"eth:0x4b2d036D2c27192549ad5A2F2D9875E1843833De\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.0:\n- \"eth:0x415Ed64D42BC0c37AeaAEf79AA767d963Ef38807\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.1:\n- \"eth:0x4b2d036D2c27192549ad5A2F2D9875E1843833De\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.0:\n- \"eth:0x415Ed64D42BC0c37AeaAEf79AA767d963Ef38807\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.1:\n- \"eth:0x4b2d036D2c27192549ad5A2F2D9875E1843833De\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.0:\n- \"eth:0x415Ed64D42BC0c37AeaAEf79AA767d963Ef38807\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.1:\n- \"eth:0x4b2d036D2c27192549ad5A2F2D9875E1843833De\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.0:\n- \"eth:0x415Ed64D42BC0c37AeaAEf79AA767d963Ef38807\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.1:\n- \"eth:0x4b2d036D2c27192549ad5A2F2D9875E1843833De\"\n }\n```"
}
]
},
{
"id": "dd0c389d",
"date": "Tue, 16 Jun 2026 09:38:26 GMT",
"timestamp": 1781602618,
"description": "Add more EOAs to the VTL accessControl.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_post29] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.validatorsVTL.2:\n+ \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTL.3:\n+ \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.2:\n+ \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.3:\n+ \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.2:\n+ \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.3:\n+ \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.2:\n+ \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.3:\n+ \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.2:\n+ \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.3:\n+ \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.2:\n+ \"eth:0x6be789605b13Edb78749824633b9933D44B582ba\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.3:\n+ \"eth:0xD85618da9E4A86DCC29180E0E683D3EA5412A0F8\"\n }\n```"
}
]
},
{
"id": "4cce807e",
"date": "Mon, 16 Feb 2026 14:00:34 GMT",
"timestamp": 1771250356,
"description": "Upgrade to v29.4 (this verfier upgrade version was introduced in an [emergency upgrade](https://etherscan.io/tx/0xef1d02776ae4a2a590278883f7347c4a863fcbe7a0b9ce96bc766084aab5dee9)).",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.10:\n+ [\"2026-02-13T18:02:59.000Z\",\"0xa1b9a5968d7a9dd2d0c811f4e381780c2f21cb2628199f65abe9d1621010f3ff\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 10\n+ 11\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 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 contract ChainAdmin (eth:0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661) {\n +++ description: A governance proxy that lets eth:0x7F3EaB9ccf1d8B9705F7ede895d3b4aC1b631063 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.7:\n+ {\"_protocolVersion\":124554051588,\"_upgradeTimestamp\":0}\n }\n```\n\n```diff\n- Status: DELETED\n contract 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": "82d7947c",
"date": "Fri, 13 Feb 2026 09:43:31 GMT",
"timestamp": 1770975745,
"description": "Added new member and decreased threshold of a ms.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Safe (eth:0x325407EEC948b97429068AF0cd8A8D95F06315a4) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x392C009a49E9368Fc2bDd8B1e5520E62DEB8276c\"\n values.$threshold:\n- 3\n+ 2\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"2 of 6 (33%)\"\n }\n```"
}
]
},
{
"id": "760ceac4",
"date": "Tue, 27 Jan 2026 10:42:06 GMT",
"timestamp": 1769510461,
"description": "Upgraded the verifier to the latest version.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.9:\n+ [\"2026-01-26T21:45:23.000Z\",\"0x8dacb39adb60b416058d5965b00fc4c83ec955ba60c160b0c766840b08584453\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 9\n+ 10\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 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 contract ChainAdmin (eth:0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661) {\n +++ description: A governance proxy that lets eth:0x7F3EaB9ccf1d8B9705F7ede895d3b4aC1b631063 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.6:\n+ {\"_protocolVersion\":124554051587,\"_upgradeTimestamp\":0}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d or eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "c10003fc",
"date": "Mon, 29 Dec 2025 10:17:56 GMT",
"timestamp": 1767003412,
"description": "EOA upgraded to Metamask 7702 Delegator.",
"isHighSeverity": true,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (eth:0x277D26a45Add5775F21256159F089769892CEa5B) {\n +++ description: None\n proxyType:\n- \"EOA\"\n+ \"EIP7702 EOA\"\n sourceHashes:\n+ [\"0x41c6ce964a4ef3e910f9ddf78152734dae8d1b1094ffc8334c50249a3b112bbf\"]\n values:\n+ {\"$implementation\":\"eth:0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B\",\"delegationManager\":\"eth:0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3\",\"DOMAIN_VERSION\":\"1\",\"eip712Domain\":{\"fields\":\"0x0f\",\"name\":\"EIP7702StatelessDeleGator\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"eth:0x277D26a45Add5775F21256159F089769892CEa5B\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]},\"entryPoint\":\"eth:0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"getDeposit\":0,\"getDomainHash\":\"0x0c280748f58a36c72c3712dc2b0ca44220e01b7e3ce53a9439b40060839f257e\",\"getNonce\":0,\"NAME\":\"EIP7702StatelessDeleGator\",\"PACKED_USER_OP_TYPEHASH\":\"0xbc37962d8bd1d319c95199bdfda6d3f92baa8903a61b32d5f4ec1f4b36a3bc18\",\"VERSION\":\"1.3.0\"}\n }\n```"
}
]
},
{
"id": "8c0fedd9",
"date": "Tue, 28 Oct 2025 09:03:00 GMT",
"timestamp": 1761640428,
"description": "standard v29 upgrade. updated trackedtxs.",
"isHighSeverity": true,
"changeCount": 49,
"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 AbstractZkEvm (eth:0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.1:\n- \"0xbc2380479529743c27e6ab96cdf08210319fadcbca0856cf50c6b1b54bf8437f\"\n+ \"0xc7513302e4e09efc907df5e645d9f8037b1d02409f9a9089f61061c8951ef1ff\"\n values.$implementation.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.$implementation.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.$implementation.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.$implementation.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.$pastUpgrades.8:\n+ [\"2025-10-27T21:48:47.000Z\",\"0x1e0981b58494e533e348c55373907e8d29a478dd38d081c3e1f4e0213339008c\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 8\n+ 9\n values.facetAddresses.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.facetAddresses.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.facetAddresses.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.facetAddresses.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.facets.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"getRollupDAManager()\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2MessageInclusionShared(uint256,uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusionShared(uint256,uint256,uint256,bytes32,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusionShared(uint256,uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\"]\n values.facets.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ [\"precommitSharedBridge(address,uint256,bytes)\",\"commitBatchesSharedBridge(address,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(address,uint256,uint256,bytes)\",\"revertBatchesSharedBridge(address,uint256)\",\"proveBatchesSharedBridge(address,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n+ \"0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n+ \"0x010005f73e7c299ed73db937843643bdc276cbc2cc8596287e1e0cf3afc60252\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+ \"0x01000d8bae37b82f311186426184866498b357f41d7a02ced11f3e3fbfbacd63\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084289\n+ 124554051586\n values.getSemverProtocolVersion.1:\n- 28\n+ 29\n values.getSemverProtocolVersion.2:\n- 1\n+ 2\n values.getVerifier:\n- \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n+ \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n values.validators.0:\n- \"eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n values.validators.1:\n- \"eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\"\n values.getRollupDAManager:\n+ \"eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45\"\n implementationNames.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- \"AdminFacet\"\n implementationNames.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- \"GettersFacet\"\n implementationNames.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- \"MailboxFacet\"\n implementationNames.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- \"ExecutorFacet\"\n implementationNames.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ \"AdminFacet\"\n implementationNames.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ \"GettersFacet\"\n implementationNames.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ \"MailboxFacet\"\n implementationNames.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n contract ChainAdmin (eth:0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661) {\n +++ description: A governance proxy that lets eth:0x7F3EaB9ccf1d8B9705F7ede895d3b4aC1b631063 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.5:\n+ {\"_protocolVersion\":124554051586,\"_upgradeTimestamp\":1761224400}\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n reference ProxyAdmin (eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n reference RollupDAManager (eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45)\n +++ description: None\n```"
}
]
},
{
"id": "e41b0c87",
"date": "Thu, 02 Oct 2025 10:08:26 GMT",
"timestamp": 1759399643,
"description": "Multisig rotation.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Safe (eth:0x325407EEC948b97429068AF0cd8A8D95F06315a4) {\n +++ description: None\n values.$members.4:\n- \"eth:0x45CC620803974f13a0f1A11517685581FF098000\"\n+ \"eth:0xFa700392b4B2223356401eDb1AA51665CC4bD9A4\"\n }\n```"
}
]
},
{
"id": "34b2f8b8",
"date": "Thu, 14 Aug 2025 07:24:12 GMT",
"timestamp": 1755156245,
"description": "upgrade to standard protocol v28.1.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AbstractZkEvm (0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.7:\n+ [\"2025-08-12T17:03:11.000Z\",\"0x6748f394d7dbce205a1a2b85f8d2896ae4d6e68653193498b54ad6d3e18ef194\",[\"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 7\n+ 8\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 contract ChainAdmin (0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.4:\n+ {\"_protocolVersion\":120259084289,\"_upgradeTimestamp\":1754911800}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```"
}
]
},
{
"id": "30d0b9b7",
"date": "Mon, 14 Jul 2025 12:47:15 GMT",
"timestamp": 1752497235,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 13,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Safe (0x0807C9f0247084cf1C5aB86A8fb00e7c70Cd27eB)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract AbstractZkEvm (0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9)\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x325407EEC948b97429068AF0cd8A8D95F06315a4)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x57533344e91d29f927AAEBee364A33633Bd205Ab)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x58536761C97F5037931b56efeE922471add0eEe8)\n +++ description: None\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 Safe (0x79CF3eCF9Bbfd793d8Be62ED44D98d9AfA657892)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Abstract Multisig (0x7F3EaB9ccf1d8B9705F7ede895d3b4aC1b631063)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract ChainAdmin (0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "6663d1b4",
"date": "Mon, 07 Jul 2025 06:30:57 GMT",
"timestamp": 1751869857,
"description": "Standard zk stack v28 upgrade.",
"isHighSeverity": true,
"changeCount": 39,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract AbstractZkEvm (0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$implementation.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.$implementation.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.$implementation.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.$implementation.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.$pastUpgrades.6:\n+ [\"2025-07-01T19:26:35.000Z\",\"0x5baabf6f89fd91775efbaa3fcf547e344999ed8550560828e6d02511c220b7bc\",[\"0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 6\n+ 7\n values.facetAddresses.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.facetAddresses.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.facetAddresses.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.facetAddresses.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n+ \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+ \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n+ \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 115964116992\n+ 120259084288\n values.getSemverProtocolVersion.1:\n- 27\n+ 28\n values.getVerifier:\n- \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n+ \"0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- \"ExecutorFacet\"\n implementationNames.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ \"AdminFacet\"\n implementationNames.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ \"GettersFacet\"\n implementationNames.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ \"MailboxFacet\"\n implementationNames.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n contract ChainAdmin (0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.3:\n+ {\"_protocolVersion\":120259084288,\"_upgradeTimestamp\":1750942800}\n }\n```\n\n```diff\n- Status: 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": "3821d6aa",
"date": "Fri, 30 May 2025 04:33:20 GMT",
"timestamp": 1748579600,
"description": "validators rotated.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (0x11805594be0229EF08429D775AF0c55f7c4535dE) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\",\"role\":\".validatorsVTL\"}\n }\n```\n\n```diff\n EOA (0x54aB716D465be3D5EEca64E63ac0048D7a81659a) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\",\"role\":\".validatorsVTL\"}\n }\n```\n\n```diff\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564) {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.validatorsVTL.1:\n- \"0x11805594be0229EF08429D775AF0c55f7c4535dE\"\n+ \"0x4b2d036D2c27192549ad5A2F2D9875E1843833De\"\n values.validatorsVTL.0:\n- \"0x54aB716D465be3D5EEca64E63ac0048D7a81659a\"\n+ \"0x415Ed64D42BC0c37AeaAEf79AA767d963Ef38807\"\n }\n```"
}
]
},
{
"id": "3f4b6f46",
"date": "Fri, 16 May 2025 14:39:40 GMT",
"timestamp": 1747406380,
"description": "abstract emergency upgrade via zk stack:\n\nemergency upgrade did not change any contract source code, but included an unverified contract that helped change a single state var in the diamond during diamondCut\nhttps://dashboard.tenderly.co/tx/0xcaefda7f4c6e29f90b34a0b68817feeb9fac3da2cb66538ea15fbeed434a7201/state-diff\n\nwhich bumped the totalBatchesVerified from `16528` to `16529`\n\nthe validator then resumed [executing the unproven batch](https://app.blocksec.com/explorer/tx/eth/0x96ddbadf9200634d4b8151f0236d3ff2676e61c54bb9af78de4fbd32a8e3331b) and [proving](https://app.blocksec.com/explorer/tx/eth/0x70c0de3eb6aa60b538e5894e5d390d5bc73d6c14e59932e26cce85f9de142c5c)/[executing](https://app.blocksec.com/explorer/tx/eth/0x1fb7232e9a17cb396851dcb7f1a85411ad07e4032913906474036ef37c4476a9) subsequent batches\n\nsub MS signer change.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AbstractZkEvm (0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.5:\n+ [\"2025-05-16T12:59:47.000Z\",\"0xcaefda7f4c6e29f90b34a0b68817feeb9fac3da2cb66538ea15fbeed434a7201\",[\"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\",\"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\",\"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\",\"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"]]\n values.$upgradeCount:\n- 5\n+ 6\n }\n```\n\n```diff\n contract Safe (0x58536761C97F5037931b56efeE922471add0eEe8) {\n +++ description: None\n values.$members.2:\n+ \"0xd757D6A02cD5af9AEF163D7eB8034f75ac22B553\"\n values.$members.1:\n- \"0xd757D6A02cD5af9AEF163D7eB8034f75ac22B553\"\n+ \"0xbB943Cf3c5b90f2eD04F53658CCA49286601e808\"\n values.$members.0:\n- \"0xbB943Cf3c5b90f2eD04F53658CCA49286601e808\"\n+ \"0xe2eB80C72Fa12Ba50B3bD6545709DC153D5b26D2\"\n values.multisigThreshold:\n- \"1 of 2 (50%)\"\n+ \"1 of 3 (33%)\"\n }\n```"
}
]
},
{
"id": "98b7678c",
"date": "Wed, 14 May 2025 08:36:35 GMT",
"timestamp": 1747211795,
"description": "v27 upgrade to standard contracts/verifiers.",
"isHighSeverity": true,
"changeCount": 50,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AbstractZkEvm (0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.4:\n- \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n+ \"0xb3038139dce45f6c1aaedbfb1b321c230301b2d004da109b39a17d827c6b0e4f\"\n sourceHashes.3:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x1f9f7cd43747f5bcf879d544be0baca967245540e70592112cdc90c360f30486\"\n sourceHashes.2:\n- \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.1:\n- \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n+ \"0xab7812fa82c483b781aee4c2339b860fcdee4033de1e243370a77a20fc353ddc\"\n sourceHashes.0:\n- \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n+ \"0xca793d2e01bb37722ba48f56662e8602e693d6808ed9587867c2bac43c3dec25\"\n values.$implementation.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$implementation.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$implementation.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$implementation.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.4:\n+ [\"2025-03-25T22:04:47.000Z\",\"0xe27e320246920e2b0a486e2f09ef847d15e79b1364930ba960f158fa8d05f9ca\",[\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]]\n values.$pastUpgrades.3.2.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$pastUpgrades.3.2.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$pastUpgrades.3.2.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$pastUpgrades.3.2.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.3.1:\n- \"0xe27e320246920e2b0a486e2f09ef847d15e79b1364930ba960f158fa8d05f9ca\"\n+ \"0xc63fb7bdd8acc5852d262a14f0630fbf0a1a00b48890f389adad34ced6bfd241\"\n values.$pastUpgrades.3.0:\n- \"2025-03-25T22:04:47.000Z\"\n+ \"2025-05-12T19:40:11.000Z\"\n values.$upgradeCount:\n- 4\n+ 5\n values.facetAddresses.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.facetAddresses.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.facetAddresses.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.facetAddresses.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n+ \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+ \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 111669149696\n+ 115964116992\n values.getSemverProtocolVersion.0:\n- 26\n+ 27\n values.getVerifier:\n- \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n+ \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n values.getL2EvmEmulatorBytecodeHash:\n+ \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n implementationNames.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- \"AdminFacet\"\n implementationNames.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- \"GettersFacet\"\n implementationNames.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- \"MailboxFacet\"\n implementationNames.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- \"ExecutorFacet\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n contract ChainAdmin (0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.2:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1736866800}\n values.upgradeTimestamps.1._protocolVersion:\n- 107374182400\n+ 115964116992\n values.upgradeTimestamps.1._upgradeTimestamp:\n- 1736866800\n+ 1747029600\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": "ddb9b24d",
"date": "Mon, 12 May 2025 09:21:15 GMT",
"timestamp": 1747041675,
"description": "Abstract sub-MS member changes.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Safe (0x0807C9f0247084cf1C5aB86A8fb00e7c70Cd27eB) {\n +++ description: None\n values.$members.3:\n+ \"0x3846c3A30E62075Fa916216b35EF04B8F53931f6\"\n values.$members.2:\n- \"0x3846c3A30E62075Fa916216b35EF04B8F53931f6\"\n+ \"0x277D26a45Add5775F21256159F089769892CEa5B\"\n values.$threshold:\n- 1\n+ 2\n values.multisigThreshold:\n- \"1 of 3 (33%)\"\n+ \"2 of 4 (50%)\"\n }\n```\n\n```diff\n contract Safe (0x79CF3eCF9Bbfd793d8Be62ED44D98d9AfA657892) {\n +++ description: None\n values.$members.1:\n+ \"0x438Df339934B6Fb9dA8E0DC6f0Ba0bca22B8A7b5\"\n values.multisigThreshold:\n- \"1 of 1 (100%)\"\n+ \"1 of 2 (50%)\"\n }\n```"
}
]
},
{
"id": "d85cd015",
"date": "Mon, 28 Apr 2025 11:05:08 GMT",
"timestamp": 1745838308,
"description": "MS signer change.",
"isHighSeverity": false,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Safe (0x58536761C97F5037931b56efeE922471add0eEe8) {\n +++ description: None\n values.$members.1:\n+ \"0xd757D6A02cD5af9AEF163D7eB8034f75ac22B553\"\n values.multisigThreshold:\n- \"1 of 1 (100%)\"\n+ \"1 of 2 (50%)\"\n }\n```\n\n```diff\n contract Abstract Multisig (0x7F3EaB9ccf1d8B9705F7ede895d3b4aC1b631063) {\n +++ description: None\n values.$members.11:\n- \"0x1CdfBDED92D46261837827607e674110Ca5a0575\"\n values.$members.10:\n- \"0xFC84E99984A3526dea97c408f5991A5E099f3Da2\"\n values.$members.9:\n- \"0x57533344e91d29f927AAEBee364A33633Bd205Ab\"\n values.$members.8:\n- \"0x79CF3eCF9Bbfd793d8Be62ED44D98d9AfA657892\"\n values.$members.7:\n- \"0x58536761C97F5037931b56efeE922471add0eEe8\"\n+ \"0x1CdfBDED92D46261837827607e674110Ca5a0575\"\n values.$members.6:\n- \"0xB9f0C247cF1aB4a7F36974CB0A64244Ed4D017FE\"\n+ \"0xFC84E99984A3526dea97c408f5991A5E099f3Da2\"\n values.$members.5:\n- \"0x325407EEC948b97429068AF0cd8A8D95F06315a4\"\n+ \"0x57533344e91d29f927AAEBee364A33633Bd205Ab\"\n values.$members.4:\n- \"0xe7ea5B62F939611D11C0Ce7606B001207870C704\"\n+ \"0x79CF3eCF9Bbfd793d8Be62ED44D98d9AfA657892\"\n values.$members.3:\n- \"0x80B9ee57A93d7Ff0B588682d3df0713489dC1b74\"\n+ \"0x58536761C97F5037931b56efeE922471add0eEe8\"\n values.$members.2:\n- \"0x77D1124E9061d238430Df3F4311111BDf69a4CFA\"\n+ \"0x325407EEC948b97429068AF0cd8A8D95F06315a4\"\n values.$members.1:\n- \"0x0807C9f0247084cf1C5aB86A8fb00e7c70Cd27eB\"\n+ \"0x77D1124E9061d238430Df3F4311111BDf69a4CFA\"\n values.$members.0:\n- \"0x41c1d613dbE28dAab73b7Dc0003Da124924a56f0\"\n+ \"0x0807C9f0247084cf1C5aB86A8fb00e7c70Cd27eB\"\n values.multisigThreshold:\n- \"4 of 12 (33%)\"\n+ \"4 of 8 (50%)\"\n }\n```"
}
]
},
{
"id": "729c76b5",
"date": "Fri, 11 Apr 2025 06:36:28 GMT",
"timestamp": 1744353388,
"description": "MS signer change.",
"isHighSeverity": false,
"changeCount": 18,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract AbstractChainAdminMultisig (0x7F3EaB9ccf1d8B9705F7ede895d3b4aC1b631063) {\n +++ description: None\n values.$members.11:\n+ \"0x1CdfBDED92D46261837827607e674110Ca5a0575\"\n values.$members.10:\n+ \"0xFC84E99984A3526dea97c408f5991A5E099f3Da2\"\n values.$members.9:\n+ \"0x57533344e91d29f927AAEBee364A33633Bd205Ab\"\n values.$members.8:\n+ \"0x79CF3eCF9Bbfd793d8Be62ED44D98d9AfA657892\"\n values.$members.7:\n+ \"0x58536761C97F5037931b56efeE922471add0eEe8\"\n values.$members.6:\n+ \"0xB9f0C247cF1aB4a7F36974CB0A64244Ed4D017FE\"\n values.$members.5:\n+ \"0x325407EEC948b97429068AF0cd8A8D95F06315a4\"\n values.$members.4:\n+ \"0xe7ea5B62F939611D11C0Ce7606B001207870C704\"\n values.$members.3:\n- \"0xB9f0C247cF1aB4a7F36974CB0A64244Ed4D017FE\"\n+ \"0x80B9ee57A93d7Ff0B588682d3df0713489dC1b74\"\n values.$members.2:\n- \"0xe7ea5B62F939611D11C0Ce7606B001207870C704\"\n+ \"0x77D1124E9061d238430Df3F4311111BDf69a4CFA\"\n values.$members.1:\n- \"0x80B9ee57A93d7Ff0B588682d3df0713489dC1b74\"\n+ \"0x0807C9f0247084cf1C5aB86A8fb00e7c70Cd27eB\"\n values.$threshold:\n- 2\n+ 4\n values.multisigThreshold:\n- \"2 of 4 (50%)\"\n+ \"4 of 12 (33%)\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x0807C9f0247084cf1C5aB86A8fb00e7c70Cd27eB)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x325407EEC948b97429068AF0cd8A8D95F06315a4)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x57533344e91d29f927AAEBee364A33633Bd205Ab)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x58536761C97F5037931b56efeE922471add0eEe8)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Safe (0x79CF3eCF9Bbfd793d8Be62ED44D98d9AfA657892)\n +++ description: None\n```"
}
]
},
{
"id": "7e80b317",
"date": "Fri, 28 Mar 2025 10:44:43 GMT",
"timestamp": 1743158683,
"description": "v26 upgrade.",
"isHighSeverity": true,
"changeCount": 58,
"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 (0x11805594be0229EF08429D775AF0c55f7c4535dE) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n contract AbstractZkEvm (0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n template:\n- \"shared-zk-stack/Diamond\"\n+ \"shared-zk-stack/Diamond_v26\"\n sourceHashes.4:\n- \"0xdf47c6cd4fcffcfa4a670e1544e2391acc365cd7fd9b8e7583d58b28dff50c40\"\n+ \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n sourceHashes.3:\n- \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.2:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n sourceHashes.1:\n- \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n+ \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n sourceHashes.0:\n- \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n+ \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n description:\n- \"The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\"\n+ \"The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\"\n issuedPermissions.2:\n+ {\"permission\":\"interact\",\"to\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\",\"description\":\"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\",\"via\":[]}\n values.$implementation.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.$implementation.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.$implementation.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.$implementation.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.$pastUpgrades.3:\n+ [\"2025-03-25T22:04:47.000Z\",\"0xe27e320246920e2b0a486e2f09ef847d15e79b1364930ba960f158fa8d05f9ca\",[\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.daMode:\n- 0\n values.facetAddresses.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.facetAddresses.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.facetAddresses.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.facetAddresses.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getBaseTokenBridge:\n- \"0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB\"\n values.getL2BootloaderBytecodeHash:\n- \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n+ \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n+ \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 107374182400\n+ 111669149696\n values.getSemverProtocolVersion.0:\n- 25\n+ 26\n values.getStateTransitionManager:\n- \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n values.getVerifier:\n- \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n+ \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n values.txFilterer:\n- []\n values.validators.1:\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n values.getBaseTokenAssetId:\n+ \"0x05e1c3ae4b9732444ae25217ac7666e46fa365fee1768de00c9fcb65532b7609\"\n values.getChainId:\n+ 2741\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 (0x54aB716D465be3D5EEca64E63ac0048D7a81659a) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n contract ChainAdmin (0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.1:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1736866800}\n values.upgradeTimestamps.0._protocolVersion:\n- 107374182400\n+ 111669149696\n values.upgradeTimestamps.0._upgradeTimestamp:\n- 1736866800\n+ 1742454000\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```"
}
]
},
{
"id": "237b6ea3",
"date": "Tue, 11 Mar 2025 08:00:03 GMT",
"timestamp": 1741680003,
"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": "8fc300e2",
"date": "Mon, 03 Feb 2025 14:33:46 GMT",
"timestamp": 1738593226,
"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": "eb4ce173",
"date": "Tue, 28 Jan 2025 08:21:03 GMT",
"timestamp": 1738052463,
"description": "Initial discovery: ZK stack rollup on known protocol version 25 (latest) contracts with ETH as gasToken. TxFilterer not deployed.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n+ Status: CREATED\n contract AbstractZkEvm (0x2EDc71E9991A962c7FE172212d1aA9E50480fBb9)\n +++ description: The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n```\n\n```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```\n\n```diff\n+ Status: CREATED\n contract AbstractChainAdminMultisig (0x7F3EaB9ccf1d8B9705F7ede895d3b4aC1b631063)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ChainAdmin (0xA1f75f491f630037C4Ccaa2bFA22363CEC05a661)\n +++ description: None\n```"
}
]
}
]
+16 -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* 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": "SecurityCouncil",
"name": "SecurityCouncil",
"description": "A Multisig with 6/8 threshold. \nCustom Multisig implementation that has a general threshold of 6 but also specific thresholds for upgrade approvals (4) or soft freezes (3).\n* Can interact with ProtocolUpgradeHandler\n * soft freeze, hard freeze, approve a protocol upgrade \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0x59195219d1176E42f8e607e9AC114926D47f9035",
"type": "Contract",
"isVerified": true,
"name": "0x5919…9035",
"url": "https://etherscan.io/address/0x59195219d1176E42f8e607e9AC114926D47f9035"
}
],
"chain": "ethereum",
"references": [
{
"title": "Security Council members - ZK Nation docs",
"url": "https://docs.zknation.io/zksync-governance/schedule-3-zksync-security-council"
}
],
"participants": [
{
"address": "eth:0x34Ea62D4b9bBB8AD927eFB6ab31E3Ab3474aC93a",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x34Ea62D4b9bBB8AD927eFB6ab31E3Ab3474aC93a"
},
{
"address": "eth:0x35eA56fd9eAd2567F339Eb9564B6940b9DD5653F",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x35eA56fd9eAd2567F339Eb9564B6940b9DD5653F"
},
{
"address": "eth:0x69462a81ba94D64c404575f1899a464F123497A2",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x69462a81ba94D64c404575f1899a464F123497A2"
},
{
"address": "eth:0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0"
},
{
"address": "eth:0x9B8Be3278B7F0168D82059eb6BAc5991DcdfA803",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x9B8Be3278B7F0168D82059eb6BAc5991DcdfA803"
},
{
"address": "eth:0xB7aC3A79A23B148c85fba259712c5A1e7ad0ca44",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xB7aC3A79A23B148c85fba259712c5A1e7ad0ca44"
},
{
"address": "eth:0xc3Abc9f9AA75Be8341E831482cdA0125a7B1A23e",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xc3Abc9f9AA75Be8341E831482cdA0125a7B1A23e"
},
{
"address": "eth:0xFB90Da9DC45378A1B50775Beb03aD10C7E8DC231",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xFB90Da9DC45378A1B50775Beb03aD10C7E8DC231"
}
],
"discoveryDrivenData": true
},
{
"id": "Guardians",
"name": "Guardians",
"description": "A Multisig with 5/8 threshold. \nCustom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n* Can interact with ProtocolUpgradeHandler\n * extend the legal veto period, approve a protocol upgrade \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0x600dA620Ab29F41ABC6596a15981e14cE58c86b8",
"type": "Contract",
"isVerified": true,
"name": "0x600d…86b8",
"url": "https://etherscan.io/address/0x600dA620Ab29F41ABC6596a15981e14cE58c86b8"
}
],
"chain": "ethereum",
"references": [
{
"title": "Guardians - ZK Nation docs",
"url": "https://docs.zknation.io/zksync-governance/schedule-4-zksync-guardians"
}
],
"participants": [
{
"address": "eth:0x015318c16AE443a20DE0A776dB06a59F0D279057",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x015318c16AE443a20DE0A776dB06a59F0D279057"
},
{
"address": "eth:0x178D8Eb1A1fb81B5102808A83318Bb04C6a9fC6D",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x178D8Eb1A1fb81B5102808A83318Bb04C6a9fC6D"
},
{
"address": "eth:0x2A90830083C5Ca1f18d7AA7fCDC2998f93475384",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x2A90830083C5Ca1f18d7AA7fCDC2998f93475384"
},
{
"address": "eth:0x538612F6eba6ff80FBD95D60dCDee16b8FfF2c0f",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x538612F6eba6ff80FBD95D60dCDee16b8FfF2c0f"
},
{
"address": "eth:0x55c671BcE13120387Ded710A1d1b80C0e3d8E857",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x55c671BcE13120387Ded710A1d1b80C0e3d8E857"
},
{
"address": "eth:0x590926dBCDfD19627c3BbD2A6Eb96DeC7a3AbF69",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x590926dBCDfD19627c3BbD2A6Eb96DeC7a3AbF69"
},
{
"address": "eth:0x6D26874130A174839b9cd8CB87Ed4E09D0c1a5f0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x6D26874130A174839b9cd8CB87Ed4E09D0c1a5f0"
},
{
"address": "eth:0xCe7a3dFcc35602155809920Ff65e093aa726f6cf",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xCe7a3dFcc35602155809920Ff65e093aa726f6cf"
}
],
"discoveryDrivenData": true
},
{
"id": "ValidatorTimelock",
"name": "ValidatorTimelock",
"accounts": [
{
"address": "eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"type": "Contract",
"isVerified": true,
"name": "0x2e51…b776",
"url": "https://etherscan.io/address/0x2e5110cF18678Ec99818bFAa849B8C881744b776"
}
],
"chain": "ethereum",
"description": "Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n* Can interact with Diamond\n * commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock ",
"description": "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": "CronosChainAdminMultisig",
"name": "CronosChainAdminMultisig",
"description": "A Multisig with 2/3 threshold. \n* Can interact with Diamond\n * administrate operator roles for this chain in the ValidatorTimelock, manage fees, apply predefined upgrades, manage censorship through a TransactionFilterer, set DA mode, migrate the chain to whitelisted settlement layers (Chain Admin role) [via: CronosZkEVMAdmin]",
"accounts": [
{
"address": "eth:0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce",
"type": "Contract",
"isVerified": true,
"name": "0x4c57…dFce",
"url": "https://etherscan.io/address/0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xE9A03EB4C2262A7d01981cAD1f2c1FFa05CB64Fb",
"type": "EOA",
"isVerified": true,
"name": "0xE9A0…64Fb",
"url": "https://etherscan.io/address/0xE9A03EB4C2262A7d01981cAD1f2c1FFa05CB64Fb"
},
{
"address": "eth:0x5628D5EF2bAd701617b4003F6a2e34eeB89F2ADa",
"type": "EOA",
"isVerified": true,
"name": "0x5628…2ADa",
"url": "https://etherscan.io/address/0x5628D5EF2bAd701617b4003F6a2e34eeB89F2ADa"
},
{
"address": "eth:0xc7e3F37766627b5DAF734f5bb5e43Ae9327011D8",
"type": "EOA",
"isVerified": true,
"name": "0xc7e3…11D8",
"url": "https://etherscan.io/address/0xc7e3F37766627b5DAF734f5bb5e43Ae9327011D8"
}
],
"discoveryDrivenData": true
},
{
"id": "TransactionFiltererDenyList",
"name": "TransactionFiltererDenyList",
"accounts": [
{
"address": "eth:0xA8998F231a660Eca365B382943c71ad9b7619139",
"type": "Contract",
"isVerified": true,
"name": "0xA899…9139",
"url": "https://etherscan.io/address/0xA8998F231a660Eca365B382943c71ad9b7619139"
}
],
"chain": "ethereum",
"description": "* Can interact with Diamond\n * define addresses that can send transactions from L1 to L2 (e.g. for deposits, withdrawals, queued transactions). This is enforced in the Mailbox Facet ",
"discoveryDrivenData": true
},
{
"id": "TxFiltererOwnerMultisig",
"name": "TxFiltererOwnerMultisig",
"description": "A Multisig with 2/5 threshold. \n* Can interact with Diamond\n * administrate operator roles for this chain in the ValidatorTimelock, manage fees, apply predefined upgrades, manage censorship through a TransactionFilterer, set DA mode, migrate the chain to whitelisted settlement layers (Chain Admin role) [via: CronosZkEVMAdmin]\n* Can interact with TransactionFiltererDenyList\n * manage the blacklist of addresses in the TransactionFilterer ",
"accounts": [
{
"address": "eth:0xC774CDFc4d2AcE7aaD12D77B6A3752a393E1ab8b",
"type": "Contract",
"isVerified": true,
"name": "0xC774…ab8b",
"url": "https://etherscan.io/address/0xC774CDFc4d2AcE7aaD12D77B6A3752a393E1ab8b"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xE9A03EB4C2262A7d01981cAD1f2c1FFa05CB64Fb",
"type": "EOA",
"isVerified": true,
"name": "0xE9A0…64Fb",
"url": "https://etherscan.io/address/0xE9A03EB4C2262A7d01981cAD1f2c1FFa05CB64Fb"
},
{
"address": "eth:0xAaC5b858d10107900e642681a97887D33FC3c9E9",
"type": "EOA",
"isVerified": true,
"name": "0xAaC5…c9E9",
"url": "https://etherscan.io/address/0xAaC5b858d10107900e642681a97887D33FC3c9E9"
},
{
"address": "eth:0xc7e3F37766627b5DAF734f5bb5e43Ae9327011D8",
"type": "EOA",
"isVerified": true,
"name": "0xc7e3…11D8",
"url": "https://etherscan.io/address/0xc7e3F37766627b5DAF734f5bb5e43Ae9327011D8"
},
{
"address": "eth:0x5628D5EF2bAd701617b4003F6a2e34eeB89F2ADa",
"type": "EOA",
"isVerified": true,
"name": "0x5628…2ADa",
"url": "https://etherscan.io/address/0x5628D5EF2bAd701617b4003F6a2e34eeB89F2ADa"
},
{
"address": "eth:0x149f3850AcfC5caa3ecF31dCF922A75eD2944a5e",
"type": "EOA",
"isVerified": true,
"name": "0x149f…4a5e",
"url": "https://etherscan.io/address/0x149f3850AcfC5caa3ecF31dCF922A75eD2944a5e"
}
],
"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": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xfD7a03Cdb68E6488F950108A4d24f15519b87339",
"type": "EOA",
"isVerified": true,
"name": "0xfD7a…7339",
"url": "https://etherscan.io/address/0xfD7a03Cdb68E6488F950108A4d24f15519b87339",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* 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: CronosZkEVMAdmin]",
"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": 1790592210,
"baseTimestamp": 1790944819,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "d4331e98",
"date": "Fri, 02 Oct 2026 12:42:18 GMT",
"timestamp": 1790944819,
"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 Cronos zkEVM is tracked in `executionDelayCronosZkEVM` (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 Cronos zkEVM 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.executionDelayCronosZkEVM:\n+ 10800\n+++ severity: HIGH\n values.executionDelayCronosZkEVM_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- {\"executionDelayCronosZkEVM\":\"Processing error occurred.\",\"executionDelayCronosZkEVM_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": "17f496d0",
"date": "Fri, 21 Aug 2026 11:15:16 GMT",
"timestamp": 1787310854,
"description": "CronosZkEVMAdmin upgraded the boojum verifiers to version v0.30.1 (the same version as zksync era). The new verifiers are not yet reproduced.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract Diamond (eth:0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.13:\n+ [\"2026-08-21T08:26:11.000Z\",\"0xb77459936506ff9df19c5fd6fa15538dfd94241e02c616217a8c66d474e27754\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 13\n+ 14\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 128849018880\n+ 128849018881\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n+ \"eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierPlonk (eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierFflonk (eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraDualVerifier (eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9 or eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF depending on the supplied proof type.\n```"
}
]
},
{
"id": "4ad59c84",
"date": "Mon, 10 Aug 2026 10:29:53 GMT",
"timestamp": 1786357730,
"description": "Cronos zkevm admin upgraded boojum verifier to v29.5 (same as zksync era, was registered on chain type manager before). Verifier is not yet reproduced.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.11:\n+ [\"2026-08-08T09:36:47.000Z\",\"0xce0ea2790b5b12033089168685da6c016111f209c0a4e870c9de7956035a956d\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$pastUpgrades.12:\n+ [\"2026-08-10T08:37:11.000Z\",\"0xfeca0b076fcaff4a944b72952fab789eded3f96f34417b0d0cdbee0012c27a64\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 11\n+ 13\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051588\n+ 128849018880\n values.getSemverProtocolVersion.1:\n- 29\n+ 30\n values.getSemverProtocolVersion.2:\n- 4\n+ 0\n values.getVerifier:\n- \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n+ \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n }\n```\n\n```diff\n- Status: DELETED\n contract 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 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": "3ada9439",
"date": "Tue, 09 Jun 2026 09:38:07 GMT",
"timestamp": 1780997809,
"description": "Upgraded boojum verifier to use the same version as zksync era.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n contract Diamond (eth:0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.9:\n+ [\"2026-06-08T09:28:23.000Z\",\"0x7d96630296efe03df04817a3a8c321f7676edd22f4a387632c018ae7f83f152c\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$pastUpgrades.10:\n+ [\"2026-06-09T09:27:47.000Z\",\"0x2cf6ba0dc95e4d5160f6146838f8cbac0ca887cc0617d898020b1fff8c343204\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 9\n+ 11\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051586\n+ 124554051588\n values.getSemverProtocolVersion.2:\n- 2\n+ 4\n values.getVerifier:\n- \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n+ \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```"
}
]
},
{
"id": "4a68b42c",
"date": "Thu, 11 Dec 2025 14:35:39 GMT",
"timestamp": 1765463664,
"description": "v29.2 standard upgrade.",
"isHighSeverity": true,
"changeCount": 48,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock2 (eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n contract CronosZkEvm (eth:0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.1:\n- \"0xbc2380479529743c27e6ab96cdf08210319fadcbca0856cf50c6b1b54bf8437f\"\n+ \"0xc7513302e4e09efc907df5e645d9f8037b1d02409f9a9089f61061c8951ef1ff\"\n values.$implementation.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.$implementation.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.$implementation.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.$implementation.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.$pastUpgrades.8:\n+ [\"2025-12-11T09:24:35.000Z\",\"0xef33b2d54a34da1a1d04bc1929f239f104751f6c1a5776760df176520283c73b\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 8\n+ 9\n values.facetAddresses.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.facetAddresses.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.facetAddresses.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.facetAddresses.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.facets.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"getRollupDAManager()\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2MessageInclusionShared(uint256,uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusionShared(uint256,uint256,uint256,bytes32,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusionShared(uint256,uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\"]\n values.facets.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ [\"precommitSharedBridge(address,uint256,bytes)\",\"commitBatchesSharedBridge(address,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(address,uint256,uint256,bytes)\",\"revertBatchesSharedBridge(address,uint256)\",\"proveBatchesSharedBridge(address,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n+ \"0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n+ \"0x010005f73e7c299ed73db937843643bdc276cbc2cc8596287e1e0cf3afc60252\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+ \"0x01000d8bae37b82f311186426184866498b357f41d7a02ced11f3e3fbfbacd63\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084289\n+ 124554051586\n values.getSemverProtocolVersion.1:\n- 28\n+ 29\n values.getSemverProtocolVersion.2:\n- 1\n+ 2\n values.getVerifier:\n- \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n+ \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n values.validators.0:\n- \"eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n values.validators.1:\n- \"eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\"\n values.getRollupDAManager:\n+ \"eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45\"\n implementationNames.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- \"AdminFacet\"\n implementationNames.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- \"GettersFacet\"\n implementationNames.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- \"MailboxFacet\"\n implementationNames.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- \"ExecutorFacet\"\n implementationNames.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ \"AdminFacet\"\n implementationNames.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ \"GettersFacet\"\n implementationNames.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ \"MailboxFacet\"\n implementationNames.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n reference ProxyAdmin (eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n reference RollupDAManager (eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45)\n +++ description: None\n```"
}
]
},
{
"id": "9a020482",
"date": "Thu, 21 Aug 2025 14:49:43 GMT",
"timestamp": 1755787720,
"description": "Upgraded verifeirs to version 28.1.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.7:\n+ [\"2025-08-21T06:13:47.000Z\",\"0x7fb079169799d3618fdbbde9815e5e1b0afeb2191b301dfb80c9811b67b38489\",[\"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 7\n+ 8\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084288\n+ 120259084289\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n+ \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```"
}
]
},
{
"id": "23c338a8",
"date": "Thu, 31 Jul 2025 10:25:51 GMT",
"timestamp": 1753944307,
"description": "v28 upgrade to standard contracts.",
"isHighSeverity": true,
"changeCount": 38,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or eth: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 CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$implementation.0:\n- \"eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.$implementation.1:\n- \"eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.$implementation.2:\n- \"eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.$implementation.3:\n- \"eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.$pastUpgrades.6:\n+ [\"2025-07-30T07:52:47.000Z\",\"0x8428717649285a036a7d0463dad7fbec8f244330ddf804401480f369a76e3ecd\",[\"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 6\n+ 7\n values.facetAddresses.0:\n- \"eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.facetAddresses.1:\n- \"eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.facetAddresses.2:\n- \"eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.facetAddresses.3:\n- \"eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.facets.eth: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.eth: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.eth: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.eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\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.getL2BootloaderBytecodeHash:\n- \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n+ \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+ \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n+ \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 115964116992\n+ 120259084288\n values.getSemverProtocolVersion.1:\n- 27\n+ 28\n values.getVerifier:\n- \"eth:0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n+ \"eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n implementationNames.eth:0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- \"AdminFacet\"\n implementationNames.eth:0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- \"GettersFacet\"\n implementationNames.eth:0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- \"MailboxFacet\"\n implementationNames.eth:0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- \"ExecutorFacet\"\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 }\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 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": "13cce2f8",
"date": "Mon, 14 Jul 2025 12:47:15 GMT",
"timestamp": 1752497235,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 11,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or eth: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 CronosChainAdminMultisig (0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce)\n +++ description: None\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 CronosZkEVMAdmin (0x6a88E8f6B5382d87F39213eB3df43c5FF2498Dd4)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc)\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ description: Contract that 'verifies' the data availability for validiums. This implementation only checks the correct formatting and does not serve as a DA oracle. Can be used by ZK stack validiums as the L1 part of a DAValidator pair.\n```\n\n```diff\n+ Status: CREATED\n contract TransactionFiltererDenyList (0xA8998F231a660Eca365B382943c71ad9b7619139)\n +++ description: None\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```\n\n```diff\n+ Status: CREATED\n contract TxFiltererOwnerMultisig (0xC774CDFc4d2AcE7aaD12D77B6A3752a393E1ab8b)\n +++ description: None\n```"
}
]
},
{
"id": "10ea847c",
"date": "Fri, 30 May 2025 04:33:32 GMT",
"timestamp": 1748579612,
"description": "v27 upgrade to standard contracts.",
"isHighSeverity": true,
"changeCount": 47,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.1:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0xbc2380479529743c27e6ab96cdf08210319fadcbca0856cf50c6b1b54bf8437f\"\n sourceHashes.0:\n- \"0xbceaa498ea422a98ec91f01d7b76774610e543c9efd855141de933065f32b308\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\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.5:\n+ [\"2024-07-30T16:30:35.000Z\",\"0x98231507bfbba69996de5a8572d8f83ccf9756be6232d3f9431e2fc68c98d58b\",[\"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\",\"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\",\"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\",\"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"]]\n values.$pastUpgrades.3.2:\n- \"0x98231507bfbba69996de5a8572d8f83ccf9756be6232d3f9431e2fc68c98d58b\"\n+ [\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]\n values.$pastUpgrades.3.1:\n- [\"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\",\"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\",\"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\",\"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"]\n+ \"2025-03-26T09:58:23.000Z\"\n values.$pastUpgrades.3.0:\n- \"2024-07-30T16:30:35.000Z\"\n+ \"0x8a8381da196ef20e8eb6868cdfff6f518ea9affc197a6ba7e607e9bd52947d3a\"\n values.$pastUpgrades.2.2.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$pastUpgrades.2.2.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$pastUpgrades.2.2.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$pastUpgrades.2.2.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.2.1:\n- \"2025-03-26T09:58:23.000Z\"\n+ \"0xe90b1302fcd633e9c1158daba6a6f05512efb7bc437b79eeb4f1a87d52dda076\"\n values.$pastUpgrades.2.0:\n- \"0x8a8381da196ef20e8eb6868cdfff6f518ea9affc197a6ba7e607e9bd52947d3a\"\n+ \"2025-05-28T08:07:23.000Z\"\n values.$upgradeCount:\n- 5\n+ 6\n values.facetAddresses.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.facetAddresses.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.facetAddresses.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.facetAddresses.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n+ \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+ \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 111669149696\n+ 115964116992\n values.getSemverProtocolVersion.0:\n- 26\n+ 27\n values.getVerifier:\n- \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n+ \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n values.getL2EvmEmulatorBytecodeHash:\n+ \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n implementationNames.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- \"AdminFacet\"\n implementationNames.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- \"GettersFacet\"\n implementationNames.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- \"MailboxFacet\"\n implementationNames.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- \"ExecutorFacet\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "08162289",
"date": "Wed, 02 Apr 2025 15:08:25 GMT",
"timestamp": 1743606505,
"description": "shared zk stack contracts upgraded to v26: config related changes for all children chains.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ description: Contract that 'verifies' the data availability for validiums. This implementation only checks the correct formatting and does not serve as a DA oracle. Can be used by ZK stack validiums as the L1 part of a DAValidator pair.\n```"
}
]
},
{
"id": "22f38d0d",
"date": "Fri, 28 Mar 2025 10:40:08 GMT",
"timestamp": 1743158408,
"description": "v26 upgrade.",
"isHighSeverity": true,
"changeCount": 63,
"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 CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n template:\n- \"shared-zk-stack/Diamond\"\n+ \"shared-zk-stack/Diamond_v26\"\n sourceHashes.4:\n- \"0xdf47c6cd4fcffcfa4a670e1544e2391acc365cd7fd9b8e7583d58b28dff50c40\"\n+ \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n sourceHashes.3:\n- \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.2:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n sourceHashes.1:\n- \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n+ \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n sourceHashes.0:\n- \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n+ \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n description:\n- \"The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\"\n+ \"The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\"\n issuedPermissions.5:\n+ {\"permission\":\"interact\",\"to\":\"0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce\",\"description\":\"manage fees, apply predefined upgrades and manage censorship through a TransactionFilterer (ChainAdmin role).\",\"via\":[{\"address\":\"0x6a88E8f6B5382d87F39213eB3df43c5FF2498Dd4\"}]}\n issuedPermissions.4.to:\n- \"0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce\"\n+ \"0xC774CDFc4d2AcE7aaD12D77B6A3752a393E1ab8b\"\n issuedPermissions.3.to:\n- \"0xC774CDFc4d2AcE7aaD12D77B6A3752a393E1ab8b\"\n+ \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n issuedPermissions.2.to:\n- \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n issuedPermissions.2.description:\n- \"manage fees, apply predefined upgrades and manage censorship through a TransactionFilterer (ChainAdmin role).\"\n+ \"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\"\n issuedPermissions.2.via.0:\n- {\"address\":\"0x6a88E8f6B5382d87F39213eB3df43c5FF2498Dd4\"}\n values.$implementation.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.$implementation.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.$implementation.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.$implementation.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.$pastUpgrades.4:\n+ [\"2024-07-30T16:30:35.000Z\",\"0x98231507bfbba69996de5a8572d8f83ccf9756be6232d3f9431e2fc68c98d58b\",[\"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\",\"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\",\"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\",\"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"]]\n values.$pastUpgrades.2.2:\n- \"0x98231507bfbba69996de5a8572d8f83ccf9756be6232d3f9431e2fc68c98d58b\"\n+ [\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]\n values.$pastUpgrades.2.1:\n- [\"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\",\"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\",\"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\",\"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"]\n+ \"2025-03-26T09:58:23.000Z\"\n values.$pastUpgrades.2.0:\n- \"2024-07-30T16:30:35.000Z\"\n+ \"0x8a8381da196ef20e8eb6868cdfff6f518ea9affc197a6ba7e607e9bd52947d3a\"\n values.$upgradeCount:\n- 4\n+ 5\n values.daMode:\n- 1\n values.facetAddresses.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.facetAddresses.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.facetAddresses.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.facetAddresses.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getBaseTokenBridge:\n- \"0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB\"\n values.getL2BootloaderBytecodeHash:\n- \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n+ \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n+ \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 107374182400\n+ 111669149696\n values.getSemverProtocolVersion.0:\n- 25\n+ 26\n values.getStateTransitionManager:\n- \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n values.getVerifier:\n- \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n+ \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n values.txFilterer:\n- [\"0xA8998F231a660Eca365B382943c71ad9b7619139\"]\n values.validators.1:\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n values.getBaseTokenAssetId:\n+ \"0x6ecd2c6d40ee7219f2e91c863d83d919c56dc87d93915f68b90119ab5fd25c42\"\n values.getChainId:\n+ 388\n values.getChainTypeManager:\n+ \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n+++ severity: HIGH\n values.getDAValidatorPair:\n+ [\"0x907b30407249949521Bf0c89A43558dae200146A\",\"0xFa30EAe30351A83809657299F6Cad9557c232e8C\"]\n values.getSettlementLayer:\n+ \"0x0000000000000000000000000000000000000000\"\n+++ description: This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\n+++ severity: HIGH\n values.getTransactionFilterer:\n+ \"0xA8998F231a660Eca365B382943c71ad9b7619139\"\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 (0x7fEA26A181A792B5107ee0a31e434F5dBcbBe0B7) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n contract undefined (0xb9d48DaF26F3CBE01A959F09f98E8a2eC8204122) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```"
}
]
},
{
"id": "49eb01c0",
"date": "Tue, 11 Mar 2025 08:00:09 GMT",
"timestamp": 1741680009,
"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": "abcda97b",
"date": "Mon, 03 Feb 2025 14:33:47 GMT",
"timestamp": 1738593227,
"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": "3674daf1",
"date": "Tue, 28 Jan 2025 06:34:17 GMT",
"timestamp": 1738046057,
"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": "53153048",
"date": "Thu, 23 Jan 2025 09:37:44 GMT",
"timestamp": 1737625064,
"description": "Upgrade to v25 completed.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: None\n values.getL2SystemContractsUpgradeBatchNumber:\n- 268\n+ 0\n values.getL2SystemContractsUpgradeBlockNumber:\n- 268\n+ 0\n values.getL2SystemContractsUpgradeTxHash:\n- \"0xd3086b71c95ce83e7f3d30ab1890ada2334695a05b65715e56f42d96b22c8674\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "b3132a35",
"date": "Wed, 22 Jan 2025 08:09:07 GMT",
"timestamp": 1737533347,
"description": "Upgrade to the known protocol version 25! ['protocol defence' upgrade](https://github.com/matter-labs/era-contracts/pull/774).\n\nThis upgrade brings formatting, gas optimizations and other minor changes.",
"isHighSeverity": false,
"changeCount": 33,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract Verifier (0x70F3FBf8a427155185Ec90BED8a3434203de9604)\n +++ description: None\n```\n\n```diff\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\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.3:\n+ [\"2025-01-22T06:36:23.000Z\",\"0x2784286656e572cfe0abf2117628fdc5a6cd12e5c060de171c54063b273bc216\",[\"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\",\"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\",\"0x5575218cECd370E1d630d1AdB03c254B0B376821\",\"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.facetAddresses.3:\n- \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n+ \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n values.facetAddresses.2:\n- \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n+ \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n values.facetAddresses.1:\n- \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n+ \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n values.facetAddresses.0:\n- \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n+ \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n values.facets.0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0xE60E94fCCb18a81D501a38959E532C0A85A1be89:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0xCDB6228b616EEf8Df47D69A372C4f725C43e718C:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xaD193aDe635576d8e9f7ada71Af2137b16c64075:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n+ [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n+ [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n+ [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n+ [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x010008e742608b21bf7eb23c1a9d0602047e3618b464c9b59c0fba3b3d7ab66e\"\n+ \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x01000563374c277a2c1e34659a2a1e87371bb6d852ce142022d497bfb50b9e32\"\n+ \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n values.getL2SystemContractsUpgradeBatchNumber:\n- 0\n+ 268\n values.getL2SystemContractsUpgradeBlockNumber:\n- 0\n+ 268\n values.getL2SystemContractsUpgradeTxHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0xd3086b71c95ce83e7f3d30ab1890ada2334695a05b65715e56f42d96b22c8674\"\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: CREATED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: None\n```"
}
]
},
{
"id": "de5a85d4",
"date": "Wed, 02 Oct 2024 07:13:23 GMT",
"timestamp": 1727853203,
"description": "upgradeChainFromVersion() called, upgrading to protocol version 103079215106. This is the latest version used by ZKsync Era, effectively bringing no changes for CronosZkEvm since the postUpgradeCalldata is empty and the diamond implementations are the same as last version. (Era used this upgrade to change an admin) Upgrader role is given to the old Admin EOA (no net perm changes).",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract CronosZkEVMAdmin (0x6a88E8f6B5382d87F39213eB3df43c5FF2498Dd4) {\n +++ description: None\n values.accessControl.UPGRADER.members.2:\n+ \"0xC774CDFc4d2AcE7aaD12D77B6A3752a393E1ab8b\"\n }\n```\n\n```diff\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: None\n values.$pastUpgrades.2:\n+ [\"2024-10-02T06:36:11.000Z\",[\"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\",\"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\",\"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\",\"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"]]\n values.$upgradeCount:\n- 2\n+ 3\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": "5d4cdf61",
"date": "Mon, 30 Sep 2024 09:28:14 GMT",
"timestamp": 1727688494,
"description": "CronosZkEVMAdmin upgrade: New IChainAdmin interface with multicall ability, thus fully inheriting the ChainAdmin permissions in the Diamond. Project config updated, transactionFilterer permissions added.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract CronosZkEVMAdmin (0x66eF951aEC26987915582340bCAA569E5Be67cDC)\n +++ description: None\n```\n\n```diff\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: None\n values.getAdmin:\n- \"0x66eF951aEC26987915582340bCAA569E5Be67cDC\"\n+ \"0x6a88E8f6B5382d87F39213eB3df43c5FF2498Dd4\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract CronosChainAdminMultisig (0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract CronosZkEVMAdmin (0x6a88E8f6B5382d87F39213eB3df43c5FF2498Dd4)\n +++ description: None\n```"
}
]
},
{
"id": "72da61d7",
"date": "Fri, 23 Aug 2024 07:26:48 GMT",
"timestamp": 1724398008,
"description": "Verified the bridge proxy contract.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: None\n unverified:\n- true\n }\n```"
}
]
},
{
"id": "d501b213",
"date": "Thu, 15 Aug 2024 07:10:34 GMT",
"timestamp": 1723705834,
"description": "The pending owner now became an actual owner. No pending owner currently.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract TransactionFiltererDenyList (0xA8998F231a660Eca365B382943c71ad9b7619139) {\n +++ description: None\n values.owner:\n- \"0x143524d0ac8D7f35a2133b6B0a7567e0E3393137\"\n+ \"0xC774CDFc4d2AcE7aaD12D77B6A3752a393E1ab8b\"\n values.pendingOwner:\n- \"0xC774CDFc4d2AcE7aaD12D77B6A3752a393E1ab8b\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "84b93c8f",
"date": "Wed, 14 Aug 2024 08:16:16 GMT",
"timestamp": 1723623376,
"description": "All roles have been revoked from the EOA and a multisig (2/3) has been granted those roles.\nA pending owner is added to TransactionFiltererDenyList, which is just a step in their ownership transfer process, it will become the actual owner once the entire process is completed.",
"isHighSeverity": false,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract CronosZkEVMAdmin (0x66eF951aEC26987915582340bCAA569E5Be67cDC) {\n +++ description: None\n values.accessControl.ADMIN.members.1:\n- \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n+ \"0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce\"\n values.accessControl.ADMIN.members.0:\n- \"0x143524d0ac8D7f35a2133b6B0a7567e0E3393137\"\n+ \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n values.accessControl.ORACLE.members.1:\n- \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n+ \"0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce\"\n values.accessControl.ORACLE.members.0:\n- \"0x143524d0ac8D7f35a2133b6B0a7567e0E3393137\"\n+ \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n values.accessControl.UPGRADER.members.1:\n- \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n+ \"0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce\"\n values.accessControl.UPGRADER.members.0:\n- \"0x143524d0ac8D7f35a2133b6B0a7567e0E3393137\"\n+ \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n values.accessControl.FEE_ADMIN.members.1:\n- \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n+ \"0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce\"\n values.accessControl.FEE_ADMIN.members.0:\n- \"0x143524d0ac8D7f35a2133b6B0a7567e0E3393137\"\n+ \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n }\n```\n\n```diff\n contract TransactionFiltererDenyList (0xA8998F231a660Eca365B382943c71ad9b7619139) {\n +++ description: None\n values.pendingOwner:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0xC774CDFc4d2AcE7aaD12D77B6A3752a393E1ab8b\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract AdminMultisig (0x4c57b73435FcB2D60AAf581e44d6a8AFc57ddFce)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DenyListOwnerMultisig (0xC774CDFc4d2AcE7aaD12D77B6A3752a393E1ab8b)\n +++ description: None\n```"
}
]
},
{
"id": "f63e6908",
"date": "Mon, 12 Aug 2024 13:07:34 GMT",
"timestamp": 1723468054,
"description": "A second EOA is given multiple roles, now there are two EOAs with those.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract CronosZkEVMAdmin (0x66eF951aEC26987915582340bCAA569E5Be67cDC) {\n +++ description: None\n values.accessControl.ADMIN.members.1:\n+ \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n values.accessControl.ORACLE.members.1:\n+ \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n values.accessControl.UPGRADER.members.1:\n+ \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n values.accessControl.FEE_ADMIN.members.1:\n+ \"0xfD7a03Cdb68E6488F950108A4d24f15519b87339\"\n }\n```"
}
]
},
{
"id": "48b6a14c",
"date": "Thu, 08 Aug 2024 07:17:33 GMT",
"timestamp": 1723101453,
"description": "Updated base token gas multiplier.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: None\n values.baseTokenGasPriceMultiplierNominator:\n- 40000\n+ 25000\n }\n```"
}
]
},
{
"id": "a3412d68",
"date": "Thu, 01 Aug 2024 08:25:00 GMT",
"timestamp": 1722500700,
"description": "Cronoszkevm is still on block 1 (verified).\nLocal Admin role (see ZKsync Era diagrams) is changed from an EOA to a contract `CronosZkEVMAdmin` which allows for splitting of the Admin's permissions via accessControl. Currently all roles are given to the `0x143524d0ac8D7f35a2133b6B0a7567e0E3393137` EOA.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc) {\n +++ description: None\n values.getAdmin:\n- \"0x143524d0ac8D7f35a2133b6B0a7567e0E3393137\"\n+ \"0x66eF951aEC26987915582340bCAA569E5Be67cDC\"\n values.getL2SystemContractsUpgradeBatchNumber:\n- 1\n+ 0\n values.getL2SystemContractsUpgradeBlockNumber:\n- 1\n+ 0\n values.getL2SystemContractsUpgradeTxHash:\n- \"0xd05d194051ec55ccc2207d19499a7959c87327586d85b0914684b0f3319cbeff\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract CronosZkEVMAdmin (0x66eF951aEC26987915582340bCAA569E5Be67cDC)\n +++ description: None\n```"
}
]
},
{
"id": "e51c817d",
"date": "Wed, 31 Jul 2024 10:08:17 GMT",
"timestamp": 1722420497,
"description": "Initial discovery:\nZK stack chain in ValidiumMode (`getPubdataPricingMode : 1`) sharing the STM, ValidatorTimelock, Verifier and all diamond facet implementations with ZKsync Era.\nDiamondProxy not yet verified which is not really a problem for our discovery?. Admin EOA so far (for the non-shared parts). BaseToken is zkCRO.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract Verifier (0x70F3FBf8a427155185Ec90BED8a3434203de9604)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract CronosZkEvm (0x7b2DA4e77BAE0e0d23c53C3BE6650497d0576CFc)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract TransactionFiltererDenyList (0xA8998F231a660Eca365B382943c71ad9b7619139)\n +++ description: None\n```"
}
]
}
]
+16 -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* Can interact with BridgeHub\n * set critical contract addresses for the shared cluster, register settlement layers, pause and unpause migrations and the bridge and manage zk chain registration [via: ProtocolUpgradeHandler]\n* Can interact with L1NativeTokenVault\n * pause / unpause the bridge [via: ProtocolUpgradeHandler]\n* Can interact with ChainTypeManager\n * manage the shared ValidatorTimelock contract address and the admin role, register and execute upgrades (and set their deadlines), freeze, revert batches and set permissioned validators and fee params for all connected chains [via: ProtocolUpgradeHandler]\n* Can interact with L1Nullifier\n * pause, unpause and set critical escrow address references [via: ProtocolUpgradeHandler]\n* Can interact with ChainAssetHandler\n * pause, resume chain migrations [via: ProtocolUpgradeHandler]\n* Can interact with RollupDAManager\n * manage allowed rollup DA pairs (allowed to be used by rollups in permanent rollup mode) [via: ProtocolUpgradeHandler]",
"discoveryDrivenData": true
},
{
"id": "GrvtChainAdminMultisig",
"name": "GrvtChainAdminMultisig",
"description": "A Multisig with 4/7 threshold. \n* Can upgrade **with no delay**\n * GRVTTransactionFilterer \n * GRVTBridgeProxy \n* Can interact with GrvtZkEvmAdmin\n * set the conversion factor for gas token deposits \n* Can interact with Diamond\n * administrate operator roles for this chain in the ValidatorTimelock, manage fees, apply predefined upgrades, manage censorship through a TransactionFilterer, set DA mode, migrate the chain to whitelisted settlement layers (Chain Admin role) [via: GrvtZkEvmAdmin]",
"accounts": [
{
"address": "eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5",
"type": "Contract",
"isVerified": true,
"name": "0x3a23…19e5",
"url": "https://etherscan.io/address/0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x7C1B26554cF3A724613bF47B24f7C65F324702f9",
"type": "EOA",
"isVerified": true,
"name": "0x7C1B…02f9",
"url": "https://etherscan.io/address/0x7C1B26554cF3A724613bF47B24f7C65F324702f9"
},
{
"address": "eth:0x436694cf0Fb5BF20F96c1FBA1315B26B32f06F4b",
"type": "EOA",
"isVerified": true,
"name": "0x4366…6F4b",
"url": "https://etherscan.io/address/0x436694cf0Fb5BF20F96c1FBA1315B26B32f06F4b"
},
{
"address": "eth:0x79BfE9868a2613F3327FB2B9e3a39959165118F4",
"type": "EOA",
"isVerified": true,
"name": "0x79Bf…18F4",
"url": "https://etherscan.io/address/0x79BfE9868a2613F3327FB2B9e3a39959165118F4"
},
{
"address": "eth:0xC8552d52A6a8e92Ea37f3a305dE5e8dDbeB6e490",
"type": "EOA",
"isVerified": true,
"name": "0xC855…e490",
"url": "https://etherscan.io/address/0xC8552d52A6a8e92Ea37f3a305dE5e8dDbeB6e490"
},
{
"address": "eth:0x4738eDE7Fb2d3E5596867cf60c668779de7CE8C4",
"type": "EOA",
"isVerified": true,
"name": "0x4738…E8C4",
"url": "https://etherscan.io/address/0x4738eDE7Fb2d3E5596867cf60c668779de7CE8C4"
},
{
"address": "eth:0xE1Fd2981A9FbAAfBB73Cf253234516ECcaf4AFcE",
"type": "EOA",
"isVerified": true,
"name": "0xE1Fd…AFcE",
"url": "https://etherscan.io/address/0xE1Fd2981A9FbAAfBB73Cf253234516ECcaf4AFcE"
},
{
"address": "eth:0x9A4484BBDae765A84c802Cf0A4777D8b16AB1270",
"type": "EOA",
"isVerified": true,
"name": "0x9A44…1270",
"url": "https://etherscan.io/address/0x9A4484BBDae765A84c802Cf0A4777D8b16AB1270"
}
],
"discoveryDrivenData": true
},
{
"id": "Matter Labs Multisig",
"name": "Matter Labs Multisig",
"description": "A Multisig with 4/7 threshold. \n* Can upgrade **with no delay**\n * ServerNotifier [via: EraChainAdminProxy → ProxyAdmin]\n* Can interact with BridgeHub\n * create new zk chains (based on the current version), register tokens (ZK cluster Admin role) [via: EraChainAdminProxy]\n* Can interact with ChainTypeManager\n * set the pending admin of this contract and the ServerNotifier contract address (ZK cluster Admin role) [via: EraChainAdminProxy]",
"accounts": [
{
"address": "eth:0x4e4943346848c4867F81dFb37c4cA9C5715A7828",
"type": "Contract",
"isVerified": true,
"name": "0x4e49…7828",
"url": "https://etherscan.io/address/0x4e4943346848c4867F81dFb37c4cA9C5715A7828"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEE7d66B84175cc423900595d1807A0371D66dE46",
"type": "EOA",
"isVerified": true,
"name": "0xEE7d…dE46",
"url": "https://etherscan.io/address/0xEE7d66B84175cc423900595d1807A0371D66dE46"
},
{
"address": "eth:0x3F0009D00cc78979d00Eb635490F23E8d6aCc481",
"type": "EOA",
"isVerified": true,
"name": "0x3F00…c481",
"url": "https://etherscan.io/address/0x3F0009D00cc78979d00Eb635490F23E8d6aCc481"
},
{
"address": "eth:0xC9A814A4dFE108A4d2b0C01abb4c196Ed7FB3D83",
"type": "EOA",
"isVerified": true,
"name": "0xC9A8…3D83",
"url": "https://etherscan.io/address/0xC9A814A4dFE108A4d2b0C01abb4c196Ed7FB3D83"
},
{
"address": "eth:0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc",
"type": "EOA",
"isVerified": true,
"name": "0x3068…d2Bc",
"url": "https://etherscan.io/address/0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc"
},
{
"address": "eth:0xFAdb20191Ab38362C50f52909817B74214CA79AE",
"type": "EOA",
"isVerified": true,
"name": "0xFAdb…79AE",
"url": "https://etherscan.io/address/0xFAdb20191Ab38362C50f52909817B74214CA79AE"
},
{
"address": "eth:0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28",
"type": "EOA",
"isVerified": true,
"name": "0xAf0B…9B28",
"url": "https://etherscan.io/address/0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28"
},
{
"address": "eth:0x7408A268e5E6e8F08917c5b71015F4B9044970C7",
"type": "EOA",
"isVerified": true,
"name": "0x7408…70C7",
"url": "https://etherscan.io/address/0x7408A268e5E6e8F08917c5b71015F4B9044970C7"
}
],
"discoveryDrivenData": true
},
{
"id": "SecurityCouncil",
"name": "SecurityCouncil",
"description": "A Multisig with 6/8 threshold. \nCustom Multisig implementation that has a general threshold of 6 but also specific thresholds for upgrade approvals (4) or soft freezes (3).\n* Can interact with ProtocolUpgradeHandler\n * soft freeze, hard freeze, approve a protocol upgrade \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0x59195219d1176E42f8e607e9AC114926D47f9035",
"type": "Contract",
"isVerified": true,
"name": "0x5919…9035",
"url": "https://etherscan.io/address/0x59195219d1176E42f8e607e9AC114926D47f9035"
}
],
"chain": "ethereum",
"references": [
{
"title": "Security Council members - ZK Nation docs",
"url": "https://docs.zknation.io/zksync-governance/schedule-3-zksync-security-council"
}
],
"participants": [
{
"address": "eth:0x34Ea62D4b9bBB8AD927eFB6ab31E3Ab3474aC93a",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x34Ea62D4b9bBB8AD927eFB6ab31E3Ab3474aC93a"
},
{
"address": "eth:0x35eA56fd9eAd2567F339Eb9564B6940b9DD5653F",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x35eA56fd9eAd2567F339Eb9564B6940b9DD5653F"
},
{
"address": "eth:0x69462a81ba94D64c404575f1899a464F123497A2",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x69462a81ba94D64c404575f1899a464F123497A2"
},
{
"address": "eth:0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0"
},
{
"address": "eth:0x9B8Be3278B7F0168D82059eb6BAc5991DcdfA803",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x9B8Be3278B7F0168D82059eb6BAc5991DcdfA803"
},
{
"address": "eth:0xB7aC3A79A23B148c85fba259712c5A1e7ad0ca44",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xB7aC3A79A23B148c85fba259712c5A1e7ad0ca44"
},
{
"address": "eth:0xc3Abc9f9AA75Be8341E831482cdA0125a7B1A23e",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xc3Abc9f9AA75Be8341E831482cdA0125a7B1A23e"
},
{
"address": "eth:0xFB90Da9DC45378A1B50775Beb03aD10C7E8DC231",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xFB90Da9DC45378A1B50775Beb03aD10C7E8DC231"
}
],
"discoveryDrivenData": true
},
{
"id": "Guardians",
"name": "Guardians",
"description": "A Multisig with 5/8 threshold. \nCustom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n* Can interact with ProtocolUpgradeHandler\n * extend the legal veto period, approve a protocol upgrade \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0x600dA620Ab29F41ABC6596a15981e14cE58c86b8",
"type": "Contract",
"isVerified": true,
"name": "0x600d…86b8",
"url": "https://etherscan.io/address/0x600dA620Ab29F41ABC6596a15981e14cE58c86b8"
}
],
"chain": "ethereum",
"references": [
{
"title": "Guardians - ZK Nation docs",
"url": "https://docs.zknation.io/zksync-governance/schedule-4-zksync-guardians"
}
],
"participants": [
{
"address": "eth:0x015318c16AE443a20DE0A776dB06a59F0D279057",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x015318c16AE443a20DE0A776dB06a59F0D279057"
},
{
"address": "eth:0x178D8Eb1A1fb81B5102808A83318Bb04C6a9fC6D",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x178D8Eb1A1fb81B5102808A83318Bb04C6a9fC6D"
},
{
"address": "eth:0x2A90830083C5Ca1f18d7AA7fCDC2998f93475384",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x2A90830083C5Ca1f18d7AA7fCDC2998f93475384"
},
{
"address": "eth:0x538612F6eba6ff80FBD95D60dCDee16b8FfF2c0f",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x538612F6eba6ff80FBD95D60dCDee16b8FfF2c0f"
},
{
"address": "eth:0x55c671BcE13120387Ded710A1d1b80C0e3d8E857",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x55c671BcE13120387Ded710A1d1b80C0e3d8E857"
},
{
"address": "eth:0x590926dBCDfD19627c3BbD2A6Eb96DeC7a3AbF69",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x590926dBCDfD19627c3BbD2A6Eb96DeC7a3AbF69"
},
{
"address": "eth:0x6D26874130A174839b9cd8CB87Ed4E09D0c1a5f0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x6D26874130A174839b9cd8CB87Ed4E09D0c1a5f0"
},
{
"address": "eth:0xCe7a3dFcc35602155809920Ff65e093aa726f6cf",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xCe7a3dFcc35602155809920Ff65e093aa726f6cf"
}
],
"discoveryDrivenData": true
},
{
"id": "ValidatorTimelock",
"name": "ValidatorTimelock",
"accounts": [
{
"address": "eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"type": "Contract",
"isVerified": true,
"name": "0x2e51…b776",
"url": "https://etherscan.io/address/0x2e5110cF18678Ec99818bFAa849B8C881744b776"
}
],
"chain": "ethereum",
"description": "Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n* Can interact with Diamond\n * commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock ",
"description": "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": "GRVTTransactionFilterer",
"name": "GRVTTransactionFilterer",
"accounts": [
{
"address": "eth:0x3Cd52B238Ac856600b22756133eEb31ECb25109a",
"type": "Contract",
"isVerified": true,
"name": "0x3Cd5…109a",
"url": "https://etherscan.io/address/0x3Cd52B238Ac856600b22756133eEb31ECb25109a"
}
],
"chain": "ethereum",
"description": "* Can interact with Diamond\n * define addresses that can send transactions from L1 to L2 (e.g. for deposits, withdrawals, queued transactions). This is enforced in the Mailbox Facet ",
"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": "GrvtBridgeAdminMultisig",
"name": "GrvtBridgeAdminMultisig",
"description": "A Multisig with 4/7 threshold. \n* Can interact with GRVTTransactionFilterer\n * manage the whitelist of addresses ",
"accounts": [
{
"address": "eth:0x5CC33778d3aFa0979e6C59efEE27b73496c1B65c",
"type": "Contract",
"isVerified": true,
"name": "0x5CC3…B65c",
"url": "https://etherscan.io/address/0x5CC33778d3aFa0979e6C59efEE27b73496c1B65c"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x4738eDE7Fb2d3E5596867cf60c668779de7CE8C4",
"type": "EOA",
"isVerified": true,
"name": "0x4738…E8C4",
"url": "https://etherscan.io/address/0x4738eDE7Fb2d3E5596867cf60c668779de7CE8C4"
},
{
"address": "eth:0xE1Fd2981A9FbAAfBB73Cf253234516ECcaf4AFcE",
"type": "EOA",
"isVerified": true,
"name": "0xE1Fd…AFcE",
"url": "https://etherscan.io/address/0xE1Fd2981A9FbAAfBB73Cf253234516ECcaf4AFcE"
},
{
"address": "eth:0x9A4484BBDae765A84c802Cf0A4777D8b16AB1270",
"type": "EOA",
"isVerified": true,
"name": "0x9A44…1270",
"url": "https://etherscan.io/address/0x9A4484BBDae765A84c802Cf0A4777D8b16AB1270"
},
{
"address": "eth:0xC8552d52A6a8e92Ea37f3a305dE5e8dDbeB6e490",
"type": "EOA",
"isVerified": true,
"name": "0xC855…e490",
"url": "https://etherscan.io/address/0xC8552d52A6a8e92Ea37f3a305dE5e8dDbeB6e490"
},
{
"address": "eth:0x79BfE9868a2613F3327FB2B9e3a39959165118F4",
"type": "EOA",
"isVerified": true,
"name": "0x79Bf…18F4",
"url": "https://etherscan.io/address/0x79BfE9868a2613F3327FB2B9e3a39959165118F4"
},
{
"address": "eth:0xe224125147fB0a3d0e1eC30Ed1573ed0632727CC",
"type": "EOA",
"isVerified": true,
"name": "0xe224…27CC",
"url": "https://etherscan.io/address/0xe224125147fB0a3d0e1eC30Ed1573ed0632727CC"
},
{
"address": "eth:0x293d3512083507664Ee5EDe44c0477f600e3A3BE",
"type": "EOA",
"isVerified": true,
"name": "0x293d…A3BE",
"url": "https://etherscan.io/address/0x293d3512083507664Ee5EDe44c0477f600e3A3BE"
}
],
"discoveryDrivenData": true
},
{
"id": "Governance",
"name": "Governance",
"accounts": [
{
"address": "eth:0xbdC07D62fA117B195E579c2e299f037b158E7335",
"type": "Contract",
"isVerified": true,
"name": "0xbdC0…7335",
"url": "https://etherscan.io/address/0xbdC07D62fA117B195E579c2e299f037b158E7335"
}
],
"chain": "ethereum",
"description": "Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n* Can interact with GRVTTransactionFilterer\n * address is part of the GRVTTransactionFilterer whitelist ",
"discoveryDrivenData": true
},
{
"id": "GRVTBridgeProxy",
"name": "GRVTBridgeProxy",
"accounts": [
{
"address": "eth:0xE17aeD2fC55f4A876315376ffA49FE6358113a65",
"type": "Contract",
"isVerified": true,
"name": "0xE17a…3a65",
"url": "https://etherscan.io/address/0xE17aeD2fC55f4A876315376ffA49FE6358113a65"
}
],
"chain": "ethereum",
"description": "Checks the signature of the DepositApprover for each deposit and, on succeeding, forwards the user's funds and bridging request to the L1SharedBridge contract to deposit to GRVT.\n* Can interact with GRVTTransactionFilterer\n * address is part of the GRVTTransactionFilterer whitelist ",
"discoveryDrivenData": true
},
{
"id": "Governance",
"name": "Governance",
"accounts": [
{
"address": "eth:0xe81d64195072e4d09639b31Abb257d0096FEa9d1",
"type": "Contract",
"isVerified": true,
"name": "0xe81d…a9d1",
"url": "https://etherscan.io/address/0xe81d64195072e4d09639b31Abb257d0096FEa9d1"
}
],
"chain": "ethereum",
"description": "* Can interact with GRVTTransactionFilterer\n * address is part of the GRVTTransactionFilterer whitelist ",
"discoveryDrivenData": true
},
{
"id": "L1AssetRouter",
"name": "L1AssetRouter",
"accounts": [
{
"address": "eth:0x8829AD80E425C646DAB305381ff105169FeEcE56",
"type": "Contract",
"isVerified": true,
"name": "0x8829…cE56",
"url": "https://etherscan.io/address/0x8829AD80E425C646DAB305381ff105169FeEcE56"
}
],
"chain": "ethereum",
"description": "Canonical central asset router for all ZK stack chains. Routes deposits and withdrawals to the respective asset handlers (like the L1NativeTokenVault); does not escrow funds itself.\n* Can interact with GRVTTransactionFilterer\n * address is part of the GRVTTransactionFilterer whitelist ",
"discoveryDrivenData": true
},
{
"id": "L1Nullifier",
"name": "L1Nullifier",
"accounts": [
{
"address": "eth:0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB",
"type": "Contract",
"isVerified": true,
"name": "0xD7f9…B2cB",
"url": "https://etherscan.io/address/0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB"
}
],
"chain": "ethereum",
"description": "Contract responsible for bookkeeping L1 bridging transactions. Used to finalize withdrawals and reclaim failed deposits. Does not escrow funds.\n* Can interact with GRVTTransactionFilterer\n * address is part of the GRVTTransactionFilterer whitelist ",
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x5c8de5821dd9263F124E8ddbff11C3368Ff86a37",
"type": "EOA",
"isVerified": true,
"name": "0x5c8d…6a37",
"url": "https://etherscan.io/address/0x5c8de5821dd9263F124E8ddbff11C3368Ff86a37",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with GRVTBridgeProxy\n * approve deposits to GRVT via the GRVTBridgeProxy ",
"discoveryDrivenData": true
},
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b",
"type": "EOA",
"isVerified": true,
"name": "0xF29b…550b",
"url": "https://etherscan.io/address/0xF29bFff344c7ef0186432fE30C39fda0cca0550b",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with GRVTTransactionFilterer\n * address is part of the GRVTTransactionFilterer whitelist ",
"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": 1790592210,
"baseTimestamp": 1790944823,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "74029814",
"date": "Fri, 02 Oct 2026 12:42:22 GMT",
"timestamp": 1790944823,
"description": "Executed this proposal: https://www.tally.xyz/gov/zksync/proposal/49883493212277767948924829453899549013679463473253620701602979414799679547598?govId=eip155%3A324%3A0x76705327e682F2d96943280D99464Ab61219e34f. Now each chain admin can increase the execution delay of its chain (`increaseChainExecutionDelay`), the owner can set it freely (`setChainExecutionDelay`). The effective delay for GRVT is tracked in `executionDelayGRVT` (still 3h).\n\nAlso adds a new `UPGRADER_ROLE` that can call `upgradeChainFromVersion()` through the VTL (forwarded to the diamond). Currently nobody holds the role for GRVT yet (tracked in `upgraderVTL`).",
"isHighSeverity": true,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_v31] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\n template:\n- \"shared-zk-stack/ValidatorTimelock_post29\"\n+ \"shared-zk-stack/ValidatorTimelock_v31\"\n sourceHashes.1:\n- \"0x5afea1019ac418e639ce9df65b9653bf0ca88ed81fb0abe0447e87328e39f10c\"\n+ \"0x51d6000b0e4437a2b99d13d332658fffb3da867cd56b05cbcb4bf4f954ff12ff\"\n description:\n- \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\"\n+ \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\"\n values.$implementation:\n- \"eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8\"\n+ \"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"\n values.$pastUpgrades.1:\n+ [\"2026-10-01T12:28:47.000Z\",\"0xdc4278c8b23d99f974a206dcaa1c1e20272c49095fa31eac842210ae97b435a8\",[\"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"]]\n values.$upgradeCount:\n- 1\n+ 2\n+++ severity: HIGH\n values.executionDelayGRVT:\n+ 10800\n+++ severity: HIGH\n values.executionDelayGRVT_fmt:\n+ \"3h\"\n values.MAX_EXECUTION_DELAY:\n+ 2592000\n values.OPTIONAL_UPGRADER_ADMIN_ROLE:\n+ \"0xa1426e789273bde4307f3302768d8e4eb615f0f4dea304f29cccd58ff644d640\"\n values.UPGRADER_ROLE:\n+ \"0x189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3\"\n errors:\n- {\"executionDelayGRVT\":\"Processing error occurred.\",\"executionDelayGRVT_fmt\":\"Processing error occurred.\"}\n fieldMeta.executionDelay.description:\n+ \"Ecosystem-wide minimum execution delay (in seconds), set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n fieldMeta.executionDelay_fmt.description:\n+ \"Ecosystem-wide minimum execution delay, set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n implementationNames.eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8:\n- \"ValidatorTimelock\"\n implementationNames.eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35:\n+ \"ValidatorTimelock\"\n }\n```"
}
]
},
{
"id": "cc5f6a14",
"date": "Fri, 04 Sep 2026 13:46:13 GMT",
"timestamp": 1788529510,
"description": "Governance proposal executed: https://tools.l2beat.com/decoder-new/?hash=0x91b14e9960db6c886e6b0294122f0c5b08398b371f83c83072cab0a00c3c153a&data=AwA. It uses metamask delegation manager to execute a ERC-20 approval + L2 bridgehub transaction that matches the standard grvt gov transaction (e.g. https://tools.l2beat.com/decoder-new/?hash=0x12872dd4becaa4cfd45173bad5b49b2d7d005450ce47e57d05e6346ca4039227&data=AwA).\n\nDecoding was done by chatgpt, our tooling does not support this `_executionCallDatas` format.",
"isHighSeverity": true,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 50\n+ 51\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 50\n+ 51\n }\n```\n\n```diff\n EOA (eth:0xC8552d52A6a8e92Ea37f3a305dE5e8dDbeB6e490) {\n +++ description: None\n proxyType:\n- \"EOA\"\n+ \"EIP7702 EOA\"\n sourceHashes:\n+ [\"0x1f44812af62d28f019e30e8eb2af596fb36c7db9d34576972c0405e110a6ef45\"]\n values:\n+ {\"$implementation\":\"eth:0x63c0c19a282a1B52b07dD5a65b58948A07DAE32B\",\"delegationManager\":\"eth:0xdb9B1e94B5b69Df7e401DDbedE43491141047dB3\",\"DOMAIN_VERSION\":\"1\",\"eip712Domain\":{\"fields\":\"0x0f\",\"name\":\"EIP7702StatelessDeleGator\",\"version\":\"1\",\"chainId\":1,\"verifyingContract\":\"eth:0xC8552d52A6a8e92Ea37f3a305dE5e8dDbeB6e490\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]},\"entryPoint\":\"eth:0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"getDeposit\":0,\"getDomainHash\":\"0xc536bcea32ae75ea8d0d6ee42dabc47d10f68ad66ef093bdae797c707b550513\",\"getNonce\":0,\"NAME\":\"EIP7702StatelessDeleGator\",\"PACKED_USER_OP_TYPEHASH\":\"0xbc37962d8bd1d319c95199bdfda6d3f92baa8903a61b32d5f4ec1f4b36a3bc18\",\"VERSION\":\"1.3.0\"}\n }\n```"
}
]
},
{
"id": "31e24746",
"date": "Fri, 21 Aug 2026 11:15:07 GMT",
"timestamp": 1787310844,
"description": "GrvtChainAdminMultisig upgraded the boojum verifiers to version v0.30.1 (the same version as zksync era). The new verifiers are not yet reproduced.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```\n\n```diff\n contract Diamond (eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.11:\n+ [\"2026-08-20T08:51:47.000Z\",\"0x5de81926ab9765d4294a27405abf5bb82302196cce39c771c2005e9e7cb28611\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 11\n+ 12\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 128849018880\n+ 128849018881\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n+ \"eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierPlonk (eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierFflonk (eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraDualVerifier (eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9 or eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF depending on the supplied proof type.\n```"
}
]
},
{
"id": "60e1a804",
"date": "Mon, 17 Aug 2026 11:30:44 GMT",
"timestamp": 1786966181,
"description": "GrvtChainAdminMultisig upgraded the boojum verifiers to version v0.30.0 (one version behind zksync era). The new verifiers are not yet reproduced.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x9f5C39a2790f38542065E7854b90407371923375 or eth:0xd22cA89e8991FCE568456914c616d303e3142395 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x9f5C39a2790f38542065E7854b90407371923375) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xd22cA89e8991FCE568456914c616d303e3142395) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract Diamond (eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.10:\n+ [\"2026-08-14T08:58:59.000Z\",\"0xba32e7c45d24c1e62cab727c08d3c0134210ba73c27299751060f9810f77427e\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 10\n+ 11\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051589\n+ 128849018880\n values.getSemverProtocolVersion.1:\n- 29\n+ 30\n values.getSemverProtocolVersion.2:\n- 5\n+ 0\n values.getVerifier:\n- \"eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e\"\n+ \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```"
}
]
},
{
"id": "d1472782",
"date": "Wed, 12 Aug 2026 09:57:21 GMT",
"timestamp": 1786528574,
"description": "Rotated two grvt ms members. \n\nUpgraded boojum verifier to v29.5, one version behind the latest zksync era verifier. It is not reproduced yet.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtChainAdminMultisig (eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0x293d3512083507664Ee5EDe44c0477f600e3A3BE\"\n+ \"eth:0x7C1B26554cF3A724613bF47B24f7C65F324702f9\"\n values.$members.1:\n- \"eth:0xe224125147fB0a3d0e1eC30Ed1573ed0632727CC\"\n+ \"eth:0x436694cf0Fb5BF20F96c1FBA1315B26B32f06F4b\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```\n\n```diff\n contract Diamond (eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.9:\n+ [\"2026-08-11T09:38:47.000Z\",\"0xe93d3af0aeb00f811edd3077b734b5e76842842ea919aaeead2c19c4d0157a31\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 9\n+ 10\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051588\n+ 124554051589\n values.getSemverProtocolVersion.2:\n- 4\n+ 5\n values.getVerifier:\n- \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n+ \"eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x9f5C39a2790f38542065E7854b90407371923375 or eth:0xd22cA89e8991FCE568456914c616d303e3142395 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0x9f5C39a2790f38542065E7854b90407371923375) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xd22cA89e8991FCE568456914c616d303e3142395) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "82d2d628",
"date": "Wed, 05 Aug 2026 10:28:03 GMT",
"timestamp": 1785925620,
"description": "Executed 2 gov proposal with several upgrade transactions going to L2: https://tools.l2beat.com/decoder-new/?hash=0x12872dd4becaa4cfd45173bad5b49b2d7d005450ce47e57d05e6346ca4039227&data=AwA and https://tools.l2beat.com/decoder-new/?hash=0xc479b923d2614903ef0405eff70a31859ff0b516993d8d7872e93c4d2c14d2ee&data=AwA.\n\nAlso updated permissions and ownership of various contracts:\n- Expanded admin ms with 4 addresses 2/3 -> 4/7.\n- Created another ms with the same members as the admin for bridge-related contracts.\n- Governance, bridge and trx filterer ownership changed from EOA to 4/7 ms.",
"isHighSeverity": true,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtChainAdminMultisig (eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x293d3512083507664Ee5EDe44c0477f600e3A3BE\"\n values.$members.1:\n+ \"eth:0xe224125147fB0a3d0e1eC30Ed1573ed0632727CC\"\n values.$members.2:\n+ \"eth:0x79BfE9868a2613F3327FB2B9e3a39959165118F4\"\n values.$members.3:\n+ \"eth:0xC8552d52A6a8e92Ea37f3a305dE5e8dDbeB6e490\"\n values.$threshold:\n- 2\n+ 4\n values.multisigThreshold:\n- \"2 of 3 (67%)\"\n+ \"4 of 7 (57%)\"\n }\n```\n\n```diff\n contract GRVTTransactionFilterer (eth:0x3Cd52B238Ac856600b22756133eEb31ECb25109a) [N/A] {\n +++ description: None\n values.acAdmin.0:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x5CC33778d3aFa0979e6C59efEE27b73496c1B65c\"\n values.accessControl.DEFAULT_ADMIN_ROLE.members.0:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x5CC33778d3aFa0979e6C59efEE27b73496c1B65c\"\n }\n```\n\n```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 48\n+ 50\n+++ severity: HIGH\n values.owner:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5\"\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 48\n+ 50\n }\n```\n\n```diff\n contract GRVTBridgeProxy (eth:0xE17aeD2fC55f4A876315376ffA49FE6358113a65) [N/A] {\n +++ description: Checks the signature of the DepositApprover for each deposit and, on succeeding, forwards the user's funds and bridging request to the L1SharedBridge contract to deposit to GRVT.\n values.owner:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x5CC33778d3aFa0979e6C59efEE27b73496c1B65c\"\n }\n```\n\n```diff\n contract Governance (eth:0xe81d64195072e4d09639b31Abb257d0096FEa9d1) [N/A] {\n +++ description: None\n values.owner:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5\"\n }\n```\n\n```diff\n EOA (eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"eth:0x3Cd52B238Ac856600b22756133eEb31ECb25109a\",\"description\":\"manage the whitelist of addresses.\",\"role\":\".acAdmin\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract GrvtBridgeAdminMultisig (eth:0x5CC33778d3aFa0979e6C59efEE27b73496c1B65c) [GnosisSafe]\n +++ description: None\n```"
}
]
},
{
"id": "5fae3b70",
"date": "Mon, 06 Jul 2026 10:04:22 GMT",
"timestamp": 1783332198,
"description": "Governance transaction from L1 -> L2: https://tools.l2beat.com/decoder-new/?hash=0xaca859883993dac67cc7049946aca729dd4287c2eefdc0fc2b465fdc1c2f6906&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 47\n+ 48\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 47\n+ 48\n }\n```"
}
]
},
{
"id": "2308cb89",
"date": "Wed, 01 Jul 2026 10:21:54 GMT",
"timestamp": 1782901251,
"description": "Governance transaction from L1 -> L2: https://tools.l2beat.com/decoder-new/?hash=0x188d7e979cc425fe64a3917bccf81bfc9601ecddc73be546a8d78410e3168846&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 46\n+ 47\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 46\n+ 47\n }\n```"
}
]
},
{
"id": "e5e851e7",
"date": "Thu, 18 Jun 2026 10:20:44 GMT",
"timestamp": 1781777978,
"description": "Upgraded boojum verifier to the latest version (same as zksync era). Also rotated admin ms member.",
"isHighSeverity": true,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtChainAdminMultisig (eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5) [GnosisSafe] {\n +++ description: None\n values.$members.1:\n- \"eth:0x29496817aB0820A5aDa4d5C656Ea8DF79Ba05F3A\"\n+ \"eth:0xE1Fd2981A9FbAAfBB73Cf253234516ECcaf4AFcE\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n contract GrvtZkEvmAdmin (eth:0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) [shared-zk-stack/ChainAdmin] {\n +++ description: A governance proxy that lets eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.6:\n+ {\"_protocolVersion\":124554051588,\"_upgradeTimestamp\":1781759700}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract Diamond (eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.7:\n+ [\"2026-06-16T11:46:11.000Z\",\"0xedafd71bf96d2993dff23fca5d6d2e1ace52468cc10eed9e68cf260529156b7b\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$pastUpgrades.8:\n+ [\"2026-06-18T10:13:35.000Z\",\"0xa5133fa49c851e0a36f14a62515213fb1268e877a6ba35f0978f8c4e369074e9\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 7\n+ 9\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051586\n+ 124554051588\n values.getSemverProtocolVersion.2:\n- 2\n+ 4\n values.getVerifier:\n- \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n+ \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```"
}
]
},
{
"id": "5e48304a",
"date": "Tue, 16 Jun 2026 09:40:42 GMT",
"timestamp": 1781602758,
"description": "New scheduled tx targeting GBT (gas token) and contracts on L2: https://tools.l2beat.com/decoder-new/?hash=0xac73fadffe5aa2eb9b6d9b0ff4d9f1a4fa07eb147c3553d9e70718968bdb0139&data=AwA .",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtZkEvmAdmin (eth:0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) [shared-zk-stack/ChainAdmin] {\n +++ description: A governance proxy that lets eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.5:\n+ {\"_protocolVersion\":124554051587,\"_upgradeTimestamp\":1781074800}\n }\n```\n\n```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 45\n+ 46\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 45\n+ 46\n }\n```"
}
]
},
{
"id": "cc87ac25",
"date": "Wed, 20 May 2026 11:56:59 GMT",
"timestamp": 1779278156,
"description": "One gov-approved transaction to grvt L2: https://tools.l2beat.com/decoder-new/?hash=0x52609446fe9a7597280df6778648d25af4bf6f389765ef506f1f759d6e6d9b41&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 44\n+ 45\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 44\n+ 45\n }\n```"
}
]
},
{
"id": "6a817754",
"date": "Mon, 18 May 2026 10:00:55 GMT",
"timestamp": 1779097887,
"description": "Upgraded GRVT bridge to align with ZK stack state of the art: https://disco.l2beat.com/diff/eth:0xf7B67bDDb74B5eD3De49e1a6Da4D1d7460F00780/eth:0x7F9FCdaf7f65Fd5737De61d8bF5617A9AA8cFaF1. Changes are:\n\n- Interfaces upgraded to the same versions as zksync era has\n- Added bridging ETH\n- Switched to using standard L1AssetRouter\n- Also increased `L2_GAS_LIMIT_DEPOSIT` by the factor of two (the amount of gas that could be used to consume deposit trx on L2).",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GRVTBridgeProxy (eth:0xE17aeD2fC55f4A876315376ffA49FE6358113a65) [N/A] {\n +++ description: Checks the signature of the DepositApprover for each deposit and, on succeeding, forwards the user's funds and bridging request to the L1SharedBridge contract to deposit to GRVT.\n sourceHashes.1:\n- \"0xf5ebf18a9d794626fa9f7aaa9d607e40298981f57ecc7ad15d41e03d8d756e4f\"\n+ \"0x5061251553a3aefbac60a53a4ca37e0da1a7979b38e33e09934e41db023506be\"\n values.$implementation:\n- \"eth:0xf7B67bDDb74B5eD3De49e1a6Da4D1d7460F00780\"\n+ \"eth:0x7F9FCdaf7f65Fd5737De61d8bF5617A9AA8cFaF1\"\n values.$pastUpgrades.1:\n+ [\"2026-05-14T06:34:35.000Z\",\"0xa6b1d1369e7a967309819edfff49e2b878bd97f58bcec51a1f9739c28f4163e3\",[\"eth:0xE9C6E19CaA23801B904335E20a7F2BDFE112CAF8\"]]\n values.$pastUpgrades.2:\n+ [\"2026-05-14T09:56:47.000Z\",\"0xbc38229556154bce739a2fc9f896f5360edb78dd453f44ed9b0284e9ac8d9a6d\",[\"eth:0x7F9FCdaf7f65Fd5737De61d8bF5617A9AA8cFaF1\"]]\n values.$upgradeCount:\n- 1\n+ 3\n values.L2_GAS_LIMIT_DEPOSIT:\n- 1200000\n+ 2400000\n values.ETH_TOKEN_ADDRESS:\n+ \"eth:0x0000000000000000000000000000000000000001\"\n implementationNames.eth:0xf7B67bDDb74B5eD3De49e1a6Da4D1d7460F00780:\n- \"GRVTBridgeProxy\"\n implementationNames.eth:0x7F9FCdaf7f65Fd5737De61d8bF5617A9AA8cFaF1:\n+ \"GRVTBridgeProxy\"\n }\n```"
}
]
},
{
"id": "cf6f885b",
"date": "Tue, 12 May 2026 09:45:26 GMT",
"timestamp": 1778579058,
"description": "Two gov-approved transactions to grvt L2: https://tools.l2beat.com/decoder-new/?hash=0x9c4720dca52947f376a85b3e00f1a8f4fd6866a2c128d5b6857fc77b604c832f&data=AwA, https://tools.l2beat.com/decoder-new/?hash=0xbb0d5b5663bccfe8a0b73211149f0a469e32f6dfaf348f88df8117623b26b2f5&data=AwA.\n\nConfig: use the new flattener implementation.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) [adi/Governance] {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 42\n+ 44\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 42\n+ 44\n }\n```"
}
]
},
{
"id": "926af7eb",
"date": "Mon, 27 Apr 2026 13:19:10 GMT",
"timestamp": 1777295886,
"description": "Another trx to L2 via governance: https://tools.l2beat.com/decoder-new/?hash=0xeab9b42383251bb874b226fd6b1089763b429c60250c33b3c25dcfa24d1e64a2&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 41\n+ 42\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 41\n+ 42\n }\n```"
}
]
},
{
"id": "b1bc4c18",
"date": "Fri, 17 Apr 2026 09:37:51 GMT",
"timestamp": 1776418606,
"description": "A trx on L2 initiated via governance: https://tools.l2beat.com/decoder-new/?hash=0x6ac04a9181161aa6dcb9ad7ffc754e2cb8ffa280aa3b3c33848b8540fdd79bb6&data=AwA. Probably some L2 upgrade.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 40\n+ 41\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 40\n+ 41\n }\n```"
}
]
},
{
"id": "d51a0e22",
"date": "Wed, 08 Apr 2026 08:26:26 GMT",
"timestamp": 1775636722,
"description": "Two trxs on L2 initiated via the governance: https://tools.l2beat.com/decoder-new/?hash=0xa7d217b096fe11b935388c891811da7e9ac0c6c6e83ffa2b3fcc58d70660fabc&data=AwA and https://tools.l2beat.com/decoder-new/?hash=0xfe93a52cfe69dbe665ca3f562787dd5e47a81e5e3bc906b4bc20fe20d876596e&data=AwA.\nAlso rotated MS member.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtChainAdminMultisig (eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5) {\n +++ description: None\n values.$members.0:\n- \"eth:0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"eth:0x4738eDE7Fb2d3E5596867cf60c668779de7CE8C4\"\n }\n```\n\n```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 38\n+ 40\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 38\n+ 40\n }\n```"
}
]
},
{
"id": "8d67ffc2",
"date": "Wed, 01 Apr 2026 15:52:56 GMT",
"timestamp": 1775058712,
"description": "Another proposal https://tools.l2beat.com/decoder-new/?hash=0xc6e49ea96a2f8e5fa8c305588783139488df8199772c6e20c673f8fdd14f9c3a&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 37\n+ 38\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 37\n+ 38\n }\n```"
}
]
},
{
"id": "1a1717aa",
"date": "Mon, 30 Mar 2026 14:33:28 GMT",
"timestamp": 1774881143,
"description": "Another gov L2 upgrade: https://tools.l2beat.com/decoder-new/?hash=0x2ca64710efc0b4f21461ce86f124ce6cb1f7a8d5744cbf5c8d817fb6a36cfa9a&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 36\n+ 37\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 36\n+ 37\n }\n```"
}
]
},
{
"id": "89821927",
"date": "Wed, 25 Mar 2026 10:40:21 GMT",
"timestamp": 1774435159,
"description": "Gov upgrade on L2: https://tools.l2beat.com/decoder-new/?hash=0x923c6a7d1189587410f25b5dbbc9e1a424a86c9da4b0f6a92d84d0e75e062b0f&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 34\n+ 36\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 34\n+ 36\n }\n```"
}
]
},
{
"id": "d7ccc933",
"date": "Mon, 16 Mar 2026 12:10:51 GMT",
"timestamp": 1773662988,
"description": "Another upgrade on L2: https://tools.l2beat.com/decoder-new/?hash=0x7c1018383fb3497a7357518c6a597bf2e79feb352e370e3cea32b4e94ec9f634&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 33\n+ 34\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 33\n+ 34\n }\n```"
}
]
},
{
"id": "de5c499b",
"date": "Fri, 06 Mar 2026 11:04:40 GMT",
"timestamp": 1772795015,
"description": "Executed a proposal to make an upgrade on L2: https://tools.l2beat.com/decoder-new/?hash=0xe22d2c318e36651439ad07df6c3938a27c1bce71b982d13f8fc4593d8d317e03&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 32\n+ 33\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 32\n+ 33\n }\n```"
}
]
},
{
"id": "a0980859",
"date": "Wed, 04 Mar 2026 14:43:10 GMT",
"timestamp": 1772635326,
"description": "Executed a proposal to upgrade a contract on grvt L2: https://tools.l2beat.com/decoder-new/?hash=0x2d3eef6212fe42c32e6abf289e6f32c3ecb13393a1b82bc018333d62aabbb01d&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 31\n+ 32\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 31\n+ 32\n }\n```"
}
]
},
{
"id": "40fc8367",
"date": "Wed, 25 Feb 2026 16:56:38 GMT",
"timestamp": 1772038530,
"description": "Executed two proposals that made calls on L2: https://tools.l2beat.com/decoder-new/?hash=0x0c5a83ed2a512b4bef5e9df04b3059482d300133cd754caf275e7cc8d05d6057&data=AwA, https://tools.l2beat.com/decoder-new/?hash=0x5d5d42502fdf2db575600e2d4f87d7f7a150d10d7570a8a21a0244299396d9b6&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 29\n+ 31\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 29\n+ 31\n }\n```"
}
]
},
{
"id": "1dbe4c28",
"date": "Mon, 16 Feb 2026 14:18:48 GMT",
"timestamp": 1771251447,
"description": "Upgrade executed (target is some diamond contract on L2).",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 28\n+ 29\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 28\n+ 29\n }\n```"
}
]
},
{
"id": "a87ef236",
"date": "Mon, 02 Feb 2026 13:19:32 GMT",
"timestamp": 1770038308,
"description": "Governance executed some trx on L2, looks like some upgrade: https://tools.l2beat.com/decoder-new/?hash=0x90577ac34e4cc9776d6509341ba2cd1cf5e4c64f15b3d475e7eeca885b34e24a&data=AwA.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 27\n+ 28\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 27\n+ 28\n }\n```"
}
]
},
{
"id": "40017e40",
"date": "Wed, 28 Jan 2026 10:55:22 GMT",
"timestamp": 1769597659,
"description": "Scheduled and executed a transaction that probably performed some upgrade on grvt L2: https://tools.l2beat.com/decoder-new/?hash=0xfe573f7a11dfb09da81066b411bb043ee09c55b605c5d120dafcb7663aaa460d&data=AwA. I have not found a link to grvt block explorer to verify it on L2.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 26\n+ 27\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 26\n+ 27\n }\n```"
}
]
},
{
"id": "7deab157",
"date": "Tue, 20 Jan 2026 11:09:25 GMT",
"timestamp": 1768907301,
"description": "Scheduled and executed two proposals (https://etherscan.io/tx/0xb2ed029ae644311610a5c4bc16245ce1212b47763c5046f862e2e1bd8423a6a8#eventlog, https://etherscan.io/tx/0xdecb938d6e5f7e75786e854ded5d52eda3bc916cf536950baa6ba5f5167ae830#eventlog). These proposals initiated calls to L2.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 24\n+ 26\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 24\n+ 26\n }\n```"
}
]
},
{
"id": "9b5065b2",
"date": "Mon, 29 Dec 2025 10:53:11 GMT",
"timestamp": 1767005527,
"description": "Upgraded GRVT to zk stack v 29.2.",
"isHighSeverity": true,
"changeCount": 51,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock2 (eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n contract GrvtZkEvmAdmin (eth:0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) {\n +++ description: A governance proxy that lets eth:0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.4:\n+ {\"_protocolVersion\":124554051586,\"_upgradeTimestamp\":1762315292}\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 21\n+ 24\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 21\n+ 24\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract Diamond (eth:0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.1:\n- \"0xbc2380479529743c27e6ab96cdf08210319fadcbca0856cf50c6b1b54bf8437f\"\n+ \"0xc7513302e4e09efc907df5e645d9f8037b1d02409f9a9089f61061c8951ef1ff\"\n values.$implementation.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.$implementation.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.$implementation.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.$implementation.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.$pastUpgrades.6:\n+ [\"2025-12-26T20:29:47.000Z\",\"0x85dba00b8749a3bac358b1b3c0c62dc9b3eb7d00b5e0da81955fad460360395b\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 6\n+ 7\n values.facetAddresses.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.facetAddresses.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.facetAddresses.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.facetAddresses.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.facets.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"getRollupDAManager()\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2MessageInclusionShared(uint256,uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusionShared(uint256,uint256,uint256,bytes32,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusionShared(uint256,uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\"]\n values.facets.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ [\"precommitSharedBridge(address,uint256,bytes)\",\"commitBatchesSharedBridge(address,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(address,uint256,uint256,bytes)\",\"revertBatchesSharedBridge(address,uint256)\",\"proveBatchesSharedBridge(address,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n+ \"0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n+ \"0x010005f73e7c299ed73db937843643bdc276cbc2cc8596287e1e0cf3afc60252\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+ \"0x01000d8bae37b82f311186426184866498b357f41d7a02ced11f3e3fbfbacd63\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084288\n+ 124554051586\n values.getSemverProtocolVersion.1:\n- 28\n+ 29\n values.getSemverProtocolVersion.2:\n- 0\n+ 2\n values.getVerifier:\n- \"eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n+ \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n values.validators.0:\n- \"eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n values.validators.1:\n- \"eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\"\n values.getRollupDAManager:\n+ \"eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45\"\n implementationNames.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- \"AdminFacet\"\n implementationNames.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- \"GettersFacet\"\n implementationNames.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- \"MailboxFacet\"\n implementationNames.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- \"ExecutorFacet\"\n implementationNames.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ \"AdminFacet\"\n implementationNames.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ \"GettersFacet\"\n implementationNames.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ \"MailboxFacet\"\n implementationNames.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n reference ProxyAdmin (eth:0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n reference RollupDAManager (eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45)\n +++ description: None\n```"
}
]
},
{
"id": "7eae4d8a",
"date": "Mon, 22 Dec 2025 12:46:00 GMT",
"timestamp": 1766407495,
"description": "New template was applied, changes are old.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Governance (eth:0xbdC07D62fA117B195E579c2e299f037b158E7335) {\n +++ description: Allows scheduling transparent and shadow proposals, 'securityCouncil' role can execute without delay.\n+++ description: Number of executed proposals\n values.executedCount:\n- 5\n+ 21\n+++ description: Number of scheduled transparent proposals\n values.scheduledTransparentCount:\n- 5\n+ 21\n }\n```"
}
]
},
{
"id": "0c073a95",
"date": "Mon, 14 Jul 2025 12:47:16 GMT",
"timestamp": 1752497236,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 13,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract GrvtChainAdminMultisig (0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GRVTTransactionFilterer (0x3Cd52B238Ac856600b22756133eEb31ECb25109a)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock2 (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ description: Contract that 'verifies' the data availability for validiums. This implementation only checks the correct formatting and does not serve as a DA oracle. Can be used by ZK stack validiums as the L1 part of a DAValidator pair.\n```\n\n```diff\n+ Status: CREATED\n contract Governance (0xbdC07D62fA117B195E579c2e299f037b158E7335)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract GRVTBridgeProxy (0xE17aeD2fC55f4A876315376ffA49FE6358113a65)\n +++ description: Checks the signature of the DepositApprover for each deposit and, on succeeding, forwards the user's funds and bridging request to the L1SharedBridge contract to deposit to GRVT.\n```\n\n```diff\n+ Status: CREATED\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E)\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n```\n\n```diff\n+ Status: CREATED\n contract Governance (0xe81d64195072e4d09639b31Abb257d0096FEa9d1)\n +++ description: None\n```"
}
]
},
{
"id": "2207049e",
"date": "Fri, 11 Jul 2025 12:47:12 GMT",
"timestamp": 1752238032,
"description": "standard v28 upgrade.",
"isHighSeverity": true,
"changeCount": 42,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract GRVTTransactionFilterer (0x3Cd52B238Ac856600b22756133eEb31ECb25109a) {\n +++ description: None\n values.accessControl.L2_TX_SENDER_ROLE.members.5:\n+ \"0xbdC07D62fA117B195E579c2e299f037b158E7335\"\n values.whitelistedSender.5:\n+ \"0xbdC07D62fA117B195E579c2e299f037b158E7335\"\n }\n```\n\n```diff\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.3:\n+ {\"_protocolVersion\":120259084288,\"_upgradeTimestamp\":1738089540}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$implementation.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.$implementation.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.$implementation.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.$implementation.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.$pastUpgrades.5:\n+ [\"2025-07-11T04:56:47.000Z\",\"0x50482c232f408d2e39fcaf30df79e587c0859e2f36e476b9d4deda048e3f1a45\",[\"0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 5\n+ 6\n values.facetAddresses.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.facetAddresses.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.facetAddresses.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.facetAddresses.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n+ \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+ \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n+ \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 115964116992\n+ 120259084288\n values.getSemverProtocolVersion.1:\n- 27\n+ 28\n values.getVerifier:\n- \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n+ \"0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- \"ExecutorFacet\"\n implementationNames.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ \"AdminFacet\"\n implementationNames.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ \"GettersFacet\"\n implementationNames.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ \"MailboxFacet\"\n implementationNames.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to 0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or 0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract Governance (0xbdC07D62fA117B195E579c2e299f037b158E7335)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "ac1ce280",
"date": "Wed, 21 May 2025 12:10:12 GMT",
"timestamp": 1747829412,
"description": "v27 upgrade complete.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.getL2SystemContractsUpgradeBatchNumber:\n- 3199\n+ 0\n values.getL2SystemContractsUpgradeBlockNumber:\n- 3199\n+ 0\n values.getL2SystemContractsUpgradeTxHash:\n- \"0x7ead5e3e088ce4a6d739a729550f453bdc83ca10104b1916d9b0ee8722946d4a\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "9a9d04f9",
"date": "Mon, 19 May 2025 15:25:39 GMT",
"timestamp": 1747668339,
"description": "v27 upgrade to standard contracts. Same filterer.",
"isHighSeverity": true,
"changeCount": 53,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.2:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1729793768}\n values.upgradeTimestamps.1._protocolVersion:\n- 107374182400\n+ 115964116992\n values.upgradeTimestamps.1._upgradeTimestamp:\n- 1729793768\n+ 1738089540\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.4:\n- \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n+ \"0xb3038139dce45f6c1aaedbfb1b321c230301b2d004da109b39a17d827c6b0e4f\"\n sourceHashes.3:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x1f9f7cd43747f5bcf879d544be0baca967245540e70592112cdc90c360f30486\"\n sourceHashes.2:\n- \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.1:\n- \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n+ \"0xab7812fa82c483b781aee4c2339b860fcdee4033de1e243370a77a20fc353ddc\"\n sourceHashes.0:\n- \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n+ \"0xca793d2e01bb37722ba48f56662e8602e693d6808ed9587867c2bac43c3dec25\"\n values.$implementation.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$implementation.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$implementation.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$implementation.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.4:\n+ [\"2025-03-24T09:29:47.000Z\",\"0xd442b78fb0d2ccccea791f60de88cc4d7214fff454429c552be59c8778cbb9f3\",[\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]]\n values.$pastUpgrades.3.2.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$pastUpgrades.3.2.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$pastUpgrades.3.2.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$pastUpgrades.3.2.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.3.1:\n- \"0xd442b78fb0d2ccccea791f60de88cc4d7214fff454429c552be59c8778cbb9f3\"\n+ \"2025-05-19T07:17:59.000Z\"\n values.$pastUpgrades.3.0:\n- \"2025-03-24T09:29:47.000Z\"\n+ \"0xf21daa11dac7aa6d48bcf8f8d76d8c43900db3022d183389a8e16858cabdd0cb\"\n values.$upgradeCount:\n- 4\n+ 5\n values.facetAddresses.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.facetAddresses.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.facetAddresses.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.facetAddresses.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n+ \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+ \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n values.getL2SystemContractsUpgradeBatchNumber:\n- 0\n+ 3199\n values.getL2SystemContractsUpgradeBlockNumber:\n- 0\n+ 3199\n values.getL2SystemContractsUpgradeTxHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x7ead5e3e088ce4a6d739a729550f453bdc83ca10104b1916d9b0ee8722946d4a\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 111669149696\n+ 115964116992\n values.getSemverProtocolVersion.0:\n- 26\n+ 27\n values.getVerifier:\n- \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n+ \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n values.getL2EvmEmulatorBytecodeHash:\n+ \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n implementationNames.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- \"AdminFacet\"\n implementationNames.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- \"GettersFacet\"\n implementationNames.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- \"MailboxFacet\"\n implementationNames.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- \"ExecutorFacet\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "2ad6c925",
"date": "Wed, 02 Apr 2025 15:08:26 GMT",
"timestamp": 1743606506,
"description": "shared zk stack contracts upgraded to v26: config related changes for all children chains.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ description: Contract that 'verifies' the data availability for validiums. This implementation only checks the correct formatting and does not serve as a DA oracle. Can be used by ZK stack validiums as the L1 part of a DAValidator pair.\n```"
}
]
},
{
"id": "d1f64a14",
"date": "Tue, 25 Mar 2025 10:35:35 GMT",
"timestamp": 1742898935,
"description": "Upgrade diamond to protocol v26.",
"isHighSeverity": true,
"changeCount": 69,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract undefined (0x0b114d4675Cb79507e68F2616c93e124122c6ef0) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n contract GRVTTransactionFilterer (0x3Cd52B238Ac856600b22756133eEb31ECb25109a) {\n +++ description: None\n values.accessControl.L2_TX_SENDER_ROLE.members.4:\n+ \"0xE17aeD2fC55f4A876315376ffA49FE6358113a65\"\n values.accessControl.L2_TX_SENDER_ROLE.members.3:\n- \"0xE17aeD2fC55f4A876315376ffA49FE6358113a65\"\n+ \"0xe81d64195072e4d09639b31Abb257d0096FEa9d1\"\n values.accessControl.L2_TX_SENDER_ROLE.members.2:\n- \"0xe81d64195072e4d09639b31Abb257d0096FEa9d1\"\n+ \"0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n values.accessControl.L2_TX_SENDER_ROLE.members.1:\n- \"0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"0x8829AD80E425C646DAB305381ff105169FeEcE56\"\n values.whitelistedSender.4:\n+ \"0xE17aeD2fC55f4A876315376ffA49FE6358113a65\"\n values.whitelistedSender.3:\n- \"0xE17aeD2fC55f4A876315376ffA49FE6358113a65\"\n+ \"0xe81d64195072e4d09639b31Abb257d0096FEa9d1\"\n values.whitelistedSender.2:\n- \"0xe81d64195072e4d09639b31Abb257d0096FEa9d1\"\n+ \"0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n values.whitelistedSender.1:\n- \"0xF29bFff344c7ef0186432fE30C39fda0cca0550b\"\n+ \"0x8829AD80E425C646DAB305381ff105169FeEcE56\"\n }\n```\n\n```diff\n contract undefined (0x58D14960E0a2be353eDdE61ad719196A2b816522) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.1:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1729793768}\n values.upgradeTimestamps.0._protocolVersion:\n- 107374182400\n+ 111669149696\n values.upgradeTimestamps.0._upgradeTimestamp:\n- 1729793768\n+ 1738089540\n }\n```\n\n```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n template:\n- \"shared-zk-stack/Diamond\"\n+ \"shared-zk-stack/Diamond_v26\"\n sourceHashes.4:\n- \"0xdf47c6cd4fcffcfa4a670e1544e2391acc365cd7fd9b8e7583d58b28dff50c40\"\n+ \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n sourceHashes.3:\n- \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.2:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n sourceHashes.1:\n- \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n+ \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n sourceHashes.0:\n- \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n+ \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n description:\n- \"The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\"\n+ \"The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\"\n issuedPermissions.3:\n+ {\"permission\":\"interact\",\"to\":\"0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5\",\"description\":\"manage fees, apply predefined upgrades and manage censorship through a TransactionFilterer (ChainAdmin role).\",\"via\":[{\"address\":\"0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D\"}]}\n issuedPermissions.2.to:\n- \"0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5\"\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n issuedPermissions.2.description:\n- \"manage fees, apply predefined upgrades and manage censorship through a TransactionFilterer (ChainAdmin role).\"\n+ \"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\"\n issuedPermissions.2.via.0:\n- {\"address\":\"0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D\"}\n values.$implementation.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.$implementation.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.$implementation.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.$implementation.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.$pastUpgrades.3:\n+ [\"2025-03-24T09:29:47.000Z\",\"0xd442b78fb0d2ccccea791f60de88cc4d7214fff454429c552be59c8778cbb9f3\",[\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.daMode:\n- 1\n values.facetAddresses.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.facetAddresses.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.facetAddresses.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.facetAddresses.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getBaseTokenBridge:\n- \"0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB\"\n values.getL2BootloaderBytecodeHash:\n- \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n+ \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n+ \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 107374182400\n+ 111669149696\n values.getSemverProtocolVersion.0:\n- 25\n+ 26\n values.getStateTransitionManager:\n- \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n values.getVerifier:\n- \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n+ \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n values.txFilterer:\n- [\"0x3Cd52B238Ac856600b22756133eEb31ECb25109a\"]\n values.validators.1:\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n values.getBaseTokenAssetId:\n+ \"0x655d55f4565c6519b560cef52332055302203549acc24d046264c1271fa724ae\"\n values.getChainId:\n+ 325\n values.getChainTypeManager:\n+ \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n+++ severity: HIGH\n values.getDAValidatorPair:\n+ [\"0x907b30407249949521Bf0c89A43558dae200146A\",\"0xFa30EAe30351A83809657299F6Cad9557c232e8C\"]\n values.getSettlementLayer:\n+ \"0x0000000000000000000000000000000000000000\"\n+++ description: This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\n+++ severity: HIGH\n values.getTransactionFilterer:\n+ \"0x3Cd52B238Ac856600b22756133eEb31ECb25109a\"\n values.isPriorityQueueActive:\n+ false\n fieldMeta.txFilterer:\n- {\"severity\":\"HIGH\",\"description\":\"This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\"}\n fieldMeta.getProtocolVersion.severity:\n- \"MEDIUM\"\n+ \"HIGH\"\n fieldMeta.getAdmin:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getTransactionFilterer:\n+ {\"severity\":\"HIGH\",\"description\":\"This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\"}\n fieldMeta.getDAValidatorPair:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getPendingAdmin:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getPubdataPricingMode:\n+ {\"severity\":\"HIGH\",\"description\":\"0 - Rollup, 1 - Validium\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```"
}
]
},
{
"id": "cf676239",
"date": "Tue, 11 Mar 2025 08:00:15 GMT",
"timestamp": 1741680015,
"description": "ValidatorTimelock governance transfer for ZIP 5.",
"isHighSeverity": false,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract undefined (0x3701fB675bCd4A85eb11A2467628BBe193F6e6A8)\n +++ description: None\n```\n\n```diff\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E) {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.owner:\n- \"0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897\"\n+ \"0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ProtocolUpgradeHandler (0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897)\n +++ description: The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2, emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n```\n\n```diff\n- Status: DELETED\n contract SecurityCouncil (0xBDFfCC71FE84020238F2990a6D2954e87355De0D)\n +++ description: Custom Multisig implementation that has a general threshold of 9 but also specific thresholds for upgrade approvals (6) or soft freezes (3).\n```\n\n```diff\n- Status: DELETED\n contract Guardians (0xD677e09324F8Bb3cC64F009973693f751c33A888)\n +++ description: Custom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n```\n\n```diff\n- Status: DELETED\n contract EmergencyUpgradeBoard (0xdEFd1eDEE3E8c5965216bd59C866f7f5307C9b29)\n +++ description: A custom contract allowing a 3/3 of 0xBDFfCC71FE84020238F2990a6D2954e87355De0D, 0xbC1653bd3829dfEc575AfC3816D4899cd103B51c and 0xD677e09324F8Bb3cC64F009973693f751c33A888 to `executeEmergencyUpgrade()` via the 0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897.\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract undefined (0x3701fB675bCd4A85eb11A2467628BBe193F6e6A8)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProtocolUpgradeHandler (0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897)\n +++ description: The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2, emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n```\n\n```diff\n+ Status: CREATED\n contract SecurityCouncil (0xBDFfCC71FE84020238F2990a6D2954e87355De0D)\n +++ description: Custom Multisig implementation that has a general threshold of 9 but also specific thresholds for upgrade approvals (6) or soft freezes (3).\n```\n\n```diff\n+ Status: CREATED\n contract Guardians (0xD677e09324F8Bb3cC64F009973693f751c33A888)\n +++ description: Custom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n```\n\n```diff\n+ Status: CREATED\n contract EmergencyUpgradeBoard (0xdEFd1eDEE3E8c5965216bd59C866f7f5307C9b29)\n +++ description: A custom contract allowing a 3/3 of 0xBDFfCC71FE84020238F2990a6D2954e87355De0D, 0xbC1653bd3829dfEc575AfC3816D4899cd103B51c and 0xD677e09324F8Bb3cC64F009973693f751c33A888 to `executeEmergencyUpgrade()` via the 0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897.\n```"
}
]
},
{
"id": "2121984c",
"date": "Mon, 03 Feb 2025 14:33:48 GMT",
"timestamp": 1738593228,
"description": "[ZIP-002] 'Reduce the execution delay from 21 hours to 3 hours' executed.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E) {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n description:\n- \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 21h.\"\n+ \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\"\n values.executionDelay:\n- 75600\n+ 10800\n values.executionDelay_fmt:\n- \"21h\"\n+ \"3h\"\n }\n```"
}
]
},
{
"id": "7ea87a0d",
"date": "Thu, 30 Jan 2025 10:43:17 GMT",
"timestamp": 1738233797,
"description": "upgrade completed.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ description: The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.getL2SystemContractsUpgradeBatchNumber:\n- 533\n+ 0\n values.getL2SystemContractsUpgradeBlockNumber:\n- 533\n+ 0\n values.getL2SystemContractsUpgradeTxHash:\n- \"0xd3086b71c95ce83e7f3d30ab1890ada2334695a05b65715e56f42d96b22c8674\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "455fac79",
"date": "Tue, 28 Jan 2025 06:33:43 GMT",
"timestamp": 1738046023,
"description": "upgrade to protocol version 25 (see zksync era for changelog).\n\ndiscodrive!",
"isHighSeverity": false,
"changeCount": 35,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.0:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1729793768}\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0x70F3FBf8a427155185Ec90BED8a3434203de9604)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E) {\n +++ description: The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.4:\n- \"0xe521f6bd6250a2c92af323768ad8a2274cc334725b5ed8960d8421f063fc3285\"\n+ \"0xdf47c6cd4fcffcfa4a670e1544e2391acc365cd7fd9b8e7583d58b28dff50c40\"\n sourceHashes.3:\n- \"0x419cee160f60572fc9189007ec7c1e3c13e54d80bf1e78f837bc8fa001519685\"\n+ \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n sourceHashes.2:\n- \"0xd272def5b4e3f0a68e3019d7d40675ca6d3e3fc35500e9aafe864bce8c697de2\"\n+ \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n sourceHashes.1:\n- \"0x9ae32beaa5dc29055f75d3cd08fbec35ed3eee3e2ff35de263a78f7d63c610f9\"\n+ \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n values.$implementation.3:\n- \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n+ \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n values.$implementation.2:\n- \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n+ \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n values.$implementation.1:\n- \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n+ \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n values.$implementation.0:\n- \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n+ \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n values.$pastUpgrades.2:\n+ [\"2025-01-28T05:38:11.000Z\",\"0x733c89da487edb502dc65f5115ada9cef6b44128a85cf36adbde4821e13abe31\",[\"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\",\"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\",\"0x5575218cECd370E1d630d1AdB03c254B0B376821\",\"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.facetAddresses.3:\n- \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n+ \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n values.facetAddresses.2:\n- \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n+ \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n values.facetAddresses.1:\n- \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n+ \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n values.facetAddresses.0:\n- \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n+ \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n values.facets.0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0xE60E94fCCb18a81D501a38959E532C0A85A1be89:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0xCDB6228b616EEf8Df47D69A372C4f725C43e718C:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xaD193aDe635576d8e9f7ada71Af2137b16c64075:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n+ [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n+ [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n+ [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n+ [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x010008e742608b21bf7eb23c1a9d0602047e3618b464c9b59c0fba3b3d7ab66e\"\n+ \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x01000563374c277a2c1e34659a2a1e87371bb6d852ce142022d497bfb50b9e32\"\n+ \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n values.getL2SystemContractsUpgradeBatchNumber:\n- 0\n+ 533\n values.getL2SystemContractsUpgradeBlockNumber:\n- 0\n+ 533\n values.getL2SystemContractsUpgradeTxHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0xd3086b71c95ce83e7f3d30ab1890ada2334695a05b65715e56f42d96b22c8674\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: MEDIUM\n values.getProtocolVersion:\n- 103079215106\n+ 107374182400\n values.getSemverProtocolVersion.2:\n- 2\n+ 0\n values.getSemverProtocolVersion.1:\n- 24\n+ 25\n values.getVerifier:\n- \"0x70F3FBf8a427155185Ec90BED8a3434203de9604\"\n+ \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: Implements the ZK proof verification logic.\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 21h.\n```"
}
]
},
{
"id": "641fa953",
"date": "Fri, 10 Jan 2025 11:53:07 GMT",
"timestamp": 1736509987,
"description": "Initial discovery of a standard ZK stack Validium.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract GrvtChainAdminMultisig (0x3a23919d4aA39e096E9d6420fd6a2861A20B19e5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GRVTTransactionFilterer (0x3Cd52B238Ac856600b22756133eEb31ECb25109a)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GrvtZkEvmAdmin (0x6308ee1Ebdb8D5E60bB88D3EA3b56CE326193e7D)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x70F3FBf8a427155185Ec90BED8a3434203de9604)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GRVTBaseToken (0xAB3B124052F0389D1cbED221d912026Ac995bb95)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GRVTBridgeProxy (0xE17aeD2fC55f4A876315376ffA49FE6358113a65)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract GrvtZkEvm (0xe3e310cd8EE0C808794810AB50FE4BcCC5c7D89E)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Governance (0xe81d64195072e4d09639b31Abb257d0096FEa9d1)\n +++ description: None\n```"
}
]
}
]
+16 -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 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": "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 3h.\n* Can interact with Diamond\n * commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock ",
"description": "Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\n* Can interact with Diamond\n * commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock ",
"discoveryDrivenData": true
},
{
"id": "Lens Multisig",
"name": "Lens Multisig",
"description": "A Multisig with 2/3 threshold. \n* Can interact with Diamond\n * administrate operator roles for this chain in the ValidatorTimelock, manage fees, apply predefined upgrades, manage censorship through a TransactionFilterer, set DA mode, migrate the chain to whitelisted settlement layers (Chain Admin role) [via: LensZkEvmAdmin]",
"accounts": [
{
"address": "eth:0x4968A0E4b025eD7d095753E54058377969b41abC",
"type": "Contract",
"isVerified": true,
"name": "0x4968…1abC",
"url": "https://etherscan.io/address/0x4968A0E4b025eD7d095753E54058377969b41abC"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x7CBba07e31Dc7b12bB69a1209C5B11A8aC50acf5",
"type": "EOA",
"isVerified": true,
"name": "0x7CBb…acf5",
"url": "https://etherscan.io/address/0x7CBba07e31Dc7b12bB69a1209C5B11A8aC50acf5"
},
{
"address": "eth:0x8f356fEC1793c4AEbd817A344C77310081Fa6917",
"type": "EOA",
"isVerified": true,
"name": "0x8f35…6917",
"url": "https://etherscan.io/address/0x8f356fEC1793c4AEbd817A344C77310081Fa6917"
},
{
"address": "eth:0xc5342CD71f67DAc44Bcfbc37df35700b5e4691e6",
"type": "EOA",
"isVerified": true,
"name": "0xc534…91e6",
"url": "https://etherscan.io/address/0xc5342CD71f67DAc44Bcfbc37df35700b5e4691e6"
}
],
"discoveryDrivenData": true
},
{
"id": "Avail Multisig 2",
"name": "Avail Multisig 2",
"description": "A Multisig with 3/5 threshold. \n* Can interact with AvailBridgeV1\n * pause the bridge ",
"accounts": [
{
"address": "eth:0x1a5BA9447D02Ddaf7bcB5594Fc27dE2Daf588930",
"type": "Contract",
"isVerified": true,
"name": "0x1a5B…8930",
"url": "https://etherscan.io/address/0x1a5BA9447D02Ddaf7bcB5594Fc27dE2Daf588930"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xE458b870F2F59a49915591282f1Bb688901767AD",
"type": "EOA",
"isVerified": true,
"name": "0xE458…67AD",
"url": "https://etherscan.io/address/0xE458b870F2F59a49915591282f1Bb688901767AD"
},
{
"address": "eth:0x340e77D5e114A9D4891d3a1EbC7419CC85Ca8E4A",
"type": "EOA",
"isVerified": true,
"name": "0x340e…8E4A",
"url": "https://etherscan.io/address/0x340e77D5e114A9D4891d3a1EbC7419CC85Ca8E4A"
},
{
"address": "eth:0xAD379D3275a18bd4BB741C3b291a3778D51c3304",
"type": "EOA",
"isVerified": true,
"name": "0xAD37…3304",
"url": "https://etherscan.io/address/0xAD379D3275a18bd4BB741C3b291a3778D51c3304"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x1fbABAbDcFE0b40a9B5D2aDB054fB74F8fE985f5",
"type": "EOA",
"isVerified": true,
"name": "0x1fbA…85f5",
"url": "https://etherscan.io/address/0x1fbABAbDcFE0b40a9B5D2aDB054fB74F8fE985f5"
}
],
"discoveryDrivenData": true
},
{
"id": "ZK Foundation Multisig",
"name": "ZK Foundation Multisig",
"description": "A Multisig with 3/6 threshold. \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0xbC1653bd3829dfEc575AfC3816D4899cd103B51c",
"type": "Contract",
"isVerified": true,
"name": "0xbC16…B51c",
"url": "https://etherscan.io/address/0xbC1653bd3829dfEc575AfC3816D4899cd103B51c"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x64FEca7976955a512aB9159f91E7dD1D55425293",
"type": "EOA",
"isVerified": true,
"name": "0x64FE…5293",
"url": "https://etherscan.io/address/0x64FEca7976955a512aB9159f91E7dD1D55425293"
},
{
"address": "eth:0xA10fcD4B012467FAC48ce63838B7bE56AB16bE52",
"type": "EOA",
"isVerified": true,
"name": "0xA10f…bE52",
"url": "https://etherscan.io/address/0xA10fcD4B012467FAC48ce63838B7bE56AB16bE52"
},
{
"address": "eth:0x56B3120c32AE9C3188fafc5Cc542F9c53B0b2222",
"type": "EOA",
"isVerified": true,
"name": "0x56B3…2222",
"url": "https://etherscan.io/address/0x56B3120c32AE9C3188fafc5Cc542F9c53B0b2222"
},
{
"address": "eth:0x441e5c8910Ef39996B2D01499509861228cbc2d1",
"type": "EOA",
"isVerified": true,
"name": "0x441e…c2d1",
"url": "https://etherscan.io/address/0x441e5c8910Ef39996B2D01499509861228cbc2d1"
},
{
"address": "eth:0x0B2E7ffbcD1E3e6f5034555Fb638889FE7564709",
"type": "EOA",
"isVerified": true,
"name": "0x0B2E…4709",
"url": "https://etherscan.io/address/0x0B2E7ffbcD1E3e6f5034555Fb638889FE7564709"
},
{
"address": "eth:0x610e45F112e0c8a9aA7137677C83E7A198A1b991",
"type": "EOA",
"isVerified": true,
"name": "0x610e…b991",
"url": "https://etherscan.io/address/0x610e45F112e0c8a9aA7137677C83E7A198A1b991"
}
],
"discoveryDrivenData": true
},
{
"id": "SP1VerifierGatewayMultisig",
"name": "SP1VerifierGatewayMultisig",
"description": "A Multisig with 2/3 threshold. \n* Can interact with SP1VerifierGateway\n * affect the liveness and safety of the gateway - can transfer ownership, add and freeze verifier routes ",
"accounts": [
{
"address": "eth:0xCafEf00d348Adbd57c37d1B77e0619C6244C6878",
"type": "Contract",
"isVerified": true,
"name": "0xCafE…6878",
"url": "https://etherscan.io/address/0xCafEf00d348Adbd57c37d1B77e0619C6244C6878"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126",
"type": "EOA",
"isVerified": true,
"name": "0xBaB2…1126",
"url": "https://etherscan.io/address/0xBaB2c2aF5b91695e65955DA60d63aD1b2aE81126"
},
{
"address": "eth:0x72Ff26D9517324eEFA89A48B75c5df41132c4f54",
"type": "EOA",
"isVerified": true,
"name": "0x72Ff…4f54",
"url": "https://etherscan.io/address/0x72Ff26D9517324eEFA89A48B75c5df41132c4f54"
},
{
"address": "eth:0x9395e83720bf2D8ac6435f9c520b48E289Cb8885",
"type": "EOA",
"isVerified": true,
"name": "0x9395…8885",
"url": "https://etherscan.io/address/0x9395e83720bf2D8ac6435f9c520b48E289Cb8885"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1-and-EOA-2",
"name": "EOA 1 and EOA 2",
"accounts": [
{
"address": "eth:0x9971903268BAED330DA9DD533D97924c725AB593",
"type": "EOA",
"isVerified": true,
"name": "0x9971…B593",
"url": "https://etherscan.io/address/0x9971903268BAED330DA9DD533D97924c725AB593",
"displayName": "EOA 1"
},
{
"address": "eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc",
"type": "EOA",
"isVerified": true,
"name": "0xBf02…36Bc",
"url": "https://etherscan.io/address/0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with ValidatorTimelock\n * Permissioned to call the functions to commit, prove, execute and revert L2 batches through the ValidatorTimelock in the main Diamond contract ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x7EBe0bf025ca5993551cE6CEe3f541B24FDF7c35",
"type": "EOA",
"isVerified": true,
"name": "0x7EBe…7c35",
"url": "https://etherscan.io/address/0x7EBe0bf025ca5993551cE6CEe3f541B24FDF7c35",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with Vector\n * it is a ‘Relayer’ and can call commitHeaderRange() to commit block ranges to the Vector contract. Since adding and removing Relayers emits no events, there can be more relayers than are presented here ",
"discoveryDrivenData": true
}
]
},
"zksync2": {
"roles": [],
"actors": [
{
"id": "ZkProtocolGovernor",
"name": "ZkProtocolGovernor",
"accounts": [
{
"address": "zksync:0x76705327e682F2d96943280D99464Ab61219e34f",
"type": "Contract",
"isVerified": true,
"name": "0x7670…e34f",
"url": "https://explorer.zksync.io/address/0x76705327e682F2d96943280D99464Ab61219e34f"
}
],
"chain": "zksync2",
"description": "Main Governance contract allowing for token voting (simple majority) with the ZK token through delegates. This contract is used for protocol upgrade proposals (ZIPs) that start on ZKsync Era, go through Ethereum Layer 1 and can - from there - target all L1 and L2 contracts. At least 21M ZK tokens are necessary to start a proposal and a 630M quorum of voted tokens must be met to succeed.\n* Can interact with ProtocolUpgradeHandler\n * start (queue) upgrades [via: ProtocolTimelockController]\n* Can interact with ProtocolTimelockController\n * cancel queued transactions \n * execute transactions that are ready \n * manage all access control roles and change the minimum delay [via: ProtocolTimelockController]\n * propose transactions ",
"discoveryDrivenData": true
},
{
"id": "ZkTokenGovernor",
"name": "ZkTokenGovernor",
"accounts": [
{
"address": "zksync:0xb83FF6501214ddF40C91C9565d095400f3F45746",
"type": "Contract",
"isVerified": true,
"name": "0xb83F…5746",
"url": "https://explorer.zksync.io/address/0xb83FF6501214ddF40C91C9565d095400f3F45746"
}
],
"chain": "zksync2",
"description": "Governance contract allowing for token voting (simple majority) with the ZK token through delegates. This contract is used for Token Program Proposals (TPPs) usually targeting the ZK token on ZKsync Era. At least 21M ZK tokens are necessary to start a proposal (for delegates) and a 630M quorum of voted tokens must be met to succeed.\n* Can interact with ZkToken\n * grant the MINTER_ROLE to arbitrary addresses, thus controlling the minting of the ZK token **with 3d delay** [via: ZkTokenTimelockController with 3d delay]\n* Can interact with ZkTokenTimelockController\n * manage all access control roles and change the minimum delay **with 6d delay** [via: ZkTokenTimelockController with 3d delay with 3d delay]\n * cancel queued transactions \n * execute transactions that are ready \n * propose transactions ",
"discoveryDrivenData": true
},
{
"id": "Guardians_l2Alias",
"name": "Guardians_l2Alias",
"accounts": [
{
"address": "zksync:0x711ea620AB29f41AbC6596a15981e14ce58C97c9",
"type": "EOA",
"isVerified": true,
"name": "0x711e…97c9",
"url": "https://explorer.zksync.io/address/0x711ea620AB29f41AbC6596a15981e14ce58C97c9",
"displayName": "Guardians_l2Alias"
}
],
"chain": "zksync2",
"description": "* Can interact with ZkTokenGovernor\n * cancel proposals while they are pending (after having been proposed) or active (during the voting period) ",
"discoveryDrivenData": true
},
{
"id": "ZKFoundationMultisig_l2Alias",
"name": "ZKFoundationMultisig_l2Alias",
"accounts": [
{
"address": "zksync:0xcd2753Bd3829dfeC575AFC3816d4899CD103C62D",
"type": "EOA",
"isVerified": true,
"name": "0xcd27…C62D",
"url": "https://explorer.zksync.io/address/0xcd2753Bd3829dfeC575AFC3816d4899CD103C62D",
"displayName": "ZKFoundationMultisig_l2Alias"
}
],
"chain": "zksync2",
"description": "* Can interact with ZkTokenGovernor\n * make direct proposals without owning ZK tokens. In propose-guarded mode, this address is the ONLY allowed proposer. Propose-guarded mode is currently set to false ",
"discoveryDrivenData": true
},
{
"id": "ProtocolUpgradeHandler_l2Alias",
"name": "ProtocolUpgradeHandler_l2Alias",
"accounts": [
{
"address": "zksync:0xF41EcA3047B37dc7d88849de4a4dc07937Ad6bc4",
"type": "EOA",
"isVerified": true,
"name": "0xF41E…6bc4",
"url": "https://explorer.zksync.io/address/0xF41EcA3047B37dc7d88849de4a4dc07937Ad6bc4",
"displayName": "ProtocolUpgradeHandler_l2Alias"
}
],
"chain": "zksync2",
"description": "* Can upgrade **with no delay**\n * ZkToken [via: ZkTokenProxyAdmin]\n* Can interact with ZkToken\n * control all roles in the ZkToken access control, including the minter roles ",
"discoveryDrivenData": true
}
]
}
}
+1 -1
{
"baseTimestamp": 1790592210,
"baseTimestamp": 1790944827,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "9c72ded5",
"date": "Fri, 02 Oct 2026 12:42:24 GMT",
"timestamp": 1790944827,
"description": "Executed this proposal: https://www.tally.xyz/gov/zksync/proposal/49883493212277767948924829453899549013679463473253620701602979414799679547598?govId=eip155%3A324%3A0x76705327e682F2d96943280D99464Ab61219e34f. Now each chain admin can increase the execution delay of its chain (`increaseChainExecutionDelay`), the owner can set it freely (`setChainExecutionDelay`). The effective delay for Lens is tracked in `executionDelayLens` (still 3h).\n\nAlso adds a new `UPGRADER_ROLE` that can call `upgradeChainFromVersion()` through the VTL (forwarded to the diamond). Currently nobody holds the role for Lens yet (tracked in `upgraderVTL`).",
"isHighSeverity": true,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_v31] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\n template:\n- \"shared-zk-stack/ValidatorTimelock_post29\"\n+ \"shared-zk-stack/ValidatorTimelock_v31\"\n sourceHashes.1:\n- \"0x5afea1019ac418e639ce9df65b9653bf0ca88ed81fb0abe0447e87328e39f10c\"\n+ \"0x51d6000b0e4437a2b99d13d332658fffb3da867cd56b05cbcb4bf4f954ff12ff\"\n description:\n- \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\"\n+ \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\"\n values.$implementation:\n- \"eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8\"\n+ \"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"\n values.$pastUpgrades.1:\n+ [\"2026-10-01T12:28:47.000Z\",\"0xdc4278c8b23d99f974a206dcaa1c1e20272c49095fa31eac842210ae97b435a8\",[\"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"]]\n values.$upgradeCount:\n- 1\n+ 2\n+++ severity: HIGH\n values.executionDelayLens:\n+ 10800\n+++ severity: HIGH\n values.executionDelayLens_fmt:\n+ \"3h\"\n values.MAX_EXECUTION_DELAY:\n+ 2592000\n values.OPTIONAL_UPGRADER_ADMIN_ROLE:\n+ \"0xa1426e789273bde4307f3302768d8e4eb615f0f4dea304f29cccd58ff644d640\"\n values.UPGRADER_ROLE:\n+ \"0x189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3\"\n errors:\n- {\"executionDelayLens\":\"Processing error occurred.\",\"executionDelayLens_fmt\":\"Processing error occurred.\"}\n fieldMeta.executionDelay.description:\n+ \"Ecosystem-wide minimum execution delay (in seconds), set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n fieldMeta.executionDelay_fmt.description:\n+ \"Ecosystem-wide minimum execution delay, set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n implementationNames.eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8:\n- \"ValidatorTimelock\"\n implementationNames.eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35:\n+ \"ValidatorTimelock\"\n }\n```"
}
]
},
{
"id": "3be3a85b",
"date": "Mon, 17 Aug 2026 11:30:47 GMT",
"timestamp": 1786966184,
"description": "Lens Multisig upgraded the boojum verifiers to version v0.30.1 (registered on the ChainTypeManager before). The new verifiers are not yet reproduced.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract Diamond (eth:0xc29d04A93F893700015138E3E334eB828dAC3cef) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.12:\n+ [\"2026-08-16T19:53:23.000Z\",\"0xd346a85316db66f6ed0cde76b5a129fb23a52351118a15822e158bf59f693f34\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 12\n+ 13\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 128849018880\n+ 128849018881\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n+ \"eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierPlonk (eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierFflonk (eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraDualVerifier (eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9 or eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF depending on the supplied proof type.\n```"
}
]
},
{
"id": "63cc6f13",
"date": "Tue, 11 Aug 2026 07:46:55 GMT",
"timestamp": 1786434353,
"description": "Lens zkevm admin upgraded boojum verifier to v29.5 (same as zksync era, was registered on chain type manager before). Verifier is not yet reproduced.\n\nRemoved 7 members of Lens ms (2/10 -> 2/3).",
"isHighSeverity": true,
"changeCount": 21,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lens Multisig (eth:0x4968A0E4b025eD7d095753E54058377969b41abC) [GnosisSafe] {\n +++ description: None\n values.$members.2:\n- \"eth:0x71910321A1d3b3f743ca52569f5Aa82f09538A2e\"\n values.$members.3:\n- \"eth:0xfbDF62F0a73DED0BF5A264867cFD022E192B5526\"\n values.$members.4:\n- \"eth:0x5dc301EcD8Bd7694BB1074B3E58Aa0916EE7887d\"\n values.$members.5:\n- \"eth:0x62Ae8d9B6d0D9817bd9D41b9AfEAc301dBa713B8\"\n values.$members.6:\n- \"eth:0x2eD1df8F475b1f9c7493fC0eb0BFD4D1FD17f27b\"\n values.$members.7:\n- \"eth:0x2a80091816D7872850D500F6Ade835354238Af17\"\n values.$members.8:\n- \"eth:0x5063b3D23C3640d51c9E2aef41063B1d482C70ff\"\n values.multisigThreshold:\n- \"2 of 10 (20%)\"\n+ \"2 of 3 (67%)\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract Diamond (eth:0xc29d04A93F893700015138E3E334eB828dAC3cef) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.10:\n+ [\"2026-08-09T08:16:35.000Z\",\"0x49096e35ef0401c7d2d263edf1e9441da8f0805ff3c1fa2677b99b90363aed86\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$pastUpgrades.11:\n+ [\"2026-08-09T11:04:59.000Z\",\"0xd00f75efe10c54a7f0df37b44b22205a3e3545b334856fe4bb3ba4f51687279c\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 10\n+ 12\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051588\n+ 128849018880\n values.getSemverProtocolVersion.1:\n- 29\n+ 30\n values.getSemverProtocolVersion.2:\n- 4\n+ 0\n values.getVerifier:\n- \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n+ \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```"
}
]
},
{
"id": "c8a41837",
"date": "Tue, 16 Jun 2026 09:43:54 GMT",
"timestamp": 1781602943,
"description": "Switch validator EOAs.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_post29] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.validatorsVTL.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTL.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.0:\n- \"eth:0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n+ \"eth:0xBf02Dc815BA63140Bfc170cFcF97987B504d36Bc\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.1:\n- \"eth:0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n+ \"eth:0x9971903268BAED330DA9DD533D97924c725AB593\"\n }\n```"
}
]
},
{
"id": "a4ac0d0c",
"date": "Tue, 09 Jun 2026 10:11:44 GMT",
"timestamp": 1780999809,
"description": "Changed 7702 delegation.",
"isHighSeverity": true,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (eth:0x7CBba07e31Dc7b12bB69a1209C5B11A8aC50acf5) {\n +++ description: None\n sourceHashes.0:\n- \"0x7c13d2cfb57c882bc260e74dcb008156f303789097df3876ce6c099f1957c71b\"\n+ \"0x39d3c680bc45b2c9a848f9ffcd0355b99f65f6a6cd626699fdb311dec621e134\"\n values.$implementation:\n- \"eth:0x80296FF8D1ED46f8e3C7992664D13B833504c2Bb\"\n+ \"eth:0x612373D7003d694220f7800EeaF8E3924c0951D3\"\n values.ADDRESS_THIS:\n- \"eth:0x80296FF8D1ED46f8e3C7992664D13B833504c2Bb\"\n values.eip712Domain.fields:\n- \"0x0f\"\n+ \"0x1f\"\n values.eip712Domain.name:\n- \"wallet-core\"\n+ \"Calibur\"\n values.eip712Domain.salt:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0x000000000000000000000000612373d7003d694220f7800eeaf8e3924c0951d3\"\n values.getMainStorage:\n- \"eth:0x08Bd365bb4908a93F778564B956d710e6858B063\"\n values.MAIN_STORAGE_IMPL:\n- \"eth:0x7DAF91DFe55FcAb363416A6E3bceb3Da34ff1d30\"\n values.SESSION_TYPEHASH:\n- \"0x162b80b4d2b49568d8cbb7ac5385094c9e5e14680ef0333beeddbfae562f0472\"\n values.CUSTOM_STORAGE_ROOT:\n+ \"0x3b86514c5c56b21f08d8e56ab090292e07c2483b3e667a2a45849dcb71368600\"\n values.domainBytes:\n+ \"0xc7e4f5b2d381bdfacf8506a24542052ab4e951573cab4ce34bb1c9509c84cbbf06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c00000000000000000000000000000000000000000000000000000000000000010000000000000000000000007cbba07e31dc7b12bb69a1209c5b11a8ac50acf5000000000000000000000000612373d7003d694220f7800eeaf8e3924c0951d3\"\n values.domainSeparator:\n+ \"0xb2c9668300ebd842c31e9ecddb570b09936392cb518ce4287a8a5668258738f3\"\n values.ENTRY_POINT:\n+ \"eth:0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108\"\n values.keyAt:\n+ []\n values.keyCount:\n+ 0\n values.keyHashes:\n+ 0\n values.namespaceAndVersion:\n+ \"Uniswap.Calibur.1.0.0\"\n }\n```"
}
]
},
{
"id": "a2f0f50a",
"date": "Thu, 04 Jun 2026 15:20:53 GMT",
"timestamp": 1780586386,
"description": "Lens migrated its verifiers (Plonk, Fflonk) to core-v29.11.1. Also, added two addresses to Lens Multisig.",
"isHighSeverity": true,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lens Multisig (eth:0x4968A0E4b025eD7d095753E54058377969b41abC) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x7CBba07e31Dc7b12bB69a1209C5B11A8aC50acf5\"\n values.$members.1:\n+ \"eth:0x8f356fEC1793c4AEbd817A344C77310081Fa6917\"\n values.$members.7:\n- \"eth:0xE0b3Ef5A61324acceE3798B6D9Da5B47b0312b7c\"\n+ \"eth:0xc5342CD71f67DAc44Bcfbc37df35700b5e4691e6\"\n values.multisigThreshold:\n- \"2 of 8 (25%)\"\n+ \"2 of 10 (20%)\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d or eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026 depending on the supplied proof type.\n```\n\n```diff\n contract LensZkEvmAdmin (eth:0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) [shared-zk-stack/ChainAdmin] {\n +++ description: A governance proxy that lets eth:0x4968A0E4b025eD7d095753E54058377969b41abC act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.6:\n+ {\"_protocolVersion\":124554051588,\"_upgradeTimestamp\":0}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract Diamond (eth:0xc29d04A93F893700015138E3E334eB828dAC3cef) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.9:\n+ [\"2026-06-03T19:38:35.000Z\",\"0x8f7d04ce7012bfb248543385dc44825a6d21c4752f98bff93eba04da47368d4e\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 9\n+ 10\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051587\n+ 124554051588\n values.getSemverProtocolVersion.2:\n- 3\n+ 4\n values.getVerifier:\n- \"eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B\"\n+ \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n EOA (eth:0x7CBba07e31Dc7b12bB69a1209C5B11A8aC50acf5)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```"
}
]
},
{
"id": "b912dfae",
"date": "Fri, 30 Jan 2026 10:15:51 GMT",
"timestamp": 1769768087,
"description": "Upgraded boojum verifier to the latest version.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n contract LensZkEvmAdmin (eth:0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: A governance proxy that lets eth:0x4968A0E4b025eD7d095753E54058377969b41abC act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.5:\n+ {\"_protocolVersion\":124554051587,\"_upgradeTimestamp\":0}\n }\n```\n\n```diff\n contract Diamond (eth:0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.8:\n+ [\"2026-01-29T19:31:35.000Z\",\"0x54184d1aa0137620015290fe57ef7376cc15718acb77989eec3b7f4d0e0d14e5\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 8\n+ 9\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051586\n+ 124554051587\n values.getSemverProtocolVersion.2:\n- 2\n+ 3\n values.getVerifier:\n- \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n+ \"eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d or eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "4015652c",
"date": "Wed, 19 Nov 2025 10:28:33 GMT",
"timestamp": 1763546230,
"description": "standard v29.2 upgrade.",
"isHighSeverity": true,
"changeCount": 48,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n contract LensZkEvmAdmin (eth:0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: A governance proxy that lets eth:0x4968A0E4b025eD7d095753E54058377969b41abC act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.4:\n+ {\"_protocolVersion\":124554051586,\"_upgradeTimestamp\":1762434000}\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n contract LensZkEvm (eth:0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.1:\n- \"0xbc2380479529743c27e6ab96cdf08210319fadcbca0856cf50c6b1b54bf8437f\"\n+ \"0xc7513302e4e09efc907df5e645d9f8037b1d02409f9a9089f61061c8951ef1ff\"\n values.$implementation.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.$implementation.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.$implementation.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.$implementation.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.$pastUpgrades.7:\n+ [\"2025-11-17T20:58:11.000Z\",\"0xd0833923639a4693c45fe165c6d30094dbfbc7c0b9e77b89981696519eb579a9\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 7\n+ 8\n values.facetAddresses.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.facetAddresses.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.facetAddresses.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.facetAddresses.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.facets.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"getRollupDAManager()\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2MessageInclusionShared(uint256,uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusionShared(uint256,uint256,uint256,bytes32,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusionShared(uint256,uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\"]\n values.facets.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ [\"precommitSharedBridge(address,uint256,bytes)\",\"commitBatchesSharedBridge(address,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(address,uint256,uint256,bytes)\",\"revertBatchesSharedBridge(address,uint256)\",\"proveBatchesSharedBridge(address,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n+ \"0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n+ \"0x010005f73e7c299ed73db937843643bdc276cbc2cc8596287e1e0cf3afc60252\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+ \"0x01000d8bae37b82f311186426184866498b357f41d7a02ced11f3e3fbfbacd63\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084289\n+ 124554051586\n values.getSemverProtocolVersion.1:\n- 28\n+ 29\n values.getSemverProtocolVersion.2:\n- 1\n+ 2\n values.getVerifier:\n- \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n+ \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n values.validators.1:\n- \"eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n values.validators.2:\n- \"eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\"\n values.getRollupDAManager:\n+ \"eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45\"\n implementationNames.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- \"AdminFacet\"\n implementationNames.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- \"GettersFacet\"\n implementationNames.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- \"MailboxFacet\"\n implementationNames.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- \"ExecutorFacet\"\n implementationNames.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ \"AdminFacet\"\n implementationNames.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ \"GettersFacet\"\n implementationNames.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ \"MailboxFacet\"\n implementationNames.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n reference RollupDAManager (eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45)\n +++ description: None\n```"
}
]
},
{
"id": "360b3311",
"date": "Fri, 15 Aug 2025 08:16:14 GMT",
"timestamp": 1755245760,
"description": "Standard zkstack v28.1 upgrade.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.3:\n+ {\"_protocolVersion\":120259084289,\"_upgradeTimestamp\":1754911800}\n }\n```\n\n```diff\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.6:\n+ [\"2025-08-14T14:23:47.000Z\",\"0xe1e89cb3eb4b704457d700ce847e9f682c50ef505c08b5ca0873a833e9d4ff2a\",[\"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 6\n+ 7\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084288\n+ 120259084289\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n+ \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```"
}
]
},
{
"id": "b0951e94",
"date": "Mon, 14 Jul 2025 12:47:16 GMT",
"timestamp": 1752497236,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 11,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Lens Multisig (0x4968A0E4b025eD7d095753E54058377969b41abC)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock3 (0x5C03468829A26981c410a7930bD4853622F0B2E5)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 0s.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock2 (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract AvailL1DAValidator (0x8f50d93B9955B285f787043B30B5F51D09bE0120)\n +++ description: Contract that verifies that the validiums data was made available on Avail by querying the eth:0x054fd961708D8E2B9c10a63F6157c74458889F0a on Ethereum for a merkle proof of inclusion.\n```\n\n```diff\n+ Status: CREATED\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef)\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987)\n +++ description: None\n```"
}
]
},
{
"id": "eda58c27",
"date": "Mon, 07 Jul 2025 06:48:55 GMT",
"timestamp": 1751870935,
"description": "standard zk stack v28 upgrade.",
"isHighSeverity": true,
"changeCount": 39,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.2:\n+ {\"_protocolVersion\":120259084288,\"_upgradeTimestamp\":1750942800}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$implementation.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.$implementation.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.$implementation.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.$implementation.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.$pastUpgrades.5:\n+ [\"2025-07-02T18:42:59.000Z\",\"0x8d2c504c58a659511bef547888186da42708e16923743741cd11acf4c6d908b3\",[\"0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 5\n+ 6\n values.facetAddresses.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.facetAddresses.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.facetAddresses.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.facetAddresses.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n+ \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+ \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n+ \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 115964116992\n+ 120259084288\n values.getSemverProtocolVersion.1:\n- 27\n+ 28\n values.getVerifier:\n- \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n+ \"0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- \"ExecutorFacet\"\n implementationNames.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ \"AdminFacet\"\n implementationNames.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ \"GettersFacet\"\n implementationNames.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ \"MailboxFacet\"\n implementationNames.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to 0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or 0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "b6ebaeca",
"date": "Thu, 19 Jun 2025 11:17:14 GMT",
"timestamp": 1750331834,
"description": "Upgrade to Vector DA bridge from Avail.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lens Multisig (0x4968A0E4b025eD7d095753E54058377969b41abC) {\n +++ description: None\n values.$members.7:\n+ \"0x2a80091816D7872850D500F6Ade835354238Af17\"\n values.$members.6:\n+ \"0x5063b3D23C3640d51c9E2aef41063B1d482C70ff\"\n values.$members.5:\n+ \"0x62Ae8d9B6d0D9817bd9D41b9AfEAc301dBa713B8\"\n values.$members.4:\n+ \"0x5dc301EcD8Bd7694BB1074B3E58Aa0916EE7887d\"\n values.$members.3:\n- \"0x2a80091816D7872850D500F6Ade835354238Af17\"\n+ \"0xfbDF62F0a73DED0BF5A264867cFD022E192B5526\"\n values.$members.2:\n- \"0x5063b3D23C3640d51c9E2aef41063B1d482C70ff\"\n+ \"0xE0b3Ef5A61324acceE3798B6D9Da5B47b0312b7c\"\n values.$members.1:\n- \"0xE0b3Ef5A61324acceE3798B6D9Da5B47b0312b7c\"\n+ \"0x2eD1df8F475b1f9c7493fC0eb0BFD4D1FD17f27b\"\n values.$members.0:\n- \"0x2eD1df8F475b1f9c7493fC0eb0BFD4D1FD17f27b\"\n+ \"0x71910321A1d3b3f743ca52569f5Aa82f09538A2e\"\n values.multisigThreshold:\n- \"2 of 4 (50%)\"\n+ \"2 of 8 (25%)\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ description: Contract that 'verifies' the data availability for validiums. This implementation only checks the correct formatting and does not serve as a DA oracle. Can be used by ZK stack validiums as the L1 part of a DAValidator pair.\n```\n\n```diff\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n+++ severity: HIGH\n values.getDAValidatorPair.1:\n- \"0xFa30EAe30351A83809657299F6Cad9557c232e8C\"\n+ \"0xdA6661Df15E79cFe1e679ccD138D813b955ba492\"\n+++ severity: HIGH\n values.getDAValidatorPair.0:\n- \"0x907b30407249949521Bf0c89A43558dae200146A\"\n+ \"0x8f50d93B9955B285f787043B30B5F51D09bE0120\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract AvailL1DAValidator (0x8f50d93B9955B285f787043B30B5F51D09bE0120)\n +++ description: Contract that verifies that the validiums data was made available on Avail by querying the 0x054fd961708D8E2B9c10a63F6157c74458889F0a on Ethereum for a merkle proof of inclusion.\n```"
}
]
},
{
"id": "d2aafb43",
"date": "Wed, 18 Jun 2025 12:24:52 GMT",
"timestamp": 1750249492,
"description": "2 valis removed.",
"isHighSeverity": false,
"changeCount": 10,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564) {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.validatorsVTL.3:\n- \"0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n values.validatorsVTL.2:\n- \"0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n values.validatorsVTL.1:\n- \"0xAaF7b278baC078AA4f9bdc8E0a93CDe604aA67d9\"\n+ \"0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n values.validatorsVTL.0:\n- \"0xb1a0c1F1B50436AC94B8Ce9Ae919B0e820aCb374\"\n+ \"0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n }\n```\n\n```diff\n EOA (0xAaF7b278baC078AA4f9bdc8E0a93CDe604aA67d9) {\n +++ description: None\n receivedPermissions.2:\n- {\"permission\":\"validateZkStack\",\"from\":\"ethereum:0x5C03468829A26981c410a7930bD4853622F0B2E5\",\"role\":\".validatorsVTL\"}\n receivedPermissions.1.from:\n- \"ethereum:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n+ \"ethereum:0x5C03468829A26981c410a7930bD4853622F0B2E5\"\n receivedPermissions.0.from:\n- \"ethereum:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"ethereum:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n }\n```\n\n```diff\n EOA (0xb1a0c1F1B50436AC94B8Ce9Ae919B0e820aCb374) {\n +++ description: None\n receivedPermissions.2:\n- {\"permission\":\"validateZkStack\",\"from\":\"ethereum:0x5C03468829A26981c410a7930bD4853622F0B2E5\",\"role\":\".validatorsVTL\"}\n receivedPermissions.1.from:\n- \"ethereum:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n+ \"ethereum:0x5C03468829A26981c410a7930bD4853622F0B2E5\"\n receivedPermissions.0.from:\n- \"ethereum:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"ethereum:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n }\n```"
}
]
},
{
"id": "c2b3659d",
"date": "Mon, 26 May 2025 15:03:44 GMT",
"timestamp": 1748271824,
"description": "validators added (via validatorTimelock).",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564) {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.validatorsVTL.3:\n+ \"0x3eA4D1684C65756E892b0B8d3e331E10D9d3a484\"\n values.validatorsVTL.2:\n+ \"0x477c1B7DC1091389CBD3Eef21Efb00081606Ab67\"\n }\n```"
}
]
},
{
"id": "127c8e53",
"date": "Fri, 16 May 2025 10:10:13 GMT",
"timestamp": 1747390213,
"description": "v27 upgrade to standard contracts.",
"isHighSeverity": true,
"changeCount": 41,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.1:\n+ {\"_protocolVersion\":115964116992,\"_upgradeTimestamp\":1747029600}\n }\n```\n\n```diff\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.3:\n- \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n+ \"0xb3038139dce45f6c1aaedbfb1b321c230301b2d004da109b39a17d827c6b0e4f\"\n sourceHashes.2:\n- \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n+ \"0x1f9f7cd43747f5bcf879d544be0baca967245540e70592112cdc90c360f30486\"\n sourceHashes.1:\n- \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n+ \"0xab7812fa82c483b781aee4c2339b860fcdee4033de1e243370a77a20fc353ddc\"\n sourceHashes.0:\n- \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n+ \"0xca793d2e01bb37722ba48f56662e8602e693d6808ed9587867c2bac43c3dec25\"\n values.$implementation.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$implementation.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$implementation.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$implementation.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.4:\n+ [\"2025-05-14T20:40:11.000Z\",\"0x37a2cb789916112d5c2824569ee4f44d4078b9ab00b55017eebf83124309b54c\",[\"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\",\"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\",\"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\",\"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.facetAddresses.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.facetAddresses.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.facetAddresses.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.facetAddresses.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n+ \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+ \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 111669149696\n+ 115964116992\n values.getSemverProtocolVersion.0:\n- 26\n+ 27\n values.getVerifier:\n- \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n+ \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n values.getL2EvmEmulatorBytecodeHash:\n+ \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n implementationNames.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- \"AdminFacet\"\n implementationNames.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- \"GettersFacet\"\n implementationNames.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- \"MailboxFacet\"\n implementationNames.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- \"ExecutorFacet\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "37978bfa",
"date": "Fri, 09 May 2025 11:15:27 GMT",
"timestamp": 1746789327,
"description": "New Lens owner MS.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433) {\n +++ description: None\n values.owner:\n- \"0xca2938BdD6Bcf5860f7176fA092b0ac9510f09A3\"\n+ \"0x4968A0E4b025eD7d095753E54058377969b41abC\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Lens Multisig (0x4968A0E4b025eD7d095753E54058377969b41abC)\n +++ description: None\n```"
}
]
},
{
"id": "dcef561d",
"date": "Tue, 08 Apr 2025 09:32:43 GMT",
"timestamp": 1744104763,
"description": "Initial discovery of a standard ZK stack validium.",
"isHighSeverity": false,
"changeCount": 8,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract ValidatorTimelock3 (0x5C03468829A26981c410a7930bD4853622F0B2E5)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 0s.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock2 (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract LensZkEvmAdmin (0x6bd8d33551077Ed281Cb047835a2aE4033eEc433)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ description: Contract that 'verifies' the data availability for validiums. This implementation only checks the correct formatting and does not serve as a DA oracle. Can be used by ZK stack validiums as the L1 part of a DAValidator pair.\n```\n\n```diff\n+ Status: CREATED\n contract LensZkEvm (0xc29d04A93F893700015138E3E334eB828dAC3cef)\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987)\n +++ description: None\n```"
}
]
}
]
+89 -32
+2 -2
[
{
"address": "0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7",
"sinceTimestamp": 1737090335,
"tokens": [
"USDC",
"ETH",
"LIT",
"LINK",
"AAVE",
"UNI",
"SKY",
"LDO",
"AZTEC"
],
"contract": {
"isVerified": true,
"address": "eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7",
"upgradeability": {
"proxyType": "zkLighter proxy",
"admins": [
"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67"
],
"implementations": [
"eth:0x6e1433585b320880f488D0A7c1d2077D43B6Ca4E",
"eth:0x1b2Fd2341cdC9d4F00CE5488A0db172d8C8a98E4"
"eth:0xE16c893252616dD49913969f145e733b96a3E5A7",
"eth:0xE1A19e35320218E41526ad619cf55985cfF20810"
]
},
"chain": "ethereum",
"url": "https://etherscan.io/address/0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
]
+8 -3
{
"dataAvailability": [
{
"name": "Data published onchain",
"description": "Account delta data is published onchain as blobs. A prover migration (gnark/MIMC → plonky2/Poseidon2) at block 23,711,820 left pre-migration blobs undecodable, but Lighter published a full state snapshot at batch #166859 (blobs.zip) that closes the gap. L2BEAT reproduced the snapshot state root from blobs and verified the roll-forward to chain head, confirming the live state is reconstructable from L1.",
"risks": [],
"references": [
{
"title": "Lighter Prover v0.0.1 (first public release, Dec 2025)",
"url": "https://github.com/elliottech/lighter-prover"
},
{
"title": "StateRootUpdate event — gnark to plonky2 migration",
"url": "https://etherscan.io/tx/0x6a50b2b00444914e5c53df2fb48404078a098f93fc3911e6fcbde1c7b6418225"
},
{
"title": "Desert exit circuit + state snapshot (blobs.zip)",
"url": "https://github.com/elliottech/lighter-prover/tree/main/desertexit"
}
]
}
],
"exitMechanisms": [
{
"name": "Regular exit",
"description": "The user initiates the withdrawal by submitting a regular transaction on this chain. When the block containing that transaction is settled the funds become available for withdrawal on L1. ZK proofs are required to settle blocks. Finally the user submits an L1 transaction to claim the funds.",
"risks": [],
"risks": [
{
"category": "Funds can be frozen if",
"text": "the Pause Guardian or the Emergency Guardian pause the system. A pause halts batch processing and withdrawals for up to 24h or 72h respectively, but does not block desert mode."
}
],
"references": []
},
{
"name": "Escape hatch through ZK proofs",
"description": "If the centralized operators fail to process forced transactions after the deadline, the system can be frozen (desert mode) and users are expected to exit by reconstructing the latest settled state and providing a ZK proof of balance. The desert exit circuit and a full state snapshot at batch #166859 are public, and the deployed DesertVerifier matches a rebuild from that circuit. L2BEAT reproduced the snapshot state root from L1 blobs and verified the roll-forward to chain head.",
"risks": [],
"references": [
{
"title": "Desert exit circuit + state snapshot",
"url": "https://github.com/elliottech/lighter-prover/tree/main/desertexit"
}
]
}
],
"forceTransactions": {
"name": "Users can force their transactions on L1",
"description": "If the centralized operators fail to include user transactions, users can force them themselves through L1. The possible transaction types that users can force are: deposits, withdrawals, order creation, order cancellation, and burning of pool shares. If the operators do not process forced transactions within 14d, the system can be frozen (desert mode) and users can exit using the latest settled state. All open positions are settled using the latest index price.",
"risks": [],
"references": []
},
"operator": {
"name": "Centralized operators",
"description": "Only the centralized operators can submit batches and verify them with a ZK proof, i.e. advance the state of the protocol.",
"risks": [
{
"category": "MEV can be extracted if",
"text": "the operator exploits their centralized position and frontruns user transactions."
}
],
"references": []
},
"otherConsiderations": [
{
"name": "External oracles used for index prices",
"description": "Lighter uses a combination of oracles to determine index prices, with Stork as the primary source. External signatures are currently not verified and the sequencer must be trusted to truthfully report data.",
"risks": [
{
"category": "Funds can be lost if",
"text": "the oracle prices are manipulated."
}
],
"references": [
{
"title": "Lighter docs - Fair Price Marking",
"url": "https://docs.lighter.xyz/perpetual-futures/fair-price-marking"
}
]
}
],
"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 transactions to the previous state. This includes user transactions originating from L1 and L2, as well as internal transactions created by L2 operators. In the desert mode, valid proofs of exit must be generated. These proofs are then verified on Ethereum by a smart contract.",
"categories": [
{
"title": "Prover Architecture",
"description": "[This repo](https://github.com/elliottech/lighter-prover/tree/main) contains the circuits and prover code for both normal and desert operation mode of Lighter. It includes the logic to generate and verify proofs of valid state transition according to the Lighter [matching engine](https://github.com/elliottech/lighter-prover/blob/d0ff2304aea516b22f3a5223881006b6a9af1cc9/circuit/src/matching_engine.rs)."
},
{
"title": "ZK Circuits",
"description": "Lighter transition is proven with custom Plonky2 circuits, compiled into ZK Lighter Verifier and Desert Verifier. ZK Lighter verifier implements the perp DEX and spot trading logic and could be found in this [prover repo](https://github.com/elliottech/lighter-prover/tree/main/circuit/src). Desert verifier consists of circuits proving valid L2 -> L1 withdrawals in the desert mode. More details in [ZK Catalog](https://l2beat.com/zk-catalog/lighterprover#proof-system)."
},
{
"title": "Verification Keys Generation",
"description": "Lighter wraps its validity proof into a Plonk-based proof system which requires a trusted setup. The verification keys are hardcoded in the verifier contract on-chain. Lighter prover repo contains a [script](https://github.com/elliottech/lighter-prover/blob/main/build_circuits.sh) that regenerates circuits and verification keys.",
"references": [
{
"title": "ZK Lighter verifier verification keys",
"url": "https://etherscan.io/address/0xd3E043d6E17Cb28d73BAa469Aa632411e1dE8046#code#F1#L54"
"url": "https://etherscan.io/address/0xc4c2067ece6e33e50a30087ec14096715e56aE11#code#F1#L54"
},
{
"title": "Desert verifier verification keys",
"url": "https://etherscan.io/address/0x866418061d4C1168e1c8E8f6facE79675395E008#code#F1#L55"
}
]
}
]
},
"upgradesAndGovernance": {
"content": "Regular upgrades are initiated by the \"network governor\" and executed with a 21d delay. The \"security council\" is allowed to reduce the upgrade delay to zero in case of an emergency. The security council does not currently satisfy the Stage 1 requirements. The network governor also retains the ability to add or remove validators."
"content": "Regular upgrades are initiated by the \"network governor\" and executed with a 21d delay. The \"security council\" is allowed to reduce the upgrade delay to zero in case of an emergency. The security council does not currently satisfy the Stage 1 requirements. The network governor also retains the ability to add or remove validators, as well as set Pause and Emergency Guardians that temporarily halt batch processing and withdrawals."
}
}
+1 -1
{
"ethereum": {
"roles": [],
"actors": [
{
"id": "Lighter Multisig",
"name": "Lighter Multisig",
"description": "A Multisig with 4/7 threshold. \n* Can interact with UpgradeGatekeeper\n * can reduce the upgrade delay to zero seconds ",
"accounts": [
{
"address": "eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045",
"type": "Contract",
"isVerified": true,
"name": "0x92b1…2045",
"url": "https://etherscan.io/address/0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xD80037fade5d25b9c8B23e5c43bB0577C165Dcf9",
"type": "EOA",
"isVerified": true,
"name": "0xD800…Dcf9",
"url": "https://etherscan.io/address/0xD80037fade5d25b9c8B23e5c43bB0577C165Dcf9"
},
{
"address": "eth:0xb08564C7fc68C3Ab1cD81300C8Ad150e04411F85",
"type": "EOA",
"isVerified": true,
"name": "0xb085…1F85",
"url": "https://etherscan.io/address/0xb08564C7fc68C3Ab1cD81300C8Ad150e04411F85"
},
{
"address": "eth:0xEc589ee2DF6dd2E7e0873F229d18e024B97d0FA6",
"type": "EOA",
"isVerified": true,
"name": "0xEc58…0FA6",
"url": "https://etherscan.io/address/0xEc589ee2DF6dd2E7e0873F229d18e024B97d0FA6"
},
{
"address": "eth:0x57ccC925f54aC946C3423808929fE77265c9045d",
"type": "EOA",
"isVerified": true,
"name": "0x57cc…045d",
"url": "https://etherscan.io/address/0x57ccC925f54aC946C3423808929fE77265c9045d"
},
{
"address": "eth:0x0bF05AA3b821Eaa341fAD0a674081A02d3dB169D",
"type": "EOA",
"isVerified": true,
"name": "0x0bF0…169D",
"url": "https://etherscan.io/address/0x0bF05AA3b821Eaa341fAD0a674081A02d3dB169D"
},
{
"address": "eth:0x8B0190046D7b366642D4ff091C100d84ec4AB6f6",
"type": "EOA",
"isVerified": true,
"name": "0x8B01…B6f6",
"url": "https://etherscan.io/address/0x8B0190046D7b366642D4ff091C100d84ec4AB6f6"
},
{
"address": "eth:0x06eD0b0bD3A9e0C517B6cD7C8B851Cc1e8e1a90A",
"type": "EOA",
"isVerified": true,
"name": "0x06eD…a90A",
"url": "https://etherscan.io/address/0x06eD0b0bD3A9e0C517B6cD7C8B851Cc1e8e1a90A"
}
],
"discoveryDrivenData": true
},
{
"id": "Lighter Multisig 2",
"name": "Lighter Multisig 2",
"description": "A Multisig with 3/5 threshold. \n* Can upgrade **with 21d delay**\n * Lighter [via: UpgradeGatekeeper with 21d delay]\n * Governance [via: UpgradeGatekeeper with 21d delay]\n * ZkLighterVerifier [via: UpgradeGatekeeper with 21d delay]\n* Can interact with Governance\n * manage validators, update the address that manages the insurance fund, update the treasury address that collects fees from markets, add and update markets and assets ",
"description": "A Multisig with 3/5 threshold. \n* Can upgrade **with 21d delay**\n * Lighter [via: UpgradeGatekeeper with 21d delay]\n * Governance [via: UpgradeGatekeeper with 21d delay]\n * ZkLighterVerifier [via: UpgradeGatekeeper with 21d delay]\n* Can interact with Governance\n * manage validators, update the address that manages the insurance fund, update the treasury address that collects fees from markets, add and update markets and assets, appoint the Pause and Emergency Guardians and lift their pauses early ",
"accounts": [
{
"address": "eth:0x97A90Ec950B6BCd9B190b566525B2Bb92A2C03a2",
"type": "Contract",
"isVerified": true,
"name": "0x97A9…03a2",
"url": "https://etherscan.io/address/0x97A90Ec950B6BCd9B190b566525B2Bb92A2C03a2"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x2994d343b6b17EC23E9E4a08082184Fd43F763a3",
"type": "EOA",
"isVerified": true,
"name": "0x2994…63a3",
"url": "https://etherscan.io/address/0x2994d343b6b17EC23E9E4a08082184Fd43F763a3"
},
{
"address": "eth:0x67d6c2569AB98A1F535E36b3BaB1FBD825fa536E",
"type": "EOA",
"isVerified": true,
"name": "0x67d6…536E",
"url": "https://etherscan.io/address/0x67d6c2569AB98A1F535E36b3BaB1FBD825fa536E"
},
{
"address": "eth:0xa0B3781B830DF57B1f018C434c58551c2Fc6b3Af",
"type": "EOA",
"isVerified": true,
"name": "0xa0B3…b3Af",
"url": "https://etherscan.io/address/0xa0B3781B830DF57B1f018C434c58551c2Fc6b3Af"
},
{
"address": "eth:0x6FEe6cdD595D12Ec6cD1803474B3615f1D2fb9ed",
"type": "EOA",
"isVerified": true,
"name": "0x6FEe…b9ed",
"url": "https://etherscan.io/address/0x6FEe6cdD595D12Ec6cD1803474B3615f1D2fb9ed"
},
{
"address": "eth:0xF65F409d8f3fa3635287783256394D7eB7aD7835",
"type": "EOA",
"isVerified": true,
"name": "0xF65F…7835",
"url": "https://etherscan.io/address/0xF65F409d8f3fa3635287783256394D7eB7aD7835"
}
],
"discoveryDrivenData": true
},
{
"id": "Safe",
"name": "Safe",
"description": "A Multisig with 2/3 threshold. ",
"accounts": [
{
"address": "eth:0x3dD7c834EAa70c98e1C224808a3c62163b344daE",
"type": "Contract",
"isVerified": true,
"name": "0x3dD7…4daE",
"url": "https://etherscan.io/address/0x3dD7c834EAa70c98e1C224808a3c62163b344daE"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x6160aa8A4CFF0A56816855FE25454698AE2aF99E",
"type": "EOA",
"isVerified": true,
"name": "0x6160…F99E",
"url": "https://etherscan.io/address/0x6160aa8A4CFF0A56816855FE25454698AE2aF99E"
},
{
"address": "eth:0x6FEe6cdD595D12Ec6cD1803474B3615f1D2fb9ed",
"type": "EOA",
"isVerified": true,
"name": "0x6FEe…b9ed",
"url": "https://etherscan.io/address/0x6FEe6cdD595D12Ec6cD1803474B3615f1D2fb9ed"
},
{
"address": "eth:0xAeD34Fa09DCdd340f81991FfDa368F21e79922D0",
"type": "EOA",
"isVerified": true,
"name": "0xAeD3…22D0",
"url": "https://etherscan.io/address/0xAeD34Fa09DCdd340f81991FfDa368F21e79922D0"
}
],
"discoveryDrivenData": true
},
{
"id": "Safe",
"name": "Safe",
"description": "A Multisig with 3/5 threshold. ",
"accounts": [
{
"address": "eth:0x9ccE444F8c60BD570986cd7D0ED7aEc29f127310",
"type": "Contract",
"isVerified": true,
"name": "0x9ccE…7310",
"url": "https://etherscan.io/address/0x9ccE444F8c60BD570986cd7D0ED7aEc29f127310"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xfDb36C132fA19f7774d72fA39c89272D1B954A41",
"type": "EOA",
"isVerified": true,
"name": "0xfDb3…4A41",
"url": "https://etherscan.io/address/0xfDb36C132fA19f7774d72fA39c89272D1B954A41"
},
{
"address": "eth:0x8D92A471576577Cda70097154753F0d7f973507f",
"type": "EOA",
"isVerified": true,
"name": "0x8D92…507f",
"url": "https://etherscan.io/address/0x8D92A471576577Cda70097154753F0d7f973507f"
},
{
"address": "eth:0xDe81D3EC2B4F0736F23409Ddac6c095310a46a0E",
"type": "EOA",
"isVerified": true,
"name": "0xDe81…6a0E",
"url": "https://etherscan.io/address/0xDe81D3EC2B4F0736F23409Ddac6c095310a46a0E"
},
{
"address": "eth:0x6FEe6cdD595D12Ec6cD1803474B3615f1D2fb9ed",
"type": "EOA",
"isVerified": true,
"name": "0x6FEe…b9ed",
"url": "https://etherscan.io/address/0x6FEe6cdD595D12Ec6cD1803474B3615f1D2fb9ed"
},
{
"address": "eth:0xf711cFb0368a62ec06A0cfD1880e9AD5d9FEA23a",
"type": "EOA",
"isVerified": true,
"name": "0xf711…A23a",
"url": "https://etherscan.io/address/0xf711cFb0368a62ec06A0cfD1880e9AD5d9FEA23a"
}
],
"discoveryDrivenData": true
},
{
"id": "EOA-1,-EOA-2-and-EOA-3",
"name": "EOA 1, EOA 2 and EOA 3",
"accounts": [
{
"address": "eth:0x191fF0EC830F83916A427d169a234c33e48aA79f",
"type": "EOA",
"isVerified": true,
"name": "0x191f…A79f",
"url": "https://etherscan.io/address/0x191fF0EC830F83916A427d169a234c33e48aA79f",
"displayName": "EOA 1"
},
{
"address": "eth:0x750bdb90AC72A78308d21eAC78999bBAE31cd63d",
"type": "EOA",
"isVerified": true,
"name": "0x750b…d63d",
"url": "https://etherscan.io/address/0x750bdb90AC72A78308d21eAC78999bBAE31cd63d",
"displayName": "EOA 2"
},
{
"address": "eth:0xC0D2853e06F1E145177D5ef08Ab065a76e14354C",
"type": "EOA",
"isVerified": true,
"name": "0xC0D2…354C",
"url": "https://etherscan.io/address/0xC0D2853e06F1E145177D5ef08Ab065a76e14354C",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with Governance\n * can commit, verify, execute batches, and revert committed but not yet executed batches ",
"discoveryDrivenData": true
}
]
}
}
+8 -8
{
"addresses": {
"ethereum": [
{
"name": "Lighter",
"isVerified": true,
"address": "eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7",
"upgradeability": {
"proxyType": "zkLighter proxy",
"admins": [
"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67"
],
"implementations": [
"eth:0x6e1433585b320880f488D0A7c1d2077D43B6Ca4E",
"eth:0x1b2Fd2341cdC9d4F00CE5488A0db172d8C8a98E4"
"eth:0xE16c893252616dD49913969f145e733b96a3E5A7",
"eth:0xE1A19e35320218E41526ad619cf55985cfF20810"
]
},
"chain": "ethereum",
"description": "The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n* Roles:\n * **admin**: UpgradeGatekeeper; ultimately Lighter Multisig 2",
"upgradableBy": [
{
"name": "Lighter Multisig 2",
"delay": "21d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7#code"
},
{
"name": "DesertVerifier",
"isVerified": true,
"address": "eth:0x866418061d4C1168e1c8E8f6facE79675395E008",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Verifies the zk proofs that let users exit their funds directly on L1 while the system is in desert mode (escape hatch).\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x866418061d4C1168e1c8E8f6facE79675395E008#code"
},
{
"name": "UpgradeGatekeeper",
"isVerified": true,
"address": "eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by Lighter Multisig. In practice every upgrade so far has been fast-tracked: the security council zeroes the notice period right before each upgrade is finished.\n* Roles:\n * **getMaster**: Lighter Multisig 2\n * **securityCouncilAddress**: Lighter Multisig",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67#code"
},
{
"name": "Governance",
"isVerified": true,
"address": "eth:0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67"
],
"implementations": [
"eth:0x46D3C0c01D5DAae4FE8e3f54f32901d9Fbde1f08"
"eth:0xE935fa009Ae2F913A26B4411a901ECF6dBAb6D43"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "Manages the list of validators and the network governor.\n* Roles:\n * **admin**: UpgradeGatekeeper; ultimately Lighter Multisig 2\n * **networkGovernor**: Lighter Multisig 2\n * **validators**: EOA 1, EOA 2, EOA 3",
"description": "Manages the list of validators, the network governor and the emergency pause guardians.\n* Roles:\n * **admin**: UpgradeGatekeeper; ultimately Lighter Multisig 2\n * **networkGovernor**: Lighter Multisig 2\n * **validators**: EOA 1, EOA 2, EOA 3",
"upgradableBy": [
{
"name": "Lighter Multisig 2",
"delay": "21d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1#code"
},
{
"name": "ZkLighterVerifier",
"isVerified": true,
"address": "eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67"
],
"implementations": [
"eth:0xd3E043d6E17Cb28d73BAa469Aa632411e1dE8046"
"eth:0xc4c2067ece6e33e50a30087ec14096715e56aE11"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n* Roles:\n * **admin**: UpgradeGatekeeper; ultimately Lighter Multisig 2",
"upgradableBy": [
{
"name": "Lighter Multisig 2",
"delay": "21d"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xac3Ce44B6ff4E402858C99D5699ff63131572BaA#code"
}
]
},
"escrows": [
{
"address": "0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7",
"sinceTimestamp": 1737090335,
"tokens": [
"USDC",
"ETH",
"LIT",
"LINK",
"AAVE",
"UNI",
"SKY",
"LDO",
"AZTEC"
],
"contract": {
"isVerified": true,
"address": "eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7",
"upgradeability": {
"proxyType": "zkLighter proxy",
"admins": [
"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67"
],
"implementations": [
"eth:0x6e1433585b320880f488D0A7c1d2077D43B6Ca4E",
"eth:0x1b2Fd2341cdC9d4F00CE5488A0db172d8C8a98E4"
"eth:0xE16c893252616dD49913969f145e733b96a3E5A7",
"eth:0xE1A19e35320218E41526ad619cf55985cfF20810"
]
},
"chain": "ethereum",
"url": "https://etherscan.io/address/0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7#code"
},
"chain": "ethereum",
"includeInTotal": true,
"chainId": 1
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
}
],
"zkVerifiers": [
"eth:0xd3E043d6E17Cb28d73BAa469Aa632411e1dE8046",
"eth:0xc4c2067ece6e33e50a30087ec14096715e56aE11",
"eth:0x866418061d4C1168e1c8E8f6facE79675395E008"
]
}
+1 -1
{
"baseTimestamp": 1790600976,
"baseTimestamp": 1790947397,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "104a582f",
"date": "Fri, 02 Oct 2026 13:29:44 GMT",
"timestamp": 1790947397,
"description": "Governance has added a pause guardian and emergency guardian logic. Both could pause batch commit/verify/execute and withdrawals (Pause Guardian for 2h-24h with 24h cooldown, Emergency Guardian for 24h-72h with 7d cooldown). They are currently set to 0x adderess. Governor could always lift the pause.\n\nNew verifier deployed (no sources published yet).",
"isHighSeverity": true,
"changeCount": 60,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) [lighter/ZkLighterWithSpot] {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0x41c035cf563a98a2dd11b60eb884c9bdc6c8db0b6edd02e2fa546f5711cfea4d\"\n+ \"0x2342f78a8cb132fb471dd913415e6f66e931c65f6daf8455b37b341c722bf51f\"\n values.$implementation.0:\n- \"eth:0x6e1433585b320880f488D0A7c1d2077D43B6Ca4E\"\n+ \"eth:0xE16c893252616dD49913969f145e733b96a3E5A7\"\n values.$implementation.1:\n- \"eth:0x1b2Fd2341cdC9d4F00CE5488A0db172d8C8a98E4\"\n+ \"eth:0xE1A19e35320218E41526ad619cf55985cfF20810\"\n values.additionalZkLighter:\n- \"eth:0x1b2Fd2341cdC9d4F00CE5488A0db172d8C8a98E4\"\n+ \"eth:0xE1A19e35320218E41526ad619cf55985cfF20810\"\n values.getTarget:\n- \"eth:0x6e1433585b320880f488D0A7c1d2077D43B6Ca4E\"\n+ \"eth:0xE16c893252616dD49913969f145e733b96a3E5A7\"\n implementationNames.eth:0x6e1433585b320880f488D0A7c1d2077D43B6Ca4E:\n- \"ZkLighter\"\n implementationNames.eth:0x1b2Fd2341cdC9d4F00CE5488A0db172d8C8a98E4:\n- \"AdditionalZkLighter\"\n implementationNames.eth:0xE16c893252616dD49913969f145e733b96a3E5A7:\n+ \"ZkLighter\"\n implementationNames.eth:0xE1A19e35320218E41526ad619cf55985cfF20810:\n+ \"AdditionalZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045. In practice every upgrade so far has been fast-tracked: the security council zeroes the notice period right before each upgrade is finished.\n values.versionId:\n- 72\n+ 74\n }\n```\n\n```diff\n contract Lighter Multisig 2 (eth:0x97A90Ec950B6BCd9B190b566525B2Bb92A2C03a2) [GnosisSafe] {\n +++ description: None\n receivedPermissions.0.description:\n- \"manage validators, update the address that manages the insurance fund, update the treasury address that collects fees from markets, add and update markets and assets.\"\n+ \"manage validators, update the address that manages the insurance fund, update the treasury address that collects fees from markets, add and update markets and assets, appoint the Pause and Emergency Guardians and lift their pauses early.\"\n }\n```\n\n```diff\n contract Governance (eth:0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1) [lighter/GovernancePausable] {\n +++ description: Manages the list of validators, the network governor and the emergency pause guardians.\n template:\n- \"lighter/Governance\"\n+ \"lighter/GovernancePausable\"\n sourceHashes.1:\n- \"0x0033a032557a6a464645acc1901ac15e72d841e4d56cc8b94c64a55cae92b122\"\n+ \"0x87a6efe7d369db405cf65a6d33bb772aae12a632406fb4533c845a4b4a2e8869\"\n description:\n- \"Manages the list of validators and the network governor.\"\n+ \"Manages the list of validators, the network governor and the emergency pause guardians.\"\n values.$implementation:\n- \"eth:0x46D3C0c01D5DAae4FE8e3f54f32901d9Fbde1f08\"\n+ \"eth:0xE935fa009Ae2F913A26B4411a901ECF6dBAb6D43\"\n values.getTarget:\n- \"eth:0x46D3C0c01D5DAae4FE8e3f54f32901d9Fbde1f08\"\n+ \"eth:0xE935fa009Ae2F913A26B4411a901ECF6dBAb6D43\"\n values.MAX_DEPOSIT_AMOUNT:\n- 1000000000000000\n values.MAX_EXCHANGE_USDC_AMOUNT:\n- \"1152921504606846975\"\n values.MAX_MARKET_INDEX:\n- 254\n values.MAX_POSITION_AMOUNT:\n- \"72057594037927935\"\n values.MAX_POSITION_QUOTE_AMOUNT:\n- \"72057594037927935\"\n values.MIN_ORDER_BASE_AMOUNT:\n- 1\n values.PRIORITY_EXPIRATION:\n- 1555200\n+ 1209600\n values.EMERGENCY_GUARDIAN_COOLDOWN:\n+ 604800\n values.EMERGENCY_GUARDIAN_MAX_DURATION:\n+ 259200\n values.EMERGENCY_GUARDIAN_MIN_DURATION:\n+ 86400\n+++ description: Can halt batch processing and withdrawals for up to 72h, with a 7d cooldown between pauses.\n+++ severity: HIGH\n values.emergencyGuardian:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n+++ description: True while an Emergency Guardian pause is active (batch processing and withdrawals halted).\n+++ severity: HIGH\n values.emergencyGuardianPaused:\n+ false\n values.emergencyGuardianState:\n+ {\"startedAt\":0,\"expiresAt\":0,\"cooldownEndsAt\":0}\n values.MAX_ASSET_INDEX:\n+ 62\n values.MAX_BATCH_DEPOSIT_LENGTH:\n+ 1000\n values.MAX_DEPOSIT_CAP_TICKS:\n+ \"1152921504606846975\"\n values.MAX_ORDER_QUOTE_AMOUNT:\n+ 281474976710655\n values.MAX_PERPS_MARKET_INDEX:\n+ 254\n values.MAX_POOL_SHARES_TO_MINT_OR_BURN:\n+ \"1152921504606846975\"\n values.MAX_PUBLIC_MARKET_INDEX:\n+ 281474976710655\n values.MAX_SPOT_MARKET_INDEX:\n+ 4094\n values.MAX_STAKING_SHARES_TO_MINT_OR_BURN:\n+ \"1152921504606846975\"\n values.MAX_TICK_SIZE:\n+ \"340282366920938463463374607431768211455\"\n values.MIN_ASSET_INDEX:\n+ 1\n values.MIN_POOL_SHARES_TO_MINT_OR_BURN:\n+ 1\n values.MIN_SPOT_MARKET_INDEX:\n+ 2048\n values.MIN_STAKING_SHARES_TO_MINT_OR_BURN:\n+ 1\n values.NATIVE_ASSET_INDEX:\n+ 1\n values.NIL_PUBLIC_MARKET_INDEX:\n+ 255\n values.PAUSE_GUARDIAN_COOLDOWN:\n+ 86400\n values.PAUSE_GUARDIAN_MAX_DURATION:\n+ 86400\n values.PAUSE_GUARDIAN_MIN_DURATION:\n+ 7200\n+++ description: Can halt batch processing and withdrawals for up to 24h, with a 24h cooldown between pauses.\n+++ severity: HIGH\n values.pauseGuardian:\n+ \"eth:0x0000000000000000000000000000000000000000\"\n+++ description: True while a Pause Guardian pause is active (batch processing and withdrawals halted).\n+++ severity: HIGH\n values.pauseGuardianPaused:\n+ false\n values.pauseGuardianState:\n+ {\"startedAt\":0,\"expiresAt\":0,\"cooldownEndsAt\":0}\n values.USDC_ASSET_INDEX:\n+ 3\n implementationNames.eth:0x46D3C0c01D5DAae4FE8e3f54f32901d9Fbde1f08:\n- \"Governance\"\n implementationNames.eth:0xE935fa009Ae2F913A26B4411a901ECF6dBAb6D43:\n+ \"Governance\"\n fieldMeta:\n+ {\"pauseGuardian\":{\"severity\":\"HIGH\",\"description\":\"Can halt batch processing and withdrawals for up to 24h, with a 24h cooldown between pauses.\"},\"emergencyGuardian\":{\"severity\":\"HIGH\",\"description\":\"Can halt batch processing and withdrawals for up to 72h, with a 7d cooldown between pauses.\"},\"pauseGuardianPaused\":{\"severity\":\"HIGH\",\"description\":\"True while a Pause Guardian pause is active (batch processing and withdrawals halted).\"},\"emergencyGuardianPaused\":{\"severity\":\"HIGH\",\"description\":\"True while an Emergency Guardian pause is active (batch processing and withdrawals halted).\"}}\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xead67b34c39541947e19fe58d5e31758b4495fe958df8ee8580885c8db169ed5\"\n+ \"0x4dc54ffb4008a4ca0179446fed46565fbd602cc3963270f555f70ed93eea7cbe\"\n values.$implementation:\n- \"eth:0xd3E043d6E17Cb28d73BAa469Aa632411e1dE8046\"\n+ \"eth:0xc4c2067ece6e33e50a30087ec14096715e56aE11\"\n values.getTarget:\n- \"eth:0xd3E043d6E17Cb28d73BAa469Aa632411e1dE8046\"\n+ \"eth:0xc4c2067ece6e33e50a30087ec14096715e56aE11\"\n implementationNames.eth:0xd3E043d6E17Cb28d73BAa469Aa632411e1dE8046:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xc4c2067ece6e33e50a30087ec14096715e56aE11:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "16a37b66",
"date": "Mon, 28 Sep 2026 13:34:29 GMT",
"timestamp": 1790600976,
"description": "New verifier deployed, successfully reproduced from sources.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) [lighter/ZkLighterWithSpot] {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0x2c7c54c7dbae18fe5dd08d3aa5ccf1890e97148735d1d4a7768fe8fe9a67d6a3\"\n+ \"0x41c035cf563a98a2dd11b60eb884c9bdc6c8db0b6edd02e2fa546f5711cfea4d\"\n values.$implementation.0:\n- \"eth:0xb9B30C7Ac4eCBf756bc68D7b12c842E415A9cA8e\"\n+ \"eth:0x6e1433585b320880f488D0A7c1d2077D43B6Ca4E\"\n values.getTarget:\n- \"eth:0xb9B30C7Ac4eCBf756bc68D7b12c842E415A9cA8e\"\n+ \"eth:0x6e1433585b320880f488D0A7c1d2077D43B6Ca4E\"\n implementationNames.eth:0xb9B30C7Ac4eCBf756bc68D7b12c842E415A9cA8e:\n- \"ZkLighter\"\n implementationNames.eth:0x6e1433585b320880f488D0A7c1d2077D43B6Ca4E:\n+ \"ZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045. In practice every upgrade so far has been fast-tracked: the security council zeroes the notice period right before each upgrade is finished.\n values.versionId:\n- 71\n+ 72\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xb7e4318fc7163594c3382febfcafc104afdbd2e77905ca0c7b2d26c8ff527538\"\n+ \"0xead67b34c39541947e19fe58d5e31758b4495fe958df8ee8580885c8db169ed5\"\n values.$implementation:\n- \"eth:0x21B036c441C2E3aeD710526189Cd6F5b3151AfbE\"\n+ \"eth:0xd3E043d6E17Cb28d73BAa469Aa632411e1dE8046\"\n values.getTarget:\n- \"eth:0x21B036c441C2E3aeD710526189Cd6F5b3151AfbE\"\n+ \"eth:0xd3E043d6E17Cb28d73BAa469Aa632411e1dE8046\"\n implementationNames.eth:0x21B036c441C2E3aeD710526189Cd6F5b3151AfbE:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xd3E043d6E17Cb28d73BAa469Aa632411e1dE8046:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "f3073dbb",
"date": "Tue, 15 Sep 2026 09:44:24 GMT",
"timestamp": 1789464683,
"description": "New verifier deployed (no sources published yet). Upgraded the main contract: https://disco.l2beat.com/diff/eth:0x8D692294a4824d868e35B3CEcd734aCf41B2342e/eth:0xb9B30C7Ac4eCBf756bc68D7b12c842E415A9cA8e. Added functionality to conveniently change pubkey for master account, minor refactoring.",
"isHighSeverity": true,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) [lighter/ZkLighterWithSpot] {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0xb4dce2f15590894c57a91457428ad19b912efa03f6198f09e308f82518d33234\"\n+ \"0x2c7c54c7dbae18fe5dd08d3aa5ccf1890e97148735d1d4a7768fe8fe9a67d6a3\"\n values.$implementation.0:\n- \"eth:0x8D692294a4824d868e35B3CEcd734aCf41B2342e\"\n+ \"eth:0xb9B30C7Ac4eCBf756bc68D7b12c842E415A9cA8e\"\n values.$implementation.1:\n- \"eth:0xaA5e1aaa81a39F828248ffFeaDC77CcEC8eC3906\"\n+ \"eth:0x1b2Fd2341cdC9d4F00CE5488A0db172d8C8a98E4\"\n values.additionalZkLighter:\n- \"eth:0xaA5e1aaa81a39F828248ffFeaDC77CcEC8eC3906\"\n+ \"eth:0x1b2Fd2341cdC9d4F00CE5488A0db172d8C8a98E4\"\n values.getTarget:\n- \"eth:0x8D692294a4824d868e35B3CEcd734aCf41B2342e\"\n+ \"eth:0xb9B30C7Ac4eCBf756bc68D7b12c842E415A9cA8e\"\n values.MAX_PUBLIC_MARKET_INDEX:\n+ 281474976710655\n values.NIL_PUBLIC_MARKET_INDEX:\n+ 255\n implementationNames.eth:0x8D692294a4824d868e35B3CEcd734aCf41B2342e:\n- \"ZkLighter\"\n implementationNames.eth:0xaA5e1aaa81a39F828248ffFeaDC77CcEC8eC3906:\n- \"AdditionalZkLighter\"\n implementationNames.eth:0xb9B30C7Ac4eCBf756bc68D7b12c842E415A9cA8e:\n+ \"ZkLighter\"\n implementationNames.eth:0x1b2Fd2341cdC9d4F00CE5488A0db172d8C8a98E4:\n+ \"AdditionalZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 69\n+ 71\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xd6bd16e71487e79b2b73fdcd4ac6274826c2eea864e60a68d0527898b6aa449e\"\n+ \"0xb7e4318fc7163594c3382febfcafc104afdbd2e77905ca0c7b2d26c8ff527538\"\n values.$implementation:\n- \"eth:0x4E6505D3AE8Aa910e5d35557c76F567077622a6A\"\n+ \"eth:0x21B036c441C2E3aeD710526189Cd6F5b3151AfbE\"\n values.getTarget:\n- \"eth:0x4E6505D3AE8Aa910e5d35557c76F567077622a6A\"\n+ \"eth:0x21B036c441C2E3aeD710526189Cd6F5b3151AfbE\"\n implementationNames.eth:0x4E6505D3AE8Aa910e5d35557c76F567077622a6A:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x21B036c441C2E3aeD710526189Cd6F5b3151AfbE:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "21a86659",
"date": "Thu, 10 Sep 2026 12:08:42 GMT",
"timestamp": 1789042027,
"description": "New verifier deployed (no sources published yet).",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 68\n+ 69\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x6a9f25dcb10a9155c210780fa3cb38f68ba814f2a1c593ce45855a2ad56d10b1\"\n+ \"0xd6bd16e71487e79b2b73fdcd4ac6274826c2eea864e60a68d0527898b6aa449e\"\n values.$implementation:\n- \"eth:0xA437933830d65a61F8Beaa7D4C65f424bBe90b4C\"\n+ \"eth:0x4E6505D3AE8Aa910e5d35557c76F567077622a6A\"\n values.getTarget:\n- \"eth:0xA437933830d65a61F8Beaa7D4C65f424bBe90b4C\"\n+ \"eth:0x4E6505D3AE8Aa910e5d35557c76F567077622a6A\"\n implementationNames.eth:0xA437933830d65a61F8Beaa7D4C65f424bBe90b4C:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x4E6505D3AE8Aa910e5d35557c76F567077622a6A:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "319f3083",
"date": "Thu, 03 Sep 2026 10:46:39 GMT",
"timestamp": 1788432281,
"description": "New verifier deployed (no sources published yet). Also, 7702 EOA delegation.",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (eth:0x06eD0b0bD3A9e0C517B6cD7C8B851Cc1e8e1a90A) {\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:0x06eD0b0bD3A9e0C517B6cD7C8B851Cc1e8e1a90A\",\"salt\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"extensions\":[]},\"entryPoint\":\"eth:0x0000000071727De22E5E9d8BAf0edAc6f37da032\",\"getDeposit\":0,\"getDomainHash\":\"0x0d8be483cc5fa59dfb77bb3b3858ff01fb2ff458dc1e441e34f79ecc6c95858a\",\"getNonce\":0,\"NAME\":\"EIP7702StatelessDeleGator\",\"PACKED_USER_OP_TYPEHASH\":\"0xbc37962d8bd1d319c95199bdfda6d3f92baa8903a61b32d5f4ec1f4b36a3bc18\",\"VERSION\":\"1.3.0\"}\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 67\n+ 68\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x2bdf2a91d1eee5475a67f9eacc65aa114fe720836d91f4ec076ef9e1e19c9675\"\n+ \"0x6a9f25dcb10a9155c210780fa3cb38f68ba814f2a1c593ce45855a2ad56d10b1\"\n values.$implementation:\n- \"eth:0xB1386c4266974D81256afB9908e104B00587112A\"\n+ \"eth:0xA437933830d65a61F8Beaa7D4C65f424bBe90b4C\"\n values.getTarget:\n- \"eth:0xB1386c4266974D81256afB9908e104B00587112A\"\n+ \"eth:0xA437933830d65a61F8Beaa7D4C65f424bBe90b4C\"\n implementationNames.eth:0xB1386c4266974D81256afB9908e104B00587112A:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xA437933830d65a61F8Beaa7D4C65f424bBe90b4C:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "eb7b4d0f",
"date": "Wed, 26 Aug 2026 09:56:58 GMT",
"timestamp": 1787738123,
"description": "New verifier deployed (no sources published yet).",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 66\n+ 67\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xb74e656664c529e0a1c04288f9e2e470923d276a463dcdb7e85e47c2c95336c8\"\n+ \"0x2bdf2a91d1eee5475a67f9eacc65aa114fe720836d91f4ec076ef9e1e19c9675\"\n values.$implementation:\n- \"eth:0x9Ca512d2F131134972EB95515325F69812395332\"\n+ \"eth:0xB1386c4266974D81256afB9908e104B00587112A\"\n values.getTarget:\n- \"eth:0x9Ca512d2F131134972EB95515325F69812395332\"\n+ \"eth:0xB1386c4266974D81256afB9908e104B00587112A\"\n implementationNames.eth:0x9Ca512d2F131134972EB95515325F69812395332:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xB1386c4266974D81256afB9908e104B00587112A:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "2a4ae025",
"date": "Mon, 24 Aug 2026 11:19:02 GMT",
"timestamp": 1787570248,
"description": "New verifier deployed (no sources published yet).",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 64\n+ 66\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x3bf884449870657809fb4cf5310746aa4313a80425fbc69bfc45706017c63607\"\n+ \"0xb74e656664c529e0a1c04288f9e2e470923d276a463dcdb7e85e47c2c95336c8\"\n values.$implementation:\n- \"eth:0xf7b964eD0C05a7aA12fdC54865295531C9D2AEC1\"\n+ \"eth:0x9Ca512d2F131134972EB95515325F69812395332\"\n values.getTarget:\n- \"eth:0xf7b964eD0C05a7aA12fdC54865295531C9D2AEC1\"\n+ \"eth:0x9Ca512d2F131134972EB95515325F69812395332\"\n implementationNames.eth:0xf7b964eD0C05a7aA12fdC54865295531C9D2AEC1:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x9Ca512d2F131134972EB95515325F69812395332:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "4b712872",
"date": "Thu, 20 Aug 2026 12:57:43 GMT",
"timestamp": 1787230600,
"description": "Registered 3 new tokens: tether gold, S&P 500 tracker and QQQ tracker.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) [lighter/ZkLighterWithSpot] {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n values.registeredAssets.9:\n+ {\"assetIndex\":11,\"tokenAddress\":\"eth:0x68749665FF8D2d112Fa859AA293F07A622782F38\"}\n values.registeredAssets.10:\n+ {\"assetIndex\":12,\"tokenAddress\":\"eth:0xE43A5b52e317dC57770ba96BcD33C2bd5dC97c5C\"}\n values.registeredAssets.11:\n+ {\"assetIndex\":13,\"tokenAddress\":\"eth:0x227fF9D1a9931db2585a45c41fC84e3b3f48B37b\"}\n }\n```"
}
]
},
{
"id": "6ca52fb0",
"date": "Mon, 10 Aug 2026 11:16:21 GMT",
"timestamp": 1786360025,
"description": "Lighter contract upgraded: https://disco.l2beat.com/diff/eth:0xE67606837D3d68a679B25B49b8abE5cB4B0Ae483/eth:0x8D692294a4824d868e35B3CEcd734aCf41B2342e (added `PricedOnly` asset margin mode).\n\nNew verifier deployed (not reproduced yet).",
"isHighSeverity": true,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) [lighter/ZkLighterWithSpot] {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0x2aaf3cdbc91592727e3f6f6f3573ad53f66468cc60ebb85d8a6b1997bd7e6ab4\"\n+ \"0xb4dce2f15590894c57a91457428ad19b912efa03f6198f09e308f82518d33234\"\n values.$implementation.0:\n- \"eth:0xE67606837D3d68a679B25B49b8abE5cB4B0Ae483\"\n+ \"eth:0x8D692294a4824d868e35B3CEcd734aCf41B2342e\"\n values.$implementation.1:\n- \"eth:0xaeC5dbA7C62482AAba4D330788366De60db16367\"\n+ \"eth:0xaA5e1aaa81a39F828248ffFeaDC77CcEC8eC3906\"\n values.additionalZkLighter:\n- \"eth:0xaeC5dbA7C62482AAba4D330788366De60db16367\"\n+ \"eth:0xaA5e1aaa81a39F828248ffFeaDC77CcEC8eC3906\"\n values.getTarget:\n- \"eth:0xE67606837D3d68a679B25B49b8abE5cB4B0Ae483\"\n+ \"eth:0x8D692294a4824d868e35B3CEcd734aCf41B2342e\"\n implementationNames.eth:0xE67606837D3d68a679B25B49b8abE5cB4B0Ae483:\n- \"ZkLighter\"\n implementationNames.eth:0xaeC5dbA7C62482AAba4D330788366De60db16367:\n- \"AdditionalZkLighter\"\n implementationNames.eth:0x8D692294a4824d868e35B3CEcd734aCf41B2342e:\n+ \"ZkLighter\"\n implementationNames.eth:0xaA5e1aaa81a39F828248ffFeaDC77CcEC8eC3906:\n+ \"AdditionalZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 63\n+ 64\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xd76aeba5f144bc4e6d5d35dca28a475b8e6788929b0f250d000781bc2be56932\"\n+ \"0x3bf884449870657809fb4cf5310746aa4313a80425fbc69bfc45706017c63607\"\n values.$implementation:\n- \"eth:0xEd0a60EDaCd8c9B1221d2D9F753b6dF09Ea3baaa\"\n+ \"eth:0xf7b964eD0C05a7aA12fdC54865295531C9D2AEC1\"\n values.getTarget:\n- \"eth:0xEd0a60EDaCd8c9B1221d2D9F753b6dF09Ea3baaa\"\n+ \"eth:0xf7b964eD0C05a7aA12fdC54865295531C9D2AEC1\"\n implementationNames.eth:0xEd0a60EDaCd8c9B1221d2D9F753b6dF09Ea3baaa:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xf7b964eD0C05a7aA12fdC54865295531C9D2AEC1:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "3fce832b",
"date": "Fri, 24 Jul 2026 09:14:52 GMT",
"timestamp": 1784884362,
"description": "New lighter verifier deployed, regenerated from sources.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) [lighter/ZkLighterWithSpot] {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0x77b8a3298ef7712fdc6678b0e692325e1c68dd049b035d9c515f030cc2384c79\"\n+ \"0x2aaf3cdbc91592727e3f6f6f3573ad53f66468cc60ebb85d8a6b1997bd7e6ab4\"\n values.$implementation.0:\n- \"eth:0x9397837Fa581F7f527E0f71a0CB53eb633bF0F1B\"\n+ \"eth:0xE67606837D3d68a679B25B49b8abE5cB4B0Ae483\"\n values.getTarget:\n- \"eth:0x9397837Fa581F7f527E0f71a0CB53eb633bF0F1B\"\n+ \"eth:0xE67606837D3d68a679B25B49b8abE5cB4B0Ae483\"\n implementationNames.eth:0x9397837Fa581F7f527E0f71a0CB53eb633bF0F1B:\n- \"ZkLighter\"\n implementationNames.eth:0xE67606837D3d68a679B25B49b8abE5cB4B0Ae483:\n+ \"ZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 62\n+ 63\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xba3f35a68ac7f5eb875cf56eaf1e548eb868391c242a15a1726880db2c87b6ff\"\n+ \"0xd76aeba5f144bc4e6d5d35dca28a475b8e6788929b0f250d000781bc2be56932\"\n values.$implementation:\n- \"eth:0xd33EA7286196F5fdAB5C06e9E90844e61E586428\"\n+ \"eth:0xEd0a60EDaCd8c9B1221d2D9F753b6dF09Ea3baaa\"\n values.getTarget:\n- \"eth:0xd33EA7286196F5fdAB5C06e9E90844e61E586428\"\n+ \"eth:0xEd0a60EDaCd8c9B1221d2D9F753b6dF09Ea3baaa\"\n implementationNames.eth:0xd33EA7286196F5fdAB5C06e9E90844e61E586428:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xEd0a60EDaCd8c9B1221d2D9F753b6dF09Ea3baaa:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "3484e5da",
"date": "Mon, 20 Jul 2026 11:38:25 GMT",
"timestamp": 1784545026,
"description": "Upgraded zk lighter contract (https://disco.l2beat.com/diff/eth:0x22F05515497ce8D78f3898088C474403Ac9C668f/eth:0xaeC5dbA7C62482AAba4D330788366De60db16367). Added `indexPriceDivider` param (idk what it means) and refactored error types in additional ZKLighter contract.\n\nAlso upgraded Lighter verifier and Desert verifier, their sources are not published yet.",
"isHighSeverity": true,
"changeCount": 18,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract DesertVerifier (eth:0x2aDBd91742B64105a097bC37D20Ebbca9a496085) [N/A]\n +++ description: None\n```\n\n```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) [lighter/ZkLighterWithSpot] {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0xea510c6fde95f555b31105692afec66f16fd2244264f4f3c1f8e553f3c14baf7\"\n+ \"0x77b8a3298ef7712fdc6678b0e692325e1c68dd049b035d9c515f030cc2384c79\"\n values.$implementation.0:\n- \"eth:0x831EF69BaB8AF8B1037a4961B8d0674b124E7008\"\n+ \"eth:0x9397837Fa581F7f527E0f71a0CB53eb633bF0F1B\"\n values.$implementation.1:\n- \"eth:0x22F05515497ce8D78f3898088C474403Ac9C668f\"\n+ \"eth:0xaeC5dbA7C62482AAba4D330788366De60db16367\"\n values.additionalZkLighter:\n- \"eth:0x22F05515497ce8D78f3898088C474403Ac9C668f\"\n+ \"eth:0xaeC5dbA7C62482AAba4D330788366De60db16367\"\n+++ severity: HIGH\n values.desertVerifier:\n- \"eth:0x2aDBd91742B64105a097bC37D20Ebbca9a496085\"\n+ \"eth:0x866418061d4C1168e1c8E8f6facE79675395E008\"\n values.getTarget:\n- \"eth:0x831EF69BaB8AF8B1037a4961B8d0674b124E7008\"\n+ \"eth:0x9397837Fa581F7f527E0f71a0CB53eb633bF0F1B\"\n implementationNames.eth:0x831EF69BaB8AF8B1037a4961B8d0674b124E7008:\n- \"ZkLighter\"\n implementationNames.eth:0x22F05515497ce8D78f3898088C474403Ac9C668f:\n- \"AdditionalZkLighter\"\n implementationNames.eth:0x9397837Fa581F7f527E0f71a0CB53eb633bF0F1B:\n+ \"ZkLighter\"\n implementationNames.eth:0xaeC5dbA7C62482AAba4D330788366De60db16367:\n+ \"AdditionalZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 61\n+ 62\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xc6a75d062341c148fcc61fdcbf5be6050555aeafba7ce8dd3cb3a5638c9d634a\"\n+ \"0xba3f35a68ac7f5eb875cf56eaf1e548eb868391c242a15a1726880db2c87b6ff\"\n values.$implementation:\n- \"eth:0x52277Bc0f0cd1C2f64Aa20Edd7d535d67780640D\"\n+ \"eth:0xd33EA7286196F5fdAB5C06e9E90844e61E586428\"\n values.getTarget:\n- \"eth:0x52277Bc0f0cd1C2f64Aa20Edd7d535d67780640D\"\n+ \"eth:0xd33EA7286196F5fdAB5C06e9E90844e61E586428\"\n implementationNames.eth:0x52277Bc0f0cd1C2f64Aa20Edd7d535d67780640D:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xd33EA7286196F5fdAB5C06e9E90844e61E586428:\n+ \"ZkLighterVerifier\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DesertVerifier (eth:0x866418061d4C1168e1c8E8f6facE79675395E008) [N/A]\n +++ description: None\n```"
}
]
},
{
"id": "22833684",
"date": "Mon, 13 Jul 2026 11:01:35 GMT",
"timestamp": 1783940397,
"description": "New verifier deployed (no sources published yet).",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 60\n+ 61\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x2cd881cfae823474fa05eed998178949d59cb45e2c799c860d06a546ac43ec67\"\n+ \"0xc6a75d062341c148fcc61fdcbf5be6050555aeafba7ce8dd3cb3a5638c9d634a\"\n values.$implementation:\n- \"eth:0xAa0b5b65890162C5C96D82F088822247EC5Df5D6\"\n+ \"eth:0x52277Bc0f0cd1C2f64Aa20Edd7d535d67780640D\"\n values.getTarget:\n- \"eth:0xAa0b5b65890162C5C96D82F088822247EC5Df5D6\"\n+ \"eth:0x52277Bc0f0cd1C2f64Aa20Edd7d535d67780640D\"\n implementationNames.eth:0xAa0b5b65890162C5C96D82F088822247EC5Df5D6:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x52277Bc0f0cd1C2f64Aa20Edd7d535d67780640D:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "a5c2bdc7",
"date": "Thu, 04 Jun 2026 13:41:37 GMT",
"timestamp": 1780580402,
"description": "New zk lighter verifier deployed, successfully reproduced from sources.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) [lighter/ZkLighterWithSpot] {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0xcd208d248bde92753c9b72b60864c4e7985f46c4b2c5a6fcead7552029b7e8b8\"\n+ \"0xea510c6fde95f555b31105692afec66f16fd2244264f4f3c1f8e553f3c14baf7\"\n values.$implementation.0:\n- \"eth:0xc4F38883af6d07D826A20A581cB21fFc2a58009C\"\n+ \"eth:0x831EF69BaB8AF8B1037a4961B8d0674b124E7008\"\n values.getTarget:\n- \"eth:0xc4F38883af6d07D826A20A581cB21fFc2a58009C\"\n+ \"eth:0x831EF69BaB8AF8B1037a4961B8d0674b124E7008\"\n implementationNames.eth:0xc4F38883af6d07D826A20A581cB21fFc2a58009C:\n- \"ZkLighter\"\n implementationNames.eth:0x831EF69BaB8AF8B1037a4961B8d0674b124E7008:\n+ \"ZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 58\n+ 60\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xc5b23d2a9631b15ef2c834426594aba91acd8cbe91587ada60318431d4feb357\"\n+ \"0x2cd881cfae823474fa05eed998178949d59cb45e2c799c860d06a546ac43ec67\"\n values.$implementation:\n- \"eth:0xaa76aC5cC406037be638d483d8c1daF2AFDC1A68\"\n+ \"eth:0xAa0b5b65890162C5C96D82F088822247EC5Df5D6\"\n values.getTarget:\n- \"eth:0xaa76aC5cC406037be638d483d8c1daF2AFDC1A68\"\n+ \"eth:0xAa0b5b65890162C5C96D82F088822247EC5Df5D6\"\n implementationNames.eth:0xaa76aC5cC406037be638d483d8c1daF2AFDC1A68:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xAa0b5b65890162C5C96D82F088822247EC5Df5D6:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "dccd34b3",
"date": "Mon, 18 May 2026 11:25:30 GMT",
"timestamp": 1779101278,
"description": "Small upgrade of the lighter rollup contract: https://disco.l2beat.com/diff/eth:0x13d4Ed7Db9d2cF73C7A45bfA6e23aa9742e8598C/eth:0xc4F38883af6d07D826A20A581cB21fFc2a58009C, it refactors `performDesert` function. \n\nAlso new lighter verifier and desert verifier deployed, succesfully regenerated from the sources.",
"isHighSeverity": true,
"changeCount": 19,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) [lighter/ZkLighterWithSpot] {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0x9569dcd94342470829bda3bb0fd36074a965e17d37bedd39697db12f774365e1\"\n+ \"0xcd208d248bde92753c9b72b60864c4e7985f46c4b2c5a6fcead7552029b7e8b8\"\n values.$implementation.0:\n- \"eth:0x13d4Ed7Db9d2cF73C7A45bfA6e23aa9742e8598C\"\n+ \"eth:0xc4F38883af6d07D826A20A581cB21fFc2a58009C\"\n+++ severity: HIGH\n values.desertVerifier:\n- \"eth:0xd4460475F00307845082d3a146f36661354FBc67\"\n+ \"eth:0x2aDBd91742B64105a097bC37D20Ebbca9a496085\"\n values.getTarget:\n- \"eth:0x13d4Ed7Db9d2cF73C7A45bfA6e23aa9742e8598C\"\n+ \"eth:0xc4F38883af6d07D826A20A581cB21fFc2a58009C\"\n implementationNames.eth:0x13d4Ed7Db9d2cF73C7A45bfA6e23aa9742e8598C:\n- \"ZkLighter\"\n implementationNames.eth:0xc4F38883af6d07D826A20A581cB21fFc2a58009C:\n+ \"ZkLighter\"\n }\n```\n\n```diff\n contract Lighter Multisig (eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0xD80037fade5d25b9c8B23e5c43bB0577C165Dcf9\"\n values.$members.1:\n+ \"eth:0xb08564C7fc68C3Ab1cD81300C8Ad150e04411F85\"\n values.$members.1:\n- \"eth:0x037C8e6aF4AEB15A597FC3C2a6F1B30B4b0Ae2B1\"\n values.$threshold:\n- 3\n+ 4\n values.multisigThreshold:\n- \"3 of 6 (50%)\"\n+ \"4 of 7 (57%)\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 56\n+ 58\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x01d2d0bcda8de284060e58013910fa6454b5a8fd3d146e173364e231f0cf04e0\"\n+ \"0xc5b23d2a9631b15ef2c834426594aba91acd8cbe91587ada60318431d4feb357\"\n values.$implementation:\n- \"eth:0x21c7480b72c47fe93102BE5B865d18b770338098\"\n+ \"eth:0xaa76aC5cC406037be638d483d8c1daF2AFDC1A68\"\n values.getTarget:\n- \"eth:0x21c7480b72c47fe93102BE5B865d18b770338098\"\n+ \"eth:0xaa76aC5cC406037be638d483d8c1daF2AFDC1A68\"\n implementationNames.eth:0x21c7480b72c47fe93102BE5B865d18b770338098:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xaa76aC5cC406037be638d483d8c1daF2AFDC1A68:\n+ \"ZkLighterVerifier\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DesertVerifier (eth:0xd4460475F00307845082d3a146f36661354FBc67) [lighter/DesertVerifier]\n +++ description: ZK verifier used to verify forced exits during desert mode.\n```\n\n```diff\n+ Status: CREATED\n contract DesertVerifier (eth:0x2aDBd91742B64105a097bC37D20Ebbca9a496085) [N/A]\n +++ description: None\n```"
}
]
},
{
"id": "4e9b56bc",
"date": "Tue, 12 May 2026 10:02:05 GMT",
"timestamp": 1778579977,
"description": "New verifier deployed (no sources published yet). Also, rotated two multisig members for upgrade master MS.\n\nConfig: use the new flattener implementation",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) [lighter/UpgradeGatekeeper] {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 54\n+ 56\n }\n```\n\n```diff\n contract Lighter Multisig 2 (eth:0x97A90Ec950B6BCd9B190b566525B2Bb92A2C03a2) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x2994d343b6b17EC23E9E4a08082184Fd43F763a3\"\n values.$members.1:\n- \"eth:0x89f550Fce5c191b34AF95671c28bCF6CCDF1203a\"\n values.$members.2:\n- \"eth:0x6d340Dd53b89b1f0bD94b473227612427125Bc8D\"\n+ \"eth:0xa0B3781B830DF57B1f018C434c58551c2Fc6b3Af\"\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) [lighter/ZkLighterVerifier] {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x5bee4c4522233c699516029292bf16813f3dea03e484fe718e479ac2ace77653\"\n+ \"0x01d2d0bcda8de284060e58013910fa6454b5a8fd3d146e173364e231f0cf04e0\"\n values.$implementation:\n- \"eth:0x01E5D9B6Db77FAA52Fc4Db1299A0163e5DaF5F82\"\n+ \"eth:0x21c7480b72c47fe93102BE5B865d18b770338098\"\n values.getTarget:\n- \"eth:0x01E5D9B6Db77FAA52Fc4Db1299A0163e5DaF5F82\"\n+ \"eth:0x21c7480b72c47fe93102BE5B865d18b770338098\"\n implementationNames.eth:0x01E5D9B6Db77FAA52Fc4Db1299A0163e5DaF5F82:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x21c7480b72c47fe93102BE5B865d18b770338098:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "121f63dd",
"date": "Mon, 04 May 2026 10:46:43 GMT",
"timestamp": 1777891445,
"description": "New verifier deployed (no sources published yet).",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 53\n+ 54\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x75000ee054e0747281836448e78e3cd5bf503d1f6a9e49a7e7ce4d7386542c8d\"\n+ \"0x5bee4c4522233c699516029292bf16813f3dea03e484fe718e479ac2ace77653\"\n values.$implementation:\n- \"eth:0xD76E5C5507C56D721BB9cE6601DCd379d09AFaD2\"\n+ \"eth:0x01E5D9B6Db77FAA52Fc4Db1299A0163e5DaF5F82\"\n values.getTarget:\n- \"eth:0xD76E5C5507C56D721BB9cE6601DCd379d09AFaD2\"\n+ \"eth:0x01E5D9B6Db77FAA52Fc4Db1299A0163e5DaF5F82\"\n implementationNames.eth:0xD76E5C5507C56D721BB9cE6601DCd379d09AFaD2:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x01E5D9B6Db77FAA52Fc4Db1299A0163e5DaF5F82:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "f0ac0634",
"date": "Mon, 27 Apr 2026 14:25:37 GMT",
"timestamp": 1777298658,
"description": "Upgraded the main Rollup contract: https://disco.l2beat.com/diff/eth:0xE315CbEDc21c5beC186bF478D899e91A604a6bC8/eth:0x13d4Ed7Db9d2cF73C7A45bfA6e23aa9742e8598C. Main changes:\n\n- Removed events when creating or updating assets on L2, so this data is removed from disco.\n- Expanded registerAsset with new parameters `_priceDecimals`, `loanToValue`, `liquidationThreshold`, `liquidationFactor`, and `liquidationFee` to move to a more collateral-oriented design.\n- Some code refactor like additional sanity checks on pubkey and moving asset validation logic into a separate function.\n\nAlso upgraded the verifier, sources are not published.",
"isHighSeverity": true,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0x9196f787ee56fceda2cb5edc19619ee00a4261076f58a5096729585a79c5c474\"\n+ \"0xc3634a3489804f8dab544a9e3a5e4dd76fd81bfe5bbe3f69c88caf99c672e30f\"\n values.$implementation.0:\n- \"eth:0xE315CbEDc21c5beC186bF478D899e91A604a6bC8\"\n+ \"eth:0x13d4Ed7Db9d2cF73C7A45bfA6e23aa9742e8598C\"\n values.$implementation.1:\n- \"eth:0x84E480C589e715D0CE7de004b1EEA69f8D714936\"\n+ \"eth:0x22F05515497ce8D78f3898088C474403Ac9C668f\"\n values.additionalZkLighter:\n- \"eth:0x84E480C589e715D0CE7de004b1EEA69f8D714936\"\n+ \"eth:0x22F05515497ce8D78f3898088C474403Ac9C668f\"\n values.getTarget:\n- \"eth:0xE315CbEDc21c5beC186bF478D899e91A604a6bC8\"\n+ \"eth:0x13d4Ed7Db9d2cF73C7A45bfA6e23aa9742e8598C\"\n values.MIN_ORDER_BASE_AMOUNT:\n- 1\n values.NIL_ORDER_BASE_AMOUNT:\n- 0\n implementationNames.eth:0xE315CbEDc21c5beC186bF478D899e91A604a6bC8:\n- \"ZkLighter\"\n implementationNames.eth:0x84E480C589e715D0CE7de004b1EEA69f8D714936:\n- \"AdditionalZkLighter\"\n implementationNames.eth:0x13d4Ed7Db9d2cF73C7A45bfA6e23aa9742e8598C:\n+ \"ZkLighter\"\n implementationNames.eth:0x22F05515497ce8D78f3898088C474403Ac9C668f:\n+ \"AdditionalZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 49\n+ 53\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x04265b02f2d070121154f7b50d4de98012a3d8647ca41f78f926e9150b4799cd\"\n+ \"0x75000ee054e0747281836448e78e3cd5bf503d1f6a9e49a7e7ce4d7386542c8d\"\n values.$implementation:\n- \"eth:0x7B2cAc7b45E87d0392ACCf7c88764b7d2288938f\"\n+ \"eth:0xD76E5C5507C56D721BB9cE6601DCd379d09AFaD2\"\n values.getTarget:\n- \"eth:0x7B2cAc7b45E87d0392ACCf7c88764b7d2288938f\"\n+ \"eth:0xD76E5C5507C56D721BB9cE6601DCd379d09AFaD2\"\n implementationNames.eth:0x7B2cAc7b45E87d0392ACCf7c88764b7d2288938f:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xD76E5C5507C56D721BB9cE6601DCd379d09AFaD2:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "5b795ab3",
"date": "Mon, 20 Apr 2026 15:17:10 GMT",
"timestamp": 1776697693,
"description": "New verifier deployed (no sources published yet).",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 48\n+ 49\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xb37ab5d07d1186585f404614e3eb5043657d1065a63e3d6c4d148dfe380e4e0e\"\n+ \"0x04265b02f2d070121154f7b50d4de98012a3d8647ca41f78f926e9150b4799cd\"\n values.$implementation:\n- \"eth:0xC8A6CCec3f41dF6a80905030251c39A6b434f0b4\"\n+ \"eth:0x7B2cAc7b45E87d0392ACCf7c88764b7d2288938f\"\n values.getTarget:\n- \"eth:0xC8A6CCec3f41dF6a80905030251c39A6b434f0b4\"\n+ \"eth:0x7B2cAc7b45E87d0392ACCf7c88764b7d2288938f\"\n implementationNames.eth:0xC8A6CCec3f41dF6a80905030251c39A6b434f0b4:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x7B2cAc7b45E87d0392ACCf7c88764b7d2288938f:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "813318ec",
"date": "Tue, 14 Apr 2026 11:31:36 GMT",
"timestamp": 1776166144,
"description": "New verifier deployed (no sources published yet).",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 47\n+ 48\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x5e3d7b6d29089561516de79ebfb16ec22a67f997f4b1b656f9ba7c4caec453d7\"\n+ \"0xb37ab5d07d1186585f404614e3eb5043657d1065a63e3d6c4d148dfe380e4e0e\"\n values.$implementation:\n- \"eth:0xb20De28D78b63bc0c94eef89Db53F6338af17825\"\n+ \"eth:0xC8A6CCec3f41dF6a80905030251c39A6b434f0b4\"\n values.getTarget:\n- \"eth:0xb20De28D78b63bc0c94eef89Db53F6338af17825\"\n+ \"eth:0xC8A6CCec3f41dF6a80905030251c39A6b434f0b4\"\n implementationNames.eth:0xb20De28D78b63bc0c94eef89Db53F6338af17825:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xC8A6CCec3f41dF6a80905030251c39A6b434f0b4:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "83b66f4d",
"date": "Mon, 30 Mar 2026 14:47:07 GMT",
"timestamp": 1774881277,
"description": "Lighter verifier upgraded.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 45\n+ 47\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x4b84ec2617ebb82301e3dd281aa9b96b8b0d157cc7d8b3d6232bdcc01f2592ad\"\n+ \"0x5e3d7b6d29089561516de79ebfb16ec22a67f997f4b1b656f9ba7c4caec453d7\"\n values.$implementation:\n- \"eth:0x840b49E7d53699C7eC4333ffFe27Dc679B171Db8\"\n+ \"eth:0xb20De28D78b63bc0c94eef89Db53F6338af17825\"\n values.getTarget:\n- \"eth:0x840b49E7d53699C7eC4333ffFe27Dc679B171Db8\"\n+ \"eth:0xb20De28D78b63bc0c94eef89Db53F6338af17825\"\n implementationNames.eth:0x840b49E7d53699C7eC4333ffFe27Dc679B171Db8:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xb20De28D78b63bc0c94eef89Db53F6338af17825:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "0aafdc95",
"date": "Thu, 12 Mar 2026 09:32:03 GMT",
"timestamp": 1773307725,
"description": "Upgraded Lighter verifier, sources are still not published.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 44\n+ 45\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xab9b5214c22d0889b51440a32845c66a27fb098824650b1525ac6dd4d5364f10\"\n+ \"0x4b84ec2617ebb82301e3dd281aa9b96b8b0d157cc7d8b3d6232bdcc01f2592ad\"\n values.$implementation:\n- \"eth:0x5D36a933de9A89550f6b1cDB561861c615199944\"\n+ \"eth:0x840b49E7d53699C7eC4333ffFe27Dc679B171Db8\"\n values.getTarget:\n- \"eth:0x5D36a933de9A89550f6b1cDB561861c615199944\"\n+ \"eth:0x840b49E7d53699C7eC4333ffFe27Dc679B171Db8\"\n implementationNames.eth:0x5D36a933de9A89550f6b1cDB561861c615199944:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x840b49E7d53699C7eC4333ffFe27Dc679B171Db8:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "65748edf",
"date": "Mon, 09 Mar 2026 12:22:10 GMT",
"timestamp": 1773058103,
"description": "Refactored taker and maker fee handling on the rollup contract: diff on ZkLighter https://disco.l2beat.com/diff/eth:0xdC2877f6C162991B47fC5f7Cc50F85c084B9B408/eth:0xE315CbEDc21c5beC186bF478D899e91A604a6bC8, diff on AdditionalZkLighter: https://disco.l2beat.com/diff/eth:0xF7627A2ab5cD6a5Cdbb84ffa96afE21A136B05d9/eth:0x84E480C589e715D0CE7de004b1EEA69f8D714936.\n\nUpdated the verifier, sources are not yet published.",
"isHighSeverity": true,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0xb28249d5dff85a357d4365eb463ef3eb2778445cefe5c663c7966dce55b8c2a0\"\n+ \"0x9196f787ee56fceda2cb5edc19619ee00a4261076f58a5096729585a79c5c474\"\n values.$implementation.0:\n- \"eth:0xdC2877f6C162991B47fC5f7Cc50F85c084B9B408\"\n+ \"eth:0xE315CbEDc21c5beC186bF478D899e91A604a6bC8\"\n values.$implementation.1:\n- \"eth:0xF7627A2ab5cD6a5Cdbb84ffa96afE21A136B05d9\"\n+ \"eth:0x84E480C589e715D0CE7de004b1EEA69f8D714936\"\n values.additionalZkLighter:\n- \"eth:0xF7627A2ab5cD6a5Cdbb84ffa96afE21A136B05d9\"\n+ \"eth:0x84E480C589e715D0CE7de004b1EEA69f8D714936\"\n values.getTarget:\n- \"eth:0xdC2877f6C162991B47fC5f7Cc50F85c084B9B408\"\n+ \"eth:0xE315CbEDc21c5beC186bF478D899e91A604a6bC8\"\n implementationNames.eth:0xdC2877f6C162991B47fC5f7Cc50F85c084B9B408:\n- \"ZkLighter\"\n implementationNames.eth:0xF7627A2ab5cD6a5Cdbb84ffa96afE21A136B05d9:\n- \"AdditionalZkLighter\"\n implementationNames.eth:0xE315CbEDc21c5beC186bF478D899e91A604a6bC8:\n+ \"ZkLighter\"\n implementationNames.eth:0x84E480C589e715D0CE7de004b1EEA69f8D714936:\n+ \"AdditionalZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 43\n+ 44\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x70c219a599bf68fee16b4e1d51e5613de77271898f7debaf4775315e10517ee4\"\n+ \"0xab9b5214c22d0889b51440a32845c66a27fb098824650b1525ac6dd4d5364f10\"\n values.$implementation:\n- \"eth:0xa271Df8660A318F155A31e64d0529ed85C2d1616\"\n+ \"eth:0x5D36a933de9A89550f6b1cDB561861c615199944\"\n values.getTarget:\n- \"eth:0xa271Df8660A318F155A31e64d0529ed85C2d1616\"\n+ \"eth:0x5D36a933de9A89550f6b1cDB561861c615199944\"\n implementationNames.eth:0xa271Df8660A318F155A31e64d0529ed85C2d1616:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x5D36a933de9A89550f6b1cDB561861c615199944:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "42874125",
"date": "Mon, 23 Feb 2026 12:39:26 GMT",
"timestamp": 1771850198,
"description": "Updated zk verifier. The changes are in this commit: https://github.com/elliottech/lighter-prover/commit/dd7d2182f7d9ec29ca452f410a5ffb1f3dc13925.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 42\n+ 43\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x85e6398edfbc4cbd9f9a869520badf263bc93a16d3e5d72dcbe7e55d5f479781\"\n+ \"0x70c219a599bf68fee16b4e1d51e5613de77271898f7debaf4775315e10517ee4\"\n values.$implementation:\n- \"eth:0xae6961882D8Ad8d1d6840228CCca471ffffd5EA5\"\n+ \"eth:0xa271Df8660A318F155A31e64d0529ed85C2d1616\"\n values.getTarget:\n- \"eth:0xae6961882D8Ad8d1d6840228CCca471ffffd5EA5\"\n+ \"eth:0xa271Df8660A318F155A31e64d0529ed85C2d1616\"\n implementationNames.eth:0xae6961882D8Ad8d1d6840228CCca471ffffd5EA5:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xa271Df8660A318F155A31e64d0529ed85C2d1616:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "9e8022b3",
"date": "Tue, 17 Feb 2026 14:00:52 GMT",
"timestamp": 1771336788,
"description": "Updated ZK circuits and verifier. Main rollup contract has only 1 line diff in init params commitment:\nhttps://disco.l2beat.com/diff/eth:0x803bd6a0577c083c1EDe82Da455C8e69e697c878/eth:0xdC2877f6C162991B47fC5f7Cc50F85c084B9B408.\n\nZkLighterVerifier updated with new verification keys (VK_QL_COM and VK_QK_COM):\nhttps://disco.l2beat.com/diff/eth:0xC5d17b2ae295F81209410B00a791720660efc706/eth:0xae6961882D8Ad8d1d6840228CCca471ffffd5EA5.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0x4a50bcb82038f6198f88207da255045d7547680f7a48c66d23055539b0481a94\"\n+ \"0xb28249d5dff85a357d4365eb463ef3eb2778445cefe5c663c7966dce55b8c2a0\"\n values.$implementation.0:\n- \"eth:0x803bd6a0577c083c1EDe82Da455C8e69e697c878\"\n+ \"eth:0xdC2877f6C162991B47fC5f7Cc50F85c084B9B408\"\n values.getTarget:\n- \"eth:0x803bd6a0577c083c1EDe82Da455C8e69e697c878\"\n+ \"eth:0xdC2877f6C162991B47fC5f7Cc50F85c084B9B408\"\n implementationNames.eth:0x803bd6a0577c083c1EDe82Da455C8e69e697c878:\n- \"ZkLighter\"\n implementationNames.eth:0xdC2877f6C162991B47fC5f7Cc50F85c084B9B408:\n+ \"ZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 41\n+ 42\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x416b91076dec996ebb7ab201896a76509106ed06864f1e84a468a897241040c8\"\n+ \"0x85e6398edfbc4cbd9f9a869520badf263bc93a16d3e5d72dcbe7e55d5f479781\"\n values.$implementation:\n- \"eth:0xC5d17b2ae295F81209410B00a791720660efc706\"\n+ \"eth:0xae6961882D8Ad8d1d6840228CCca471ffffd5EA5\"\n values.getTarget:\n- \"eth:0xC5d17b2ae295F81209410B00a791720660efc706\"\n+ \"eth:0xae6961882D8Ad8d1d6840228CCca471ffffd5EA5\"\n implementationNames.eth:0xC5d17b2ae295F81209410B00a791720660efc706:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xae6961882D8Ad8d1d6840228CCca471ffffd5EA5:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "ed521fe8",
"date": "Fri, 13 Feb 2026 09:55:35 GMT",
"timestamp": 1770975901,
"description": "Upgraded zk circuits and the verifier, probably to allow unified collateral for spot and perps: https://x.com/Lighter_xyz/status/2022098082419085536. Main rollup contract has only 1 line diff in init params commitment: \nhttps://disco.l2beat.com/diff/eth:0x8bdccd961Ae8b8B99dBA5FbAd0e5AA92bE8c59Fb/eth:0x803bd6a0577c083c1EDe82Da455C8e69e697c878. Also added AZTEC token for spot and perps.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0x6811045a7db4a2039e15ce02aad40f93a195abf3b68a900d217df71c7ab37294\"\n+ \"0x4a50bcb82038f6198f88207da255045d7547680f7a48c66d23055539b0481a94\"\n values.$implementation.0:\n- \"eth:0x8bdccd961Ae8b8B99dBA5FbAd0e5AA92bE8c59Fb\"\n+ \"eth:0x803bd6a0577c083c1EDe82Da455C8e69e697c878\"\n values.getTarget:\n- \"eth:0x8bdccd961Ae8b8B99dBA5FbAd0e5AA92bE8c59Fb\"\n+ \"eth:0x803bd6a0577c083c1EDe82Da455C8e69e697c878\"\n values.l2AssetRegistrations.6:\n+ \"0x415a544543000000000000000000000000000000000000000000000000000000\"\n values.registeredAssets.8:\n+ {\"assetIndex\":10,\"tokenAddress\":\"eth:0xA27EC0006e59f245217Ff08CD52A7E8b169E62D2\"}\n implementationNames.eth:0x8bdccd961Ae8b8B99dBA5FbAd0e5AA92bE8c59Fb:\n- \"ZkLighter\"\n implementationNames.eth:0x803bd6a0577c083c1EDe82Da455C8e69e697c878:\n+ \"ZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 40\n+ 41\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x57ba399070a3a90c1102fb18ab80843663d4f8d89d04de81a4269c20f966b8db\"\n+ \"0x416b91076dec996ebb7ab201896a76509106ed06864f1e84a468a897241040c8\"\n values.$implementation:\n- \"eth:0x6d456bCAAc437EAa3f8603E06C5850d88D3A48F7\"\n+ \"eth:0xC5d17b2ae295F81209410B00a791720660efc706\"\n values.getTarget:\n- \"eth:0x6d456bCAAc437EAa3f8603E06C5850d88D3A48F7\"\n+ \"eth:0xC5d17b2ae295F81209410B00a791720660efc706\"\n implementationNames.eth:0x6d456bCAAc437EAa3f8603E06C5850d88D3A48F7:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xC5d17b2ae295F81209410B00a791720660efc706:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "a3678747",
"date": "Thu, 29 Jan 2026 14:05:01 GMT",
"timestamp": 1769695256,
"description": "Diff for Lighter implementation: https://disco.l2beat.com/diff/eth:0xe5FB592Ef1b620909000Af0D5fb55a3593026142/eth:0x8bdccd961Ae8b8B99dBA5FbAd0e5AA92bE8c59Fb, diff for additional lighter implementation: https://disco.l2beat.com/diff/eth:0x9307350AF47B0C0e7f8cA5ED2D57993aF3a6df1d/eth:0xF7627A2ab5cD6a5Cdbb84ffa96afE21A136B05d9. \n\nRefactored some events, added only governance function `setSystemConfig` to set liquidityPoolCooldownPeriod and / or stakingPoolLockupPeriod.\n\nUpdated circuits and upgraded the verifier.",
"isHighSeverity": true,
"changeCount": 17,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0x016ec5f80bfe1e98a099c8e237105be90b1da112de262adc17dcec715a4ee173\"\n+ \"0x6811045a7db4a2039e15ce02aad40f93a195abf3b68a900d217df71c7ab37294\"\n values.$implementation.0:\n- \"eth:0xe5FB592Ef1b620909000Af0D5fb55a3593026142\"\n+ \"eth:0x8bdccd961Ae8b8B99dBA5FbAd0e5AA92bE8c59Fb\"\n values.$implementation.1:\n- \"eth:0x9307350AF47B0C0e7f8cA5ED2D57993aF3a6df1d\"\n+ \"eth:0xF7627A2ab5cD6a5Cdbb84ffa96afE21A136B05d9\"\n values.additionalZkLighter:\n- \"eth:0x9307350AF47B0C0e7f8cA5ED2D57993aF3a6df1d\"\n+ \"eth:0xF7627A2ab5cD6a5Cdbb84ffa96afE21A136B05d9\"\n values.getTarget:\n- \"eth:0xe5FB592Ef1b620909000Af0D5fb55a3593026142\"\n+ \"eth:0x8bdccd961Ae8b8B99dBA5FbAd0e5AA92bE8c59Fb\"\n values.MAX_STAKING_SHARES_TO_MINT_OR_BURN:\n+ \"1152921504606846975\"\n values.MIN_STAKING_SHARES_TO_MINT_OR_BURN:\n+ 1\n implementationNames.eth:0xe5FB592Ef1b620909000Af0D5fb55a3593026142:\n- \"ZkLighter\"\n implementationNames.eth:0x9307350AF47B0C0e7f8cA5ED2D57993aF3a6df1d:\n- \"AdditionalZkLighter\"\n implementationNames.eth:0x8bdccd961Ae8b8B99dBA5FbAd0e5AA92bE8c59Fb:\n+ \"ZkLighter\"\n implementationNames.eth:0xF7627A2ab5cD6a5Cdbb84ffa96afE21A136B05d9:\n+ \"AdditionalZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 39\n+ 40\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x79079aeaad31dee0624b3c5ccc8c7486d4ec771dcf6ca6a7f0b178c94357be9b\"\n+ \"0x57ba399070a3a90c1102fb18ab80843663d4f8d89d04de81a4269c20f966b8db\"\n values.$implementation:\n- \"eth:0x023B02ad3b8f9045595Ac7139FdBA643b562cfe3\"\n+ \"eth:0x6d456bCAAc437EAa3f8603E06C5850d88D3A48F7\"\n values.getTarget:\n- \"eth:0x023B02ad3b8f9045595Ac7139FdBA643b562cfe3\"\n+ \"eth:0x6d456bCAAc437EAa3f8603E06C5850d88D3A48F7\"\n implementationNames.eth:0x023B02ad3b8f9045595Ac7139FdBA643b562cfe3:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x6d456bCAAc437EAa3f8603E06C5850d88D3A48F7:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "13a4c4d4",
"date": "Wed, 21 Jan 2026 10:50:19 GMT",
"timestamp": 1768992487,
"description": "Upgraded Lighter verifier.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 38\n+ 39\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0xcd42bf75a7fe0596b2df88cb9118f3e431864309a1a3c8987ea5e4c50acd0e09\"\n+ \"0x79079aeaad31dee0624b3c5ccc8c7486d4ec771dcf6ca6a7f0b178c94357be9b\"\n values.$implementation:\n- \"eth:0xd42b2D9eFD409c2a3074AE4f874F3f42389DB931\"\n+ \"eth:0x023B02ad3b8f9045595Ac7139FdBA643b562cfe3\"\n values.getTarget:\n- \"eth:0xd42b2D9eFD409c2a3074AE4f874F3f42389DB931\"\n+ \"eth:0x023B02ad3b8f9045595Ac7139FdBA643b562cfe3\"\n implementationNames.eth:0xd42b2D9eFD409c2a3074AE4f874F3f42389DB931:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x023B02ad3b8f9045595Ac7139FdBA643b562cfe3:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "9519397f",
"date": "Mon, 12 Jan 2026 11:46:24 GMT",
"timestamp": 1768216772,
"description": "ZkLighterVerifier implementation upgraded. Sources have not been published yet.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 37\n+ 38\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x9fb19e3d933b1d83369c32b6e1ec0333c42f0f814ee9e9ec8e5e1efea520d374\"\n+ \"0xcd42bf75a7fe0596b2df88cb9118f3e431864309a1a3c8987ea5e4c50acd0e09\"\n values.$implementation:\n- \"eth:0x05F8176860955D94F974dB0CE8BB4F160AE425a2\"\n+ \"eth:0xd42b2D9eFD409c2a3074AE4f874F3f42389DB931\"\n values.getTarget:\n- \"eth:0x05F8176860955D94F974dB0CE8BB4F160AE425a2\"\n+ \"eth:0xd42b2D9eFD409c2a3074AE4f874F3f42389DB931\"\n implementationNames.eth:0x05F8176860955D94F974dB0CE8BB4F160AE425a2:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xd42b2D9eFD409c2a3074AE4f874F3f42389DB931:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "ad5653e7",
"date": "Thu, 08 Jan 2026 09:32:46 GMT",
"timestamp": 1767864703,
"description": "Added two new EOAs to the network governor multisig (2/3 -> 3/5). Also registered LINK, UNI, AAVE, SKY, LDO l2 assets.",
"isHighSeverity": false,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n values.l2AssetRegistrations.1:\n+ \"0x4c494e4b00000000000000000000000000000000000000000000000000000000\"\n values.l2AssetRegistrations.2:\n+ \"0x554e490000000000000000000000000000000000000000000000000000000000\"\n values.l2AssetRegistrations.3:\n+ \"0x4141564500000000000000000000000000000000000000000000000000000000\"\n values.l2AssetRegistrations.4:\n+ \"0x534b590000000000000000000000000000000000000000000000000000000000\"\n values.l2AssetRegistrations.5:\n+ \"0x4c444f0000000000000000000000000000000000000000000000000000000000\"\n values.registeredAssets.3:\n+ {\"assetIndex\":5,\"tokenAddress\":\"eth:0x514910771AF9Ca656af840dff83E8264EcF986CA\"}\n values.registeredAssets.4:\n+ {\"assetIndex\":6,\"tokenAddress\":\"eth:0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\"}\n values.registeredAssets.5:\n+ {\"assetIndex\":7,\"tokenAddress\":\"eth:0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9\"}\n values.registeredAssets.6:\n+ {\"assetIndex\":8,\"tokenAddress\":\"eth:0x56072C95FAA701256059aa122697B133aDEd9279\"}\n values.registeredAssets.7:\n+ {\"assetIndex\":9,\"tokenAddress\":\"eth:0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32\"}\n }\n```\n\n```diff\n contract Lighter Multisig 2 (eth:0x97A90Ec950B6BCd9B190b566525B2Bb92A2C03a2) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x67d6c2569AB98A1F535E36b3BaB1FBD825fa536E\"\n values.$members.1:\n+ \"eth:0x89f550Fce5c191b34AF95671c28bCF6CCDF1203a\"\n values.$threshold:\n- 2\n+ 3\n values.multisigThreshold:\n- \"2 of 3 (67%)\"\n+ \"3 of 5 (60%)\"\n }\n```"
}
]
},
{
"id": "1e1f3162",
"date": "Tue, 06 Jan 2026 10:14:13 GMT",
"timestamp": 1767691305,
"description": "Added Lighter token market. Changed insurance fund operator to a 3/5 multisig. Updated verifier, probably this PR: https://github.com/elliottech/lighter-prover/pull/2.",
"isHighSeverity": true,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n values.insuranceFundOperator:\n- \"eth:0x47104B9f952ff19DB43DAeB7689aE51A0eD4890c\"\n+ \"eth:0x9ccE444F8c60BD570986cd7D0ED7aEc29f127310\"\n values.l2AssetConfigUpdates.0:\n+ [2,1,100000000,0]\n values.l2AssetRegistrations.0:\n+ \"0x4c49540000000000000000000000000000000000000000000000000000000000\"\n values.registeredAssets.2:\n+ {\"assetIndex\":2,\"tokenAddress\":\"eth:0x232CE3bd40fCd6f80f3d55A522d03f25Df784Ee2\"}\n }\n```\n\n```diff\n contract Lighter Multisig (eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045) {\n +++ description: None\n values.$members.0:\n+ \"eth:0xEc589ee2DF6dd2E7e0873F229d18e024B97d0FA6\"\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"3 of 6 (50%)\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 35\n+ 37\n }\n```\n\n```diff\n contract Lighter Multisig 2 (eth:0x97A90Ec950B6BCd9B190b566525B2Bb92A2C03a2) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x6d340Dd53b89b1f0bD94b473227612427125Bc8D\"\n values.$members.1:\n- \"eth:0xfDb36C132fA19f7774d72fA39c89272D1B954A41\"\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x24b1700e66c7f9f26c170bb95a058d86a9579ecb84f8c3159cb71a1c46e7e008\"\n+ \"0x9fb19e3d933b1d83369c32b6e1ec0333c42f0f814ee9e9ec8e5e1efea520d374\"\n values.$implementation:\n- \"eth:0x7ddAD28962571F77fE5E9cB2fE74A896300EEed4\"\n+ \"eth:0x05F8176860955D94F974dB0CE8BB4F160AE425a2\"\n values.getTarget:\n- \"eth:0x7ddAD28962571F77fE5E9cB2fE74A896300EEed4\"\n+ \"eth:0x05F8176860955D94F974dB0CE8BB4F160AE425a2\"\n implementationNames.eth:0x7ddAD28962571F77fE5E9cB2fE74A896300EEed4:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x05F8176860955D94F974dB0CE8BB4F160AE425a2:\n+ \"ZkLighterVerifier\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0x9ccE444F8c60BD570986cd7D0ED7aEc29f127310)\n +++ description: None\n```"
}
]
},
{
"id": "5cec5eae",
"date": "Mon, 22 Dec 2025 13:14:46 GMT",
"timestamp": 1766409107,
"description": "permissioned actors change (EOA to 2/3 Multisig).",
"isHighSeverity": true,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n values.insuranceFundOperator:\n- \"eth:0x3629C998Fe1045A86c423AcaacCB9cBF7c792011\"\n+ \"eth:0x47104B9f952ff19DB43DAeB7689aE51A0eD4890c\"\n values.treasury:\n- \"eth:0x44A5F41Fb364e52878193A8Ba375A1B17906D8E4\"\n+ \"eth:0x3dD7c834EAa70c98e1C224808a3c62163b344daE\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n+++ severity: HIGH\n values.getMaster:\n- \"eth:0xfDb36C132fA19f7774d72fA39c89272D1B954A41\"\n+ \"eth:0x97A90Ec950B6BCd9B190b566525B2Bb92A2C03a2\"\n }\n```\n\n```diff\n contract Lighter Multisig 2 (eth:0x97A90Ec950B6BCd9B190b566525B2Bb92A2C03a2) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67\",\"delay\":1814400}]}\n receivedPermissions.2:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67\",\"delay\":1814400}]}\n receivedPermissions.3:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67\",\"delay\":1814400}]}\n directlyReceivedPermissions:\n+ [{\"permission\":\"act\",\"from\":\"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67\",\"delay\":1814400,\"role\":\".getMaster\"}]\n }\n```\n\n```diff\n contract Governance (eth:0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1) {\n +++ description: Manages the list of validators and the network governor.\n values.validators.0:\n- \"eth:0xfDb36C132fA19f7774d72fA39c89272D1B954A41\"\n values.validators.1:\n- \"eth:0xFBC0dcd6c3518cB529bC1B585dB992A7d40005fa\"\n+ \"eth:0x191fF0EC830F83916A427d169a234c33e48aA79f\"\n values.validators.2:\n- \"eth:0xfcB73F6405F6B9be91013d9477d81833a69C9c0D\"\n+ \"eth:0x750bdb90AC72A78308d21eAC78999bBAE31cd63d\"\n values.validators.3:\n- \"eth:0x1c0F4f6daf0E0f32C5482672fa5342784915df21\"\n+ \"eth:0xC0D2853e06F1E145177D5ef08Ab065a76e14354C\"\n }\n```\n\n```diff\n EOA (eth:0xfDb36C132fA19f7774d72fA39c89272D1B954A41) {\n +++ description: None\n receivedPermissions:\n- [{\"permission\":\"interact\",\"from\":\"eth:0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1\",\"description\":\"can commit, verify, execute batches, and revert committed but not yet executed batches.\",\"role\":\".validators\"},{\"permission\":\"upgrade\",\"from\":\"eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67\",\"delay\":1814400}]},{\"permission\":\"upgrade\",\"from\":\"eth:0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67\",\"delay\":1814400}]},{\"permission\":\"upgrade\",\"from\":\"eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA\",\"role\":\"admin\",\"via\":[{\"address\":\"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67\",\"delay\":1814400}]}]\n controlsMajorityOfUpgradePermissions:\n- true\n directlyReceivedPermissions:\n- [{\"permission\":\"act\",\"from\":\"eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67\",\"delay\":1814400,\"role\":\".getMaster\"}]\n }\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0x3dD7c834EAa70c98e1C224808a3c62163b344daE)\n +++ description: None\n```"
}
]
},
{
"id": "196b1d79",
"date": "Wed, 10 Dec 2025 15:30:12 GMT",
"timestamp": 1765380548,
"description": "Added spot markets, and to do this, the ability to deposit other assets other than USDC. Many functions have been modified to support depositing and withdrawing multiple tokens. There are token specific configs that control various aspects of the flow, such as whether withdrawals are enabled. For some reason the token config is actually split between a part that is saved on L1 and one that is updated by sending a message on L2.\n- [ZKLighter diff](https://disco.l2beat.com/diff/eth:0x59e71dc90E662F17c4eB156A8cA1BCCD106aCfA0/eth:0xe5FB592Ef1b620909000Af0D5fb55a3593026142)\n- [AdditionalZKLighter diff](https://disco.l2beat.com/diff/eth:0xf255FC8738a5c6Ee6E869A5b182a9Cd4F99a2ED6/eth:0x9307350AF47B0C0e7f8cA5ED2D57993aF3a6df1d)\nVerifiers have also been updated.",
"isHighSeverity": true,
"changeCount": 40,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n template:\n- \"lighter/ZkLighter\"\n+ \"lighter/ZkLighterWithSpot\"\n sourceHashes.1:\n- \"0x655cbba8ed9e8bc798be3624c7ded712b4e2abf1c743d46361b14e173e92e58a\"\n+ \"0x016ec5f80bfe1e98a099c8e237105be90b1da112de262adc17dcec715a4ee173\"\n description:\n- \"The main rollup contract. It processes L2 batches, manages USDC deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\"\n+ \"The main rollup contract. It processes L2 batches, manages token deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\"\n values.$implementation.0:\n- \"eth:0x59e71dc90E662F17c4eB156A8cA1BCCD106aCfA0\"\n+ \"eth:0xe5FB592Ef1b620909000Af0D5fb55a3593026142\"\n values.$implementation.1:\n- \"eth:0xf255FC8738a5c6Ee6E869A5b182a9Cd4F99a2ED6\"\n+ \"eth:0x9307350AF47B0C0e7f8cA5ED2D57993aF3a6df1d\"\n values.additionalZkLighter:\n- \"eth:0xf255FC8738a5c6Ee6E869A5b182a9Cd4F99a2ED6\"\n+ \"eth:0x9307350AF47B0C0e7f8cA5ED2D57993aF3a6df1d\"\n+++ severity: HIGH\n values.desertVerifier:\n- \"eth:0x9BC70c62823BabFed57698d458833da55D0c88A4\"\n+ \"eth:0xd4460475F00307845082d3a146f36661354FBc67\"\n values.getTarget:\n- \"eth:0x59e71dc90E662F17c4eB156A8cA1BCCD106aCfA0\"\n+ \"eth:0xe5FB592Ef1b620909000Af0D5fb55a3593026142\"\n values.MAX_DEPOSIT_AMOUNT:\n- 1000000000000000\n values.MAX_EXCHANGE_USDC_AMOUNT:\n- \"1152921504606846975\"\n values.MAX_MARKET_INDEX:\n- 254\n values.assetConfigETH:\n+ {\"tokenAddress\":\"eth:0x0000000000000000000000000000000000000000\",\"withdrawalsEnabled\":1,\"extensionMultiplier\":100,\"tickSize\":10000000000,\"depositCapTicks\":\"1152921504606846975\",\"minDepositTicks\":100000}\n values.assetConfigUSDC:\n+ {\"tokenAddress\":\"eth:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\"withdrawalsEnabled\":1,\"extensionMultiplier\":1000000,\"tickSize\":1,\"depositCapTicks\":\"1152921504606846975\",\"minDepositTicks\":1000000}\n values.l2AssetConfigUpdates:\n+ []\n values.l2AssetRegistrations:\n+ []\n values.MAX_ASSET_INDEX:\n+ 62\n values.MAX_DEPOSIT_CAP_TICKS:\n+ \"1152921504606846975\"\n values.MAX_PERPS_MARKET_INDEX:\n+ 254\n values.MAX_SPOT_MARKET_INDEX:\n+ 4094\n values.MAX_TICK_SIZE:\n+ \"340282366920938463463374607431768211455\"\n values.MIN_ASSET_INDEX:\n+ 1\n values.MIN_SPOT_MARKET_INDEX:\n+ 2048\n values.NATIVE_ASSET_INDEX:\n+ 1\n values.registeredAssets:\n+ [{\"assetIndex\":1,\"tokenAddress\":\"eth:0x0000000000000000000000000000000000000000\"},{\"assetIndex\":3,\"tokenAddress\":\"eth:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\"}]\n values.USDC_ASSET_INDEX:\n+ 3\n implementationNames.eth:0x59e71dc90E662F17c4eB156A8cA1BCCD106aCfA0:\n- \"ZkLighter\"\n implementationNames.eth:0xf255FC8738a5c6Ee6E869A5b182a9Cd4F99a2ED6:\n- \"AdditionalZkLighter\"\n implementationNames.eth:0xe5FB592Ef1b620909000Af0D5fb55a3593026142:\n+ \"ZkLighter\"\n implementationNames.eth:0x9307350AF47B0C0e7f8cA5ED2D57993aF3a6df1d:\n+ \"AdditionalZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 33\n+ 35\n }\n```\n\n```diff\n- Status: DELETED\n contract DesertVerifier (eth:0x9BC70c62823BabFed57698d458833da55D0c88A4)\n +++ description: ZK verifier used to verify forced exits during desert mode.\n```\n\n```diff\n contract Governance (eth:0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1) {\n +++ description: Manages the list of validators and the network governor.\n+++ severity: HIGH\n values.networkGovernor:\n- \"eth:0xfDb36C132fA19f7774d72fA39c89272D1B954A41\"\n+ \"eth:0x97A90Ec950B6BCd9B190b566525B2Bb92A2C03a2\"\n }\n```\n\n```diff\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA) {\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n sourceHashes.1:\n- \"0x5191196a6fb417df695e41cac070ffb36ce01a4c49b7d89ad809fea72e6e18c4\"\n+ \"0x24b1700e66c7f9f26c170bb95a058d86a9579ecb84f8c3159cb71a1c46e7e008\"\n values.$implementation:\n- \"eth:0x9a3Cc15b31Aec100d0C49B16cC401eaEf5A0A500\"\n+ \"eth:0x7ddAD28962571F77fE5E9cB2fE74A896300EEed4\"\n values.getTarget:\n- \"eth:0x9a3Cc15b31Aec100d0C49B16cC401eaEf5A0A500\"\n+ \"eth:0x7ddAD28962571F77fE5E9cB2fE74A896300EEed4\"\n implementationNames.eth:0x9a3Cc15b31Aec100d0C49B16cC401eaEf5A0A500:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x7ddAD28962571F77fE5E9cB2fE74A896300EEed4:\n+ \"ZkLighterVerifier\"\n }\n```\n\n```diff\n EOA (eth:0xfDb36C132fA19f7774d72fA39c89272D1B954A41) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"eth:0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1\",\"description\":\"manage validators, update the address that manages the insurance fund, update the treasury address that collects fees from markets, add and update markets and assets.\",\"role\":\".networkGovernor\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract Safe (eth:0x97A90Ec950B6BCd9B190b566525B2Bb92A2C03a2)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DesertVerifier (eth:0xd4460475F00307845082d3a146f36661354FBc67)\n +++ description: ZK verifier used to verify forced exits during desert mode.\n```"
}
]
},
{
"id": "3c7e3375",
"date": "Wed, 26 Nov 2025 13:56:19 GMT",
"timestamp": 1764165313,
"description": "new markets.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages USDC deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n values.createdMarkets.42:\n+ \"HOOD\"\n values.createdMarkets.43:\n+ \"COIN\"\n }\n```"
}
]
},
{
"id": "9c40da00",
"date": "Mon, 24 Nov 2025 11:39:03 GMT",
"timestamp": 1763984268,
"description": "new markets!",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages USDC deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n values.createdMarkets.36:\n+ \"ICP\"\n values.createdMarkets.37:\n+ \"FIL\"\n values.createdMarkets.38:\n+ \"STRK\"\n values.createdMarkets.39:\n+ \"USDKRW\"\n values.createdMarkets.40:\n+ \"AUDUSD\"\n values.createdMarkets.41:\n+ \"NZDUSD\"\n }\n```"
}
]
},
{
"id": "42d84a81",
"date": "Mon, 03 Nov 2025 19:01:11 GMT",
"timestamp": 1762196400,
"description": "As per tg, added a \"quote multiplier\" to the state through the state upgrade verifier.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages USDC deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0x63c0aabbd18f145acd677da4d5c3feac9c12a174abbd89c23b9038cbe4e6415a\"\n+ \"0x655cbba8ed9e8bc798be3624c7ded712b4e2abf1c743d46361b14e173e92e58a\"\n values.$implementation.0:\n- \"eth:0x4FF23C6cA650166A95D854935a8b012B53ac59Bc\"\n+ \"eth:0x59e71dc90E662F17c4eB156A8cA1BCCD106aCfA0\"\n values.createdMarkets.30:\n+ \"EURUSD\"\n values.createdMarkets.31:\n+ \"GBPUSD\"\n values.createdMarkets.32:\n+ \"USDJPY\"\n values.createdMarkets.33:\n+ \"USDCHF\"\n values.createdMarkets.34:\n+ \"USDCAD\"\n values.createdMarkets.35:\n+ \"CC\"\n values.getTarget:\n- \"eth:0x4FF23C6cA650166A95D854935a8b012B53ac59Bc\"\n+ \"eth:0x59e71dc90E662F17c4eB156A8cA1BCCD106aCfA0\"\n implementationNames.eth:0x4FF23C6cA650166A95D854935a8b012B53ac59Bc:\n- \"ZkLighter\"\n implementationNames.eth:0x59e71dc90E662F17c4eB156A8cA1BCCD106aCfA0:\n+ \"ZkLighter\"\n }\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 32\n+ 33\n }\n```"
}
]
},
{
"id": "5517b089",
"date": "Mon, 27 Oct 2025 18:37:41 GMT",
"timestamp": 1761590191,
"description": "- [Lighter](https://disco.l2beat.com/diff/eth:0x1D2624A65F8aaD1c4Bc406b4D2418ba577D218cb/eth:0x4FF23C6cA650166A95D854935a8b012B53ac59Bc): forced txs delay reduced from 18 days to 14 days.\n- [AdditionalZKLighter](https://disco.l2beat.com/diff/eth:0x4194D3847a0239d59a87bC82C1870CBE1FA99db1/eth:0xf255FC8738a5c6Ee6E869A5b182a9Cd4F99a2ED6): same as above + small gas optimization.\n\nMoreover the desert verifier is now verified on etherscan.",
"isHighSeverity": true,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages USDC deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n sourceHashes.1:\n- \"0xa9200f827141ae9be2188327085a679c20ed563bf9bb6e5e2fc895b99b2bd5b0\"\n+ \"0x63c0aabbd18f145acd677da4d5c3feac9c12a174abbd89c23b9038cbe4e6415a\"\n values.$implementation.0:\n- \"eth:0x1D2624A65F8aaD1c4Bc406b4D2418ba577D218cb\"\n+ \"eth:0x4FF23C6cA650166A95D854935a8b012B53ac59Bc\"\n values.$implementation.1:\n- \"eth:0x4194D3847a0239d59a87bC82C1870CBE1FA99db1\"\n+ \"eth:0xf255FC8738a5c6Ee6E869A5b182a9Cd4F99a2ED6\"\n values.additionalZkLighter:\n- \"eth:0x4194D3847a0239d59a87bC82C1870CBE1FA99db1\"\n+ \"eth:0xf255FC8738a5c6Ee6E869A5b182a9Cd4F99a2ED6\"\n values.createdMarkets.29:\n+ \"MET\"\n+++ severity: HIGH\n values.desertVerifier:\n- \"eth:0x59406a5DcE71a4f631F9cd5D41996a19D6fDF184\"\n+ \"eth:0x9BC70c62823BabFed57698d458833da55D0c88A4\"\n values.getTarget:\n- \"eth:0x1D2624A65F8aaD1c4Bc406b4D2418ba577D218cb\"\n+ \"eth:0x4FF23C6cA650166A95D854935a8b012B53ac59Bc\"\n values.PRIORITY_EXPIRATION:\n- 1555200\n+ 1209600\n implementationNames.eth:0x1D2624A65F8aaD1c4Bc406b4D2418ba577D218cb:\n- \"ZkLighter\"\n implementationNames.eth:0x4194D3847a0239d59a87bC82C1870CBE1FA99db1:\n- \"AdditionalZkLighter\"\n implementationNames.eth:0x4FF23C6cA650166A95D854935a8b012B53ac59Bc:\n+ \"ZkLighter\"\n implementationNames.eth:0xf255FC8738a5c6Ee6E869A5b182a9Cd4F99a2ED6:\n+ \"AdditionalZkLighter\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DesertVerifier (eth:0x59406a5DcE71a4f631F9cd5D41996a19D6fDF184)\n +++ description: None\n```\n\n```diff\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67) {\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n values.versionId:\n- 31\n+ 32\n }\n```\n\n```diff\n+ Status: CREATED\n contract DesertVerifier (eth:0x9BC70c62823BabFed57698d458833da55D0c88A4)\n +++ description: ZK verifier used to verify forced exits during desert mode.\n```"
}
]
},
{
"id": "d3fcf233",
"date": "Thu, 23 Oct 2025 12:50:06 GMT",
"timestamp": 1761223728,
"description": "new markets.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7) {\n +++ description: The main rollup contract. It processes L2 batches, manages USDC deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n values.createdMarkets.26:\n+ \"XAU\"\n values.createdMarkets.27:\n+ \"XAG\"\n values.createdMarkets.28:\n+ \"MEGA\"\n }\n```"
}
]
},
{
"id": "c03902a6",
"date": "Wed, 08 Oct 2025 14:18:25 GMT",
"timestamp": 1759933041,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract Lighter (eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7)\n +++ description: The main rollup contract. It processes L2 batches, manages USDC deposits and withdrawals, allows users to submit censorship-resistant L2 transactions and controls desert mode (escape hatch). Logic is split between two contracts because of code-size limits, many operations are delegated to AdditionalZKLighter.\n```\n\n```diff\n+ Status: CREATED\n contract DesertVerifier (eth:0x59406a5DcE71a4f631F9cd5D41996a19D6fDF184)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Lighter Multisig (eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract UpgradeGatekeeper (eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67)\n +++ description: Governance contract functioning like an upgrade timelock for downstream contracts. The current delay is 21d and can be entirely skipped by eth:0x92b12c9d85BF7bd2EF5d2F53F4cd4Ce0BE432045.\n```\n\n```diff\n+ Status: CREATED\n contract Governance (eth:0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1)\n +++ description: Manages the list of validators and the network governor.\n```\n\n```diff\n+ Status: CREATED\n contract ZkLighterVerifier (eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA)\n +++ description: The main ZK verifier of Lighter, settles the proofs of correct L2 state transition in the case of normal rollup operation.\n```"
}
]
}
]
+55 -17
{
"changes": [
{
"timestamp": 1737139751,
"type": "state",
"earliest": 1737139751
},
{
"timestamp": 1737139979,
"type": "code",
"earliest": 1737139979
},
{
"timestamp": 1737139979,
"type": "state",
"earliest": 1737139979
},
{
"timestamp": 1737264431,
"type": "state",
"earliest": 1737264431
},
{
"timestamp": 1737266423,
"type": "state",
"earliest": 1737266423
},
{
"timestamp": 1737266999,
"type": "state",
"earliest": 1737266999
},
{
"timestamp": 1737272975,
"type": "state",
"earliest": 1737272975
},
{
"timestamp": 1737273227,
"type": "state",
"earliest": 1737273227
},
{
"timestamp": 1737273383,
"type": "code",
"earliest": 1737273383
},
{
"timestamp": 1737273383,
"type": "code",
"earliest": 1737273383
},
{
"timestamp": 1737273383,
"type": "state",
"earliest": 1737273383
},
{
"timestamp": 1737274235,
"type": "state",
"earliest": 1737274235
},
{
"timestamp": 1737274307,
"type": "code",
"earliest": 1737274307
},
{
"timestamp": 1737274307,
"type": "state",
"earliest": 1737274307
},
{
"timestamp": 1737623303,
"type": "state",
"earliest": 1737623303
},
{
"timestamp": 1737623471,
"type": "code",
"earliest": 1737623471
},
{
"timestamp": 1737623471,
"type": "state",
"earliest": 1737623471
},
{
"timestamp": 1738733903,
"type": "state",
"earliest": 1738733903
},
{
"timestamp": 1738734107,
"type": "code",
"earliest": 1738734107
},
{
"timestamp": 1738734107,
"type": "state",
"earliest": 1738734107
},
{
"timestamp": 1738978151,
"type": "state",
"earliest": 1738978151
},
{
"timestamp": 1738978247,
"type": "code",
"earliest": 1738978247
},
{
"timestamp": 1738978247,
"type": "state",
"earliest": 1738978247
},
{
"timestamp": 1739428151,
"type": "state",
"earliest": 1739428151
},
{
"timestamp": 1739428271,
"type": "code",
"earliest": 1739428271
},
{
"timestamp": 1739428271,
"type": "state",
"earliest": 1739428271
},
{
"timestamp": 1741186163,
"type": "state",
"earliest": 1741186163
},
{
"timestamp": 1741186235,
"type": "code",
"earliest": 1741186235
},
{
"timestamp": 1741186235,
"type": "state",
"earliest": 1741186235
},
{
"timestamp": 1741647875,
"type": "state",
"earliest": 1741647875
},
{
"timestamp": 1741647971,
"type": "code",
"earliest": 1741647971
},
{
"timestamp": 1741647971,
"type": "state",
"earliest": 1741647971
},
{
"timestamp": 1742943923,
"type": "state",
"earliest": 1742943923
},
{
"timestamp": 1742944463,
"type": "code",
"earliest": 1742944463
},
{
"timestamp": 1742944463,
"type": "code",
"earliest": 1742944463
},
{
"timestamp": 1742944463,
"type": "state",
"earliest": 1742944463
},
{
"timestamp": 1742961263,
"type": "state",
"earliest": 1742961263
},
{
"timestamp": 1742961371,
"type": "code",
"earliest": 1742961371
},
{
"timestamp": 1742961371,
"type": "state",
"earliest": 1742961371
},
{
"timestamp": 1743007631,
"type": "state",
"earliest": 1743007631
},
{
"timestamp": 1743007751,
"type": "code",
"earliest": 1743007751
},
{
"timestamp": 1743007751,
"type": "state",
"earliest": 1743007751
},
{
"timestamp": 1743039563,
"type": "state",
"earliest": 1743039563
},
{
"timestamp": 1743039731,
"type": "code",
"earliest": 1743039731
},
{
"timestamp": 1743039731,
"type": "state",
"earliest": 1743039731
},
{
"timestamp": 1743105683,
"type": "state",
"earliest": 1743105683
},
{
"timestamp": 1743105779,
"type": "code",
"earliest": 1743105779
},
{
"timestamp": 1743105779,
"type": "state",
"earliest": 1743105779
},
{
"timestamp": 1743280079,
"type": "state",
"earliest": 1743280079
},
{
"timestamp": 1743280139,
"type": "code",
"earliest": 1743280139
},
{
"timestamp": 1743280139,
"type": "state",
"earliest": 1743280139
},
{
"timestamp": 1744136675,
"type": "state",
"earliest": 1744136675
},
{
"timestamp": 1744136747,
"type": "code",
"earliest": 1744136747
},
{
"timestamp": 1744136747,
"type": "state",
"earliest": 1744136747
},
{
"timestamp": 1744136927,
"type": "state",
"earliest": 1744136927
},
{
"timestamp": 1744137119,
"type": "code",
"earliest": 1744137119
},
{
"timestamp": 1744137119,
"type": "state",
"earliest": 1744137119
},
{
"timestamp": 1744214723,
"type": "state",
"earliest": 1744214723
},
{
"timestamp": 1744214807,
"type": "code",
"earliest": 1744214807
},
{
"timestamp": 1744214807,
"type": "state",
"earliest": 1744214807
},
{
"timestamp": 1744553687,
"type": "state",
"earliest": 1744553687
},
{
"timestamp": 1746131831,
"type": "state",
"earliest": 1746131831
},
{
"timestamp": 1746132095,
"type": "code",
"earliest": 1746132095
},
{
"timestamp": 1746132095,
"type": "state",
"earliest": 1746132095
},
{
"timestamp": 1746235007,
"type": "state",
"earliest": 1746235007
},
{
"timestamp": 1746578543,
"type": "state",
"earliest": 1746578543
},
{
"timestamp": 1746578783,
"type": "code",
"earliest": 1746578783
},
{
"timestamp": 1746578783,
"type": "state",
"earliest": 1746578783
},
{
"timestamp": 1749280139,
"type": "state",
"earliest": 1749280139
},
{
"timestamp": 1749280235,
"type": "code",
"earliest": 1749280235
},
{
"timestamp": 1749280235,
"type": "state",
"earliest": 1749280235
},
{
"timestamp": 1749291287,
"type": "state",
"earliest": 1749291287
},
{
"timestamp": 1749291395,
"type": "code",
"earliest": 1749291395
},
{
"timestamp": 1749291395,
"type": "state",
"earliest": 1749291395
},
{
"timestamp": 1749311843,
"type": "state",
"earliest": 1749311843
},
{
"timestamp": 1749312011,
"type": "code",
"earliest": 1749312011
},
{
"timestamp": 1749312011,
"type": "state",
"earliest": 1749312011
},
{
"timestamp": 1749325595,
"type": "state",
"earliest": 1749325595
},
{
"timestamp": 1749325667,
"type": "code",
"earliest": 1749325667
},
{
"timestamp": 1749325667,
"type": "state",
"earliest": 1749325667
},
{
"timestamp": 1750721651,
"type": "state",
"earliest": 1750721651
},
{
"timestamp": 1750721747,
"type": "code",
"earliest": 1750721747
},
{
"timestamp": 1750721747,
"type": "state",
"earliest": 1750721747
},
{
"timestamp": 1750803887,
"type": "state",
"earliest": 1750803887
},
{
"timestamp": 1750803935,
"type": "code",
"earliest": 1750803935
},
{
"timestamp": 1750803935,
"type": "state",
"earliest": 1750803935
},
{
"timestamp": 1751596475,
"type": "state",
"earliest": 1751596475
},
{
"timestamp": 1751596559,
"type": "code",
"earliest": 1751596559
},
{
"timestamp": 1751596559,
"type": "state",
"earliest": 1751596559
},
{
"timestamp": 1751597003,
"type": "state",
"earliest": 1751597003
},
{
"timestamp": 1751597051,
"type": "code",
"earliest": 1751597051
},
{
"timestamp": 1751597051,
"type": "state",
"earliest": 1751597051
},
{
"timestamp": 1753750103,
"type": "state",
"earliest": 1753750103
},
{
"timestamp": 1753750139,
"type": "code",
"earliest": 1753750139
},
{
"timestamp": 1753750139,
"type": "state",
"earliest": 1753750139
},
{
"timestamp": 1755635711,
"type": "state",
"earliest": 1755635711
},
{
"timestamp": 1755635903,
"type": "code",
"earliest": 1755635903
},
{
"timestamp": 1755635903,
"type": "state",
"earliest": 1755635903
},
{
"timestamp": 1759348199,
"type": "state",
"earliest": 1759348199
},
{
"timestamp": 1759348271,
"type": "code",
"earliest": 1759348271
},
{
"timestamp": 1759348271,
"type": "state",
"earliest": 1759348271
},
{
"timestamp": 1761490571,
"type": "state",
"earliest": 1761490571
},
{
"timestamp": 1761490859,
"type": "code",
"updateId": "5517b089",
"earliest": 1761490859
},
{
"timestamp": 1761490859,
"type": "state",
"earliest": 1761490859
},
{
"timestamp": 1762084091,
"type": "state",
"earliest": 1762084091
},
{
"timestamp": 1762084271,
"type": "code",
"updateId": "42d84a81",
"earliest": 1762084271
},
{
"timestamp": 1762084271,
"type": "state",
"earliest": 1762084271
},
{
"timestamp": 1764849563,
"type": "state",
"earliest": 1764849563
},
{
"timestamp": 1764849611,
"type": "code",
"updateId": "196b1d79",
"earliest": 1764849611
},
{
"timestamp": 1764849611,
"type": "state",
"earliest": 1764849611
},
{
"timestamp": 1764886103,
"type": "state",
"earliest": 1764886103
},
{
"timestamp": 1764886259,
"type": "code",
"updateId": "196b1d79",
"earliest": 1764886259
},
{
"timestamp": 1764886259,
"type": "state",
"earliest": 1764886259
},
{
"timestamp": 1766621339,
"type": "state",
"earliest": 1766621339
},
{
"timestamp": 1766622023,
"type": "code",
"updateId": "1e1f3162",
"earliest": 1766622023
},
{
"timestamp": 1766622023,
"type": "state",
"earliest": 1766622023
},
{
"timestamp": 1767568979,
"type": "state",
"earliest": 1767568979
},
{
"timestamp": 1767569855,
"type": "code",
"updateId": "1e1f3162",
"earliest": 1767569855
},
{
"timestamp": 1767569855,
"type": "state",
"earliest": 1767569855
},
{
"timestamp": 1767804407,
"type": "state",
"earliest": 1767804407
},
{
"timestamp": 1768172423,
"type": "state",
"earliest": 1768172423
},
{
"timestamp": 1768173383,
"type": "code",
"updateId": "9519397f",
"earliest": 1768173383
},
{
"timestamp": 1768173383,
"type": "state",
"earliest": 1768173383
},
{
"timestamp": 1768911059,
"type": "state",
"earliest": 1768911059
},
{
"timestamp": 1768911743,
"type": "code",
"updateId": "13a4c4d4",
"earliest": 1768911743
},
{
"timestamp": 1768911743,
"type": "state",
"earliest": 1768911743
},
{
"timestamp": 1769658551,
"type": "state",
"earliest": 1769658551
},
{
"timestamp": 1769659235,
"type": "code",
"updateId": "a3678747",
"earliest": 1769659235
},
{
"timestamp": 1769659235,
"type": "code",
"updateId": "a3678747",
"earliest": 1769659235
},
{
"timestamp": 1769659235,
"type": "state",
"earliest": 1769659235
},
{
"timestamp": 1770944819,
"type": "state",
"earliest": 1770944819
},
{
"timestamp": 1770945767,
"type": "code",
"updateId": "ed521fe8",
"earliest": 1770945767
},
{
"timestamp": 1770945767,
"type": "code",
"updateId": "ed521fe8",
"earliest": 1770945767
},
{
"timestamp": 1770945767,
"type": "state",
"earliest": 1770945767
},
{
"timestamp": 1771294043,
"type": "state",
"earliest": 1771294043
},
{
"timestamp": 1771294775,
"type": "code",
"updateId": "9e8022b3",
"earliest": 1771294775
},
{
"timestamp": 1771294775,
"type": "code",
"updateId": "9e8022b3",
"earliest": 1771294775
},
{
"timestamp": 1771294775,
"type": "state",
"earliest": 1771294775
},
{
"timestamp": 1771624919,
"type": "state",
"earliest": 1771624919
},
{
"timestamp": 1771626155,
"type": "code",
"updateId": "42874125",
"earliest": 1771626155
},
{
"timestamp": 1771626155,
"type": "state",
"earliest": 1771626155
},
{
"timestamp": 1772980763,
"type": "state",
"earliest": 1772980763
},
{
"timestamp": 1772981399,
"type": "code",
"updateId": "65748edf",
"earliest": 1772981399
},
{
"timestamp": 1772981399,
"type": "code",
"updateId": "65748edf",
"earliest": 1772981399
},
{
"timestamp": 1772981399,
"type": "state",
"earliest": 1772981399
},
{
"timestamp": 1773229307,
"type": "state",
"earliest": 1773229307
},
{
"timestamp": 1773229883,
"type": "code",
"updateId": "0aafdc95",
"earliest": 1773229883
},
{
"timestamp": 1773229883,
"type": "state",
"earliest": 1773229883
},
{
"timestamp": 1774601231,
"type": "state",
"earliest": 1774601231
},
{
"timestamp": 1774601903,
"type": "code",
"updateId": "83b66f4d",
"earliest": 1774601903
},
{
"timestamp": 1774601903,
"type": "state",
"earliest": 1774601903
},
{
"timestamp": 1774792151,
"type": "state",
"earliest": 1774792151
},
{
"timestamp": 1774792667,
"type": "code",
"updateId": "83b66f4d",
"earliest": 1774792667
},
{
"timestamp": 1774792667,
"type": "state",
"earliest": 1774792667
},
{
"timestamp": 1776007127,
"type": "state",
"earliest": 1776007127
},
{
"timestamp": 1776008951,
"type": "code",
"updateId": "813318ec",
"earliest": 1776008951
},
{
"timestamp": 1776008951,
"type": "state",
"earliest": 1776008951
},
{
"timestamp": 1776661907,
"type": "state",
"earliest": 1776661907
},
{
"timestamp": 1776662627,
"type": "code",
"updateId": "5b795ab3",
"earliest": 1776662627
},
{
"timestamp": 1776662627,
"type": "state",
"earliest": 1776662627
},
{
"timestamp": 1777044599,
"type": "state",
"earliest": 1777044599
},
{
"timestamp": 1777045607,
"type": "code",
"updateId": "f0ac0634",
"earliest": 1777045607
},
{
"timestamp": 1777045607,
"type": "code",
"updateId": "f0ac0634",
"earliest": 1777045607
},
{
"timestamp": 1777045607,
"type": "state",
"earliest": 1777045607
},
{
"timestamp": 1777056563,
"type": "state",
"earliest": 1777056563
},
{
"timestamp": 1777058879,
"type": "code",
"updateId": "f0ac0634",
"earliest": 1777058879
},
{
"timestamp": 1777058879,
"type": "state",
"earliest": 1777058879
},
{
"timestamp": 1777079711,
"type": "state",
"earliest": 1777079711
},
{
"timestamp": 1777080527,
"type": "code",
"updateId": "f0ac0634",
"earliest": 1777080527
},
{
"timestamp": 1777080527,
"type": "state",
"earliest": 1777080527
},
{
"timestamp": 1777120415,
"type": "state",
"earliest": 1777120415
},
{
"timestamp": 1777122791,
"type": "code",
"updateId": "f0ac0634",
"earliest": 1777122791
},
{
"timestamp": 1777122791,
"type": "state",
"earliest": 1777122791
},
{
"timestamp": 1777828259,
"type": "state",
"earliest": 1777828259
},
{
"timestamp": 1777828787,
"type": "code",
"updateId": "121f63dd",
"earliest": 1777828787
},
{
"timestamp": 1777828787,
"type": "state",
"earliest": 1777828787
},
{
"timestamp": 1777990103,
"type": "state",
"earliest": 1777990103
},
{
"timestamp": 1777991843,
"type": "code",
"updateId": "4e9b56bc",
"earliest": 1777991843
},
{
"timestamp": 1777991843,
"type": "state",
"earliest": 1777991843
},
{
"timestamp": 1778504015,
"type": "state",
"earliest": 1778504015
},
{
"timestamp": 1778504939,
"type": "code",
"updateId": "4e9b56bc",
"earliest": 1778504939
},
{
"timestamp": 1778504939,
"type": "state",
"earliest": 1778504939
},
{
"timestamp": 1778794283,
"type": "state",
"earliest": 1778794283
},
{
"timestamp": 1778795639,
"type": "code",
"updateId": "dccd34b3",
"earliest": 1778795639
},
{
"timestamp": 1778795639,
"type": "state",
"earliest": 1778795639
},
{
"timestamp": 1778870699,
"type": "state",
"earliest": 1778870699
},
{
"timestamp": 1779033143,
"type": "state",
"earliest": 1779033143
},
{
"timestamp": 1779033803,
"type": "code",
"updateId": "dccd34b3",
"earliest": 1779033803
},
{
"timestamp": 1779033803,
"type": "state",
"earliest": 1779033803
},
{
"timestamp": 1779895415,
"type": "state",
"earliest": 1779895415
},
{
"timestamp": 1779896135,
"type": "code",
"updateId": "a5c2bdc7",
"earliest": 1779896135
},
{
"timestamp": 1779896135,
"type": "state",
"earliest": 1779896135
},
{
"timestamp": 1780154471,
"type": "state",
"earliest": 1780154471
},
{
"timestamp": 1780155143,
"type": "code",
"updateId": "a5c2bdc7",
"earliest": 1780155143
},
{
"timestamp": 1780155143,
"type": "code",
"updateId": "a5c2bdc7",
"earliest": 1780155143
},
{
"timestamp": 1780155143,
"type": "state",
"earliest": 1780155143
},
{
"timestamp": 1783873907,
"type": "state",
"earliest": 1783873907
},
{
"timestamp": 1783874483,
"type": "code",
"updateId": "22833684",
"earliest": 1783874483
},
{
"timestamp": 1783874483,
"type": "state",
"earliest": 1783874483
},
{
"timestamp": 1784382047,
"type": "state",
"earliest": 1784382047
},
{
"timestamp": 1784382923,
"type": "code",
"updateId": "3484e5da",
"earliest": 1784382923
},
{
"timestamp": 1784382923,
"type": "code",
"updateId": "3484e5da",
"earliest": 1784382923
},
{
"timestamp": 1784382923,
"type": "state",
"earliest": 1784382923
},
{
"timestamp": 1784807819,
"type": "state",
"earliest": 1784807819
},
{
"timestamp": 1784808767,
"type": "code",
"updateId": "3fce832b",
"earliest": 1784808767
},
{
"timestamp": 1784808767,
"type": "code",
"updateId": "3fce832b",
"earliest": 1784808767
},
{
"timestamp": 1784808767,
"type": "state",
"earliest": 1784808767
},
{
"timestamp": 1786291487,
"type": "state",
"earliest": 1786291487
},
{
"timestamp": 1786292867,
"type": "code",
"updateId": "6ca52fb0",
"earliest": 1786292867
},
{
"timestamp": 1786292867,
"type": "code",
"updateId": "6ca52fb0",
"earliest": 1786292867
},
{
"timestamp": 1786292867,
"type": "state",
"earliest": 1786292867
},
{
"timestamp": 1787364167,
"type": "state",
"earliest": 1787364167
},
{
"timestamp": 1787365775,
"type": "code",
"updateId": "2a4ae025",
"earliest": 1787365775
},
{
"timestamp": 1787365775,
"type": "state",
"earliest": 1787365775
},
{
"timestamp": 1787489699,
"type": "state",
"earliest": 1787489699
},
{
"timestamp": 1787490851,
"type": "code",
"updateId": "2a4ae025",
"earliest": 1787490851
},
{
"timestamp": 1787490851,
"type": "state",
"earliest": 1787490851
},
{
"timestamp": 1787661323,
"type": "state",
"earliest": 1787661323
},
{
"timestamp": 1787662175,
"type": "code",
"updateId": "eb7b4d0f",
"earliest": 1787662175
},
{
"timestamp": 1787662175,
"type": "state",
"earliest": 1787662175
},
{
"timestamp": 1788204263,
"type": "state",
"earliest": 1788204263
},
{
"timestamp": 1788205163,
"type": "code",
"updateId": "319f3083",
"earliest": 1788205163
},
{
"timestamp": 1788205163,
"type": "state",
"earliest": 1788205163
},
{
"timestamp": 1788899147,
"type": "state",
"earliest": 1788899147
},
{
"timestamp": 1788900371,
"type": "code",
"updateId": "21a86659",
"earliest": 1788900371
},
{
"timestamp": 1788900371,
"type": "state",
"earliest": 1788900371
},
{
"timestamp": 1789296359,
"type": "state",
"earliest": 1789296359
},
{
"timestamp": 1789297031,
"type": "code",
"updateId": "f3073dbb",
"earliest": 1789297031
},
{
"timestamp": 1789297031,
"type": "state",
"earliest": 1789297031
},
{
"timestamp": 1789303931,
"type": "state",
"earliest": 1789303931
},
{
"timestamp": 1789304459,
"type": "code",
"updateId": "f3073dbb",
"earliest": 1789304459
},
{
"timestamp": 1789304459,
"type": "code",
"updateId": "f3073dbb",
"earliest": 1789304459
},
{
"timestamp": 1789304459,
"type": "state",
"earliest": 1789304459
},
{
"timestamp": 1789909139,
"type": "state",
"earliest": 1789909139
},
{
"timestamp": 1789910219,
"type": "code",
"updateId": "16a37b66",
"earliest": 1789910219
},
{
"timestamp": 1789910219,
"type": "state",
"earliest": 1789910219
},
{
"timestamp": 1789910219,
"type": "code",
"updateId": "16a37b66",
"earliest": 1789910219
},
{
"timestamp": 1790804927,
"type": "state",
"earliest": 1790804927
},
{
"timestamp": 1790805947,
"type": "code",
"updateId": "104a582f",
"earliest": 1790805947
},
{
"timestamp": 1790805947,
"type": "code",
"updateId": "104a582f",
"earliest": 1790805947
},
{
"timestamp": 1790805947,
"type": "state",
"earliest": 1790805947
},
{
"timestamp": 1790879255,
"type": "state",
"earliest": 1790879255
},
{
"timestamp": 1790879663,
"type": "code",
"updateId": "104a582f",
"earliest": 1790879663
},
{
"timestamp": 1790879663,
"type": "state",
"earliest": 1790879663
}
],
"contracts": [
{
"name": "Lighter",
"address": "eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7",
"isVerified": true,
"ossifyingSince": 1789910219,
"codeChangeCount": 21,
"stateChangeCount": 0
},
{
"name": "UpgradeGatekeeper",
"address": "eth:0x94da8A995D0D82Ef0fE7E509C6D76c22603B6f67",
"isVerified": true,
"ossifyingSince": 1789910219,
"ossifyingSince": 1790879663,
"codeChangeCount": 0,
"stateChangeCount": 152
"stateChangeCount": 156
},
{
"name": "ZkLighterVerifier",
"address": "eth:0xac3Ce44B6ff4E402858C99D5699ff63131572BaA",
"isVerified": true,
"ossifyingSince": 1789910219,
"codeChangeCount": 64,
"ossifyingSince": 1790879663,
"codeChangeCount": 65,
"stateChangeCount": 0
},
{
"name": "DesertVerifier",
"address": "eth:0x866418061d4C1168e1c8E8f6facE79675395E008",
"name": "Lighter",
"address": "eth:0x3B4D794a66304F130a4Db8F2551B0070dfCf5ca7",
"isVerified": true,
"ossifyingSince": 1784379467,
"codeChangeCount": 0,
"ossifyingSince": 1790805947,
"codeChangeCount": 22,
"stateChangeCount": 0
},
{
"name": "Governance",
"address": "eth:0xa464DA0B43f80EE3FfC4795cbbFC78472b5c81A1",
"isVerified": true,
"ossifyingSince": 1737090335,
"ossifyingSince": 1790805947,
"codeChangeCount": 1,
"stateChangeCount": 0
},
{
"name": "DesertVerifier",
"address": "eth:0x866418061d4C1168e1c8E8f6facE79675395E008",
"isVerified": true,
"ossifyingSince": 1784379467,
"codeChangeCount": 0,
"stateChangeCount": 0
}
],
"observedSince": 1737090335,
"resets": [
1737090335,
1737090335,
1737090335,
1737090335,
1784379467
]
}
+4 -12
+4 -12
{
"creator": "Lighter",
"projectsForTvs": [
{
"projectId": "lighter",
"sinceTimestamp": 1759356000
},
{
"projectId": "lighter-robinhood",
"sinceTimestamp": 1782502424
}
],
"proofSystemInfo": "## Description\n\nLighter prover is a zk proving system for Lighter L2 based on [Plonky2](https://github.com/0xPolygonZero/plonky2/tree/main) circuits. It verifies the logic for regular state transition of Lighter L2, as well as state transitions in the “desert mode” when L2 is shut down and users exit, using different sets of circuits. The circuits are proven with a STARK which is wrapped into a Plonk SNARK before settling onchain.\n\n## Proof system\n\n[Plonky2](https://github.com/0xPolygonZero/plonky2) implements a circuit aritmetization based on TurboPlonk over Goldilocks field, but it replaces KZG polynomial commitment scheme with a FRI-based polynomial testing scheme. In this way proving Plonky2 circuits requires no trusted setup, i.e. it is a STARK. \n\nHowever Lighter wraps these STARK in a [gnark](https://github.com/Consensys/gnark) implementation of Plonk over BN254 curve, which requires a trusted setup.\n\n### Lighter Circuits\n\nThe proof system operates on Lighter STF circuits and desert mode circuits. All published circuits are available [here](https://github.com/elliottech/lighter-prover/tree/main). \n\nLighter proof system defines circuits for proving all transactions, including internal, L1 and L2 transactions. The full list of available transactions that define Lighter STF can be seen [here](https://github.com/elliottech/lighter-prover/tree/main/circuit/src/transactions). \n\nTransaction circuits use custom implementations for arithmetic operations ([bigint](https://github.com/elliottech/lighter-prover/tree/main/circuit/src/bigint), [uint](https://github.com/elliottech/lighter-prover/tree/main/circuit/src/uint)), cryptographic primitives ([ecdsa](https://github.com/elliottech/lighter-prover/tree/main/circuit/src/ecdsa) on the Secp256k1 curve, [eddsa](https://github.com/elliottech/lighter-prover/tree/main/circuit/src/eddsa) on the ECgFp5 curve, [keccak](https://github.com/elliottech/lighter-prover/tree/main/circuit/src/keccak), [poseidon_bn128](https://github.com/elliottech/lighter-prover/tree/main/circuit/src/poseidon_bn128)) and other helper circuits.\n\n### Desert circuits\n\nLighter also provides [desert exit circuits](https://github.com/elliottech/lighter-prover/tree/main/desertexit) that allow users to permissionlessly exit L2 when it is in the desert mode. Users can use desert circuit to generate a proof of ownership of all their positions locally, which could be submitted on L1 for withdrawing funds.\n\n### Recursion\n\nLighter prover implements recursive aggregation of transaction proofs to make the whole pipeline more efficient and parallelizable. First, fixed-size blocks of consecutive transactions are processed and proven by [BlockTx circuit](https://github.com/elliottech/lighter-prover/blob/main/circuit/src/block_tx_constraints.rs), which can be done on separate machines. Next, arbitrary number of BlockTx proofs are aggregated into a single proof by [BlockTxChain circuit](https://github.com/elliottech/lighter-prover/blob/main/circuit/src/block_tx_chain_constraints.rs), which includes continuity checks across all BlockTx proofs.",
"techStack": {
"snark": [
{
"id": "Plonky2",
"type": "Plonk",
"name": "Plonky2",
"description": "Toolkit for developing transparent SNARKs based on PLONK and FRI developed by Polygon Zero team."
},
{
"id": "Goldilocks",
"type": "Field",
"name": "Goldilocks",
"description": "Prime field of order p = 2**64 - 2**32 + 1."
},
{
"id": "CustomCircuits",
"type": "Other",
"name": "App-specific circuits",
"description": "This project uses custom app-specific ZK circuits."
}
],
"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)."
}
],
"verifierHashes": [
{
"hash": "0x22144b137118fca5e4cb93568ffcbda4da15553546261fcfe4795783aa00aa53",
"hash": "0x83147f4163d7731f85f475fb56f316f1f46443d3601cb3494465d27790533fec",
"name": "Lighter verifier",
"sourceLink": "https://github.com/elliottech/lighter-prover/tree/28ae613d9c264192e7a36b42f15dda5df3f7103f/circuit/src",
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"knownDeployments": [
{
"address": "eth:0xd3E043d6E17Cb28d73BAa469Aa632411e1dE8046"
"address": "eth:0xc4c2067ece6e33e50a30087ec14096715e56aE11"
}
],
"verificationStatus": "successful",
"attesters": [
{
"id": "l2beat",
"name": "L2BEAT",
"link": "https://l2beat.com"
}
],
"verificationSteps": "The verification process below is based on the `build_circuits.sh` [script](https://github.com/elliottech/lighter-prover/blob/28ae613d9c264192e7a36b42f15dda5df3f7103f/build_circuits.sh) in the lighter-prover repository. It consumed around 100 GiB of memory at its peak, so we recommend rerunning it on a machine with 128 GiB of RAM.\n\nThe steps below are for Ubuntu 22.04.\n\n1. Install Rust, GCC, and Go version 1.21 or later.\n\n```\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. .cargo/env\n\nsudo apt update\nsudo apt install build-essential\n\n# One way to install Go 1.21 on Ubuntu 22.04\nwget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz\nsudo tar -xvf go1.21.0.linux-amd64.tar.gz\nsudo mv go /usr/local\nexport GOROOT=/usr/local/go\nexport GOPATH=$HOME/go\nexport PATH=$GOPATH/bin:$GOROOT/bin:$PATH\nsource ~/.profile\n```\n\n2. Check out the `main` revision used for the verification and run the script to regenerate the keys.\n\n```\ngit clone https://github.com/elliottech/lighter-prover.git\ncd lighter-prover\ngit checkout 28ae613d9c264192e7a36b42f15dda5df3f7103f\nchmod +x build_circuits.sh\n./build_circuits.sh\n```\n\nThe script generates a `final::....sol` file containing the verifier smart contract and verification keys.",
"verificationStatus": "notVerified",
"verificationSteps": "The sources for the verifier circuits are not published and thus the verifier cannot be independently regenerated.",
"description": "Custom verifier ID: SHA256 hash of all VK_... values from the smart contract, abi packed in the same order they are defined."
},
{
"hash": "0x0b3f7515b28812264c235ac2bba289e19a42cecfbceb2eef9856bd6f591a2308",
"name": "Lighter on Robinhood verifier",
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"knownDeployments": [
{
"address": "robinhood:0xCBF92533F5816c6Ee0e4250F4E138b3f49962EF2"
}
],
"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": "0xc8ffb171b6ebf0bba84df27eaa1021550c5242b146739c704221b456203630a9",
"name": "Lighter Desert verifier",
"sourceLink": "https://github.com/elliottech/lighter-prover/tree/23d1596b832db24f1007e20220ba1556d23b0c68/desertexit/circuits",
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"knownDeployments": [
{
"address": "eth:0x866418061d4C1168e1c8E8f6facE79675395E008"
},
{
"address": "robinhood:0x56aeED6920DBB9E198C2C0072147A45684A06E10"
}
],
"verificationStatus": "successful",
"attesters": [
{
"id": "l2beat",
"name": "L2BEAT",
"link": "https://l2beat.com"
}
],
"verificationSteps": "The verification process below is based on the `build.sh` [script](https://github.com/elliottech/lighter-prover/blob/23d1596b832db24f1007e20220ba1556d23b0c68/desertexit/build.sh) in the lighter-prover repo. It consumed around 100 GiB of memory at the peak, so we recommend rerunning it on a machine with 128 GiB of RAM.\n\nThe steps below are for Ubuntu 22.04 OS.\n\n1. Install rust, gcc, go version 1.21 and later.\n\n```\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n. .cargo/env\n\nsudo apt update\nsudo apt install build-essential\nsudo apt install jq\n\n# one way to install latest go on Ubuntu 22.04\nwget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz\nsudo tar -xvf go1.21.0.linux-amd64.tar.gz\nsudo mv go /usr/local\nexport GOROOT=/usr/local/go\nexport GOPATH=$HOME/go\nexport PATH=$GOPATH/bin:$GOROOT/bin:$PATH\nsource ~/.profile\n```\n\n2. Run the correct version of the script to regenerate the keys.\n\n```\ngit clone https://github.com/elliottech/lighter-prover.git\ncd lighter-prover/desertexit\ngit checkout 23d1596b832db24f1007e20220ba1556d23b0c68\nchmod +x build.sh\n./build.sh\n```\n\nThe script will generate the `desertwrapper::....sol` file in the `lighter-prover/desertexit/artifacts` directory that contains the verifier smart contract with the verification keys.",
"description": "Custom verifier ID: SHA256 hash of all VK_... values from the smart contract, abi packed in the same order they are defined."
}
]
}
+16 -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 3h.\n* Can interact with Diamond\n * commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock ",
"description": "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,
"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": 1790592210,
"baseTimestamp": 1790944832,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"id": "524b0aad",
"date": "Fri, 02 Oct 2026 12:42:30 GMT",
"timestamp": 1790944832,
"description": "Executed this proposal: https://www.tally.xyz/gov/zksync/proposal/49883493212277767948924829453899549013679463473253620701602979414799679547598?govId=eip155%3A324%3A0x76705327e682F2d96943280D99464Ab61219e34f. Now each chain admin can increase the execution delay of its chain (`increaseChainExecutionDelay`), the owner can set it freely (`setChainExecutionDelay`). The effective delay for Sophon is tracked in `executionDelaySophon` (still 3h).\n\nAlso adds a new `UPGRADER_ROLE` that can call `upgradeChainFromVersion()` through the VTL (forwarded to the diamond). Currently nobody holds the role for Sophon yet (tracked in `upgraderVTL`).",
"isHighSeverity": true,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_v31] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\n template:\n- \"shared-zk-stack/ValidatorTimelock_post29\"\n+ \"shared-zk-stack/ValidatorTimelock_v31\"\n sourceHashes.1:\n- \"0x5afea1019ac418e639ce9df65b9653bf0ca88ed81fb0abe0447e87328e39f10c\"\n+ \"0x51d6000b0e4437a2b99d13d332658fffb3da867cd56b05cbcb4bf4f954ff12ff\"\n description:\n- \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\"\n+ \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by at least 3h. Duration could be configured individually for zk stack chains by chain admins. All delays are capped at 30 days.\"\n values.$implementation:\n- \"eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8\"\n+ \"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"\n values.$pastUpgrades.1:\n+ [\"2026-10-01T12:28:47.000Z\",\"0xdc4278c8b23d99f974a206dcaa1c1e20272c49095fa31eac842210ae97b435a8\",[\"eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35\"]]\n values.$upgradeCount:\n- 1\n+ 2\n+++ severity: HIGH\n values.executionDelaySophon:\n+ 10800\n+++ severity: HIGH\n values.executionDelaySophon_fmt:\n+ \"3h\"\n values.MAX_EXECUTION_DELAY:\n+ 2592000\n values.OPTIONAL_UPGRADER_ADMIN_ROLE:\n+ \"0xa1426e789273bde4307f3302768d8e4eb615f0f4dea304f29cccd58ff644d640\"\n values.UPGRADER_ROLE:\n+ \"0x189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3\"\n errors:\n- {\"executionDelaySophon\":\"Processing error occurred.\",\"executionDelaySophon_fmt\":\"Processing error occurred.\"}\n fieldMeta.executionDelay.description:\n+ \"Ecosystem-wide minimum execution delay (in seconds), set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n fieldMeta.executionDelay_fmt.description:\n+ \"Ecosystem-wide minimum execution delay, set by the owner. The delay enforced for a chain is the maximum of this value and the chain-specific delay.\"\n implementationNames.eth:0x6086051f93412F550C0820e76f0fbE85F64C7ef8:\n- \"ValidatorTimelock\"\n implementationNames.eth:0x556DdC1617D7620f56317d2F2002FE440EA9Ad35:\n+ \"ValidatorTimelock\"\n }\n```"
}
]
},
{
"id": "cfbda6a9",
"date": "Thu, 10 Sep 2026 12:08:25 GMT",
"timestamp": 1789042037,
"description": "Rotated 3 sophon admin ms members.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.2:\n- \"eth:0x3b6036d410cA018661324766680674921a8b2d89\"\n+ \"eth:0x1B5a420Dc78290b0F30ED12634Fa9b068A22F96c\"\n values.$members.3:\n- \"eth:0x14574dfC6B7aF658c5033BA95673864947956521\"\n+ \"eth:0x02266d7404AF55F39605Ea1D2b6bfff6DF74157d\"\n values.$members.4:\n- \"eth:0xbe6D418089AaFeD4f95e516F21b2F56027a2E263\"\n+ \"eth:0x45Bd9b1B0525C81778A0E4AE1f58eFA9e88E53f8\"\n }\n```"
}
]
},
{
"id": "6149ea5c",
"date": "Wed, 19 Aug 2026 10:53:27 GMT",
"timestamp": 1787136744,
"description": "Removed 1 member of sophon ms.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.2:\n- \"eth:0x2Ea9CcB15Ceb6c228786a3d4837B0bA3e9736D97\"\n values.multisigThreshold:\n- \"3 of 6 (50%)\"\n+ \"3 of 5 (60%)\"\n }\n```"
}
]
},
{
"id": "76237501",
"date": "Mon, 17 Aug 2026 11:30:50 GMT",
"timestamp": 1786966187,
"description": "SophonChainAdminMultisig upgraded the boojum verifiers to version v0.30.1 (registered on the ChainTypeManager before). The new verifiers are not yet reproduced.",
"isHighSeverity": true,
"changeCount": 11,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.12:\n+ [\"2026-08-16T16:02:23.000Z\",\"0x8425fcca675dd5870508e9d44ed69fd8a947103cf051816da2eeae3e985a0dad\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 12\n+ 13\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 128849018880\n+ 128849018881\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n+ \"eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierPlonk (eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraVerifierFflonk (eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract EraDualVerifier (eth:0xCeF0218c0C6dB0768e48debeE26E41B8DAdE7081) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x8470d6B3fd71B5fE3906B4ea04498d18F721eDe9 or eth:0x0DAAB2B7b38ab48712996E760152c569FA356DbF depending on the supplied proof type.\n```"
}
]
},
{
"id": "9bef53cc",
"date": "Wed, 12 Aug 2026 09:57:36 GMT",
"timestamp": 1786528589,
"description": "Upgraded boojum verifier to v30.0, the same as the current zksync era verifier. It is not reproduced yet.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.11:\n+ [\"2026-08-11T13:00:11.000Z\",\"0xeb2beafc685e0ee4854da37ea0f13053576e4a266f020562743c9b3060f9858b\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 11\n+ 12\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051589\n+ 128849018880\n values.getSemverProtocolVersion.1:\n- 29\n+ 30\n values.getSemverProtocolVersion.2:\n- 5\n+ 0\n values.getVerifier:\n- \"eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e\"\n+ \"eth:0xC47D355402E78b886B628914B3b129F236fEe3cc\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x9f5C39a2790f38542065E7854b90407371923375 or eth:0xd22cA89e8991FCE568456914c616d303e3142395 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x9f5C39a2790f38542065E7854b90407371923375) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xd22cA89e8991FCE568456914c616d303e3142395) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x35CD3865199F2D9c574f34DD72520B19842d440c) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66) [N/A]\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xC47D355402E78b886B628914B3b129F236fEe3cc) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x4A34cE730052cb195d8a95e730623eEcc1CB8B66 or eth:0x35CD3865199F2D9c574f34DD72520B19842d440c depending on the supplied proof type.\n```"
}
]
},
{
"id": "c53b5e0a",
"date": "Wed, 05 Aug 2026 10:30:10 GMT",
"timestamp": 1785925747,
"description": "Upgraded boojum verifiers to the latest version (the same as zksync Era, not yet reproduced).\n\nAlso rotated two ms members.",
"isHighSeverity": true,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.10:\n+ [\"2026-08-04T14:53:47.000Z\",\"0x6c47ec4cd22ac63a14d8e2e8f6f931af61e7b734b54153e63cd7970b2c598d4e\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 10\n+ 11\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051588\n+ 124554051589\n values.getSemverProtocolVersion.2:\n- 4\n+ 5\n values.getVerifier:\n- \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n+ \"eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```\n\n```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0xF6877208302D9715A576D4Bff96f6576B5A1dFbA\"\n+ \"eth:0x891F19CdefBce82e2F39f34C2322526c01E7A845\"\n values.$members.5:\n- \"eth:0xd89b0f620E0C72BD82e0447dE07FB0A0Abe01F69\"\n+ \"eth:0xbe6D418089AaFeD4f95e516F21b2F56027a2E263\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x47fC5273145E053A18C0BBF6d88F8d6d573C3d0e) [shared-zk-stack/DualVerifier]\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x9f5C39a2790f38542065E7854b90407371923375 or eth:0xd22cA89e8991FCE568456914c616d303e3142395 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n EOA (eth:0x891F19CdefBce82e2F39f34C2322526c01E7A845)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0x9f5C39a2790f38542065E7854b90407371923375) [shared-zk-stack/L1VerifierFflonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xd22cA89e8991FCE568456914c616d303e3142395) [shared-zk-stack/L1VerifierPlonk]\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "2e7b9902",
"date": "Tue, 30 Jun 2026 10:28:58 GMT",
"timestamp": 1782815274,
"description": "Rotated two validators.",
"isHighSeverity": false,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776) [shared-zk-stack/ValidatorTimelock_post29] {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.validatorsVTL.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTL.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTLFullAC.PRECOMMITTER_ROLE.members.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTLFullAC.COMMITTER_ROLE.members.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTLFullAC.REVERTER_ROLE.members.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTLFullAC.PROVER_ROLE.members.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.0:\n- \"eth:0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n+ \"eth:0xa7Fc7e6CF378523aF8C159Cb55073D258e32A13B\"\n values.validatorsVTLFullAC.EXECUTOR_ROLE.members.1:\n- \"eth:0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n+ \"eth:0xE2DDB84786aff975FE7B511acCc3AF5a1657AbF3\"\n }\n```\n\n```diff\n contract SophonZkEvmAdmin (eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) [shared-zk-stack/ChainAdmin] {\n +++ description: A governance proxy that lets eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1 act through it.\n values.tokenMultiplierSetter:\n- \"eth:0xe14828E4405239dD331F194F1B7883eeD73bCBF3\"\n+ \"eth:0xB1e2974E81922c1d5923dB4580292fB9954E9E05\"\n }\n```"
}
]
},
{
"id": "9625dc34",
"date": "Fri, 26 Jun 2026 09:48:20 GMT",
"timestamp": 1782464947,
"description": "User deposits into sophon are paused: only authorized superuser can pass transaction filterer now: https://disco.l2beat.com/diff/eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063/eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41.\n\nSophon chain is being sunset: https://x.com/sophon/status/2070192257295335800.",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) [shared-zk-stack/Diamond] {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n+++ description: This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\n+++ severity: HIGH\n values.getTransactionFilterer:\n- \"eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063\"\n+ \"eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41\"\n }\n```\n\n```diff\n EOA (eth:0x50B238788747B26c408681283D148659F9da7Cf9) {\n +++ description: None\n receivedPermissions.0.role:\n- \".whitelistedSendersAC\"\n+ \".superuserAC\"\n receivedPermissions.0.from:\n- \"eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063\"\n+ \"eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41\"\n receivedPermissions.1.from:\n- \"eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063\"\n+ \"eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41\"\n }\n```\n\n```diff\n- Status: DELETED\n contract SophonTransactionFilterer (eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063) [shared-zk-stack/TransactionFilterer]\n +++ description: A contract implementing the ITransactionFilterer interface, able to whitelist transactions based on sender- OR contractL2 (target) addresses. The whitelist is defined in AccessControl roles.\n```\n\n```diff\n contract SophonZkEvmAdmin (eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) [shared-zk-stack/ChainAdmin] {\n +++ description: A governance proxy that lets eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1 act through it.\n directlyReceivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41\",\"description\":\"call requestL2Transaction() with any target/calldata (whitelisted superuser sender).\",\"role\":\".superuserAC\"}\n }\n```\n\n```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n receivedPermissions.0:\n+ {\"permission\":\"interact\",\"from\":\"eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41\",\"description\":\"call requestL2Transaction() with any target/calldata (whitelisted superuser sender).\",\"role\":\".superuserAC\",\"via\":[{\"address\":\"eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3\"}]}\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"eth:0x9D06B34adc3026eF876e4DABb859C424DbDA3063\",\"description\":\"manage the whitelist.\",\"role\":\".defaultAdminAC\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract SophonTransactionFilterer (eth:0x006ea4836b5C3EB8694AE6D1e08207610E1d5e41) [sophon/SophonTransactionFilterer]\n +++ description: A contract implementing the ITransactionFilterer interface, allows only trxs from whitelisted superusers. The whitelist is defined in AccessControl roles.\n```"
}
]
},
{
"id": "26e42359",
"date": "Tue, 16 Jun 2026 09:44:37 GMT",
"timestamp": 1781602990,
"description": "Multisig member switched.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0xF6877208302D9715A576D4Bff96f6576B5A1dFbA\"\n values.$members.3:\n- \"eth:0x20719Abd2E63518e68D30a295388cAd6B542dCEf\"\n }\n```"
}
]
},
{
"id": "5f784348",
"date": "Mon, 08 Jun 2026 10:14:06 GMT",
"timestamp": 1780913579,
"description": "Removed one ms member for admin ms, rotated two more and decreased the threshold.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n- \"eth:0x11BB5F79750de2Cc71e80cB2C59cF0a60EFFa95d\"\n+ \"eth:0x4BBBaCCbA75dbb482619722FFE68bBddC9CCc336\"\n values.$members.1:\n- \"eth:0x0BA5557075B4E30bA409B01797c9c78b3Ce192bF\"\n+ \"eth:0x2Ea9CcB15Ceb6c228786a3d4837B0bA3e9736D97\"\n values.$members.5:\n- \"eth:0x7f413262Cb811B034d077d9184b5Efda6943f2c3\"\n values.$threshold:\n- 4\n+ 3\n values.multisigThreshold:\n- \"4 of 7 (57%)\"\n+ \"3 of 6 (50%)\"\n }\n```"
}
]
},
{
"id": "5d5e374b",
"date": "Mon, 16 Feb 2026 14:24:27 GMT",
"timestamp": 1771251793,
"description": "Upgrade to v29.4 (this verfier upgrade version was introduced in an [emergency upgrade](https://etherscan.io/tx/0xef1d02776ae4a2a590278883f7347c4a863fcbe7a0b9ce96bc766084aab5dee9)).",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.9:\n+ [\"2026-02-13T19:31:11.000Z\",\"0x13067d49b849a7460f1f8a587edaee878b49dc7b2278ce8b16e223ca042ddbb9\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 9\n+ 10\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051587\n+ 124554051588\n values.getSemverProtocolVersion.2:\n- 3\n+ 4\n values.getVerifier:\n- \"eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B\"\n+ \"eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d or eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract SophonZkEvmAdmin (eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: A governance proxy that lets eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.7:\n+ {\"_protocolVersion\":124554051588,\"_upgradeTimestamp\":0}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0x7f33D100f482093182111d69a4a457289e99f4ec)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0xCD279BD537c8e1A1acC46aC2205bebD8902F7A45)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xa38a0Df579F9eCA29fbA560b9885B1113b1Df442 or eth:0x7f33D100f482093182111d69a4a457289e99f4ec depending on the supplied proof type.\n```"
}
]
},
{
"id": "0c1fc054",
"date": "Wed, 28 Jan 2026 11:04:18 GMT",
"timestamp": 1769598194,
"description": "Upgraded boojum verifier to the latest version.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Diamond (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.8:\n+ [\"2026-01-27T18:02:59.000Z\",\"0x02b9e48f0f8550fe61d750085088df57ec084a55468a6b259bc600b2d9f9a8de\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 8\n+ 9\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 124554051586\n+ 124554051587\n values.getSemverProtocolVersion.2:\n- 2\n+ 3\n values.getVerifier:\n- \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n+ \"eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract SophonZkEvmAdmin (eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: A governance proxy that lets eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.6:\n+ {\"_protocolVersion\":124554051587,\"_upgradeTimestamp\":0}\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4f06ef57618b16959879fC86E65eda0bd629A12B)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d or eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xB3f4396C2040e502d0556Cbb16C0B22fE777A026)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xE3743181a4b0A0C1260826105c6BBA4b6e18D79d)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "91a6cdb2",
"date": "Mon, 19 Jan 2026 11:48:08 GMT",
"timestamp": 1768823225,
"description": "Removed one multisig member.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) {\n +++ description: None\n values.$members.5:\n- \"eth:0x90E10C37d8d9e854e7775B0069728642A1F88610\"\n values.multisigThreshold:\n- \"4 of 8 (50%)\"\n+ \"4 of 7 (57%)\"\n }\n```"
}
]
},
{
"id": "5ebcb0e5",
"date": "Tue, 28 Oct 2025 09:11:22 GMT",
"timestamp": 1761642202,
"description": "v29 upgrade.",
"isHighSeverity": true,
"changeCount": 48,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (eth:0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.1:\n- \"0xbc2380479529743c27e6ab96cdf08210319fadcbca0856cf50c6b1b54bf8437f\"\n+ \"0xc7513302e4e09efc907df5e645d9f8037b1d02409f9a9089f61061c8951ef1ff\"\n values.$implementation.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.$implementation.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.$implementation.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.$implementation.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.$pastUpgrades.7:\n+ [\"2025-10-28T00:52:35.000Z\",\"0x1dd8584ad0e2a106271e682fbec33c6066933fbf4c243f46eba13707e1ed729f\",[\"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\",\"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\",\"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\",\"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"]]\n values.$upgradeCount:\n- 7\n+ 8\n values.facetAddresses.0:\n- \"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n+ \"eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253\"\n values.facetAddresses.1:\n- \"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n+ \"eth:0x1666124221622eb6154306Ea9BA87043e8be88B2\"\n values.facetAddresses.2:\n- \"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n+ \"eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45\"\n values.facetAddresses.3:\n- \"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n+ \"eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691\"\n values.facets.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"getRollupDAManager()\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2MessageInclusionShared(uint256,uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusionShared(uint256,uint256,uint256,bytes32,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"proveL2LogInclusionShared(uint256,uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\"]\n values.facets.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ [\"precommitSharedBridge(address,uint256,bytes)\",\"commitBatchesSharedBridge(address,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(address,uint256,uint256,bytes)\",\"revertBatchesSharedBridge(address,uint256)\",\"proveBatchesSharedBridge(address,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n+ \"0x01000911c4db4fe62c98e180cfa7e9b3a22fb15f505905d4bf36192f481551e6\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n+ \"0x010005f73e7c299ed73db937843643bdc276cbc2cc8596287e1e0cf3afc60252\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+ \"0x01000d8bae37b82f311186426184866498b357f41d7a02ced11f3e3fbfbacd63\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084289\n+ 124554051586\n values.getSemverProtocolVersion.1:\n- 28\n+ 29\n values.getSemverProtocolVersion.2:\n- 1\n+ 2\n values.getVerifier:\n- \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n+ \"eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3\"\n values.validators.0:\n- \"eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E\"\n values.validators.1:\n- \"eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n+ \"eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776\"\n values.getRollupDAManager:\n+ \"eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45\"\n implementationNames.eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n- \"AdminFacet\"\n implementationNames.eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n- \"GettersFacet\"\n implementationNames.eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n- \"MailboxFacet\"\n implementationNames.eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n- \"ExecutorFacet\"\n implementationNames.eth:0x37CefD5b44c131FEf27e9Bc542e5B77A177A7253:\n+ \"AdminFacet\"\n implementationNames.eth:0x1666124221622eb6154306Ea9BA87043e8be88B2:\n+ \"GettersFacet\"\n implementationNames.eth:0x1e34aB39a9682149165ddeCc0583d238A5448B45:\n+ \"MailboxFacet\"\n implementationNames.eth:0x0597CaA8A823A699d7CD9E62B5E5d4153FF82691:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n- Status: DELETED\n contract ValidatorTimelock (eth:0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```\n\n```diff\n contract SophonZkEvmAdmin (eth:0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: A governance proxy that lets eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1 act through it.\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.5:\n+ {\"_protocolVersion\":124554051586,\"_upgradeTimestamp\":1761224400}\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (eth:0x4d335C5C08FEc91a39965351AbB6E315ad2e9ff3)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c or eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (eth:0xD324a7c8556A059371B207fB96FD77bE24E2042c)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (eth:0xe201837d151E5aC33Af3305f287Ad6F6a7Dfccd7)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n reference RollupDAManager (eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45)\n +++ description: None\n```"
}
]
},
{
"id": "587e74af",
"date": "Wed, 03 Sep 2025 07:56:33 GMT",
"timestamp": 1756886128,
"description": "Added new multisig member.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonChainAdminMultisig (eth:0xe4644b6d106A18062344c0A853666bc0B8f052d1) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x11BB5F79750de2Cc71e80cB2C59cF0a60EFFa95d\"\n values.multisigThreshold:\n- \"4 of 7 (57%)\"\n+ \"4 of 8 (50%)\"\n }\n```"
}
]
},
{
"id": "cac5e587",
"date": "Thu, 14 Aug 2025 09:00:38 GMT",
"timestamp": 1755162034,
"description": "Standard zkstack v28.1 upgrade.",
"isHighSeverity": true,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$pastUpgrades.6:\n+ [\"2025-08-12T17:04:59.000Z\",\"0x97141968736d3d95e4cbf3c10293b7bd56f43ad6d4e3bed854e0025ed2d2d7e4\",[\"eth:0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"eth:0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"eth:0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"eth:0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 6\n+ 7\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 120259084288\n+ 120259084289\n values.getSemverProtocolVersion.2:\n- 0\n+ 1\n values.getVerifier:\n- \"eth:0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n+ \"eth:0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.4:\n+ {\"_protocolVersion\":120259084289,\"_upgradeTimestamp\":1754911800}\n }\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0xD71DDC9956781bf07DbFb9fCa891f971dbE9868A)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0x1AC4F629Fdc77A7700B68d03bF8D1A53f2210911 or eth:0x2db2ffdecb7446aaab01FAc3f4D55863db3C5bd6 depending on the supplied proof type.\n```"
}
]
},
{
"id": "f15edb84",
"date": "Mon, 14 Jul 2025 12:47:17 GMT",
"timestamp": 1752497237,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 11,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3)\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to eth:0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or eth:0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock2 (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract AvailL1DAValidator (0x8f50d93B9955B285f787043B30B5F51D09bE0120)\n +++ description: Contract that verifies that the validiums data was made available on Avail by querying the eth:0x054fd961708D8E2B9c10a63F6157c74458889F0a on Ethereum for a merkle proof of inclusion.\n```\n\n```diff\n+ Status: CREATED\n contract SophonTransactionFilterer (0x9D06B34adc3026eF876e4DABb859C424DbDA3063)\n +++ description: A contract implementing the ITransactionFilterer interface, able to whitelist transactions based on sender- OR contractL2 (target) addresses. The whitelist is defined in AccessControl roles.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SophonChainAdminMultisig (0xe4644b6d106A18062344c0A853666bc0B8f052d1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987)\n +++ description: None\n```"
}
]
},
{
"id": "16152161",
"date": "Mon, 07 Jul 2025 07:04:45 GMT",
"timestamp": 1751871885,
"description": "standard zk stack v28 upgrade.",
"isHighSeverity": true,
"changeCount": 39,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.$implementation.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.$implementation.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.$implementation.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.$implementation.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.$pastUpgrades.5:\n+ [\"2025-07-01T18:54:59.000Z\",\"0x3fb1153770857ac1714eb72d2cc7a76ebf1160bb8e844e8aa08164c72a25d419\",[\"0x431449e2a28A69122860A4956A3f7191eE15aFBC\",\"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\",\"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\",\"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"]]\n values.$upgradeCount:\n- 5\n+ 6\n values.facetAddresses.0:\n- \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n+ \"0x431449e2a28A69122860A4956A3f7191eE15aFBC\"\n values.facetAddresses.1:\n- \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n+ \"0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22\"\n values.facetAddresses.2:\n- \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n+ \"0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec\"\n values.facetAddresses.3:\n- \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n+ \"0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A\"\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n+ \"0x0100085f9382a7928dd83bfc529121827b5f29f18b9aa10d18aa68e1be7ddc35\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+ \"0x010005f72e443c94460f4583fb38ef5d0c5cd9897021c41df840f91465c0392e\"\n values.getL2EvmEmulatorBytecodeHash:\n- \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n+ \"0x01000d83e0329d9144ad041430fafcbc2b388e5434db8cb8a96e80157738a1da\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 115964116992\n+ 120259084288\n values.getSemverProtocolVersion.1:\n- 27\n+ 28\n values.getVerifier:\n- \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n+ \"0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n- \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n- \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n- \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n- \"ExecutorFacet\"\n implementationNames.0x431449e2a28A69122860A4956A3f7191eE15aFBC:\n+ \"AdminFacet\"\n implementationNames.0xae5cbB5f70e134668a13d7C8EcEF5e9E6FffCF22:\n+ \"GettersFacet\"\n implementationNames.0x365D0ae3ECA13004daf2A4ba1501c01AaEbb4fec:\n+ \"MailboxFacet\"\n implementationNames.0x2f116b9033d88Bb3Cf64C371AE5458fbA22BA39A:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n- Status: DELETED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.3:\n+ {\"_protocolVersion\":120259084288,\"_upgradeTimestamp\":1750942800}\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x53F5DE9De3B2DA90633a2c74BEb3b9912cdd1579)\n +++ description: A router contract for verifiers. Routes verification requests to 0xD5dBE903F5382B052317D326FA1a7B63710C6a5b or 0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1 depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0x5BAfEF6729228add8775aF4Cecd2E68a51424Ee1)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0xD5dBE903F5382B052317D326FA1a7B63710C6a5b)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```"
}
]
},
{
"id": "86c7361d",
"date": "Fri, 30 May 2025 04:34:03 GMT",
"timestamp": 1748579643,
"description": "2 valis removed.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n EOA (0x4cc87B0A504047967CeD9A955431B3229237e7de) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\",\"role\":\".validatorsVTL\"}\n }\n```\n\n```diff\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564) {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.validatorsVTL.3:\n- \"0xf3b07F6744e06cd5074b7D15ed2c33760837CE1f\"\n values.validatorsVTL.2:\n- \"0x4cc87B0A504047967CeD9A955431B3229237e7de\"\n }\n```\n\n```diff\n EOA (0xf3b07F6744e06cd5074b7D15ed2c33760837CE1f) {\n +++ description: None\n receivedPermissions.1:\n- {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\",\"role\":\".validatorsVTL\"}\n }\n```"
}
]
},
{
"id": "a1cd6b48",
"date": "Mon, 26 May 2025 15:40:26 GMT",
"timestamp": 1748274026,
"description": "two new validators registered.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564) {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.validatorsVTL.3:\n+ \"0xf3b07F6744e06cd5074b7D15ed2c33760837CE1f\"\n values.validatorsVTL.2:\n+ \"0x4cc87B0A504047967CeD9A955431B3229237e7de\"\n values.validatorsVTL.1:\n- \"0xf3b07F6744e06cd5074b7D15ed2c33760837CE1f\"\n+ \"0xCD0b5A01Abe9C14f6EFbC610C02ECf0FB69855dA\"\n values.validatorsVTL.0:\n- \"0x4cc87B0A504047967CeD9A955431B3229237e7de\"\n+ \"0x78325837C780788Ce6afF7883FdF68890010Fe30\"\n }\n```"
}
]
},
{
"id": "771fa297",
"date": "Mon, 19 May 2025 15:29:22 GMT",
"timestamp": 1747668562,
"description": "Whitelisted USDC bridge contract on L2.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonTransactionFilterer (0x9D06B34adc3026eF876e4DABb859C424DbDA3063) {\n +++ description: A contract implementing the ITransactionFilterer interface, able to whitelist transactions based on sender- OR contractL2 (target) addresses. The whitelist is defined in AccessControl roles.\n values.accessControl.WHITELISTED_ROLE.members.1:\n+ \"0x0F44bac3ec514BE912aa4359017593B35E868d74\"\n+++ description: Addresses with this role are on the whitelist as contract targets for requestL2Transaction() calls. The L2AssetRouter is whitelisted here so that users can bridge assets.\n values.whitelistedContractsAC.1:\n+ \"0x0F44bac3ec514BE912aa4359017593B35E868d74\"\n }\n```"
}
]
},
{
"id": "e6ae3907",
"date": "Wed, 14 May 2025 13:53:00 GMT",
"timestamp": 1747230780,
"description": "v27 upgrade to standard contracts/verifiers.\n\nadd txfilterer (functions like a whitelist, blocks per default).",
"isHighSeverity": true,
"changeCount": 50,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.4:\n- \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n+ \"0xb3038139dce45f6c1aaedbfb1b321c230301b2d004da109b39a17d827c6b0e4f\"\n sourceHashes.3:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x1f9f7cd43747f5bcf879d544be0baca967245540e70592112cdc90c360f30486\"\n sourceHashes.2:\n- \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.1:\n- \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n+ \"0xab7812fa82c483b781aee4c2339b860fcdee4033de1e243370a77a20fc353ddc\"\n sourceHashes.0:\n- \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n+ \"0xca793d2e01bb37722ba48f56662e8602e693d6808ed9587867c2bac43c3dec25\"\n values.$implementation.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.$implementation.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.$implementation.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.$implementation.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.$pastUpgrades.4:\n+ [\"2025-05-12T22:07:23.000Z\",\"0x0366efdb1fc5b705d59c1e88cdc9e9118eea686227b8062627b8bf65be4b6a56\",[\"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\",\"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\",\"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\",\"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.facetAddresses.3:\n- \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n+ \"0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f\"\n values.facetAddresses.2:\n- \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n+ \"0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4\"\n values.facetAddresses.1:\n- \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n+ \"0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4\"\n values.facetAddresses.0:\n- \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n+ \"0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490\"\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.facets.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"allowEvmEmulation()\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2EvmEmulatorBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"requestL2ServiceTransaction(address,bytes)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n+ \"0x0100087fe7df1cf5616646f85bd5eebc8efe5d8deac4d85bea9b9aefd88803dd\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+ \"0x0100050bf9baf9d08e5d3c037f8d8b486076de7e6dceb3f3fc0989ea2c99cd67\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 111669149696\n+ 115964116992\n values.getSemverProtocolVersion.0:\n- 26\n+ 27\n+++ description: This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\n+++ severity: HIGH\n values.getTransactionFilterer:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x9D06B34adc3026eF876e4DABb859C424DbDA3063\"\n values.getVerifier:\n- \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n+ \"0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0\"\n values.getL2EvmEmulatorBytecodeHash:\n+ \"0x01000bbb8116fe7bdf690c19740ea350375426cec23f4f1f69a12fdc58adc9ba\"\n implementationNames.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n- \"AdminFacet\"\n implementationNames.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n- \"GettersFacet\"\n implementationNames.0x36b026c39125964D99596CE302866B5A59E4dE27:\n- \"MailboxFacet\"\n implementationNames.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n- \"ExecutorFacet\"\n implementationNames.0xF2C9D38D16c7A7Dc9aA4F743Fce024354d9c19B4:\n+ \"AdminFacet\"\n implementationNames.0x05DeB01AaDB6C98F8B78a1F9A81ccd68Ac4d70d4:\n+ \"GettersFacet\"\n implementationNames.0x26b9a55DaBab9A8e74815A9D6Cd7F74AC0d7215f:\n+ \"MailboxFacet\"\n implementationNames.0x0A7C1b8D56BE02d9731e3A764107602f8F6dd490:\n+ \"ExecutorFacet\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.2:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1738591200}\n values.upgradeTimestamps.1._protocolVersion:\n- 107374182400\n+ 115964116992\n values.upgradeTimestamps.1._upgradeTimestamp:\n- 1738591200\n+ 1747029600\n }\n```\n\n```diff\n contract SophonChainAdminMultisig (0xe4644b6d106A18062344c0A853666bc0B8f052d1) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"interact\",\"from\":\"0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3\",\"description\":\"manage fees, apply predefined upgrades, manage censorship through a TransactionFilterer, set DA mode, migrate the chain to whitelisted settlement layers (Chain Admin role).\",\"via\":[{\"address\":\"0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3\"}]}\n receivedPermissions.0.from:\n- \"0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3\"\n+ \"0x9D06B34adc3026eF876e4DABb859C424DbDA3063\"\n receivedPermissions.0.description:\n- \"manage fees, apply predefined upgrades, manage censorship through a TransactionFilterer, set DA mode, migrate the chain to whitelisted settlement layers (Chain Admin role).\"\n+ \"manage the whitelist.\"\n receivedPermissions.0.via:\n- [{\"address\":\"0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3\"}]\n }\n```\n\n```diff\n+ Status: CREATED\n contract DualVerifier (0x079004D9C534Ff1dC3414F5dB31B4a0a1F4fc9d0)\n +++ description: A router contract for verifiers. Routes verification requests to 0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF or 0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e depending on the supplied proof type.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierFflonk (0x1F517f2bAb178AdD6e282297a4728bcc50E9F6CF)\n +++ description: Verifies a zk-SNARK proof using an implementation of the fflonk proof system.\n```\n\n```diff\n+ Status: CREATED\n contract SophonTransactionFilterer (0x9D06B34adc3026eF876e4DABb859C424DbDA3063)\n +++ description: A contract implementing the ITransactionFilterer interface, able to whitelist transactions based on sender- OR contractL2 (target) addresses. The whitelist is defined in AccessControl roles.\n```\n\n```diff\n+ Status: CREATED\n contract L1VerifierPlonk (0xAd36FFc4066855aeF3Bdf6BF03cA427bb084636e)\n +++ description: Verifies a zk-SNARK proof using an implementation of the PlonK proof system.\n```"
}
]
},
{
"id": "c56e03b2",
"date": "Thu, 24 Apr 2025 05:13:04 GMT",
"timestamp": 1745471584,
"description": "L1DAValidator update to a contract that integrates with Vector (SP1) Avail DA bridge.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n+++ severity: HIGH\n values.getDAValidatorPair.1:\n- \"0xFa30EAe30351A83809657299F6Cad9557c232e8C\"\n+ \"0x8f50d93B9955B285f787043B30B5F51D09bE0120\"\n+++ severity: HIGH\n values.getDAValidatorPair.0:\n- \"0x907b30407249949521Bf0c89A43558dae200146A\"\n+ \"0xf39dE5c61b276391b913cAFB057DC8B9de5d58dA\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ description: Contract that 'verifies' the data availability for validiums. This implementation only checks the correct formatting and does not serve as a DA oracle. Can be used by ZK stack validiums as the L1 part of a DAValidator pair.\n```\n\n```diff\n contract SophonChainAdminMultisig (0xe4644b6d106A18062344c0A853666bc0B8f052d1) {\n +++ description: None\n values.$members.6:\n+ \"0x14574dfC6B7aF658c5033BA95673864947956521\"\n values.$members.5:\n- \"0x14574dfC6B7aF658c5033BA95673864947956521\"\n+ \"0xd89b0f620E0C72BD82e0447dE07FB0A0Abe01F69\"\n values.$members.4:\n- \"0xd89b0f620E0C72BD82e0447dE07FB0A0Abe01F69\"\n+ \"0x3b6036d410cA018661324766680674921a8b2d89\"\n values.$members.3:\n- \"0x3b6036d410cA018661324766680674921a8b2d89\"\n+ \"0x20719Abd2E63518e68D30a295388cAd6B542dCEf\"\n values.$members.2:\n- \"0x20719Abd2E63518e68D30a295388cAd6B542dCEf\"\n+ \"0x7f413262Cb811B034d077d9184b5Efda6943f2c3\"\n values.$members.1:\n- \"0x7f413262Cb811B034d077d9184b5Efda6943f2c3\"\n+ \"0x90E10C37d8d9e854e7775B0069728642A1F88610\"\n values.$members.0:\n- \"0x90E10C37d8d9e854e7775B0069728642A1F88610\"\n+ \"0x0BA5557075B4E30bA409B01797c9c78b3Ce192bF\"\n values.$threshold:\n- 3\n+ 4\n values.multisigThreshold:\n- \"3 of 6 (50%)\"\n+ \"4 of 7 (57%)\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract AvailL1DAValidator (0x8f50d93B9955B285f787043B30B5F51D09bE0120)\n +++ description: Contract that verifies that the validiums data was made available on Avail by querying the 0x054fd961708D8E2B9c10a63F6157c74458889F0a on Ethereum for a merkle proof of inclusion.\n```"
}
]
},
{
"id": "0b487d66",
"date": "Wed, 02 Apr 2025 15:08:27 GMT",
"timestamp": 1743606507,
"description": "shared zk stack contracts upgraded to v26: config related changes for all children chains.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ValidiumL1DAValidator (0x907b30407249949521Bf0c89A43558dae200146A)\n +++ description: Contract that 'verifies' the data availability for validiums. This implementation only checks the correct formatting and does not serve as a DA oracle. Can be used by ZK stack validiums as the L1 part of a DAValidator pair.\n```"
}
]
},
{
"id": "7af923c5",
"date": "Fri, 28 Mar 2025 10:47:08 GMT",
"timestamp": 1743158828,
"description": "v26 upgrade.",
"isHighSeverity": true,
"changeCount": 58,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n template:\n- \"shared-zk-stack/Diamond\"\n+ \"shared-zk-stack/Diamond_v26\"\n sourceHashes.4:\n- \"0xdf47c6cd4fcffcfa4a670e1544e2391acc365cd7fd9b8e7583d58b28dff50c40\"\n+ \"0xf3a1cb3dd9315b2dfa9e9aca6d6b09e987a1eb463588f115e2eb142eaa2a4ac6\"\n sourceHashes.3:\n- \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n+ \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n sourceHashes.2:\n- \"0xcd2dee9d49d75aa37138514c1f32d29c60222002963e0c0a7e1a815dff00444f\"\n+ \"0x28719e86c8042765405cbb88205d1fb130f39f3bb0923afe7fef6dd5ef798c31\"\n sourceHashes.1:\n- \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n+ \"0x396f0e8e4bc223f186f87b7eabf2f4b537ce84f8515aa16c86400c4f10af79b1\"\n sourceHashes.0:\n- \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n+ \"0x8337740067b4f9278182a83ca83d62ca2611966b8beca6e0a49394204c8f74da\"\n description:\n- \"The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\"\n+ \"The main contract defining the Layer 2. Operator actions like commiting blocks, providing ZK proofs and executing batches ultimately target this contract which then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\"\n issuedPermissions.2:\n+ {\"permission\":\"interact\",\"to\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\",\"description\":\"commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock.\",\"via\":[]}\n values.$implementation.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.$implementation.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.$implementation.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.$implementation.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.$pastUpgrades.3:\n+ [\"2025-03-27T17:07:47.000Z\",\"0x92c1aabdc2a908d40bee5207ba851be0a7f91747e4d86f4aa23201d5605d7f75\",[\"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\",\"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\",\"0x36b026c39125964D99596CE302866B5A59E4dE27\",\"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.daMode:\n- 1\n values.facetAddresses.3:\n- \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n+ \"0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800\"\n values.facetAddresses.2:\n- \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n+ \"0x36b026c39125964D99596CE302866B5A59E4dE27\"\n values.facetAddresses.1:\n- \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n+ \"0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1\"\n values.facetAddresses.0:\n- \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n+ \"0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb\"\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0xEaedCF01c0B01C1a10b74cB0A2cDeF78a9540cdb:\n+ [\"acceptAdmin()\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\",\"setPorterAvailability(bool)\",\"setTransactionFilterer(address)\",\"setTokenMultiplier(uint128,uint128)\",\"freezeDiamond()\",\"genesisUpgrade(address,address,bytes,bytes[])\",\"forwardedBridgeMint(bytes,bool)\",\"prepareChainCommitment()\",\"setValidator(address,bool)\",\"setPendingAdmin(address)\",\"setDAValidatorPair(address,address)\",\"forwardedBridgeBurn(address,address,bytes)\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"makePermanentRollup()\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"forwardedBridgeRecoverFailedTransfer(uint256,bytes32,address,bytes)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\"]\n values.facets.0x95C45F931946C97D10D9d6e859Fe8D62785ed3C1:\n+ [\"getPubdataPricingMode()\",\"getPriorityTxMaxGasLimit()\",\"getTotalBlocksCommitted()\",\"getVerifierParams()\",\"baseTokenGasPriceMultiplierDenominator()\",\"getTransactionFilterer()\",\"isDiamondStorageFrozen()\",\"getProtocolVersion()\",\"getChainId()\",\"getBridgehub()\",\"getTotalBlocksExecuted()\",\"getPriorityTreeRoot()\",\"getVerifier()\",\"facetAddresses()\",\"getDAValidatorPair()\",\"getPriorityQueueSize()\",\"getSettlementLayer()\",\"getAdmin()\",\"storedBlockHash(uint256)\",\"getFirstUnprocessedPriorityTx()\",\"facets()\",\"getL2SystemContractsUpgradeTxHash()\",\"isPriorityQueueActive()\",\"getChainTypeManager()\",\"getBaseTokenAssetId()\",\"getBaseToken()\",\"l2LogsRootHash(uint256)\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getTotalPriorityTxs()\",\"facetFunctionSelectors(address)\",\"getTotalBlocksVerified()\",\"storedBatchHash(uint256)\",\"getTotalBatchesExecuted()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"facetAddress(bytes4)\",\"getPendingAdmin()\",\"getL2BootloaderBytecodeHash()\",\"getTotalBatchesCommitted()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"isFunctionFreezable(bytes4)\",\"baseTokenGasPriceMultiplierNominator()\",\"getTotalBatchesVerified()\",\"getPriorityTreeStartIndex()\",\"getSemverProtocolVersion()\",\"isValidator(address)\",\"getL2DefaultAccountBytecodeHash()\"]\n values.facets.0x36b026c39125964D99596CE302866B5A59E4dE27:\n+ [\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"proveL2LeafInclusion(uint256,uint256,bytes32,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"requestL2TransactionToGatewayMailbox(uint256,bytes32,uint64)\",\"bridgehubRequestL2TransactionOnGateway(bytes32,uint64)\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\"]\n values.facets.0x53d0b421BB3e522632ABEB06BB2c4eB15eaD9800:\n+ [\"revertBatchesSharedBridge(uint256,uint256)\",\"proveBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"commitBatchesSharedBridge(uint256,uint256,uint256,bytes)\",\"executeBatchesSharedBridge(uint256,uint256,uint256,bytes)\"]\n values.getBaseTokenBridge:\n- \"0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB\"\n values.getL2BootloaderBytecodeHash:\n- \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n+ \"0x0100088580465d88420e6369230ee94a32ff356dbcdd407a4be49fc8009b2a81\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n+ \"0x010004dbf8be36c421254d005352f8245146906919be0099e8a50d0e78df85e0\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: HIGH\n values.getProtocolVersion:\n- 107374182400\n+ 111669149696\n values.getSemverProtocolVersion.0:\n- 25\n+ 26\n values.getStateTransitionManager:\n- \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n values.getVerifier:\n- \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n+ \"0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5\"\n values.txFilterer:\n- []\n values.validators.1:\n+ \"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"\n values.getBaseTokenAssetId:\n+ \"0xd8d7af170b8818511cb9a930d5f5e7f71d799a65974b0cb4f9d31e32095e336c\"\n values.getChainId:\n+ 50104\n values.getChainTypeManager:\n+ \"0xc2eE6b6af7d616f6e27ce7F4A451Aedc2b0F5f5C\"\n+++ severity: HIGH\n values.getDAValidatorPair:\n+ [\"0x907b30407249949521Bf0c89A43558dae200146A\",\"0xFa30EAe30351A83809657299F6Cad9557c232e8C\"]\n values.getSettlementLayer:\n+ \"0x0000000000000000000000000000000000000000\"\n+++ description: This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\n+++ severity: HIGH\n values.getTransactionFilterer:\n+ \"0x0000000000000000000000000000000000000000\"\n values.isPriorityQueueActive:\n+ false\n fieldMeta.txFilterer:\n- {\"severity\":\"HIGH\",\"description\":\"This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\"}\n fieldMeta.getProtocolVersion.severity:\n- \"MEDIUM\"\n+ \"HIGH\"\n fieldMeta.getAdmin:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getTransactionFilterer:\n+ {\"severity\":\"HIGH\",\"description\":\"This contract must expose the ITransactionFilterer interface (see Mailbox facet) and is used for censoring transactions pushed from L1 to L2.\"}\n fieldMeta.getDAValidatorPair:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getPendingAdmin:\n+ {\"severity\":\"HIGH\"}\n fieldMeta.getPubdataPricingMode:\n+ {\"severity\":\"HIGH\",\"description\":\"0 - Rollup, 1 - Validium\"}\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract undefined (0x4cc87B0A504047967CeD9A955431B3229237e7de) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.1:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1738591200}\n values.upgradeTimestamps.0._protocolVersion:\n- 107374182400\n+ 111669149696\n values.upgradeTimestamps.0._upgradeTimestamp:\n- 1738591200\n+ 1742454000\n }\n```\n\n```diff\n contract undefined (0xf3b07F6744e06cd5074b7D15ed2c33760837CE1f) {\n +++ description: None\n receivedPermissions.1:\n+ {\"permission\":\"validateZkStack\",\"from\":\"0x8c0Bfc04AdA21fd496c55B8C50331f904306F564\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x8c0Bfc04AdA21fd496c55B8C50331f904306F564)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0xdb3300726556AFA413A11aF474a8cFDa4D7fc5a5)\n +++ description: Implements the ZK proof verification logic.\n```"
}
]
},
{
"id": "f998353c",
"date": "Tue, 11 Mar 2025 08:00:21 GMT",
"timestamp": 1741680021,
"description": "ValidatorTimelock governance transfer for ZIP 5.",
"isHighSeverity": false,
"changeCount": 12,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract undefined (0x3701fB675bCd4A85eb11A2467628BBe193F6e6A8)\n +++ description: None\n```\n\n```diff\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E) {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n values.owner:\n- \"0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897\"\n+ \"0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3\"\n }\n```\n\n```diff\n- Status: DELETED\n contract ProtocolUpgradeHandler (0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897)\n +++ description: The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2, emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n```\n\n```diff\n- Status: DELETED\n contract SecurityCouncil (0xBDFfCC71FE84020238F2990a6D2954e87355De0D)\n +++ description: Custom Multisig implementation that has a general threshold of 9 but also specific thresholds for upgrade approvals (6) or soft freezes (3).\n```\n\n```diff\n- Status: DELETED\n contract Guardians (0xD677e09324F8Bb3cC64F009973693f751c33A888)\n +++ description: Custom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n```\n\n```diff\n- Status: DELETED\n contract EmergencyUpgradeBoard (0xdEFd1eDEE3E8c5965216bd59C866f7f5307C9b29)\n +++ description: A custom contract allowing a 3/3 of 0xBDFfCC71FE84020238F2990a6D2954e87355De0D, 0xbC1653bd3829dfEc575AfC3816D4899cd103B51c and 0xD677e09324F8Bb3cC64F009973693f751c33A888 to `executeEmergencyUpgrade()` via the 0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897.\n```\n\n```diff\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987) {\n +++ description: None\n values.owner:\n- \"0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897\"\n+ \"0xE30Dca3047B37dc7d88849dE4A4Dc07937ad5Ab3\"\n }\n```"
},
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract undefined (0x3701fB675bCd4A85eb11A2467628BBe193F6e6A8)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract ProtocolUpgradeHandler (0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897)\n +++ description: The central upgrade contract and Governance proxy for all ZK stack contracts. Accepts successful DAO proposals from L2, emergency proposals from the EmergencyUpgradeBoard. The three members of the EmergencyUpgradeBoard also have special roles and permissions in this contract.\n```\n\n```diff\n+ Status: CREATED\n contract SecurityCouncil (0xBDFfCC71FE84020238F2990a6D2954e87355De0D)\n +++ description: Custom Multisig implementation that has a general threshold of 9 but also specific thresholds for upgrade approvals (6) or soft freezes (3).\n```\n\n```diff\n+ Status: CREATED\n contract Guardians (0xD677e09324F8Bb3cC64F009973693f751c33A888)\n +++ description: Custom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n```\n\n```diff\n+ Status: CREATED\n contract EmergencyUpgradeBoard (0xdEFd1eDEE3E8c5965216bd59C866f7f5307C9b29)\n +++ description: A custom contract allowing a 3/3 of 0xBDFfCC71FE84020238F2990a6D2954e87355De0D, 0xbC1653bd3829dfEc575AfC3816D4899cd103B51c and 0xD677e09324F8Bb3cC64F009973693f751c33A888 to `executeEmergencyUpgrade()` via the 0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897.\n```"
}
]
},
{
"id": "728d4222",
"date": "Thu, 06 Feb 2025 09:23:34 GMT",
"timestamp": 1738833814,
"description": "Upgrade successful.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n values.getL2SystemContractsUpgradeBatchNumber:\n- 13780\n+ 0\n values.getL2SystemContractsUpgradeBlockNumber:\n- 13780\n+ 0\n values.getL2SystemContractsUpgradeTxHash:\n- \"0xd3086b71c95ce83e7f3d30ab1890ada2334695a05b65715e56f42d96b22c8674\"\n+ \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "101a64ca",
"date": "Wed, 05 Feb 2025 06:33:01 GMT",
"timestamp": 1738737181,
"description": "Upgrade to Protocol version 25.",
"isHighSeverity": false,
"changeCount": 34,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3) {\n +++ description: The main contract defining the Layer 2. The operator commits blocks and provides a ZK proof which is validated by the Verifier contract and then processes transactions. During batch execution it processes L1 --> L2 and L2 --> L1 transactions.\n sourceHashes.4:\n- \"0xe521f6bd6250a2c92af323768ad8a2274cc334725b5ed8960d8421f063fc3285\"\n+ \"0xdf47c6cd4fcffcfa4a670e1544e2391acc365cd7fd9b8e7583d58b28dff50c40\"\n sourceHashes.3:\n- \"0x419cee160f60572fc9189007ec7c1e3c13e54d80bf1e78f837bc8fa001519685\"\n+ \"0x91db58e4059dfed7357e56dac17d2963c6f9cfb540f527988ed25172251a2584\"\n sourceHashes.2:\n- \"0xd272def5b4e3f0a68e3019d7d40675ca6d3e3fc35500e9aafe864bce8c697de2\"\n+ \"0x981d4f2ae5949ab33c6ba83f6446595d3b853bf6f7157884304445d70b185374\"\n sourceHashes.1:\n- \"0x9ae32beaa5dc29055f75d3cd08fbec35ed3eee3e2ff35de263a78f7d63c610f9\"\n+ \"0x081a1805983e86cd6a80ed48c012c26bf9a39473c0f1e69b357afff240f027a0\"\n values.$implementation.3:\n- \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n+ \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n values.$implementation.2:\n- \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n+ \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n values.$implementation.1:\n- \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n+ \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n values.$implementation.0:\n- \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n+ \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n values.$pastUpgrades.2:\n+ [\"2025-02-04T19:22:23.000Z\",\"0x82657fe86f99698eae75f1e2104fa211e67b641b7e58450aa8ceabf962798b16\",[\"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\",\"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\",\"0x5575218cECd370E1d630d1AdB03c254B0B376821\",\"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"]]\n values.$upgradeCount:\n- 2\n+ 3\n values.facetAddresses.3:\n- \"0xaD193aDe635576d8e9f7ada71Af2137b16c64075\"\n+ \"0xBB13642F795014E0EAC2b0d52ECD5162ECb66712\"\n values.facetAddresses.2:\n- \"0xCDB6228b616EEf8Df47D69A372C4f725C43e718C\"\n+ \"0x5575218cECd370E1d630d1AdB03c254B0B376821\"\n values.facetAddresses.1:\n- \"0xE60E94fCCb18a81D501a38959E532C0A85A1be89\"\n+ \"0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9\"\n values.facetAddresses.0:\n- \"0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a\"\n+ \"0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a\"\n values.facets.0xF6F26b416CE7AE5e5FE224Be332C7aE4e1f3450a:\n- [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0xE60E94fCCb18a81D501a38959E532C0A85A1be89:\n- [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0xCDB6228b616EEf8Df47D69A372C4f725C43e718C:\n- [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xaD193aDe635576d8e9f7ada71Af2137b16c64075:\n- [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.facets.0x90C0A0a63d7ff47BfAA1e9F8fa554dabc986504a:\n+ [\"acceptAdmin()\",\"changeFeeParams((uint8,uint32,uint32,uint32,uint32,uint64))\",\"executeUpgrade(((address,uint8,bool,bytes4[])[],address,bytes))\",\"freezeDiamond()\",\"setPendingAdmin(address)\",\"setPorterAvailability(bool)\",\"setPriorityTxMaxGasLimit(uint256)\",\"setPubdataPricingMode(uint8)\",\"setTokenMultiplier(uint128,uint128)\",\"setTransactionFilterer(address)\",\"setValidator(address,bool)\",\"unfreezeDiamond()\",\"upgradeChainFromVersion(uint256,((address,uint8,bool,bytes4[])[],address,bytes))\"]\n values.facets.0x81754d2E48e3e553ba6Dfd193FC72B3A0c6076d9:\n+ [\"baseTokenGasPriceMultiplierDenominator()\",\"baseTokenGasPriceMultiplierNominator()\",\"facetAddress(bytes4)\",\"facetAddresses()\",\"facetFunctionSelectors(address)\",\"facets()\",\"getAdmin()\",\"getBaseToken()\",\"getBaseTokenBridge()\",\"getBridgehub()\",\"getFirstUnprocessedPriorityTx()\",\"getL2BootloaderBytecodeHash()\",\"getL2DefaultAccountBytecodeHash()\",\"getL2SystemContractsUpgradeBatchNumber()\",\"getL2SystemContractsUpgradeBlockNumber()\",\"getL2SystemContractsUpgradeTxHash()\",\"getPendingAdmin()\",\"getPriorityQueueSize()\",\"getPriorityTxMaxGasLimit()\",\"getProtocolVersion()\",\"getPubdataPricingMode()\",\"getSemverProtocolVersion()\",\"getStateTransitionManager()\",\"getTotalBatchesCommitted()\",\"getTotalBatchesExecuted()\",\"getTotalBatchesVerified()\",\"getTotalBlocksCommitted()\",\"getTotalBlocksExecuted()\",\"getTotalBlocksVerified()\",\"getTotalPriorityTxs()\",\"getVerifier()\",\"getVerifierParams()\",\"isDiamondStorageFrozen()\",\"isEthWithdrawalFinalized(uint256,uint256)\",\"isFacetFreezable(address)\",\"isFunctionFreezable(bytes4)\",\"isValidator(address)\",\"l2LogsRootHash(uint256)\",\"priorityQueueFrontOperation()\",\"storedBatchHash(uint256)\",\"storedBlockHash(uint256)\"]\n values.facets.0x5575218cECd370E1d630d1AdB03c254B0B376821:\n+ [\"bridgehubRequestL2Transaction((address,address,uint256,uint256,bytes,uint256,uint256,bytes[],address))\",\"finalizeEthWithdrawal(uint256,uint256,uint16,bytes,bytes32[])\",\"l2TransactionBaseCost(uint256,uint256,uint256)\",\"proveL1ToL2TransactionStatus(bytes32,uint256,uint256,uint16,bytes32[],uint8)\",\"proveL2LogInclusion(uint256,uint256,(uint8,bool,uint16,address,bytes32,bytes32),bytes32[])\",\"proveL2MessageInclusion(uint256,uint256,(uint16,address,bytes),bytes32[])\",\"requestL2Transaction(address,uint256,bytes,uint256,uint256,bytes[],address)\",\"transferEthToSharedBridge()\"]\n values.facets.0xBB13642F795014E0EAC2b0d52ECD5162ECb66712:\n+ [\"commitBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"commitBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,uint64,uint64,bytes32,uint256,bytes32,bytes32,bytes32,bytes,bytes)[])\",\"executeBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"executeBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[])\",\"proveBatches((uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"proveBatchesSharedBridge(uint256,(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32),(uint64,bytes32,uint64,uint256,bytes32,bytes32,uint256,bytes32)[],(uint256[],uint256[]))\",\"revertBatches(uint256)\",\"revertBatchesSharedBridge(uint256,uint256)\"]\n values.getL2BootloaderBytecodeHash:\n- \"0x010008e742608b21bf7eb23c1a9d0602047e3618b464c9b59c0fba3b3d7ab66e\"\n+ \"0x010008c3be57ae5800e077b6c2056d9d75ad1a7b4f0ce583407961cc6fe0b678\"\n values.getL2DefaultAccountBytecodeHash:\n- \"0x01000563374c277a2c1e34659a2a1e87371bb6d852ce142022d497bfb50b9e32\"\n+ \"0x0100055dba11508480be023137563caec69debc85f826cb3a4b68246a7cabe30\"\n values.getL2SystemContractsUpgradeBatchNumber:\n- 0\n+ 13780\n values.getL2SystemContractsUpgradeBlockNumber:\n- 0\n+ 13780\n values.getL2SystemContractsUpgradeTxHash:\n- \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n+ \"0xd3086b71c95ce83e7f3d30ab1890ada2334695a05b65715e56f42d96b22c8674\"\n+++ description: Protocol version, increments with each protocol upgrade.\n+++ severity: MEDIUM\n values.getProtocolVersion:\n- 103079215106\n+ 107374182400\n values.getSemverProtocolVersion.2:\n- 2\n+ 0\n values.getSemverProtocolVersion.1:\n- 24\n+ 25\n values.getVerifier:\n- \"0x70F3FBf8a427155185Ec90BED8a3434203de9604\"\n+ \"0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66\"\n }\n```\n\n```diff\n- Status: DELETED\n contract Verifier (0x70F3FBf8a427155185Ec90BED8a3434203de9604)\n +++ description: Implements the ZK proof verification logic.\n```\n\n```diff\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3) {\n +++ description: None\n+++ description: Timestamps for new protocol version upgrades can be registered here (NOT enforced)\n values.upgradeTimestamps.0:\n+ {\"_protocolVersion\":107374182400,\"_upgradeTimestamp\":1738591200}\n }\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x06aa7a7B07108F7C5539645e32DD5c21cBF9EB66)\n +++ description: Implements the ZK proof verification logic.\n```"
}
]
},
{
"id": "2121984c",
"date": "Mon, 03 Feb 2025 14:33:48 GMT",
"timestamp": 1738593228,
"description": "[ZIP-002] 'Reduce the execution delay from 21 hours to 3 hours' executed.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E) {\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n description:\n- \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 21h.\"\n+ \"Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\"\n values.executionDelay:\n- 75600\n+ 10800\n values.executionDelay_fmt:\n- \"21h\"\n+ \"3h\"\n }\n```"
}
]
},
{
"id": "e590d65d",
"date": "Tue, 28 Jan 2025 06:34:20 GMT",
"timestamp": 1738046060,
"description": "discodrive!",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract ValidatorTimelock (0x5D8ba173Dc6C3c90C8f7C04C9288BeF5FDbAd06E)\n +++ description: Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 21h.\n```"
}
]
},
{
"id": "9391970a",
"date": "Mon, 27 Jan 2025 13:32:10 GMT",
"timestamp": 1737984730,
"description": "New usdc bridge admin transfer finalized.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987) {\n +++ description: None\n values.admin:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x4e4943346848c4867F81dFb37c4cA9C5715A7828\"\n values.pendingAdmin:\n- \"0x4e4943346848c4867F81dFb37c4cA9C5715A7828\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "c393a3d5",
"date": "Wed, 22 Jan 2025 12:22:26 GMT",
"timestamp": 1737548546,
"description": "L1USDCBridge to add a new owner.",
"isHighSeverity": true,
"changeCount": 9,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract GnosisSafe (0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD)\n +++ description: None\n```\n\n```diff\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987) {\n +++ description: None\n sourceHashes.1:\n- \"0x00a6e4c29d4f4c792c4f6c43b197f95b24d626a94e6faf8ee81bc9320d579d7e\"\n+ \"0xab9a40a5f27251ca4b4884dedef5a2b49a8928796a1fd0c6655f1623be961602\"\n issuedPermissions:\n- [{\"permission\":\"upgrade\",\"to\":\"0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD\",\"via\":[]}]\n values.$admin:\n- \"0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD\"\n+ \"0xC2a36181fB524a6bEfE639aFEd37A67e77d62cf1\"\n values.$implementation:\n- \"0x86dF12f51E3531689e0615bb2F739ddf01337715\"\n+ \"0x2ccD5486Ea1b2A52dcD387c01314F6A328f66cbB\"\n values.$pastUpgrades.1:\n+ [\"2025-01-21T18:29:59.000Z\",\"0x152dc623c52d7f2b058ec5b4dfb67f5e0fee14c04dc9c0db4ae02ed2dc4ab998\",[\"0x2ccD5486Ea1b2A52dcD387c01314F6A328f66cbB\"]]\n values.$upgradeCount:\n- 1\n+ 2\n values.owner:\n- \"0xe4644b6d106A18062344c0A853666bc0B8f052d1\"\n+ \"0x8f7a9912416e8AdC4D9c21FAe1415D3318A11897\"\n values.pendingAdmin:\n- \"0x0000000000000000000000000000000000000000\"\n+ \"0x4e4943346848c4867F81dFb37c4cA9C5715A7828\"\n }\n```"
}
]
},
{
"id": "f894d5ad",
"date": "Wed, 18 Dec 2024 13:08:26 GMT",
"timestamp": 1734527306,
"description": "USDC escrow admin changed to a new Multisig (SophonUSDCEscrowMultisig) and also gets a new owner (SophonChainAdminMultisig).",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n- Status: DELETED\n contract GnosisSafe (0x478a303CCe3c62CE52A8D66885b9D04F2733F3b6)\n +++ description: None\n```\n\n```diff\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987) {\n +++ description: None\n issuedPermissions.0.target:\n- \"0x478a303CCe3c62CE52A8D66885b9D04F2733F3b6\"\n+ \"0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD\"\n values.$admin:\n- \"0x478a303CCe3c62CE52A8D66885b9D04F2733F3b6\"\n+ \"0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD\"\n values.owner:\n- \"0x299174d47c243B5381c6062aBEFbfF915B601D85\"\n+ \"0xe4644b6d106A18062344c0A853666bc0B8f052d1\"\n values.pendingOwner:\n- \"0xe4644b6d106A18062344c0A853666bc0B8f052d1\"\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract SophonUSDCEscrowMultisig (0x3b181838Ae9DB831C17237FAbD7c10801Dd49fcD)\n +++ description: None\n```"
}
]
},
{
"id": "8c6f787b",
"date": "Tue, 17 Dec 2024 09:58:24 GMT",
"timestamp": 1734429504,
"description": "Initial discovery of a ZK stack Validium sharing the standard implementations and infra contracts. (Custom gastoken SOPH not on CG yet). External USDC ecrow.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "initial-discovery",
"body": "```diff\n+ Status: CREATED\n contract SophonZkEvm (0x05eDE6aD1f39B7A16C949d5C33a0658c9C7241e3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SophonUSDCEscrowMultisig (0x478a303CCe3c62CE52A8D66885b9D04F2733F3b6)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract Verifier (0x70F3FBf8a427155185Ec90BED8a3434203de9604)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SophonZkEvmAdmin (0xE1eeA4D6443b19D373Fe99De838b930Ef0ac2Ad3)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract SophonChainAdminMultisig (0xe4644b6d106A18062344c0A853666bc0B8f052d1)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract L1USDCBridge (0xf553E6D903AA43420ED7e3bc2313bE9286A8F987)\n +++ description: None\n```"
}
]
}
]
+35 -10
+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 * L1ERC20Bridge [via: ProtocolUpgradeHandler → ProxyAdmin]\n * MessageRoot [via: ProtocolUpgradeHandler → ProxyAdmin]\n * CTMDeploymentTracker [via: ProtocolUpgradeHandler → ProxyAdmin]\n * L1AssetRouter [via: ProtocolUpgradeHandler → ProxyAdmin]\n * L1NativeTokenVault [via: ProtocolUpgradeHandler → ProxyAdmin]\n * ChainTypeManager [via: ProtocolUpgradeHandler → ProxyAdmin]\n * L1Nullifier [via: ProtocolUpgradeHandler → ProxyAdmin]\n * ChainAssetHandler [via: ProtocolUpgradeHandler → ProxyAdmin]\n * ProtocolUpgradeHandler [via: ProtocolUpgradeHandler → ProxyAdmin]\n* Can interact with BridgeHub\n * set critical contract addresses for the shared cluster, register settlement layers, pause and unpause migrations and the bridge and manage zk chain registration [via: ProtocolUpgradeHandler]\n* Can interact with L1NativeTokenVault\n * pause / unpause the bridge [via: ProtocolUpgradeHandler]\n* Can interact with ChainTypeManager\n * manage the shared ValidatorTimelock contract address and the admin role, register and execute upgrades (and set their deadlines), freeze, revert batches and set permissioned validators and fee params for all connected chains [via: ProtocolUpgradeHandler]\n* Can interact with L1Nullifier\n * pause, unpause and set critical escrow address references [via: ProtocolUpgradeHandler]\n* Can interact with ChainAssetHandler\n * pause, resume chain migrations [via: ProtocolUpgradeHandler]\n* Can interact with RollupDAManager\n * manage allowed rollup DA pairs (allowed to be used by rollups in permanent rollup mode) [via: ProtocolUpgradeHandler]",
"discoveryDrivenData": true
},
{
"id": "Matter Labs Multisig",
"name": "Matter Labs Multisig",
"description": "A Multisig with 4/7 threshold. \n* Can upgrade **with no delay**\n * EraMultisigValidator [via: ProxyAdmin]\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 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: 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]\n* Can interact with EraMultisigValidator\n * change the members and threshold of the Validator Multisig and set the delay between batch commitment and execution ",
"accounts": [
{
"address": "eth:0x4e4943346848c4867F81dFb37c4cA9C5715A7828",
"type": "Contract",
"isVerified": true,
"name": "0x4e49…7828",
"url": "https://etherscan.io/address/0x4e4943346848c4867F81dFb37c4cA9C5715A7828"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xEE7d66B84175cc423900595d1807A0371D66dE46",
"type": "EOA",
"isVerified": true,
"name": "0xEE7d…dE46",
"url": "https://etherscan.io/address/0xEE7d66B84175cc423900595d1807A0371D66dE46"
},
{
"address": "eth:0x3F0009D00cc78979d00Eb635490F23E8d6aCc481",
"type": "EOA",
"isVerified": true,
"name": "0x3F00…c481",
"url": "https://etherscan.io/address/0x3F0009D00cc78979d00Eb635490F23E8d6aCc481"
},
{
"address": "eth:0xC9A814A4dFE108A4d2b0C01abb4c196Ed7FB3D83",
"type": "EOA",
"isVerified": true,
"name": "0xC9A8…3D83",
"url": "https://etherscan.io/address/0xC9A814A4dFE108A4d2b0C01abb4c196Ed7FB3D83"
},
{
"address": "eth:0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc",
"type": "EOA",
"isVerified": true,
"name": "0x3068…d2Bc",
"url": "https://etherscan.io/address/0x3068415e0F857A5eEd03302A1F7E44f67468d2Bc"
},
{
"address": "eth:0xFAdb20191Ab38362C50f52909817B74214CA79AE",
"type": "EOA",
"isVerified": true,
"name": "0xFAdb…79AE",
"url": "https://etherscan.io/address/0xFAdb20191Ab38362C50f52909817B74214CA79AE"
},
{
"address": "eth:0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28",
"type": "EOA",
"isVerified": true,
"name": "0xAf0B…9B28",
"url": "https://etherscan.io/address/0xAf0B2B58289857e9A6Cf91Fd30410dDcad9D9B28"
},
{
"address": "eth:0x7408A268e5E6e8F08917c5b71015F4B9044970C7",
"type": "EOA",
"isVerified": true,
"name": "0x7408…70C7",
"url": "https://etherscan.io/address/0x7408A268e5E6e8F08917c5b71015F4B9044970C7"
}
],
"discoveryDrivenData": true
},
{
"id": "SecurityCouncil",
"name": "SecurityCouncil",
"description": "A Multisig with 6/8 threshold. \nCustom Multisig implementation that has a general threshold of 6 but also specific thresholds for upgrade approvals (4) or soft freezes (3).\n* Can interact with ProtocolUpgradeHandler\n * soft freeze, hard freeze, approve a protocol upgrade \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0x59195219d1176E42f8e607e9AC114926D47f9035",
"type": "Contract",
"isVerified": true,
"name": "0x5919…9035",
"url": "https://etherscan.io/address/0x59195219d1176E42f8e607e9AC114926D47f9035"
}
],
"chain": "ethereum",
"references": [
{
"title": "Security Council members - ZK Nation docs",
"url": "https://docs.zknation.io/zksync-governance/schedule-3-zksync-security-council"
}
],
"participants": [
{
"address": "eth:0x34Ea62D4b9bBB8AD927eFB6ab31E3Ab3474aC93a",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x34Ea62D4b9bBB8AD927eFB6ab31E3Ab3474aC93a"
},
{
"address": "eth:0x35eA56fd9eAd2567F339Eb9564B6940b9DD5653F",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x35eA56fd9eAd2567F339Eb9564B6940b9DD5653F"
},
{
"address": "eth:0x69462a81ba94D64c404575f1899a464F123497A2",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x69462a81ba94D64c404575f1899a464F123497A2"
},
{
"address": "eth:0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x84BF0Ac41Eeb74373Ddddae8b7055Bf2bD3CE6E0"
},
{
"address": "eth:0x9B8Be3278B7F0168D82059eb6BAc5991DcdfA803",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x9B8Be3278B7F0168D82059eb6BAc5991DcdfA803"
},
{
"address": "eth:0xB7aC3A79A23B148c85fba259712c5A1e7ad0ca44",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xB7aC3A79A23B148c85fba259712c5A1e7ad0ca44"
},
{
"address": "eth:0xc3Abc9f9AA75Be8341E831482cdA0125a7B1A23e",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xc3Abc9f9AA75Be8341E831482cdA0125a7B1A23e"
},
{
"address": "eth:0xFB90Da9DC45378A1B50775Beb03aD10C7E8DC231",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xFB90Da9DC45378A1B50775Beb03aD10C7E8DC231"
}
],
"discoveryDrivenData": true
},
{
"id": "Guardians",
"name": "Guardians",
"description": "A Multisig with 5/8 threshold. \nCustom Multisig implementation that has a general threshold of 5 and a specific threshold for extending the legal voting period of 2.\n* Can interact with ProtocolUpgradeHandler\n * extend the legal veto period, approve a protocol upgrade \n* Can interact with EmergencyUpgradeBoard\n * one of its 3/3 signers ",
"accounts": [
{
"address": "eth:0x600dA620Ab29F41ABC6596a15981e14cE58c86b8",
"type": "Contract",
"isVerified": true,
"name": "0x600d…86b8",
"url": "https://etherscan.io/address/0x600dA620Ab29F41ABC6596a15981e14cE58c86b8"
}
],
"chain": "ethereum",
"references": [
{
"title": "Guardians - ZK Nation docs",
"url": "https://docs.zknation.io/zksync-governance/schedule-4-zksync-guardians"
}
],
"participants": [
{
"address": "eth:0x015318c16AE443a20DE0A776dB06a59F0D279057",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x015318c16AE443a20DE0A776dB06a59F0D279057"
},
{
"address": "eth:0x178D8Eb1A1fb81B5102808A83318Bb04C6a9fC6D",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x178D8Eb1A1fb81B5102808A83318Bb04C6a9fC6D"
},
{
"address": "eth:0x2A90830083C5Ca1f18d7AA7fCDC2998f93475384",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x2A90830083C5Ca1f18d7AA7fCDC2998f93475384"
},
{
"address": "eth:0x538612F6eba6ff80FBD95D60dCDee16b8FfF2c0f",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x538612F6eba6ff80FBD95D60dCDee16b8FfF2c0f"
},
{
"address": "eth:0x55c671BcE13120387Ded710A1d1b80C0e3d8E857",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x55c671BcE13120387Ded710A1d1b80C0e3d8E857"
},
{
"address": "eth:0x590926dBCDfD19627c3BbD2A6Eb96DeC7a3AbF69",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x590926dBCDfD19627c3BbD2A6Eb96DeC7a3AbF69"
},
{
"address": "eth:0x6D26874130A174839b9cd8CB87Ed4E09D0c1a5f0",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0x6D26874130A174839b9cd8CB87Ed4E09D0c1a5f0"
},
{
"address": "eth:0xCe7a3dFcc35602155809920Ff65e093aa726f6cf",
"type": "Contract",
"isVerified": true,
"name": "GnosisSafe",
"url": "https://etherscan.io/address/0xCe7a3dFcc35602155809920Ff65e093aa726f6cf"
}
],
"discoveryDrivenData": true
},
{
"id": "ValidatorTimelock",
"name": "ValidatorTimelock",
"accounts": [
{
"address": "eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"type": "Contract",
"isVerified": true,
"name": "0x2e51…b776",
"url": "https://etherscan.io/address/0x2e5110cF18678Ec99818bFAa849B8C881744b776"
}
],
"chain": "ethereum",
"description": "Intermediary contract between the *Validators* and the central diamond contract that delays block execution (ie withdrawals and other L2 --> L1 messages) by 3h.\n* Can interact with Diamond\n * commit, prove, execute, revert batches directly in the main Diamond contract. This role is typically held by a proxying ValidatorTimelock ",
"description": "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": "EraMultisigValidator",
"name": "EraMultisigValidator",
"description": "A Multisig with 3/8 threshold. \nA multisig wrapper around `ValidatorTimelock` that requires a threshold of approvals before batch execution can proceed, provides additional security through 2FA.\n* 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 ",
"accounts": [
{
"address": "eth:0xdC26B08F0335b68721F64001C38b05D0BC9B539d",
"type": "Contract",
"isVerified": true,
"name": "0xdC26…539d",
"url": "https://etherscan.io/address/0xdC26B08F0335b68721F64001C38b05D0BC9B539d"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0xCCEfc6dB1010af90AB0Fa0bbBd86F6D8C1627df7",
"type": "EOA",
"isVerified": true,
"name": "0xCCEf…7df7",
"url": "https://etherscan.io/address/0xCCEfc6dB1010af90AB0Fa0bbBd86F6D8C1627df7"
},
{
"address": "eth:0x6d5Cef8F3F998C47a52e27d3e28CaEcc8AdA9693",
"type": "EOA",
"isVerified": true,
"name": "0x6d5C…9693",
"url": "https://etherscan.io/address/0x6d5Cef8F3F998C47a52e27d3e28CaEcc8AdA9693"
},
{
"address": "eth:0x6D290f04A5908F0390647d9903230de3844e5cA0",
"type": "EOA",
"isVerified": true,
"name": "0x6D29…5cA0",
"url": "https://etherscan.io/address/0x6D290f04A5908F0390647d9903230de3844e5cA0"
},
{
"address": "eth:0xBBBCA2805c784e59E4eC2880cE63d08C08282726",
"type": "EOA",
"isVerified": true,
"name": "0xBBBC…2726",
"url": "https://etherscan.io/address/0xBBBCA2805c784e59E4eC2880cE63d08C08282726"
},
{
"address": "eth:0xD70528Fc72fB9DAc1bE1b684ed6E3E06196f2D04",
"type": "EOA",
"isVerified": true,
"name": "0xD705…2D04",
"url": "https://etherscan.io/address/0xD70528Fc72fB9DAc1bE1b684ed6E3E06196f2D04"
},
{
"address": "eth:0xf6f32866b8De74683563fCCd07dE7e23431d0626",
"type": "EOA",
"isVerified": true,
"name": "0xf6f3…0626",
"url": "https://etherscan.io/address/0xf6f32866b8De74683563fCCd07dE7e23431d0626"
},
{
"address": "eth:0x809bc2e1519641B482730330922950a4972a2227",
"type": "EOA",
"isVerified": true,
"name": "0x809b…2227",
"url": "https://etherscan.io/address/0x809bc2e1519641B482730330922950a4972a2227"
},
{
"address": "eth:0x2400D5d69043d9BE4fF32c6F8F28047d605ad976",
"type": "EOA",
"isVerified": true,
"name": "0x2400…d976",
"url": "https://etherscan.io/address/0x2400D5d69043d9BE4fF32c6F8F28047d605ad976"
}
],
"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": "EOA-1-and-EOA-2",
"name": "EOA 1 and EOA 2",
"accounts": [
{
"address": "eth:0x28942E6870612893B96F77De0F485fcE3497AAA8",
"type": "EOA",
"isVerified": true,
"name": "0x2894…AAA8",
"url": "https://etherscan.io/address/0x28942E6870612893B96F77De0F485fcE3497AAA8",
"displayName": "EOA 1"
},
{
"address": "eth:0xa90c7CDB553332948E2943431436117eCFb1e781",
"type": "EOA",
"isVerified": true,
"name": "0xa90c…e781",
"url": "https://etherscan.io/address/0xa90c7CDB553332948E2943431436117eCFb1e781",
"displayName": "EOA 2"
}
],
"chain": "ethereum",
"description": "* Can interact with EraMultisigValidator\n * execute predefined protocol upgrades (diamond cuts registered in the ChainTypeManager) for the chain through this contract \n * initiate batch execution on L1 if approved by enough Validator Multisig members \n * revert unexecuted batches through this contract \n * submit batch precommitments on L1 through this contract \n * submit batch proofs on L1 through this contract \n * submit batches on L1 through this contract (no Validator Multisig approvals required) ",
"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": 1790592210,
"baseTimestamp": 1790934395,
"contractsDiscoDriven": true,
"hasDiscoUi": true,
"isDiscoDriven": true,
"permissionsDiscoDriven": true
}
+14 -0
[
{
"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```"
}
]
}
]
+19 -8
{
"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",
"earliest": 1695403367
},
{
"timestamp": 1695403367,
"type": "state",
"updateId": "0d60433d",
"earliest": 1695403367
},
{
"timestamp": 1695403367,
"type": "state",
"updateId": "8c1eeeb8",
"earliest": 1695403367
},
{
"timestamp": 1695724036,
"type": "state",
"updateId": "469b08ac"
},
{
"timestamp": 1697818535,
"type": "code",
"earliest": 1697818535
},
{
"timestamp": 1698402394,
"type": "state",
"updateId": "81da15da"
},
{
"timestamp": 1698856895,
"type": "code",
"earliest": 1698856895
},
{
"timestamp": 1698909860,
"type": "state",
"updateId": "77994965"
},
{
"timestamp": 1701721751,
"type": "code",
"earliest": 1701721751
},
{
"timestamp": 1701721751,
"type": "code",
"earliest": 1701721751
},
{
"timestamp": 1702029961,
"type": "state",
"updateId": "cdbb5dce"
},
{
"timestamp": 1703159495,
"type": "code",
"earliest": 1703159495
},
{
"timestamp": 1703242679,
"type": "code",
"earliest": 1703242679
},
{
"timestamp": 1704797043,
"type": "state",
"updateId": "54f097de"
},
{
"timestamp": 1707143447,
"type": "code",
"earliest": 1707143447
},
{
"timestamp": 1707380016,
"type": "state",
"updateId": "2f064657"
},
{
"timestamp": 1707388607,
"type": "code",
"earliest": 1707388607
},
{
"timestamp": 1710167531,
"type": "code",
"earliest": 1710167531
},
{
"timestamp": 1710245383,
"type": "state",
"updateId": "e467f488"
},
{
"timestamp": 1710285383,
"type": "code",
"earliest": 1710285383
},
{
"timestamp": 1710328296,
"type": "state",
"updateId": "9dbc9655"
},
{
"timestamp": 1717520639,
"type": "state",
"updateId": "ec59e2ee",
"earliest": 1717520639
},
{
"timestamp": 1717674923,
"type": "code",
"earliest": 1717674923
},
{
"timestamp": 1717680035,
"type": "code",
"earliest": 1717680035
},
{
"timestamp": 1717692730,
"type": "state",
"updateId": "6a5eae28"
},
{
"timestamp": 1718011538,
"type": "code",
"earliest": 1718011538
},
{
"timestamp": 1722934619,
"type": "code",
"earliest": 1722934619
},
{
"timestamp": 1722937847,
"type": "code",
"earliest": 1722937847
},
{
"timestamp": 1722947661,
"type": "state",
"updateId": "2ed0a950"
},
{
"timestamp": 1722952461,
"type": "state",
"updateId": "3347bf90"
},
{
"timestamp": 1722952461,
"type": "state",
"updateId": "3347bf90"
},
{
"timestamp": 1724658671,
"type": "code",
"earliest": 1724658671
},
{
"timestamp": 1724658671,
"type": "state",
"updateId": "ec59e2ee",
"earliest": 1724658671
},
{
"timestamp": 1725887363,
"type": "code",
"earliest": 1725887363
},
{
"timestamp": 1726227640,
"type": "state",
"updateId": "88d8f58d"
},
{
"timestamp": 1726227640,
"type": "state",
"updateId": "88d8f58d"
},
{
"timestamp": 1726227640,
"type": "state",
"updateId": "88d8f58d"
},
{
"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": 1740742654,
"type": "state",
"updateId": "d7262d25"
},
{
"timestamp": 1741679757,
"type": "state",
"updateId": "0819e8b8"
},
{
"timestamp": 1741679757,
"type": "state",
"updateId": "0819e8b8"
},
{
"timestamp": 1741679757,
"type": "state",
"updateId": "0819e8b8"
},
{
"timestamp": 1741779799,
"type": "state",
"updateId": "42eff026"
},
{
"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",
"earliest": 1743408047
},
{
"timestamp": 1743408047,
"type": "code",
"earliest": 1743408047
},
{
"timestamp": 1744806793,
"type": "state",
"updateId": "6fa1ad76"
},
{
"timestamp": 1745001594,
"type": "state",
"updateId": "0dff75a3"
},
{
"timestamp": 1745588211,
"type": "state",
"updateId": "bff2a528"
},
{
"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": 1746028164,
"type": "state",
"updateId": "73803b6d"
},
{
"timestamp": 1746446579,
"type": "code",
"earliest": 1746446579
},
{
"timestamp": 1749803535,
"type": "state",
"updateId": "e4053ebe"
},
{
"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": 1750404480,
"type": "state",
"updateId": "702e5f55"
},
{
"timestamp": 1750722695,
"type": "code",
"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": 1760519471,
"type": "code",
"earliest": 1760519471
},
{
"timestamp": 1760604460,
"type": "state",
"updateId": "5531704d",
"earliest": 1760369926
},
{
"timestamp": 1761146555,
"type": "code",
"earliest": 1761146555
},
{
"timestamp": 1761146555,
"type": "state",
"updateId": "b0d171bf",
"earliest": 1761146555
},
{
"timestamp": 1765195612,
"type": "code",
"earliest": 1765195612
},
{
"timestamp": 1765211471,
"type": "state",
"updateId": "7fc79d40",
"earliest": 1764167689
},
{
"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
},
{
"name": "Diamond",
"address": "eth:0x32400084C286CF3E17e7B677ea9583e60a000324",
"isVerified": true,
"ossifyingSince": 1786873007,
"codeChangeCount": 27,
"stateChangeCount": 26
},
{
"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": "ZkTokenGovernor",
"address": "zksync:0xb83FF6501214ddF40C91C9565d095400f3F45746",
"isVerified": true,
"ossifyingSince": 1765211471,
"codeChangeCount": 0,
"stateChangeCount": 1
},
{
"name": "ZkToken",
"address": "zksync:0x5A7d6b2F92C77FAD6CCaBd7EE0624E64907Eaf3E",
"isVerified": true,
"ossifyingSince": 1765195612,
"codeChangeCount": 2,
"stateChangeCount": 0
},
{
"name": "RollupDAManager",
"address": "eth:0xE689e79a06D3D09f99C21E534cCF6a8b7C9b3C45",
"isVerified": true,
"ossifyingSince": 1760604460,
"codeChangeCount": 0,
"stateChangeCount": 3
},
{
"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": 6
},
{
"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": 5
},
{
"name": "L1Nullifier",
"address": "eth:0xD7f9f54194C633F36CCD5F3da84ad4a1c38cB2cB",
"isVerified": true,
"ossifyingSince": 1760519351,
"codeChangeCount": 6,
"stateChangeCount": 3
},
{
"name": "ValidatorTimelock",
"address": "eth:0x2e5110cF18678Ec99818bFAa849B8C881744b776",
"isVerified": true,
"ossifyingSince": 1758289595,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ChainAssetHandler",
"address": "eth:0xDd5CB8B9037357B4cD37391A073798f8aaB61076",
"isVerified": true,
"ossifyingSince": 1758286391,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ZkProtocolGovernor",
"address": "zksync:0x76705327e682F2d96943280D99464Ab61219e34f",
"isVerified": true,
"ossifyingSince": 1740742654,
"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": 1717520627,
"codeChangeCount": 0,
"stateChangeCount": 0
},
{
"name": "ZkTokenProxyAdmin",
"address": "zksync:0xdB1E46B448e68a5E35CB693a99D59f784aD115CC",
"isVerified": true,
"ossifyingSince": 1716317321,
"codeChangeCount": 0,
"stateChangeCount": 0
}
],
"observedSince": 1676384520,
"resets": [
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
]
}