Smart Contract: Warnung! Bei der Vertragsausführung ist ein Fehler aufgetreten und wird [zurückgesetzt]

Ich habe Ropsten ETH an meine neu erstellte Vertragsadresse gesendet (immer noch im Testmodus im Ropsten Testnetz). Leider "fehlt" es immer wieder. Die Blockchain meldet: Achtung! Während der Vertragsausführung aufgetretener Fehler [Zurückgesetzt]

Bitte sehen Sie meine Vertragsadresse und Transaktionsfehler hier: https://ropsten.etherscan.io/address/0xe7a6fbf8a93e6c879907e0404881840a05978745

Ich habe Myetherwallet-Interaktionsfunktionen eingesetzt, interagiert und meinen Smart Contract für totalSupply, CurrentDistribPublicSupply, OwnerDistribSupply_ und andere abgefragt. Alles scheint in Ordnung zu sein und zu stimmen. Bin also super verwirrt und ziemlich besorgt. Bitte jemand helfen und erklären, was ich falsch mache? Jede Art von Hilfe und Korrektur wäre willkommen. Danke schön.Eine bildliche Beschreibung meines bereits bereitgestellten Vertrags im Lesemodus

Es scheint, als würde ihm das Benzin ausgehen. Haben Sie versucht, mehr Gas mit Ihrer Transaktion zu senden? Gas von 90.000 ist nicht sehr viel, wenn Ihr Vertrag komplex ist.
Danke Ismael für dein Interesse an meinem Problem. Ja, ich habe denselben Vertrag mit einer anderen Vertragsadresse bereitgestellt. Ich habe 250.000 Gas verbraucht, immer noch fehlgeschlagen. Bitte helfen Sie mit, meinen Vertragscode zu überprüfen, alle Fehler zur Solidität wurden bereits behoben, die Vertragsbereitstellung war erfolgreich. Mein Vertrag ist darauf ausgelegt, Token für Eth auszugeben.

Antworten (2)

Es ist sehr wahrscheinlich, dass Sie auf eine revert()Ihrer Fallback-Funktionen stoßen. Debuggen Sie es mit Remix. Es wird empfohlen, stattdessen zu verwenden require(), da dies die Änderung des Zustands automatisch rückgängig macht, wenn die darin enthaltene Bedingung nicht zutrifft true.

Um sicherzustellen, dass eine Bedingung erfüllt ist, können Sie dies tun, require ( 2 == 2)und wenn dies fehlschlägt, ist es viel einfacher herauszufinden, wenn Sie die Ausführungsschritte mit dem Debugger von Remix durchlaufen, als zu beobachten, bei welcher Bedingung es zu einem Zurücksetzen gesprungen ist.

Nikita, danke, eigentlich hat Remix das vorgeschlagen, ich habe gerade einen Weg gefunden, es zu umgehen. Ich werde das auf jeden Fall ausprobieren und dir umgehend Feedback geben. Vielen Dank.
Hallo Nikita, ich habe deinen Vorschlag angewendet und den Vertrag erhält nun ETH auf ropsten Test. Ich schätze die Hilfe sehr. Vielen Dank
Danke, Sie können meine Antwort gerne als akzeptierte Lösung markieren, bitte! ;)

Die Fallback-Funktion ist nur für Basisoperationen geeignet. https://solidity.readthedocs.io/en/v0.4.24/contracts.html?#fallback-function

Danke Siid dafür. Ehrlich gesagt bin ich kein Superprogrammierer, zumindest noch nicht. Aber nachdem ich das Dokument durchgesehen habe, versteht mein intuitives Denken, dass Sie mir raten, die Fallback-Funktion zu entfernen? Abschließend weiß ich nicht, würden Sie vorschlagen, dass durch Einbeziehen von Daten beim Versuch, ETH an den Vertrag zu senden, die Revert-Funktion umgangen werden kann? Vor allem mit dem Vorhandensein einer Fallback-Funktion in meinem Code. Danke für Ihren Fleiß