¿Cómo se eligieron los costos de gasolina para las instrucciones de la máquina virtual Ethereum?

Las diferentes instrucciones de la EVM tienen diferentes costos de gas asociados; puede consultar la lista de precios de gas en el apéndice G del papel amarillo .

Si bien las magnitudes aproximadas de esos números parecen bastante razonables, los valores exactos todavía parecen haber sido elegidos de manera un tanto arbitraria. Por otro lado, algunos valores parecen extrañamente específicos. ¿Hay alguna razón más profunda para elegir esos valores exactos?

Esta pregunta aún necesita una respuesta, porque la respuesta de la hoja de cálculo actual no menciona nada sobre la metodología: ¿hay alguna razón más profunda para elegir esos valores exactos?

Respuestas (3)

Comparto con ustedes la hoja de cálculo que explica la fórmula detrás del costo del gas de cada OPCODE.

La versión 1.0 fue creada por Core Devs of Ethereum. Espero cómo articular futuras actualizaciones de la misma. Es un reto de meta-consenso a resolver.

Pregunta relacionada: ¿el costo del gas es el mismo en Testnet o es diferente?
@BrianArmstrong Sí, los mismos costos de gas y EVM están en las redes de prueba de Ethereum.

El costo total de una transacción que crea un contrato o ejecuta un contrato se basa en 2 factores:

gasUsedes el gas total que se consume

gasPriceespecificado en la transacción

Total cost = gasUsed * gasPrice

gasUsado

A cada operación en el EVM se le asignó un número de cuánto gas consume. gasUsedes sumar todo el gas para todas las operaciones ejecutadas. Hay una hoja de cálculo que ofrece un vistazo a algunos de los análisis detrás de ellos.

Para la estimación gasUsed, existe una API de estimación de gas que se puede utilizar, pero tiene algunas advertencias .

precio del gas

Un usuario construye y firma una transacción, y cada usuario puede especificar lo gasPriceque desee, esto incluye cero. Sin embargo, los clientes de Ethereum lanzados en Frontier tenían un precio de gas predeterminado de 0,05e12 wei. A medida que los mineros optimizan sus ingresos, si la mayoría de las transacciones se envían con un precio de gas de 0,05e12 wei, sería difícil convencer a un minero para que acepte una transacción que especifique un precio de gas más bajo o cero. En esta pregunta se pregunta cómo se eligió el valor predeterminado .

Ejemplo

Tomemos un contrato que solo suma 2 números. De la hoja de cálculo anterior ADDconsume 3 gas.

El costo aproximado, utilizando el precio del gas por defecto, sería:

3 * 0.05e12 = 1.5e11 peso

Dado que 1 Ether es 1e18 wei, el costo total sería 0.00000015 Ether.

Esta es una simplificación ya que ignora algunos costos, como el costo de pasar los 2 números al contrato, antes de que puedan agregarse.

En caso de que esta respuesta no tenga tanto sentido, es porque originalmente era una respuesta a ethereum.stackexchange.com/q/799/42 antes de que se fusionara/movera aquí.

Cada instrucción en Ethereum Virtual Machine tiene un costo, medido en unidades de gas. La tabla de dichos costos para cada instrucción se llama "Programa de tarifas" y es un apéndice en el documento Ethereum Yellow (aunque podría cambiar en el futuro). La única forma de determinar (en general) cuánto costaría una determinada llamada a un contrato es ejecutarla (no necesariamente en la cadena de bloques, sino en un "simulador local"). Sin embargo, si el código del contrato interactúa con el estado de la cadena de bloques (por ejemplo, usando instrucciones BLOCKHASH, TIMESTAMP, BALANCE), la ejecución no se puede simular con precisión. Por tanto, en algunos casos, el coste real de ejecución sólo se conocerá cuando la transacción esté incluida en el bloque. Es por eso que puede intentar estimar el límite superior de la cantidad de gas que se requerirá y enviar suficiente éter con la transacción.

En caso de que esta respuesta no tenga mucho sentido, es porque originalmente era una respuesta a ethereum.stackexchange.com/questions/799/… antes de que se fusionara/movera aquí.