【推荐】解读以太坊黄皮书(三)
又是激动人心的一刻,我们再次推出关于以太坊黄皮书的博文了!在这篇文章中,我们会学到更多关于Gas 和支付的以太坊相关知识,了解以太坊背后的经济学理论,以及解释为什么手续费在以太坊生态系中如此重要。
读完这篇博文,你就会知道为什么交易成本被称为 Gas,明白 gasPrice 与 gasLimit 之间的区别,也能了解矿工节点选择待打包交易的策略。(此篇博文参考以太坊黄皮书第 5 章)
本文是以太坊解析系列的第三篇文章。
介绍
我刚开始学习以太坊时,最先碰到的困惑就和交易手续费有关。我的疑惑是,“如果我可以免费获得与 Dapp 相同的服务,为什么还要花钱用 Dapp?”——很快地,我就意识到自己很傻很天真。
计算是有成本的——我不是指花在购买笔记本和平板电脑上的开销,而是指运行虚拟机、数据存储、信息处理等等服务的成本。今时今日,我们都非常习惯免费的服务,却常常忘了一个关键点:有人在为这些服务买单!你正在免费使用的 Gmail 或 Yahoo 邮箱,如果要使整个服务保持正常运行,邮件提供商就要为服务器、数据存储,及基础设施买单。如果你有 Facebook 或 Instagram 账号,那你肯定知道,在云端处理、安全存储你所上传的照片都需要成本。所以现在的免费服务和 Dapp 的付费服务,唯一的区别只是买单的人的不同(免费服务不由你直接买单罢了)。
现在,我们将以太坊网络试想成一部巨大的计算机,能够实现运算及读写数据。这与放在你自己家里的计算机不同,这部巨型计算机(以太坊)由所有人所共有,只要有以太坊账户,任何人都能与整个平台进行交互,像是转移以太币、部署智能合约等等。但囿于分布式系统的原生限制,“谁来为这些服务买单”的问题就比较难回答了。
Gas
Gas 是以太坊中所有计算量的计价单位,以太坊正是使用 Gas 来解决 “谁为服务买单” 的问题。你想要转账给另一个以太坊账户吗?你想要部署智能合约来存储手机通讯录吗?没问题,请先支付 Gas 。
这很容易让人联想到,汽车和燃油的关系:如果你想从 A 地开车到 B 地,一定要耗费部分燃油;同理,如果你想要在以太坊 EVM 上执行某些运算,也要支付 Gas。车想要开得越远,则需要越多燃油;想要在以太坊上进行越多计算,则要支付越多 Gas。
我们可以在以太坊黄皮书的附录 G,找到每一种 EVM 运算对应所需要消耗的 Gas 数量;这些数值看起来很随意,但其实背后是有道理的。一般来讲,这些数值反映了执行运算的成本(按时间维度度量),和占用的永久存储器资源(当写入数据的时候)。如果想要了解更详细的 Gas 成本计算公式,可以查阅 “以太坊 1.0 Gas 成本表”。我不太确定它与最新采用的 Gas 消耗量是否一致,但至少能让你对操作码的 Gas 耗用量制定原则更有概念。
从另一个角度来说,以太坊采取使用者付费的模式,能够避免资源的滥用。一旦你必须为每种运算支付费用,你就会尽可能的将代码写得简洁高效;Gas 的存在还能阻止攻击者通过无效运算,对以太坊网路进行泛洪(Flooding)攻击。(除非攻击者愿意支付一大笔钱来执行无效运算)
gasPrice 和 gasLimit
现在我们明白了 Gas,是时候谈谈 Gas 究竟要如何定价;先让我们回到汽车和燃油的例子。
如果你的车子油箱容量为 50 升,装满这个油箱你要支付多少钱?这取决于加油站每升的油价对吧?以太坊中 Gas 的定价也是一样的!如果你要执行的交易需要耗费 10 Gas,则你要支付的费用取决于每单位 Gas 的价格。
那我们怎么知道每单位 Gas 的价格是多少呢?有种误导性的说法是:自己爱定多少就定多少。虽然从技术角度来讲没有错,但要具体知道 Gas 的定价,我们需要更多知识作为铺垫。
如果你读过以太坊解析系列的上一篇文章,应该记得以太坊交易结构中,除了其他部分,还包含了 gasPrice 和 gasLimit。
gasPrice 表示交易发送方对每单位 Gas 愿意支付的价格(以 Wei 计量),这意味着交易发送方可以自定义愿意支付的每单位 Gas 价格。假设一笔交易需要耗费 10 Gas,而我们愿意支付 3 Wei/Gas ,则发送这笔交易的成本总价就是 30 Wei(非实际数值,只是便于大家理解怎么计算的)。
gasLimit表示交易发送方最多能接受多少 Gas 被用于执行此交易。因为有时候,你无法确切知道执行一笔交易要耗费多少 Gas;又或是你的智能合约中,有永远跳不出的死循环 bug,假如没有 gasLimit,这会导致发送方的账户余额被误消耗殆尽。 gasLimit 就是一种安全机制,防止有人因为错误估算或 bug 而把账户中所有以太币消耗掉。
另一个有趣的点是,gasLimit 可以被视为预付的 Gas。当节点在验证交易时,先将 gasPrice 乘 gasLimit 算出交易的固定成本。如果交易发送方的账户余额小于交易固定成本,则该交易视为无效。交易执行完之后,剩余的 Gas 会退回至发送方账户;当然,如果交易执行中 Gas 耗尽,则不会退回任何东西。这也能解释为什么交易发送方总是将 gasLimit 设得高于预估的 Gas 量。
搞清楚这两个参数的意思之后,你可能会想问:“为什么是交易发送方自行决定每单位 Gas 的价格”。如果你跑去最近的加油站告诉收银员,“每升油我就愿意支付 5 分钱”;好一点的收银员可能就一笑而过,而理智的收银员可能会报警。所以想要了解设计机制,你需要知道矿工节点的工作以及手续费是什么。
矿工
区块是包含一组交易集合的数据结构,而以太坊中的矿工节点负责创建链上的区块。创建区块的时候,矿工会从交易缓存池(等待打包的交易堆)中选择交易并开始出块。
我现在不展开以太坊挖矿算法的细节(也许后续文章会讨论),大家只需要记住挖矿是个昂贵的过程,所以如果挖矿没有回报,那肯定没有矿工愿意干!
在以太坊中,每当矿工成功创建一个区块,就能获得定额的出块奖励及引用叔块的奖励(不在此展开),同时还能获得包含在这个区块中的所有交易的手续费;所以交易中的 gasPrice 设置得越高,矿工就能得到越多交易手续费。如果你想要知道关于矿工奖励的更多信息,请参考此处。
我们假设一个简单的场景。Bob 的账户里有 200 wei,John 的账户里有 100 wei,他俩都想要发送一笔需要耗用 90 Gas 的交易。
Bob 设置 gasLimit = 100,gasPrice = 2;John想将 gasLimit 设为 200,但不幸的是他只有 100 wei,这样设置会使得交易固定成本高于账户余额;所以John 最终设 gasLimit =100, gasPrice =1。
当进入选择交易打包进块的环节时,矿工倾向选择手续费更高的交易。在我们的例子中,Bob 的 gasPrice 比 John 的高两倍;因为两笔交易都需要 90 Gas,所以矿工选择 Bob 的交易能获得两倍的手续费奖励。
-矿工会选择 gasPrice 最高的交易-
由交易发送方付费来奖励矿工的机制,在以太坊中形成一种能自我调节的经济体系。交易发送方千方百计想要降低交易成本,而矿工总是希望收益最大化,两者形成一种平衡。作为交易发送方,如果你把 gasPrice 设得越高,意味着矿工越有动力打包你的交易,则你的交易能越早被装进区块。
有的矿工甚至会设置自己的 gasPrice 下限,直接忽略那些 gasPrice 小于下限的交易。
当发送交易时,我们很难知道当前有效的最小 gasPrice 是多少。这些工具能够扫描整个以太坊网络,算出当前其他交易的 gasPrice 均值,帮助发送方选择能被矿工接受的合理 gasPrice。
结论
从本文中,我们学到了就像汽车消耗燃油一样,执行以太坊交易需要消耗 Gas。希望本文能让大家了解计算需要成本,以及为什么我们需要付费才能获得以太坊的服务。
我们还探讨了 gasPrice 和 gasLimit 的重要性;如果智能合约出现 bug 或估算错误,gasPrice 能保护使用者避免平白损失以太币。
再者,我们还研究了交易手续费背后的经济机制,以及矿工如何选择交易以达到收益最大化。现在我们知道如何调整 gasPrice ,让自己发出的交易更吸引矿工,从而使得交易被更早打包。
下一篇博文我们会讨论交易执行模型(以太坊黄皮书第 6 章),这也是以太坊黄皮书中最复杂的部分(相信我,黄皮书里也这么说!)所以我可能会将这部分内容拆分成数篇文章。请持续关注!
目前的系列文章大家还喜欢吗?我很期待听到你们的想法。如果你发现文中任何错误或是值得改进的地方,请如往常在评论中告诉我,我总是喜欢收到反馈: )
你可能感兴趣的文章
-
【推荐】解读以太坊黄皮书(三)
-
【推荐】解读以太坊黄皮书(三)
又是激动人心的一刻,我们再次推出关于以太坊黄皮书的博文了!在这篇文章中,我们会学到更多关于Gas 和支付的以太坊相关知识,了解以太坊背后的经济学理论,以及解释为...
2024-11-15
比特币交易平台推荐,如何选择交易平台?
-
比特币交易平台推荐,如何选择交易平台?
有的交易所虽然名声很大,也很不错,但是不支持中文,对投资者的交易带来不便,所以在选择交易平台的时候要看看交易平台的用户体验,可以查阅其他用户的评价来了解
2024-11-14
解读以太坊黄皮书(三)
-
解读以太坊黄皮书(三)
又是激动人心的一刻,我们再次推出关于以太坊黄皮书的博文了!在这篇文章中,我们会学到更多关于Gas 和支付的以太坊相关知识,了解以太坊背后的经济学理论,以及解释为...
2024-11-12
解读以太坊 黄皮书(三)
-
解读以太坊 黄皮书(三)
又是激动人心的一刻,我们再次推出关于以太坊黄皮书的博文了!在这篇文章中,我们会学到更多关于Gas 和支付的以太坊相关知识,了解以太坊背后的经济学理论,以及解释为...
2024-11-04
比特币交易平台推荐,如何选择交易平台?
-
比特币交易平台推荐,如何选择交易平台?
有的交易所虽然名声很大,也很不错,但是不支持中文,对投资者的交易带来不便,所以在选择交易平台的时候要看看交易平台的用户体验,可以查阅其他用户的评价来了解
2024-10-23
虚拟货币教学,新手不可错过,祝你一臂之力
-
虚拟货币教学,新手不可错过,祝你一臂之力
投资者可以将虚拟货币分别存储在冷钱包和热钱包中,或者将同一币种分散存储在多个不同的交易平台
2024-10-21
虚拟货币交易所排名情况是什么?如何选择适合自己的交易所?
-
虚拟货币交易所排名情况是什么?如何选择适合自己的交易所?
投资者应根据自己的投资需求,选择支持自己所需币种的交易所
2024-10-17
台湾前十比特币交易所有哪些?应该怎么选择交易所?
-
台湾前十比特币交易所有哪些?应该怎么选择交易所?
一、台湾前十比特币交易所 1、币安网 币安作为国际领先的比特币交易平台,在台湾地区也广受欢迎,它向全球提供广泛的数字货币交易、区块链教育、区块链项目孵化、区...
2024-10-11
加密货币对冲如何运作以及对冲风险
-
加密货币对冲如何运作以及对冲风险
通过深入了解加密货币对冲的运作方式和相关风险,投资者可以更好地理解如何保护自己的投资并在市场波动中获得收益
2024-09-24
bitget交易所下载,最新版APP下载方式
-
bitget交易所下载,最新版APP下载方式
C. 法律法规 遵守法律法规:在进行数字货币交易时,需要遵守相关的法律法规,避免违法行为
2024-02-18