如何深入理解以太坊gas机制
理解以太坊gas可以说是以太坊生态系统的命脉。
任何涉及到以太坊的行为,无论是简单交易,还是智能合约,甚至ICO都需要一定量的gas。gas是衡量执行某些操作所需的计算量的单位,用来计算为了执行操作而需要支付给网络的费用数额。
gas的名字气得非常贴切,翻译成中文就是天然气的意思。在这之前,我们先了解下bitcoin的背景和bitcoin面临的问题。比特币的创建是因为每个人都在问同样的问题:
- 是否有可能创造一种可以在没有任何中间人的情况下在两个人之间转移的金钱形式?
- 是否有可能创建一个可以在区块链等功能上运行的分散化资金?
然而,比特币存在问问题,这是所有第一代区块链都存在的问题。他们只允许货币交易,没有办法为这些交易添加条件。Alice可以发送Bob 5 BTC,但她不能对这些交易施加条件。例如,她不能告诉Bob,只有当他执行某些任务时他才能拿到钱。而这些问题在之后的智能合约中得到了解决。
1.什么是以太坊gas
正如前言中所述,Gas是一个单位,用于测量执行某些操作所需的计算量。以太坊虚拟机(EVM)中运行的所有智能合约都使用solidity进行编码(以太坊计划未来将从Solidity转移到Viper)每一行代码都需要一定量的gas来计算,就好比汽车要用汽油。
下面的图片来自以太坊黄页,可以用来粗略地了解多少具体说明的成本。
2.以太坊gas如何工作
为了更好地理解以太坊的gas工作方式,我们使用一个类比。假设你正在进行一次公路旅行。在你这样做之前,你要经过这些步骤:
- 你去加油站,并指定你想要在你的车中注满多少汽油(gas)
- 你的汽车里充满了汽油(gas)
- 你向加油站支付你欠他们汽油(gas)的金额
可以这样类比:
汽车,即你想要执行的操作,如gas或智能合约。加油站是你的矿工,你付给他们的钱是矿工费。【注意:gas并不是矿工费,我理解gas是】
用户希望在以太坊执行的所有操作必须为以下方面提供gas:
- 涵盖其数据,即intrinsic gas
- 覆盖整个计算
为什么有这个gas系统?
gas作用=>激励
像任何工作对等系统一样,以太坊严重依赖矿工的哈希效率:更多的矿工,更多的哈希效率,更安全和快速的系统。
为了吸引更多的矿工进入该系统,他们需要使该系统对矿工有利可图并尽可能诱人。在以太坊,矿工又两种赚钱方式:
- 通过挖掘块和获得块奖励
- 通过称为他们的开采块裁决和打包者
来探讨第二点:矿工负责将交易置于其区块内。为了这样做,他们必须使用他们的计算能力来验证智能合约。gas系统允许他们为此收取一定的费用,即矿工费,这有助于激励他们积极参与生态系统。
gas度量的最小单位使wei。如果我们在操作过程中花费1个gas单位,我们称它为1wei。
单位增加如下:
3.如何将gas转换成以太?
没有固定的转换价格,完全取决于矿工来确定转换价格,然而,平均转换率通常为:1 gas = 0.02 micro Ether
4.以太坊燃料限制(Gas Limit)是什么?
为了在Ethereum中完成操作,发起交易的人员或智能合约创建者必须在向矿工提交Gas Limit之前指定Gas Limit。当指定Gas Limit时,矿工将开始执行操作。
提交Gas Limit时,必须考虑以下几点:
- 不同运营回产生不同的gas成本
- gas用完时,矿工将停止执行
- 如果有剩余gas,将立即退还给发起交易的人员或智能合约创建者
情景1# gas限制太低
如果一个操作用尽了gas,那么它就会恢复到原来的状态。然而,发起交易者或智能合约创建者仍然需要向矿工支付计算成本的费用,并将操作添加到区块链中。
回到我们的刚刚提到驾车旅行的比喻,如果汽车中没有充足的汽油,那么将无法到达目的地,但即使如此,你还是向加油站支付了燃油费。让我们看看这是如何在我们假设的智能合约中起作用的。
步骤是:
- 把10存储在一个变量中——假设这个操作成本是45 wei的gas
- 增加两个变量——假设这个成本是10 wei
- 储存最终结果——成本为45 wei
但是,这一次,gas limit是90 wei
现在,我们知道履行合同所需的gas是100 wei,但我们却有90 wei的限制。
在这种情况下,矿工将进行90 wei的计算,然后对90 wei的运行生成器费用进行计费,结果为(90 * 0.02 micr ETH)0.000018ETH。此外,合约还原为原始状态并添加到区块链中。
情景2# gas limit太高
那么,如果我们将gas limit设置得太高怎么办?
【理论上,没用用完的gas都将退还给发起者】
矿工收到每块6700000gas limit的限制。以太坊的每个简单交易通常都有2.1万的gas limit。矿工只能增加加起来小于或等于块gas limit的操作。
假设有一个交易A有一个42000 gas limit和两个交易B和C的正常 limit(如21000)。
矿工会选择优先处理交易B和C并且退还少量gas,而不是选择处理交易A并退还大量gas。
以下是平均gas限制图表。
gas和以太币不是一回事,就如燃料(gas)和费用(fee)不是同一回事。gas是需要的计算能力的数量,而以太币是价格,也就是人们必须为这种gas支付的费用。
以下是一些收费情景:
- 如果一项操作只有低gas,那么矿工不会去处理,因为它没有足够的gas来完成计算。
- 如果一项操作的费率(fee)较低,但矿工们仍然不会去处理,因为低费用的工作没有吸引力。
- 如果一个操作有高gas,那么这意味着gas limit非常高,矿工还是不会去处理。
- 如果一项操作收取高额费用(fee),那么矿工知道他们会从中赚取很多钱,当然优先处理。
根据ethgasstation推荐的不同交易费用的gas价格是:
gas系统提出了一个能够非常积极地激励矿工的平稳运行机制而收到赞扬。
|