首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有低gasPrice的事务会使所有其他事务挂起挂起状态。

具有低gasPrice的事务会使所有其他事务挂起挂起状态。
EN

Ethereum用户
提问于 2018-03-07 12:24:26
回答 2查看 1.5K关注 0票数 3

我有一个小型的专用网络,它有一个通过geth-clique使用Geth Version: 1.8.3-unstable创建的授权证明引擎,目前有三个签名节点和另外两个非签名节点(让我们称它们为peer-Apeer-B)。peer-Apeer-B连接到三个签名节点。

首先,我在peer-A上发送了一个gasPrice非常低的事务,比如200,如下所示。

代码语言:javascript
复制
eth.sendTransaction({from:eth.accounts[0], to:eth.accounts[1], value: web3.toWei(0,0000, "ether"), gasPrice: 200})

稍后,当我在peer-A上发送更多事务时,即使使用更大的gasPrice,所有这些事务都将保持挂起状态。据我所知,提交的事务作为FIFO队列工作,而我即将到来的事务被卡住了,因为第一个发送事务(带有非常低的gasPrice )锁定了其他事务。

示例:(第一个peer-Apeer-B发送了一个gasPrice较低的Tx,后来又发送了一个gasPrice较高的Tx,并将其挂起状态。)

我已经通过清除peer-A上的D17来解决这种情况,这也清除了所有挂起的事务:rm -rf private/geth,稍后我用更大的gasPrice发送事务。我想这是一个效率很低的解决方案,因为网络有一个很大的链。

所以所有发送的事务都是作为FIFO队列提供的?他们为什么不选择gasPrice最高的标准呢?

请注意,我已经尝试过:

代码语言:javascript
复制
eth.resend(eth.pendingTransactions[0], web3.toWei(1000, 'gwei'))

但面临以下错误:

Error: intrinsic gas too lowError: replacement transaction underpriced error.

<#>如何解决这个问题,如何在具有低gasPrice的系统上删除挂起的事务,或者拒绝它们,或者更新它们的gasPrice值并对它们进行resend()

Github杂志:https://github.com/ethereum/go-ethereum/issues/16284

EN

回答 2

Ethereum用户

回答已采纳

发布于 2018-03-09 06:31:37

Péter Szilágyi关于(https://github.com/ethereum/go-ethereum/issues/16284)的回答帮助我解决了这个问题。

在以太的每一个帐户和交易都有一个现在。在任何给定的时间,只有具有正确的nonce的事务才能被执行。如果您提交的交易具有较低的天然气价格,这将阻止所有后续事务,因为它们不能立即执行,只有下一个事务是可执行的。您不需要清除链数据文件夹,挂起的事务不会存储在那里。有一个保存本地事务的transactions.rlp文件。

我使用带有两个参数的eth.resend()

=>添加gasLimit作为第三个参数解决了这个问题,例如:

代码语言:javascript
复制
eth.resend(eth.pendingTransactions[0], web3.toWei(20, 'gwei'), 2000000)

=>或停止节点,删除transactions.rlp文件(rm ~/examplePOA/private/geth/transactions.rlp)并重新启动。

票数 5
EN

Ethereum用户

发布于 2018-03-07 12:31:51

一个更简单的解决方案(与重发链相比)是发送一个替换事务,

  • 拥有与挂起的低瓦斯交易相同的帐户(更多信息这里)。
  • 提供更高的汽油价格

有关当前单例的更通用问题的有效算法,请参见这个问题及其答案。

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

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

复制
相关文章

相似问题

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