From 7c5e70c6c2316e3c40d0cdf44b225b5562eb18d5 Mon Sep 17 00:00:00 2001 From: thedavidmeister Date: Mon, 7 Jul 2025 23:12:24 +0400 Subject: [PATCH] always approve --- .gas-snapshot | 1 + src/concrete/VerifyAlwaysApproved.sol | 18 ++++++++++++++++ ...fyAlwaysApproved.accountStatusAtTime.t.sol | 21 +++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 .gas-snapshot create mode 100644 src/concrete/VerifyAlwaysApproved.sol create mode 100644 test/src/concrete/VerifyAlwaysApproved.accountStatusAtTime.t.sol diff --git a/.gas-snapshot b/.gas-snapshot new file mode 100644 index 0000000..2735eb6 --- /dev/null +++ b/.gas-snapshot @@ -0,0 +1 @@ +VerifyAlwaysApprovedAccountStatusAtTimeTest:testAccountStatusAtTime(address,uint256) (runs: 256, μ: 66486, ~: 66486) \ No newline at end of file diff --git a/src/concrete/VerifyAlwaysApproved.sol b/src/concrete/VerifyAlwaysApproved.sol new file mode 100644 index 0000000..6dbeb31 --- /dev/null +++ b/src/concrete/VerifyAlwaysApproved.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity =0.8.25; + +import {IVerifyV1, VerifyStatus, VERIFY_STATUS_APPROVED} from "../interface/IVerifyV1.sol"; + +/// @title VerifyAlwaysApproved +/// @notice A concrete implementation of `IVerifyV1` that always returns +/// `VERIFY_STATUS_APPROVED` for any account at any timestamp. This can generally +/// be used as a "no-op" verifier that approves all accounts without any +/// conditions or checks. +contract VerifyAlwaysApproved is IVerifyV1 { + /// Always returns `VERIFY_STATUS_APPROVED` for any account. + /// @inheritdoc IVerifyV1 + function accountStatusAtTime(address, uint256) external pure override returns (VerifyStatus) { + return VERIFY_STATUS_APPROVED; + } +} diff --git a/test/src/concrete/VerifyAlwaysApproved.accountStatusAtTime.t.sol b/test/src/concrete/VerifyAlwaysApproved.accountStatusAtTime.t.sol new file mode 100644 index 0000000..ff84e89 --- /dev/null +++ b/test/src/concrete/VerifyAlwaysApproved.accountStatusAtTime.t.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity =0.8.25; + +import {Test} from "forge-std/Test.sol"; + +import {VerifyAlwaysApproved} from "src/concrete/VerifyAlwaysApproved.sol"; +import {VerifyStatus, VERIFY_STATUS_APPROVED} from "src/interface/IVerifyV1.sol"; + +contract VerifyAlwaysApprovedAccountStatusAtTimeTest is Test { + function testAccountStatusAtTime(address account, uint256 timestamp) external { + VerifyAlwaysApproved verifyAlwaysApproved = new VerifyAlwaysApproved(); + + VerifyStatus status = verifyAlwaysApproved.accountStatusAtTime(account, timestamp); + assertEq( + VerifyStatus.unwrap(status), + VerifyStatus.unwrap(VERIFY_STATUS_APPROVED), + "VerifyAlwaysApproved.accountStatusAtTime should always return VERIFY_STATUS_APPROVED" + ); + } +}