广告

解读以太坊黄皮书:ETH 2.0到底是什么?

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

读完这篇博文,你就会知道为什么交易成本被称为 Gas,明白 gasPrice 与 gasLimit 之间的区别,也能了解矿工节点选择待打包交易的策略。(此篇博文参考以太坊黄皮书第 5 章)

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

(免责声明:本文基于 2018 年 11 月 27号拜占庭 127780ac 版本的黄皮书进行介绍)

介绍

我刚开始学习以太坊时,最先碰到的困惑就和交易手续费有关。我的疑惑是,“如果我可以免费获得与 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 章),这也是以太坊黄皮书中最复杂的部分(相信我,黄皮书里也这么说!)所以我可能会将这部分内容拆分成数篇文章。请持续关注!

24小时热点

qubic挖矿收益计算器运作原理说明

在数字货币的世界里,挖矿是一种获取加密货币奖励的主要方式,而 ...

69675

波场区块链浏览器

陈景润证明哥德巴赫猜想1+2的论文

大偶数表为一个素数及一个不超过二个素数的乘积之和 。 本 ...

596569

鲸探

MCO币

MCO,前为Monaco,朝着让每个钱包都载有加密货币的愿景 ...

648628

第九空间

新手必备的区块链钱包开发教程

区块链钱包的开发过程是一个非常精细而复杂的过程涉及到安全、用 ...

4823

波场区块链浏览器

普华资本

一、普华资本简介 普华资本是中国最大的投资管理公司之一 ...

101340

NFTKEY

BCEX元宝网

元宝网BCEX是一个提供数字资产交易的平台,隶属于Casca ...

275104

BCEX元宝网

hkd是什么货币?hkd定义及发展历程全览!

Hkd是港元,是中华人民共和国香港特别行政区的法定流通货币, ...

4335

波场区块链浏览器

QKC-QuarkChain-夸克链

货币简介 Qu ...

83744

盒盒数字藏品

新人picard钱包注册教程

在数字货币的世界里,安全可靠的钱包是存储和交易加密资产的基础 ...

5011

波场区块链浏览器

XCD币(Capdax Token)交易平台?

XCD币(Capdax Token)是一种数字货币,它是Ca ...

4350

泰达币交易平台
广告

热点专题

区块链网是什么

中国区块链价值评价中心 中国区块链价值评价中心于2 ...

5257360

知信链

元界(Metaverse)

元界(Metaverse)是一个去中心化的公有区块链项目,元 ...

952179

WEEX数字货币

BTC123

BTC123(www.btc123.com)成立于2011年 ...

729773

Kusama 测试网

DAC币——达芬奇Davinci Coin

达芬奇项目的平台是通过叫作"Dchain"的自身区块链把可以 ...

686999

Mechanism Capital

Bitfinex(香港B网)

Bitfinex交易平台目前仍处于试运营阶段,该平台由iFi ...

660168

Hi元宇宙

MCO币

MCO,前为Monaco,朝着让每个钱包都载有加密货币的愿景 ...

648628

第九空间

熊猫矿机(PandaMiner)

熊猫矿机(PandaMiner),企业文化背景为:其一,熊猫 ...

629194

金融界区块链频道

陈景润证明哥德巴赫猜想1+2的论文

大偶数表为一个素数及一个不超过二个素数的乘积之和 。 本 ...

596569

鲸探

中币网zb——中币交易所

ZB.com是一个全球化的数字货币交易所,目前已获得泰国和迪 ...

580606

中币交易所

五大区块链骗局揭露

从古至今,骗子这个行当一直都是经久不衰,上至皇宫贵族,下至农 ...

516469

DeRace