L1StandardBridge
L1StandardBridge
The L1 ETH and ERC20 Bridge is a contract which stores deposited L1 funds and standard tokens that are in use on L2. It synchronizes a corresponding L2 Bridge, informing it of deposits and listening to it for newly finalized withdrawals.
Methods
depositERC20
function depositERC20(address _l1Token, address _l2Token, uint256 _amount, uint32 _l2Gas, bytes _data) external nonpayable
deposit an amount of the ERC20 to the caller's balance on L2.
Parameters
Name | Type | Description |
---|---|---|
_l1Token | address | Address of the L1 ERC20 we are depositing |
_l2Token | address | Address of the L1 respective L2 ERC20 |
_amount | uint256 | Amount of the ERC20 to deposit |
_l2Gas | uint32 | Gas limit required to complete the deposit on L2. |
_data | bytes | Optional data to forward to L2. This data is provided solely as a convenience for external contracts. Aside from enforcing a maximum length, these contracts provide no guarantees about its content. |
depositERC20To
function depositERC20To(address _l1Token, address _l2Token, address _to, uint256 _amount, uint32 _l2Gas, bytes _data) external nonpayable
deposit an amount of ERC20 to a recipient's balance on L2.
Parameters
Name | Type | Description |
---|---|---|
_l1Token | address | Address of the L1 ERC20 we are depositing |
_l2Token | address | Address of the L1 respective L2 ERC20 |
_to | address | L2 address to credit the withdrawal to. |
_amount | uint256 | Amount of the ERC20 to deposit. |
_l2Gas | uint32 | Gas limit required to complete the deposit on L2. |
_data | bytes | Optional data to forward to L2. This data is provided solely as a convenience for external contracts. Aside from enforcing a maximum length, these contracts provide no guarantees about its content. |
depositETH
function depositETH(uint32 _l2Gas, bytes _data) external payable
Deposit an amount of the ETH to the caller's balance on L2.
Parameters
Name | Type | Description |
---|---|---|
_l2Gas | uint32 | Gas limit required to complete the deposit on L2. |
_data | bytes | Optional data to forward to L2. This data is provided solely as a convenience for external contracts. Aside from enforcing a maximum length, these contracts provide no guarantees about its content. |
depositETHTo
function depositETHTo(address _to, uint32 _l2Gas, bytes _data) external payable
Deposit an amount of ETH to a recipient's balance on L2.
Parameters
Name | Type | Description |
---|---|---|
_to | address | L2 address to credit the withdrawal to. |
_l2Gas | uint32 | Gas limit required to complete the deposit on L2. |
_data | bytes | Optional data to forward to L2. This data is provided solely as a convenience for external contracts. Aside from enforcing a maximum length, these contracts provide no guarantees about its content. |
deposits
function deposits(address, address) external view returns (uint256)
Parameters
Name | Type | Description |
---|---|---|
_0 | address | undefined |
_1 | address | undefined |
Returns
Name | Type | Description |
---|---|---|
_0 | uint256 | undefined |
donateETH
function donateETH() external payable
Adds ETH balance to the account. This is meant to allow for ETH to be migrated from an old gateway to a new gateway. NOTE: This is left for one upgrade only so we are able to receive the migrated ETH from the old contract
finalizeERC20Withdrawal
function finalizeERC20Withdrawal(address _l1Token, address _l2Token, address _from, address _to, uint256 _amount, bytes _data) external nonpayable
Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the L1 ERC20 token. This call will fail if the initialized withdrawal from L2 has not been finalized.
Parameters
Name | Type | Description |
---|---|---|
_l1Token | address | Address of L1 token to finalizeWithdrawal for. |
_l2Token | address | Address of L2 token where withdrawal was initiated. |
_from | address | L2 address initiating the transfer. |
_to | address | L1 address to credit the withdrawal to. |
_amount | uint256 | Amount of the ERC20 to deposit. |
_data | bytes | Data provided by the sender on L2. This data is provided solely as a convenience for external contracts. Aside from enforcing a maximum length, these contracts provide no guarantees about its content. |
finalizeETHWithdrawal
function finalizeETHWithdrawal(address _from, address _to, uint256 _amount, bytes _data) external nonpayable
Complete a withdrawal from L2 to L1, and credit funds to the recipient's balance of the L1 ETH token. Since only the xDomainMessenger can call this function, it will never be called before the withdrawal is finalized.
Parameters
Name | Type | Description |
---|---|---|
_from | address | L2 address initiating the transfer. |
_to | address | L1 address to credit the withdrawal to. |
_amount | uint256 | Amount of the ERC20 to deposit. |
_data | bytes | Optional data to forward to L2. This data is provided solely as a convenience for external contracts. Aside from enforcing a maximum length, these contracts provide no guarantees about its content. |
initialize
function initialize(address _l1messenger, address _l2TokenBridge) external nonpayable
Parameters
Name | Type | Description |
---|---|---|
_l1messenger | address | L1 Messenger address being used for cross-chain communications. |
_l2TokenBridge | address | L2 standard bridge address. |
l2TokenBridge
function l2TokenBridge() external view returns (address)
get the address of the corresponding L2 bridge contract.
Returns
Name | Type | Description |
---|---|---|
_0 | address | Address of the corresponding L2 bridge contract. |
messenger
function messenger() external view returns (address)
Returns
Name | Type | Description |
---|---|---|
_0 | address | undefined |
Events
ERC20DepositInitiated
event ERC20DepositInitiated(address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data)
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 |
ERC20WithdrawalFinalized
event ERC20WithdrawalFinalized(address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _amount, bytes _data)
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 |
ETHDepositInitiated
event ETHDepositInitiated(address indexed _from, address indexed _to, uint256 _amount, bytes _data)
Parameters
Name | Type | Description |
---|---|---|
_from indexed
|
address | undefined |
_to indexed
|
address | undefined |
_amount | uint256 | undefined |
_data | bytes | undefined |
ETHWithdrawalFinalized
event ETHWithdrawalFinalized(address indexed _from, address indexed _to, uint256 _amount, bytes _data)
Parameters
Name | Type | Description |
---|---|---|
_from indexed
|
address | undefined |
_to indexed
|
address | undefined |
_amount | uint256 | undefined |
_data | bytes | undefined |