So berechnen Sie Gas für die Vertragsbereitstellung @_@

Siehe Folgendes:

rinkeby: {
  host: "localhost",
  port: 8545,
  from: "my address",
  network_id: 4,
  gas: 4800000,
  gaslimit: 2100000000000
}

Als ich das Gas auf 4700000 einstellte, erhielt ich beim Bereitstellen meines Vertrags die folgende Fehlermeldung.

Error: insufficient funds for gas * price + value

Als ich das Gas auf 4800000 einstellte, erhielt ich stattdessen die folgende Fehlermeldung:

Error: exceeds block gas limit

Vertrauen Sie mir, jeder Wert dazwischen führt zu einem der oben genannten Fehler.

Darf ich wissen, was ich tun kann? Bedeutet das, dass mein Vertrag für Rinkeby zu kompliziert ist?

------ Zusätzliche Bemerkungen: ------

So starte ich meinen Rinkeby-Knoten.

geth --datadir rinkeby console --rinkeby --rpc --rpcapi db,eth,net,web3,personal --rpcaddr "0.0.0.0" --rpccorsdomain "*"

Darf ich wissen, ob es Fehler gibt, denn nach dem Start verwende ich den folgenden Befehl, um das Konto zu überprüfen (mit viel ETH in Metamask). Es gibt immer 0 zurück.

 eth.getBalance("<public key>");

Antworten (2)

Stellen Sie es zuerst auf http://remix.ethereum.org mit Javascript VM bereit. Dann können Sie den tatsächlichen Gasverbrauch für den Einsatz nachschlagen.

Geben Sie hier die Bildbeschreibung ein

Ich denke, Sie sollten versuchen, Ihren Vertrag mit Remix + Metamask bereitzustellen. Sehen Sie, wenn funktioniert. Wenn es funktioniert, liegt das Problem bei Ihrem Setup. Es scheint, dass Sie Truffle und Geth/Parity verwenden, um Ihren Vertrag bereitzustellen, richtig? Stellen Sie sicher, dass Ihr Konto entsperrt ist (Sie müssen für das Benzin bezahlen).

Und dieses Tool ist sehr hilfreich, wenn Sie sehen möchten, wie viel Gas Ihr Vertrag ausgibt: https://github.com/cgewecke/eth-gas-reporter

Ich glaube, ich habe etwas Seltsames bemerkt. Starte ich meinen Knoten richtig? geth --datadir rinkeby console --rinkeby --rpc --rpcapi db,eth,net,web3,personal --rpcaddr "0.0.0.0" --rpccorsdomain "*" Danach verwende ich: eth.getBalance("<address >"). Dies ist ein Rinkeby-Konto mit viel Ether, aber das zurückgegebene Ergebnis ist 0.
Und wenn Sie Persönliches preisgeben, für das Mainnet, werden Sie geröstet (Sicherheit)
Haben Sie das Konto in Ihr lokales Verzeichnis importiert?
Ja, ich habe mein Konto importiert und entsperrt. Sie meinen also, ich sollte das Persönlichkeitsrecht entfernen?
Ich habe einen ganzen Tag lang synchronisiert, aber eth.syncing zeigt immer noch, dass ich ein paar Hunderterblöcke hinter dem aktuellen bin, und getbalance zeigt immer noch, dass mein Konto 0 hat, aber Metamask zeigt, dass einige Hunderte darin sind.