Solidity
私人 vs 內部更便宜
我知道這
external
比public
如何解析參數更便宜。是做功能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
更改fromprivate
to的可見性internal
不會改變呼叫時的 gas 成本test
。但是,我通過將兩個版本的
calc
契約放在一份契約中進行了第二次測試,即calc1
asprivate
和calc2
asinternal
。然後在原始碼中首先定義的函式顯示了稍低的氣體消耗,但是,這與它的可見性無關。如果第一個功能是
private
,它更便宜。如果internal
是程式碼,反之亦然。所以我得出的結論是gas成本是一樣的。這也符合我的理解,即在編譯程式碼後,和之間的區別
private
不再internal
相關。
https://solidity.readthedocs.io/en/latest/contracts.html?highlight=private
internal:這些函式和狀態變數只能在內部訪問(即從目前合約或從它派生的合約中),而不使用 this。private:私有函式和狀態變數僅對它們定義的合約可見,而在派生合約中不可見。