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?
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;
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 BigNumber
Objekt von zurück eth.getBalance()
. Um präzise Mathematik auszuführen, müssen Sie Methoden BigNumber
anstelle 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:
eth