主页 > imtoken官网地址打不开 > [Ethereum] 解决大量Pending状态交易问题

[Ethereum] 解决大量Pending状态交易问题

imtoken官网地址打不开 2023-07-15 05:07:34

背景说明

以太坊钱包在一次创建多笔交易的过程中,有多笔交易处于pending状态。 这些交易已经广播到区块,但很长时间没有被矿工记录下来。 此外,还有多个交易已经创建以太坊每秒处理多少笔交易,尚未从本地节点广播。

使用环境

Geth 版本: 1.8.21-stable
系统版本:Centos 7.5
服务器配置:4核8G

以太坊每秒处理多少笔交易_sitesohu.com 以太坊交易查询_以太坊在中国交易合法吗

查询交易状态:

分析原因

通过观察分析,最早挂起状态交易的gasPrice设置远低于当前推荐值。 但是,我们并没有设置固定的 gasPrice,所以这个值是由节点自己设置的。 通过查阅相关资料发现,每个地址交易都有一个交易索引nonce,并且这个索引是不断增加的。 如果索引低的交易未被确认,那么后面创建的交易将一直处于待处理状态,直到之前的所有交易完成。 有记录的旷工。

怎么解决

找到原因后立即修改程序,将gasPrice设置为更合适的大小(10Gwei),代码如下:

以太坊每秒处理多少笔交易_sitesohu.com 以太坊交易查询_以太坊在中国交易合法吗

rpc.personal_sendTransaction({
  "from": from_addr,
  "to": to_addr,
  "value":  value,
  "gas":  "0x5208",

以太坊在中国交易合法吗_以太坊每秒处理多少笔交易_sitesohu.com 以太坊交易查询

"gasPrice": "0x2540be400" }, settings(:master_key))

但是,我们应该如何处理已经广播的交易呢? 因为以太坊有一个nonce字段以太坊每秒处理多少笔交易,我们可以直接创建一个新的交易,然后手动设置nonce值,避免创建两条相同的交易记录。 代码如下:

pending_tx = rpc.eth_getTransactionByHash(txid)

以太坊在中国交易合法吗_以太坊每秒处理多少笔交易_sitesohu.com 以太坊交易查询

gas_price = "0x2540be400" # 这里的值至少要比之前设定的值高10%,否则无法替换 rpc.personal_sendTransaction({ "from": pending_tx[:from], "to": pending_tx[:to], "value": pending_tx[:value],

以太坊每秒处理多少笔交易_sitesohu.com 以太坊交易查询_以太坊在中国交易合法吗

"nonce": pending_tx[:nonce], "gas": "0x5208", "gasPrice": gas_price }, settings(:master_key))

执行这段代码后,会生成一个新的交易ID。 在新交易被确认之前,旧交易仍会处于待处理状态,当新交易被确认时,旧交易也会消失。 这样,当我将所有交易替换为低gasPrice后,所有待处理的交易都被一一确认。

注意:后台描述中提到,还有一些未广播的交易,重启geth自动广播。