Ich versuche, einen SmartContract für einen Token zu entwerfen, und ich habe einige Probleme mit den Gasberechnungen. Wenn ein Benutzer jemandem ein Token sendet, möchte ich, dass dafür eine Gebühr erhoben wird. Wo es für mich unscharf wird, ist das Gas. Ich habe gelesen, dass für alle Transaktionen mindestens 21.000 Gas bezahlt werden müssen, aber es ist nicht klar, was darin enthalten ist. Ich habe gelesen, dass das Speichern von Daten (SSTORE) beim ersten Mal 20.000 Benzin kostet, 5.000 Benzin für Updates und 5.000 zum Zurücksetzen (auf Null setzen) + Sie erhalten eine 15.000 Benzinrückerstattung. Nach meinem Verständnis aktualisiert das Senden von Tokens nur das Guthaben auf zwei Brieftaschen (unter Verwendung von SSTORE?), Daher sollte es eine der folgenden sein:
Ich bin mir also nicht sicher, ob ich verstehe, woher die 21k-Grenze kommt / wie sie berechnet wird. Das Obige ist wichtig für mich zu verstehen, da es bestimmt, wie ich meinen Code schreibe.
Ich konnte diese Informationen nirgendwo finden, jemand hat mir gesagt, dass interne Transaktionen weniger als 21.000 kosten, jemand anderes hat mir gesagt, dass alle Transaktionen SSTORE-Operationen sind und 21.000 nur eine Untergrenze für die Kosten einer Transaktion ist, also wenn Sie es getan hätten Ein Benutzer, der einige Token an eine vorhandene Brieftasche (Vanilla ERC-20 SmartContract) sendet, wäre 5.000 + 5.000 + 11.000 (Netzwerkgebühr) = 21.000, aber wenn Sie einige andere Operationen (einschließlich des Sendens innerer Transaktionen) hätten, würde das Gas Sie über 21.000 bringen hätte 5k + 5k + other_ops >= 21k
Der Algorithmus, den ich zu schreiben versuche, ist:
An den Berechnungen sind Zeitstempel beteiligt, daher habe ich die Gaskosten heruntergebrochen auf (ohne alle anderen Berechnungskosten):
Insgesamt: 25.000 - 70.000 Benzin
Ist das richtig? Oder wird Schritt 3 21.000 Benzin kosten und die Schritte 4 + 5 (zusammen) werden auch 21.000 Benzin kosten, wie hier:
Gesamt: 52.000 - 82.000 Benzin
Danke schön! Gab
Ich bin mir nicht sicher, ob ich verstehe, woher die 21k-Grenze kommt / wie sie berechnet wird
21K gas
ist kein Gaslimit, sondern die minimalen Gaskosten für eine Transaktion, die von einem externen Konto (dh von der Off-Chain) gesendet wird.
Diese Einschränkung gilt nicht für eine Transaktion, die von einem Smart-Contract-Konto (dh von der On-Chain) gesendet wird.
1. update timestamp variable UserA (SSTORE) : 5k gas (or 20k if 1st time) 2. update timestamp variable UserB (SSTORE) : 5k gas (or 20k if 1st time) 3. send fee to fee wallet (update fee wallet balance using SSTORE internally?) : 5k gas 4. update UserA balance from sending tokens to UserB & Fee wallet (using SSTORE internally?): 5k gas 5. update UserB balance from receiving tokens sent by UserA (using SSTORE internally?): 5k gas (or 20k if 1st time) Total : 25k - 70k gas
gute Stimmung
Gabriel
gute Stimmung
gute Stimmung
Gabriel
gute Stimmung