Solidity
契約程式碼大小(以及如何解決它?)
我正在編寫一些相當重要的 Solidity 智能合約,並且相信我正在達到 EIP170 24k 字節碼大小限制。我已經
(a) 將我的程式碼分解到庫中
(b) 今天把我的契約分成兩部分。
似乎沒有什麼可以幫助低於限制。哎呀,分成兩個契約 - 增加 - 嚴重 - 兩個結果契約之一的程式碼 - 比原來的多合一契約大得多。
是否有工具可以幫助找出程式碼膨脹的來源?其他拆分方法以減小尺寸?
字節碼膨脹很可能來自程式碼中的新語句。它們通常是麻煩製造者,因為它們包含要實例化的合約程式碼。您可以創建可以在前面部署的契約工廠。通過這種方式,您可以減少主合約的字節碼大小。
例如
contract X {} contract XFactory { function createX() returns (X) { return new X(); } } contract Main { XFactory xFactory; ... Main(XFactory _xFactory) { xFactory = _xFactory; } ... function someMethod() { X x = xFactory.create(); } ... }
通過實施透明合約標準可以繞過最大合約大小限制:https ://github.com/ethereum/EIPs/issues/1538