supersim
allows testing multichain features locally. Previously, testing multichain features required complex docker setups or using a testnet. To see it in practice, this tutorial walks you through sending some ETH from the L1 to the L2.
Deposit ETH from the L1 into the L2 (L1 to L2 message passing)
1
Check initial balance on the L2 (chain 901)
Grab the balance of the sender account on L2:
2
Send the Ether
You can use two different methods to complete this action: First method:
Second method:
OptimismPortal
or L1StandardBridge
.First method: OptimismPortal
- Send the Ether to
OptimismPortal
contract of the respective L2 (on chain 900)
For chain 901, the contract is
0x37a418800d0c812A9dE83Bc80e993A6b76511B57
.- Initiate a bridge transaction on the L1:
Second method: L1StandardBridge
- Call
bridgeETH
function on theL1StandardBridgeProxy
/L1StandardBridge
contract of the respective L2 on L1 (chain 900)
For chain 901, the contract is
0x8d515eb0e5F293B16B6bBCA8275c060bAe0056B0
.- Initiate a bridge transaction on the L1:
3
Check the balance on the L2 (chain 901)
Verify that the ETH balance of the sender has increased on the L2:
Send an interoperable SuperchainERC20 token from chain 901 to 902 (L2 to L2 message passing)
In a typical L2 to L2 cross-chain transfer, two transactions are required:- Send transaction on the source chain – This initiates the token transfer on Chain 901.
- Relay message transaction on the destination chain – This relays the transfer details to Chain 902.
--interop.autorelay
flag. This flag automatically triggers the relay message transaction once the initial send transaction is completed on the source chain, improving the developer experience by removing the need to manually send the relay message.
1
Start `supersim` with the autorelayer enabled
2
Mint tokens to transfer on chain 901
Run the following command to mint 1000
L2NativeSuperchainERC20
tokens to the recipient address:3
Initiate the send transaction on chain 901
Send the tokens from Chain 901 to Chain 902 using the following command:
4
Wait for the relayed message to appear on chain 902
In a few seconds, you should see the RelayedMessage on chain 902:
5
Check the balance on chain 902
Verify that the balance of the L2NativeSuperchainERC20 on chain 902 has increased:
supersim
. This approach simplifies multichain testing, allowing you to focus on development without the need for complex setups or relying on external testnets.
Next steps
- Learn how to start Supersim in vanilla (non-forked) mode or forked mode.
- Explore the Supersim included contracts being used to help replicate the Superchain environment.