Wie überweise ich das gesamte Guthaben eines Kontos?

Wenn ich ein Konto mit 5 ETH habe, kann ich den vollen Kontostand von 5 ETH auf ein anderes Konto senden und auf dem zweiten Konto genau 5 ETH erhalten?

Ich habe verstanden, dass es fehlschlagen wird, weil ich keinen Ether mehr habe, um die Transaktionsgebühren zu bezahlen.

Wenn ich möchte, dass genau 5 ETH auf dem zweiten Konto eingehen, sollte ich meiner Meinung nach ungefähr 5.0002 ETH auf meinem Konto haben, um 5 ETH überweisen zu können. Kannst du bestätigen?

Ich habe Ihre Frage bearbeitet, damit beide Antworten auf die gleiche Weise antworten können, da beide dasselbe sagten, aber einer mit Nein und der andere mit Ja begann 🤔

Antworten (4)

Nein.

Sie können nicht das gesamte Guthaben senden, da die Gebühren vom Guthaben Ihres Kontos abgezogen werden, nicht vom gesendeten Wert. Um ein Konto zu säubern, müssen Sie balance-gas*priceETH als senden valueund auch manuell als und festlegen gas, gasPriceum sicherzustellen, dass Sie Ihr Konto genau auf Null setzen.

ZB wenn Sie 5ETH haben und es fegen möchten:

  • Eine einfache Konto-zu-Konto-Transaktion kostet 21000 Gas
  • Der aktuelle Mindestgaspreis im Netz beträgt 20 GWei
  • Setzen Sie den Wert auf 5ETH - 21000*20GWei = 5ETH - 42K GWei = 4,999958ETH
Ich habe mich immer gefragt, warum es im Client keine eingebaute Funktion gibt, um diesen Betrag zu berechnen ;) Sicher, es ist einfach genug, aber für Anfänger ist es ziemlich schwierig, da es darum geht, Dinge mit neuen unbekannten Größen zu berechnen!
@euri10 und mit Einheitenmultiplikatordifferenzen. Ich kann immer noch nicht herausfinden, wie ich die Gebühr in Ether aus dem Wei-Gaspreis berechnen soll ... Ich stimme zu, sollte in der Brieftasche erledigt werden.
20 Gwei ist nicht der Mindestgaspreis. Es ist der Standardgaspreis. Sie können Transaktionen mit einem Gaspreis von weniger als 20 Gwei senden.
Dies ist das von Geth standardmäßig erlaubte Minimum. Auch wenn es erlaubt ist, es niedriger einzustellen, werden andere Knoten im Netzwerk Ihre Transaktion nicht akzeptieren und daher Ihre Transaktion nicht an Miner weiterleiten. Selbst wenn ein Miner niedrigere Gebühren akzeptieren würde, könnten Sie es ihm derzeit nicht zukommen lassen. Dies geschieht, um Netzwerk-Spam zu vermeiden, bis eine geeignete dynamische Lösung gefunden werden kann (beachten Sie, dass dies auch für Bitcoin ein noch ungelöstes Problem ist).
21k mal 20 sind nicht 42k, sondern 420k. Ich denke, Sie haben in Ihrer Antwort eine Null verpasst, und der Wert muss 4,99958 anstelle von 4,999958 sein. Nicht wahr?
Es hat mich auch verblüfft, warum es keine eingebaute Funktion gibt, die den Sweep macht?
Tut mir leid, dass ich die Party zu spät gecrasht habe, aber wenn die Adresse, an die Sie senden, ein kostenpflichtiger Vertrag ist (kein externes Konto), sollte Gas auf eingestellt werden 22000. Außerdem kostet ein brandneues Konto (nicht vorhandenes Konto, auch bekannt als kein Verlauf in Trie) 25000. Ich würde vorschlagen, die Antwort zu bearbeiten.

Grundlegende Antwort ist nein!

Jedes Mal, wenn Sie eine Transaktion durchführen möchten, müssen Sie eine Gebühr für die Berechnung zahlen, die mit der Validierung und dem Mining Ihrer TX verbunden ist. Wenn Sie nicht genug Benzin haben, können Sie Ihren Sender nicht an das Netzwerk senden. Senden Sie in Ihrem Beispiel "alle" und der Empfänger erhält 5 minus Gebühren.

Mein Vorschlag wäre, es zu automatisieren.

Richten Sie zuerst das Konto ein und entsperren Sie es nach dem Start geth attach:

var accountNum = 0
personal.unlockAccount(eth.accounts[accountNum]);

Jetzt

var amount_to_send_eth = web3.fromWei(eth.getBalance(eth.accounts[accountNum]), "ether");
var amount_to_send_wei = amount_to_send_eth *1000000000000000000
var transactionFee = web3.eth.gasPrice * 21001;
var total_amount_to_send_wei = transactionFee + amount_to_send_wei 
eth.sendTransaction({from:eth.accounts[accountNum], to:"0xD3ADB33FD3ADB33FD3ADB33F", value: total_amount_to_send_wei });

Danach wird eine TXID zurückgegeben, mit der überprüft werden kann, ob die Transaktion abgeschlossen ist.

Ich bin ein Anfänger, daher sind Hinweise zur weiteren Verbesserung willkommen!

Thnx, ich helfe dabei
var transferAll = function(from, to) {
  var gas = '30000';
  var gasPrice = eth.gasPrice;
  var gasTotal = gasPrice.mul(gas);
  var totalValue = eth.getBalance(from).sub(gasTotal)-1;
  console.log("Transfer :"+totalValue+", from "+from+" to "+to);
  personal.unlockAccount(from);
  var result = eth.sendTransaction({from: from, to: to, value: totalValue});
  console.log("Transaction hash:", result);
};