Wenn Sie eine Transaktion senden, geben Sie einen Gaspreis und ein Gaslimit an. Wenn es nicht das gesamte Gaslimit verbraucht, erhalten Sie einen Teil des Geldes zurück. Es scheint also unmöglich zu sein, im Voraus zu wissen, wie hoch der gesamte verbrauchte Sprit sein wird, sodass in jedem Portemonnaie Kleingeld übrig bleibt.
Ich habe versucht, meine MetaMask-Brieftasche zu leeren. Ich habe auf https://ethgasstation.info/ (7) nach einem vernünftigen Gaspreis gesucht . Ich habe das zu sendende Gesamtguthaben eingegeben, MetaMask sagte natürlich aufgrund der Gebühr „nicht genug Guthaben“. Ich habe den Gaspreis auf 7 geändert, die maximale Gebühr kopiert, die Transaktion abgelehnt, eine neue Transaktion mit dem Betrag gleich (Gesamtsaldo - maximale Gebühr) eingegeben und den Gaspreis erneut auf 7 geändert. Nachdem es gesendet wurde (ein paar Stunden), blieb ich mit 0,09 $ in meiner MetaMask-Brieftasche! Obwohl ich versucht habe, den genauen Betrag sorgfältig zu berechnen, scheint es unmöglich zu sein, eine Brieftasche zu leeren.
Laut MetaMask-Hilfe hat MyEtherWallet eine „Send Max“-Funktion, aber wie würde das funktionieren?
https://support.metamask.io/kb/article/14-sending-max-balance
Eine einfache Möglichkeit, Ihr gesamtes Guthaben in der Zwischenzeit zu senden, besteht darin, Ihr MetaMask-Konto zu MyEtherWallet zu exportieren, das über eine „Send Max“-Funktion verfügt, und von dort aus an die Börse zu senden.
Ist es nicht wahr, dass Sie das tatsächlich verwendete Gas nicht im Voraus wissen können? Wenn Sie versuchen, das Gaslimit genau zu berechnen, riskieren Sie, dass Ihr gesamtes Gas verbraucht wird und Ihre Transaktion trotzdem fehlschlägt! (Mir ist das schon mal passiert.)
Wenn Sie den Ether an ein EOA (externes Konto, kein Vertrag) senden, beträgt das verwendete Gas immer 21000 Gas, sodass es einfach ist, das Maximum ordnungsgemäß zu senden. (Ich habe das persönlich ein paar Mal gemacht, als ich Konten konsolidierte, und genau einen Saldo von 0 erreicht.)
Wenn Sie Ether an einen Kontrakt senden, ist es normalerweise immer noch möglich, das Gas genau richtig zu machen. Es gibt eine JSON-RPC-Methode eth_estimateGas
, die die Transaktion simuliert, die Sie durchführen möchten, und die verbrauchte Gasmenge zurückgibt. Ich würde erwarten, dass MetaMask diesen Wert standardmäßig als Gaslimit verwendet, aber ich bin mir nicht sicher. Sofern der Vertrag nicht aufgrund eines veränderlichen Zustands eine andere Gasmenge verbraucht (und dieser Zustand sich ändert, bevor Ihre Transaktion abgebaut wird), sollte dies genau die Menge an Gas sein, die Ihre tatsächliche Transaktion verbraucht.
Ich würde vermuten, dass MEWs "Send Max" das Maximum sendet, das Sie können, vorausgesetzt, dass das volle Gaslimit erreicht ist. Wenn Ihr Gaslimit also höher eingestellt ist als das tatsächlich verbrauchte Gas, bleibt ein wenig Äther übrig.
Sie haben Recht, dass es im Zweifelsfall wahrscheinlich besser ist, die benötigte Gasmenge etwas zu überschätzen (ein etwas hohes Gaslimit festzulegen) und dann den übrig gebliebenen Ether einfach abzuschreiben.
Das Überweisen von Geldern auf ein anderes Konto kostet 21000 Gas. Um also den gesamten Betrag zu senden, setzen Sie das Gaslimit auf 21000 und multiplizieren Sie es mit dem von Ihnen angegebenen Gaspreis. Ziehen Sie diese dann vom Kontostand ab. Auf diese Weise sollte kein Guthaben mehr auf Ihrem Konto sein und Sie können Ihre Ruhe bewahren :)
Chloe
Benutzer19510
Chloe
Benutzer19510
Chloe
Benutzer19510
Benutzer19510
Don Lee