github.com/ethereum-optimism/optimism@v1.7.2/packages/contracts-bedrock/test/kontrol/proofs/L1CrossDomainMessenger.k.sol (about)

     1  // SPDX-License-Identifier: MIT
     2  pragma solidity ^0.8.13;
     3  
     4  import { DeploymentSummary } from "./utils/DeploymentSummary.sol";
     5  import { KontrolUtils } from "./utils/KontrolUtils.sol";
     6  import {
     7      IL1CrossDomainMessenger as L1CrossDomainMessenger,
     8      ISuperchainConfig as SuperchainConfig
     9  } from "./interfaces/KontrolInterfaces.sol";
    10  
    11  contract L1CrossDomainMessengerKontrol is DeploymentSummary, KontrolUtils {
    12      L1CrossDomainMessenger l1CrossDomainMessenger;
    13      SuperchainConfig superchainConfig;
    14  
    15      /// @dev Inlined setUp function for faster Kontrol performance
    16      ///      Tracking issue: https://github.com/runtimeverification/kontrol/issues/282
    17      function setUpInlined() public {
    18          l1CrossDomainMessenger = L1CrossDomainMessenger(l1CrossDomainMessengerProxyAddress);
    19          superchainConfig = SuperchainConfig(superchainConfigProxyAddress);
    20      }
    21  
    22      function prove_relayMessage_paused(
    23          uint256 _nonce,
    24          address _sender,
    25          address _target,
    26          uint256 _value,
    27          uint256 _gas,
    28          bytes calldata _message
    29      )
    30          external
    31      {
    32          setUpInlined();
    33  
    34          // Pause System
    35          vm.prank(superchainConfig.guardian());
    36          superchainConfig.pause("identifier");
    37  
    38          vm.expectRevert("CrossDomainMessenger: paused");
    39          l1CrossDomainMessenger.relayMessage(_nonce, _sender, _target, _value, _gas, _message);
    40      }
    41  }