Fehler beim Erstellen von Verträgen in der Ethereum-Brieftasche. Brauche Hilfe [duplizieren]

Ich versuche, einen ERC20-Token außerhalb von Ethereum zu erstellen, aber wenn ich den Code in den Editor in die Ethereum-Brieftasche einfüge, erhalte ich einen seltsamen Fehler. Es sagt:

 "throw" is deprecated in favour of "revert()", "require()" and "assert()".
    if (balanceOf[msg.sender] < _value) throw;
                                        ^---^

(aus dem Ethereum-Blog ) ( Quellcode ) Kann mir bitte jemand dabei helfen?

Haben Sie versucht, mit einer anderen IDE zu kompilieren (wie Remix auf remix.ethereum.org )?

Antworten (1)

Wie die Fehlermeldung klar sagt

throw ist veraltet

Verwenden

require( balanceOf[msg.sender] >= _value)

Eine ausführliche Beschreibung finden Sie in diesem Artikel .

revert() und require() erstatten beide das übrig gebliebene Gas zurück, aber assert() verbraucht das gesamte bereitgestellte Gas.

Die require-Funktion sollte verwendet werden, um sicherzustellen, dass gültige Bedingungen wie Eingaben oder Vertragsstatusvariablen erfüllt sind, oder um Rückgabewerte von Aufrufen externer Verträge zu validieren. Bei richtiger Anwendung können Analysetools Ihren Vertrag auswerten, um die Bedingungen und Funktionsaufrufe zu identifizieren, die zu einer fehlgeschlagenen Bestätigung führen. Richtig funktionierender Code sollte niemals eine fehlgeschlagene Assertion-Anweisung erreichen; In diesem Fall liegt ein Fehler in Ihrem Vertrag vor, den Sie beheben sollten

.