Ich kann meinen Vertrag nicht mit Infura, MetaMask und Truffle erfolgreich bereitstellen.
Beim Ausführen truffle migrate --network live
erhalte ich diesen Fehler:
Error encountered, bailing. Network state unknown. Review successful transactions manually. insufficient funds for gas * price + value
Aber dann, wenn ich laufe truffle migrate --network live --dry-run
, bekomme ich diese Ausgabe:
sender doesn't have enough funds to send tx. The upfront cost is: 672197500000000000 and the sender's account only has: 60000000000000000
Unter der Annahme, dass der Wert in Wei angegeben ist, warum würde es dann so viel kosten, einen Vertrag bereitzustellen? Was kann ich dagegen tun?
Hier ist meine truffle.js
Datei:
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")
}
}
};
Sie können remix.ethereum.org verwenden, um Ihren Vertrag zu testen und den Gasverbrauch zu berechnen. Für mich verbraucht es ungefähr 2M Gas beim Einsatz.
Sie haben das Gaslimit in Ihrer Konfiguration nicht angegeben, es wird standardmäßig verwendet (es waren etwa 6,7 Millionen Gas). Sie können versuchen, es in Ihrer truffle.js zu verringern.
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
. Außerdem sollten die Kosten selbst mit diesen Parametern viel geringer sein (insgesamt < 0,03 eth @ 20 Gwei).
Adam Kipnis
Rustyshackleford
Andrej
msg.value
in einer Funktion verwenden, sollten Sie diese Funktion nicht erstellenpayable
. Dieses Schlüsselwort bedeutet, dass Sie ETH mit der Transaktion an den Vertrag senden können, aber IhrreturnEth
, undfee
tun Sie das nicht -adopt
erwartet nur, dass ETH dorthin gesendet wirdRustyshackleford
payable
ausreturnEth
und entfernenfee
? Welche Auswirkungen hat es, daspayable
Schlüsselwort in diesen Funktionen zu belassen?Andrej
Rustyshackleford
Adam Kipnis
Rustyshackleford
Adam Kipnis