什么是以太坊的Gas机制?
以太坊在区块链上实现了一个运行环境,被称为以太坊虚拟机(EVM)。每个参与到网络的节点都会运行EVM作为区块验证协议的一部分。他们会验证区块中涵盖的每个交易并在EVM中运行交易所触发的代码。每个网络中的全节点都会进行相同的计算并储存相同的值。合约执行会在所有节点中被多次重复,这个事实得使得合约执行的消耗变得昂贵,所以这也促使大家将能在链下进行的运算都不放到区块链上进行。对于每个被执行的命令都会有一个特定的消耗,用单位Gas计数。
Gas是以太坊世界的燃料,它决定了以太坊网络生态系统的正常运行,用于交易、执行智能合约、支付数据存储费用等各个方面。
每个合约可以利用的命令都会有一个相应的Gas值。Gas值的存在避免智能合约进入死循环,你不能编写永不结束的程序,因为你用尽了Gas,计算将被节点拒绝。
Gas同时也是矿工的佣金,并以ETH⽀付。在以太坊中,由交易发起者付出的Gas最终会以ETH货币的价值计算并付给矿工作为手续费,也就是:Gas cost= Gas Used*Gas Price。
在现实中,所有的交易最终都是由矿工选择的,但是用户所选择支付的交易费用多少会影响到该交易被打包所需等待的时长。如果该交易由于计算,包括原始消息和一些触发的其他消息,需要使用的Gas数量小于或等于所设置的Gas limit,那么这个交易会被处理。如果Gas总消耗超过Gas limit,那么所有的操作都会被复原,但交易是成立的并且交易费任会被矿工收取。区块链会显示这笔交易完成尝试,但因为没有提供足够的Gas导致所有的合约命令都被复原。所以交易里没有被使用的超量Gas都会以以太币的形式打回给交易发起者。因为Gas消耗一般只是一个大致估算,所以许多用户会超额支付Gas来保证他们的交易会被接受。
以太坊 Gas 六大神器
作为以太坊网络的生态活跃程度的最重要指标「Gas 价格」,一直都是以太坊网络参与者最关注的数据之一,因为通过它可以了解网络的拥堵程度、生态发展情况或者是链上交易的紧急程度。
随着 Gas 价格数据的重要性逐渐提升,基于 Gas 价格的第三方工具也越来越多,大体上可以分为两大类:
Gas 价格的「历史记录」
未来 Gas 价格的「预测」
其中,Gas 价格的历史可以辅助研究机构了解链上已经发生的事情以及各类应用的用户行为特征,而未来 Gas 价格的预测可以为有链上交易需求的用户、钱包、应用提供更准确的数据参考。
对于大多数用户来说,Gas 费用预测的需求应该是更常见的。很多用户可能并不知道或者不会直接感知到这类服务的存在,因为大多都内置在了加密货币钱包的功能中,用户直接使用即可,无需特别关注。挑选一个合适的服务将有助于钱包为用户计算更准确的数值,提升用户体验,或节省成本。
本文将介绍与 Gas 相关第三方数据服务中最值得关注的 6 个:GasNow、Blockchair、ETH Gas Station、Etherscan、ETH Gas.watch、fees.wtf。
对于高级选手,本文还将介绍一个快速获得 Gas 价格的进阶用法。
GasNow:最实时和准确的 Gas 价格建议
本文提及的多个服务都提供了实时的 Gas 价格建议,但是 GasNow 是其中最值得推荐的。
GasNow 基于星火矿池节点交易池中实时交易的 Gas 价格分布给出指示,其数据具有实时性、准确性等特点,用户可根据实时数据更快速、准确地判断当前的 Gas 价格。
所以近期也有不少钱包宣布使用 GasNow 的服务,比如 imToken、麦子钱包、MYKEY、TokenPocket、Trust Wallet。
有意思的是,GasNow 还推出了一个基于 macOS 系统的桌面小工具方便重度用户使用,用户在安装后就可以在标题栏中查看定期实时刷新的 Gas 价格。
亮点:以太坊最大矿池推出的建议 Gas 价格,是目前最值得参考的数据。
适用场景:对于大多数用户来说可能都不需要直接使用这个服务,因为主流钱包已经内置了 GasNow,也就已经享受了 GasNow 提供的更准确的价格预测。对于重度用户来说,安装一个 macOS 版本的体验会更好。
网址:[https://www.gasnow.org]
Blockchair:反映以太坊网络最真实的整体负荷
对于以太坊 Gas 价格数据来说,Blockchair 提供的最值得关注的工具是单日以太坊网络 Gas 价格中位数——相比其他家提供的单日 Gas 价格平均值而言,中位数更能体现网络的实际运行情况。比如历史上曾出现过多次用户设置天价 Gas Price 的情况,这类极端异常值就会导致 Gas 价格平均数不能反映当日的整体情况。相比之下,中位数可以不受这些极端异常值的情况,反映出网络真实的负荷。
Blockchair 还是一个老牌的支持多区块链的区块浏览器,目前支持 16 条公链网络的区块数据搜索,也为各种公链项目的数据制作了各种各样的图表。他们提供了多样且丰富的数据接口(API),也是他们的盈利模式之一。
亮点:相比较其他家使用平均值作为历史数据的参考,Blockchair 采用中位数可以有效排除 Gas 价格异常值。
适用场景:综合其它数据或者事件参考历史某一天的 Gas 中位数,比如截止今日,历史 Gas 中位数最高的单日为 Uniswap 发布治理代币 UNI 的那天,Gas 价格中位数达到 542,这也就代表了 9 月 17 日以太坊网络中所有的交易中有一半交易的 Gas 价格超过了 542 Gwei。
网址:[https://blockchair.com/ethereum/charts/median-gas-price]
ETH Gas Station:最全面的应用消耗 Gas 统计
在 GasNow 推出之前,ETH Gas Station 一直都是各个钱包或者业内主要参考的「建议 Gas 价格」来源。但除此之外,ETH Gas Station 统计的各个应用或者智能合约的 Gas 消耗量也是一个值得参考和研究的数据。
ETH Gas Station 在首页中提供了近 30 日单个链上合约消耗 Gas 的排名,通过这个榜单可以观察到最近 30 日最活跃一些项目,以及具体的 Gas 消耗量、单个合约的平均 Gas 价格等数据。
亮点:精确到单个智能合约的 Gas 消耗数据。
适用场景:通过 Gas 消耗榜单可以发现那些新兴或者热门的链上智能合约。
网址:[https://ethgasstation.info]
Etherscan:最全面的以太坊区块数据查询和图表
Etherscan 是以太坊生态流量最大的区块浏览器,也是绝大多数以太坊用户和应用的默认选择。Etherscan 提供了多样化的区块数据搜索和图表,也提供了类似于 GasNow 的 Gas 价格建议和 Gas 价格平均值图表。Etherscan 功能相对比较全面,但是单个功能的专业性不如以上这些服务。
亮点:数据更全面,图表类型较多。
适用场景:提供了多样化的以太坊区块数据和趋势图表,适合更多长尾需求。
网址:[https://etherscan.io]
ETH Gas.watch:以太坊 Gas 价格邮件提醒工具
对于交易需求不是特别迫切的用户来说,ETH Gas.watch 可以帮助你寻找 Gas 价格的低谷,减少链上交易成本。你可以通过它设置一个邮件提醒,比如当 Gas 价格低于 50 Gwei 的时候就发送邮件提醒,之后再执行任务那些不太紧急的链上交互。
ETH Gas.watch 是一个全新的小工具,除了监控 Gas 价格并通过邮件提醒之外,还聚合了多个 Gas 价格预测服务,在一个网站可以查询多个数据源。
亮点:邮件提醒、聚合多个 Gas 价格预测服务。
适用场景:对于低频以及非紧急的交易需求,可以通过 ETH Gas.watch 寻找低价机会。
网址:[https://ethgas.watch]
fees.wtf:账户 Gas 消耗记录查询
用户可以通过 fees.wtf 查询某个以太坊地址消耗的总 Gas 量,很多人在使用这个服务后发现竟然已经消耗过这么多 ETH,比如我的某个地址就消耗了超过 1 个 ETH 的 Gas 成本,平均每笔交易的 Gas 价格为 55 Gwei。
网址:[https://fees.wtf]
类似的服务:[https://oh.mygas.io]
高级玩家进阶用法:iOS「捷径」
以上部分数据服务都对外提供了 API 接口,稍微懂一点编程的用户或者进阶用户就可以利用接口搭建适合自己的服务。专业的用户可以使用 Python 或者其他编程语言以及服务器搭建专用服务,但是对于普通用户来说,其实也可以通过一些简易的工具提升效率,特别是对于重度用户而言。
以 GasNow 提供的接口为例,最简单的方案就是 iOS 的用户可以通过「捷径」App 快速或定期获取 Gas 价格。我也制作了一个捷径 [https://www.icloud.com/shortcuts/f7bdaa307ddd495eb2188ebcad823820] 供下载试用,下载后直接运行,实时的 Gas 价格就会通过推送的方式显示出来。
也可以配合「捷径」的自动化设置定期获取功能,或者利用 iOS 14 的「轻点背面」功能设置手势快速触发。