From 7a4b3e06b3935924e35eb3d9eb3e7b039ebba3b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Garamv=C3=B6lgyi?= Date: Thu, 2 Oct 2025 13:45:31 +0200 Subject: [PATCH] feat(validium): Toggle require proof in mock contract --- src/mocks/ScrollChainValidiumMock.sol | 32 ++++++++++++++++++++++++++- src/validium/ScrollChainValidium.sol | 3 +++ 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/mocks/ScrollChainValidiumMock.sol b/src/mocks/ScrollChainValidiumMock.sol index 1c40fc2f..f8005486 100644 --- a/src/mocks/ScrollChainValidiumMock.sol +++ b/src/mocks/ScrollChainValidiumMock.sol @@ -6,21 +6,51 @@ import {IL1MessageQueueV2} from "../L1/rollup/IL1MessageQueueV2.sol"; import {ScrollChainValidium} from "../validium/ScrollChainValidium.sol"; +/// @title ScrollChainValidiumMock +/// @dev This contract should only be deployed on testnet. contract ScrollChainValidiumMock is ScrollChainValidium { + /********************* + * Storage Variables * + *********************/ + + /// @notice If set to false, we allow finalizing bundles with an arbitrary (or empty) proof. + bool public requireProof; + + /*************** + * Constructor * + ***************/ + constructor( uint64 _chainId, address _messageQueueV2, address _verifier ) ScrollChainValidium(_chainId, _messageQueueV2, _verifier) {} + /************************ + * Restricted Functions * + ************************/ + + function setRequireProof(bool _requireProof) external onlyRole(DEFAULT_ADMIN_ROLE) { + requireProof = _requireProof; + } + + /********************** + * Internal Functions * + **********************/ + /// @dev Internal function to finalize a bundle. /// @param batchHeader The header of the last batch in this bundle. /// @param totalL1MessagesPoppedOverall The number of messages processed after this bundle. + /// @param aggrProof The bundle proof for this bundle. function _finalizeBundle( bytes calldata batchHeader, uint256 totalL1MessagesPoppedOverall, - bytes calldata + bytes calldata aggrProof ) internal virtual override { + if (requireProof) { + return super._finalizeBundle(batchHeader, totalL1MessagesPoppedOverall, aggrProof); + } + // actions before verification (, bytes32 batchHash, uint256 batchIndex, ) = _beforeFinalizeBatch(batchHeader); diff --git a/src/validium/ScrollChainValidium.sol b/src/validium/ScrollChainValidium.sol index a4880a3f..c8e56c57 100644 --- a/src/validium/ScrollChainValidium.sol +++ b/src/validium/ScrollChainValidium.sol @@ -112,6 +112,9 @@ contract ScrollChainValidium is AccessControlUpgradeable, PausableUpgradeable, I /// @dev An array of encryption keys. EncryptionKey[] public encryptionKeys; + /// @dev The storage slots reserved for future usage. + uint256[50] private __gap; + /*************** * Constructor * ***************/