Solidity

一個視圖公共函式的gas消耗

  • July 23, 2018

在我的契約中,我有一個返回 bytes32 元素數組的視圖公共函式。在混音中,它會產生一個警告,說如果我使用此功能,它可能會用完塊氣體限制。

正如我在函式不進行狀態更改時所讀到的,您將其定義為公共視圖。因此,當您呼叫它時,您不必支付乙太幣,因為您的本地節點從合約中呼叫變數並在本地執行它。這是正確的嗎?那為什麼我要擔心gas限制呢?

在 Lauri 的 Peltonen 評論後重新編輯。我使用的程式碼是:

pragma solidity ^0.4.18;
contract Project{
   bytes32[] array;

   function addValue(bytes32 element)public{
       //only the administrator can add new values
       array.push(element);
   }

   function getAll()view public returns(bytes32[]){
       return array;
   }
}

呼叫視圖函式時無需支付 gas。這並沒有改變它仍然有操作要做的事實,這些操作有成本,因此受制於區塊的上限氣體限制,以及時間限制。

嘗試返回整個無界數組是個壞主意,因為呼叫將超時,您將一無所獲。

您可以做的是使用像這裡這樣的游標,解決您面臨的問題的文章。

免責聲明:不是我的部落格或文章!

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