背景描述
以太坊钱包在一次创建多笔交易的过程中,出现了多笔pending
状态的交易,这些交易已广播到区块中,然而很长时间都未被旷工记录。另外还存在多笔已经创建的交易,未从本地节点广播出去。
使用环境
Geth 版本: 1.8.21-stable
系统版本:Centos 7.5
服务器配置:4核8G
查询交易状态:https://etherscan.io/
分析原因
通过观察分析,最早的一笔pending
状态交易设置的gasPrice
远远低于当前推荐值,然而我们并未设定固定的gasPrice
,所以这个值是由节点自己设定的。通过查阅相关资料,发现每一个地址的交易都有一个交易索引nonce
,这个索引是不断递增的,如果低索引的交易没有被确认,那么后面创建的交易也都会一直pending
,直到前面所有的交易都被旷工记录。
如何解决
找到原因后,立马修改程序,将gasPrice
设置成一个比较合适的大小(10Gwei),代码如下:
rpc