在参与DeFi的过程中,很多朋友会遇到这样的情况。明明看准了一个投资机会并发起交易,可交易却迟迟得不到确认,等到最后确认了,价格早已不是下单时的价格。要么买高了,要么卖低了,总之亏钱是跑不了的。
为什么交易迟迟不被确认
我们在《【钱包科普】什么是Gas?一文了解以太坊交易费》用“链上快递”为大家讲解过以太坊交易手续费,这个例子同样可以解释交易为什么得不到确认。
如果我们把每一笔交易看作一份快递,而以太坊矿工是快递员。快递员为了赚到更多的钱,会优先送快递单价更高的快递。如果你的快递单价给得太低,就只能一直排队,直到出价更高的快递全部完成后才能得到快递员的“青睐”。
同样地,以太坊网络同时会存在许多笔待确认的交易,矿工们会优先打包gasPrice高的交易。如果你设置的gasPrice太低,矿工自然会优先打包其他人的交易,而你的交易只能一直排队。
因此,如果你认为将要发起的交易比较紧急,那么尽量选择较高的gasPrice,避免出现交易长期等待打包的情况。至于如何设置gasPrice,请回看《【钱包科普】什么是Gas?一文了解以太坊交易费》。
当然,即使明白如何设置gasPrice,依然存在交易被堵的风险。比如出现在等待打包过程中交易数量突然暴涨,又或者一笔本来并不紧急的交易突然急需确认。
这时候急需一个方法,让我们可以根据自身需要和实际情况对这笔交易进行加速或者取消。
什么是交易被“堵”
我们所说的“交易被堵”指的不单指某笔交易迟迟得不到确认,而是根据以太坊网络的特性,排序在该笔交易之后的交易也都需要等待。
这种特性很好理解,如果把以太坊账户想象成一个车库,一旦车库的出口被某辆车堵住,后面的车也都无法通行。
与比特币采用的UTXO体系不同,以太坊网络使用的是account体系,也就是账户体系。
现实生活中绝大部分金融系统都是账户体系
我们先看看现实世界中的账户体系是如何运行的。假设张三、李四、王五在同一家银行开户,张三存入100元并发起两笔交易,先给李四转60元,再给王五转40元。
银行在处理每一笔交易时都会校验张三的账户状态:首先校验张三的余额是否大于等于60元,如果满足条件,将60元从张三的账户划转至李四的账户,首笔交易完成;再校验此时张三的余额是否大于等于40元,如果满足条件,将40元从张三的账户划转至王五的账户,第二笔交易完成。
如果第一笔交易迟迟没能完成,银行是不能执行第二笔交易的,因为银行无法保证第一笔交易完成之后张三的账户状态如何,余额是否足够完成第二笔交易。
同样的道理,以太坊网络在处理某个账户的交易时也需要获取账户的实时状态,以太坊账户的状态由四个部分组成:nonce、balance、storageRoot、codeHash。
nonce代表该账户地址发出的交易数量,balance代表此地址拥有的ETH数量(以Wei为单位)。其余的两个和今天的主题关系不大,暂时先忽略。
继续使用张三给李四、王五转账的例子。
张三开户后存入100元,此时张三的账户状态为nonce = 0,balance = 100;
第一笔交易完成之后,张三的账户状态为nonce = 1,balance = 40;
第二笔交易完成后,张三的账户状态为nonce = 2,balance = 0。
而在发送交易时,nonce成为交易信息的一部分,代表当前交易是该账户地址发出的第几笔交易。
需要注意的是,交易中包含的nonce值从0开始计起。比如张三发给李四的交易,作为张三账户地址发起的第一笔交易,其nonce值应该记为0,而张三发给王五的交易nonce值将被记为1。
矿工在处理某个账户地址的交易时,将根据nonce值的顺序进行处理,且不可跳过,即矿工必须先处理nonce值为0的交易,才可以打包nonce值为1的交易。
如果某笔交易迟迟未被确认,该账户发出的nonce值大于该笔交易的其余交易也都无法被打包。比如nonce等于2的交易未被确认,那么nonce等于3,4,5…的交易无论gasPrice给得多高,也只能乖乖排队等待。
图片来源于网络
如何摆脱交易被堵
尽管nonce的存在会导致以太坊交易被堵的情况,但我们同样可以利用nonce的特性来解决这个问题。
以太坊网络规定单个账户地址中每个nonce值都是唯一的,也就是说,一个账户中被确认交易的nonce值只会存在一笔为0、一笔为1、一笔为2…一笔为x,依此类推。
但仅存在一笔nonce为x的被确认交易不代表只能发起一笔,在没有nonce为x的交易被确认之前,我们可以发起无数笔nonce为x的交易。
运用该特性,我们可以加速或者取消某笔交易,完美解决交易被堵的问题。
前面提到过,一笔交易迟迟未被确认,主要是由于gasPrice给得太低,因此需要一直排队等待。
如果我们发送一笔nonce值相同,转账金额、收款方也完全相同,但gasPrice更高的交易,矿工会选择打包gasPrice较高的新交易,新交易确认后,原交易将由于nonce已被使用而失效。
上述操作的本质是用一笔完全相同但gasPrice更高的交易顶替原来那笔迟迟未能确认的交易,相当于对原交易进行加速。
而如果我们发送一笔nonce值相同,转账金额为0、收款方为自己,但gasPrice更高的交易,矿工会选择打包gasPrice较高的新交易,新交易确认后,原交易将由于nonce已被使用而失效。
在这个操作中,我们用一笔发送0 Wei给自己的交易顶替原交易,相当于取消了原交易。
不过值得注意的一点是,无论是加速交易还是取消交易,由于原交易已经消耗网络资源,因此原交易中的交易费将不会退回。在交易费如此高昂情况下,建议大家还是在发起交易时就选择合理的gasPrice,尽量一步到位,少花冤枉钱。
如何用ViaWallet加速/取消交易
ViaWallet已经上线以太坊交易加速/取消功能,当您在以太坊网络上的某笔交易迟迟得不到确认时,您可以针对该笔交易进行加速或者取消操作,削弱网络拥堵带来的负面影响。
交易加速
1. 打开以太坊钱包,找到打包中交易,若存在多笔打包中交易,则找到序号最低的一笔,点击【加速交易】
2. 点击【加速交易】后进入加速交易页面,点击底部【确认加速】
3. 在跳出的弹窗中点击【确定】并输入安全密码,确认进行交易加速
4. 交易加速完成后,交易列表内会出现两条交易记录:原交易转账失败,新交易转账成功
交易取消
1. 打开以太坊钱包,找到打包中交易,若存在多笔打包中交易,则找到序号最低的一笔,点击【取消交易】
2. 点击【取消交易】后进入取消交易页面,点击底部【取消加速】
3. 在跳出的弹窗中点击【确定】并输入安全密码,确认取消交易
4. 交易加速完成后,交易列表内会出现三条交易记录:原交易转账失败,新交易转账成功、新交易收款成功(取消交易本质上是自己给自己发一笔金额为0的交易)
币安买币后怎么划转到冷钱包?
金融动态
Decaf开发者:SOL漏洞非受信应用问题
金融动态
安全团队:超8000个Solana钱包被盗约
金融动态
火币钱包里的USDT怎么卖掉?火币钱包
金融动态
怎么转币到小狐狸钱包?
金融动态
比特币离线钱包怎么转账?比特币离线
金融动态
Trezor和Wasabi硬件钱包将实施Coin
金融动态
以太坊钱包Rainbow上线NFT隐藏功能
金融动态
火币2022交易
金融理财
Imtoken钱包最新版
金融理财
比特派钱包
金融理财
tp钱包app
金融理财
中本聪app最新版本安卓
金融理财
token.im 钱包
金融理财
im token官网钱包版
金融理财
比特派钱包官网版
金融理财
小狐狸钱包成立于2016年1月1日,目前已经发展了6年时间,支持的币种数量为8个,在全球数字货币钱包中能够排在前五
提起数字货币钱包,大家一定会想到小狐狸钱包,它在币圈中发展的很好,并且有许多投资者都是小狐狸钱包的忠实用户
对于币圈的投资者来讲,几乎有大部分都使用过币安交易所,币安交易所目前在全球数字货币交易平台排名榜排在第1
TP钱包英文名称为TokenPocket,是一个多链钱包,也是一个去中心化钱包,在2018年4月20日成立,发展至今已经有4年时
当投资者看到本篇文章的标题,应该会感到疑惑,首先,币安链是大家都比较熟悉的概念,也就是指的BinanceChain,Binanc
其实大家对于pancakeswap交易所不清楚是因为它的发行时间比较晚,知名度还没有提高。其实pancakeswap交易所还
时间:2022-09-12
时间:2022-09-12
时间:2022-09-12
时间:2022-09-12
时间:2022-09-12
时间:2022-09-12
时间:2022-09-12
时间:2022-09-12
时间:2022-09-12
时间:2022-09-12