Me gustaría implementar un contrato usando trufa.
Mi cuenta tiene 0.02 ether (20000000000000000 wei). Configuré gas: 4612390
truffle.js y no configuré nada para gasPrice
. eth.gasPrice
devuelve 1000000000 wei. Si multiplico el gasPrice
con gas
obtengo 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 gas
y gasPrice
?
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
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.
marcs82
Mike A. Liquidación
Mike A. Liquidación