Recientemente, con el crecimiento del ecosistema Conflux, se desarrolla una gran cantidad de aplicaciones de alta calidad en Conflux, especialmente las relacionadas con NFT. Sin embargo, esto también conduce a un problema de variación en la calidad del contrato y la compatibilidad estándar.
Por lo tanto, para la prosperidad y sostenibilidad de las aplicaciones NFT en la blockchain de Conflux, la integración entre aplicaciones y la calidad y seguridad de los contratos, se recomienda a todos los desarrolladores de Conflux NFT que lean este artículo con atención.
Siguiendo los estándares
Los desarrolladores de NFT deben leer y cumplir completamente con el estándar EIP-721 o EIP-1155.
Se recomienda que las aplicaciones que no tengan casos de uso en los que se utilicen FT y NFT adopten y sigan el estándar EIP-721.
La interfaz y la implementación del contrato estándar se pueden encontrar en:
EIP-721: https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC721
EIP-1155: https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC1155
Se recomienda la dirección URI de metadatos NFT, obtenida del método URI o tokenURI, para usar el formato de marcador de posición, en lugar de almacenar un URI por tokenId.
Los metadatos NFT JSON fuera de la blockchain deben seguir la sección Metadatos en cada documento estándar. Se recomienda que tanto EIP-721 como EIP-1155 sigan el esquema JSON de metadatos de EIP-1155 para incluir campos como nombre, imagen, descripción, etc., y utilizar los mismos estándares de localización para soporte multilingüe (en lugar de utilizar no -estructuras y campos estándar, como name_en).
Es posible que las aplicaciones futuras de ConfluxScan o de billetera dejen de admitir o solo brinden soporte limitado para contratos que no cumplan completamente con el estándar EIP-721 o EIP-1155.
Construcción de la biblioteca de contratos de Conflux
El repositorio anterior contiene herramientas de contrato comunes utilizadas por Conflux, como contratos integrados, extensiones 721/1155, etc. Los desarrolladores pueden usarlos según sea necesario.
Todos los desarrolladores pueden enviar issues o pull requests para enriquecer la biblioteca de contratos.
Enumerable
Debido al costo adicional del gas para los usuarios, la extensión enumerable es opcional en EIP-721. Incluso se ha eliminado del estándar EIP-1155.
El costo del gas es bajo en la blockchain Conflux y existe un mecanismo de patrocinio único. Por lo tanto, los desarrolladores que tengan una gran necesidad de la extensión enumerable en los contratos EIP-1155 pueden usar las extensiones en la biblioteca de contratos de Conflux para implementarla.
La extensión enumerable puede descubrir los NFT que han sido acuñados por contratos o propiedad de los usuarios. Implementarlo en un contrato traerá costos adicionales de almacenamiento y gas, por lo que los desarrolladores deben sopesar cuidadosamente los pros y los contras de antemano. Si la funcionalidad anterior es necesaria en una aplicación, se recomienda implementarla fuera de la blockchain. En el futuro, ConfluxScan puede proporcionar servicios relevantes para contratos que sigan completamente los estándares para reemplazar la funcionalidad de enumeración.
Comparación de costos de gas enumerada
call safeTransferFrom, tokenId: 1, amount: 1, data: 0x
Si los contratos EIP-1155 necesitan implementar Enumerable, se recomienda hacerlo en función de los ajustes preestablecidos de CRC1155.
Condición | Ethereum | Conflux |
---|---|---|
IERC721Enumerable Unsupported | Code txHash Gas Used: 61,564 | Code txHash Gas Used: 53,704 Storage Deposit: 128 |
IERC72Enumerable Supported | Code txHash Gas Used: 87,888 | Code txHash Gas Used: 75,828 Storage Deposit: 192 |
IERC1155Enumerable Unsupported | Code txHash Gas Used: 53,514 | Code txHash Gas Used: 42,356 Storage Deposit: 64 |
IERC1155Enumerable Supported | Code txHash Gas Used: 123,547 | Code txHash Gas Used: 76,689 Storage deposit: 256 |
Con el soporte de Enumerable, la operación de minting costará más depósitos de almacenamiento.
Condition | Conflux |
---|---|
IERC721Enumerable Unsupported | Code txHash mint Gas Used: 37,796 mint Storage Deposit: 128 |
IERC721Enumerable Supported | Code txHash mint Gas Used: 64,296 mint Storage Deposit: 320 |
IERC1155Enumerable Unsupported | Code txHash mint Gas Used: 34,974 mint Storage Deposit: 64 |
IERC1155Enumerable Supported | Code txHash mint Gas Used: 74,013 mint Storage Deposit: 512 |