Solidity

Solidity:viewconstant有什麼區別?

  • January 25, 2019

Solidity 0.4.16 引入了viewandconstant函式修飾符。文件說:

constant對於函式:同view.

這是否意味著view只是 的別名constant?如果是這樣,我們為什麼需要它?

這在此處進行了討論:https ://github.com/ethereum/solidity/issues/992並已在您注意到的更改中部分實施

據我了解,重點是constant具有誤導性(常量函式不一定返回常量結果),並且不是特別細微。完成後的更改將引入兩個替換關鍵字:view並且pure旨在更有意義和有用。

GitHub 問題

現在:

  • 常量函式不應修改狀態(尚未完全執行)
  • 每次呼叫時都會評估常量狀態變數(即類中而不是方法中的變數)

更改後:

  1. 為函式引入了關鍵字視圖(它替換了常量)。呼叫視圖不能改變未來與任何合約互動的行為。這意味著此類函式不能使用 SSTORE,不能發送或接收乙太幣,只能呼叫其他視圖或純函式。
  2. 關鍵字 pure 是為函式引入的,它們是視圖函式,附加限制是它們的值僅取決於函式參數。這意味著他們不能使用 SSTORE、SLOAD,不能發送或接收乙太幣,不能使用 msg 或 block,只能呼叫其他純函式。
  3. 關鍵字常量在函式上無效
  4. 任何變數上的關鍵字常量意味著它不能被修改(並且可以被優化器放入記憶體或字節碼中)

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