跳至主要内容

[solidity] View Pure

Github 連結

影片連結

說明

在 Solidity 裡面,function 可以被宣告為 view 或是 pure。

  • view:當 function 宣告為 view 時,表示我們需要去讀取智能合約的狀態變數。

  • pure:當 function 宣告為 pure 時,表示我們不會去讀取智能合約的狀態變數。

因 viewFunction 回傳了狀態變數 num,所以在這期間有做一個讀取的動作,而 pureFunction 則是沒有動用到任何智能合約的狀態變數。

Image

再來看其他範例

addToNum function 因為讀取了狀態變數 num,所以因宣告為 view,add function 並無讀取到任何狀態變數,只是將輸入進來的值 x 和 y 做相加並回傳。

Image

在 gas 花費上,因為 view 會讀取到狀態變數,所以會比 pure 花上較多的 gas,但因為 view 和 pure 實際上只會用來查詢變數當下的值為何,並不會送出 transaction,所以這個花費比較也不具有意義。

addToNum:24166 gas

Image

add: 22313 gaw

Image

而假設我們將 addToNum(view)更改為 pure,則會出現錯誤提示,將無法部署智能合約。

Image

但是將 add(pure) 改為 view 時,雖然會出現警告提示,但我們同樣能部署智能合約。

Image

Image