github.com/ethereum-optimism/optimism@v1.7.2/packages/contracts-bedrock/test/kontrol/proofs/L1StandardBridge.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 { Types } from "src/libraries/Types.sol";
     7  import {
     8      IL1StandardBridge as L1StandardBridge,
     9      IL1CrossDomainMessenger as CrossDomainMessenger,
    10      ISuperchainConfig as SuperchainConfig
    11  } from "./interfaces/KontrolInterfaces.sol";
    12  
    13  contract L1StandardBridgeKontrol is DeploymentSummary, KontrolUtils {
    14      L1StandardBridge l1standardBridge;
    15      SuperchainConfig superchainConfig;
    16  
    17      function setUpInlined() public {
    18          l1standardBridge = L1StandardBridge(payable(l1StandardBridgeProxyAddress));
    19          superchainConfig = SuperchainConfig(superchainConfigProxyAddress);
    20      }
    21  
    22      function prove_finalizeBridgeERC20_paused(
    23          address _localToken,
    24          address _remoteToken,
    25          address _from,
    26          address _to,
    27          uint256 _amount,
    28          bytes calldata _extraData
    29      )
    30          public
    31      {
    32          setUpInlined();
    33  
    34          // Pause Standard Bridge
    35          vm.prank(superchainConfig.guardian());
    36          superchainConfig.pause("identifier");
    37  
    38          vm.mockCall(
    39              address(l1standardBridge.messenger()),
    40              abi.encodeWithSelector(CrossDomainMessenger.xDomainMessageSender.selector),
    41              abi.encode(address(l1standardBridge.otherBridge()))
    42          );
    43  
    44          vm.prank(address(l1standardBridge.messenger()));
    45          vm.expectRevert("StandardBridge: paused");
    46          l1standardBridge.finalizeBridgeERC20(_localToken, _remoteToken, _from, _to, _amount, _extraData);
    47      }
    48  
    49      function prove_finalizeBridgeETH_paused(
    50          address _from,
    51          address _to,
    52          uint256 _amount,
    53          bytes calldata _extraData
    54      )
    55          public
    56      {
    57          setUpInlined();
    58  
    59          // Pause Standard Bridge
    60          vm.prank(superchainConfig.guardian());
    61          superchainConfig.pause("identifier");
    62  
    63          vm.mockCall(
    64              address(l1standardBridge.messenger()),
    65              abi.encodeWithSelector(CrossDomainMessenger.xDomainMessageSender.selector),
    66              abi.encode(address(l1standardBridge.otherBridge()))
    67          );
    68  
    69          vm.prank(address(l1standardBridge.messenger()));
    70          vm.expectRevert("StandardBridge: paused");
    71          l1standardBridge.finalizeBridgeETH(_from, _to, _amount, _extraData);
    72      }
    73  }