Wie bestimmt man den Gaspreis und das verbrauchte Gas?

Ich habe eigentlich 2 Fragen:

  1. Wie ermittelt man den Gaspreis? Metamask füllt dies für mich aus, aber es ist immer zu niedrig, wenn ich auf Senden klicke. Im Grunde scheinen alle Werte auf der ETH Gas Station zu niedrig zu sein? Wie viel Gas-Limit soll ich einsetzen?

  2. Ich habe eine Überweisung erhalten, indem ich hohe Werte verwendet habe. aber es ist trotzdem gescheitert. Anscheinend habe ich jetzt 0,0105 Ether (13,66 $) verloren? Gibt es eine Möglichkeit, dies zurückzubekommen? Gibt es eine Möglichkeit, diese Fehler NICHT zu machen? Es ist wirklich eine sehr hohe Lernkurve (und kostspielig).

Siehe: https://etherscan.io/tx/0x2d68ca04e623509c05713a8b80c857e49cc80d3a71aadebd0aca7eb2511c57cd

Danke für jede Hilfe.

Antworten (4)

Ich denke, Sie haben etwas falsch gemacht ... Sie haben ein Gaslimit von 42000 festgelegt, was offensichtlich nicht ausreicht. Sie sollten das Gaslimit so gut wie nie anpassen, da es im Voraus sehr genau bestimmt wird. MetaMask sollte die richtige Gasgrenze für Sie festlegen.

Sie legen auch einen sehr hohen Gaspreis fest: 250 gwei, wenn https://www.ethgasstation.info/ sagt, dass 80 gwei Ihre Transaktion innerhalb von 2 Minuten verarbeiten sollten.

Nein, es gibt keine Möglichkeit, den Ether zurückzubekommen, den Sie für diese Transaktion bezahlt haben.

Lassen Sie in Zukunft MetaMask das Gaslimit wählen und den Gaspreis festlegen, indem Sie https://www.ethgasstation.info/ überprüfen .

BEARBEITEN

Ich sollte beachten, dass ein Gasmangel auch auftreten kann, wenn bei der Transaktion etwas anderes schief geht. Einige Arten von Fehlern können dazu führen, dass das gesamte Gas verbraucht wird. (zB ein assertim Code.)

Hallo, danke für dieses Wissen. Metamask gibt mir die Benzinpreise als Voreinstellung, sie sind ziemlich nah an dem, was die Tankstelle vorschlägt. Das Gaslimit beginnt jedoch immer bei 0. Wie bestimme ich also, welches Limit verwendet werden soll? Gibt es so etwas wie ein zu hohes Gaslimit?
Das ist sehr seltsam. MetaMask sollte in der Lage sein, das benötigte Gas richtig einzuschätzen. Der einzige Nachteil beim Festlegen eines hohen Gaslimits besteht darin, dass assertSie am Ende mehr bezahlen, als Sie benötigt haben, wenn ein Fehler (z. B. ein ) dazu führt, dass das gesamte Gas verbraucht wird. Für diese spezielle Transaktion würde ich denken, dass 100.000 ziemlich hoch sind, aber ich bin verwirrt darüber, warum MetaMask das falsch macht. Sehen Sie irgendwelche Fehlermeldungen?
Keine Fehlermeldung außer dass es fehlgeschlagen ist. Es war tatsächlich meine erste Transaktion, die nicht sofort aufgrund von „Eigengas zu niedrig“ fehlgeschlagen ist. Leider hat MetaMask das Gaslimit von 21000 nicht ausgefüllt, Sie können den Wert einfach selbst von 21000 bis fast unendlich hinzufügen. So oder so, danke für die Hilfe - ich wünschte, ich hätte zuerst eine Anleitung gelesen.

Wenn Sie wie ich nach den Gaskosten einer historischen Transaktion suchen, finden Sie hier Ihre Antwort.

gasCost(tx) = gasPrice * gasUsed

Sie können web3 verwenden, um die 2 erforderlichen Informationen zu erhalten, aber Sie werden 2 verschiedene Anrufe tätigen:

web3.eth.getTransaction(txHash)

gibt ein Objekt zurück, das gasPrice.

web3.eth.getTransactionReceipt(txHash)

gibt ein Objekt zurück, das gasUsed.

Wenn diese beiden Teile kombiniert sind, haben Sie die Benzinkosten für eine bestimmte historische Transaktion.

Das Gaslimit kann (vorstellbar) auf einen beliebigen Wert eingestellt werden - die Transaktion verwendet das verbrauchte Gas und jede Menge an verbrauchtem Benzin wird zurückerstattet - außer - und dies ist eine sehr wichtige Ausnahme - -wenn die Transaktion fehlschlägt (z. B. wegen eines assertoder throw).

Wenn die Transaktion fehlschlägt, erhalten Sie keine andere Fehlermeldung als „Kein Benzin mehr“, denn was passiert, wenn ein throwoder asserttrifft, ist, dass das gesamte verbleibende Gas (bis zum Gaslimit) verbraucht ist und die Transaktion zurückkehrt (das ist warum ich gesagt habe, dass das Gaslimit wichtig ist - es ist wichtig, wenn es fehlschlägt - es spielt keine Rolle, wenn es nicht funktioniert). Aber @smarx hat recht - lass Metamask die Einstellung vornehmen.

Sobald Sie das Benzin ausgegeben haben, können Sie es nicht zurückbekommen. Stellen Sie sich das so vor – die Maschine, die den Block abgebaut hat, hat die Arbeit erledigt, um zu entscheiden, ob die Transaktion erfolgreich war oder nicht. Diese Maschine (dh der Miner) sollte nicht bestraft werden, weil Sie eine Funktion ausgeführt haben, die fehlgeschlagen ist. Die Funktion lief – das kostete den Miner Geld – er/sie sollte bezahlt werden.

Die Gesamtkosten der Transaktion (nur zu Ihrer Information) betragen gas used* gas price.

Wenn Sie die Blocktransaktionsgebühr berechnen möchten, können Sie sie wie folgt berechnen:

  1. eth_getBlockByNumberBlockinfo erhalten.
  2. Holen Sie sich die obigen Blockinformationen Holen Sie sich den Hash jeder Transaktion.
  3. eth.getTransactionbekommen gasUsed.
  4. eth_getTransactionReceiptbekommen gasprice.
  5. gasUsed * gasPriceTransaktionsgebühren erhalten.
  6. Addieren Sie alle Transaktionsgebühren.