Desplegar una Colección de NFT ERC-721 en Avalanche
Este tutorial te guiará en el despliegue de un contrato inteligente ERC-721 (NFT) básico en la Red Avalanche, sin importar tu experiencia previa en desarrollo. Desplegaremos nuestro NFT en la Testnet Fuji de Avalanche y lo veremos en el explorador Snowtrace de la Testnet. Ten en cuenta que estos no son transferibles a la Mainnet. Sin embargo, una vez que te sientas cómodo lanzando tu proyecto, puedes hacerlo en la Mainnet de Avalanche y listarlos en un mercado de NFT.
Se utilizarán las siguientes herramientas durante este tutorial:
- Pinata: Para almacenar tus imágenes y metadatos de NFT.
- Wizard de OpenZeppelin: para crear el contrato inteligente ERC-721.
- Remix IDE: Para editar el código y desplegarlo en Fuji.
- Avalanche Testnet Faucet: Para financiar el despliegue.
- Extensión de navegador Core: Para procesar transacciones relacionadas con el financiamiento y despliegue del contrato inteligente.
- Snowtrace Testnet Explorer: Para ver el contrato inteligente desplegado.
DESCARGO DE RESPONSABILIDAD: Este tutorial de contrato inteligente en Solidity es solo con fines de demostración. Los usuarios deben tomar precauciones adecuadas, manejo de errores y salvaguardias para su uso en producción. Nadie en Ava Labs es responsable de tu desarrollo y debes asumir la responsabilidad total de asegurar que tu código sea seguro.
Preparando tus Archivos de NFT
El primer paso para configurar un contrato inteligente de NFT es tener tus archivos de NFT listos para usar. En este ejemplo, los archivos se cargarán en Pinata, un servicio de pinning que evita que los archivos sean recolectados por garbage collection en IPFS.
Si no estás familiarizado con el proceso de cargar archivos de imagen y metadatos en un proveedor de IPFS para uso en colecciones de NFT, por favor revisa este artículo sobre la preparación de archivos de NFT. Asegúrate de que tus archivos estén cargados y que tu URI base esté lista para enchufarla en tu contrato inteligente.
Una vez que los archivos de imagen y metadatos estén listos, podemos prepararnos para desplegar un contrato inteligente.
Preparando tu Entorno
Extensión de Core
Necesitarás tener instalada la Extensión de Core en el navegador que estés usando para poder financiar el despliegue del contrato inteligente. Si aún no lo has hecho, descarga Core y habilita el Modo Testnet. Para hacer eso, ve a Configuración y haz clic en Avanzado.
Aquí, activa la función de Modo Testnet. Esto hará que Core cambie automáticamente a la Testnet Fuji.
Si estás usando otras billeteras, como Core o MetaMask, puedes agregar la Testnet Fuji utilizando las siguientes especificaciones:
- Nombre de Red: Avalanche C-Chain
- Nueva URL RPC: https://api.avax-test.network/ext/bc/C/rpc
- ChainID:
43113
- Símbolo: AVAX
- Explorador:
https://testnet.snowtrace.io
Obteniendo Fondos de Testnet
Debido a que estamos desplegando en la Red Fuji, necesitarás obtener AVAX en la red Fuji. Avalanche tiene un Faucet que gotea tokens de prueba a la dirección de tu elección. Si ya tienes un saldo de AVAX mayor que cero en Mainnet, pega tu dirección de C-Chain allí y solicita tokens de prueba. De lo contrario, por favor solicita un cupón de faucet en Guild. Los administradores y moderadores en el Discord oficial pueden proporcionar AVAX de testnet si los desarrolladores no pueden obtenerlo de las otras dos opciones.
Creando el Contrato Inteligente
Para crear el contrato inteligente, vamos a usar Open Zeppelin. Open Zeppelin es una herramienta clave para construir contratos inteligentes de forma rápida y sencilla. Aunque solo estamos rascando la superficie en este tutorial, hay amplia documentación disponible en su sitio web para que la leas cuando quieras construir contratos más complejos.
Open Zeppelin proporciona un Contrato Wizard que construirá contratos ERC. Para evitar cualquier entorno de codificación complejo, usaremos esto para crear nuestro contrato ERC-721.
Selecciona ERC-721
en el Contrato Wizard para empezar. Esto creará el contrato en el lenguaje de programación Solidity.
Como puedes ver, el contrato de plantilla está básico. Rellenaremos la información en el panel izquierdo para auto-popularlo en nuestro contrato. Asegúrate de cambiar a la pestaña ERC-721 mientras comienzas para hacer el contrato adecuado.
El Wizard rellena automáticamente un nombre y un símbolo para tu colección de NFT, que modificaremos aquí. Lo estoy llamando Fotografía
y dándole el símbolo FOTO
. Si elegiste tus propios archivos para usar durante este tutorial, puedes elegir un nombre y un símbolo relevantes para tu colección.
El campo Base URI que se muestra aquí es la URL de la carpeta de metadatos cargada en Pinata(por ejemplo, la nuestra es https://gateway.pinata.cloud/ipfs/QmYdWxbiwsfsYcW1CYQPgYujAc9FMLPG3fgFcxFskbSsFa
). Pega eso en el campo Base URI. Después de que el Wizard agregue nuestras variables a la plantilla, nuestro contrato debería verse así:
A continuación, querremos marcar las casillas de Mintable
e Ids de Incremento Automático
. Esto poblará una función de mint en nuestra plantilla que manejaría el incremento de los Ids de token al hacer mint si tuviéramos más de un NFT en nuestra colección. Aún queremos que asigne automáticamente nuestro 1 NFT, así que lo marcamos.
Esto marca automáticamente el botón de Ownable
, que le da a la función safeMint
el modificador onlyOwner
. Este modificador indica que solo el propietario del contrato inteligente podrá llamar exitosamente a la función.
Este modificador debería ser eliminado al crear un contrato inteligente para un mint público. De lo contrario, los usuarios no podrían hacer mint exitosamente los NFT cuando llamen a la función safeMint
. Este tutorial solo maneja la dirección de la billetera del propietario, por lo que se deja allí.
Ahora, nuestro contrato está un poco más poblado:
Para este ejemplo simple, no agregaremos ninguna funcionalidad adicional a la función safeMint
. Actualmente, hace mint de un NFT a la dirección especificada en la llamada de la función. No hay costo para hacer mint del NFT aparte de la tarifa de gas por la transacción en sí.
Esta función safeMint
actualmente también funciona como una función de airdrop porque la dirección a la que se acuña el NFT no necesita ser la del propietario de la función. Esta funcionalidad se vuelve muy útil cuando los propietarios de colecciones de NFT quieren regalar NFTs de forma gratuita fuera de la ventana de acuñación normal.
En este punto, nuestro contrato inteligente está listo. En la parte superior, puedes hacer clic en "Abrir en Remix" para prepararte para implementar tu contrato inteligente.
Implementando el Contrato Inteligente con Remix
Remix IDE es un compilador de solidity que te permite editar, compilar e implementar tu contrato inteligente. Esto evitará que necesites descargar otros entornos de programación en esta etapa.
Una vez que hayas importado tu contrato, lo primero que debes hacer es compilarlo. Haz clic en el botón "Compile" en el lado izquierdo. También puedes usar el atajo de teclado Ctrl / Command + S
.
Una vez completado, obtendrás una marca de verificación verde en la pestaña de la izquierda y verás opciones para Publicar en IPFS o Swarm. Esas no son importantes para nuestro tutorial. A continuación, haz clic en la pestaña inferior del lado izquierdo para pasar a la página de implementación.
Ahora, necesitamos cambiar el entorno que Remix intentará usar para implementar el contrato inteligente. Haz clic en el menú desplegable "Environment" y selecciona "Injected web3".
Esto debería pedirte que te conectes con tu cuenta de Core. Una vez conectado, puedes verificar la conexión correcta comprobando que el número de cuenta coincida con tu dirección de Core.
Ahora haz clic en el menú desplegable "Contract" y selecciona el contrato que creaste y compilaste. Debería aparecer con el nombre que le diste en el Asistente de Open Zeppelin.
Ahora, haz clic en "Deploy". Esto abrirá Core y te pedirá que confirmes la transacción. Haz clic en "Confirm".
Puede tomar un segundo, pero una vez completado, tu contrato recién implementado aparecerá debajo del campo "Transactions Recorded".
Copia la dirección de tu contrato y abre el Snowtrace Testnet Explorer. Pega la dirección de tu contrato en la barra de búsqueda y haz clic en "Search".
Ahora verás la información de tu contrato en Snowtrace. La primera transacción que ves debería ser la implementación del contrato que acabas de hacer en Remix IDE.
Acuñando un NFT
Ahora que has implementado el contrato, puedes acuñar el NFT. Vuelve a la pestaña de Remix IDE y haz clic en tu contrato para expandir su información. Aparecerá una lista de funciones con las que puedes interactuar.
La única función que te interesa es la función safeMint
. Haz clic en la flecha desplegable de la función para expandir el campo de dirección.
Ahora, copia tu dirección de Core y pégala en este campo de dirección. Esto enviará el NFT a tu dirección cuando se llame a la función de acuñación. Luego, haz clic en "transact".
Esto abrirá Core y te pedirá que verifiques la transacción. Haz clic en "Confirm" para acuñar tu NFT.
Una vez que la transacción se haya confirmado, verás una marca de verificación verde en la terminal en la parte inferior de Remix IDE.
Vuelve a la página del explorador Snowtrace Testnet para tu contrato y actualízala. Ahora deberías ver una segunda transacción, tu llamada a safeMint
.
Al hacer clic en el TX Hash, ¡verás que tu NFT fue creado!
Mainnet
Todos los pasos anteriores se pueden utilizar en Mainnet, excepto los siguientes cambios:
- Asegúrate de cambiar a Avalanche C-Chain en Core.
- Asegúrate de tener tokens AVAX en tu cuenta para cubrir los costos de transacción.
- Debes usar la versión Mainnet de Snowtrace Explorer para ver las transacciones.
Was this page helpful?