Usando Hardhat
Esta sección te guiará a través del despliegue de un contrato inteligente NFT (ERC-721) en la red de prueba Base utilizando Hardhat.
Hardhat es una herramienta para desarrolladores que ofrece una forma sencilla de desplegar, probar y depurar contratos inteligentes.
Objetivos Al final de esta guía deberías ser capaz de:
Configurar Hardhat para Base
Crear un contrato inteligente NFT para Base
Compilar un contrato inteligente para Base
Desplegar un contrato inteligente en Base
Interactuar con un contrato inteligente desplegado en Base
Prerrequisitos
Node v18+
Esta guía requiere que tengas instalada la versión 18+ de Node.
Descargar Node v18+ Si estás usando nvm para gestionar tus versiones de Node, simplemente puedes ejecutar nvm install 18.
Billetera Coinbase
Para desplegar un contrato inteligente, primero necesitarás una billetera web3. Puedes crear una billetera descargando la extensión de navegador de Coinbase Wallet.
Fondos en la billetera
Desplegar contratos en la cadena de bloques requiere una tarifa de gas. Por lo tanto, necesitarás financiar tu billetera con ETH para cubrir esas tarifas de gas.
Para esta guía, estarás desplegando un contrato en la red de prueba Base Goerli. Puedes financiar tu billetera con ETH de Base Goerli utilizando las siguientes opciones:
Grifo Coinbase | Base Goerli Grifos de Billetera Coinbase Para pasos más detallados sobre cómo financiar tu billetera con ETH de Base Goerli, consulta Grifos de Red (Network Faucets).
Creación de un proyecto
Antes de comenzar a desplegar smart contracts en Base, necesitas configurar tu entorno de desarrollo creando un proyecto en Node.js.
Para crear un nuevo proyecto en Node.js, ejecuta:
A continuación, necesitarás instalar Hardhat y crear un nuevo proyecto Hardhat.
Para instalar Hardhat, ejecuta:
Para crear un nuevo proyecto Hardhat, ejecuta:
Selecciona "Create a TypeScript project" y luego presiona enter para confirmar la raíz del proyecto.
Selecciona "y"
para ambas opciones: agregar un .gitignore
y cargar el proyecto de muestra. Tomará un momento completar el proceso de configuración del proyecto.
Configurando Hardhat con Base
Para desplegar smart contracts en la red Base, necesitarás configurar tu proyecto Hardhat y agregar la red Base.
Para configurar Hardhat para usar Base, añade Base como una red en el archivo hardhat.config.ts
de tu proyecto:
Instalar Hardhat toolbox
La configuración anterior utiliza el plugin @nomicfoundation/hardhat-toolbox para agrupar todos los paquetes y plugins de Hardhat comúnmente utilizados recomendados para comenzar a desarrollar con Hardhat.
Para instalar @nomicfoundation/hardhat-toolbox, ejecuta:
Cargando variables de entorno La configuración anterior también utiliza dotenv para cargar la variable de entorno WALLET_KEY desde un archivo .env a process.env.WALLET_KEY. Deberías usar un método similar para evitar codificar tus claves privadas dentro de tu código fuente.
Para instalar dotenv, ejecuta:
Una vez que hayas instalado dotenv, puedes crear un archivo .env con el siguiente contenido:
Sustituyendo <YOUR_PRIVATE_KEY>
con la clave privada de tu billetera.
PRECAUCIÓN
WALLET_KEY es la clave privada de la billetera que se utilizará al desplegar un contrato. Para obtener instrucciones sobre cómo obtener tu clave privada de Coinbase Wallet, visita la documentación de Coinbase Wallet. Es fundamental que NO la subas a un repositorio público.
Redes locales
Puedes ejecutar la red Base localmente y desplegar usando la misma. Si esto es lo que buscas hacer, consulta el repositorio que contiene las construcciones relevantes de Docker.
Tomará mucho tiempo para que tu nodo se sincronice con la red. Si obtienes errores que indican que el nonce ya ha sido utilizado al intentar desplegar, aún no estás sincronizado.
Para pruebas rápidas, como si deseas agregar pruebas unitarias al contrato NFT a continuación, es posible que desees dejar la defaultNetwork como 'hardhat'.
Compilando el smart contract
A continuación, se presenta un simple smart contract NFT (ERC-721) escrito en el lenguaje de programación Solidity:
El código Solidity anterior define un smart contract llamado NFT. El código utiliza la interfaz ERC721 proporcionada por la biblioteca OpenZeppelin Contracts para crear un smart contract NFT. OpenZeppelin permite a los desarrolladores aprovechar implementaciones de smart contracts probadas en batalla que se adhieren a los estándares ERC oficiales.
Para agregar la biblioteca OpenZeppelin Contracts a tu proyecto, ejecuta:
En tu proyecto, elimina el contrato contracts/Lock.sol que se generó con el proyecto y agrega el código anterior en un nuevo archivo llamado contracts/NFT.sol. (¡También puedes eliminar el archivo de prueba test/Lock.ts, pero deberías agregar tus propias pruebas lo antes posible!).
Para compilar el contrato usando Hardhat, ejecuta:
Desplegando el smart contract
Una vez que tu contrato haya sido compilado con éxito, puedes desplegar el contrato en la red de prueba Base Goerli.
Para desplegar el contrato en la red de prueba Base Goerli, necesitarás modificar el scripts/deploy.ts en tu proyecto:
También necesitarás ETH de testnet en tu billetera. Consulta los requisitos previos si aún no lo has hecho. De lo contrario, el intento de despliegue fallará.
Finalmente, ejecuta:
El contrato se desplegará en la red de prueba Base Goerli. Puedes ver el estado del despliegue y el contrato utilizando un explorador de bloques y buscando la dirección devuelta por tu script de despliegue. Si has desplegado una copia exacta del contrato NFT anterior, ya estará verificado y podrás leer y escribir en el contrato usando la interfaz web.
INFO
Si deseas desplegar en mainnet, modificarás el comando de la siguiente manera:
Independientemente de la red a la que estés desplegando, si estás desplegando un contrato nuevo o modificado, primero deberás verificarlo.
Verificando el Smart Contract
Si deseas interactuar con tu contrato en el explorador de bloques, tú o alguien más, necesita verificarlo primero. El contrato anterior ya ha sido verificado, por lo que deberías poder ver tu versión en un explorador de bloques ya. Por el resto de esta guía, te guiaremos sobre cómo verificar tu contrato en la testnet Base Goerli.
En hardhat.config.ts
, configura Base Goerli como una red personalizada. Agrega lo siguiente a tu HardhatUserConfig:
INFO
Al verificar un contrato con Basescan en testnet (Goerli), no se requiere una clave API. Puedes dejar el valor como PLACEHOLDER_STRING. En mainnet, puedes obtener tu clave API de Basescan desde aquí después de registrarte para obtener una cuenta.
Ahora, puedes verificar tu contrato. Toma la dirección desplegada y ejecuta:
Deberías ver una salida similar a:
INFO
No puedes volver a verificar un contrato idéntico a uno que ya ha sido verificado. Si intentas hacerlo, como verificar el contrato anterior, obtendrás un error similar a:
Busca tu contrato en Blockscout o Basescan para confirmar que se verificó.
Interactuando con el Smart Contract
Si verificaste en Basescan, puedes usar las pestañas Read Contract y Write Contract para interactuar con el contrato desplegado. Necesitarás conectar tu billetera primero, haciendo clic en el botón Conectar.
Last updated