¿Cómo estima Ethereum el gas para ejecutar un contrato?

Soy nuevo en Ethereum. Conozco bien el límite de gasolina y el precio de la gasolina. pero todavía confundido en

  1. al enviar una transacción para ejecutar un contrato implementado, ¿Ethereum sugiere una estimación de cuánto límite de gas se necesita para completar la transacción?

  2. si es así , ¿qué tan precisa es esa estimación? En otras palabras, ¿siempre se completará con éxito si solo se paga el gas de estimación?

  3. si no , ¿cómo puedo saber/predecir el gas necesario?

  4. Cuando los mineros obtienen una transacción para ejecutar un contrato, ¿pueden saber cuánto se necesitará para finalizar la ejecución (saber cuánto límite de gas (pasos computacionales) cuesta esta transacción) o simplemente saben cuánto es el precio del gas? ?.

  5. ¿Cómo verifican los validadores que los mineros ejecutaron un contrato correctamente? ¿Lo volverán a ejecutar o simplemente validarán el bloque sin ejecutar contratos?

Traté de resolver esto, pero todavía no puedo.

Gracias

Respuestas (1)

Geth estima el costo de gas de una transacción, pero teóricamente nadie , ni geth, ni los mineros, ni nadie más, puede saber el costo de gas de una transacción antes de que se ejecute al crear un bloque. Esto se debe a que algo más podría suceder en un bloque antes de que se ejecute la transacción (o incluso en el mismo bloque), cambiando así el resultado que obtuvo geth cuando realizó la estimación. Incluso es posible que geth haya hecho la estimación en un bloque que ni siquiera llegó a la cadena de bloques canónica.

Lo que trae el segundo punto. geth obtiene su estimación simulando la transacción en sí, según el último bloque. Esencialmente, no hay otra forma de hacerlo. Esto se llama el problema de la detención, si quieres buscarlo, y es por eso que existe el gas en primer lugar.

Sin embargo, en la mayoría de las situaciones, el envío del presupuesto es suficiente. Incluso es posible, en (en mi humilde opinión) la mayoría de las situaciones, determinar cuánto gas podría consumir una transacción y luego usarlo.

Gracias Mateo por la útil respuesta. Tengo otra pregunta que acabo de plantear. Sé que cada operación en la EVM consume una cantidad específica de gas. ¿Cómo Ethereum predefinió el costo de cada operación (por ejemplo, ADD cuesta 3 gas)? ¿Se basa en el tiempo que lleva procesar la transacción? o es solo una suposicion?
Es posible que desee hacer eso como una pregunta separada, ya que los comentarios no están realmente diseñados para responder eso.