¿Cómo se construye un NFT?
Nft Certificado Digital API Metadatos
NFT significa Non Fungible Token, es decir, un token no fungible. Esta es una diferencia sustancial con las cryptovalute que, siendo dinero a todos los efectos son fungibles. Dicho en pocas palabras, una crypto es tan buena como otra. Si tu me das 5€ y yo te devuelvo 5€ de los míos, ¿cambia algo? No, porque el dinero es fungible. Estos tokens no lo son.
Los NFT son certificados digitales, que certifican la originalidad y propiedad única de un bien físico o digital.
Esta es una de las razones por las que han cobrado relevancia, por ejemplo en la compra de obras de arte digitales: de hecho, la obra misma puede ser fácilmente reproducida y su propietario podría ser usurpado en cualquier momento de su derecho; el dueño de la obra acuñada, por lo tanto, tiene poder absoluto para reivindicar su derecho de propiedad.
Esta relación entre el dueño y el token está protegida por la blockchain de Ethereum, y nadie podrá modificar el récord de propiedad o duplicar un nuevo token. Pero ahora basta de hablar. ¿Tienes curiosidad por los NFT y te gustaría construir uno?
¿Cómo se construye un NFT?
Al momento de escribir este tutorial, también lo estoy probando por primera vez, por lo que será un poco como ser compañeros de codificación.
El único requisito es tener VSC y Node instalados en tu ordenador, si no los tienes haz click aquí:
∙ VSC: https://code.visualstudio.com/
∙ Node https://nodejs.org/it/
Otra cosa que necesitamos para empezar es el wallet virtual Metamask:
- https://metamask.io/download/
Esto servirá para interactuar con el blockchain de Ethereum a través de una extensión en el navegador.
¿Estás list@? ¡Empezamos!
En primer lugar necesitamos tenemos una cantidad mínima de Ethereum para poder realizar las pruebas, no habrá necesidad de poner las reales, pues para ello nos ayudaremos de una faucet de ETH, es decir una página web que contribuye pequeñas cantidades.
- Desde la home de Metamask ve a red🡪 show/hide test networks 🡪 haz switch en test network ON y elige una red de test.
- Copia y pega el código en la página web de la red. Yo he usado la red de test Goerli.
El próximo paso es el de interactuar con el network de Ethereum, y para hacer esto necesitas conectarte a un cliente Ethereum. Usaremos el provider de Alchemy, y crearemos nuestra app usando la versión gratis.
Copiamos la clave API y la salvamos en las notas: view details 🡪 view key
El proyecto toma forma
Inicializamos el proyecto de nuestra bash:
mkdir nft-project
cd nft-project
Creamos otra directory dentro de nuestro proyecto y lo llamamos node.js:
mkdir ethereum
cd ethereum
npm init
Instalamos Hardhat, un Ethereum development environment (n.b.: para quien tiene Windows he necesitado abrir Powershell porque el comando no se reconocía en la bash):
npm install –save-dev hardhat
npx hardhat
Y seleccionamos la opción: ‘Create an empty hardhat.config.js’ .
Volvamos atrás a la root directory de nuestro proyecto y usamos Next.js para inicializar la web app cd ..
mkdir web
cd web
npx create-next-app@latest
Next.js es un framework de desarrollo web open source basado en Node.Js
fuente: Wikipedia.
Definir las variables
Ejecutamos los siguientes comandos para crear un documento de environment dentro de la carpeta ethereum, retomando desde donde nos quedamos y abrimos VSC para modificar el documento environment.
cd ..
cd Ethereum
touch .env
npm install dotenv –save
Cuando definimos las variables, la variable será el alchemy key que hemos guardado anteriormente, una la Metamask private key, y la última la dirección Metamask.
En nuestro documento .env tendrán que escribirse así:
DEV_API_URL = ALCHEMY_KEY
PRIVATE_KEY = METAMASK_PRIVATE_KEY
PUBLIC_KEY = METAMASK_ADDRESS
¿Cómo configurar el smart contract?
El smart contract es el contrato digital donde se fijan en el código los acuerdos entre los usuarios. Para hacer esto, volvemos a bash para crear dos nuevos directorios dentro de ethereum, uno para los contratos y uno para los scripts, después instalamos Open Zeppelin, una biblioteca open source en tema de smart contracts.
mkdir contracts
mkdir scripts
npm install @openzeppelin/contracts
En el interior de la carpeta ‘contracts’ creamos el file de nuestro primer contrato con el comando touch. touch myFirstContract.sol
La extensión .sol se refiere al Solidity Language, el lenguaje de los smart contracts. Si no lo tienes, instala el compilador en VSC, además te aconsejo este link donde puedes consultar los ejemplos de contrato smart:
https://ethereum.org/en/developers/docs/smart-contracts/languages/.
Construir los Metadatos de nuestro NFT
Los Metadatos son los elementos descriptivos en el NFT; para el propósito de nuestro tutorial, almacenaremos los metadatos en el NFT simplemente para que nuestra API devuelva el archivo JSON. En nuestro proyecto abierto en VSC creamos una nueva carpeta en web 🡪 pages 🡪 api 🡪 y la llamamos erc721 con el nombre de la forma más usada de NFT, l’ERC-721, llamada también forma estándar. En el interior creamos un documento JS donde añadiremos los metadatos.
Si queréis ejemplos explicativos de la estructura de los Metadatos de un ERC721 consulta esta documentación de Opensea: https://docs.opensea.io/docs/metadata-standards.
Ejecutamos el comando:npm run dev de la directory web/my-app.
Fase de deploy y consideraciones finales
Dado que nuestra aplicación es solo local, puede ser útil descargar un tool como ngrok para exponerla al acceso público.
Para el deploy usaremos nuestra dirección ngrok, que añadiremos en la función base URI del smart contract como en el ejemplo:
function _baseURI() internal pure override returns (string memory) { return "API_URL.ngrok.io/api/erc721/"; } |
Para completar usamos hardhat y para hacer el proceso más simple, te sugiero usar ethers.js, una biblioteca que pretende convertirse en el más completo para interactuar con la Blockchain de Ethereum. Una vez que se instala ethers.js, ejecutamos el comando de la carpeta Ethereum: npx hardhat compile
Por último, creo un documento deploy.js su ethereum/scripts/deploy.js.
Para mayor información sobre la fase de deploy es posible consultar el tutorial de Hardhat sobre https://hardhat.org/guides/deploying.html, donde es disponible un modelo de script de deploy. En este punto, una vez puesto en marcha el script de deploy, si todos los pasos se han seguido correctamente, en tu terminal aparecerá la dirección del network de test donde será visible tu NFT.
Además de esta pequeña introducción sobre deploy, en este tutorial sobre como construir NFT, no nos ocuparemos de la acuñación de la NFT pero haber llegado a este punto ya es una gran satisfacción. A partir de la idea inicial ofrecida, se puede comenzar a crear tu token personalizado enriqueciéndolo con los metadatos que prefieres y con el smart contract que mejor creas.
© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad