{
"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": [
{
"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/0xE586511973e02b5A3bB9e4290adc4F406Aa8f463#code#F1#L54"
"url": "https://etherscan.io/address/0x9dF23Dd94d71228EFec935EdC2B5be4A861227ca#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, as well as set Pause and Emergency Guardians that temporarily halt batch processing and withdrawals."
}
}
[
{
"id": "9d12743b",
"date": "Tue, 20 Oct 2026 10:44:00 GMT",
"timestamp": 1792492958,
"description": "Configured pause guardian and emergency guardian addresses, following previous governance upgrade that introduced the pause logic. \n\nPause guardian paused Lighter L2 operation for 2h on Oct 17, in what looks like a test.\n\nNew verifier deployed (no sources published yet).",
"isHighSeverity": true,
"changeCount": 11,
"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. 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- 75\n+ 76\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+++ description: Can halt batch processing and withdrawals for up to 72h, with a 7d cooldown between pauses.\n+++ severity: MEDIUM\n values.emergencyGuardian:\n- \"eth:0x0000000000000000000000000000000000000000\"\n+ \"eth:0x26Bb4084573e27CF57394593A0c95FF0cd14dd16\"\n+++ description: Can halt batch processing and withdrawals for up to 24h, with a 24h cooldown between pauses.\n+++ severity: MEDIUM\n values.pauseGuardian:\n- \"eth:0x0000000000000000000000000000000000000000\"\n+ \"eth:0x3896449AFb8a6D07a7Dd3E7e1cDF4810112EA47a\"\n values.pauseGuardianState.startedAt:\n- 0\n+ 1792223063\n values.pauseGuardianState.expiresAt:\n- 0\n+ 1792230263\n values.pauseGuardianState.cooldownEndsAt:\n- 0\n+ 1792316663\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- \"0xb90e379e327aaf48e4d92789e2d24b41ab6c89ed69c958ddbab73b0fb6f47290\"\n+ \"0x75beb39791d703e365a12e1aba1268f8971a636d6962a8a88960872f239102b2\"\n values.$implementation:\n- \"eth:0xE586511973e02b5A3bB9e4290adc4F406Aa8f463\"\n+ \"eth:0x9dF23Dd94d71228EFec935EdC2B5be4A861227ca\"\n values.getTarget:\n- \"eth:0xE586511973e02b5A3bB9e4290adc4F406Aa8f463\"\n+ \"eth:0x9dF23Dd94d71228EFec935EdC2B5be4A861227ca\"\n implementationNames.eth:0xE586511973e02b5A3bB9e4290adc4F406Aa8f463:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0x9dF23Dd94d71228EFec935EdC2B5be4A861227ca:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"id": "eff7f903",
"date": "Tue, 13 Oct 2026 13:17:25 GMT",
"timestamp": 1791897358,
"description": "New verifier deployed. The verifier is regenerated from sources.",
"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. 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- 74\n+ 75\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- \"0x4dc54ffb4008a4ca0179446fed46565fbd602cc3963270f555f70ed93eea7cbe\"\n+ \"0xb90e379e327aaf48e4d92789e2d24b41ab6c89ed69c958ddbab73b0fb6f47290\"\n values.$implementation:\n- \"eth:0xc4c2067ece6e33e50a30087ec14096715e56aE11\"\n+ \"eth:0xE586511973e02b5A3bB9e4290adc4F406Aa8f463\"\n values.getTarget:\n- \"eth:0xc4c2067ece6e33e50a30087ec14096715e56aE11\"\n+ \"eth:0xE586511973e02b5A3bB9e4290adc4F406Aa8f463\"\n implementationNames.eth:0xc4c2067ece6e33e50a30087ec14096715e56aE11:\n- \"ZkLighterVerifier\"\n implementationNames.eth:0xE586511973e02b5A3bB9e4290adc4F406Aa8f463:\n+ \"ZkLighterVerifier\"\n }\n```"
}
]
},
{
"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```"
}
]
}
]
{
"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": "0xb0e177d196747b9ca82584a5c0121ee4c6ebf780c590df940f7407ef9da581b2",
"name": "Lighter verifier",
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"knownDeployments": [
{
"address": "eth:0x9dF23Dd94d71228EFec935EdC2B5be4A861227ca"
}
],
"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": "0x1532ef3582326b95ca539ef4e2c4684f018acef145cd47980aa56bf41e705be3",
"name": "Lighter verifier",
"sourceLink": "https://github.com/elliottech/lighter-prover/tree/16c0f36d75f2306ee242e26e507e4c237f7f4074/circuit/src",
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"knownDeployments": [
{
"address": "eth:0xE586511973e02b5A3bB9e4290adc4F406Aa8f463"
}
],
"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/16c0f36d75f2306ee242e26e507e4c237f7f4074/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 16c0f36d75f2306ee242e26e507e4c237f7f4074\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.",
"description": "Custom verifier ID: SHA256 hash of all VK_... values from the smart contract, abi packed in the same order they are defined."
},
{
"hash": "0xa29ec4d3bd2bd13606a2504774017527b16f8e107649e09389e817da1ad205a2",
"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:0x7817a34136c56A6097C7042B3cAAe24b9eEd9fb4"
}
],
"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": "0xe519ae1119a83c6ad569daf26ae1d61e9bbdac185aec5fae55c1e0a7c0aa4969",
"name": "Lighter on Robinhood Desert verifier",
"proofSystem": {
"id": "Gnark",
"type": "Plonk",
"name": "Gnark",
"description": "Consensys implementation of Plonk proving system written in Go."
},
"knownDeployments": [
{
"address": "robinhood:0x93c83bdA3A45241729Ce150C1e3677bA7389c0D0"
}
],
"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"
}
],
"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."
}
]
}
[
{
"id": "62c0458c",
"date": "Tue, 20 Oct 2026 10:39:28 GMT",
"timestamp": 1792492705,
"description": "Upgraded one ms contract to Safe 1.5.0.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex Multisig 2 (eth:0xFF57A3bB6465501c993acF8f3b29125a862661C0) [GnosisSafe] {\n +++ description: None\n sourceHashes.1:\n- \"0xe23c519b7324d6dc9132c8567ac55ae72bdf168c914d22825c7614d822364b0f\"\n+ \"0xb66849da6643e8cd188f73efe4edb32704a1540eda5b1aef77a2217ad2d81f78\"\n values.$implementation:\n- \"eth:0x41675C099F32341bf84BFc5382aF534df5C7461a\"\n+ \"eth:0xFf51A5898e281Db6DfC7855790607438dF2ca44b\"\n values.getChainId:\n- 1\n values.VERSION:\n- \"1.4.1\"\n+ \"1.5.0\"\n implementationNames.eth:0x41675C099F32341bf84BFc5382aF534df5C7461a:\n- \"Safe\"\n implementationNames.eth:0xFf51A5898e281Db6DfC7855790607438dF2ca44b:\n+ \"Safe\"\n }\n```"
}
]
},
{
"id": "9b65f222",
"date": "Thu, 16 Jul 2026 09:26:20 GMT",
"timestamp": 1784193913,
"description": "Added another Paradex operator.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (eth:0xF338cad020D506e8e3d9B4854986E0EcE6C23640) [starknet/Starknet] {\n +++ description: Central Starknet rollup contract. For every state update it derives a SHARP fact from the state-transition output and either the Starknet OS or aggregator program hash, checks that fact through the configured SHARP call proxy, and requires the output's OS-config hash to match. It also processes L1 <-> L2 messages and stores the finalized L2 state.\n values.operators.1:\n+ \"eth:0x09d1ad25B369A0C48Bdf4CaAb85aFd08a3f07044\"\n }\n```"
}
]
},
{
"id": "2c23e76e",
"date": "Tue, 16 Jun 2026 09:48:12 GMT",
"timestamp": 1781603222,
"description": "Add permissioned address to bridge access control.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (eth:0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) [starknet/StarknetERC20Bridge] {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 0% of the locked funds per 24 hours.\n values.accessControl.SECURITY_AGENT.members.2:\n+ \"eth:0x27aFEd9831209B58Cf24fa241E028dD1e80Fb17D\"\n values.secAgentAC.2:\n+ \"eth:0x27aFEd9831209B58Cf24fa241E028dD1e80Fb17D\"\n }\n```"
}
]
},
{
"id": "82682d1e",
"date": "Thu, 04 Jun 2026 15:27:16 GMT",
"timestamp": 1780586770,
"description": "signer added, threshold increased to 3. Also, rotated ms member.",
"isHighSeverity": false,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex Multisig (eth:0x0a64d3D7747549aF6d65C225D56ac8f71e436B93) [GnosisSafe] {\n +++ description: None\n values.$members.0:\n+ \"eth:0x0405107a60391Eb51821be373ff978115Ee58488\"\n values.$members.1:\n- \"eth:0x2871B956bC19D25961E9a7519f32D7fDaA21B403\"\n+ \"eth:0xCe958D997F4a5824D4d503A128216322C6C223a0\"\n values.$threshold:\n- 2\n+ 3\n values.multisigThreshold:\n- \"2 of 5 (40%)\"\n+ \"3 of 6 (50%)\"\n }\n```\n\n```diff\n contract Paradex Multisig 2 (eth:0xFF57A3bB6465501c993acF8f3b29125a862661C0) [GnosisSafe] {\n +++ description: None\n values.$members.5:\n- \"eth:0x661B48092a5af3F8d5B551D66f5B3F639deD3155\"\n+ \"eth:0x6f52712Ae102e6B7970F1e24c83d22e5fF5E8950\"\n }\n```\n\n```diff\n+ Status: CREATED\n reference (eth:0x0405107a60391Eb51821be373ff978115Ee58488)\n +++ description: None\n```"
}
]
},
{
"id": "3f554241",
"date": "Tue, 12 May 2026 09:55:12 GMT",
"timestamp": 1778579646,
"description": "Upgraded Paradex rollup contract by adding small check on l1 to l2 msg hash: https://disco.l2beat.com/diff/eth:0x2793010E6711Acd5C46ed17f2183a9d58db71e04/eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A. Also, updated program hashes to already verified versions.\n\nConfig: use the new flattener implementation",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (eth:0xF338cad020D506e8e3d9B4854986E0EcE6C23640) [starknet/Starknet] {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, allows users to consume L2 -> L1 messages and send L1 -> L2 messages. Critical configuration values for the L2's logic are defined here by various governance roles.\n sourceHashes.1:\n- \"0xfee7303d7ae61327a9f6516d410a6efbe76c07d2ca3406be62e5bb3baa5532c9\"\n+ \"0xef60960a959a9506c3f6eece9374f7fbcd095a488763801577ae88e427fd3d51\"\n values.$implementation:\n- \"eth:0x2793010E6711Acd5C46ed17f2183a9d58db71e04\"\n+ \"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A\"\n values.$pastUpgrades.4:\n+ [\"2026-05-10T13:30:11.000Z\",\"0x1e964f795063d0e9b55f3f260bcbd3f11b3f3b43df658b9da2b78ce919bd4009\",[\"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.aggregatorHashMapped:\n- \"1701025211190912681772481128523426351562426117847395998223683709327746845867\"\n+ \"2571508110958925737463010241874806654058743535666147712534445437599630018294\"\n values.aggregatorProgramHash:\n- \"1701025211190912681772481128523426351562426117847395998223683709327746845867\"\n+ \"2571508110958925737463010241874806654058743535666147712534445437599630018294\"\n values.identify:\n- \"StarkWare_Starknet_2025_10\"\n+ \"StarkWare_Starknet_2026_11\"\n values.implementation:\n- \"eth:0x2793010E6711Acd5C46ed17f2183a9d58db71e04\"\n+ \"eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"918745833886511857768061986591752808672496300091957204265383861063635175685\"\n+ \"2733003247060056328192560178934419513655729851806095615814023997114795707702\"\n values.programHashHistory.8:\n+ \"918745833886511857768061986591752808672496300091957204265383861063635175685\"\n values.programHashMapped:\n- \"918745833886511857768061986591752808672496300091957204265383861063635175685\"\n+ \"2733003247060056328192560178934419513655729851806095615814023997114795707702\"\n implementationNames.eth:0x2793010E6711Acd5C46ed17f2183a9d58db71e04:\n- \"Starknet\"\n implementationNames.eth:0x9961D34D3baE6914635c882e8FE382e14E0F172A:\n+ \"Starknet\"\n }\n```"
}
]
},
{
"id": "a0beb08f",
"date": "Mon, 23 Feb 2026 12:19:28 GMT",
"timestamp": 1771848139,
"description": "Removed LegacyBridge logic from the USDC bridge. Diff: https://disco.l2beat.com/diff/eth:0x8A4e51ff0F2a45899519e6049FB2D1F038Be1e77/eth:0xDcbD52FFaF81BF0aA5bD38B0c15F60345e8Eec86. Also added a StarkgateManager for this bridge.",
"isHighSeverity": true,
"changeCount": 13,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (eth:0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 0% of the locked funds per 24 hours.\n sourceHashes.1:\n- \"0xbe08cd77d92ae2b4d333c5d2850e16d06e16d98de2a8435e0a49dc35ad73b915\"\n+ \"0xecdc47d2045525d1d373fdecc6478959fa5b2d2595713c2187c41ed98baa4738\"\n values.$implementation:\n- \"eth:0x8A4e51ff0F2a45899519e6049FB2D1F038Be1e77\"\n+ \"eth:0xDcbD52FFaF81BF0aA5bD38B0c15F60345e8Eec86\"\n values.$pastUpgrades.4:\n+ [\"2026-02-21T13:53:59.000Z\",\"0xb0ea49fedd399a118b3f8a0c6a05b3e73a8235a184e1e5c61f57c601f94b59e7\",[\"eth:0xDcbD52FFaF81BF0aA5bD38B0c15F60345e8Eec86\"]]\n values.$upgradeCount:\n- 4\n+ 5\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2.0_4\"\n+ \"StarkWare_StarknetTokenBridge_2.0_5\"\n values.implementation:\n- \"eth:0x8A4e51ff0F2a45899519e6049FB2D1F038Be1e77\"\n+ \"eth:0xDcbD52FFaF81BF0aA5bD38B0c15F60345e8Eec86\"\n values.manager:\n- \"eth:0x0000000000000000000000000000000000000000\"\n+ \"eth:0x279b87139f2e89D7ce44c3056D2876fDEAB29BAE\"\n implementationNames.eth:0x8A4e51ff0F2a45899519e6049FB2D1F038Be1e77:\n- \"StarknetERC20Bridge\"\n implementationNames.eth:0xDcbD52FFaF81BF0aA5bD38B0c15F60345e8Eec86:\n+ \"StarknetTokenBridge\"\n }\n```\n\n```diff\n contract Paradex Multisig 2 (eth:0xFF57A3bB6465501c993acF8f3b29125a862661C0) {\n +++ description: None\n receivedPermissions.4:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0x279b87139f2e89D7ce44c3056D2876fDEAB29BAE\",\"role\":\".$admin\"}\n receivedPermissions.5:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xc50E4DF59aad8Ab494d10d2B66a90C9F0298f280\",\"role\":\".$admin\"}\n }\n```\n\n```diff\n+ Status: CREATED\n contract StarkgateManager (eth:0x279b87139f2e89D7ce44c3056D2876fDEAB29BAE)\n +++ description: Acts as a central contract to manage StarkGate bridge escrows (add new ones, deactivate existing, change configs) when given the Manager role from the respective escrows.\n```\n\n```diff\n+ Status: CREATED\n contract StarkgateRegistry (eth:0xc50E4DF59aad8Ab494d10d2B66a90C9F0298f280)\n +++ description: A simple registry that maps tokens to their StarkGate escrows. It also keeps a list of tokens that are blocked from being added to StarkGate.\n```"
}
]
},
{
"id": "700b120f",
"date": "Fri, 13 Feb 2026 09:43:15 GMT",
"timestamp": 1770975731,
"description": "Added new security agent to USDC bridge.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (eth:0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 0% of the locked funds per 24 hours.\n values.accessControl.SECURITY_AGENT.members.1:\n+ \"eth:0x3e87462D152DFDeD22b6AC5bcde702B20ed70CB6\"\n values.secAgentAC.1:\n+ \"eth:0x3e87462D152DFDeD22b6AC5bcde702B20ed70CB6\"\n }\n```"
}
]
},
{
"id": "40054008",
"date": "Tue, 10 Feb 2026 11:46:36 GMT",
"timestamp": 1770723933,
"description": "Added new Paradex admin (already known multisig).",
"isHighSeverity": true,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (eth:0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, allows users to consume L2 -> L1 messages and send L1 -> L2 messages. Critical configuration values for the L2's logic are defined here by various governance roles.\n+++ description: Permissioned to upgrade the proxy implementation and access `onlyGovernance` restricted calls.\n+++ severity: HIGH\n values.$admin:\n- \"eth:0x0a64d3D7747549aF6d65C225D56ac8f71e436B93\"\n+ [\"eth:0x0a64d3D7747549aF6d65C225D56ac8f71e436B93\",\"eth:0xFF57A3bB6465501c993acF8f3b29125a862661C0\"]\n }\n```\n\n```diff\n contract Paradex Multisig 2 (eth:0xFF57A3bB6465501c993acF8f3b29125a862661C0) {\n +++ description: None\n receivedPermissions.0:\n+ {\"permission\":\"governStarknet\",\"from\":\"eth:0xF338cad020D506e8e3d9B4854986E0EcE6C23640\",\"role\":\".$admin\"}\n receivedPermissions.5:\n+ {\"permission\":\"upgrade\",\"from\":\"eth:0xF338cad020D506e8e3d9B4854986E0EcE6C23640\",\"role\":\".$admin\"}\n }\n```"
}
]
},
{
"id": "63809088",
"date": "Tue, 20 Jan 2026 14:32:43 GMT",
"timestamp": 1768919498,
"description": "Raised max total USDC balance on the bridge.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (eth:0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 0% of the locked funds per 24 hours.\n+++ description: The maximum total balance that can be locked in the bridge.\n values.maxTotalBalance:\n- 250000000000000\n+ 500000000000000\n }\n```"
}
]
},
{
"id": "f4b8d3cf",
"date": "Mon, 22 Dec 2025 12:47:20 GMT",
"timestamp": 1766407578,
"description": "maxbalance increased to 250M USDC.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (eth:0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 0% of the locked funds per 24 hours.\n+++ description: The maximum total balance that can be locked in the bridge.\n values.maxTotalBalance:\n- 175000000000000\n+ 250000000000000\n }\n```"
}
]
},
{
"id": "11dbcd9b",
"date": "Tue, 16 Dec 2025 10:17:34 GMT",
"timestamp": 1765880191,
"description": "Updated Starknet OS and Aggregator programs.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (eth:0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, allows users to consume L2 -> L1 messages and send L1 -> L2 messages. Critical configuration values for the L2's logic are defined here by various governance roles.\n values.aggregatorHashMapped:\n- \"Starknet Aggregator (since v0.14.0)\"\n+ \"1701025211190912681772481128523426351562426117847395998223683709327746845867\"\n values.aggregatorProgramHash:\n- \"760308386675154762009993173725077399730170358078020153308029499928875469870\"\n+ \"1701025211190912681772481128523426351562426117847395998223683709327746845867\"\n values.configHash:\n- \"755316247915403236082211219217701569888673466355003491006148202168030226084\"\n+ \"1386722975727499172783711380010899570614494177755849513051766179156263595841\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"793595346346724189681221050719974054861327641387231526786912662354259445535\"\n+ \"918745833886511857768061986591752808672496300091957204265383861063635175685\"\n values.programHashHistory.7:\n+ \"793595346346724189681221050719974054861327641387231526786912662354259445535\"\n values.programHashMapped:\n- \"StarkNet OS (since v0.14.0)\"\n+ \"918745833886511857768061986591752808672496300091957204265383861063635175685\"\n }\n```"
}
]
},
{
"id": "492eb758",
"date": "Tue, 25 Nov 2025 08:41:15 GMT",
"timestamp": 1764060007,
"description": "update to v0.14 progHashes.\n\nTODO: the cost calculation for starknet is deeply wrong, and liveness for paradex and starknet overlaps.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (eth:0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, allows users to consume L2 -> L1 messages and send L1 -> L2 messages. Critical configuration values for the L2's logic are defined here by various governance roles.\n values.aggregatorHashMapped:\n- \"Starknet Aggregator (since v0.13.4)\"\n+ \"Starknet Aggregator (since v0.14.0)\"\n values.aggregatorProgramHash:\n- \"273279642033703284306509103355536170486431195329675679055627933497997642494\"\n+ \"760308386675154762009993173725077399730170358078020153308029499928875469870\"\n values.configHash:\n- \"2741190170141984203224468507008497105532196084369172236871397222510074358631\"\n+ \"755316247915403236082211219217701569888673466355003491006148202168030226084\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"2534935718742676028234156221136000178296467523045214874259117268197132196876\"\n+ \"793595346346724189681221050719974054861327641387231526786912662354259445535\"\n values.programHashHistory.6:\n+ \"2534935718742676028234156221136000178296467523045214874259117268197132196876\"\n values.programHashMapped:\n- \"2534935718742676028234156221136000178296467523045214874259117268197132196876\"\n+ \"StarkNet OS (since v0.14.0)\"\n }\n```"
}
]
},
{
"id": "f3339a75",
"date": "Wed, 17 Sep 2025 12:09:21 GMT",
"timestamp": 1758110896,
"description": "Increase max USDC total balance.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (eth:0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 0% of the locked funds per 24 hours.\n+++ description: The maximum total balance that can be locked in the bridge.\n values.maxTotalBalance:\n- 100000000000000\n+ 175000000000000\n }\n```"
}
]
},
{
"id": "12601805",
"date": "Fri, 12 Sep 2025 07:15:48 GMT",
"timestamp": 1757661281,
"description": "ms signer added.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex Multisig 2 (eth:0xFF57A3bB6465501c993acF8f3b29125a862661C0) {\n +++ description: None\n values.$members.0:\n+ \"eth:0x721e0A5e09A6e0Bf9641193a4D82901607837Df9\"\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"3 of 6 (50%)\"\n }\n```"
}
]
},
{
"id": "8da063db",
"date": "Mon, 18 Aug 2025 11:28:43 GMT",
"timestamp": 1755516515,
"description": "Increased the maximal possible bridge balance.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 0% of the locked funds per 24 hours.\n+++ description: The maximum total balance that can be locked in the bridge.\n values.maxTotalBalance:\n- 60000000000000\n+ 100000000000000\n }\n```"
}
]
},
{
"id": "a703bd0f",
"date": "Mon, 14 Jul 2025 12:45:54 GMT",
"timestamp": 1752497154,
"description": "Discovery rerun on the same block number with only config-related changes.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "config-related-changes",
"body": "```diff\n+ Status: CREATED\n contract Paradex Multisig (0x0a64d3D7747549aF6d65C225D56ac8f71e436B93)\n +++ description: None\n```\n\n```diff\n+ Status: CREATED\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3)\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 0% of the locked funds per 24 hours.\n```\n\n```diff\n+ Status: CREATED\n contract Paradex (0xF338cad020D506e8e3d9B4854986E0EcE6C23640)\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, allows users to consume L2 -> L1 messages and send L1 -> L2 messages. Critical configuration values for the L2's logic are defined here by various governance roles.\n```\n\n```diff\n+ Status: CREATED\n contract Paradex Multisig 2 (0xFF57A3bB6465501c993acF8f3b29125a862661C0)\n +++ description: None\n```"
}
]
},
{
"id": "e6e80e1d",
"date": "Mon, 02 Jun 2025 08:07:03 GMT",
"timestamp": 1748851623,
"description": "multisig signer change.",
"isHighSeverity": false,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex Multisig 2 (0xFF57A3bB6465501c993acF8f3b29125a862661C0) {\n +++ description: None\n values.$members.5:\n- \"0xfF206f46453A9dd8e1664532788f4987c15B937d\"\n values.$members.4:\n- \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n+ \"0xfF206f46453A9dd8e1664532788f4987c15B937d\"\n values.$members.3:\n- \"0xdaA9c7160E33d7c5C7D292f452c074Ec60f5C199\"\n+ \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n values.$members.2:\n- \"0x921D35Fc5e1667741c9f3af0303e29b8aB3dC79B\"\n+ \"0xdaA9c7160E33d7c5C7D292f452c074Ec60f5C199\"\n values.multisigThreshold:\n- \"3 of 6 (50%)\"\n+ \"3 of 5 (60%)\"\n }\n```"
}
]
},
{
"id": "1dcb3fc0",
"date": "Mon, 19 May 2025 15:28:27 GMT",
"timestamp": 1747668507,
"description": "Upgrade USDC Bridge to change withdrawal limit: now 0% meaning enabling the withdrawal limit pauses withdrawals.",
"isHighSeverity": false,
"changeCount": 19,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 0% of the locked funds per 24 hours.\n description:\n- \"Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\"\n+ \"Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 0% of the locked funds per 24 hours.\"\n values.$pastUpgrades.3:\n+ [\"2025-05-16T18:05:23.000Z\",\"0x6df9f1b6e2fe53f2ea980ff4908aca6e43dc77e17cfdb869c67e4879c49eabf2\",[\"0x8A4e51ff0F2a45899519e6049FB2D1F038Be1e77\"]]\n values.$upgradeCount:\n- 3\n+ 4\n values.accessControl.APP_ROLE_ADMIN.members.1:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.accessControl.APP_ROLE_ADMIN.members.0:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.accessControl.SECURITY_ADMIN.members.0:\n- \"0x0000000000000000000000000000000000000020\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.accessControl.SECURITY_AGENT.members.0:\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAdminAC.0:\n- \"0x0000000000000000000000000000000000000020\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAgentAC.0:\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n+++ description: The withdrawal limit in percent of locked funds per 24 hours. This value is immutable and needs an implementation upgrade to be changed.\n values.withdrawLimitPct:\n- 5\n+ 0\n }\n```\n\n```diff\n contract Paradex Multisig 2 (0xFF57A3bB6465501c993acF8f3b29125a862661C0) {\n +++ description: None\n values.$members.5:\n+ \"0xfF206f46453A9dd8e1664532788f4987c15B937d\"\n values.$members.4:\n- \"0xfF206f46453A9dd8e1664532788f4987c15B937d\"\n+ \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n values.$members.3:\n- \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n+ \"0xdaA9c7160E33d7c5C7D292f452c074Ec60f5C199\"\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"3 of 6 (50%)\"\n receivedPermissions.3:\n+ {\"permission\":\"upgrade\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\"}\n receivedPermissions.2:\n+ {\"permission\":\"interact\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\",\"description\":\"disable the withdrawal limit and manage the security agent role that can enable it.\"}\n receivedPermissions.1.permission:\n- \"upgrade\"\n+ \"interact\"\n receivedPermissions.1.description:\n+ \"manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation.\"\n receivedPermissions.0.description:\n- \"manage critical access control roles related to upgrades and set the proxy governor that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n }\n```"
}
]
},
{
"id": "a76b2947",
"date": "Mon, 12 May 2025 12:14:39 GMT",
"timestamp": 1747052079,
"description": "MS member change.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex Multisig 2 (0xFF57A3bB6465501c993acF8f3b29125a862661C0) {\n +++ description: None\n values.$members.3:\n- \"0xFE5956a7cD804b93379DE807cB0BE8D0Ad0Cb571\"\n+ \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n values.$members.2:\n- \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n+ \"0x921D35Fc5e1667741c9f3af0303e29b8aB3dC79B\"\n values.$members.1:\n- \"0x921D35Fc5e1667741c9f3af0303e29b8aB3dC79B\"\n+ \"0x94d5dc7c96Eb6176783787669571970C7ba43e01\"\n }\n```"
}
]
},
{
"id": "ee1f179d",
"date": "Fri, 02 May 2025 17:24:10 GMT",
"timestamp": 1746206650,
"description": "MS signer change.",
"isHighSeverity": false,
"changeCount": 4,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex Multisig 2 (0xFF57A3bB6465501c993acF8f3b29125a862661C0) {\n +++ description: None\n values.$members.4:\n- \"0xFE5956a7cD804b93379DE807cB0BE8D0Ad0Cb571\"\n+ \"0xfF206f46453A9dd8e1664532788f4987c15B937d\"\n values.$members.3:\n- \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n+ \"0xFE5956a7cD804b93379DE807cB0BE8D0Ad0Cb571\"\n values.$members.2:\n- \"0x921D35Fc5e1667741c9f3af0303e29b8aB3dC79B\"\n+ \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n values.$members.1:\n- \"0x31fB42E93b573F1e84a51Cc1a5792e3D63FDE7A6\"\n+ \"0x921D35Fc5e1667741c9f3af0303e29b8aB3dC79B\"\n }\n```"
}
]
},
{
"id": "1d443b84",
"date": "Thu, 24 Apr 2025 08:36:50 GMT",
"timestamp": 1745483810,
"description": "Gov updated, EOA upgrader removed.",
"isHighSeverity": true,
"changeCount": 8,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract undefined (0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c) {\n +++ description: None\n receivedPermissions:\n- [{\"permission\":\"upgrade\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\"}]\n }\n```\n\n```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n issuedPermissions.4:\n- {\"permission\":\"upgrade\",\"to\":\"0xFF57A3bB6465501c993acF8f3b29125a862661C0\",\"via\":[]}\n issuedPermissions.3.permission:\n- \"interact\"\n+ \"upgrade\"\n issuedPermissions.3.description:\n- \"disable the withdrawal limit.\"\n issuedPermissions.2.permission:\n- \"upgrade\"\n+ \"interact\"\n issuedPermissions.2.to:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n issuedPermissions.2.description:\n+ \"disable the withdrawal limit.\"\n+++ description: NOT the same as the `GOVERNANCE_ADMIN` access control role (see implementation) but managed by it.\n+++ severity: HIGH\n values.$admin:\n- [\"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\",\"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"]\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n }\n```"
}
]
},
{
"id": "f7f0d73c",
"date": "Fri, 18 Apr 2025 17:58:18 GMT",
"timestamp": 1744999098,
"description": "signer changes in the governing MSigs, USDC bridge still EOA-governed though.",
"isHighSeverity": true,
"changeCount": 31,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract undefined (0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c) {\n +++ description: None\n receivedPermissions.3:\n- {\"permission\":\"upgrade\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\"}\n receivedPermissions.2:\n- {\"permission\":\"interact\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\",\"description\":\"disable the withdrawal limit.\"}\n receivedPermissions.1:\n- {\"permission\":\"interact\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\",\"description\":\"enable the withdrawal limit.\"}\n receivedPermissions.0.permission:\n- \"interact\"\n+ \"upgrade\"\n receivedPermissions.0.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n }\n```\n\n```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n issuedPermissions.6:\n- {\"permission\":\"interact\",\"to\":\"0xFF57A3bB6465501c993acF8f3b29125a862661C0\",\"description\":\"disable the withdrawal limit.\",\"via\":[]}\n issuedPermissions.5:\n- {\"permission\":\"upgrade\",\"to\":\"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\",\"via\":[]}\n issuedPermissions.4.permission:\n- \"interact\"\n+ \"upgrade\"\n issuedPermissions.4.description:\n- \"enable the withdrawal limit.\"\n issuedPermissions.3.to:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n issuedPermissions.2.permission:\n- \"interact\"\n+ \"upgrade\"\n issuedPermissions.2.to:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n issuedPermissions.2.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n issuedPermissions.1.to:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n issuedPermissions.0.to:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n+++ description: NOT the same as the `GOVERNANCE_ADMIN` access control role (see implementation) but managed by it.\n+++ severity: HIGH\n values.$admin:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ [\"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\",\"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"]\n values.accessControl.GOVERNANCE_ADMIN.members.1:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.accessControl.GOVERNANCE_ADMIN.members.0:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.accessControl.TOKEN_ADMIN.members.0:\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove it via the `GovernanceAdminOnly` modifier or as a role admin in the implementation.\n values.govAdminAC.1:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove it via the `GovernanceAdminOnly` modifier or as a role admin in the implementation.\n values.govAdminAC.0:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAdminAC.1:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAdminAC.0:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAgentAC.1:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAgentAC.0:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n }\n```\n\n```diff\n contract Paradex Multisig 2 (0xFF57A3bB6465501c993acF8f3b29125a862661C0) {\n +++ description: None\n receivedPermissions.3:\n+ {\"permission\":\"upgrade\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\"}\n values.$members.5:\n- \"0xFE5956a7cD804b93379DE807cB0BE8D0Ad0Cb571\"\n values.$members.4:\n- \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n+ \"0xFE5956a7cD804b93379DE807cB0BE8D0Ad0Cb571\"\n values.$members.3:\n- \"0x921D35Fc5e1667741c9f3af0303e29b8aB3dC79B\"\n+ \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n values.$members.2:\n- \"0xd123e24C318a14BaF01f487d59D8Ce3F8E1aeE5C\"\n+ \"0x921D35Fc5e1667741c9f3af0303e29b8aB3dC79B\"\n values.multisigThreshold:\n- \"3 of 6 (50%)\"\n+ \"3 of 5 (60%)\"\n }\n```"
}
]
},
{
"id": "9ffdaeb6",
"date": "Wed, 16 Apr 2025 12:53:38 GMT",
"timestamp": 1744808018,
"description": "EOA removed from main contract, now 'only' present in the main bridge.",
"isHighSeverity": true,
"changeCount": 34,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract undefined (0x0000000000000000000000000000000000000020) {\n +++ description: None\n receivedPermissions:\n- [{\"permission\":\"interact\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\",\"description\":\"disable the withdrawal limit.\"},{\"permission\":\"interact\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\",\"description\":\"enable the withdrawal limit.\"},{\"permission\":\"interact\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\",\"description\":\"manage critical access control roles and the role that can upgrade the implementation.\"}]\n }\n```\n\n```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n issuedPermissions.9:\n- {\"permission\":\"interact\",\"to\":\"0xFF57A3bB6465501c993acF8f3b29125a862661C0\",\"description\":\"disable the withdrawal limit.\",\"via\":[]}\n issuedPermissions.8:\n- {\"permission\":\"upgrade\",\"to\":\"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\",\"via\":[]}\n issuedPermissions.7:\n- {\"permission\":\"interact\",\"to\":\"0xFF57A3bB6465501c993acF8f3b29125a862661C0\",\"description\":\"enable the withdrawal limit.\",\"via\":[]}\n issuedPermissions.6.to:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n issuedPermissions.5.permission:\n- \"interact\"\n+ \"upgrade\"\n issuedPermissions.5.to:\n- \"0x0000000000000000000000000000000000000020\"\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n issuedPermissions.5.description:\n- \"disable the withdrawal limit.\"\n issuedPermissions.4.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n issuedPermissions.3.description:\n- \"enable the withdrawal limit.\"\n+ \"disable the withdrawal limit.\"\n issuedPermissions.2.to:\n- \"0x0000000000000000000000000000000000000020\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n issuedPermissions.2.description:\n- \"enable the withdrawal limit.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n issuedPermissions.1.description:\n- \"manage critical access control roles and the role that can upgrade the implementation.\"\n+ \"enable the withdrawal limit.\"\n issuedPermissions.0.to:\n- \"0x0000000000000000000000000000000000000020\"\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n values.accessControl.GOVERNANCE_ADMIN.members.2:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.accessControl.GOVERNANCE_ADMIN.members.1:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.accessControl.GOVERNANCE_ADMIN.members.0:\n- \"0x0000000000000000000000000000000000000020\"\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n values.accessControl.SECURITY_ADMIN.members.1:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove it via the `GovernanceAdminOnly` modifier or as a role admin in the implementation.\n values.govAdminAC.2:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove it via the `GovernanceAdminOnly` modifier or as a role admin in the implementation.\n values.govAdminAC.1:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove it via the `GovernanceAdminOnly` modifier or as a role admin in the implementation.\n values.govAdminAC.0:\n- \"0x0000000000000000000000000000000000000020\"\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n values.secAdminAC.2:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAdminAC.1:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAdminAC.0:\n- \"0x0000000000000000000000000000000000000020\"\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n values.secAgentAC.2:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAgentAC.1:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAgentAC.0:\n- \"0x0000000000000000000000000000000000000020\"\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n }\n```\n\n```diff\n contract Paradex (0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, allows users to consume L2 -> L1 messages and send L1 -> L2 messages. Critical configuration values for the L2's logic are defined here by various governance roles.\n issuedPermissions.4:\n- {\"permission\":\"operateStarknet\",\"to\":\"0xC70ae19B5FeAA5c19f576e621d2bad9771864fe2\",\"via\":[]}\n issuedPermissions.3:\n- {\"permission\":\"upgrade\",\"to\":\"0x2E6fe05FE3f9a6622092Fd75439D53f01eb8A74f\",\"via\":[]}\n issuedPermissions.2.permission:\n- \"upgrade\"\n+ \"operateStarknet\"\n issuedPermissions.2.to:\n- \"0x0a64d3D7747549aF6d65C225D56ac8f71e436B93\"\n+ \"0xC70ae19B5FeAA5c19f576e621d2bad9771864fe2\"\n issuedPermissions.1.permission:\n- \"governStarknet\"\n+ \"upgrade\"\n issuedPermissions.1.to:\n- \"0x2E6fe05FE3f9a6622092Fd75439D53f01eb8A74f\"\n+ \"0x0a64d3D7747549aF6d65C225D56ac8f71e436B93\"\n+++ description: Permissioned to upgrade the proxy implementation and access `onlyGovernance` restricted calls.\n+++ severity: HIGH\n values.$admin:\n- [\"0x2E6fe05FE3f9a6622092Fd75439D53f01eb8A74f\",\"0x0a64d3D7747549aF6d65C225D56ac8f71e436B93\"]\n+ \"0x0a64d3D7747549aF6d65C225D56ac8f71e436B93\"\n }\n```"
}
]
},
{
"id": "9f90f2a1",
"date": "Fri, 11 Apr 2025 06:46:29 GMT",
"timestamp": 1744353989,
"description": "MS signer changes.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex Multisig 2 (0xFF57A3bB6465501c993acF8f3b29125a862661C0) {\n +++ description: None\n values.$members.5:\n+ \"0xFE5956a7cD804b93379DE807cB0BE8D0Ad0Cb571\"\n values.$members.4:\n- \"0xFE5956a7cD804b93379DE807cB0BE8D0Ad0Cb571\"\n+ \"0x3552F50fFe9517d8c6913992F3d4bA8030Ca1512\"\n values.multisigThreshold:\n- \"3 of 5 (60%)\"\n+ \"3 of 6 (50%)\"\n }\n```"
}
]
},
{
"id": "72bc3be7",
"date": "Wed, 09 Apr 2025 13:23:27 GMT",
"timestamp": 1744205007,
"description": "Upgrade to latest SN stack contracts (includes programHash).",
"isHighSeverity": true,
"changeCount": 15,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n +++ description: Central rollup contract. Receives (verified) state roots from the Sequencer, allows users to consume L2 -> L1 messages and send L1 -> L2 messages. Critical configuration values for the L2's logic are defined here by various governance roles.\n sourceHashes.1:\n- \"0x2738adbe41339934ae57e5c96fb9d7e42a43ba2b112878bc9227cc1c81de8ee6\"\n+ \"0x8074e96abc7cacf654908c0111c69027cf599f3b67332f3680c5de768a2d6dfe\"\n values.$implementation:\n- \"0x47103A9b801eB6a63555897d399e4b7c1c8Eb5bC\"\n+ \"0x2793010E6711Acd5C46ed17f2183a9d58db71e04\"\n values.$pastUpgrades.3:\n+ [\"2023-07-20T11:05:35.000Z\",\"0x7862f09db4097dc43ad1972ca9ee11eaf64a1fbfdb21fe6f84ad6b68d4b9fa56\",[\"0xA964D693cd45FCBe4303524E0EFe0988cfF5ed08\"]]\n values.$pastUpgrades.2.2:\n- \"2023-07-20T11:05:35.000Z\"\n+ \"2025-04-07T20:04:59.000Z\"\n values.$pastUpgrades.2.1:\n- \"0x7862f09db4097dc43ad1972ca9ee11eaf64a1fbfdb21fe6f84ad6b68d4b9fa56\"\n+ [\"0x2793010E6711Acd5C46ed17f2183a9d58db71e04\"]\n values.$pastUpgrades.2.0:\n- [\"0xA964D693cd45FCBe4303524E0EFe0988cfF5ed08\"]\n+ \"0x63d55b2c0cfa3b1866e99b66c6632e5474e177ce0e3b5d5b68ed8b801d76cc53\"\n values.$upgradeCount:\n- 3\n+ 4\n values.aggregatorHashMapped:\n- \"StarkNet Aggregator (old)\"\n+ \"Starknet Aggregator (since v0.13.4)\"\n values.aggregatorProgramHash:\n- \"1161178844461337253856226043908368523817098764221830529880464854589141231910\"\n+ \"273279642033703284306509103355536170486431195329675679055627933497997642494\"\n values.identify:\n- \"StarkWare_Starknet_2024_9\"\n+ \"StarkWare_Starknet_2025_10\"\n values.implementation:\n- \"0x47103A9b801eB6a63555897d399e4b7c1c8Eb5bC\"\n+ \"0x2793010E6711Acd5C46ed17f2183a9d58db71e04\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"853638403225561750106379562222782223909906501242604214771127703946595519856\"\n+ \"2534935718742676028234156221136000178296467523045214874259117268197132196876\"\n values.programHashHistory.5:\n+ \"853638403225561750106379562222782223909906501242604214771127703946595519856\"\n values.programHashMapped:\n- \"StarkNet OS (Paradex)\"\n+ \"2534935718742676028234156221136000178296467523045214874259117268197132196876\"\n values.feeCollector:\n+ \"0x0000000000000000000000000000000000000000\"\n }\n```"
}
]
},
{
"id": "f5c35e78",
"date": "Sun, 06 Apr 2025 08:03:15 GMT",
"timestamp": 1743926595,
"description": "usdc bridge gov changes.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n values.accessControl.APP_GOVERNOR.members.1:\n- \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.accessControl.APP_GOVERNOR.members.0:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.accessControl.APP_ROLE_ADMIN.members.1:\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n }\n```"
}
]
},
{
"id": "51a0eb9c",
"date": "Thu, 03 Apr 2025 09:11:47 GMT",
"timestamp": 1743671507,
"description": "Gov roles granted in the USDC bridge.",
"isHighSeverity": false,
"changeCount": 16,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n issuedPermissions.9:\n+ {\"permission\":\"interact\",\"to\":\"0xFF57A3bB6465501c993acF8f3b29125a862661C0\",\"description\":\"disable the withdrawal limit.\",\"via\":[]}\n issuedPermissions.8:\n+ {\"permission\":\"upgrade\",\"to\":\"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\",\"via\":[]}\n issuedPermissions.7:\n+ {\"permission\":\"interact\",\"to\":\"0xFF57A3bB6465501c993acF8f3b29125a862661C0\",\"description\":\"enable the withdrawal limit.\",\"via\":[]}\n issuedPermissions.6.permission:\n- \"upgrade\"\n+ \"interact\"\n issuedPermissions.6.description:\n+ \"disable the withdrawal limit.\"\n issuedPermissions.5.to:\n- \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+ \"0x0000000000000000000000000000000000000020\"\n issuedPermissions.4.to:\n- \"0x0000000000000000000000000000000000000020\"\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n issuedPermissions.4.description:\n- \"disable the withdrawal limit.\"\n+ \"manage critical access control roles and the role that can upgrade the implementation.\"\n values.accessControl.GOVERNANCE_ADMIN.members.2:\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.accessControl.UPGRADE_GOVERNOR.members.0:\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n+++ description: This role is not the proxy upgrade admin role, but can assign / remove it via the `GovernanceAdminOnly` modifier or as a role admin in the implementation.\n values.govAdminAC.2:\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAdminAC.2:\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n values.secAgentAC.2:\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n }\n```\n\n```diff\n contract Paradex Multisig 2 (0xFF57A3bB6465501c993acF8f3b29125a862661C0) {\n +++ description: None\n values.$members.4:\n+ \"0xFE5956a7cD804b93379DE807cB0BE8D0Ad0Cb571\"\n values.multisigThreshold:\n- \"3 of 4 (75%)\"\n+ \"3 of 5 (60%)\"\n receivedPermissions:\n+ [{\"permission\":\"interact\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\",\"description\":\"disable the withdrawal limit.\"},{\"permission\":\"interact\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\",\"description\":\"enable the withdrawal limit.\"},{\"permission\":\"interact\",\"from\":\"0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3\",\"description\":\"manage critical access control roles and the role that can upgrade the implementation.\"}]\n }\n```"
}
]
},
{
"id": "faa42c7b",
"date": "Mon, 31 Mar 2025 10:22:31 GMT",
"timestamp": 1743416551,
"description": "new appgovernor, max USDC balance raise.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: Standard Starkware bridge escrow (single token). Withdrawals can be throttled to 5% of the locked funds per 24 hours.\n values.accessControl.APP_GOVERNOR.members.1:\n+ \"0xFF57A3bB6465501c993acF8f3b29125a862661C0\"\n+++ description: The maximum total balance that can be locked in the bridge.\n values.maxTotalBalance:\n- 50000000000000\n+ 60000000000000\n }\n```\n\n```diff\n+ Status: CREATED\n contract Paradex Multisig 2 (0xFF57A3bB6465501c993acF8f3b29125a862661C0)\n +++ description: None\n```"
}
]
},
{
"id": "af50ff09",
"date": "Wed, 15 Jan 2025 12:14:27 GMT",
"timestamp": 1736943267,
"description": "Bridging limit increased to 50M USDC.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: None\n+++ description: Maximum bridge balance allowed (currentBalance + depositAmount <= maxTotalBalance)\n+++ severity: MEDIUM\n values.maxTotalBalance:\n- 30000000000000\n+ 50000000000000\n }\n```"
}
]
},
{
"id": "f6dee89e",
"date": "Mon, 09 Sep 2024 06:43:56 GMT",
"timestamp": 1725864236,
"description": "Aggregator compatibility upgrade. (See also recent Starknet upgrade to the same implementation / programHashes)\n- add aggregatorProgramHash and support aggregation\n- add multiple blob support",
"isHighSeverity": true,
"changeCount": 5,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n +++ description: None\n values.$implementation:\n- \"0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24\"\n+ \"0x47103A9b801eB6a63555897d399e4b7c1c8Eb5bC\"\n values.identify:\n- \"StarkWare_Starknet_2024_8\"\n+ \"StarkWare_Starknet_2024_9\"\n values.implementation:\n- \"0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24\"\n+ \"0x47103A9b801eB6a63555897d399e4b7c1c8Eb5bC\"\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ severity: HIGH\n values.programHash:\n- \"3383082961563516565935611087683915026448707331436034043529592588079494402084\"\n+ \"853638403225561750106379562222782223909906501242604214771127703946595519856\"\n values.aggregatorProgramHash:\n+ \"1161178844461337253856226043908368523817098764221830529880464854589141231910\"\n }\n```"
}
]
},
{
"id": "76a0285d",
"date": "Tue, 30 Jul 2024 15:53:58 GMT",
"timestamp": 1722354838,
"description": "Accesscontrol roles of APP_GOVERNOR and APP_ROLE_ADMIN are given to the EOA that already has the upgrade admin and GOVERNANCE_ADMIN roles, not adding any new net permissions. `maxTotalBalance' raised from 20M to 30M USDC.",
"isHighSeverity": false,
"changeCount": 3,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: None\n values.accessControl.APP_GOVERNOR.members.0:\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n values.accessControl.APP_ROLE_ADMIN.members.0:\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n+++ description: Maximum bridge balance allowed (currentBalance + depositAmount <= maxTotalBalance)\n+++ severity: MEDIUM\n values.maxTotalBalance:\n- 20000000000000\n+ 30000000000000\n }\n```"
}
]
},
{
"id": "286de942",
"date": "Mon, 17 Jun 2024 08:11:27 GMT",
"timestamp": 1718611887,
"description": "The proxyGovernance is given the roles GOVERNANCE_ADMIN (can give governance roles) and SECURITY_ADMIN (can activate withdrawal limit) on the paradex USDC bridge. This is in line with the config before the implementation upgrade and already reflected on the project page.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: None\n values.accessControl.GOVERNANCE_ADMIN.members.1:\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n values.accessControl.SECURITY_ADMIN.members.1:\n+ \"0xa1F2ecaC6E3E593ED58B9ac5fa4B97962892E77c\"\n }\n```"
}
]
},
{
"id": "9403394d",
"date": "Wed, 29 May 2024 07:11:17 GMT",
"timestamp": 1716966677,
"description": "The USDC Bridge (only bridge in use by Paradex) implementation is upgraded to the one used on starknet currently (code-identical). The ProxyGovernor (allowed to upgrade the implementation) stays the same, and new accessControl roles are not set.\n\nSee also the notes `# Diff at Tue, 13 Feb 2024 12:27:47 GMT` in `discovery/starknet/ethereum/diffHistory.md`.",
"isHighSeverity": true,
"changeCount": 14,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: None\n upgradeability.implementation:\n- \"0x6Fd62239f3A441d1898683C5a84ce3681bB42C16\"\n+ \"0x8A4e51ff0F2a45899519e6049FB2D1F038Be1e77\"\n implementations.0:\n- \"0x6Fd62239f3A441d1898683C5a84ce3681bB42C16\"\n+ \"0x8A4e51ff0F2a45899519e6049FB2D1F038Be1e77\"\n values.accessControl.GOVERNANCE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[\"0x0000000000000000000000000000000000000020\"]}\n values.accessControl.APP_GOVERNOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.APP_ROLE_ADMIN:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.OPERATOR:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.TOKEN_ADMIN:\n+ {\"adminRole\":\"APP_ROLE_ADMIN\",\"members\":[]}\n values.accessControl.UPGRADE_GOVERNOR:\n+ {\"adminRole\":\"GOVERNANCE_ADMIN\",\"members\":[]}\n values.accessControl.SECURITY_ADMIN:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[\"0x0000000000000000000000000000000000000020\"]}\n values.accessControl.SECURITY_AGENT:\n+ {\"adminRole\":\"SECURITY_ADMIN\",\"members\":[]}\n values.identify:\n- \"StarkWare_StarknetERC20Bridge_2022_1\"\n+ \"StarkWare_StarknetERC20Bridge_2.0_4\"\n values.implementation:\n- \"0x6Fd62239f3A441d1898683C5a84ce3681bB42C16\"\n+ \"0x8A4e51ff0F2a45899519e6049FB2D1F038Be1e77\"\n values.isActive:\n- true\n values.maxDeposit:\n- 500000000000\n+ \"115792089237316195423570985008687907853269984665640564039457584007913129639935\"\n }\n```"
}
]
},
{
"id": "b8ad4870",
"date": "Tue, 19 Mar 2024 08:27:29 GMT",
"timestamp": 1710836849,
"description": "Program hash changed.",
"isHighSeverity": true,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n +++ description: None\n+++ description: The L2 programHash which is a hash of the L2 state machine logic. Liveness config MUST be changed in the .ts as soon as this is updated.\n+++ type: CODE_CHANGE\n+++ severity: HIGH\n values.programHash:\n- \"109586309220455887239200613090920758778188956576212125550190099009305121410\"\n+ \"3383082961563516565935611087683915026448707331436034043529592588079494402084\"\n }\n```"
}
]
},
{
"id": "0f57dc65",
"date": "Thu, 14 Mar 2024 13:11:57 GMT",
"timestamp": 1710421917,
"description": "Upgraded to the new implementation to support blobs - it's actually the same implementation used by Starknet so check its changelog for the changes. The program hash is also the same.",
"isHighSeverity": true,
"changeCount": 6,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n +++ description: None\n upgradeability.implementation:\n- \"0xA964D693cd45FCBe4303524E0EFe0988cfF5ed08\"\n+ \"0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24\"\n upgradeability.proxyGovernance.1:\n+ \"0x0a64d3D7747549aF6d65C225D56ac8f71e436B93\"\n implementations.0:\n- \"0xA964D693cd45FCBe4303524E0EFe0988cfF5ed08\"\n+ \"0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24\"\n values.identify:\n- \"StarkWare_Starknet_2023_6\"\n+ \"StarkWare_Starknet_2024_8\"\n values.implementation:\n- \"0xA964D693cd45FCBe4303524E0EFe0988cfF5ed08\"\n+ \"0x6E0aCfDC3cf17A7f99ed34Be56C3DFb93F464e24\"\n values.programHash:\n- \"2479841346739966073527450029179698923866252973805981504232089731754042431018\"\n+ \"109586309220455887239200613090920758778188956576212125550190099009305121410\"\n }\n```"
}
]
},
{
"id": "b8eed644",
"date": "Mon, 11 Mar 2024 11:54:57 GMT",
"timestamp": 1710158097,
"description": "The maximum allowed balance of the bridge in USDC is doubled from 10 to 20 million USDC.",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n +++ description: None\n values.maxTotalBalance:\n- 10000000000000\n+ 20000000000000\n }\n```"
}
]
},
{
"id": "68dc11f4",
"date": "Wed, 31 Jan 2024 11:48:50 GMT",
"timestamp": 1706701730,
"description": "Updated the `programHash` and `configHash`.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n values.configHash:\n- \"1946969884474626573154270293480115261427695072308490075958253509832033340430\"\n+ \"2741190170141984203224468507008497105532196084369172236871397222510074358631\"\n values.programHash:\n- \"54878256403880350656938046611252303365750679698042371543935159963667935317\"\n+ \"2479841346739966073527450029179698923866252973805981504232089731754042431018\"\n }\n```"
}
]
},
{
"id": "28f10f0b",
"date": "Thu, 11 Jan 2024 12:24:29 GMT",
"timestamp": 1704975869,
"description": "The program hash is updated (with tx 0x4dc1b43e0b932f665a95af3d2cb61f280a1b7a63f7464b3b27edfde5d183bd8a).",
"isHighSeverity": false,
"changeCount": 1,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n values.programHash:\n- \"3258367057337572248818716706664617507069572185152472699066582725377748079373\"\n+ \"54878256403880350656938046611252303365750679698042371543935159963667935317\"\n }\n```"
}
]
},
{
"id": "195f0220",
"date": "Fri, 05 Jan 2024 13:21:53 GMT",
"timestamp": 1704460913,
"description": "A new Starknet governor (2/5 MultiSig) is added to the Paradex contract.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract Paradex (0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n values.governors[1]:\n+ \"0x0a64d3D7747549aF6d65C225D56ac8f71e436B93\"\n }\n```\n\n```diff\n+ Status: CREATED\n contract GnosisSafe (0x0a64d3D7747549aF6d65C225D56ac8f71e436B93) {\n }\n```"
}
]
},
{
"id": "21cffcd8",
"date": "Mon, 18 Dec 2023 11:40:25 GMT",
"timestamp": 1702899625,
"description": "Change in the deposit limits of the USDC Bridge contract:\n\n- The maximum amount per deposit is increased to 500K USDC\n- The maximum amount that can be locked across all users is increased to 10M USDC",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n values.maxDeposit:\n- 200000000000\n+ 500000000000\n values.maxTotalBalance:\n- 5000000000000\n+ 10000000000000\n }\n```"
}
]
},
{
"id": "9afd9f2f",
"date": "Tue, 31 Oct 2023 10:57:48 GMT",
"timestamp": 1698749868,
"description": "Update discovery to include the multisig threshold.",
"isHighSeverity": false,
"changeCount": 2,
"sections": [
{
"kind": "watched-changes",
"body": "```diff\n+ Status: CREATED\n contract USDC Bridge (0xE3cbE3A636AB6A754e9e41B12b09d09Ce9E53Db3) {\n }\n```\n\n```diff\n+ Status: CREATED\n contract Paradex (0xF338cad020D506e8e3d9B4854986E0EcE6C23640) {\n }\n```"
}
]
}
]