Solidity

私人 vs 內部更便宜

  • March 29, 2022

我知道這externalpublic如何解析參數更便宜。是做功能private還是internal便宜?

我剛剛使用以下契約在Remix的 JavaScript VM 環境中檢查了一個小範例:

contract test {

   function calc(uint256 a, uint256 b) private returns (uint256) {
       return a + b;
   }

   function test(uint256 a, uint256 b) public returns (uint256) {
       return calc(a, b);
   }
}

calc更改from privateto的可見性internal不會改變呼叫時的 gas 成本test

但是,我通過將兩個版本的calc契約放在一份契約中進行了第二次測試,即calc1asprivatecalc2as internal

然後在原始碼中首先定義的函式顯示了稍低的氣體消耗,但是,這與它的可見性無關。如果第一個功能是private,它更便宜。如果internal是程式碼,反之亦然。

所以我得出的結論是gas成本是一樣的。這也符合我的理解,即在編譯程式碼後,和之間的區別private不再internal相關。

https://solidity.readthedocs.io/en/latest/contracts.html?highlight=private

internal:這些函式和狀態變數只能在內部訪問(即從目前合約或從它派生的合約中),而不使用 this。private:私有函式和狀態變數僅對它們定義的合約可見,而在派生合約中不可見。

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