Autor: Ash Li, Noah Ho
Fuente: https://www.spectrumlab.io/zh/reports/erc6551%E7%95%B6nft%E7%A2%B0%E4%B8%8A%E5%90%88%E7%B4%84%E9% 8C%A2%E5%8C%85
Las discusiones sobre el protocolo ERC-6551 se están intensificando gradualmente en la comunidad. Este protocolo aporta un enorme potencial de expansión a NFT. ERC-6551 crea una billetera de contrato única para cada NFT a través de una Cuenta de Bono Token (TBA), lo que le permite mantener activos y registrar acciones relacionadas. Esto crea la posibilidad de verificar la identidad de tokens no fungibles (NFT) y NFT combinados. Profundizando, podemos encontrar que ERC-6551 en realidad proporciona una billetera completamente funcional para NFT, y la "clave" de esta billetera es la propia NFT. Este artículo revisará el historial de desarrollo estándar de NFT y cubrirá intentos anteriores de expandir NFT. Dado que el núcleo de TBA es la billetera de contrato, también daremos una breve introducción a la billetera de contrato. Finalmente, profundizaremos en los detalles de implementación del protocolo y sus posibles aplicaciones.
1. Historia y situación actual de los estándares NFT
Como criptomoneda especial y activo de arte digital, NFT proporciona un nuevo soporte digital para obras de arte y amplía los escenarios de aplicación de la tecnología blockchain. A diferencia de los tokens fungibles tradicionales, cada NFT es único y está asociado con metadatos específicos, como obras de arte, accesorios de juegos, música y otros materiales electrónicos. Por lo tanto, NFT se puede utilizar como certificado de propiedad de datos electrónicos para que las personas los recopilen o intercambien. El 3 de mayo de 2014, el artista digital Kevin McCoy creó la primera obra NFT conocida, "Quantum". Es un octágono pixelado hecho de varias formas, representado de forma psicodélica. Sin embargo, no fue hasta la aparición de ERC-721 (Solicitud de comentarios de Ethereum 721) que NFT realmente tuvo un estándar unificado, que brindaba a los desarrolladores la comodidad de aplicarlo en diferentes proyectos.

ERC-721
ERC-721 está estrechamente vinculado a la historia de desarrollo de CryptoPunks. CryptoPunks salió en 2017 e incluye 10,000 imágenes artísticas únicas de 24x24 píxeles. Es su éxito lo que ha atraído la atención generalizada de los desarrolladores y la comunidad, lo que ha hecho que más personas se den cuenta del enorme potencial de NFT. Desde entonces, se ha convertido en el modelo para muchos proyectos NFT y condujo a la formulación del estándar ERC-721. El estándar fue fundado por Dieter Shirley, CTO de CryptoKitties. En enero de 2018, William Entriken, Dieter Shirley, Jacob Evans y Nastassia Sachs propusieron conjuntamente el estándar ERC-721. Este estándar de token no fungible implementa ABI relacionado con tokens en contratos inteligentes, sentando las bases para la creación, gestión y transferencia de activos digitales únicos en Ethereum, abriendo un nuevo capítulo para artistas, coleccionistas y el mercado del arte digital.

Las principales características de ERC-721 son las siguientes:
Unicidad: a diferencia de los tokens ERC-20 (que son fungibles y cada token es idéntico a todos los demás), cada token ERC-721 es único.
Propiedad y transferencia: este estándar de token permite determinar el propietario de cualquier token determinado y permite que el propietario o la persona aprobada transfiera el token.
Asociación de metadatos: permite asociar metadatos con cada token, que pueden incluir una imagen, descripción u otras propiedades relevantes del token.
Para garantizar su estatus como estándar, ERC-721 define los siguientes métodos y eventos clave:
Métodos como balanceOf(), propietarioOf(), aprobar(), getApproved(), setApprovalForAll(), isApprovedForAll(), transferFrom() y safeTransferFrom().
y eventos como Transfer() y Approval().
En resumen, el estándar ERC-721 proporciona un mecanismo para activos únicos en Ethereum, garantizando la singularidad y propiedad de cada activo y permitiendo su verificación, comercio y gestión. ERC-721, el estándar para tokens no fungibles, ha logrado un éxito explosivo en los campos del arte digital y los coleccionables. ERC-721 define de manera importante
Sin embargo, aunque ha llevado muchos proyectos famosos a las aplicaciones NFT, todavía existen algunas limitaciones, como que no pueden operar como agentes o estar directamente relacionados con otros activos en la cadena. Para solucionar estos problemas, la comunidad ha propuesto una serie de extensiones y nuevos estándares, siendo los más representativos EIP3664 y EIP3525.
ERC-3664
Ya en mayo de 2021, el equipo de la República Democrática del Congo propuso EIP-3664, un protocolo de extensión de atributos NFT. De una manera ingeniosa, esta propuesta resuelve las limitaciones de los principales estándares NFT como ERC-721 o ERC-1155, como la expresividad insuficiente de los atributos, la dificultad para la integración entre NFT y el almacenamiento centralizado de atributos.
Específicamente, EIP-3664 no requiere modificaciones a los estándares ERC-721 y ERC-1155 existentes. Agrega dinámicamente propiedades al NFT mediante el uso de la función de devolución de llamada de la interfaz IERC721Receiver o IERC1155Receiver en el método mint de NFT. O se puede hacer reescribiendo el método de conversión. Con este protocolo, una NFT puede tener cualquier número de atributos adjuntos sin límite.
En EIP-3664, todos los atributos implementan la interfaz IERC3664. Los atributos básicos incluyen varios campos básicos, como ID, nombre, símbolo, dirección URI, saldo, etc., que se utilizan para describir los metadatos de NFT. Con EIP-3664, las extensiones de atributos NFT se vuelven más flexibles y personalizables. Proporciona un método de implementación estandarizado para funciones de atributos NFT y se integra perfectamente con el ecosistema NFT existente.
ERC-3525
EIP-3525 introduce tokens semifungibles (SFT), que pueden verse como activos entre tokens fungibles (FT) y tokens no fungibles (NFT). Al igual que los NFT, los tokens SFT se pueden transferir intactos de una dirección de billetera a otra. Pero al igual que FT, SFT permite que solo se transfiera una parte del valor entre diferentes tokens. Por ejemplo, es posible transferir sólo una parte de la "vida" de un terreno a otro terreno. Sin lugar a dudas, SFT supera a FT en personalización y supera a NFT en eficiencia.

ERC3525 permite la construcción de estructuras SFT multinivel, similares a las muñecas matrioskas rusas, para lograr mundos virtuales más complejos y definir reglas de interacción entre diferentes niveles. Al utilizar ERC3525, NFT puede transportar cualquier moneda digital. Esto significa que se pueden integrar tokens con valor económico en NFT para lograr funciones y métodos de interacción más ricos. Por ejemplo, una SFT puede contener una NFT que tenga valor y se pueden anidar otros tokens en la NFT. A través de ERC3525, los desarrolladores pueden definir las reglas y la lógica de SFT a través de contratos inteligentes y personalizar reglas de comportamiento y transacciones específicas. Estas características hacen de ERC3525 uno de los estándares importantes en el campo NFT, brindando a los desarrolladores y partes del proyecto más espacio para la creatividad.
2.ERC-6551
introducir
Para mejorar la escalabilidad y practicidad de NFT, la propuesta ERC-6551 tiene como objetivo otorgar a cada NFT los mismos derechos e intereses que los usuarios de Ethereum. Esto significa que NFT no sólo puede contener activos, sino también registrar el historial de transacciones, lo que aumenta considerablemente su alcance de aplicación. Según esta propuesta, los titulares de NFT pueden crear una billetera de contrato exclusiva llamada TBA (Cuenta de bonos tokenizados) para que sus NFT realicen diversas operaciones en la cadena. Esto se logra definiendo un registro unificado: el Registro. Este registro está dedicado a asignar direcciones de cuentas de contratos inteligentes únicas y fijas a todas las NFT y garantizar que el control de la cuenta permanezca completamente en manos del titular de la NFT. En particular, esta propuesta es totalmente compatible con los estándares ERC-721 o 1155 existentes sin ninguna modificación, al mismo tiempo que se adapta a la mayoría de la infraestructura que admite cuentas Ethereum.
Esta innovación proporciona a NFT las mismas funciones que las cuentas Ethereum, abriendo muchos escenarios de aplicación nuevos para NFT. Por ejemplo, los activos complejos de la realidad, como personajes de juegos de rol, automóviles compuestos de varias partes, carteras de inversión diversificadas e incluso tarjetas de membresía, se pueden convertir en formas NFT a través de esta propuesta. Además, esta propuesta no solo es compatible con todos los estándares de activos en cadena existentes, sino que también brinda posibilidades de expansión para nuevos estándares de activos en el futuro.
Como se mencionó anteriormente, ERC-6551 permite la creación de una billetera dedicada a las interacciones en cadena para cada NFT. Este tipo de billetera es diferente de las billeteras que usamos comúnmente en plataformas como Metamask. En realidad, es una billetera de contrato, que es un contrato inteligente implementado en la red Ethereum. Antes de profundizar en cómo se implementa, primero comprendamos las principales diferencias entre estas dos billeteras.
cuenta de contrato
Una cuenta Ethereum es una entidad que mantiene un saldo de Ethereum (ETH) y puede enviar transacciones en la red Ethereum. Las cuentas pueden ser controladas por usuarios o implementadas como contratos inteligentes.
Las cuentas en Ethereum tienen 4 campos:
nonce: contador utilizado para mostrar la cantidad de transacciones enviadas por la cuenta externa o la cantidad de contratos creados por la cuenta del contrato. Cada cuenta solo puede ejecutar una transacción con un nonce determinado para evitar ataques de repetición, que se refieren a transmitir y volver a ejecutar una transacción firmada varias veces.
saldo: modelo de contabilidad del saldo, el número de Wei que posee esta dirección. Wei es la unidad de medida de Ethereum.
codeHash: este hash representa el código de cuenta en la máquina virtual Ethereum (EVM). Las cuentas de contrato tienen fragmentos de código programados que pueden realizar diferentes operaciones. Este código EVM se ejecuta si la cuenta recibe una llamada de mensaje. A diferencia de otros campos de la cuenta, esto no se puede cambiar. Todos los fragmentos de código se guardan con el hash correspondiente en la base de datos estatal para su posterior recuperación. Este valor hash se llama codeHash. Para cuentas de propiedad externa, el campo codeHash es el hash de la cadena vacía.
raíz de almacenamiento: hash de almacenamiento. Merkle Patricia trie hash de 256 bits del nodo raíz que ha codificado el contenido almacenado de la cuenta (un mapa de valores enteros de 256 bits) y codificado como un trie como un mapa del hash de 256 bits de Keccak a partir de un entero de 256 bits claves para la codificación RLP de un valor entero de 256 bits. Este Trie codifica un hash del contenido del almacenamiento de esta cuenta y está vacío de forma predeterminada.
Hay dos tipos de cuentas Ethereum: cuentas externas (claves privadas administradas por el usuario) y cuentas de contrato.
Cuentas de propiedad externa (EOA): controladas por la clave privada, su codeHash está vacío. Estas cuentas pueden enviar y recibir criptomonedas e interactuar con contratos inteligentes. Nuestra billetera Metamask de uso común pertenece a esto.
Cuenta de contrato (CA): no hay clave privada y su codeHash no está vacío. Es un contrato inteligente implementado en la red Ethereum que controla la billetera del contrato a través de cuentas externas que interactúan con el contrato.
Hay billeteras de contrato estándar en CA, como las billeteras abstractas de cuentas ERC4337, y billeteras nativas de tipo AA, como las cadenas ZkSync y StarkNet, en las que no hay transacciones tradicionales y todas las cuentas son cuentas de contrato. Actualmente, la billetera tiene problemas con la propiedad y los derechos de firma. Por ejemplo, la clave privada es difícil de proteger. Los usuarios perderán todos los activos si pierden la clave privada. También hay problemas con el algoritmo de firma que es demasiado pequeño y la autoridad. demasiado alto. Además, la tarifa de gestión solo se puede liquidar en una única moneda mediante el pago de ETH.
Sin cambiar la capa del protocolo de consenso, puede ayudar a Ethereum a avanzar en la dirección de la abstracción de cuentas. ERC4337 puede realizar la actualización de la abstracción de cuentas a través de contratos inteligentes, desde el inicio original de toda la transacción hasta su inclusión en toda la cadena de bloques. Se actualizó y modificó, y se introdujo UserOperation para describir la estructura de las transacciones enviadas en nombre de los usuarios. Bundler empaquetará las transacciones en estos grupos de memoria para reducir los costos de transacción de los usuarios. El escenario de firma múltiple es más completo para lograr la recuperación social. , etc. Actualizaciones funcionales.
lograr
Según el estándar ERC-6551, los titulares de NFT pueden implementar un nuevo contrato inteligente, concretamente TBA, en la red Ethereum u otras cadenas de bloques compatibles con EVM interactuando con el Contrato de Registro. La propiedad de TBA pertenece al titular de NFT y cambiará con la transferencia de NFT. Sólo el titular de NFT puede controlar este TBA. El código de TBA, sus reglas, tienen su origen en la convocatoria del Contrato de Implementación.
El siguiente diagrama muestra cómo funciona ERC-6551: supongamos que un usuario es titular de NFT y su cuenta de usuario posee dos NFT, el número 123 del contrato A y el número 456 del contrato B. La cuenta de usuario interactúa con el registro sin permiso, es decir, el contrato de registro, e ingresa la información NFT y la dirección del contrato para crear un TBA. Cuando la cuenta de usuario llame al contrato de registro, ingrese la información NFT del token n.° 123 y la dirección de la implementación A (0x321...), y se creará la cuenta de billetera del contrato A (0x123...). Su propiedad pertenece al titular del NFT Token #123, y sus funciones y reglas se derivan de lo dispuesto en la Implementación A. Cuando la cuenta de usuario vuelve a llamar al contrato de registro y cambia el contenido de entrada, se genera otro TBA. Pero para un NFT específico y un contrato de implementación, solo puede haber un TBA correspondiente único.

La creación y el comportamiento de TBA dependen completamente del contrato de registro y del contrato de implementación. Las reglas de estos contratos determinan las características y funciones de la APT. EIP-6551 proporciona plantillas de código para estos contratos. Profundizaremos en estas plantillas en las siguientes secciones. Sin embargo, estas plantillas no son las únicas opciones; su código determina cómo se implementa y funcionalmente TBA. Esto ofrece a los desarrolladores una amplia gama de posibilidades de expansión. Por ejemplo, un contrato de registro puede establecer qué NFT son elegibles para registrarse mediante el contrato de registro. El contrato de implementación puede definir las funciones y reglas de TBA, como establecer el límite diario de transacciones de TBA o especificar los tipos de activos que puede mantener.
Contrato de implementación
Todas las parteras tradicionales creadas mediante el registro de un contrato pueden seleccionar el contrato de implementación que desean utilizar para la cuenta. El contrato de implementación registra las funciones y reglas de la cuenta del contrato inteligente. Debe implementar al menos las siguientes funciones:
ejecutarCall(): una función utilizada para ejecutar cualquier función de contrato inteligente que interactúe con un contrato externo. Por ejemplo, para vender el activo incluido en una cuenta vinculada a una NFT, es posible que deba llamar a una función en el contrato Uniswap. ejecutarCall le permite realizar esta llamada a función en nombre de su cuenta de contrato inteligente, lo que le permite comprar, vender/intercambiar cualquier activo que desee.
token(): una función de vista de solo lectura que devuelve el identificador del NFT propietario de la cuenta vinculada al token. Devuelve el ID de la cadena (si el NFT está en la red principal, Polygon, Optimism, etc.), la dirección del contrato NFT y el ID del token NFT.
propietario(): Devuelve la dirección del propietario del NFT que controla la cuenta vinculada al token. Siguiendo el ejemplo anterior, esta sería la dirección de la Cuenta de Usuario.
nonce(): devuelve el nonce actual de esta billetera de contrato inteligente. Cada transacción exitosa aumentará el nonce en 1, con un valor inicial de 0.
Finalmente, aunque no es una llamada a función, el contrato de implementación que vincula la cuenta al token debe tener una función de recepción() para poder recibir el activo nativo (como ETH) directamente en su dirección.
Registrar Contrato
El siguiente es un contrato inteligente de Registro escrito en lenguaje Solidity:

Este código puede mostrar que los parámetros necesarios para crear una cuenta para un determinado NFT incluyen la dirección del contrato de ejecución de implementación, chainId la identificación de la cadena de destino, tokenContract correspondiente al contrato al que pertenece la NFT, tokenId correspondiente a la identificación a la que pertenece el NFT. NFT pertenece y el valor de ofuscación es sal. Para crear una cuenta NFT basada en Fast Dapp Demo, solo necesita ingresar la dirección y el ID del contrato NFT, y el resto de los campos se generan automáticamente. Los pasos son relativamente simples.
La propuesta ERC-6551 es un nuevo estándar Token que es una actualización subversiva del estándar NFT original. ERC-6551 utiliza un registro sin permiso que es compatible con el NFT ERC-721 existente. El registro es un contrato inteligente que sirve como fábrica y directorio para las parteras tradicionales. Cualquiera puede crear un TBA para cualquier token ERC-721 llamando a una función en el registro y pagando una pequeña tarifa. El contrato inteligente del registro tiene dos funciones:
createAccount: implementa una nueva cuenta vinculada a token para un NFT ERC-721 determinado y una implementación específica.
cuenta: una función de vista de solo lectura que devuelve la dirección de la cuenta vinculada al token para un NFT ERC-721 determinado, y se proporciona su implementación.
aplicaciones potenciales
Desde el incidente de Azuki, los NFT de una sola imagen estática se han vuelto significativamente menos atractivos, lo que ha provocado que muchos proyectos importantes pierdan valor. Sin embargo, las NFT que sean altamente interactivas y componibles pueden ser la clave para la recuperación del mercado. Desde juegos blockchain, música, DID hasta el metaverso, estos campos están llenos de un potencial infinito.
Las NFT son más que simples activos; también tienen su propia identidad en cadena y propiedades de contenedor, y pueden interactuar con aplicaciones descentralizadas (Dapps). Esto significa que todas las interacciones con la NFT se registran directamente en la propia NFT, en lugar de en la cuenta de su titular. Además, debido a que las NFT se basan en contratos inteligentes, su comportamiento e interacciones se pueden definir y controlar mediante reglas contractuales, lo que brinda flexibilidad y seguridad.
El protocolo ERC-6551 ha traído cambios revolucionarios en el campo NFT, cambiando el enfoque de las billeteras de los usuarios al propio NFT, brindando nuevas posibilidades para transacciones, juegos, trazabilidad y gobernanza. Con el mayor desarrollo de NFT, este protocolo nos llevará a una era digital más personalizada, interactiva y significativa.
Considere las siguientes cuatro posibles direcciones de aplicación:
Empaquetado de activos: NFT puede servir como un contenedor de activos, lo que permite empaquetar y comercializar múltiples activos en un solo NFT. Por ejemplo, un álbum de música NFT puede contener varias NFT de canciones, o una colección de arte NFT puede contener varias NFT de obras de arte. Esto no sólo hace que el cobro sea más sistemático, sino que también reduce las tarifas del gas en el comercio.
Cartera de inversiones: NFT se puede utilizar como herramienta de gestión de activos, lo que permite a los usuarios almacenar y gestionar múltiples tokens en una TBA. Además, los titulares de NFT también pueden autorizar a administradores externos a realizar transacciones de activos y definir claramente los permisos del administrador en contratos inteligentes para garantizar la seguridad de los activos.
Gestión de identidad NFT: NFT puede registrar todas sus actividades en la cadena, lo que la convierte en una verdadera identidad en cadena. Los usuarios pueden usar una única billetera ENS para representarse a sí mismos y usar diferentes TBA para representar sus roles en diferentes comunidades o aplicaciones.
NFT modulares: un NFT maestro puede generar un TBA que almacene sus NFT componentes. Por ejemplo, en el juego, el personaje NFT puede estar equipado con varios equipos NFT. Esto no solo hace que la realización del Metaverso sea más posible, sino que también se puede combinar con la IA para crear personajes NPC más realistas.
En definitiva, el futuro de NFT está lleno de infinitas posibilidades. Desde la gestión de activos hasta la verificación de identidad y el diseño de juegos modulares, desempeñarán un papel clave en el mundo digital.
