Gibt es einen Vorteil bei der Verwendung von Modifikatoren für reine und Ansichtsfunktionen?

Ich habe eine Funktion, die den Vertragsstatus nicht liest oder ändert:

contract C {

    function add(uint a, uint b) public returns (uint) {
        uint res = a + b;
        return res;
    }

}

Ist es sinnvoll, den Modifikator pure/view zu verwenden? Ich meine, verbraucht die Funktion danach weniger Gas oder was ist der Grund dafür?

Antworten (1)

Wenn du deine Funktion machen kannst pure, solltest du es immer machen pure. Ansonsten, wenn Sie Ihre Funktion machen können view, sollten Sie es immer machen view.

Vorteile:

  • Wenn Sie Ihre Funktion pureoder viewausführen, können Sie sie beispielsweise über web3.js aufrufen, ohne dass eine Transaktion erforderlich ist, ohne Gaskosten und ohne Bestätigungsverzögerung.

  • Derzeit werden die Gaskosten bei der Ausführung auf dem EVM nicht gesenkt. In Zukunft kann es jedoch dem Solidity-Compiler helfen, Ihr Programm zu optimieren.

  • Es verhindert, dass Sie versehentlich den Vertragsstatus in Funktionen lesen oder schreiben, in denen Sie dies nicht möchten.

Nachteile:

(keiner)

Wir schreiben das Jahr 2022. Werden Pure- und View-Funktionen von Solidity optimiert?