作者|Micah Zoltu
一个用户的故事
假如你是以太坊的新用户。你刚刚安装了Coinbase钱包并且提交了你的第一笔Uniswap交易。Coinbase钱包告诉你交易会在在几分钟内进行确认,需要你耐心地等待。然而几分钟过去了,却没有任何变化发生,这时候你一定认为是出现了错误。所以你关闭了所有程序并重新尝试,但是这样类似的问题又发生了,你的交易还是停留在等待状态。
沮丧之余,你认为一定是你使用的应用程序出了问题,所以你转到另一个以太坊应用程序,尝试发送交易。不幸的是,同样的问题再次发生了。然后你想到了一个很棒的主意,想通过给自己发送一些以太坊来测试问题是否出在Coinbase钱包上,但可惜这种方式也会卡住。
最后你已经到了穷途末路的时候,你决定去寻求帮助。首先你尝试联系Coinbase,但他们的支持响应时间相当长,所以你反而决定去你最初尝试使用的应用的Discord服务器。在描述你的问题并与工作人员分享你的以太坊地址后,他们向你解释你有六个待处理的交易,在第一笔交易通过之前,后续的几笔交易都不会提前通过。他们告诉你这是一个可以解决的问题,并询问你使用的是什么钱包。
当告诉工作人员你正在使用Coinbase钱包时,他们的回答是?,并很不幸的告诉你Coinbase钱包没有提供必要的工具来纠正这种情况。你唯一的选择是等待并希望gas prices下降,或者换成使用其他更高级的钱包,如MetaMask。这是你第一次听说 "gas prices",你问工作人员那是什么,这导致了长达10分钟的对话,但是最终你也没有真正明白。
然后你去安装MetaMask,它会询问你的助记词。工作人员告诉你把Coinbase钱包里的助记词放进去,但Coinbase钱包给了你非常明确的指示,永远不要把你的助记词给任何人!你的助记词是什么?你联系了你的信任网络,几个小时后能够验证MetaMask是合法的,把你的助记词放到MetaMask中是相当安全的,但你可能应该在这件事结束后创建一个新的钱包。
设置好MetaMask后,然后会告诉你给自己发送0个以太坊,并进入高级gas设置(这个名词你还是不太懂),设置为70。支持人员给你发了一个网站的链接,上面显示了一些每15秒左右就会变化的数字,他们告诉你在提交交易之前,将MetaMask中的gas prices设置为网站上的第一个数字。
你认真地按照这些指示去做,你的交易就成功了! 然后,您查看您的账户余额,看看是否一切正常,您发现您比您预期的少了不少以太坊,而且您还注意到,您想做的事情都没有实际发生。工作人员耐心地解释说,在清除堵塞后,你的所有其他交易紧接着都通过了。他们告诉你,每一笔失败的交易都花费了你损失了一些gas s(又是那个你不太理解的名词!),这就是为什么你的ETH余额下降的原因。
你被告知你的账户现在已经正常工作,你可以再次尝试你的交易,但显然你应该观察这个网站。无论你想做任何交易,你都应该将 "gas prices "先设置为与它所显示的数字相匹配。
仅仅是一次性问题?
不幸的是,以上是用户非常常见的情况,虽然很容易归咎于Coinbase,但几乎所有钱包的用户都会出现同一类问题,包括MetaMask等高级钱包。这个问题在日益拥堵的时候最为常见(当钱包估算出错误的gas prices时),不过在不拥堵的时候也会出现类似的问题,原因是gas prices估计软件中的漏洞。
一个圆满的结局
现在想象一下,如果我们生活在一个不需要预测未来以太坊区块空间需求的世界里。用户只需要设置自己愿意支付的最高额度就可以获得交易的收录,而不用担心支付过高的费用。比起让用户在等待交易时陷入无尽的绝望深渊,用户只需要表明自己愿意为纳入交易支付的最大金额,他们可以相信自己永远不会支付超过这个金额。这是一个不需要了解/预测gas prices的市场。
这就是EIP-1559所提供的。它使Coinbase Wallet可以可靠地确保其用户的所有交易都被纳入区块链,而不需要他们的客户支付过高的费用,也不需要为了准确估算费用而开发先进的交易和预测算法。
它使得MetaMask可以让用户指定他们愿意支付的最高费用,而不是让他们预测未来。
它使用户不再陷入需要专家才能摆脱的境地。
它让用户最终不会在过高的gas费上浪费大量的金钱。
它使得用户界面不再会因为一个简单的输入错误就平白无故的花费大量金钱。
出了什么问题?
在上面用户的故事中,Coinbase试图向用户隐瞒gas prices,因为这是一个非常复杂的话题,绝大多数用户都不理解。相反,他们会代替用户估算gas prices,大多数情况下这种效果不错。但是,当gas prices波动很大时,他们的算法有时会发生错误(不是他们的错),此时用户的交易就会陷入僵局。一旦交易受阻,它将阻止所有未来的交易,直到交易通过为止,不管这些未来交易的gas prices是多少。这就是导致用户通过试图自己解决问题,相反却将自己挖进了一个越来越深的洞。
不幸的是,一旦挖好了洞,就没有什么灵丹妙药可以让你脱身。你可以使用像MetaMask这样的自定义nonces的高级工具(假设你的钱包支持助记词)来清除这一笔交易,但这样一来,你的其他所有交易(很可能包括重复的交易、过期的交易等)都会泛滥成灾,无谓花费gas costs。相反,你可以按照相反的顺序去取消所有的交易,但这对终端用户来说是一个非常复杂的过程,需要一个专门的支持人员和你坐在一起10-15分钟来指导你完成整个过程。即使在这种情况下,你仍然会花费gas costs,只是比你在取消所有其他交易之前清理堵塞交易要花费的少。
过去的业绩不能保证未来的结果
这里的问题根源在于,gas prices的估算真的很难。有很多工具试图操控它,但终究是一个无法解决的问题,因为未来的gas prices是区块空间需求的函数,并且每时每刻都在变化。有些事件期间,人们可以预测需求的增加,比如ICO启动、新的热门项目启动、oracle价格feed更新等,但要跟踪所有这些几乎是不可能的。即使你跟踪了,也不可能对任何特定事件带来的需求量有强有力的保证。
最后,gas prices的估算者一般都是依靠历史数据,并在此基础上对未来的gas prices进行预测。这一方法在某些时候非常有效,但是在gas prices上涨或下跌的时候就行不通了。更糟糕的是,你总是要支付你预估时的全额gas price,即使你高估了油价! 这意味着大家都有强烈的愿望,试图低报油价,希望得到优惠。即使你不想低价,往往也希望至少不要多付一大笔钱,所以你会选择一个能让你快速列入区间的中间数。
解决的办法是什么呢?
EIP-1559。大多数人知道这个EIP是因为以太坊的供应减少,但在我看来,1559的真正价值在于以太坊可用性的提高。在以太坊包含EIP-1559的世界里,这一类问题几乎会完全消失。虽然让自己陷入这样的“窟窿”仍然有可能,但钱包帮助你从一开始就避免“窟窿”变得容易得多。
有了EIP-1559,Coinbase和其他钱包不需要以极高的准确度来猜测未来以太坊的需求,并在用户估算错误的情况下导致用户支付不必要的费用。而是可以加入一个能被大多数矿工接受的固定矿工贿赂(很可能是1纳币的量级),并将费用上限设置为当前基本费用加矿工贿赂的2倍。有了这些设置,用户的交易不会被包含在未来6个区块内的唯一方法是,如果未来6个区块对区块空间的需求比目前翻了一倍,那么所有的区块都会被包含!
EIP-1559的巨大胜利在这里是微妙的,人们经常会忽略它,但它是至关重要的。如果你高估了区块的基本费用,无论你高估了多少,你仍然只需要为你所包含的区块支付基本费用! 这意味着,如果你将费用上限设置为1000,矿工贿赂为1,但你被包含在一个基础费用为10的区块中,你将只支付11的汽油费。这与今天的以太坊形成了相当大的反差,如果你设置的汽油价格为1000,你将支付1000美元/gas,即使11也会让你被包含在区块中!
另一个可用性难题是,平均而言,区块将是半满的,这意味着几乎总是有空间用于支付基本费用的任何交易。因此在区块空间上几乎没有竞争,理论上即使是待定池也应该在大多数时间内是空的。
这意味着那些希望从终端用户那里提取gas prices钱包(这是一个勇敢的目标)可以做到这一点,而不必成为猜测汽油价格的专家(即使是最熟练的以太坊专家有时也会失败)。以太坊gas prices的这一相当小而微妙的变化,使得以太坊新用户最常见的挫折点之一几乎完全消失了。我们终于可以实现以太坊的梦想,在那里终端用户不需要担心或考虑gas prices。