Una aplicación de Ethereum que quiero usar dice que necesita "gas" para funcionar. ¿Qué es el gas y dónde lo consigo?
"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:
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.
La siguiente respuesta está tomada de Ethereum, Gas, Fuel & Fees
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:
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.
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:
El originador paga al minero una tarifa de (150 - 50) × 0,02 µETH = 2 µETH = 0,000002 ETH.
Existe una diferencia entre que un originador proporcione suficiente combustible y proporcione suficientes tarifas. Estos son los efectos probables en una transacción:
[ 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.
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.
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.
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
Badr Bellaj