Solidity

為什麼將數據傳遞給合約建構子而不是硬編碼,這樣成本會更低?

  • February 9, 2018

由於狀態變化,通過建構子傳遞變數賦值不是更昂貴嗎?

在程式碼中分配它們不是更便宜嗎?

我想知道使用我沒有考慮的建構子是否有好處。

我很欣賞有關使用建構子分配值的原因的任何資訊,因為我不明白為什麼它會是有益的。

多謝你們。

我懷疑您正在談論在部署之前預先知道建構子的參數的情況。在這種情況下,您是對的,擺脫建構子參數並將它們作為常量添加到程式碼中會更有效,從而可能消除一些狀態變數並節省氣體。

但是,在某些情況下,無法以這種方式將狀態變數替換為常量,例如,如果狀態變數必須是可變的,即它可以在合約生命週期的後期進行更新。因此,在這種情況下,消除建構子參數不會有太大好處。

建構子參數有用的另一種情況是在另一個合約中創建合約實例。假設有合約 A,需要創建合約 B 的實例,並且這些實例應該有不同的名稱。在這種情況下,名稱必須是建構子參數。您可以改為在每次部署之前使用新名稱更新 B 的字節碼(這可能正如評論中提到的@flygoing 一樣),但這將需要使用程序集並且可能容易出錯。

希望我的解釋清楚。

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