Files
scroll/contracts/docs/apis/L1ERC1155Gateway.md
2024-03-22 18:02:02 +08:00

14 KiB

L1ERC1155Gateway

L1ERC1155Gateway

The L1ERC1155Gateway is used to deposit ERC1155 compatible NFT on layer 1 and finalize withdraw the NFTs from layer 2.

The deposited NFTs are held in this gateway. On finalizing withdraw, the corresponding NFT will be transfer to the recipient directly. This will be changed if we have more specific scenarios.

Methods

batchDepositERC1155

function batchDepositERC1155(address _token, uint256[] _tokenIds, uint256[] _amounts, uint256 _gasLimit) external payable

Deposit a list of some ERC1155 NFT to caller's account on layer 2.

Parameters

Name Type Description
_token address The address of ERC1155 NFT on layer 1.
_tokenIds uint256[] The list of token ids to deposit.
_amounts uint256[] The list of corresponding number of token to deposit.
_gasLimit uint256 Estimated gas limit required to complete the deposit on layer 2.

batchDepositERC1155

function batchDepositERC1155(address _token, address _to, uint256[] _tokenIds, uint256[] _amounts, uint256 _gasLimit) external payable

Deposit a list of some ERC1155 NFT to a recipient's account on layer 2.

Parameters

Name Type Description
_token address The address of ERC1155 NFT on layer 1.
_to address The address of recipient on layer 2.
_tokenIds uint256[] The list of token ids to deposit.
_amounts uint256[] The list of corresponding number of token to deposit.
_gasLimit uint256 Estimated gas limit required to complete the deposit on layer 2.

counterpart

function counterpart() external view returns (address)

The address of corresponding L1/L2 Gateway contract.

Returns

Name Type Description
_0 address undefined

depositERC1155

function depositERC1155(address _token, address _to, uint256 _tokenId, uint256 _amount, uint256 _gasLimit) external payable

Deposit some ERC1155 NFT to a recipient's account on layer 2.

Parameters

Name Type Description
_token address The address of ERC1155 NFT on layer 1.
_to address The address of recipient on layer 2.
_tokenId uint256 The token id to deposit.
_amount uint256 The amount of token to deposit.
_gasLimit uint256 Estimated gas limit required to complete the deposit on layer 2.

depositERC1155

function depositERC1155(address _token, uint256 _tokenId, uint256 _amount, uint256 _gasLimit) external payable

Deposit some ERC1155 NFT to caller's account on layer 2.

Parameters

Name Type Description
_token address The address of ERC1155 NFT on layer 1.
_tokenId uint256 The token id to deposit.
_amount uint256 The amount of token to deposit.
_gasLimit uint256 Estimated gas limit required to complete the deposit on layer 2.

finalizeBatchWithdrawERC1155

function finalizeBatchWithdrawERC1155(address _l1Token, address _l2Token, address _from, address _to, uint256[] _tokenIds, uint256[] _amounts) external nonpayable

Complete ERC1155 batch withdraw from layer 2 to layer 1 and send fund to recipient's account on layer 1. The function should only be called by L1ScrollMessenger. The function should also only be called by L2ERC1155Gateway on layer 2.

Parameters

Name Type Description
_l1Token address The address of corresponding layer 1 token.
_l2Token address The address of corresponding layer 2 token.
_from address The address of account who withdraw the token on layer 2.
_to address The address of recipient on layer 1 to receive the token.
_tokenIds uint256[] The list of token ids to withdraw.
_amounts uint256[] The list of corresponding number of token to withdraw.

finalizeWithdrawERC1155

function finalizeWithdrawERC1155(address _l1Token, address _l2Token, address _from, address _to, uint256 _tokenId, uint256 _amount) external nonpayable

Complete ERC1155 withdraw from layer 2 to layer 1 and send fund to recipient's account on layer 1. The function should only be called by L1ScrollMessenger. The function should also only be called by L2ERC1155Gateway on layer 2.

Parameters

Name Type Description
_l1Token address The address of corresponding layer 1 token.
_l2Token address The address of corresponding layer 2 token.
_from address The address of account who withdraw the token on layer 2.
_to address The address of recipient on layer 1 to receive the token.
_tokenId uint256 The token id to withdraw.
_amount uint256 The amount of token to withdraw.

initialize

function initialize(address _counterpart, address _messenger) external nonpayable

Initialize the storage of L1ERC1155Gateway.

Parameters

Name Type Description
_counterpart address The address of L2ERC1155Gateway in L2.
_messenger address The address of L1ScrollMessenger in L1.

messenger

function messenger() external view returns (address)

The address of corresponding L1ScrollMessenger/L2ScrollMessenger contract.

Returns

Name Type Description
_0 address undefined

onDropMessage

function onDropMessage(bytes _message) external payable

Parameters

Name Type Description
_message bytes undefined

onERC1155BatchReceived

function onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) external nonpayable returns (bytes4)

Parameters

Name Type Description
_0 address undefined
_1 address undefined
_2 uint256[] undefined
_3 uint256[] undefined
_4 bytes undefined

Returns

Name Type Description
_0 bytes4 undefined

onERC1155Received

function onERC1155Received(address, address, uint256, uint256, bytes) external nonpayable returns (bytes4)

Parameters

Name Type Description
_0 address undefined
_1 address undefined
_2 uint256 undefined
_3 uint256 undefined
_4 bytes undefined

Returns

Name Type Description
_0 bytes4 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

supportsInterface

function supportsInterface(bytes4 interfaceId) external view returns (bool)

See {IERC165-supportsInterface}.

Parameters

Name Type Description
interfaceId bytes4 undefined

Returns

Name Type Description
_0 bool undefined

tokenMapping

function tokenMapping(address) external view returns (address)

Mapping from l1 token address to l2 token address for ERC1155 NFT.

Parameters

Name Type Description
_0 address undefined

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

updateTokenMapping

function updateTokenMapping(address _l1Token, address _l2Token) external nonpayable

Update layer 2 to layer 2 token mapping.

Parameters

Name Type Description
_l1Token address The address of ERC1155 token on layer 1.
_l2Token address The address of corresponding ERC1155 token on layer 2.

Events

BatchDepositERC1155

event BatchDepositERC1155(address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256[] _tokenIds, uint256[] _amounts)

Emitted when the ERC1155 NFT is batch deposited to gateway on layer 1.

Parameters

Name Type Description
_l1Token indexed address The address of ERC1155 NFT on layer 1.
_l2Token indexed address The address of ERC1155 NFT on layer 2.
_from indexed address The address of sender on layer 1.
_to address The address of recipient on layer 2.
_tokenIds uint256[] The list of token ids of the ERC1155 NFT to deposit on layer 1.
_amounts uint256[] The list of corresponding number of token to deposit on layer 1.

BatchRefundERC1155

event BatchRefundERC1155(address indexed token, address indexed recipient, uint256[] tokenIds, uint256[] amounts)

Emitted when some ERC1155 token is refunded.

Parameters

Name Type Description
token indexed address The address of the token in L1.
recipient indexed address The address of receiver in L1.
tokenIds uint256[] The list of ids of token refunded.
amounts uint256[] The list of amount of token refunded.

DepositERC1155

event DepositERC1155(address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _tokenId, uint256 _amount)

Emitted when the ERC1155 NFT is deposited to gateway on layer 1.

Parameters

Name Type Description
_l1Token indexed address The address of ERC1155 NFT on layer 1.
_l2Token indexed address The address of ERC1155 NFT on layer 2.
_from indexed address The address of sender on layer 1.
_to address The address of recipient on layer 2.
_tokenId uint256 The token id of the ERC1155 NFT to deposit on layer 1.
_amount uint256 The number of token to deposit on layer 1.

FinalizeBatchWithdrawERC1155

event FinalizeBatchWithdrawERC1155(address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256[] _tokenIds, uint256[] _amounts)

Emitted when the ERC1155 NFT is batch transferred to recipient on layer 1.

Parameters

Name Type Description
_l1Token indexed address The address of ERC1155 NFT on layer 1.
_l2Token indexed address The address of ERC1155 NFT on layer 2.
_from indexed address The address of sender on layer 2.
_to address The address of recipient on layer 1.
_tokenIds uint256[] The list of token ids of the ERC1155 NFT to withdraw from layer 2.
_amounts uint256[] The list of corresponding number of token to withdraw from layer 2.

FinalizeWithdrawERC1155

event FinalizeWithdrawERC1155(address indexed _l1Token, address indexed _l2Token, address indexed _from, address _to, uint256 _tokenId, uint256 _amount)

Emitted when the ERC1155 NFT is transferred to recipient on layer 1.

Parameters

Name Type Description
_l1Token indexed address The address of ERC1155 NFT on layer 1.
_l2Token indexed address The address of ERC1155 NFT on layer 2.
_from indexed address The address of sender on layer 2.
_to address The address of recipient on layer 1.
_tokenId uint256 The token id of the ERC1155 NFT to withdraw from layer 2.
_amount uint256 The number of token to withdraw from layer 2.

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

RefundERC1155

event RefundERC1155(address indexed token, address indexed recipient, uint256 tokenId, uint256 amount)

Emitted when some ERC1155 token is refunded.

Parameters

Name Type Description
token indexed address The address of the token in L1.
recipient indexed address The address of receiver in L1.
tokenId uint256 The id of token refunded.
amount uint256 The amount of token refunded.

UpdateTokenMapping

event UpdateTokenMapping(address indexed l1Token, address indexed oldL2Token, address indexed newL2Token)

Emitted when token mapping for ERC1155 token is updated.

Parameters

Name Type Description
l1Token indexed address The address of ERC1155 token in layer 1.
oldL2Token indexed address The address of the old corresponding ERC1155 token in layer 2.
newL2Token indexed address The address of the new corresponding ERC1155 token in layer 2.

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).