¿Hay una buena explicación para el gas?

Me gustaría implementar un contrato usando trufa.

Mi cuenta tiene 0.02 ether (20000000000000000 wei). Configuré gas: 4612390truffle.js y no configuré nada para gasPrice. eth.gasPricedevuelve 1000000000 wei. Si multiplico el gasPricecon gasobtengo 4,612,390,000,000,000 que es menor que mis 20,000,000,000,000,000. Pero tengo el error insufficient funds for gas * price + value. Si pongo el precio de la gasolina en un nivel bajo, obtengo intrinsic gas too low.

¿Hay alguna manera de saber cuánto gas necesito para implementar mi contrato? ¿ Cuál es la diferencia entre gasy gasPrice?

Respuestas (2)

Puedo responder a su pregunta sobre la diferencia entre el gas y el precio del gas.

El costo de transacción es igual al gas multiplicado por el precio del gas. El gas no tiene ninguna unidad, mientras que la unidad de precio del gas es wei. El gas utilizado por una misma transacción siempre será el mismo (es un valor constante) y depende de la complejidad de la transacción. El precio del gas, por otro lado, puede variar. Es así porque los mineros tienen que pagar su electricidad en moneda tradicional. Imagine que el precio del ethereum cae mientras que al mismo tiempo sube el precio de la electricidad. Si el precio del gas se mantiene igual, los mineros pagarán más por la electricidad de lo que reciben como recompensa en ethereum. Por lo tanto, el precio del gas debe aumentarse.

Puede leer sobre esto con más detalle aquí: https://hackernoon.com/ether-purchase-power-df40a38c5a2f

Gracias. ¿Eso significa que podría intentar implementar mi contrato en testnet para averiguar cuánto gas se necesita?
Sí, puede, por ejemplo, ir a remix.ethereum.org y pegar su código en lugar del que verá por defecto. Luego, en el lado derecho, elija la pestaña "Ejecutar" y seleccione JavaScript VM para el entorno. Luego haga clic en el botón rosa "Crear". Su contrato se implementará. Luego, en la sección central, en la parte inferior, haga clic en el icono con dos flechas hacia arriba. Verá la consola y si la implementación salió bien, debería ver dos botones "Detalles" y "Depurar". Haga clic en "Detalles". Allí encontrará información sobre su transacción.
Allí encontrará información sobre su transacción y también el costo de la transacción, que es el valor que está buscando. Ah, una cosa más. Desafortunadamente, por lo que puedo ver, en remix IDE "gas" significa "gasolina * precio de la gasolina", por lo que puede ser un poco confuso si solo lee mi respuesta anterior.

En primer lugar, intentemos aclarar qué es gas y gasPrice.

Si desea ejecutar algo en la máquina virtual Ethereum (EVM), como una transacción, se necesita gas para el cálculo. Más precisamente, cada operación tiene una cantidad bien definida de gas que utiliza. Por lo tanto, para una transacción, el gas que se necesita es igual a la suma sobre el gas que se necesita para cada operación de EVM. Puede especificar un límite superior sobre la cantidad máxima de gas que debe requerir una transacción. Si está interesado en obtener más información, puede consultar yellowpaper.io , donde se analiza todo esto con más detalle. Tenga en cuenta que crear (o implementar) un contrato inteligente también cuesta gasolina, porque está invocando al constructor y está almacenando todo el código en Blockchain.

Uno podría preguntarse, ¿por qué existe tal cosa como el gas en primer lugar? Bueno, si su contrato, por ejemplo, contuviera

function infiniteLoop() public { 
    while (true) { 
        // do some stuff 
    } 
}

una llamada de transacción infiniteLoop()nunca terminaría y los mineros se ejecutarían infinitamente. La idea del gas es evitar precisamente eso: si solo hay una cantidad limitada de gas que se puede usar, la ejecución debe detenerse en algún momento. Puede usar el compilador de Solidity solc para obtener una estimación de la cantidad de gas que usará una función. Lo mismo se puede hacer en línea usando remix.ethereum.org (Compile el contrato y haga clic en el constructor para obtener una estimación de los costos de gas de implementación).

Ahora al precio del gas. Imagínate, la gasolina no costaría nada. Entonces, en teoría, podría escribir un contrato haciendo un trabajo inútil pero intenso y establecer un límite de gasolina irrazonable. Además, ¿por qué los mineros estarían dispuestos a ejecutar la transacción en su nombre? El gasPrice, que indica lo que estás dispuesto a pagar por cantidad de gas, incentiva a los mineros de la red a ejecutar tu transacción y agregarla a un bloque.

Como no he visto su contrato, solo puedo adivinar qué salió mal. Puede ser que haya especificado un límite de gas que no era lo suficientemente alto.