为松露设置气体

Posted

技术标签:

【中文标题】为松露设置气体【英文标题】:Setting gas for truffle 【发布时间】:2018-01-18 23:57:55 【问题描述】:

我在 main 上运行 truffle migrate。也使用geth。 我最初在 truffle.js 中将 gas price 和 gas 留空,但现在看起来像这样:

live: 
  network_id: 1,
  host: "127.0.0.1",
  port: 8545,
  from: "3984bc76cb775d7866d1cd55c4f49e3d13d411d4",
  gas: 40000,
  gasPrice: 22000000000 // Specified in Wei

我似乎有一种情况,我要么有太多的气体,要么没有足够的气体,没有合适数量的可能性。

 <   
 <     "jsonrpc": "2.0",
 <     "id": 2,
 <     "error": 
 <       "code": -32000,
 <       "message": "insufficient funds for gas * price + value"
 <     
 <   
Error encountered, bailing. Network state unknown. Review successful transactions manually.
Error: insufficient funds for gas * price + value

...或...

 <   
 <     "jsonrpc": "2.0",
 <     "id": 2,
 <     "error": 
 <       "code": -32000,
 <       "message": "exceeds block gas limit"
 <     
 <   
Error encountered, bailing. Network state unknown. Review successful transactions manually.
Error: exceeds block gas limit

当我在控制台中运行web3.eth.getBlock("latest") 时,我得到gasLimit: 5000。当我将 gas 设置为 5000 时,我收到资金不足的消息。当我将它设置为 5001 时,我得到“超过块气体限制”。

所以,这一切似乎都在告诉我,gasLimit 应该设置为 5000 或低于 5000,但在这种情况下,我没有足够的资金来运行交易。让我们看看...

我有:

气体:5000, gasPrice: 22000000000 // 在 Wei 中指定

5000 * 22000000000 = 1.1 * 10^14 = 110,000,000,000,000 魏 1.1 * 10^14 / 10 ^ 18(1 ETH 中的 Wei 数量)= 1.1*10^-4 ETH

这是我正在使用的帐户:https://etherscan.io/address/0x3984bc76cb775d7866d1cd55c4f49e3d13d411d4。如您所见,它有资金。准确地说,在撰写本文时为 0.01738465 以太币。

【问题讨论】:

应该移到 ethereum.stackexchange.com。 Gas limit 5000 似乎太低了,你试过像 100k 这样更高的值吗?除了主网络之外,您是否在其他网络上取得了成功? 【参考方案1】:

如果您在测试网络上,在testrpc,选项 -l 或 --gasLimit 可让您设置可用气体。

在 geth 上,这篇文章应该会有所帮助:https://ethereum.stackexchange.com/questions/13730/how-to-increase-gas-limit-in-block-using-geth

【讨论】:

【参考方案2】:

这在第二天随机开始工作。我注意到的一件事是,当我昨天在 truffle 控制台中运行 web3.eth.getBlock("latest") 时,我得到了 gasLimit: 5000,这比网络在其他地方报告的数字要低得多。今天我收到gasLimit: 6706583。我真的不确定是什么导致本地气体限制增加,但不管它是什么似乎都解决了这个问题。

【讨论】:

当你的以太坊节点(我使用 Geth)没有与区块链同步时,它会给出创世区块(区块 0)的 gasLimit。这有一个 5000 的气体限制,当然,这太低了,无法做任何事情。这可能是一种故障保护措施,可防止您在不同步时发送 tx。【参考方案3】:

我也遇到了类似的问题。我使用的松露版本是 Truffle v4.0.1(核心:4.0.1)。如果您降级到测试版,一切都会正常工作。

    npm 卸载 -g 松露 松露版本(检查是否已卸载) npm install -g truffle@beta

你可以走了。这应该可以解决问题。

【讨论】:

唉,没有【参考方案4】:

我遇到了同样的问题,这就是我的工作方式: 在 truffle 控制台中,找出最后一个块的气体限制。在 truffle.js 中使用该数字。就我而言,gas: 4700036 有效。

truffle(development)> web3.eth.getBlock('latest').gasLimit

4700036

【讨论】:

【参考方案5】:

增加 Truffle 中的气体限制。 which truffle 获取松露的位置 在代码编辑器中打开。 code /home/user/.nvm/versions/node/v8.11.1/bin/truffle 目前限制设置为 6721975 所以我只是搜索了这个数字 crtl+f 6721975 将其更改为 8000000 或其他任何值。 现在在truffle developweb3.eth.getBlock('latest') // 8000000

【讨论】:

以上是关于为松露设置气体的主要内容,如果未能解决你的问题,请参考以下文章

使用松露拆箱反应时出现松露拆箱错误

用fluent 中Vof求解瞬态可压缩气体冲击液面问题,进口为压力进口,出口为压力出口。

松露有啥作用

松露怎么做才好吃

案例29:气体灭火设施检测与验收案例分析

基于MicroPython的家庭可燃气体泄露微信报警器