ICE:解读以太坊黄皮书(三):Gas与交易手续费背后的经济机制_RICE

前文阅读:

解读以太坊黄皮书解读以太坊黄皮书

又是激动人心的一刻,我们再次推出关于以太坊黄皮书的博文了!在这篇文章中,我们会学到更多关于Gas和支付的以太坊相关知识,了解以太坊背后的经济学理论,以及解释为什么手续费在以太坊生态系中如此重要。

读完这篇博文,你就会知道为什么交易成本被称为Gas,明白gasPrice与gasLimit之间的区别,也能了解矿工节点选择待打包交易的策略。

本文是以太坊解析系列的第三篇文章。

介绍

我刚开始学习以太坊时,最先碰到的困惑就和交易手续费有关。我的疑惑是,“如果我可以免费获得与Dapp相同的服务,为什么还要花钱用Dapp?”——很快地,我就意识到自己很傻很天真。

计算是有成本的——我不是指花在购买笔记本和平板电脑上的开销,而是指运行虚拟机、数据存储、信息处理等等服务的成本。今时今日,我们都非常习惯免费的服务,却常常忘了一个关键点:有人在为这些服务买单!你正在免费使用的Gmail或Yahoo邮箱,如果要使整个服务保持正常运行,邮件提供商就要为服务器、数据存储,及基础设施买单。如果你有Facebook或Instagram账号,那你肯定知道,在云端处理、安全存储你所上传的照片都需要成本。所以现在的免费服务和Dapp的付费服务,唯一的区别只是买单的人的不同。

律师观点:Ripple此番回应将让SEC诉讼成为一场“赢家通吃”的游戏:美国Hogan & Hogan律所的Jeremy Hogan在YouTube视频中评论了Ripple对于美SEC诉讼作出的回应,他认为这使得这场诉讼成为了一场“赢家通吃(winner takes all)”的游戏。正如他指出的那样,Ripple希望能迅速做出决定,这就是他们没有提出驳回动议的原因。这通常是Ripple在其他诉讼中所采取的做法——“只是作为一种麻烦或拖延战术”。然而,在美国SEC的诉讼中,Ripple为了尽快得到裁决而放弃了这一战术。

Hogan还特别强调了回应中的两种策略,称其“非常出色”。首先,Ripple根据联邦阳光法(Federal Sunshine Law)提交了一项动议,以获得SEC关于以太坊非证券分类的非正式意见。根据Hogan的说法,这绝不是“孤注一掷”。此外,他还提到了回应中的“积极抗辩”。SEC在其诉讼中避免寻求宣告性判决XRP是一种证券,而只寻求“影响受托管XRP的损害赔偿和补救措施”。然而,Ripple却试图用这种积极抗辩来做恰恰相反的事情。这使得这场诉讼成为了一场“赢家通吃”的游戏。(Crypto News Flash)[2021/1/30 18:28:02]

现在,我们将以太坊网络试想成一部巨大的计算机,能够实现运算及读写数据。这与放在你自己家里的计算机不同,这部巨型计算机由所有人所共有,只要有以太坊账户,任何人都能与整个平台进行交互,像是转移以太币、部署智能合约等等。但囿于分布式系统的原生限制,“谁来为这些服务买单”的问题就比较难回答了。

观点:交易所鲸鱼比率指数显示BTC价格将继续上涨:CoinDesk发文称,区块链数据公司CryptoQuant报告称,交易所鲸鱼比率(exchange whale ratio)目前低于90%,90%的水平预示着巨大的价格下跌可能迫在眉睫。该比率目前在85%左右,在这一水平比特币价格继续上涨的可能性很高。据悉,该指数是用交易所中最大的10笔存款的价值除以存款总额来计算的。[2020/11/21 21:32:44]

Gas

Gas是以太坊中所有计算量的计价单位,以太坊正是使用Gas来解决“谁为服务买单”的问题。你想要转账给另一个以太坊账户吗?你想要部署智能合约来存储手机通讯录吗?没问题,请先支付Gas。

这很容易让人联想到,汽车和燃油的关系:如果你想从A地开车到B地,一定要耗费部分燃油;同理,如果你想要在以太坊EVM上执行某些运算,也要支付Gas。车想要开得越远,则需要越多燃油;想要在以太坊上进行越多计算,则要支付越多Gas。

我们可以在以太坊黄皮书的附录G,找到每一种EVM运算对应所需要消耗的Gas数量;这些数值看起来很随意,但其实背后是有道理的。一般来讲,这些数值反映了执行运算的成本,和占用的永久存储器资源。如果想要了解更详细的Gas成本计算公式,可以查阅“以太坊1.0Gas成本表”。我不太确定它与最新采用的Gas消耗量是否一致,但至少能让你对操作码的Gas耗用量制定原则更有概念。

观点:尽管减半后价格下跌,但比特币仍是最赚钱的产业:尽管经历了减半,但比特币的哈希率仍然相当高,网络健康程度也接近最大值。与BCH和BSV相比,比特币目前控制着总哈希率的97%以上,这是非常令人印象深刻的。数据追踪器Coin.Dance表示,尽管奖励减半后价格下跌,但比特币仍然是最赚钱的产业。(nulltx)[2020/5/13]

从另一个角度来说,以太坊采取使用者付费的模式,能够避免资源的滥用。一旦你必须为每种运算支付费用,你就会尽可能的将代码写得简洁高效;Gas的存在还能阻止攻击者通过无效运算,对以太坊网路进行泛洪攻击。

gasPrice和gasLimit

现在我们明白了Gas,是时候谈谈Gas究竟要如何定价;先让我们回到汽车和燃油的例子。

如果你的车子油箱容量为50升,装满这个油箱你要支付多少钱?这取决于加油站每升的油价对吧?以太坊中Gas的定价也是一样的!如果你要执行的交易需要耗费10Gas,则你要支付的费用取决于每单位Gas的价格。

那我们怎么知道每单位Gas的价格是多少呢?有种误导性的说法是:自己爱定多少就定多少。虽然从技术角度来讲没有错,但要具体知道Gas的定价,我们需要更多知识作为铺垫。

观点:自印度加密禁令解除以来当地加密货币交易量不断增长:自印度最高法院撤销印度央行加密禁令以来,当地交易所活动逐渐升温。CoinSwitch创始人兼首席执行官Ashish Singhal表示:由于最高法院的裁决提供了透明度,面向印度客户的交易所交易量大幅增加。加密银行服务平台Cashaa India注意到,在该决定公布后的48小时内,其平台交易量飙升了800%。Cashaa首席执行官Kumar Gaurav亦表示:在最初的24小时内,我方平台的交易量达到了600多BTC。

3月24日,印度开始实行封禁以对抗新冠病疫情,但传统市场的抛售和封禁并未阻止印度民众涉足加密货币。Titus Investment Advisors首席执行官和比特币交易员Justin Gillespie表示,有一种理论认为,人们不能外出交易的时间越长,BTC就应该变得越有用,因为“它可以在家里安全收发”。(CoinDesk)[2020/4/9]

如果你读过以太坊解析系列的上一篇文章,应该记得以太坊交易结构中,除了其他部分,还包含了?gasPrice?和?gasLimit。

gasPrice?表示交易发送方对每单位?Gas?愿意支付的价格,这意味着交易发送方可以自定义愿意支付的每单位Gas价格。假设一笔交易需要耗费10Gas,而我们愿意支付3Wei/Gas,则发送这笔交易的成本总价就是30Wei。

海银资本王煜全:关于比特币和区块链的四个“新观点”:著名投资人海银资本创始人王煜全在周末的《得到》前哨科技的专栏,提到了他关于比特币和区块链的新观点,他表示:第一:区块链的革命性确实很大;第二:区块链的普及性其实很小;第三:区块链的创业机会其实很小;第四:区块链的创业者现在看起来是充满浮躁的。[2018/3/6]

gasLimit表示交易发送方最多能接受多少Gas被用于执行此交易。因为有时候,你无法确切知道执行一笔交易要耗费多少Gas;又或是你的智能合约中,有永远跳不出的死循环bug,假如没有gasLimit,这会导致发送方的账户余额被误消耗殆尽。gasLimit就是一种安全机制,防止有人因为错误估算或bug而把账户中所有以太币消耗掉。

另一个有趣的点是,gasLimit可以被视为预付的Gas。当节点在验证交易时,先将gasPrice乘gasLimit算出交易的固定成本。如果交易发送方的账户余额小于交易固定成本,则该交易视为无效。交易执行完之后,剩余的Gas会退回至发送方账户;当然,如果交易执行中Gas耗尽,则不会退回任何东西。这也能解释为什么交易发送方总是将gasLimit设得高于预估的Gas量。

搞清楚这两个参数的意思之后,你可能会想问:“为什么是交易发送方自行决定每单位Gas的价格”。如果你跑去最近的加油站告诉收银员,“每升油我就愿意支付5分钱”;好一点的收银员可能就一笑而过,而理智的收银员可能会报警。所以想要了解设计机制,你需要知道矿工节点的工作以及手续费是什么。

矿工

区块是包含一组交易集合的数据结构,而以太坊中的矿工节点负责创建链上的区块。创建区块的时候,矿工会从交易缓存池中选择交易并开始出块。

我现在不展开以太坊挖矿算法的细节,大家只需要记住挖矿是个昂贵的过程,所以如果挖矿没有回报,那肯定没有矿工愿意干!

在以太坊中,每当矿工成功创建一个区块,就能获得定额的出块奖励及引用叔块的奖励,同时还能获得包含在这个区块中的所有交易的手续费;所以交易中的gasPrice设置得越高,矿工就能得到越多交易手续费。如果你想要知道关于矿工奖励的更多信息,请参考此处。

我们假设一个简单的场景。Bob的账户里有200wei,John的账户里有100wei,他俩都想要发送一笔需要耗用90Gas的交易。

Bob设置gasLimit=100,gasPrice=2;John想将gasLimit设为200,但不幸的是他只有100wei,这样设置会使得交易固定成本高于账户余额;所以John最终设gasLimit=100,gasPrice=1。

当进入选择交易打包进块的环节时,矿工倾向选择手续费更高的交易。在我们的例子中,Bob的gasPrice比John的高两倍;因为两笔交易都需要90Gas,所以矿工选择Bob的交易能获得两倍的手续费奖励。

-矿工会选择gasPrice最高的交易-

由交易发送方付费来奖励矿工的机制,在以太坊中形成一种能自我调节的经济体系。交易发送方千方百计想要降低交易成本,而矿工总是希望收益最大化,两者形成一种平衡。作为交易发送方,如果你把gasPrice设得越高,意味着矿工越有动力打包你的交易,则你的交易能越早被装进区块。

有的矿工甚至会设置自己的gasPrice下限,直接忽略那些gasPrice小于下限的交易。

当发送交易时,我们很难知道当前有效的最小gasPrice是多少。这些工具能够扫描整个以太坊网络,算出当前其他交易的gasPrice均值,帮助发送方选择能被矿工接受的合理gasPrice。

结论

从本文中,我们学到了就像汽车消耗燃油一样,执行以太坊交易需要消耗Gas。希望本文能让大家了解计算需要成本,以及为什么我们需要付费才能获得以太坊的服务。

我们还探讨了gasPrice和gasLimit的重要性;如果智能合约出现bug或估算错误,gasPrice能保护使用者避免平白损失以太币。

再者,我们还研究了交易手续费背后的经济机制,以及矿工如何选择交易以达到收益最大化。现在我们知道如何调整gasPrice,让自己发出的交易更吸引矿工,从而使得交易被更早打包。

下一篇博文我们会讨论交易执行模型,这也是以太坊黄皮书中最复杂的部分所以我可能会将这部分内容拆分成数篇文章。请持续关注!

目前的系列文章大家还喜欢吗?我很期待听到你们的想法。如果你发现文中任何错误或是值得改进的地方,请如往常在评论中告诉我,我总是喜欢收到反馈:)

下期见!

原文链接:?https://www.lucassaldanha.com/ethereum-yellow-paper-walkthrough-3-7-gas-and-payment/作者:?LucasSaldanha翻译&校对:?IANLIU&阿剑

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

区块博客

[0:15ms0-2:713ms