死磕以太坊-3-理解以太坊Gas和燃料手续费

Gas 中译是:瓦斯、汽油,代表一种可燃气体。这形象地比喻以太坊的交易手续费计算模式,不同于比特币中直接支付比特币作为转账手续费, 以太坊视为一个去中心化的计算网络,当你发送Token、执行合约、转移以太币或者在此区块上干其他的时候,计算机在处理这笔交易时需要进行计算消耗网络资源,这样你必须支付燃油费购买燃料才能让计算机为你工作。最终燃料费作为手续费支付给矿工。

与比特币不同的是,无论交易成功与否,你都需要为此支付燃料费。这是因为即使交易失败,矿工依旧为此交易进行校验和计算,消耗了资源。同时你也无法在钱包中直接设置支付多少燃料费,因为实际燃料费是矿工根据计算得出的,并记录在包含此交易的区块中。

当你听到别人谈论 gas 时,实际是在讨论两个概念:gasUsed 和 gasPrice,默认情况下是指 gasUsed。你可以把 gasUsed 看成是汽车所需多少升燃油。把 gas price 看成是燃油单价。

对于汽车,每升汽油6.46元(price),10

升汽油就是64.6元。对于以太坊,每gas是20Gwei(price),21000 个 gas 就是 20*21000 Gwei=

420000 Gwei= 0.00042 Ether。也就是说本次交易手续为 0.00042 Ether。

Tip

Gwei是以太币的一种计算单位,具体见文末附录:以太币单位

Gas Used

那么,以太坊这台计算机在处理交易时是如何统计计算量的呢?以太坊有专门的虚拟机处理交易,虚拟机根据交易中确定的一个一个的操作指令进行逐个处理,而每个操作指令都有明文规定的Gas消耗量。 比如执行一次加法运算将消耗 3Gas,这样交易需要消耗多少Gas完全取决于执行完交易中的所有操作指令的累计Gas,交易执行完成时虚拟机将反馈总消耗Gas量,称之为 gasused。而你所需支付的手续费等于gasPrice * gasUsed

以太坊操作指令对应Gas

指令Gas UsedNotes

STOP0停止执行

ADD3两个数相加

MUL5两个数相乘

SUB3两个数相减

DIV5两个数相除

更多细节请参见:Gas清单

Gas Limit

因为手续费等于

gasPrice * gasUsed,用户在转账,特别是执行智能合约时 gasUsed 无法提前预知。

这样存在一个风险,当用户的交易涉及一个恶意的智能合约,该合约执行将消耗无限的燃料,这样会导致交易

方的余额全部消耗(恶意的智能合约有可能是程序Bug,如合约执行陷入一个死循环)。

为了避免合约中的错误引起不可预计的燃料消耗,用户需要在发送交易时设定允许消耗的燃料上限,即 gasLimit。 这样不管合约是否良好,最坏情况也只是消耗 gasLimit 量的燃料。

然而,一笔交易所必须支付的燃料已经在区块中通过该交易已执行的计算量记录。如果你不想支出太多燃料,而故意设置过底的 gas limit 是没太多帮助的。你必须支付足够燃料来支付本交易所必要的计算资源。如果交易尚未执行完成,而燃料已用完,将出现一个Out of Gas的错误。特别注意的是,即使交易失败,你也必须为已占用的计算资源所支付手续费。比如,你通过合约给 TFBOYS 投票,设置 gasPrice=2 gwei,gasLimit=40000(实现投票需要40001的燃料开销),最终你投票失败且仍然需要支付 40000*2 gwei= 80000 gwei= 0.00008 ETH。

另外,如果最终 gasUsed 低于

gasLimit,即燃料未用完。则剩余燃料(gasLimit - gasUsed )将在交易后退还给你。比如你发送 1 Ether

到另一个账户B,设置 gas limit 为 400000,将有 400000 - 21000 返回给你。

Tip

21000 是标准转账交易的gasUsed。因此一笔标准的转账交易你可以设置 gasLimit 为21000。

Gas Price

因为你所需要支付的燃料费为燃料单价(gasPrice) * 燃料开销(gasUsed),如果你想让交易花费更少,你能够做的是降低你愿意支付的燃料单价。 另一方面,降低燃料单价的坏处是交易可能需要等待很长时间才被打包到区块中。

这是因为交易燃料费将归属于挖出本区块的矿工。当矿工挖矿时,他需要决定哪些交易放入到区块中,可以随机选择交易,也可以不包含任何交易。为了鼓励让矿工将你的交易放入区块,你会考虑将燃料单价设置得足够诱人,已确保能优先放入区块。

但这还是一厢情愿,因为这个最终取决于矿工。大部分矿工遵循一个简单策略,优先打包本地交易,将接受到的交易按燃油单价从高到底排列,依次放入区块中直到塞满区块,或者直到低于矿工所设置的燃料单价底限。

如果你着急交易,高燃料单价会使得你的交易排在别人前面。如果不着急,你只需设置一个足够让矿工包含你交易的燃油单价即可。

一般情况下:

高燃料单价为50 GWEI 的交易几乎总能放到下一个区块。

高燃料单价为22 GWEI 的交易通常会把它放到未来的几个区块中。

高燃料单价为8 GWEI 的交易通常会在未来几分钟内放入区块。

下图是最近1000个区块中不同燃料价格对交易确认时间的影响:

可以因为当前以太坊的交易处理性能(15笔/秒),当出现交易高峰期拥堵时,你需要考虑调整燃料单价,比如在Token创建后,抢购火热,为了中签你需要设置更高的燃料单价,以能够优先抢购Token。

在设置燃料单价时,你还需要考虑加密货币的价格波动,相对人民币随时都涨跌20%。按人民币考虑,之前的交易

10 gas price

相当于0.3元,而现在可能已经是0.4元。所以需要根据实际情况,尽量调低燃料单价。而当网络中大部分交易都是较低燃料单价时,矿工也会去调整他的底限。

那么问题来了,到底该设置多少燃料单价才合适呢?你可以到ethgasstation网站上查看。它将告诉你现在整个以太坊的情况,并给你建议的燃料单价,下图是当前的燃料单价设置建议。

附录

以太币的计算单位

Kwei(Babbage) =103

Wei

Mwei(Lovelace) =106

Wei

Gwei(Shannon) =109

Wei

Microether(Szabo) =1012

Wei

Milliether(Finney) =1015

Wei

Ether =1018

Wei

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容

  • Gas 字面中译是:瓦斯、汽油,是一种燃料。这非常形象的比喻了以太坊的交易手续费计算模式,不同于比特币中直接支付比...
    磨链社区阅读 8,532评论 0 0
  • 这篇文章主要讲解以太坊的基本原理,对技术感兴趣的朋友可以看看。 翻译作者:许莉 原文地址:How does Eth...
    蓝肥仔阅读 1,749评论 0 15
  • 简介 不管你们知不知道以太坊(Ethereum blockchain)是什么,但是你们大概都听说过以太坊。最近在新...
    Lilymoana阅读 3,891评论 1 22
  • 这篇文章是用来帮助人们理解以太坊网络上的一些基本概念和体系,包括账户体系、gas、矿工在区块大小设置机制里的角色等...
    yuyangray阅读 3,035评论 0 1
  • (I)二、课程目标5点(含标题) 二、课程目标 透过混合学习及体验式学习培养学生以下能力: 能够从 用户体...
    xlayal阅读 160评论 0 0