github.com/ethereum-optimism/optimism@v1.7.2/packages/contracts-bedrock/test/kontrol/proofs/OptimismPortal.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      IOptimismPortal as OptimismPortal,
     9      ISuperchainConfig as SuperchainConfig
    10  } from "./interfaces/KontrolInterfaces.sol";
    11  
    12  contract OptimismPortalKontrol is DeploymentSummary, KontrolUtils {
    13      OptimismPortal optimismPortal;
    14      SuperchainConfig superchainConfig;
    15  
    16      /// @dev Inlined setUp function for faster Kontrol performance
    17      ///      Tracking issue: https://github.com/runtimeverification/kontrol/issues/282
    18      function setUpInlined() public {
    19          optimismPortal = OptimismPortal(payable(optimismPortalProxyAddress));
    20          superchainConfig = SuperchainConfig(superchainConfigProxyAddress);
    21      }
    22  
    23      function prove_finalizeWithdrawalTransaction_paused(Types.WithdrawalTransaction calldata _tx) external {
    24          setUpInlined();
    25  
    26          // Pause Optimism Portal
    27          vm.prank(optimismPortal.guardian());
    28          superchainConfig.pause("identifier");
    29  
    30          vm.expectRevert("OptimismPortal: paused");
    31          optimismPortal.finalizeWithdrawalTransaction(_tx);
    32      }
    33  
    34      /// @dev Function containing the logic for prove_proveWithdrawalTransaction_paused
    35      ///      The reason for this is that we want the _withdrawalProof to range in size from
    36      ///      0 to 10. These 11 proofs will exercise the same logic, which is contained in this function
    37      function prove_proveWithdrawalTransaction_paused_internal(
    38          Types.WithdrawalTransaction memory _tx,
    39          uint256 _l2OutputIndex,
    40          Types.OutputRootProof calldata _outputRootProof,
    41          bytes[] memory _withdrawalProof
    42      )
    43          internal
    44      {
    45          setUpInlined();
    46  
    47          // Pause Optimism Portal
    48          vm.prank(optimismPortal.guardian());
    49          superchainConfig.pause("identifier");
    50  
    51          vm.expectRevert("OptimismPortal: paused");
    52          optimismPortal.proveWithdrawalTransaction(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
    53      }
    54  
    55      /// @custom:kontrol-array-length-equals _withdrawalProof: 10,
    56      /// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
    57      function prove_proveWithdrawalTransaction_paused10(
    58          Types.WithdrawalTransaction memory _tx,
    59          uint256 _l2OutputIndex,
    60          Types.OutputRootProof calldata _outputRootProof,
    61          bytes[] calldata _withdrawalProof
    62      )
    63          external
    64      {
    65          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
    66      }
    67  
    68      /// @custom:kontrol-array-length-equals _withdrawalProof: 9,
    69      /// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
    70      function prove_proveWithdrawalTransaction_paused9(
    71          Types.WithdrawalTransaction memory _tx,
    72          uint256 _l2OutputIndex,
    73          Types.OutputRootProof calldata _outputRootProof,
    74          bytes[] calldata _withdrawalProof
    75      )
    76          external
    77      {
    78          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
    79      }
    80  
    81      /// @custom:kontrol-array-length-equals _withdrawalProof: 8,
    82      /// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
    83      function prove_proveWithdrawalTransaction_paused8(
    84          Types.WithdrawalTransaction memory _tx,
    85          uint256 _l2OutputIndex,
    86          Types.OutputRootProof calldata _outputRootProof,
    87          bytes[] calldata _withdrawalProof
    88      )
    89          external
    90      {
    91          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
    92      }
    93  
    94      /// @custom:kontrol-array-length-equals _withdrawalProof: 7,
    95      /// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
    96      function prove_proveWithdrawalTransaction_paused7(
    97          Types.WithdrawalTransaction memory _tx,
    98          uint256 _l2OutputIndex,
    99          Types.OutputRootProof calldata _outputRootProof,
   100          bytes[] calldata _withdrawalProof
   101      )
   102          external
   103      {
   104          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
   105      }
   106  
   107      /// @custom:kontrol-array-length-equals _withdrawalProof: 6,
   108      /// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
   109      function prove_proveWithdrawalTransaction_paused6(
   110          Types.WithdrawalTransaction memory _tx,
   111          uint256 _l2OutputIndex,
   112          Types.OutputRootProof calldata _outputRootProof,
   113          bytes[] calldata _withdrawalProof
   114      )
   115          external
   116      {
   117          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
   118      }
   119  
   120      /// @custom:kontrol-array-length-equals _withdrawalProof: 5,
   121      /// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
   122      function prove_proveWithdrawalTransaction_paused5(
   123          Types.WithdrawalTransaction memory _tx,
   124          uint256 _l2OutputIndex,
   125          Types.OutputRootProof calldata _outputRootProof,
   126          bytes[] calldata _withdrawalProof
   127      )
   128          external
   129      {
   130          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
   131      }
   132  
   133      /// @custom:kontrol-array-length-equals _withdrawalProof: 4,
   134      /// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
   135      function prove_proveWithdrawalTransaction_paused4(
   136          Types.WithdrawalTransaction memory _tx,
   137          uint256 _l2OutputIndex,
   138          Types.OutputRootProof calldata _outputRootProof,
   139          bytes[] calldata _withdrawalProof
   140      )
   141          external
   142      {
   143          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
   144      }
   145  
   146      /// @custom:kontrol-array-length-equals _withdrawalProof: 3,
   147      /// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
   148      function prove_proveWithdrawalTransaction_paused3(
   149          Types.WithdrawalTransaction memory _tx,
   150          uint256 _l2OutputIndex,
   151          Types.OutputRootProof calldata _outputRootProof,
   152          bytes[] calldata _withdrawalProof
   153      )
   154          external
   155      {
   156          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
   157      }
   158  
   159      /// @custom:kontrol-array-length-equals _withdrawalProof: 2,
   160      /// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
   161      function prove_proveWithdrawalTransaction_paused2(
   162          Types.WithdrawalTransaction memory _tx,
   163          uint256 _l2OutputIndex,
   164          Types.OutputRootProof calldata _outputRootProof,
   165          bytes[] calldata _withdrawalProof
   166      )
   167          external
   168      {
   169          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
   170      }
   171  
   172      /// @custom:kontrol-array-length-equals _withdrawalProof: 1,
   173      /// @custom:kontrol-bytes-length-equals _withdrawalProof: 600,
   174      function prove_proveWithdrawalTransaction_paused1(
   175          Types.WithdrawalTransaction memory _tx,
   176          uint256 _l2OutputIndex,
   177          Types.OutputRootProof calldata _outputRootProof,
   178          bytes[] calldata _withdrawalProof
   179      )
   180          external
   181      {
   182          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
   183      }
   184  
   185      function prove_proveWithdrawalTransaction_paused0(
   186          Types.WithdrawalTransaction memory _tx,
   187          uint256 _l2OutputIndex,
   188          Types.OutputRootProof calldata _outputRootProof
   189      )
   190          external
   191      {
   192          bytes[] memory _withdrawalProof = new bytes[](0);
   193          prove_proveWithdrawalTransaction_paused_internal(_tx, _l2OutputIndex, _outputRootProof, _withdrawalProof);
   194      }
   195  }