Warum gibt balanceof() eine Konstante zurück?

Der ERC20-Token-Standard gibt balanceof()an, eine constant.

function balanceOf(address _owner) constant returns (uint256 balance)

Aber der Guthabenbetrag kann sich ändern oder mache ich hier etwas falsch?

Antworten (2)

Das Schlüsselwort Konstante gibt nicht an, was die Funktion zurückgibt. Eine als konstant gekennzeichnete Funktion wie diese sagt Ihnen, dass die Funktion einen Wert zurückgibt und keine Zustandsvariablen ändert. Eine große Verwendung für die Schlüsselwörter constant/view besteht darin, eine Funktion zu deklarieren, die aufgerufen werden kann, ohne eine Transaktion zu senden, dh eine freie "Abfrage" der Blockchain.

http://solidity.readthedocs.io/en/develop/contracts.html#view-functions

Warum wäre es falsch, nicht in zu constantverwenden balanceof()? Die Funktion selbst ändert keinen Zustand, sie kehrt nur zurückreturn balances[_owner];
Es wäre nicht falsch. Sie haben Recht, konstant dort zu sein.
Was „konstant“ ist, ist die Funktion, die sich in Solidity auf eine Funktion bezieht, die den Zustand der Blockchain nicht ändert, sondern nur Werte liest. Nicht zu verwechseln mit einer konstanten Variablen, deren Wert nach der Deklaration nicht mehr geändert werden kann.

Die Konstante von Funktionen ist ein anzuzeigender Alias, sodass Sie bei der Ausführung den Inhalt anzeigen können, den die Funktion zurückgibt