Wie bestimmen Sie die Menge an Ether, die Sie für Ihre App benötigen?

Nehmen wir an, ich baue einen Vertrag auf, der wie ein Münz-/Mark-Punkte-System funktioniert. Ich weiß, dass wir Ether brauchen, wenn wir den Vertrag einsetzen. Und die Transaktion wird stattfinden, die dann Gas für die Gebühr benötigt. Das Gas wird aus dem Äther extrahiert, das das Konto hat, oder?

Das Gas soll konsistent sein, aber die Anzahl der Transaktionen kann nicht vorhergesagt werden. Es kann wenige oder riesige sein, also wie berechnen wir den Äther, den wir überhaupt brauchen? (Ich frage dies, falls Sie eine App erstellen und dann dem Kunden freigeben, wie Sie die Ether-Menge einrichten und sicherstellen sollten, dass sie später nicht ausgeht.)

Jeder mit Erfahrung in der DApp-Entwicklung da draußen, bitte helfen Sie uns zu erklären, wie wir Ether an erster Stelle zuweisen sollen. Und was tun, wenn der Äther zur Neige geht?

Danke vielmals

Ich bin mir ziemlich sicher, dass es kein Duplikat ist. Wenn ich es gut verstehe, ist es eine Verwirrung darüber, wer Benzin bezahlt, wenn er mit einem Vertrag interagiert.
Ich bestätige, dass das Problem darin zu bestehen scheint, dass das OP glaubt, dass er Gas für alle zukünftigen TX-Anrufe seines Vertrags bereitstellen muss. Jeder Benutzer zahlt das Gas für seinen Anruf und OP muss nur für die Vertragserstellung Gas bezahlen.

Antworten (2)

Es hört sich so an, als hätten Sie ein paar grundlegende Dinge, die Sie mit Verträgen und Ether verwechseln: Erstens besitzen Sie als Mensch (oder Unternehmen) eine Ethereum-Adresse, mit der Sie Ether in und aus (Ihrem Wallet) transferieren können. Wenn Sie einen Vertrag bereitstellen, ist diese Aktion eine Transaktion in der Ethereum-Blockchain und muss daher von einer Ethereum-Adresse kommen. Sie unterschreiben es also mit Ihrer Brieftaschenadresse, und die virtuelle Maschine von Ethereum erstellt eine brandneue Adresse (getrennt von Ihrer eigenen Brieftaschenadresse) für den neuen Vertrag.

Jeder kann Ether zu einem Vertrag schicken. Das Zurückbekommen von Ether hängt jedoch vom Code des Vertrags selbst ab. Sie müssen auswählen, wie das funktionieren soll, während Sie es entwickeln.

Also, um deine Fragen zu beantworten:

Das Gas [zur Bereitstellung des Vertrags] wird aus dem Äther extrahiert, das das Konto hat, oder?

Das Konto, das den Vertrag bereitstellt (Ihre Brieftasche), muss genügend Ether enthalten, um das Gas zum Erstellen des Vertrags zu bezahlen, ja. Der neu erstellte Vertrag wird ohne Ether erstellt (es sei denn, der Code des Vertrags tut etwas, das Ether hinein überträgt).

Das Gas soll konsistent sein, aber die Anzahl der Transaktionen kann nicht vorhergesagt werden. Es kann wenige oder riesige sein, also wie berechnen wir den Äther, den wir überhaupt brauchen?

Die Menge an Gas, die zum Erstellen eines neuen Vertrags benötigt wird, hängt von der Code-Komplexität des Vertrags selbst ab. Sie können die estimateGas()Funktion in web3 verwenden, um dies aus dem kompilierten Bytecode Ihres Vertrags zu berechnen, bevor Sie ihn bereitstellen ( weitere Details ).

Wie Sie die Ethermenge einrichten und später sicherstellen sollten, dass sie nicht ausgeht

Sowohl Ihre eigene persönliche Brieftasche als auch jeder bereitgestellte Vertrag können Ether erhalten, die darauf gezahlt werden. Wenn Ihr bereitgestellter Vertrag also Ether an jemanden senden muss und dieser ausläuft, können Sie ihm zu einem späteren Zeitpunkt mehr senden. Es ist jedoch möglich, dass ein einmal eingesetzter Vertrag niemals Ether benötigt, da er nicht für das Gas bezahlt, das zum Auslösen seiner Methoden benötigt wird. Eine Transaktion muss erstellt werden, um Funktionen für diesen Vertrag aufzurufen, und diese aufrufende Funktion muss von einem menschlichen Vertrag stammen, und der menschliche Vertrag zahlt für das Gas der Transaktion.

Das Gas wird aus dem Äther extrahiert, das das Konto hat, oder?

  1. Um einen Vertrag bereitzustellen, benötigen Sie Ether in dem Konto, das den Vertrag bereitstellen wird.

  2. Dann zahlen alle Konten, die mit Ihrem Vertrag interagieren , das Gas. Tatsächlich kann der Vertrag (und der Vertragsinhaber) die Gebühren für den Benutzer nicht bezahlen.

Aber mit der bevorstehenden Veröffentlichung von Metropolis und der Kontoabstraktion werden Smart Contracts in der Lage sein, Gebühren zu bezahlen.

Das bedeutet, dass Sie sich eigentlich keine Gedanken darüber machen müssen, Ihren Vertrag mit Ether zu füllen, da Sie das Gas nicht für Transaktionen bezahlen können, die von anderen Konten getätigt werden

Die Antwort, wie man den Ether berechnet, den wir überhaupt brauchen, ist also eigentlich schwer zu beantworten, da noch kein Vertrag dies getan hat.