我有一个相当大的合同,我必须创建在科万网络进行测试。当我试图创建上述合同时,会发生相当奇怪的行为。
行为是:每当事务消耗限制超过6`000`000气体时,事务就会失败,而不会出现气体错误(尽管指定了10`000`000气体限制(这是块气体限制)。
现在,我的联系理论规模大约是680万-70万当创建时限制。
下面是一些示例事务:当我去掉代码中的一些函数(与初始化无关):https://kovan.etherscan.io/tx/0x0d903408120c352876879d833ecfec01f7f4b8b3a17967b6f4920b4d30c9253b时,这个示例事务成功了。
这一次失败(原始交易大小为58`236/2字节),这意味着大约582.36万限制+一些EVM指定的天然气成本(合同创建等)。其结果超过600万:https://kovan.etherscan.io/tx/0xc8a1a2d4c3c010801cd769b0325c4bf1c8dcb2bc47f76505f91dface7cb62050
问题:
还没有在任何其他链上测试过这个。
我知道,从所有标准来看,这是一个很大的合同,但将其分成更多的分包合同将增加每个事务的运营成本+增加逻辑复杂性(确保只允许参与者访问特定的公共方法)。最重要的是,它已经成为一系列相互关联的合同的一部分。
发布于 2019-10-17 18:01:39
自https://eips.ethereum.org/EIPS/eip-170以来,Ethereum对智能契约运行时的硬编码限制为24 K字节。
这个限值不同于块体气体极限。
注意:编译返回一个由构造函数和运行时组成的字节码,只有最后一部分必须在24 is的限制内。
https://ethereum.stackexchange.com/questions/76784
复制相似问题