Files
scroll/contracts/docs/apis/L2WETHGateway.md
2024-03-14 00:35:58 +08:00

8.2 KiB

L2WETHGateway

L2WETHGateway

The L2WETHGateway contract is used to withdraw WETH token on 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 transferred 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

Initialize the storage of L2WETHGateway.

The parameters _counterpart, _router and _messenger are no longer used.

Parameters

Name Type Description
_counterpart address The address of L1WETHGateway contract in L1.
_router address The address of L2GatewayRouter contract in L2.
_messenger address The address of L2ScrollMessenger contract in L2.

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

owner

function owner() external view returns (address)

Returns the address of the current owner.

Returns

Name Type Description
_0 address undefined

renounceOwnership

function renounceOwnership() external nonpayable

Leaves the contract without owner. It will not be possible to call onlyOwner functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.

router

function router() external view returns (address)

The address of L1GatewayRouter/L2GatewayRouter contract.

Returns

Name Type Description
_0 address undefined

transferOwnership

function transferOwnership(address newOwner) external nonpayable

Transfers ownership of the contract to a new account (newOwner). Can only be called by the current owner.

Parameters

Name Type Description
newOwner 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 The address of the token in L1.
l2Token indexed address The address of the token in L2.
from indexed address The address of sender in L1.
to address The address of recipient in L2.
amount uint256 The amount of token withdrawn from L1 to L2.
data bytes The optional calldata passed to recipient in L2.

Initialized

event Initialized(uint8 version)

Triggered when the contract has been initialized or reinitialized.

Parameters

Name Type Description
version uint8 undefined

OwnershipTransferred

event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)

Parameters

Name Type Description
previousOwner indexed address undefined
newOwner indexed address 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 The address of the token in L1.
l2Token indexed address The address of the token in L2.
from indexed address The address of sender in L2.
to address The address of recipient in L1.
amount uint256 The amount of token will be deposited from L2 to L1.
data bytes The optional calldata passed to recipient in L1.

Errors

ErrorCallerIsNotCounterpartGateway

error ErrorCallerIsNotCounterpartGateway()

Thrown when the cross chain sender is not the counterpart gateway contract.

ErrorCallerIsNotMessenger

error ErrorCallerIsNotMessenger()

Thrown when the caller is not corresponding L1ScrollMessenger or L2ScrollMessenger.

ErrorNotInDropMessageContext

error ErrorNotInDropMessageContext()

Thrown when ScrollMessenger is not dropping message.

ErrorZeroAddress

error ErrorZeroAddress()

Thrown when the given address is address(0).