No puedo hacer que mi contrato se implemente correctamente con Infura, MetaMask y Truffle.
Cuando ejecuto truffle migrate --network live
me sale este error:
Error encountered, bailing. Network state unknown. Review successful transactions manually. insufficient funds for gas * price + value
Pero luego, si ejecuto truffle migrate --network live --dry-run
obtengo este resultado:
sender doesn't have enough funds to send tx. The upfront cost is: 672197500000000000 and the sender's account only has: 60000000000000000
Suponiendo que el valor está en wei, ¿por qué costaría tanto implementar un contrato? ¿Qué puedo hacer sobre esto?
Aquí está mi truffle.js
archivo:
var HDWalletProvider = require("truffle-hdwallet-provider");
var mnemonic = "my_mnemonic";
module.exports = {
networks: {
live: {
network_id: 1,
provider: new HDWalletProvider(mnemonic, "https://mainnet.infura.io/my_api_key")
}
}
};
Puede usar remix.ethereum.org para probar su contrato y calcular el uso de gas. Para mí, usa aproximadamente 2M de gas cuando se implementa.
No especificó el límite de gas en su configuración, usará el valor predeterminado (era alrededor de 6,7 millones de gas). Puedes intentar bajarlo en tu truffle.js.
var HDWalletProvider = require("truffle-hdwallet-provider");
var mnemonic = "my_mnemonic";
module.exports = {
networks: {
live: {
network_id: 1,
provider: new HDWalletProvider(mnemonic, "https://mainnet.infura.io/my_api_key"),
gas: "4000000", // 4M
gasPrice: "20000000000" // 20gwei
}
}
};
truffle.js
. Además, incluso con esos parámetros, el costo debería ser mucho menor (total <.03 eth @20 Gwei).
adam kipnis
oxidado
Andrei
msg.value
en una función, no debe hacer esa funciónpayable
. Esa palabra clave significa que puede enviar ETH al contrato con la transacción, pero sureturnEth
, yfee
no lo haga, soloadopt
espera que se le envíe ETHoxidado
payable
dereturnEth
yfee
? ¿Cuáles son las implicaciones de dejar lapayable
palabra clave en esas funciones?Andrei
oxidado
adam kipnis
oxidado
adam kipnis