WEB3DEV Español

Cover image for Cómo Estimar Gas y el Costo (en USD) para desplegar Contratos y Funciones en Solidity
Hector
Hector

Posted on

Cómo Estimar Gas y el Costo (en USD) para desplegar Contratos y Funciones en Solidity

TL;DR

En este tutorial, exploraremos cómo aprovechar el paquete de reportes de gas de hardhat para calcular acertadamente el costo de gas para desplegar un contrato inteligente o para llamar funciones específicas como: Mint o Transfer con facilidad. Además, aprenderemos cómo convertir estos costos de gas en monedas fiduciarias como USD o INR, permitiéndote calcular las implicaciones financieras exactas de tus operaciones.

Este conocimiento es particularmente valioso si estás preparándote para lanzar tu proyecto en la mainnet o requiere proyecciones detalladas del presupuesto que incluya las estrategias de optimización para la eficiencia de la ejecución. Siguiendo estos pasos mostrados en este tutorial, puedes valorar con confianza el performance y el costo de tu contrato inteligente, asegurando el lanzamiento exitoso de tu proyecto.

Image description

Empecemos

Como un desarrollador de Solidity, es crucial no sólo enfocarte en auditar tu contrato inteligente, sino también en optimizarlo para el uso de gas. Un contrato inteligente que fue pobremente optimizado puede resultar en costos inesperados para los usuarios cuando invoca funciones, lo cual puede llevar a la frustración y la decepción.

Para evitar esto, es importante tener un buen entendimiento de los costos de gas envueltos en el despliegue de un contrato y llamar sus funciones. Adicionalmente, cuando te preparas para lanzar tu contrato para la producción, debes considerar el presupuesto de gas disponible.

La eficiencia de las habilidades de un desarrollador son, usualmente, medidas por su habilidad de escribir contratos que usen la menor cantidad de gas posible. Minimizando el uso de gas, puedes incrementar la velocidad del contrato y reducir el costo general del uso, lo cual llevará a tener una mejor experiencia para los usuarios.

Prerrequisitos

  1. Estar familiarizado con los Contratos Inteligentes de Solidity
  2. Saber manejar el Framework de Hardhat
  3. Entendimiento básico en escribir Casos de Prueba Chai Mocha

En este hilo te compartiré sobre un paquete npm llamado “reporte de gas de hardhat”. De acuerdo a la fuente,
Un reporte Mocha para conjuntos de pruebas de Ethereum:

  • Uso de gas por unidad de prueba.
  • Métricas para métodos de llamadas y despliegues.
  • Costos de la divisa nacional del despliegue y uso del sistema de tu contrato.

Así que, necesitarás configurar tu framework Hardhat para este hilo. Consideraremos el contrato Lock.sol y su caso de prueba ya está escrito por defecto.

El contrato inteligente Lock.sol se verá así:

Image description

Ahora, vamos a entender el proceso paso a paso para calcular el gas requerido para desplegar tu contrato y para llamar otras funciones.

  1. Necesitas instalar el paquete:

npm install hardhat-gas-reporter --save-dev

  1. Àhora necesitas crear las claves API desde la página web CainMarketCap. Puedes visitar este enlace para crear la API. Una vez que estés conectado, copia la API.

  2. Para mejorar la seguridad de tu código, es recomendable crear un archivo .env separado y almacenar tu clave ConMarketApi ahí. De esta forma, puedes referenciar tu clave en tu archivo hardhat.config.js usando la variable process.env.COINMARKETCAP_API_KEY. Alternativamente, puedes pegar directamente tu clave API en el campo coinmarketcap.

  3. En el archivo hardhat.config.js, ve a la sección module.exports y añade la sección gasReporter como se muestra en la imagen de abajo:

Image description

NOTA:

Si no especificas el campo del token, el reporte será generado en ETH por defecto. Sin embargo, tienes la opción de generar reportes de otros tokens, especificando el nombre del campo del token como MATIC, BNB, etc. Esto te permite cambiar fácilmente entre diferentes tokens y ver sus respectivos reportes.

Image description

  1. Para poder generar un reporte, necesitarás escribir un caso de prueba que ejecutará las funciones y el despliegue de tu contrato inteligente. Por esto, te recomiendo usar Chai Mocha en JavaScript, el cual es un framework altamente usado para pruebas. Ejecutando los casos de uso de prueba, el reporte será generado automáticamente en un formato de archivo .txt para que pueda ser visto y analizado fácilmente.

Image description

Para calcular acertadamente la cantidad de precio y gas apropiado para tu contrato inteligente, es crucial incluir un rango diverso de casos de uso que cubran todas las funciones importantes.

Image description

archivo texto generado

Image description

Reporte de gas ETH por Lock.sol

Image description

Reporte de gas matic por Lock.sol

Como pudiste ver, para desplegar el Lock.sol en la red Ethereum, necesitas pagar 15.98USD mientras que en la red de Matic es sólo 0.01USD. Similarmente, la función “withdraw” costará 1.67 en Ethereum y un costo cercano a 0 en la red de Matic.

Así que, tómate tu tiempo para planificar y optimizar cuidadosamente tu contrato inteligente para asegurar que sea eficiente en ambos: el gas y el costo. Esto no sólo beneficiará a tus usuarios, sino también mejorará tu reputación como un desarrollador de Solidity con conocimientos y habilidoso.

Image description

Sígueme y te seguiré de vuelta ;)

Twitter: 0x_Abhijeet

LinkedIn

Discord: #Abhijeet9181

Gracias :)

Este artículo es una traducción de Abhijeet Sinha, hecha por Héctor Botero. Puedes encontrar el artículo original aquí.
Sería genial escucharte en nuestro Discord, puedes contarnos tus ideas, comentarios, sugerencias y dejarnos saber lo que necesitas.
Si prefieres puedes escribirnos a @web3dev_es en Twitter.

Discussion (0)