> txpool.inspect { pending: {}, queued: { 0xfd562359793b3c184586A9284070D4D53f376D62: { 3: "0xB98B752BB9A07896688734E4C99f33d5D5451234: 1000000000000000000 wei + 21000 gas × 1210000000 wei", 4: "contract creation: 0 wei + 2878738 gas × 1 wei", 5: "contract creation: 0 wei + 2973510 gas × 1 wei" } } }
经常出现这样的交易。不知道是什么原因,怎么排查?怎么清除?
txpool的处理流程 首先,如果不传入nonce值,那么geth节点会默认计算当前地址已经发起了的交易中最大的nonce值为多少,然后将其+1,然后将此交易放置在pending中,等待节点打包。
其次,如果传入的nonce值过大,在进入txpool中检查到它之前的nonce并没有使用过,那么此笔交易不会发送到pending中,而且放置在queued中。只有当前面的nonce补齐之后,才会进入到pending中. 所以很显然你构造交易的nonce值容易超前了,前面的nonce还未被使用,解决问题的方法 应该去调整你的nonce的维护