Wie berechnet man den zu überweisenden Betrag, um ein Konto vollständig zu leeren?

Nehmen wir also an, meine Brieftasche ist 1 eth, ich muss sie vollständig leeren und ich werde es auf diese Weise tun

Var value = web3.toWei(1) - gas

Ist das richtig?

Antworten (2)

Ja. Sie müssen herausfinden, wie viel Gas (in ETH) die Transaktion kosten wird, aber zum Glück betragen einfache ETH-Transfers genau 21.000 Gas (ich denke, überprüfen Sie diese Zahl noch einmal). Das bedeutet, um zu wissen, wie viel ETH für Gas ausgegeben wird, müssen Sie das mit dem gewählten Gaspreis (z. B. 10^10) multiplizieren.

Ihre Berechnung muss also in etwa so aussehen:

var gasPrice = 20*10**9;
var gas = 21000;
var attoethForGas = gasPrice * gas;
var amountToSend = web3.toWei(1) - attoethForGas;
Wenn ich dieses Gas als 5000 nehme und mein Konto nicht vollständig leeren kann (nicht verbrauchtes Gas wird erstattet)
@D.Doy Ich habe die Antwort aktualisiert, um ein Codebeispiel aufzunehmen. Lassen Sie mich wissen, ob das zur Klärung beiträgt.
Vielen Dank für Ihre Antwort, aber es scheint, dass es die Rückerstattung von zu großem Gas nicht verhindert hat. Wenn es gelöscht werden soll, muss ich das Gas klein genug machen?
Hmm, ich bin mir nicht sicher, was Ihr Problem sein könnte, ich bin ziemlich zuversichtlich, dass der oben genannte Weg ist, alles zu senden. Können Sie den Code teilen, den Sie haben und der nicht funktioniert? Es sollte keine Gasrückerstattung für einen ETH-Transfer geben, selbst wenn dadurch das Guthaben auf Null gesetzt wird.

Um einen genauen zu sendenden Wert zu berechnen, müssen Sie genaue Berechnungen verwenden, die Ihnen JavaScript nicht standardmäßig bietet. Glücklicherweise gibt web3.js bereits ein spezielles BigNumberObjekt von zurück eth.getBalance(). Um präzise Mathematik auszuführen, müssen Sie Methoden BigNumberanstelle von arithmetischen Standardoperatoren verwenden. Zum Beispiel:

gasPrice = new BigNumber(web3.toWei('0.6', 'gwei'))
cost = gasPrice.mul(21000)
value = eth.getBalance(eth.accounts[0]).sub(cost)

Konstanten wurden zum Zeitpunkt der Veröffentlichung aus diesen Quellen gezogen:

ethgasstation.info ist im Moment tatsächlich am Boden, 0,6 gwei war nur ein ziemlich stabiler Preis, den ich gesehen habe, bevor er gesunken ist.