Solidity

為什麼汽油價格會根據州的知名度(公共/外部/私人/內部)而有所不同?

  • November 9, 2022

為什麼 gas 價格會根據功能的狀態可見性(公共/外部/私人/內部)而有所不同?

在乙太坊中,交易需要gas,因此需要ether。交易的 gas 消耗取決於 EVM 必須執行的操作碼。所以這都是關於正在使用的操作碼。

更多操作碼,使用更多氣體(一些操作碼非常昂貴,因為它們的計算量很大)

例如,對僅在外部訪問的函式使用可見性外部強制使用 calldata 作為參數位置,這在函式執行時節省了一些氣體。

你也有這個很棒的 twitter 執行緒,forge inspect @CONTRACT ir-optimized這將幫助你視覺化你的程式碼正在使用什麼操作碼 https://twitter.com/w1nt3r_eth/status/1579486967963693057

希望這可以幫助

天然氣價格因州的可見性而異,主要是由於數據的操縱方式,尤其是在公共和外部指定者之間。公共可見性通常會花費更多的 gas,因為公共函式中的參數被複製到memory,而具有外部可見性的函式可以直接從中讀取參數,因為使用比使用更便宜calldata,因此成本更低。然而,內部和私人指定者的 gas 成本幾乎相同。calldata``memory

看:

https://medium.com/coinmonks/deciphering-visibility-specifiers-in-solidity-from-basics-to-optimizations-to-security-b0ea0a03aa1f

externalpublic 最佳實踐

私人 vs 內部更便宜

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