Solidity

僅讀取仍使用 gas/tx 費用的數據的功能

  • February 20, 2019

我有一個函式呼叫,它只從合約中讀取數據,但它仍然需要消耗氣體來執行:

  function foo(int256 x) public returns (bool) {
   if(tuna[x].validOnce == true){
     if(dog[x] == true)
       return true;
     else
        return false;
   }

   else
     return true;

}

我已經閱讀了有關 pure 和 view 的內容,我可以將其添加到我的方法標題中。但是我不確定這是否是我需要使用此類標頭的情況?

是的。

function foo(int256 x) public view returns (bool) {
 if(tuna[x].validOnce == true){
   if(dog[x] == true)
     return true;
   else
     return false;
 } else return true;
}

這將返回值而不是事務雜湊。天然氣會計仍將展開,但天然氣將被退回,除非從另一個不執行只讀操作的合約呼叫它。

順便說一句,您使用view而不是pure因為此函式讀取數據。

也請看這裡:何時使用“View”和“Pure”代替“Constant”

希望能幫助到你。

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