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?
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*price
ETH als senden value
und auch manuell als und festlegen gas
, gasPrice
um sicherzustellen, dass Sie Ihr Konto genau auf Null setzen.
ZB wenn Sie 5ETH haben und es fegen möchten:
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!
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);
};
Nicolas Massart