Solidity
繼承邏輯
我有一個關於solidity繼承的問題。我有一個契約,我們稱之為 Base,我還有 3 個繼承 Base 的契約。它們非常小,因為幾乎所有邏輯都位於 Base 中。我有一個結構,可以創建這 3 個契約中的每一個的實例。當我嘗試部署這種結構時,它會消耗異常數量的氣體(360 萬氣體),如果刪除這 3 個契約中的任何一個,它將花費240 萬
問題是:solidity 是否每次都為每個繼承它的合約上傳父合約?
如果不是,那麼這種gas價格的原因是什麼?
謝謝
是的。
每個子合約都包含它們繼承的程式碼,因此它們的大小大致為 Base 加上它們的附加程式碼。3.6M gas 對於一次性部署而言可能並不令人擔憂,但在事情尚未完成且預計會進一步增加的情況下,它足以保證對結構進行一些考慮。
*在某些情況下,*您可以考慮替代繼承。例如,在主合約(例如系統資料庫或主記憶體儲/邏輯)中呼叫外部函式的子合約往往比繼承複雜合約的子合約小。您可以考慮進行重組,以便只允許受信任的合約與中央合約進行通信,以此作為控制增長的一種方式。
希望能幫助到你。
希望能幫助到你。