Skip to content

Latest commit

 

History

History
163 lines (98 loc) · 8.08 KB

File metadata and controls

163 lines (98 loc) · 8.08 KB

Adición de metadatos

  • Cree un nuevo contrato ERC721 que admita metadatos.
  • Puedes usar este Contrato para el ejercicio.
  • El URI del token base es la puerta de enlace IPFS elegida.
  • Puede cargar sus NFT directamente en IPFS en Pinata.
  • ¡Tus tokens deberían ser visibles en Mintsquare y en Aspect una vez acuñados!
  • Implementa tu nuevo contrato
  • Llame a submit_exercise() en el Evaluador para configurar el contrato que desea evaluar
  • Reclamar puntos en ex7_add_metadata. (2 puntos)

¿Buscas el ejercicio 6? Haga clic aquí

Solución

Para comprender realmente lo que se espera de nosotros en este ejercicio, debemos comenzar explorando lo que hace ex7_add_metadata. En pocas palabras, ex7_add_metadata está llamando a la función tokenURI para el NFT con token_id 1 en nuestro contrato inteligente y comparando si el valor devuelto es el mismo que el valor devuelto por el token Dummy ERC721 proporcionado al comienzo del taller.

Podemos verificar cuál es el valor devuelto por el token ficticio yendo a Voyager y llamando a la función tokenURI pasando el número 1 como token_id.

Graph

Al concatenar la matriz devuelta, podemos ver que el URI es https://gateway.pinata.cloud/ipfs/QmWUB2TAYFrj1Uhvrgo69NDsycXfbfznNURj1zVbzNTVZv/1.json.

Si seguimos el enlace obtenemos los metadatos de la NFT.

Graph

Si seguimos el URI de la imagen, podemos ver el NFT en sí.

Graph

Ahora que sabemos lo que se supone que debe devolver nuestro contrato inteligente como tokenURI, podemos pasar a la implementación.

Seguiremos la recomendación del ejercicio y copiaremos los archivos base que necesitamos para tener un contrato inteligente ERC721 con la extensión Metadata.

En particular, esto es lo que tenemos que hacer:

  • Copie o clone el contenido de ERC721ex07.cairo en contracts/Solución/ERC721ex07.cairo.
  • Copie o clone ERC721_Metadata.cairo en contracts/ERC721_Metadata.cairo.
  • Copie o clone el contenido de ShortString.cairo en shared/ShortString.cairo.
  • Copie o clone el contenido de Array.cairo en shared/Array.cairo.

Una vez que terminemos de copiar los archivos relevantes, deberíamos pasar a compilar, pero primero pasaremos a felt los datos para llamar al contrato.

Quiero nombrar mi colección NFT "Nadai Market" con el símbolo "NFI". El propietario será mi cuenta de prueba Argent X 0x05B23d29C5b33a1cf0c4e50F798f9E22c7254913368996436682852EfCF69f86, la URI base https://gateway.pinata.cloud/ipfs/QmWUB2TAYFrj1Uhvrgo69NDsycXfbfznNURj1zVbzNTVZv/ y el prefijo .json.

Obtengamos primero la versión fieltro de las cadenas cortas (menos de 31 caracteres) usando utils.py .

Dentro de la carpeta de la ruta del archivo ejutamos los comandos.

python3 -i utils.py

Ahora empezamos si todo ha ido bien las conversiones.

str_to_felt("Nadai Market")
  • 24257570604125136158991279476
str_to_felt("NFI")
  • 5129801
hex_to_felt("0x05B23d29C5b33a1cf0c4e50F798f9E22c7254913368996436682852EfCF69f86")
  • 2576485153152103101814659868666844275075629902050884189831195075733091688326
str_to_felt(".json")
  • 199354445678

Finalmente, obtengamos la versión sentida del URI base.

str_to_felt("https://gateway.pinata.cloud/ipfs/QmWUB2TAYFrj1Uhvrgo69NDsycXfbfznNURj1zVbzNTVZv/")
  • 184555836509371486644298270517380613565396767415278678887948391494588524912

  • 181013377130045435659890581909640190867353010602592517226438742938315085926

  • 2194400143691614193218323824727442803459257903

Tenga en cuenta que cuando se trata de una cadena larga (más de 31 caracteres), el valor devuelto no es un único número de felt , sino una matriz de ellos. Cuando queremos pasar una matriz como entrada para una función como en el caso de nuestro constructor, primero debemos pasar la longitud de la matriz y luego los elementos de la matriz en orden.

El comando de implementación de nuestro contrato inteligente será largo. Tenga en cuenta que el número 3 proporcionado como parte de las entradas es el tamaño de la matriz que describe el baseURI .

Ahora podemos pasar a compilar y deployar nuestro Smart.

starknet-compile Solución/ERC721ex07.cairo \
  --output comp/ERC721ex07.json --abi abis/ERC721ex07.json
  • CON PROTOSTAR
prtostar build

Ahora pasaremos al Deploy, fijese que haya sido creado los ERC721ex07.json y ERC721ex07_abi.json. y ejecutamos

starknet deploy --contract comp/ERC721ex07.json \
  --network alpha-goerli --no_wallet \
  --inputs 24257570604125136158991279476 5129801 2576485153152103101814659868666844275075629902050884189831195075733091688326 3 184555836509371486644298270517380613565396767415278678887948391494588524912 181013377130045435659890581909640190867353010602592517226438742938315085926 2194400143691614193218323824727442803459257903 199354445678
  • CON PROTOSTAR
protostar deploy ./build/ERC721ex07.json --network alpha-goerli -i 24257570604125136158991279476 5129801 2576485153152103101814659868666844275075629902050884189831195075733091688326 3 184555836509371486644298270517380613565396767415278678887948391494588524912 181013377130045435659890581909640190867353010602592517226438742938315085926 2194400143691614193218323824727442803459257903 199354445678

Deploy transaction was sent. Contract address: 0x027ea4035b806684b47f704429dcc39d2fff08d189a036335c3ab7c3becf8069 Transaction hash: 0x02abfe24fe56d3b7c618544f80cae98a0c03048ab311639c8228e6e42b7ec6d3

Una vez que se implemente el contrato, tendremos que dirigirnos a Voyager para acuñar un NFT con token_id 1.

Graph

Una vez que se acuña el NFT, podemos verificar que nuestro contrato inteligente está devolviendo el mismo URI de token para el identificador de token 1 como lo hizo el Dummy ERC721.

Graph

Al concatenar la matriz devuelta, obtenemos exactamente el mismo enlace que antes: https://gateway.pinata.cloud/ipfs/QmWUB2TAYFrj1Uhvrgo69NDsycXfbfznNURj1zVbzNTVZv/1.json.

En Voyager, ahora podemos dirigirnos al Evaluador y enviar nuestro contrato inteligente invocando la función submit_exercise.

Graph

Luego evaluamos nuestra solución invocando la función ex7_add_metadata en el Evaluador.

Graph

Si todo salió según lo planeado, deberíamos haber recibido 2 puntos adicionales en nuestra dirección de billetera Argent X 0x05B23d29C5b33a1cf0c4e50F798f9E22c7254913368996436682852EfCF69f86 si obtuvo 20 puntos en el contrato inteligente Point Counter.

También puede revisar de una forma mas entretenida sus resultados en la siguiente web

Graph