La Red de Conocimientos Pedagógicos - Currículum vitae - Traducción de documentos ERC-721 (1)

Traducción de documentos ERC-721 (1)

En los dos artículos anteriores, hablamos sobre algunos conceptos básicos de ERC-721, su ámbito de aplicación y las diferencias entre ERC-721 y ERC-20. Este artículo tiene como objetivo traducir el estándar ERC-721 NFTS (token no fungible), que será más detallado y preciso. Debido a que el artículo es relativamente largo, se divide en dos partes. Debido a mi nivel limitado, corríjanme si hay algún error.

Enlace original/Ethereum/eips/blob/master/eips/EIP-721.

ERC-721 es una interfaz estándar para tokens no fungibles, también conocido como contrato.

Los siguientes estándares permitirán la implementación de API estándar de NFT en contratos inteligentes. Estos estándares proporcionan algunas funciones básicas para el seguimiento y el comercio de NFT.

Consideramos los siguientes dos casos de uso: las NFT son propiedad de individuos y las comercializan y se confían a un corredor/billetera/operador externo. Las NFT pueden representar la propiedad de activos físicos o digitales. Consideramos una variedad de propiedades y sabemos que imaginarás más:

En general, todas las casas son únicas y no hay dos gatos iguales. Las NFT son diferenciables y debes realizar un seguimiento de la propiedad de cada NFT individualmente.

La interfaz estándar permite que las aplicaciones de billetera/corredor/subasta se ejecuten en cualquier NFT en Ethereum. Proporcionamos un contrato inteligente ERC-721 simple y cualquier cantidad de contratos NFT. Otras aplicaciones se discutirán más adelante.

El estándar ERC-721 está inspirado en el estándar de token ERC-20 y la experiencia de EIP-20, que se creó hace dos años. EIP-20 no es suficiente para rastrear NFT porque cada activo es diferente (no fungible) pero cada token es el mismo (fungible).

Las diferencias entre este estándar y EIP-20 son las siguientes.

Las palabras clave en este documento son "debe", "no debe", "requerido", "debería", "no debería", "debería", "no debería", "sugerido", " mayo" y "opcional" se ajustarán al RFC 2165438.

Cada contrato que cumpla con el estándar ERC-721 debe implementar las interfaces ERC721 y ERC165 (siga las consideraciones a continuación).

Descripción de la interfaz:

BalanceOf(): Devuelve el número de NFT en poder del _propietario.

OwnerOf(): Devuelve la dirección del titular del token tokenId.

Aprobar(): use _tokenId para otorgar la dirección _para controlar, y el evento de aprobación debe activarse después de que el método sea exitoso.

SetApprovalForAll():address_operator tiene el control de todos los NFT y el evento ApprovalForAll debe activarse después del éxito.

GetApproved(), isapproved(): se utiliza para consultar la autorización.

SafeTransferFrom(): para transferir la propiedad de NFT, una operación de transferencia exitosa debe iniciar un evento de transferencia. La implementación de la función requiere varias comprobaciones:

La persona que llama msg.sender debe ser el propietario o la dirección autorizada del ID del token actual.

_from debe ser el propietario de _tokenId.

_tokenId debe ser cualquier NFT que el contrato actual esté monitoreando.

La dirección _to no debe ser 0.

Si _to es una convención, debes llamar a su método onERC721Received y verificar su valor de retorno. Si el valor de retorno no es bytes 4 ("ONERC 721 recibido (dirección, uint 256, bytes)"), se generará una excepción.

Los contratos que pueden recibir NFT deben implementar la interfaz ERC721TokenReceiver:

TransferFrom(): se utiliza para llamar a NFT y el evento de llamada debe activarse después de que la llamada sea exitosa. La persona que llama confirma que la dirección _to puede recibir el NFT normalmente; de ​​lo contrario, el NFT se perderá. Al implementar esta función, se deben verificar las primeras cuatro condiciones anteriores.

Para los contratos inteligentes ERC-721, las extensiones de metadatos son opcionales (consulte la nota a continuación). Esto permite que se le solicite a su contrato inteligente su nombre y detalles sobre sus activos NFT.

Descripción de la interfaz:

Nombre(): Devuelve el nombre del protocolo. Aunque es opcional, se recomienda implementarlo incluso si se devuelve una cadena vacía.

Símbolo(): Devuelve el símbolo de marca acordado. Aunque es opcional, se recomienda encarecidamente implementarlo, incluso si devuelve una cadena vacía.

TokenURI(): Devuelve el URI del archivo de recursos externo correspondiente a _tokenId (normalmente una ruta IPFS o HTTP(S)).

Los archivos de recursos externos deben incluir nombres, descripciones e imágenes, y sus requisitos de formato son los siguientes:

Para los contratos inteligentes ERC-721, las extensiones de enumeración son opcionales. Esto permite que su contrato publique una lista completa de NFT y las haga visibles. El objetivo principal es mejorar la accesibilidad de NTF en los contratos.

Descripción de la interfaz:

TotalSupply(): Devuelve el NFT total.

TokenByIndex(): Devuelve el tokenId correspondiente a través del índice.

TokenOfOwnerByIndex(): El propietario puede poseer varios NFT al mismo tiempo. Esta función devuelve el tokenId del índice correspondiente en la lista NFT propiedad de _owner.