Fehler beim Erstellen des Vertrags mit Ethereum im ursprünglichen TX

Ich erhalte diesen Fehler, wenn ich versuche, den Vertrag mit einer ETH zu erstellen, aber wenn ich einfach auf Erstellen klicke, ohne Ether zu senden, wird der Vertrag korrekt bereitgestellt.

Geben Sie hier die Bildbeschreibung ein

Antworten (2)

Ihr Konstruktor ist es nicht payable.

Vertragsfunktionen lösen aus, wenn Ether gesendet wird und die Funktion nicht explizit als markiert ist payable. Dies hilft zu verhindern, dass Ether in Verträgen hängen bleibt, die es nicht erwartet haben und keine Auszahlungsfunktion haben, um es zurückzubekommen.

Da Funktion MyToken(.... nicht ist, payableschlägt die Bereitstellung selbst mit einer Ausnahme fehl, wenn unerwünschtes/unerwartetes Ether ankommt.

Das kannst du mit lösen

function MyToken(...) payable {}

Wie ich sehe, haben Sie eine payableFallback-Funktion, mit der Sie den Kontakt bereitstellen und dann Geld an die Vertragsadresse senden können.

Auf den ersten Blick scheint dieser Vertrag keine Möglichkeit zu haben, an ihn gesendete Ether zurückzugewinnen, sodass er nach der Übertragung effektiv verbrannt wird. Dies zeigt in der Tat, dass es für Designer wichtig ist, darüber nachzudenken, wie Ether ein- und ausgeht und warum es wünschenswert ist, unerwünschte Einnahmen zu verhindern.

Ich hoffe es hilft.

Danke für die Antwort; Ich habe noch eine Frage an euch: Warum wird die Fallback-Funktion aufgerufen, obwohl ich beim Start 0 Ether schicke?

Sie haben dies als Antwort gepostet, aber es ist eigentlich eine neue Frage. Sie erhalten bessere Antworten, wenn Sie sie als neue Frage posten.