为松露设置气体
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 develop
web3.eth.getBlock('latest') // 8000000
【讨论】:
以上是关于为松露设置气体的主要内容,如果未能解决你的问题,请参考以下文章