我正在编写一些相当可靠的智能契约,并且相信我达到了EIP170 24k字节码大小的限制。我已经
(a)将我的代码考虑到库中
(b)今天我的合同分成两部分。
似乎没有什么能帮助我们突破极限。见鬼,分裂成两个合同--大大增加了--两个合同中一个的代码--比原来的全合一合同要大得多。
有什么工具可以帮助找出代码膨胀的来源吗?为了缩小规模而进行拆分的其他方法?
发布于 2018-03-03 06:00:20
很可能字节码膨胀来自于代码中的新语句。它们通常是麻烦制造者,因为它们包含要实例化的契约代码。您可以创建合同工厂,您可以部署在前面。这样,您可以减少主契约的字节码大小。
例如。
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();
}
...
}发布于 2018-10-31 23:07:19
通过实施透明合同标准:https://github.com/ethereum/EIPs/issues/1538,可以绕过最大合同大小限制。
https://ethereum.stackexchange.com/questions/41501
复制相似问题