首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TestRPC限制

TestRPC限制
EN

Ethereum用户
提问于 2018-01-25 18:17:15
回答 2查看 194关注 0票数 0

是否存在一些testRPC限制?我经常遇到“无气体”例外的合同,与适量的方法。例如,让我们有合同:

代码语言:javascript
复制
contract TestSize{
    event Test1(uint param1, string param2); function test1(uint param1, string param2){ Test1(param1, param2);}
    event Test2(uint param1, string param2); function test2(uint param1, string param2){ Test2(param1, param2);}
    event Test3(uint param1, string param2); function test3(uint param1, string param2){ Test3(param1, param2);}
    ...
    event Test87(uint param1, string param2); function test87(uint param1, string param2){ Test87(param1, param2);}
}

本合同适用于testRPC无问题松露,所用气体为6614230。

但是,当我在test88/Test88 88中增加一行时:

代码语言:javascript
复制
contract TestSize{
    event Test1(uint param1, string param2); function test1(uint param1, string param2){ Test1(param1, param2);}
    event Test2(uint param1, string param2); function test2(uint param1, string param2){ Test2(param1, param2);}
    event Test3(uint param1, string param2); function test3(uint param1, string param2){ Test3(param1, param2);}
    ...
    event Test87(uint param1, string param2); function test87(uint param1, string param2){ Test87(param1, param2);}
    event Test88(uint param1, string param2); function test88(uint param1, string param2){ Test88(param1, param2);}
}

部署结束时没有气体异常,基本上消耗了我给它的任何数量的气体:

代码语言:javascript
复制
eth_sendTransaction

  Transaction: 0x5b838c29352638fc360302f9b15920359feb4d107837684e2ff2a4637e2c2c89
  Contract created: 0x7703276d61ff3a1e081d1ed1d3bbf1738cb0d554
  Gas usage: 9000000000
  Block Number: 24
  Block Time: Thu Jan 25 2018 19:12:53 GMT+0100 (CET)
  Runtime Error: out of gas

有什么想法吗?它严重限制了甚至更大的合同的发展。

EN

回答 2

Ethereum用户

发布于 2018-01-27 04:15:44

Ganache-cli (以前称为testrpc)允许使用-l参数设置任意的大量气体。

例如,要将气体限制设置为100米,可以使用

-l 100000000

您可以查看其github上的自述文件页面,以获得更多选项https://github.com/trufflesuite/ganache-cli

票数 1
EN

Ethereum用户

发布于 2018-03-03 01:04:10

我最近跟你说的一样。一直到“同一个平凡函数的N个副本,foo_NNNN()”。我的结论是,问题是字节码大小,似乎罪魁祸首是EIP170,它将字节码大小限制在24k字节。

其他人建议将代码分解到库中,我想这很有帮助。这是Ethereum中代码复杂性的一个基本且不可避免的限制,我不知道如何处理它。因为有时代码体太复杂了,找到一个插入两个的位置只会增加它的大小(b/c太多的跨切分平面的调用)。

对不起,我没有什么可提的,但我在同一个位置,这就是原因。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/37485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档