github.com/ethereum-optimism/optimism@v1.7.2/packages/sdk/test/contracts/MockBridge.sol (about)

     1  pragma solidity ^0.8.9;
     2  
     3  import { MockMessenger } from "./MockMessenger.sol";
     4  
     5  contract MockBridge {
     6      event ETHDepositInitiated(
     7          address indexed _from,
     8          address indexed _to,
     9          uint256 _amount,
    10          bytes _data
    11      );
    12  
    13      event ERC20DepositInitiated(
    14          address indexed _l1Token,
    15          address indexed _l2Token,
    16          address indexed _from,
    17          address _to,
    18          uint256 _amount,
    19          bytes _data
    20      );
    21  
    22      event ERC20WithdrawalFinalized(
    23          address indexed _l1Token,
    24          address indexed _l2Token,
    25          address indexed _from,
    26          address _to,
    27          uint256 _amount,
    28          bytes _data
    29      );
    30  
    31      event WithdrawalInitiated(
    32          address indexed _l1Token,
    33          address indexed _l2Token,
    34          address indexed _from,
    35          address _to,
    36          uint256 _amount,
    37          bytes _data
    38      );
    39  
    40      event DepositFinalized(
    41          address indexed _l1Token,
    42          address indexed _l2Token,
    43          address indexed _from,
    44          address _to,
    45          uint256 _amount,
    46          bytes _data
    47      );
    48  
    49      event DepositFailed(
    50          address indexed _l1Token,
    51          address indexed _l2Token,
    52          address indexed _from,
    53          address _to,
    54          uint256 _amount,
    55          bytes _data
    56      );
    57  
    58      struct TokenEventStruct {
    59          address l1Token;
    60          address l2Token;
    61          address from;
    62          address to;
    63          uint256 amount;
    64          bytes data;
    65      }
    66  
    67      MockMessenger public messenger;
    68  
    69      constructor(MockMessenger _messenger) {
    70          messenger = _messenger;
    71      }
    72  
    73      function emitERC20DepositInitiated(
    74          TokenEventStruct memory _params
    75      ) public {
    76          emit ERC20DepositInitiated(_params.l1Token, _params.l2Token, _params.from, _params.to, _params.amount, _params.data);
    77          messenger.triggerSentMessageEvent(
    78              MockMessenger.SentMessageEventParams(
    79                  address(0),
    80                  address(0),
    81                  hex"1234",
    82                  1234,
    83                  12345678,
    84                  0
    85              )
    86          );
    87      }
    88  
    89      function emitERC20WithdrawalFinalized(
    90          TokenEventStruct memory _params
    91      ) public {
    92          emit ERC20WithdrawalFinalized(_params.l1Token, _params.l2Token, _params.from, _params.to, _params.amount, _params.data);
    93      }
    94  
    95      function emitWithdrawalInitiated(
    96          TokenEventStruct memory _params
    97      ) public {
    98          emit WithdrawalInitiated(_params.l1Token, _params.l2Token, _params.from, _params.to, _params.amount, _params.data);
    99          messenger.triggerSentMessageEvent(
   100              MockMessenger.SentMessageEventParams(
   101                  address(0),
   102                  address(0),
   103                  hex"1234",
   104                  1234,
   105                  12345678,
   106                  0
   107              )
   108          );
   109      }
   110  
   111      function emitDepositFinalized(
   112          TokenEventStruct memory _params
   113      ) public {
   114          emit DepositFinalized(_params.l1Token, _params.l2Token, _params.from, _params.to, _params.amount, _params.data);
   115      }
   116  
   117      function emitDepositFailed(
   118          TokenEventStruct memory _params
   119      ) public {
   120          emit DepositFailed(_params.l1Token, _params.l2Token, _params.from, _params.to, _params.amount, _params.data);
   121      }
   122  
   123      function depositETH(
   124          uint32 _l2GasLimit,
   125          bytes memory _data
   126      )
   127          public
   128          payable
   129      {
   130          emit ETHDepositInitiated(
   131              msg.sender,
   132              msg.sender,
   133              msg.value,
   134              _data
   135          );
   136      }
   137  
   138      function withdraw(
   139          address _l2Token,
   140          uint256 _amount,
   141          uint32 _l1Gas,
   142          bytes calldata _data
   143      )
   144          public
   145          payable
   146      {
   147          emit WithdrawalInitiated(
   148              address(0),
   149              _l2Token,
   150              msg.sender,
   151              msg.sender,
   152              _amount,
   153              _data
   154          );
   155      }
   156  }