Contract-Development

公共變數的可訪問性

  • August 8, 2016

如果我有一個public狀態變數,這是否意味著其他合約可以訪問甚至更改它的值?

我從這裡製作了一個加密幣,所有變數都聲明為public,所以我擔心其他合約是否只能查看這些變數或者它們也可以更改值?

狀態變數將public具有自動生成的訪問器,其他合約可以使用該訪問器來讀取該變數。

但是,公共狀態變數只能由更改變數的合約中的函式更改。如果沒有其他合約可以訪問的此類功能,則狀態變數不能被其他合約更改。

函式可以指定external、或public,其中預設值為。internal``private``public

external:外部函式是合約介面的一部分,這意味著它們可以從其他合約和交易中呼叫。外部函式 f 不能在內部呼叫(即f()不工作,但this.f()工作)。外部函式在接收大量數據時有時效率更高。

public:公共函式是合約介面的一部分,既可以在內部呼叫,也可以通過消息呼叫。對於公共狀態變數,會生成一個自動訪問器函式(見下文)。

internal:這些函式和狀態變數只能在內部訪問(即從目前合約或從其派生的合約中),而無需使用this.

private:私有函式和狀態變數僅對定義它們的合約可見,而在派生合約中不可見。

引用自:https://ethereum.stackexchange.com/questions/7827