Welcher Variablenumfang verändert den Vertragszustand?

Ich hatte über den Status eines Smart Contracts gelesen. Hier

Es gibt auch ein kleines Beispiel für einen Vertrag.

contract SimpleStorage {
    uint storedData;

    function set(uint x) {
        storedData = x;
    }

    function get() constant returns (uint) {
        return storedData;
    }
}

Hier haben wir eine Variable savedData und wenn wir diese setzen wollen, wird eine Transaktion mit x gesendet und der Zustand des Vertrages ändert sich. Soweit ich es richtig verstanden habe, ist es nicht erforderlich, eine Transaktion zu senden, um gespeicherte Daten zu lesen. Ich kann ein Ortsgespräch führen.

Was ist nun mit folgendem Vertrag:

contract SimpleStorage {

    function set(uint x) {
        uint storedData = x;
        return storedData;
    }
}

savedData ist jetzt in der Funktion und speichert den Inhalt, aber ändert sich dadurch der Vertragszustand? Muss ich eine Transaktion senden, um diese Funktion aufzurufen, oder reicht ein Ortsgespräch?

Aus meinen Programmierkenntnissen würde ich sagen nein, aber ich bin mir nicht sicher, wenn es um Smart Contracts geht :)

Danke

Antworten (1)

Der Unterschied zwischen dem ersten und dem zweiten Beispiel besteht darin, dass sich im ersten Beispiel im SpeicherstoredData des Vertrags befindet , während im zweiten eine Speichervariable ist. Der Speicher bleibt über Transaktionen hinweg bestehen, der Speicher nicht. Somit liegen Sie richtig.uint

Könnte ich das zweite Beispiel lokal aufrufen oder muss es auch eine Transaktion sein, um die Funktion aufzurufen?
@Donut Es muss eine Transaktion durchgeführt werden, damit das Netzwerk überprüft, ob die Änderung zulässig ist.
Das ist nicht wahr, wenn Sie es als Transaktion senden, wird es nichts Nützliches zurückgeben. Wenn Sie es lokal aufrufen, wird nur das zurückgegeben, was Sie eingegeben haben. Im zweiten Beispiel ist sowieso nichts zustandsbehaftet