From 9b25c1fe46e6fa2595e0e370938828c2ec08f66d Mon Sep 17 00:00:00 2001 From: Diego Date: Tue, 28 May 2024 16:11:25 -0400 Subject: [PATCH] Create PendingBlkTimeAndNrAdvanceCheck.sol --- src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol diff --git a/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol b/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol new file mode 100644 index 000000000..0676845a3 --- /dev/null +++ b/src/mocks/PendingBlkTimeAndNrAdvanceCheck.sol @@ -0,0 +1,29 @@ +// Copyright 2021-2022, Offchain Labs, Inc. +// For license information, see https://github.com/OffchainLabs/nitro-contracts/blob/main/LICENSE +// SPDX-License-Identifier: BUSL-1.1 + +pragma solidity ^0.8.0; + +import "../precompiles/ArbSys.sol"; + +contract PendingBlkTimeAndNrAdvanceCheck { + uint256 immutable deployedAt; + uint256 immutable deployedAtBlock; + ArbSys constant ARB_SYS = ArbSys(address(100)); + + constructor() { + deployedAt = block.timestamp; + deployedAtBlock = ARB_SYS.arbBlockNumber(); + } + + function isAdvancing() external { + require(block.timestamp > deployedAt, "Time didn't advance"); + require(ARB_SYS.arbBlockNumber() > deployedAtBlock, "Block didn't advance"); + } + + function checkArbBlockHashReturnsLatest(bytes32 expected) external { + bytes32 gotBlockHash = ARB_SYS.arbBlockHash(ARB_SYS.arbBlockNumber() - 1); + require(gotBlockHash != bytes32(0), "ZERO_BLOCK_HASH"); + require(gotBlockHash == expected, "WRONG_BLOCK_HASH"); + } +}