¿Qué significa el término "gas"?

Una aplicación de Ethereum que quiero usar dice que necesita "gas" para funcionar. ¿Qué es el gas y dónde lo consigo?

Respuestas (9)

"Gas" es el nombre de una unidad especial utilizada en Ethereum. Mide cuánto "trabajo" se necesita para realizar una acción o conjunto de acciones: por ejemplo, para calcular un hash criptográfico Keccak256 se necesitarán 30 gas cada vez que se calcula un hash , más un costo de 6 gas más por cada 256 bits de datos que se procesan. Cada operación que se puede realizar mediante una transacción o contrato en la plataforma Ethereum cuesta una cierta cantidad de gas , y las operaciones que requieren más recursos computacionales cuestan más gas que las operaciones que requieren pocos recursos computacionales.

La razón por la que el gas es importante es que ayuda a garantizar que se pague una tarifa adecuada por las transacciones enviadas a la red. Al exigir que una transacción pague por cada operación que realiza (o hace que se realice un contrato), nos aseguramos de que la red no se atasque con la realización de una gran cantidad de trabajo intensivo que no es valioso para nadie. Esta es una estrategia diferente a la tarifa de transacción de Bitcoin, que se basa únicamente en el tamaño en kilobytes de una transacción. Dado que Ethereum permite que se ejecute un código de computadora arbitrariamente complejo , una longitud corta de código en realidad puede resultar en una gran cantidad de trabajo de cómputo. Por lo tanto, es importante medir el trabajo realizado directamente en lugar de simplemente elegir una tarifa en función de la duración de una transacción o contrato .

Entonces, si el gas es básicamente una tarifa de transacción, ¿cómo se paga? Aquí es donde se pone un poco complicado. Aunque el gas es una unidad en la que se pueden medir las cosas, no hay ninguna ficha real para el gas. Es decir, no puedes tener 1000 de gasolina. En cambio, el gas existe solo dentro de la máquina virtual Ethereum como un recuento de cuánto trabajo se está realizando. Cuando se trata de pagar el gas, la tarifa de transacción se cobra como una cierta cantidad de éter , el token incorporado en la red Ethereum y el token con el que se recompensa a los mineros por producir bloques.

Esto puede parecer extraño al principio. ¿Por qué las operaciones no tienen un costo medido directamente en ether? ¡La respuesta es que el éter, como los bitcoins, tiene un precio de mercado que puede cambiar rápidamente! Pero el costo de la computación no sube o baja solo porque cambia el precio del éter. Por lo tanto, es útil separar el precio de la computación del precio del token de ether , de modo que el costo de una operación no tenga que cambiar cada vez que se mueve el mercado.

La terminología aquí se vuelve un poco desordenada. Las operaciones en la EVM tienen costo de gas , pero el gas mismo también tiene un precio de gas medido en términos de éter. Cada transacción especifica el precio del gas que está dispuesto a pagar en éter por cada unidad de gas, lo que permite que el mercado decida la relación entre el precio del éter y el costo de las operaciones informáticas (medido en gas). Es la combinación de los dos, el gas total utilizado multiplicado por el precio del gas pagado, lo que da como resultado la tarifa total pagada por una transacción .

A pesar de lo complicado que es, es importante entender esta distinción, porque resulta en una de las cosas más confusas sobre las transacciones de Ethereum para el estudiante inicial: hay una diferencia entre que su transacción se quede sin combustible y que su transacción no tenga un nivel lo suficientemente alto. cuota _ Si el precio del gas que establecí en mi transacción es demasiado bajo, nadie se molestará en ejecutar mi transacción en primer lugar. Los mineros simplemente no lo incluirán en la cadena de bloques. Pero si proporciono un precio de gasolina aceptable , y luego mi transacción genera tanto trabajo computacional que los costos combinados de la gasolina superan la cantidad que adjunté como tarifa, esa gasolina cuenta como "gastada".y no lo recupero. El minero dejará de procesar la transacción, revertirá cualquier cambio que haya realizado, pero aún así la incluirá en la cadena de bloques como una "transacción fallida", cobrando las tarifas correspondientes . Esto puede parecer duro, pero cuando te das cuenta de que el trabajo real para el minero estaba en realizar el cálculo, puedes ver que tampoco recuperarán esos recursos. Así que es justo que les pagues por el trabajo que hicieron , aunque tu transacción mal diseñada se quedó sin combustible.

Proporcionar una tarifa demasiado alta también es diferente a proporcionar demasiado éter. Si establece un precio de gasolina muy alto, terminará pagando mucho éter por solo unas pocas operaciones , al igual que establecer una tarifa de transacción súper alta en bitcoin. Definitivamente se le dará prioridad al frente de la fila, pero su dinero se ha ido. Sin embargo, si proporcionó un precio de gasolina normal y simplemente adjuntó más éter del necesario para pagar la gasolina que consumió su transacción, se le reembolsará el monto excedente . Los mineros solo te cobran por el trabajo que realmente hacen. Puede pensar en el precio de la gasolina como el salario por hora del minero, y el costo de la gasolina como su hoja de tiempo de trabajo realizado .

Hay muchas otras sutilezas en el gas, ¡pero eso debería darte lo básico! El gas es el mecanismo clave que hace que los cálculos complejos en Ethereum sean "seguros" para que funcione la red , porque cualquier programa que se salga de control solo durará mientras el dinero proporcionado por las personas que solicitaron que se ejecutara. Cuando el dinero se detiene, los mineros dejan de trabajar en él. Y los errores que cometa en su programa solo afectarán a las personas que pagan por usarlo ; el resto de la red no puede sufrir problemas de rendimiento debido a su error. ¡Simplemente obtendrán un gran día de pago cuando los problemas de rendimiento consuman todo su éter! Sin esta técnica crítica, la idea de una cadena de bloques de uso general habría sido completamente imposible.

tl; dr:

  • El gas es la forma en que se calculan las tarifas
  • Sin embargo, las tarifas aún se pagan en éter, que es diferente del gas.
  • El costo de la gasolina es la cantidad de trabajo que se dedica a algo, como la cantidad de horas de trabajo, mientras que el precio de la gasolina es como el salario por hora que paga por el trabajo a realizar. La combinación de los dos determina su tarifa de transacción total.
  • Si el precio de su gasolina es demasiado bajo, nadie procesará su transacción
  • Si el precio de la gasolina está bien, pero el costo de la gasolina de su transacción supera el presupuesto, la transacción falla pero aún ingresa en la cadena de bloques y no recupera el dinero por el trabajo que hicieron los trabajadores.
  • Esto asegura que nada se ejecute para siempre y que las personas tengan cuidado con el código que ejecutan. ¡Mantiene tanto a los mineros como a los usuarios a salvo del código incorrecto!
Tenga en cuenta que actualmente, los hashes estándar SHA-3 reales no son los que calcula Ethereum. El "sha3" de Ethereum es el Keccak-256 original que se presentó en el concurso NIST.
Gran punto que explica la diferencia entre 'gas' y 'éter' y por qué hay una distinción. No es obvio para mí al principio.
Gran explicación. ¿Dónde puedo consultar el costo del gas de una transacción?
Gran explicación, simplemente no mencionaste un concepto que se usa a menudo "límite de gas", probablemente no sea importante, pero me gustaría saber qué es.
¿Cómo sabe la máquina virtual ethereum cuánto trabajo computacional se realizó?
¿Cómo se convierte el gas en éter? ¿Cuál es la proporción?
"Si el precio de su gas es demasiado bajo, nadie procesará su transacción"... ¿Cómo deciden si el precio de un gas es bueno?
@RameshPareek Calculan el valor del gas en moneda local, estiman el costo de la electricidad utilizada para realizar el trabajo (y hay un límite superior gracias al límite de gas) y solo realizan el trabajo si obtienen ganancias.
Debe ser un proceso automatizado escrito dentro del código fuente de ethereum que decide si un precio es bueno o no. ¿Puedes resolverlo?

Corto:

El gas es la tarifa de ejecución de cada operación realizada en ethereum. Su precio se expresa en éter y lo deciden los mineros, que pueden negarse a procesar transacciones con un precio de gas inferior a cierto. Para obtener gasolina, simplemente necesita agregar ether a su cuenta.

Largo:

Ethereum implementa en la cadena de bloques un entorno de ejecución llamado Ethereum Virtual Machine (EVM). Cuando ejecuta una aplicación descentralizada (dApp), cada instrucción se ejecuta en cada nodo de la red. Esto tiene un costo: por cada operación que puede ejecutar un script hay un costo específico, expresado en cantidad de unidades de gas, que puedes ver en la especificación de EVM.

El precio de una unidad de gas lo deciden los mineros, actualmente está entre 5 y 21 GWei (un GWei es 10^9 Wei o 10^-9 Ether). Ethereum usa ether como su moneda/token interno. Su tenencia de cuentas se expresa en éter. Cuando implementa un contrato o ejecuta una transacción, el gas se tomará del saldo de su cuenta. Usted es libre de especificar un precio de gasolina o quedarse con el sugerido.

Cuando dices "El precio de una unidad de gas lo deciden los mineros", ¿a qué te refieres? ¿Llegan a un consenso en algún lugar a través de algún procedimiento o cómo "deciden" exactamente?
Cada nodo minero debe seleccionar un precio de gas que maximice sus ganancias.
A partir de un PoV teórico, cada nodo minero debe seleccionar un precio de gas que maximice sus ganancias. Dado que un bloque que consume más gas se propaga más lentamente en la red, existe una mayor probabilidad de que se convierta en un tío, obteniendo solo la recompensa reducida. El precio mínimo del gas aceptado debe ser lo suficientemente alto como para compensar este mayor riesgo. Lo que se ha observado en la red real hasta ahora es que los grupos mineros aceptan transacciones con precios de gas más bajos que lo que sería económicamente racional para ayudar a reducir la congestión de la red y aumentar el valor general de la red/token.
¿Entonces 1 gas = 0.000_000_001 éter? ¿Y 1 éter = 1 000 000 000 de gas?

La siguiente respuesta está tomada de Ethereum, Gas, Fuel & Fees

¿Qué es el gas?

El gas es la unidad de medición para el uso de Ethereum "World Computer" . Como analogía, la electricidad se mide en kilovatios hora. Usar más computación y almacenamiento en Ethereum significa que se usa más gas. Una razón fundamental para la medición es que proporciona un incentivo para que las personas (mineros) operen la computadora mundial. Estos mineros obtienen una tarifa por procesar transacciones, que está determinada por el esquema de medición: gas.

Cada operación en la EVM consume gas. Por ejemplo, una multiplicación (MUL) consume 5 gases y una suma (ADD) consume 3 gases. Aquí hay una hoja de cálculo de las operaciones de Ethereum y su consumo de gas . (También es posible considerarlos como costos de gas, pero probablemente haga que las explicaciones sean más difíciles de seguir con costos, tarifas y precios que vuelan).

La medición es diferente de las tarifas y el gas es diferente de Ether. Para ayudar a aclarar esto, considere que el gas es sinónimo de combustible. Una transacción debe proporcionar suficiente combustible, o startGas, para cubrir el uso completo de las instalaciones de computación y almacenamiento de EVM. Todo el gas restante se reembolsa al originador de la transacción: el usuario que inició la transacción. Una transacción que se queda sin gas se revierte, pero aún se incluye en un bloque y la tarifa asociada se paga al minero .

Con una descripción general desde la perspectiva del combustible, pasemos a una descripción general de las tarifas. Si bien cada operación en el EVM consume una cantidad de gas predefinida que es fija (por ejemplo, una operación MUL siempre consume 5 gas), un usuario puede especificar un precio de gas en cada transacción . El precio actual del gas es de 0,02µ éteres, o 0,00000002 ETH. La tarifa que un originador paga a un minero es la transacción (startGas - remainingGas) × gas price.

Aquí hay un resumen de las influencias del combustible de transacción y la tarifa de transacción:

ingrese la descripción de la imagen aquí

Al comienzo de una transacción, el éter requerido para startGas se reserva [1b] y el resto del gas se establece en startGas [1a]. [ 2 ] Con cada operación de la transacción, se consume gas y se baja el gas restante. [ 3 ] Si hay una excepción de Out of Gas, todas las operaciones se revierten y todo el Ether que se reservó inicialmente se entrega al minero [ 4 ]. [ 5 ] Si la transacción se completa con éxito, todo el Gas restante se reembolsa al originador y el resto se paga al minero.

ejemplo sencillo

En el siguiente escenario simulado, suponga que una TIENDA consume 45 de gasolina y una AGREGAR consume 10 de gasolina. El escenario implica almacenar el número 31 en el EVM, sumar 2 números y luego almacenar la suma. Supongamos que el originador especificó un startGas de 150 y un precio del gas de 0.02 µETH. A continuación, se muestra una ilustración de cómo la transacción es procesada por el EVM:

ingrese la descripción de la imagen aquí

El originador paga al minero una tarifa de (150 - 50) × 0,02 µETH = 2 µETH = 0,000002 ETH.

Combustible vs. Tarifa

Existe una diferencia entre que un originador proporcione suficiente combustible y proporcione suficientes tarifas. Estos son los efectos probables en una transacción:

ingrese la descripción de la imagen aquí

[ 1 ] Una transacción con muy poco combustible ni siquiera llegará a los mineros, independientemente de la tarifa proporcionada.

[ 2 ] Si se proporciona el combustible adecuado para una transacción, pero la tarifa es demasiado baja, aunque la transacción pueda llegar a los mineros, al examinar la transacción, los mineros no realizarán ningún cálculo.

[ 3 ] Una transacción de bajo consumo de combustible implica que utilizará pocos recursos informáticos o de almacenamiento del EVM, o que en el tiempo de ejecución alcanzará una excepción de falta de combustible y se revertirá.

[4, 5, 6] Las tarifas determinan el orden en que las transacciones se incluirán en la cadena de bloques.

[ 7 ] La razón por la que proporcionar mucho combustible puede llevar a que una transacción tarde más en minarse se analiza en la sección Retrasos potenciales con un alto nivel de gas de arranque.

En Bitcoin, la medición se realiza con bytes: el número de bytes en la transacción. En Ethereum, el cálculo también debe medirse porque una pequeña cantidad de código aún podría ser un programa que se ejecuta para siempre. El cálculo de la medición es una de las razones del gas. Pero tener gas no significa cobrar cuotas.

Por ejemplo, en una cadena privada cada cuenta podría tener X gas por día, o cada cuenta podría tener Y gas por transacción, o algún otro esquema. Por otro lado, tener tarifas no significa necesitar gas: las tarifas pueden basarse en diferentes mediciones, como bytes. La seguridad en una cadena de bloques pública requiere gas y tarifas, mientras que las alternativas son más aplicables a las cadenas privadas (por ejemplo, un esquema en el que cada cuenta tiene X gas por día puede ser atacado por Sybil en una cadena pública donde cualquiera puede crear una cuenta) .

Un último ejemplo de medición que no requiere tarifas es cuando se invoca un contrato con una llamada frente a una transacción . Como se explica en ¿Quién recibe la tarifa de la llamada de contrato? , una invocación con una "llamada" todavía usa la medición pero no tiene tarifas.

Supongamos que llamo a una función en un contrato con gas bajo. Alguien más lo sabe y trata de pasar en picado frente a mí; llama a la misma función con más gasolina unos segundos después de mí. ¿Se procesará primero su transacción? Esa parece ser una gran vulnerabilidad.
@gpanterov Supongo que quiso decir "bajo precio de gasolina" en lugar de "baja gasolina". Sí, su transacción puede procesarse primero si los mineros así lo deciden (y probablemente lo harán). Los mineros tienen control total sobre el orden de las transacciones. Esto no es una vulnerabilidad, es solo cómo funcionan las cosas en Ethereum (y en casi todos los demás sistemas distribuidos). Los desarrolladores de contratos siempre deben asumir que el minero malintencionado intentará obtener beneficios reordenando las transacciones de sus usuarios.
Esta respuesta parece haber sido copiada de media.consensys.net/ethereum-gas-fuel-and-fees-3333e17fe1dc , por un moderador aquí, sin crédito ni referencia.
Tengo una pregunta. En el caso de una moneda basada en Ethereum, llamémosla XOXO... emito 1M. La gente lo compra todo (porque es tan popular)... cuando se hace un pago en XOXO de la dirección 123 a la dirección 456... ¿cómo se paga la gasolina? En este punto, están tratando con XOXO, no con Ether.

Contenido útil adicional sobre gas en Ethreum de: http://ethdocs.org/en/latest/ether.html#gas-and-ether

Gas y éter

Se supone que el gas es el costo constante de los recursos/utilización de la red. Desea que el costo real de enviar una transacción sea siempre el mismo, por lo que realmente no puede esperar que se emita Gas, las monedas en general son volátiles.

Entonces, en su lugar, emitimos Ether cuyo valor se supone que varía, pero también implementamos un Precio de Gas en términos de Ether. Si el precio del éter sube, el precio del gas en términos de éter debería bajar para mantener el costo real del gas igual.

El gas tiene varios términos asociados: Precios del gas, Costo del gas, Límite del gas y Tarifas del gas. El principio detrás de Gas es tener un valor estable de cuánto cuesta una transacción o cómputo en la red Ethereum.

  • Gas Cost es un valor estático de cuánto cuesta un cálculo en términos de Gas, y la intención es que el valor real del Gas nunca cambie, por lo que este costo siempre debe permanecer estable a lo largo del tiempo.
  • El precio del gas es cuánto cuesta el gas en términos de otra moneda o token como Ether. Para estabilizar el valor de la gasolina, el precio de la gasolina es un valor flotante, de modo que si el costo de los tokens o la moneda fluctúa, el precio de la gasolina cambia para mantener el mismo valor real. El precio del gas se establece por el precio de equilibrio de cuánto están dispuestos a gastar los usuarios y cuánto están dispuestos a aceptar los nodos de procesamiento.
  • El límite de gas es la cantidad máxima de gas que se puede usar por bloque, se considera la carga computacional máxima, el volumen de transacciones o el tamaño de bloque de un bloque, y los mineros pueden cambiar este valor lentamente con el tiempo.
  • La tarifa de gas es efectivamente la cantidad de gas que se debe pagar para ejecutar una transacción o programa en particular (llamado contrato). Las tarifas de gas de un bloque se pueden usar para implicar la carga computacional, el volumen de transacciones o el tamaño de un bloque. Las tarifas de gas se pagan a los mineros (o contratistas en condiciones de servidumbre en PoS).

Otros enlaces útiles:

https://www.reddit.com/r/ethereum/comments/271qdz/puede_alguien_explicar_el_concepto_de_gas_en_ethereum/ https://www.reddit.com/r/ethereum/comments/3fnpr1/puede_alguien_posiblemente_explicar_el_concepto_de/ https://www.reddit.com/ r/ethereum/comments/49gol3/can_ether_be_used_as_a_currency_eli5_ether_gas/

El gas es básicamente el precio interno para ejecutar una transacción o un contrato.

El precio del gas por transacción o contrato se establece para tratar con la naturaleza completa de Turing de Ethereum y su EVM (código de máquina virtual de Ethereum)

Entonces, cuanto más compleja sea la transacción o la operación, más gas costará.

El gas es lo que paga para ejecutar el código en la cadena de bloques y transferir ether a otra dirección. Por cada instrucción en la máquina virtual Ethereum, paga una cierta cantidad de gasolina. Algunas instrucciones son caras y otras son baratas.

Si llama a una función y se queda sin gas mientras ejecuta esta llamada de función, todos los cambios realizados por la función se revertirán y perderá todo el gas que proporcionó.

La razón por la que se necesita gas para cada instrucción en lugar de simplemente una tarifa fija para ejecutar cualquier función es que, de lo contrario, podría escribir una función que tuviera un ciclo infinito, implementar este contrato y luego llamar a la función. Si hiciera esto, los mineros que intentaran incluir su llamada de función en el siguiente bloque quedarían atrapados en un bucle infinito.

Primero quiero hablar sobre EVM (Ethereum Virtual Machine), como sabemos que Ethereum Network es una colección de computadoras y cada computadora tiene el software EVM instalado en su sistema y también todos esos sistemas tienen una copia de la cadena de bloques donde todos los mineros están conectados a través de EVM. Cuando el desarrollador escribe un contrato inteligente, el código se compila con el código de la máquina y el código de la máquina se guarda en la cadena de bloques que ejecuta EVM. No voy a explicar qué sucede con este código en la cadena de bloques en esta pregunta.

Ahora, Eter vs Gas??

En todo el código, hay muchas instrucciones que hacen su trabajo de acuerdo con esa instrucción o código, por ejemplo, código escrito para almacenar valor en la memoria o para realizar una operación hash SHA. Cada operación tiene un costo. Para ejecutar su código o contrato inteligente, debe pagar todas sus operaciones, que se pagan en éter. El costo de operación es en gas el cual se traduce a éter y luego se paga en éter.

La razón de esto es desacoplar el precio de una operación con el precio de mercado de un éter y el valor de cada gas, que es un número constante en el éter, puede ser fácilmente ajustado por los mineros.

Dado que la red Ethereum es una cadena de bloques descentralizada sin una entidad o autoridad singular que supervise su funcionamiento, se implementa un mecanismo para evitar que la red se congestione o envíe spam con transacciones. Este mecanismo cobra a los remitentes de las transacciones una pequeña tarifa llamada tarifa de gas que luego se utiliza para recompensar a los mineros que validan las transacciones en la red.

Esta tarifa tiene la forma de Ether (ETH), que también se utiliza en la red Ethereum para facilitar las transferencias de valor, los pagos de minería y la ejecución de contratos inteligentes.

El funcionamiento de la tarifa de gasolina es similar al funcionamiento de la gasolina/combustible para nuestros vehículos. Para ir del punto A al punto B, el vehículo debe llenarse con una cantidad suficiente de gasolina.

De manera similar, para que una transacción en la red Ethereum sea exitosa, el remitente debe proporcionar una cantidad suficiente de gas para pagar las tarifas de gas.

Fuente

Consulte la otra respuesta para obtener más detalles, pero el gas no tiene una unidad.
@Ismael, tienes toda la razón y gracias por corregirme. Edité mi respuesta.
La implementación en la red principal (también conocida como escritura en la cadena de bloques de Ethereum) requiere gasolina real y, por lo tanto, dinero real. Una práctica recomendada al desarrollar aplicaciones web3 es implementar primero en una red de prueba, ya que puede probar su aplicación y es gratis. Para Ethereum, le gustaría usar la red de prueba de Goerli... lo que esto implica es que usa Ether de prueba esencialmente falso ("testETH") para probar su proyecto/contrato. Obtienes este Goerli testETH de los grifos de Goerli como goerlifaucet.com.
@a-gupta Gracias por agregar la explicación de testnet.

La implementación en la red principal (también conocida como escritura en la cadena de bloques de Ethereum) requiere gasolina real y, por lo tanto, dinero real. Una práctica recomendada al desarrollar aplicaciones web3 es implementar primero en una red de prueba, ya que puede probar su aplicación y es gratis. Para Ethereum, le gustaría usar la red de prueba de Goerli... lo que esto implica es que usa Ether de prueba esencialmente falso ("testETH") para probar su proyecto/contrato. Obtienes este Goerli testETH de los grifos de Goerli como goerlifaucet.com.

También puede estimar las tarifas de gas con herramientas como esta