10

我一直在运行一个本地 Rinkeby 节点(为了使用 websocket 事件),它工作了一段时间,但突然我收到“返回错误:替换交易价格过低”。我发送的是平均汽油价格的 10 倍,但我仍然收到此错误。这是我的计算:

gwei = 1000000000
gas = 47000
gasPrice = gwei * 20

只有当我将 gas 价格提高到 (gwei * 2000) 时,我才能进行交易 (0.9 ether)。这导致我很快用完以太,使开发变得非常困难。

示例交易:

{
  "nonce": "0x23",
  "chainId": 4,
  "to": "0xB92427792629A23E0b2deE37b3F92Ce4D4cB794c",
  "value": 0,
  "gas": "0xb798",
  "gasPrice": "0x4a817c800",
  "data": "0xce07c1787465737400000000000000000000000000000000000000000000000000000000"
}

任何帮助都非常感谢!

Geth Rinkeby 命令:

geth --rpccorsdomain="*" --rinkeby --ws --wsport=8546 --wsorigins="*" --datadir=$HOME/.rinkeby --cache=512 --rpc --rpcapi="personal,eth,network,net,web3,db"  --rpcport=8545 --fast --bootnodes=enode://a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4aab0cebea2ae45cb4d375b77eab56516d34bfbd3c1a833fc51296ff084b770b94fb9028c4d25ccf@52.169.42.101:30303
4

2 回答 2

19

摘要:删除nonce字段

此答案假定您要发出新交易,而不是替换待处理的交易。

错误是什么意思?

“返回错误:替换交易价格过低”

该错误意味着:

  1. 您在以太坊客户端中的帐户中有一笔待处理的交易
  2. 您发送的新交易与待处理交易具有相同的随机数
  3. 您发送的新交易的 gas 价格太小,无法替换待处理的交易

使用geth,替换交易的 gas 价格必须大于挂起交易的 gas 价格的10%。*

我假设您要发出新交易,而不是替换现有的待处理交易。nonce您可以通过删除字段来解决问题。你的以太坊客户端会自动为你管理 nonce。

* 此更换价格未在协议中指定。不同的客户(最重要的是矿工)可能会应用不同的替换规则。

我还有另一个原因需要指定 nonce 字段

然后在每次发出新交易时将其加一。这将无法与连接到您的以太坊客户端的其他进程一起使用,并尝试替换它们。

于 2017-09-21T18:38:08.077 回答
0

尝试增加“gasPrice”。例如:web3.toWei('25','gwei')

:)

于 2022-01-08T12:36:09.323 回答