Co-authored-by: Haichen Shen <shenhaichen@gmail.com> Co-authored-by: Thegaram <th307q@gmail.com> Co-authored-by: colin <102356659+colinlyguo@users.noreply.github.com>
5.6 KiB
L2WETHGateway
L2WETHGateway
The L2WETHGateway contract is used to withdraw WETH token in layer 2 and finalize deposit WETH from layer 1.
The WETH tokens are not held in the gateway. It will first be unwrapped as Ether and then the Ether will be sent to the L2ScrollMessenger contract. On finalizing deposit, the Ether will be transfered from L2ScrollMessenger, then wrapped as WETH and finally transfer to recipient.
Methods
WETH
function WETH() external view returns (address)
The address of L2 WETH address.
Returns
| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |
counterpart
function counterpart() external view returns (address)
The address of corresponding L1/L2 Gateway contract.
Returns
| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |
finalizeDepositERC20
function finalizeDepositERC20(address _l1Token, address _l2Token, address _from, address _to, uint256 _amount, bytes _data) external payable
Complete a deposit from L1 to L2 and send fund to recipient's account in L2.
Make this function payable to handle WETH deposit/withdraw. The function should only be called by L2ScrollMessenger. The function should also only be called by L1ERC20Gateway in L1.
Parameters
| Name | Type | Description |
|---|---|---|
| _l1Token | address | undefined |
| _l2Token | address | undefined |
| _from | address | undefined |
| _to | address | undefined |
| _amount | uint256 | undefined |
| _data | bytes | undefined |
getL1ERC20Address
function getL1ERC20Address(address) external view returns (address)
Return the corresponding l1 token address given l2 token address.
Parameters
| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |
Returns
| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |
getL2ERC20Address
function getL2ERC20Address(address) external view returns (address)
Return the corresponding l2 token address given l1 token address.
Parameters
| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |
Returns
| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |
initialize
function initialize(address _counterpart, address _router, address _messenger) external nonpayable
Parameters
| Name | Type | Description |
|---|---|---|
| _counterpart | address | undefined |
| _router | address | undefined |
| _messenger | address | undefined |
l1WETH
function l1WETH() external view returns (address)
The address of L1 WETH address.
Returns
| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |
messenger
function messenger() external view returns (address)
The address of corresponding L1ScrollMessenger/L2ScrollMessenger contract.
Returns
| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |
router
function router() external view returns (address)
The address of L1GatewayRouter/L2GatewayRouter contract.
Returns
| Name | Type | Description |
|---|---|---|
| _0 | address | undefined |
withdrawERC20
function withdrawERC20(address _token, uint256 _amount, uint256 _gasLimit) external payable
Withdraw of some token to a caller's account on L1.
Make this function payable to send relayer fee in Ether.
Parameters
| Name | Type | Description |
|---|---|---|
| _token | address | undefined |
| _amount | uint256 | undefined |
| _gasLimit | uint256 | undefined |
withdrawERC20
function withdrawERC20(address _token, address _to, uint256 _amount, uint256 _gasLimit) external payable
Withdraw of some token to a recipient's account on L1.
Make this function payable to send relayer fee in Ether.
Parameters
| Name | Type | Description |
|---|---|---|
| _token | address | undefined |
| _to | address | undefined |
| _amount | uint256 | undefined |
| _gasLimit | uint256 | undefined |
withdrawERC20AndCall
function withdrawERC20AndCall(address _token, address _to, uint256 _amount, bytes _data, uint256 _gasLimit) external payable
Withdraw of some token to a recipient's account on L1 and call.
Make this function payable to send relayer fee in Ether.
Parameters
| Name | Type | Description |
|---|---|---|
| _token | address | undefined |
| _to | address | undefined |
| _amount | uint256 | undefined |
| _data | bytes | undefined |
| _gasLimit | uint256 | undefined |
Events
FinalizeDepositERC20
event FinalizeDepositERC20(address indexed l1Token, address indexed l2Token, address indexed from, address to, uint256 amount, bytes data)
Emitted when ERC20 token is deposited from L1 to L2 and transfer to recipient.
Parameters
| Name | Type | Description |
|---|---|---|
l1Token indexed |
address | undefined |
l2Token indexed |
address | undefined |
from indexed |
address | undefined |
| to | address | undefined |
| amount | uint256 | undefined |
| data | bytes | undefined |
WithdrawERC20
event WithdrawERC20(address indexed l1Token, address indexed l2Token, address indexed from, address to, uint256 amount, bytes data)
Emitted when someone withdraw ERC20 token from L2 to L1.
Parameters
| Name | Type | Description |
|---|---|---|
l1Token indexed |
address | undefined |
l2Token indexed |
address | undefined |
from indexed |
address | undefined |
| to | address | undefined |
| amount | uint256 | undefined |
| data | bytes | undefined |