什么是Gas?
Gas是衡量在以太坊网络上执行特定操作所需的计量单位。
由于每个以太坊交易都需要计算资源来执行,所以每个交易都需要费用。Gas是指在以太坊成功进行交易所需的费用。
Gas费是用ETH支付的。Gas价格以gwei表示,gwei本身就是ETH的面额,每个gwei等于0.000000001 ETH (10-9ETH)。例如,与其说你的Gas费用0.000000001 ETH,不如说你的Gas费1 gwei。“gwei”本身的意思是“giga-wei”,等于1,000,000,000 wei。Wei本身(以b-money的创造者Wei Dai命名)是ETH的最小单位。据Tokenview链上数据显示,3月6日以太坊Gas费为44.59gwei。
在伦敦升级之前
以太坊网络交易费用的计算方式随着2021年8月的伦敦升级而改变。以下是过去的工作原理:
假设Alice付给Bob 1 ETH。在此次交易中,Gas limit(Gas上限)为 21,000个,Gas Price为200gwei。
总费用将是:Gaslimit(units)*Gas Price,即21,000 * 200 = 4,200,000 gwei或0.0042 ETH。当Alice寄钱时,Alice的账户将扣除1.0042 ETH。Bob将入账1.0000 ETH。矿工将收到0.0042 ETH。
伦敦升级之后
伦敦升级于2021年8月5日实施,通过彻底改革以太坊的交易收费机制,使用户在以太坊上的交易更加可预测。这一变化带来的高级好处包括更好的交易费用估算,通常更快的交易打包,以及通过燃烧一定比例的交易费用来抵消ETH的发行。从伦敦网络升级开始,每个区块都有一个基础费,即该区块包含的每单位Gas的最低价格,由网络根据区块空间的需求计算。随着交易费用的基础费被销毁,预计用户还将在交易中设置小费 (priority fee)。小费对在区块中执行和传播用户交易的矿工进行了补偿,预计大多数钱包将自动设置。
计算总交易费用的方法如下:Gas limit (units) * (Base fee + Tip)
假设Jordan要付给Taylor 1 ETH。在此次交易中,Gas limit为21,000(units) ,基础费为100 gwei。Jordan 还包括10 gwei 的小费。
根据上面的公式,我们可以将其计算为21,000 * (100 + 10)= 2,310,000 gwei或0.00231 ETH。
当Jordan发送钱的时候,1.00231 ETH将会从Jordan的账户中扣除。Taylor将入账1.0000 ETH。矿工收到0.00021 ETH小费。0.0021 ETH的基础费将被燃烧。
此外,Jordan还可以为交易设置最高费用 (maxFeePerGas)。最高费用和实际费用之间的差额将退还给Jordan,即Return=max fee-(base fee+priority fee)。Jordan可以设定交易执行时支付的最高金额,而不必担心交易执行时支付的“超出”基础费用过高。
区块大小:
在伦敦升级之前,以太坊有固定大小的区块。在高网络需求时,这些区块以总容量运行。因此,用户通常需要等待高需求的减少,才能被包含在一个块中,这导致了糟糕的用户体验。
伦敦升级向以太坊引入了可变大小的区块。每个区块的目标大小为1500万Gas,但区块的大小会根据网络需求增减,直到区块上限为3000万Gas(目标区块大小的2倍)。
通过tâtonnement的流程,协议平均达到1500万的均衡区块大小。这意味着如果区块大小大于目标区块,协议将增加下一个块的基础费用。同样,如果区块大小小于目标区块,协议也会降低基础费用。调整基础费用的金额与当前区块大小离目标区块的距离成比例。
Base fee
每个区块都有一个作为最低价格的基础费用。要有资格被纳入一个区块,每份Gas报价必须至少等于基础费用。基础费用是独立于当前区块计算的,而是由之前的区块决定的,这使得交易费用对用户来说更容易预测。当区块被开采时,这一基础费就会被“烧掉”,使其不再流通。
基础费是通过一个公式计算出来的,该公式比较了前一个区块大小(所有交易使用的Gas数量)和目标区块大小。如果超出目标区块大小,每个区块的基础费用最多增加12.5%。这种指数增长使得区块大小无限期保持在高位在经济上是不可行的。
相对于伦敦之前的Gas拍卖市场,这种交易收费机制的改变使得收费预测更加可靠。
根据上表-在第9区块上创建一个交易,钱包会让用户确定添加到下一个块的最大基础费是:当前基础费* 112.5%或202.7 gwei * 112.5% = 228.1 gwei。
同样重要的是,我们不太可能看到整个区块的扩展峰值,因为基础费在整个区块中增加的速度。
Priority fee (tips)
在伦敦升级之前,矿工将从一个区块内的任何交易中获得总Gas费。
随着新的基础费的销毁,伦敦升级引入了priority fee (tip)即小费,以激励矿工在区块中打包的一笔交易。
如果没有小费,矿工们会发现开采空区块在经济上是可行的,因为他们会得到相同的区块奖励。在正常情况下,小额小费给矿工提供了包含交易的最小激励。对于需要优先执行的交易,在同一区块的其他交易之前,将需要更高的小费,以试图超过竞争的交易。
Max fee
要在网络上执行一笔交易,用户可以指定他们愿意为要执行的交易支付的最大限额。这个可选参数被称为maxFeePerGas。交易执行时,最高费用必须超过基础费和小费的总和。交易发送方将获得最高费用与基本费用和小费之和之间的差额的退款。
Calculating fees
伦敦升级的主要好处之一是改善用户设置交易费时的体验。对于支持升级的钱包,钱包提供商不会明确说明你愿意为完成交易支付多少钱,而是会自动设置推荐交易费(base fee+priority fee),以减少用户的复杂性负担。
EIP-1559
EIP-1559在伦敦升级中实施,使得交易费用机制比以前的Gas价格拍卖更加复杂,但它的优势是使Gas费更加可预测,从而形成一个更高效的交易费用市场。
用户可以提交与他们愿意为执行该交易支付多少钱相对应的maxFeePerGas的交易,他们知道自己所支付的Gas价格不会超过市场价格(baseFeePerGas),而额外的费用减去他们的小费,就会被退还。
为什么会有Gas费?
简而言之,Gas费用有助于保持以太坊网络的安全。通过对网络上执行的每一次运算都收取费用,我们可以防止恶意行为者在网络上散布垃圾信息。为了避免意外的或敌对的无限循环或代码中的其他运算浪费,每笔交易都需要为它可以使用的代码执行的计算步骤设置一个限制。计算的基本单位是“Gas”。
尽管交易包含上限,但任何未在交易中使用的Gas将返回给用户(归还的Gas即,max fee-(base fee+tip))。
什么是Gas Limit(Gas 上限)?
Gas limit指的是你在交易中愿意消耗的最大Gas量。涉及智能合约的更复杂的交易需要更多的计算工作,因此它们需要更高的Gas上限,而不是简单的付款。一个标准ETH交易需要21,000 Gas的Gas 上限。例如,如果你设置一个简单的ETH传输的气体上限为50,000,EVM将消耗21,000,而您将得到剩余的29,000。但是,如果指定的Gas太少,例如,一个简单的ETH传输的Gas上限为20,000,EVM将在尝试完成交易时消耗20,000 Gas,但交易不会完成。然后EVM恢复任何更改,但由于矿工已经完成了价值20k Gas的工作,因此该Gas被消耗。
为什么Gas费这么高?
高昂的Gas费是由于以太坊的流行。在以太坊上执行任何操作都需要消耗Gas,每个区块的Gas空间是有限的。费用包括计算、存储或操纵数据,或转移代币,均消耗不同数量的Gas。
随着Dapp功能变得越来越复杂,智能合约执行的操作数量也在增长,这意味着每笔交易将占用有限大小区块的更多空间。如果有更多的需求,用户必须提供更高的小费,以尝试出价高于其他用户的交易。更高的小费可以让你的交易更有可能进入下一个区块。
Gas价格本身并不能决定我们需要为某笔交易支付多少钱。要计算交易费用,我们必须将Gas消耗总量乘以Gas价格,以gwei为单位。
降低Gas成本的举措
以太坊的可扩展性升级应该最终解决一些Gas费问题,这反过来又将使该平台每秒处理数千笔交易,并在全球范围内扩展。Layer2扩展是大大提高Gas成本、用户体验和可扩展性的主要举措。
更多关于layer 2
在信标链(beacon chain)上引入的新的权益证明机制(PoS)模型应该可以减少高功耗和对专用硬件的依赖。该链将允许去中心化的以太坊网络同意并保持网络安全,同时通过要求财务承诺来限制能源消耗。任何拥有至少32个ETH的人都可以把它们质押上,并成为一个验证者,负责处理交易、验证区块,并提出新的区块添加到链中。拥有少于32个ETH的用户可以加入质押池。
减少Gas成本的策略
如果你想减少ETH的Gas成本,你可以设置小费来表示你交易的优先级。矿工将“工作”并执行提供更高小费的交易,因为他们将保留你支付的小费,而不太倾向于执行小费设置较低的交易。
原文链接:
https://ethereum.org/en/developers/docs/gas/
声明:此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网站所提供的信息,只供参考之用。