LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 264.6万美元!探寻天价ETH手续费背后的安全问题

264.6万美元!探寻天价ETH手续费背后的安全问题

2020-08-06 TokenPocket 来源:区块链网络

近期,以太坊上接连出现了三笔手续费用异常的交易,引发热议。这3笔交易的金额都不大,但是设置的手续费却高得离谱,最高的交易手续费用竟然高达264.6万美元!今天,我们就从这些异常交易入手,分析并解答以太坊交易手续费的相关问题。

手续费为何存在?为了给予节点和矿工足够的补偿和激励,同时也为了阻止大量的微量、垃圾交易,用户在进行以太坊上交易时必须支付一定的手续费用,否则将无法完成交易操作。

手续费是如何计算的

以太坊上的手续费又称为Gas,燃气,即交易中消耗的资源的代名词。通过查看以太坊浏览器Etherscan(https://cn.etherscan.com/)上面显示的交易记录,你会看到Gas Limit、Gas Used by Transaction和Gas Price,即与手续费相关的专用名词。Gas Limit、Gas Used by Transaction和Gas Price则分别为这笔交易中可消耗资源量的最大值、实际消耗资源量以及资源的单价。

Gas Limit代表了交易可以使用的资源上限,是为了防止合约漏洞或者恶意程序导致用户Gas量消耗过高的情况出现。一旦消耗的Gas量超过Gas Limit,矿工就会停止执行程序,做到及时止损。Gas Limit可以看成是一道保险,实际Gas消耗超过设定的上限就会终止交易,实际消耗Gas量低于上限,多余的Gas也会退回来。交易中的实际消耗资源量Gas Used by Transaction一般与交易合约中的设定有关。

Gas Price的常用单位为Gwei,Gwei与ETH的换算关系为1ETH=10^9Gwei,即1ETH=10亿Gwei。一般来说,Gas Price的值会很小,而Gwei的设定就是为了方便表示微量的ETH,比如我们在转账是设置Gas Price为0.000000012 ETH,用Gwei为单位表示为12Gwei,很明显是后者表达得更为简单和直观。

根据图中描述,我们可以发现,转账的手续费只与Gas Used by Transaction和Gas Price有关。交易手续费的计算公式如下:交易手续费Fee =实际消耗资源量 Gas Used by Transaction*资源单价Gas Price。为了方便理解,我们举一个简单的例子:假设你需要寄一个包裹,当地的快递公司是按包裹重量收费,邮寄费用=包裹重量*每公斤邮费,即包裹越重,邮费越高。你可以发现,两者进行对比之后,这些名词都是一一对应的。包裹对应交易数额,邮费对应手续费,包裹重量对应使用资源量,每公斤邮费对应资源单价。

那么我们再把这个例子延伸一下,就可以得到更多的结论。比如这个快递公司其实有陆运和空运两种业务,业务的单价是空运比陆运贵,相应的空运也会比陆运快很多。同样地,在以太坊上进行交易的时候,如果你设置的资源单价Gas Price比较高,那么矿工会倾向于优先打包你的交易,交易的确认速度自然也会快。

手续费应该如何设置

一般来说,用户在进行转账的时候需要设置的参数就只有两个:Gas Limit和Gas Price。Gas Limit可以通过代码算出,Gas Price的取值以及交易速度则需要视当前网络情况而定。参数计算方面大家不用担心,如今市面上主流的钱包APP都会帮忙计算并给出推荐值。

在Token Pocket钱包(简称为TP钱包)进行转账操作时,TP钱包会根据目前网络情况给出慢、推荐和**档选项,对应的手续费用和预估的交易确认时间也很直观地罗列了出来,用户可以根据自身对交易快慢的需求选择合适的档位。这样的转账系统相当人性化,三档设置分配合理,大体上覆盖了用户转账的速度需求,增加用户体验感的同时也有效降低了手动输入带来的风险。

当然,如果用户需要修改Gas Limit或者设置更高的Gas Price,只需点击自定义,就可以自己设置Gas Limit和Gas Price,对应的手续费用及预估时间也会即时显示来为用户提供参考,可以说是相当方便了!

天价手续费事件分析

我们再来回顾一下这些天价手续费的异常交易,同样还是以第一笔异常交易为例,从Etherscan上查到的交易记录来看,这笔交易的金额只有0.55ETH(约136.4美元),但是手续费竟然高达10668.73ETH,按照交易时的市价,折合约264.6万美元!按照快递的例子来说,我们寄一件价值1000元左右的包裹,邮费竟然花了1800多万!这明显是极不合理的。

造成这起事件的原因就在于过高的Gas Price,这笔交易里的Gas Price为0.50803485 Ether,也就是大约5亿Gwei。难道是大佬手抖输错了?但是第二天,同样的地址,同样的天价手续费交易再度发生,这样基本就推翻了手抖输错的推测。其实冷静想想,人为手抖输错的情况几乎不可能发生。如果是人为转账,自定义Gas Price过高,现在的主流钱包会阻止此类交易。

以Token Pocket钱包为例,当我设置Gas Price为1亿Gwei时,会弹出提醒窗口,提示我Gas Price太高,并给出合理的Gwei数量建议。除此之外,网络上有人对该地址进行溯源追踪时发现,与该地址产生交易的都是一些小额地址,而且和该地址发生交互后都被清空了。根据这些情报来看,该地址主人存在洗钱或者被黑客勒索的可能。

我们来逐一分析,第一种猜测是洗钱。在进行洗钱之前,该地址的拥有人需要提前与矿池联系好,然后在交易时故意设置高额的手续费,等矿池打包该交易获得高额手续费后再声称这次交易是失误导致的,要求矿池退还大部分的手续费。这样一套流程运作下来,矿池获得一部分手续费的回报,该地址的拥有者也成功将钱洗干净。笔者认为出现这种情况的可能性很小。首先是这么高调的行为就不符合暗地里洗钱的逻辑;其次交易打包的分配也具有不确定性,与众多高算力的矿池联合作恶的概率相当小。第二种猜测是黑客勒索。以太坊创始人V神也就这方面发表了他的看法:假设发送地址属于加密货币交易所,黑客获取了交换密钥的部分访问权。由于他们没有完整的密钥,所以不能撤回,但是可以以任何Gas价格发送无效的交易。按照这个逻辑来看,黑客通过高额交易费来威胁交易所,如果不给赎金,地址里的资金就会因为高额的交易手续费而全部被消耗掉。当然以上都是基于情报的合理猜测,真实情况和原因不得而知。

V神的解决方案

对于近期以太坊上出现的天价转账手续费问题,V神也提出了他的解决方案——EIP 1559提案。EIP 1559是一个社区提案,旨在通过网络需求调整基本网络费用从而改变当前收费模式,减少用户手动输入费用的场景。这种能减少手动输入费用的提案可以有效减少此类异常情况再度发生的可能性。作为普通用户,我们可以使用类似TokenPocket这样的主流钱包,这些功能成熟且操作方便的钱包,即使是对区块链初学者也十分友好,是保障我们财产安全的守护神。

以太坊系列知识科普专题是由TokenPocket发起的有深度、有态度的大型科普性内容专题,旨在科学系统地普及区块链及数字货币、数字钱包等相关知识。TokenPocket是全球领先的数字货币钱包,已为数百万用户提供可信赖的数字货币资产管理服务。专题文章由钱包社区优秀志愿者TP侠撰写投稿,文章版权归作者及TokenPocket所有,转载请注明出处。


—-

编译者/作者:TokenPocket

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...