在以太坊链上测试一笔交易,由于设置的Max priority fee 与 Max fee偏低(都是1.5Gwei),交易一直牌Pending状态,过去一天了,也没有被成功打包到链上,仍然是Pending状态,如下图所示:
MetaMask提供一种方法,可以取消这笔交易,按如下步骤操作:
1、开启 Customize transaction nonce 和 Advanced gas controls
(1) 点击”My Accounts“ 小图标 -> 选择Settings
(2)点击 Advanced
(3)下拉找到 Advanced gas controls, 将状态设置为开启
(4)继续下拉找到 Customize transaction nonce, 将状态设置为开启
2、发送一笔交易
(1)查看Pending交易的Nonce值, 如下图所示:
(2)发起一笔交易
自己给自己的地址转账一点ETH,点击 Next
(3)此时出现 CUSTOM NONCE 文本框,填写刚刚查看到的交易为Pending状态的Nonce值
(4)点击 EDIT,设置 gas,需要满足以下条件
- Gas Limit 要大于等于Pending交易中的gas limit
- Max priority fee 至少要提高为Pending交易中设置的Max priority fee 为10%(如,Pending为1.5, 至少为1.5 + 1.5 * 10% = 1.65)
- Max fee 至少要提高为Pending交易中设置的Max fee 为30%
(5)点击 Save, Confirm 提交
3、查看Pending中交易,状态已变为 Dropped & Replaced
原Pending的交易通过程序调用 eth_getTransactionReceipt 是查询不到的,在etherscan中能够看到,如下图所示: