以太坊交易拥堵?如何加速和取消交易?
阿牛哥 Lv4

以太坊的交易手续费居高不下,交易拥堵,如何加速和取消以太坊交易呢?

交易手续费的作用

从一个以太坊账户把ETH或者其他代币转到另一个账户是要付手续费的,这些手续费将作为给矿工的是奖励,用于支持以太坊网络的正常运行。

一般情况下,手续费越高,表示你愿意花更多的钱给矿工,当你提交交易给矿工后,它们就会优先处理你的交易。

所以交易手续费起到了调节到账时间的作用。如果你给的手续费太少,那么可能隔几天也到不了账。如果是在像uniswap这样的去中心化交易所,手续费给低了可能你的交易会失败,因为uniswap上的交易是有时间限制的。

对于一笔已经发送出去但是还没有被矿工执行的交易,我们是可以通过一些技巧来加速或者取消交易的。

如何加速交易

假如一笔交易因为手续费给的太低而迟迟没有被矿工执行,那么我们可以这样做:

查询之前交易的nonce值,重新发送一笔交易,将nonce设置成相同的值,并且设置更大的矿工费。

当矿工发现两笔相同nonce值的交易时,它们会优先选择矿工费更高的执行,从而实现加速交易的效果。

以MetaMask为例,先后先打开钱包,点击发送

输入收款人的以太坊钱包地址

来到如下界面

输入转账转账金额之后,MetaMask会自动根据网络情况计算出gas price和gas limit

点击高级选项

这里会显示出gas费和到账时间的关系。可以看到随着gas费的升高,网络确认的时间也在减少。当gas非为52Gwei时,确认时间大概在10秒左右。当你修改gas price时,MetaMask会显示估算的到账时间。

为了方便演示,我们这里故意设定一个极低的gas price,让该笔交易迟迟得不到确认。我们将gas price设定为5,然后点下一步

确认后,交易就算发送出去了。

在eherscan上可以看到当前交易的状态,显示确认需要至少17个小时。

现在我们来加速这笔交易

在etherscan上点击click to see more,点开之后就能查到该笔交易的nonce值,假设值是123。

回到MetaMask,重复之前的转账操作,再次设定转账的金额,同时要设置一个更高的gas费。

点击下一步之后,要设置custom nonce,将其设置为上一笔交易相同的值,也就是123。点击确认,等待上链即可。

这样,交易的加速就完成了。

如何取消交易

取消交易也是相同的操作。当你打算取消一笔交易的时候,也是要再提交一笔交易的,只不过转账金额要设置为0,同时gas price要高一点,custom nonce依然设置相同的值,这样该交易就能在前一笔之前被确认,前一笔也就作废了。

不管是加速还是取消都需要比之前的一笔付出更多的手续费,且在前一笔确认之前发送出去。