Ich habe mehrfach gelesen, dass bei Ethereum alles Gas kostet. Aber wenn ich eine Funktion schreibe und verwende, die den Zustand eines Vertrags nicht ändert (dh zwei Parameter summiere und die Summe zurückgibt), kostet das kein Gas.
Also, was bedeutet die Aussage „Alles kostet Benzin auf Ethereum“ jetzt eigentlich?
Funktionen, die den Zustand nicht ändern, können explizit als schreibgeschützte Funktionen geschrieben werden, indem die Modifikatoren view
und pure
(früher constant
) verwendet werden.
view
: Liest den Status, ändert ihn aber nicht.pure
: Benötigt keinen Zugriff auf den Zustand und ändert ihn nicht.Ein Client kann auch jede Funktion mithilfe der Web3- .call()
Methode aufrufen.
In allen drei Fällen gilt:
call()
z. B. mit . Dasselbe gilt für "Kein Gas"-Situationen. Bei der Anforderung muss ausreichend Gas zugeführt werden.Jeder OPCODE auf Assemblerebene hat bestimmte Kosten. Es könnte eine etwas präzisere Verallgemeinerung sein zu sagen, dass alle zustandsändernden Operationen Benzin kosten. Ich möchte sagen, dass das Lesen kostenlos ist. Am Ende sind sie es, wenn sie richtig umgesetzt werden. Hoffentlich bieten die obigen Details etwas Klarheit darüber, was los ist.
Ich hoffe es hilft.
Richard Horrocks