github.com/ethereum-optimism/optimism@v1.7.2/packages/contracts-bedrock/test/setup/Bridge_Initializer.sol (about)

     1  // SPDX-License-Identifier: MIT
     2  pragma solidity 0.8.15;
     3  
     4  import { CommonTest } from "test/setup/CommonTest.sol";
     5  import { ERC20 } from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
     6  import { OptimismMintableERC20 } from "src/universal/OptimismMintableERC20.sol";
     7  import { LegacyMintableERC20 } from "src/legacy/LegacyMintableERC20.sol";
     8  
     9  /// @title Bridge_Initializer
    10  /// @dev This contract extends the CommonTest contract with token deployments
    11  ///      meant to be used with the bridge contracts.
    12  contract Bridge_Initializer is CommonTest {
    13      ERC20 L1Token;
    14      ERC20 BadL1Token;
    15      OptimismMintableERC20 L2Token;
    16      LegacyMintableERC20 LegacyL2Token;
    17      ERC20 NativeL2Token;
    18      ERC20 BadL2Token;
    19      OptimismMintableERC20 RemoteL1Token;
    20  
    21      function setUp() public virtual override {
    22          super.setUp();
    23  
    24          L1Token = new ERC20("Native L1 Token", "L1T");
    25  
    26          LegacyL2Token = new LegacyMintableERC20({
    27              _l2Bridge: address(l2StandardBridge),
    28              _l1Token: address(L1Token),
    29              _name: string.concat("LegacyL2-", L1Token.name()),
    30              _symbol: string.concat("LegacyL2-", L1Token.symbol())
    31          });
    32          vm.label(address(LegacyL2Token), "LegacyMintableERC20");
    33  
    34          // Deploy the L2 ERC20 now
    35          L2Token = OptimismMintableERC20(
    36              l2OptimismMintableERC20Factory.createStandardL2Token(
    37                  address(L1Token),
    38                  string(abi.encodePacked("L2-", L1Token.name())),
    39                  string(abi.encodePacked("L2-", L1Token.symbol()))
    40              )
    41          );
    42  
    43          BadL2Token = OptimismMintableERC20(
    44              l2OptimismMintableERC20Factory.createStandardL2Token(
    45                  address(1),
    46                  string(abi.encodePacked("L2-", L1Token.name())),
    47                  string(abi.encodePacked("L2-", L1Token.symbol()))
    48              )
    49          );
    50  
    51          NativeL2Token = new ERC20("Native L2 Token", "L2T");
    52  
    53          RemoteL1Token = OptimismMintableERC20(
    54              l1OptimismMintableERC20Factory.createStandardL2Token(
    55                  address(NativeL2Token),
    56                  string(abi.encodePacked("L1-", NativeL2Token.name())),
    57                  string(abi.encodePacked("L1-", NativeL2Token.symbol()))
    58              )
    59          );
    60  
    61          BadL1Token = OptimismMintableERC20(
    62              l1OptimismMintableERC20Factory.createStandardL2Token(
    63                  address(1),
    64                  string(abi.encodePacked("L1-", NativeL2Token.name())),
    65                  string(abi.encodePacked("L1-", NativeL2Token.symbol()))
    66              )
    67          );
    68      }
    69  }