ERC1155 Token Bridge
Deposit ERC1155 tokens from L1
ERC1155 bridging from L1 to L2 is done via the L1ERC1155Gateway. Similarly to ERC721 bridging, we don’t use a router but the depositERC1155
function on the Gateway directly.
Creating an ERC1155 token on L2
Similar to ERC721 bridging, in order to bridge ERC1155 tokens, a contract compatible with the IScrollERC1155
standard has to be launched and mapped on a L1ERC1155Gateway
and L2ERC1155Gateway
on both L1 and L2 respectively. This contract has to grant permission to the Gateway on L2 to mint when a token is deposited and burn when the token is withdrawn.
The following interface is the IScrollERC1155
needed for deploying ERC1155 tokens compatible with the L2ERC1155Gateway
on L2.
Adding an ERC1155 token to the Scroll Bridge
All assets can be bridged securely and permissionlessly through Gateway contracts deployed by any developer. However, Scroll also manages an ERC1155 Gateway contract where all NFTs created by the community are welcome. Being part of the Scroll-managed Gateway means you won’t need to deploy the Gateway contracts, and your token will appear in the Scroll frontend. To be part of the Scroll Gateway, you must contact the Scroll team to add the token to both L1 and L2 Gateway contracts. To do so, follow the instructions on the token lists repository to add your token to the Scroll official frontend.
Withdraw ERC1155 tokens from L2
The L2ERC1155Gateway
contract is used to send tokens from L2 to L1. Before bridging, the L2ERC1155Gateway
contract has to be approved by the token contract. Once that is done, withdrawERC1155
can be called to perform the asset bridge.
L1ERC1155Gateway API
Please visit the npm library for the complete Scroll contract API documentation.
depositERC1155
Deposit an ERC1155 token from L1 to a recipient’s account on L2.
Parameter | Description |
---|---|
token | The address of ERC1155 token contract on L1. |
to | The address of recipient’s account on L2. |
tokenId | The NFT id to deposit. |
amount | The amount of tokens to deposit. |
gasLimit | Gas limit required to complete the deposit on L2. Unused portion of fee will be refunded. |
updateTokenMapping
Update the mapping that connects an ERC1155 token contract from L1 to L2.
Parameter | Description |
---|---|
_l1Token | The address of the ERC1155 token in L1. |
_l2Token | The address of corresponding ERC1155 token in L2. |
L2ERC1155Gateway API
withdrawERC1155
Send ERC1155 tokens from L2 to a recipient’s account on L1.
Parameter | Description |
---|---|
token | The address of ERC1155 token contract on L2. |
to | The address of recipient’s account on L1. |
tokenId | The NFT id to withdraw. |
amount | The amount of tokens to withdraw. |
gasLimit | Unused, but included for potential forward compatibility considerations. |
updateTokenMapping
Update the mapping that connects an ERC1155 token contract from L2 to L1.
Parameter | Description |
---|---|
_l1Token | The address of the ERC1155 token in L1. |
_l2Token | The address of corresponding ERC1155 token in L2. |