mirror of
https://github.com/scroll-tech/scroll.git
synced 2026-04-23 03:00:50 -04:00
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>
286 lines
5.6 KiB
Markdown
286 lines
5.6 KiB
Markdown
# 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
|
|
|
|
```solidity
|
|
function WETH() external view returns (address)
|
|
```
|
|
|
|
The address of L2 WETH address.
|
|
|
|
|
|
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
|---|---|---|
|
|
| _0 | address | undefined |
|
|
|
|
### counterpart
|
|
|
|
```solidity
|
|
function counterpart() external view returns (address)
|
|
```
|
|
|
|
The address of corresponding L1/L2 Gateway contract.
|
|
|
|
|
|
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
|---|---|---|
|
|
| _0 | address | undefined |
|
|
|
|
### finalizeDepositERC20
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
function initialize(address _counterpart, address _router, address _messenger) external nonpayable
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
#### Parameters
|
|
|
|
| Name | Type | Description |
|
|
|---|---|---|
|
|
| _counterpart | address | undefined |
|
|
| _router | address | undefined |
|
|
| _messenger | address | undefined |
|
|
|
|
### l1WETH
|
|
|
|
```solidity
|
|
function l1WETH() external view returns (address)
|
|
```
|
|
|
|
The address of L1 WETH address.
|
|
|
|
|
|
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
|---|---|---|
|
|
| _0 | address | undefined |
|
|
|
|
### messenger
|
|
|
|
```solidity
|
|
function messenger() external view returns (address)
|
|
```
|
|
|
|
The address of corresponding L1ScrollMessenger/L2ScrollMessenger contract.
|
|
|
|
|
|
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
|---|---|---|
|
|
| _0 | address | undefined |
|
|
|
|
### router
|
|
|
|
```solidity
|
|
function router() external view returns (address)
|
|
```
|
|
|
|
The address of L1GatewayRouter/L2GatewayRouter contract.
|
|
|
|
|
|
|
|
|
|
#### Returns
|
|
|
|
| Name | Type | Description |
|
|
|---|---|---|
|
|
| _0 | address | undefined |
|
|
|
|
### withdrawERC20
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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
|
|
|
|
```solidity
|
|
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 |
|
|
|
|
|
|
|