Metadata de tokens
Sequence ofrece un servicio de metadata para obtener metadata de tokens de cualquier contrato ERC721 o ERC1155, en cualquier cadena EVM.
- Aprenda cómo consultar metadata de tokens directamente para cualquier contrato
- Conozca los estándares y formatos de metadata de tokens para tokens ERC721 y ERC1155
[CONSEJO PRO: Sequence Indexer también soporta metadata de tokens]
Al usar el Sequence Indexer, agregue "includeMetadata": true
a su solicitud para consultar metadatos de tokens de cualquier contrato ERC721 o ERC1155. Vea abajo cómo obtener metadatos de tokens directamente.
Obtener metadatos de tokens para cualquier contrato ERC721 o ERC1155
Método GetTokenMetadata
de Sequence Metadata:
- Solicitud: POST /rpc/Metadata/GetTokenMetadata
- Content-Type: application/json
- Cuerpo (en JSON):
chainID
(string) — el id de la cadena, como nombre o número (ej. “1” o “mainnet”, “137” o “polygon”, etc.)contractAddress
(cadena) — la dirección del contratotokenIDs
(arreglo de cadenas) — arreglo de cadenas que contiene los IDs de token a obtener metadatos
Ejemplo: GetTokenMetadata
de algunos tokens usando un AQAAAAAAAF_JvPALhBthL7VGn6jV0YDqaFY
Este código requiere una clave de acceso API de Sequence Builder.
Actualización de metadatos de tokens
Al desplegar nuevos contratos o actualizar metadatos, se debe llamar a la URL de actualización de metadatos de tokens con una clave de acceso (del Sequence Builder) mediante una solicitud HTTPS POST por línea de comandos o usando el SDK de metadatos en un programa, para que los datos sean indexables en el servicio de metadatos del Sequence Indexer.
Método enqueueTokensForRefresh
de Sequence Metadata:
- Solicitud: POST /rpc/Metadata/EnqueueTokensForRefresh
- Content-Type: application/json
- Cuerpo (en JSON):
chainID
(string) — el id de la cadena, como nombre o número (ej. “1” o “mainnet”, “137” o “polygon”, etc.)contractAddress
(cadena) — la dirección del contratotokenIDs
(arreglo de cadenas) — arreglo de cadenas que contiene los IDs de token a obtener metadatos
Método getTokenRefreshStatus
de Sequence Metadata:
- Solicitud: POST /rpc/Metadata/GetTokenRefreshStatus
- Content-Type: application/json
- Cuerpo (en JSON):
taskId
(uint) — el id de tarea devuelto porenqueueTokensForRefresh
Instrucciones de prueba:
- Verifique la metadatos actual del token usando obtener metadatos de token
- Modifique el contenido de los metadatos del token ya sea onchain o mediante el baseURI del token
- Llame a los endpoints de actualización de token ID usando actualizar metadatos
- Verifique los cambios en los metadatos del token usando obtener metadatos de token
Estándares de Metadatos de Tokens
Estándares populares de tokens como EIP721 y EIP1155 tienen formatos de metadata similares con algunas diferencias sutiles. Además de los estándares, hemos visto en la práctica que los proyectos a menudo se desvían ligeramente de los estándares, pero de manera lógica, fácil de analizar y bien soportada en el ecosistema, incluyendo el servicio Sequence Metadata. A continuación describimos los estándares y prácticas comunes entre proyectos para ayudarle a entender cómo formatear la metadata de sus tokens para sus proyectos.
Estándares de metadatos
ERC721
Los contratos de tokens ERC721 contienen un método en el contrato llamado tokenURI(uint256) string
. Al consultar el método tokenURI
en el contrato, este devolverá un URI que contiene metadatos adicionales para ese activo.
Consulte la EIP para detalles específicos: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
Aquí hay un ejemplo de Bored Ape (token id 9)
respuesta:
En el caso de este Bored Ape, parece que no hay nombre ni descripción definidos,
pero sí tienen “attributes” como un arreglo de { "trait_type": string, "value: string }
.
Además, consulte OpenSea para más información: https://docs.opensea.io/docs/metadata-standards
Tenga en cuenta que técnicamente OpenSea rompe el estándar ERC1155 al sugerir el uso de “attributes”, cuando en realidad, ERC1155 utiliza el nombre de campo “properties” en lugar de “attributes”. Vea https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema (lea la sección a continuación). Sin embargo, esto está perfectamente bien y el uso combinado de properties / attributes es compatible en la práctica. En Sequence Metadata, soportamos ambas estructuras para contratos de tokens que usan cualquiera de los dos formatos para sus properties/attributes.
Otro ejemplo es de Neon District
ERC1155
Los contratos de tokens ERC1155 contienen un método en el contrato llamado uri(uint256) string
. Al consultar el método uri
en el
contrato, este devolverá un URI que contiene metadatos adicionales para ese activo.
Consulte la EIP para detalles específicos: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema
Aquí hay un ejemplo de carta de Skyweaver (token id 65548)
Como puede ver, los metadatos del token ERC1155 de Skyweaver utilizan el objeto properties
, que es un objeto/diccionario de datos arbitrarios.
Attributes vs Properties
Como puede ver, el formato estándar de los metadatos de tokens contiene tanto attributes
como properties
. El campo attributes
es un arreglo de
objetos. El campo properties
es un objeto/diccionario de datos arbitrarios. En términos técnicos, el tipo attributes
se define como
[]map<string,any>
y el tipo properties
se define como map<string,any>
.
En la práctica, hemos visto que muchos proyectos usan tanto attributes
como properties
para almacenar los mismos datos, y en algunos casos, usan
attributes
para guardar datos que deberían estar en properties
y viceversa. A veces los proyectos usan ambos campos, y esto es completamente válido
en la práctica, ya que los marketplaces y servicios analizarán ambas áreas.
Finalmente, si busca extender el formato de metadatos para adaptarlo a su proyecto, recomendamos utilizar uno o ambos campos attributes
y properties
tanto para ERC721 como para ERC1155.
ERC20
Por último, una nota sobre los tokens ERC20. Los tokens ERC20 son solo un token único, por lo que no tienen un token ID, sino que
se representan completamente por su dirección de contrato. Podemos inferir cierta información sobre el token consultando los métodos del contrato
como name
y decimals
. Además, los tokens ERC20 pueden aprovechar la extensión contractURI
utilizada
por OpenSea y descrita en más detalle en nuestra sección de Metadatos de contrato.