ERC721 NFT Bridge

Depósito de tokens ERC721 de L1

El bridging de NFTs de L1 a L2 se realiza a través del contrato L1ERC721Gateway en lugar de utilizar un router. De forma similar al bridging de tokens ERC20, utilizamos la función depositERC721 para enviar tokens a L2, y posteriormente podemos recuperarlos de vuelta a L1 utilizando withdrawERC721 en el contrato L2ERC721Gateway desplegado en L2.

Los contratos NFT tanto en L1 como en L2 deben lanzarse y conectarse a través de las Gateways para permitir el bridging. Esto significa que las transacciones de depósito y retirada se revertirán si falta un contrato en L1 o L2 o si no se asigna a través de la función updateTokenMapping.

Creación de un token ScrollERC721 en L2

Para depositar un token ERC721 en L2, debe lanzarse un contrato de token compatible con el estándar IScrollERC721 y asignarse a una L1ERC721Gateway y una L2ERC721Gateway en L1 y L2, respectivamente. Este contrato tiene que conceder permiso a la Gateway en L2 para emitir cuando un token es depositado y quemar cuando el token es retirado.

La siguiente interfaz es la IScrollERC721 que es necesaria para desplegar tokens ERC721 compatibles con el L2ERC721Gateway en L2.

interface IScrollERC721 {
/// @notice Return the address of Gateway the token belongs to.
function gateway() external view returns (address);
/// @notice Return the address of counterpart token.
function counterpart() external view returns (address);
/// @notice Mint some token to recipient's account.
/// @dev Gateway Utilities, only gateway contract can call
/// @param _to The address of recipient.
/// @param _tokenId The token id to mint.
function mint(address _to, uint256 _tokenId) external;
/// @notice Burn some token from account.
/// @dev Gateway Utilities, only gateway contract can call
/// @param _tokenId The token id to burn.
function burn(uint256 _tokenId) external;
}

Añadiendo NFTs ERC721 al Scroll Bridge

Todos los activos pueden ser transferidos de forma segura y sin permisos a través de contratos Gateway desplegados por cualquier desarrollador. Sin embargo, Scroll también gestiona un contrato Gateway ERC721 en donde todos los NFTs creados por la comunidad son bienvenidos. Formar parte del Gateway gestionado por Scroll significa que no necesitarás desplegar los contratos Gateway, y tu token aparecerá en el frontend de Scroll. Para formar parte de la Gateway gestionada por Scroll, debe ponerse en contacto con el equipo de Scroll para añadir el NFT en los contratos Gateway L1 y L2. Para ello, sigue las instrucciones del repositorio token lists para añadir un nuevo token al frontend oficial de Scroll.

Retiro de tokens ERC721 de Scroll

El contrato L2ERC721Gateway se utiliza para enviar tokens de L2 a L1. Antes de realizar el bridging, el contrato L2ERC721Gateway tiene que ser aprobado por el contrato del NFT. Una vez hecho esto, se puede llamar a withdrawERC721 para realizar el bridging de activos.

API de L1ERC721Gateway

Visita librería de npm para consultar la documentación completa de la API de los contratos de Scroll.

depositERC721

function depositERC721(address _token, address _to, uint256 _tokenId, uint256 _gasLimit) external payable;

Depósito de un NFT ERC721 desde L1 a la cuenta de un destinatario en L2.

ParámetroDescripción
tokenDirección del contrato ERC721 NFT en L1.
toDirección de la cuenta del destinatario en L2.
tokenIdId del NFT a depositar.
gasLimitLímite de gas necesario para completar el depósito en L2. La porción de gas que no fué utilizado será automáticamente enviada de vuelta.

updateTokenMapping

function updateTokenMapping(address _l1Token, address _l2Token) external;

Actualización del mapping que conecta un contrato NFT de L1 a L2.

ParámetroDescripción
_l1TokenDirección del token ERC721 en L1.
_l2TokenDirección del token ERC721 correspondiente en L2.

API de L2ERC721Gateway

withdrawERC721

function withdrawERC721(address _token, address _to, uint256 _tokenId, uint256 _gasLimit) external payable;

Envío de un ERC721 NFT desde L2 a la cuenta de un destinatario en L1.

ParámetroDescripción
tokenDirección del contrato de tokens ERC721 NFT en L2.
toDirección de la cuenta del destinatario en L1.
tokenIdId del NFT a depositar.
gasLimitNo se utiliza, pero se incluye por posibles consideraciones de compatibilidad futura.

updateTokenMapping

function updateTokenMapping(address _l1Token, address _l2Token) external;

Actualización del mapping que conecta un contrato NFT de L2 a L1.

ParámetroDescripción
_l2TokenDirección del token ERC721 en L2.
_l1TokenDirección del token ERC721 correspondiente en L1.

¿Qué sigue?

Mantente actualizado con las más recientes noticias sobre el Desarrollo de Scroll
Roadmap, actualizaciones, eventos virtuales y presenciales, oportunidades en el ecosistema y más
¡Gracias por suscribirte!

Recursos

Síguenos