Esta segunda clase es para la hackathon de r/a que es particularmente para la red de Stellar. Algunos proyectos van a utilizar NFTs, así que arrancamos el hackathon con una clase sobre NFTs en Stellar.
- NFT: Non-fungible tokens
- 1 peso + 1 peso = 2 pesos
- 1 NFT no puede ser mezclado con otro NFT de ahí que son no mezclables/no intercambiables.
- Un NFT puede representar cualquier cosa: Una obra de arte digital, un inmueble, un auto, etc.
- En el caso de una obra de arte digital, por ejemplo, pueden guardar la obra/imagen usando IPFS (https://ipfs.io/ InterPlanetary FileSystem), por ejemplo usando https://nft.storage/ pueden subir un archivo y obtener un CID (content identifier) que es un hash de su imagen digital de su NFT, por ejemplo: bafkreicogslm3rjlmjjmim3uooxzrecm4kzcs2mut5vxcsr36bhotqwzsi
- Es importante guardar el hash como metadata y no la URL porque al ser decentralizado, podemos acceder el mismo contenido desde muchas urls, por ejemplo:
- Podemos instalar https://addons.mozilla.org/en-US/firefox/addon/ipfs-companion/ (hay uno para chrome también) que nos permite directamente ir a ipfs://bafkreicogslm3rjlmjjmim3uooxzrecm4kzcs2mut5vxcsr36bhotqwzsi/
- En la red de Stellar, un NFT se crea con los siguientes pasos:
- Emitiendo un asset por un valor de 0.0000001 (la denominación mínima, es decir que no puede seguir partiéndose)
- Seteando metadata para esa cuenta (por ejemplo el link a ipfs, o metadata con la patente del auto, o cualquier otra cosa que identifique unívocamente lo que el NFT representa)
- Y luego “bloqueando” la cuenta emisora, haciendo que tenga un máster weight de 0, garantizando que no puede realizar más operaciones (como por ejemplo acuñar más de la misma moneda.
- Para hacerlo de manera profesional, acá hay un artículo que explica otros pasos que están fuera del scope de la hackathon https://www.bitcoininsider.org/article/160751/best-practices-creating-nfts-stellar
- Otros recursos, en inglés: https://www.youtube.com/watch?v=v576JFBuwFU, https://www.youtube.com/watch?v=zZ-hTUwr2KU, https://github.com/tyvdh/nft-stellar-buzz, https://github.com/tyvdh/stellar-nfts-on-tss
- https://github.com/r-argentina-programa/flag-game-nft
- https://github.com/r-argentina-programa/introduccion-blockchain
- Veamos un ejemplo de cómo crear NFTs
- https://github.com/r-argentina-programa/flag-game-nft/blob/main/cli/stellarSetup.js
- https://github.com/r-argentina-programa/introduccion-nft
- Este ejemplo usa node >= v14.8 que incluye top level await, para usar la forma del browser ver https://github.com/r-argentina-programa/introduccion-blockchain
- https://esbuild.github.io/getting-started/#install-esbuild
- También pueden compilar typescript
- npm i –save-dev esbuild
- npm i stellar-sdk
- “type”: “module” en package.json para poder usar imports
Links de interés:
Sitio: https://argentinaprograma.com
Github: https://github.com/r-argentina-programa/introduccion-a-js
Youtube: https://www.youtube.com/channel/UCXfQLgiBQPIzBp8-nRsG0KA
Twitch: https://www.twitch.tv/rargentinaprograma/
Reddit: https://www.reddit.com/r/argentina/comments/d9wzkh/alguno_que_ande_corto_de_guita_pero_muy/
Slack: https://join.slack.com/t/rargentinaprograma/shared_invite/zt-129e6wmmp-VouayVxGcHGUTTXHqGPJZQ