martes, 29 de junio de 2021

El Gas de Ethereum

Este artículo es una versión traducida del original “A Guide to Gas”. Revisaremos la teoría y terminaremos con un ejemplo practico de como calcular el costo de una transacción en USD.

Entre el 1 y el 3 de enero de 2018, el costo promedio de ejecutar una transacción en el blockchain de Ethereum creció 187%. Esto se debe al aumento en el costo del “gas”, la unidad de medida utilizada para representar el costo de correr operaciones en Ethereum.

El gas puede compararse con las comisiones de transacción que cobran las empresas de tarjetas de crédito. Pero los consumidores nunca interactúan directamente con estos costos de transacción. Estos están ocultos dentro del precio del bien o servicio.

En un blockchain no hay una entidad central que cobre comisiones, determine penalidades o que pueda bloquear transacciones de manera arbitraria, dejando a personas aisladas de la economía. Sin embargo, esperar que cada usuario de Ethereum tenga que comprender el funcionamiento técnico del gas no es una experiencia de uso escalable.

En el largo plazo, el ecosistema encontrará formas de simplificar el uso del gas para mejorar la experiencia del usuario y reducir el riesgo de transacciones anuladas. Mientras tanto, sin embargo, es importante comprender la utilidad del gas y la razón de su existencia.

La Máquina Virtual de Ethereum y el Gas

La Máquina Virtual de Ethereum (MVE) es el ambiente en el cual se ejecutan los smart contracts en el blockchain. Cada nodo de la red participa del blockchain de Ethereum. Entre todos, forman la MVE.

Una transacción dentro de Ethereum se compone de una serie de operaciones secuenciales que ocurren dentro de la MVE. Cada operación requiere de cierta cantidad de energía de cómputo para ejecutarse. Como los mineros deben utilizar energía para completar esas operaciones, se creó una unidad de medida para monitorear este esfuerzo y compensarlos. Esta unidad se llama gas.

El gas es la unidad que mide el trabajo computacional requerido para correr transacciones o smart contracts en la MVE. Mientras más energía se necesite para correr una operación (por ejemplo, porque su código es más complejo) más gas se requiere.

En sí mismo, el gas no tiene existencia. No existe algo como un “token de gas”. El valor de cada unidad de gas se expresa en ETH. Por ejemplo, una operación podría costar 3 gas, lo que sería equivalente a 0.00004 ETH.

Ahora bien: si el gas se mide en ETH, ¿por qué no deshacerse de él y expresar el costo de cada operación directamente en ETH?

El precio del ETH es altamente volátil (entre el 1 y 3 de enero subió 25%). Pero la energía computacional requerida para realizar una transacción es constante. El costo de gas para realizar una “operación de suma” en Ethereum era el mismo el 1 o 3 de enero, sin importar el valor del ETH.

El concepto de gas existe para distinguir entre el costo computacional de correr una operación y el precio de mercado del ether.

El costo de gas (la energía requerida de una operación) se mantiene constante más allá de la volatilidad en el precio. Sin embargo, el precio de cada unidad de gas en ether cambia continuamente. Si el precio del ether sube significativamente, la red puede reducir cuánto ether representa cada unidad de gas para mantener constante el costo para el usuario que paga por el gas.

Los Componentes del Gas

El gas tiene tres componentes fundamentales: costo del gas, precio del gas y límite de gas.

El costo de gas son las unidades de gas necesarias para correr cada operación. Este costo está definido en los documentos técnicos de Ethereum. Por ejemplo, el costo de correr una “operación de suma” es de 3 gas, y seguirá siendo 3 gas sin importar cuál sea el valor en dólares del ether. La red no puede cambiar fácilmente la cantidad de gas necesaria para correr una operación. Pero el precio del gas expresado en ether sí puede ajustarse fácilmente para responder a la volatilidad en el precio del ether o al tráfico de la red.

El precio del gas es el valor de una unidad de gas expresado en ether. El precio del gas se mide en Gwei. El Wei es la menor unidad de ether. Un Gwei es 1000 millones de Wei. En sitios como ethgasstation.info podemos ver el precio de gas promedio de la red. Los usuarios dispuestos a pagar un mayor precio de gas por su transacción serán priorizados por los mineros y la transacción se procesará más rápidamente. Los mineros son quienes se quedan con el gas (o, más exactamente, con el ether que representa ese gas) que el usuario utiliza al enviar su transacción. Por lo tanto, los mineros priorizan las transacciones que tienen mayor precio de gas sobre las transacciones que tienen menor precio de gas.

El límite de gas es la máxima cantidad de gas que uno está dispuesto a pagar en una transacción específica. El límite de gas típicamente es mayor que la cantidad real de gas que requiere la transacción. Si un usuario específica un límite de gas demasiado bajo (las operaciones dentro de la transacción requieren más gas que el que el usuario asigna a la transacción), entonces un minero completará la transacción hasta que el gas se acabe. Cuando esto ocurra, la operación fallará y el minero conservará las comisiones (ya que gastó tiempo y energía en ejecutar tantas operaciones como pudo). El blockchain guardará un registro de la operación como “fallida”.

Por Qué Existe el Gas

El gas existe dentro del blockchain de Ethereum por tres motivos: financiero, teórico y computacional.

El motivo financiero es para incentivar a los mineros a invertir tiempo y energía en ejecutar transacciones. Operaciones más complejas requieren más poder de cómputo y, por lo tanto, más gas. Si un usuario desea que su transacción tenga prioridad, debe ofrecer un mayor precio de gas, para convencer a los mineros de procesarla antes.

El motivo teórico indica que el gas sirve para alinear los incentivos de los participantes de la red. Gran parte de la teoría del blockchain se ocupa de cómo combatir a los agentes maliciosos en un ambiente donde no existe una autoridad central en la que confiar. El gas resuelve parcialmente este problema alineando los incentivos económicos entre usuarios. Los mineros tienen un incentivo para trabajar en la red. Los usuarios tienen un desincentivo a escribir código pobre o malicioso porque están poniendo su ether (bajo la forma de gas) en juego.

El motivo computacional detrás del gas responde a un viejo problema de la teoría de computación: el halting problem. El halting problem trata de determinar si un programa arbitrario parará de correr en algún momento o correrá por siempre, con sólo observar su descripción y los valores de input. En 1936, Alan Turing determinó que es imposible para una máquina resolver el halting problem. En la MVE, esto significa que un minero nunca puede iniciar el procesamiento de una transacción teniendo una certeza total de que la transacción se detendrá en algún momento. Gracias al límite de gas, cada transacción está asociada con una cantidad finita de gas. Incluso si un minero empieza a procesar una transacción que fue programada para seguir indefinidamente (debido a un bug o un ataque a la red), el gas eventualmente se acabará, la transacción terminará y el minero será compensado.

Mirando el futuro

Para los usuarios que recién empiezan a interactuar con el blockchain de Ethereum, el gas suele ser un concepto difícil de entender. Si ponemos un precio de gas demasiado bajo, nuestra transacción no será procesada. Si lo ponemos demasiado alto, estaremos pagando por demás. Si ponemos un límite demasiado bajo, nuestra transacción fallará antes de finalizar (pero igualmente tendremos que pagar por ella).

Colocar el peso de este conocimiento en el usuario no es un modelo escalable. En el futuro, el ecosistema encontrará formas más amigables en las que los usuarios no tendrán que interactuar con el gas, del mismo modo en que los consumidores actualmente no interactúan directamente con las comisiones de transacción. Un mejor manejo del gas será importante para que el blockchain se acerque un paso más a la adopción masiva.

¿Cual es el costo de enviar Ethers?

La cantidad de gas que se necesita para realizar una transacción en Ethereum depende la cantidad de las instrucciones de la transacción, enviar Ethers es una transacción relativamente simple. En promedio se requieren 21000 unidades de gas, supongamos que en este momento cada unidad de gas valen 29 Gwei, necesitarías 609000 Gwei. 1 Gwei equivale a 0.000000001 Ethers, por lo tanto Ethers = 609000 Gwei  * 0.000000001 = 0.000609 Ethers. En estos momentos cada Ether vale 2198 USD, entonces 0.000609 * 2198 = 1,33 USD.

El costo de enviar Ethers en estos momentos nos saldría 1,33 USD. Claro, suponiendo que tienes tu propia Billetera.
Metamask es una billetera que me parece que no te cobra comisión adicional, de hecho en Metamask tu puedes ver el costo estimado de la transacción.

Oh casi lo olvido, para saber el precio del Gas puedes visitar la pagina https://ethgasstation.info/

Referencias
https://media.consensys.net/a-guide-to-gas-12b40d03605d
https://defiprime.com/gas

No hay comentarios:

Publicar un comentario