indice
- Introduccion
- Creando una NFT sin programar
- Descargemos Metamask
- Creando un archivo IPFS
- Creando una NFT Programable. 5.2 Desplegando Smart Contract en Solidity usando Remix. 5.3 Minteando NFT
Es necesario un poco de:. -Familiarizacion con la red o blockchain donde se desea postear su NFT, tambien con el precio de la misma (BNB, ETH, POLYGON, SOL y mas) pues si, lamentablemente gastaremos algo de dinero para poder crearla. El costo va a variar dependiendo de la red que escoja. -NO es necesario saber todo, solo precios de la moneda (la moneda oficial de Binance) https://www.binance.com/es-MX/trade/BNB_BUSD. -El costo del gas por “minteo” de NFTs en esta red. -El explorador de la red nos ayudan en todo esto. Rastrear transacciones e informacion de costos, datos para desplegar tu NFT en tu wallet y mas. Te dejo el explorador de Binance https://bscscan.com pero todas las blockchain tienen uno. Busca el tuyo.
Herramientas:. -Remix IDE (VM de Ethereum, es un IDE para crear contratos en Solidity). -Metamask (cartera de crypto activos). -Visual Studio Code (para generar archivos formatos .JSON). -app.pinata.cloud (aplicacion que utiliza IPFS necesaria para almacenar nuestra NFT)
¡Empezemos!
1.- Intro Pasemos a explicar un poco sobre que es una NFT, las NFT mas conocidas actualmente son las NO programables usualmente creadas bajo herramientas gratuitas ofrecidas en NFT Marketplaces(OpenSea.io, bakery, y otras) para ser listados en su catalogo de venta, estas NFT usualmente son “Arte” y dentro de su codigo solo tiene un link IPFS con direccion al Arte que el creador puso en Venta.
La red de estas NFT NO programables estan guardadas usualmente bajo un SmartContract Maestro de el Marketplace donde se origino el Mint (Creacion del Token ERC-721), haciendo asi posible su facil transferencia entre compradores y vendedores.
Por otro lado, una NFT programable, es cuando nosotros somos los que creamos ese SmartContract maestro el cual puede tener cualquier caracteristica especial(funcion) que nosotros queramos en nuestras NFT y sobre este smartContract maestro se generara el MINT de las Token ERC-721 como el supply que pongamos a disposicion a nuestra comunidad , usuarios o clientes.
Por dar un ejemplo de que se podría lograr con la programacion del SmartContract seria:
1.- Utilizar la NFT como un pase especial de Acceso a contenido “Premium”.
2.- Utilizar la NFT para que los holders de ella obtengan ingresos pasivos con el tiempo.
3.- Utilizar la NFT para Gaming dandole a cada NFT el id de un objeto en el Juego.
Las NFT tienen la caracteristica principal de ser un identificador unico e inmutable, pero no solo se limita a esto ya dependera de el uso que queramos darle.
2.- Creando una NFT sin programar
Aqui te dejo un tutorial paso a paso para crear una NFT NO Programable: https://github.com/Hisahito/my_launchx_blog/blob/master/content/posts/post3.md
3.- Descargando Metamask https://metamask.io Se trata de una simple cartera de crypto activos. Aqui es donde veremos nuestra NFT minteada y aqui sera donde la portaremos todo el tiempo, A Metamask reciberemos nuestra NFT una vez la mintiemos y tambien podremos enviarla a otra cartera si lo deseamos, siempre y cuando pagemos la tarifa de envio(gas fee).
Es importante aclarar que es necesario saber perfectamene en que red estamos deployando nuestra NFT pues como veras en al parte de arriba de Matamask aparece que estamos conectado a la red de ETH. Podemos cambiar de red siempre y cuando agregemos los datos que Metmask nos pide.
En esta prueba utilizaremos la red de Binance, para ello sera necesario agregar su red a metamask te dejo un paso a paso aqui: https://academy.binance.com/es/articles/connecting-metamask-to-binance-smart-chain
4.- IPFS Pinnata
Pinnata se trata de una herramienta para almacenar archivos en la nube. Con esto pinnata nos genera un link valido para utilizar en nuestro contrato en Solidity.
Pinnata es muy intuitivo y facil de usar. Primer subamos nuestra NFT en el formato de la imagen que tenemos o hicimos:
Una vez pinnata nos muestra que se subio nuestro archivo es importante que guardemos el URL que nos genero pues lo utilizaremos mas tarde.
5- Creando una NFT Programable Listo tenemos nuestra imagen arriba en “formato” IPFS ahora VisualStudioCode nos ayudara a generar el tokenURI necesario en nuestro contrato inteligente. Abramos nuestro VSC y creemos un archivo .json creemos un objeto con ciertas caracteristas descriptivas de nuestra NFT:
{
"name": "nombre de tu NFT",
"description": "esta es mi primera NFT en la red de Binance",
"valor": 50BNB,
"image": "aqui va la URL que nos dio pinnata"
}
Es importante mencionar que en este archivo podemos poner los valores que queramos, esto solo son descriptivos y ayudaran a que nuestra NFT tenga una historia que contar. Ahora guardemos este archivo y volvamos a Pinnata para subir nuestro JSON. Guardemos este nuevo URL. Este nuevo URL es el URL final que ira en nuestro contrato inteligente.
Paso 5.1.- Remix ETH Virtual Machine.
Ahora si adentremenos a solidity !! Usaremos el IDE de Remix https://remix.ethereum.org
Creamos una carpeta con el nombre que gustes, en mi caso le puse el nombre de NFT. Ahora creamos un archivo nuevo .sol dentro de nuestra carpeta, en mi caso lo nombre firstNFT.sol el codigo que ves en la imagen esta a continuacion:
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;
import "https://github.com/0xcert/ethereum-erc721/src/contracts/tokens/nf-token-metadata.sol";
import "https://github.com/0xcert/ethereum-erc721/src/contracts/ownership/ownable.sol";
contract nft1 is NFTokenMetadata, Ownable {
uint256 public tokenCounter;
constructor() {
nftName = "SandersCall";
nftSymbol = "THECALL";
tokenCounter = 0;
}
function mint(address _to, string calldata _uri) external onlyOwner {
super._mint(_to, tokenCounter);
super._setTokenUri(tokenCounter, _uri);
tokenCounter = tokenCounter + 1;
}
}
Expliquemos un poco el codigo: Pragma solidity es la version de solidity que estaremos utilizando para nuestro SmartContract. -Import se utiliza para agregar un SmartContract y utilizar las funciones de estos, se puede importar localmente o por medio de URL solo en remix.
contract nft1 is NFTokenMetadata, Ownable
xnombrex: es el nombre que tendra nuestro contrato. xcaracteristicas del contratox: es de que tipo sera nuestro contrato o si podra llamar funciones de otro smartcontract , en este caso puede llamar funciones de NFTokenMetadata y Ownable contratos que estan dentro de las librerias de Github que descargamos.
uint256 public tokenCounter;
Se trata de la declaracion de nuestra primera variable tokenCounter de tipo uint256.
Constructor()
Es una funcion que todos los SmartContract tienen y sirve para iniciar las variables con un valor en cuanto se haga el deploy.
function mint(address _to, string calldata _uri) external onlyOwner
Esta es la funcion que genera las token ERC-721 , solicita la direccion de la cartera a la que deseas mandar la NFT y la url del Json , esta funcion solo puede ser ejecutada por la cartera Owner del SmartContract.
5.2. Deployando un contrato inteligente- Compilamos el Codigo para que Remix descarge el/los repositorios de github donde se encuentran las funciones del protocolo ERC-721 de la libreria de github:
Recuerden poner el compilador en la version 0.8.0 justo como el pragma solidity indica , sino esto nos podria dar error.
En la seccion de Deploy , cambiamos a inject Web3 para que remix se conecte con Metamask y sepa que utilizaremos la red de pruebas de Binance que se diferencia con el numero 97.
Verificamos que estamos haciendo deploy de nuestro contrato y con nuestra cartera. Una vez listos ejecutamos el deploy:
Confirmamos la transacion en Metamask.
Se verificara que se ejecuto el deploy en la testnet y se confirma la tx.
Revisamos en remix la direccion de nuestro SmartContract y desde remix podemos interactuar con las funciones de esta.
Paso 5.3.- Mint de tu NFT
Por ultimo podemos hacer Mint de nuestra primera Token ERC-721 utilizando la funcion Mint.
Aqui agregamos la direccion de nuestra cartera y la URL del JSON que hicimos en el paso 4 que contiene nuestra imagen.
Verificamos si la transacion se realizo con exito confirmandolo en el explorador de la red de Binance, ingresando el address/Hash de la NFT deployada, el explorador nos dara todos los datos importantes
Felicidades! Haz programado tu primera NFT!!!
Recuerda que con las funciones creadas podemos hacer llamados a la blockchain para recibir datos de nuestro reciente SmartContract todo desde el IDE de Remix.
Por ejemplo podemos observar la cantidad de tokens que a generado nuestro smartContract con tokenCounter. Tambien podemos ver quien es dueño de la NFT numero 1 con OwnerOf. Podemos ver el nombre y quien es el dueño de este SmartContract con Owner y Name , asi como tambien la URL de cada Token. Tambien podemos observar cuantas de nuestra NFT tiene cierta cartera , ingresando su direccion en BalanceOf.
Espero este tutorial haya sido de ayuda! no dudes en compartirlo.