totalSupply() Solidity-Signatur verursacht Konfliktfehler

Ich schreibe einen sehr einfachen ERC20-Token mit Solidität in der Mist-Brieftasche. Aus irgendeinem Grund mag der Compiler den Funktionsnamen totalSupply() nicht. Wenn ich diesen Namen ändere, wird er gut kompiliert.

Um ERC20-konform zu sein, muss diese Funktion auf diese Weise signiert werden.

Wie umgehe ich diesen Fehler?

Soliditätskodex

Geben Sie hier die Bildbeschreibung ein

Antworten (2)

Ich denke, Ihr Funktionsrückgabeargument sollte umbenannt werden - darüber beschwert sich der Compiler wirklich:

function totalSupply() constant returns (uint256 something) {

Es ist eigentlich optional, das Rückgabeargument hier zu benennen; Sie können einfach den Typ eingeben:

function totalSupply() constant returns (uint) {

[Für zukünftige Referenzen wäre es einfacher zu prüfen, ob wir den Code selbst posten könnten, anstatt ein Bild des Codes, damit wir ihn ausschneiden und in den Compiler einfügen können.]

Option 1

Eine typische Lösung und Implementierung eines ERC20-Tokens besteht darin, die publicVariable in totalSupply(kein Unterstrich) umzubenennen und die Funktion zu entfernen, totalSupplyda sie dann automatisch von Solidity generiert würde.

Erläuterung der Shadowing-Fehlermeldung

function totalSupply() constant returns (uint256 totalSupply)zeigt dem Compiler an, dass der Rückgabewert variabel totalSupply(ohne Unterstrich) sein wird.

Aber die Funktion gibt den Wert einer anderen Variablen zurück (sieht gleich aus, ist aber anders, da sie einen Unterstrich hat). Der Compilerfehler liegt also daran, dass die totalSupplyVariable von einer anderen Variablen überschrieben / beschattet wird.

Option 2

Wie @benjaminion erklärt hat, nennen Sie den Rückgabewert nicht und verwenden Sie einfach:

function totalSupply() constant returns (uint256)

Es gibt jetzt keine zu schattierende Variable.