Zugänglichkeit öffentlicher Variablen

Wenn ich eine publicZustandsvariable habe, bedeutet dies, dass andere Verträge auf ihren Wert zugreifen oder ihn sogar ändern können?

Ich habe von hier aus eine Kryptomünze erstellt und alle Variablen sind als deklariert public, also mache ich mir Sorgen, ob andere Verträge diese Variablen nur anzeigen können oder auch die Werte ändern können?

Antworten (1)

Eine publicZustandsvariable verfügt über einen automatisch generierten Accessor, den andere Verträge zum Lesen der Variablen verwenden können.

Öffentliche Zustandsvariablen können jedoch nur durch eine Funktion in einem Vertrag geändert werden, der die Variable ändert. Wenn es keine solchen Funktionen gibt, die für andere Verträge zugänglich sind, kann die Zustandsvariable nicht durch andere Verträge geändert werden.

Funktionen können als external, public, internaloder angegeben werden private, wobei der Standardwert ist public.

external : Externe Funktionen sind Teil der Vertragsschnittstelle, können also aus anderen Verträgen und über Transaktionen aufgerufen werden. Eine externe Funktion f kann nicht intern aufgerufen werden (dh f()funktioniert nicht, aber this.f()funktioniert). Externe Funktionen sind manchmal effizienter, wenn sie große Datenarrays empfangen.

public : Öffentliche Funktionen sind Teil der Vertragsschnittstelle und können entweder intern oder über Nachrichten aufgerufen werden. Für öffentliche Zustandsvariablen wird eine automatische Zugriffsfunktion (siehe unten) generiert.

internal : Auf diese Funktionen und Zustandsvariablen kann nur intern zugegriffen werden (dh aus dem aktuellen Vertrag oder daraus abgeleiteten Verträgen), ohne Verwendung von this.

private : Private Funktionen und Zustandsvariablen sind nur für den Vertrag sichtbar, in dem sie definiert sind, und nicht in abgeleiteten Verträgen.