logo头像

区块链学习小栈

以太坊GAS (燃料)

理解以太坊一定要理解以太坊中的gas的概念,以太坊gas可以说是以太坊生态系统的命脉。

任何涉及到以太坊的行为,无论是简单交易,还是智能合约,甚至ICO都需要一定量的gas。gas是衡量执行某些操作所需的计算量的单位,用来计算为了执行操作而需要支付给网络的费用数额。

这里我们将了解gas的工作原理和具体对gas的具体理解。

1.什么是以太坊gas

gas的名字起得非常贴切,翻译成中文就是燃料的意思。在这之前,我们先了解下bitcoin的背景和bitcoin面临的问题。

比特币的创建是因为每个人都在问同样的问题:

是否有可能创造一种可以在没有任何中间人的情况下在两个人之间转移的金钱形式?

是否有可能创建一个可以在区块链等功能上运行的分散化资金?

中本聪在创造比特币时回答了这些问题。我们终于有了一个去中心化的货币体系,可以将资金从一个人转移到另一个人身上。

然而,比特币存在问题,这是所有第一代区块链都存在的问题。他们只允许货币交易,没有办法为这些交易添加条件。

Alice可以发送Bob 5 BTC,但她不能对这些交易施加条件。例如。她不能告诉鲍勃,只有当他执行某些任务时他才能拿到钱。

这些条件将需要非常复杂的脚本,需要一种“东西”使流程更加无缝。…这个“东西”是就是以太坊的智能合约。关于以太坊的智能合约,这个就不细说,想了解的可以参考我们其他文章。

2.什么是以太坊gas?

正如介绍中所解释的那样,Gas是一个单位,用于测量执行某些操作所需的计算量。

以太坊虚拟机(EVM)中运行的所有智能合约都使用 solidity进行编码。每一行代码都需要一定量的gas来计算,就好比汽车要用汽油。

下面的图片来自以太坊黄页,可以用来粗略地了解多少具体说明的成本。

以太坊黄页

简单来说,Gas就是矿工的劳务费。
任何以太坊的交易已经智能合约的执行,每一步都需要支付Gas才能实现。

Gas的设计,杜绝了对以太坊计算资源的滥用,防止智能合约中死循环的无限计算现象,使某些设计欠缺周全的智能合约不会影响整个网络的正常运行。

3. 以太坊Gas如何工作

以太坊的货币是以太币(Ether),但是Gas其实并不是以太币延伸处的货币。Gas可以说是以太坊虚拟机(EVM)内部的Token,当以太坊虚拟机执行一些指令操作时(例如智能合约、转账代码等),将扣除相应的Gas。

例如,不同类型合约的Gas消耗:

仅执行一条指令: 1 Gas

存储一个值: 100Gas

调用另外一条合约: 20Gas

这样做是有很多好处的,最主要的是以太坊可以控制外部数据输入的边界,例如你如果想要写很长的合约或存储很多数据来达到恶意的目标,你就需要支付很多的费用来达成,天底下没有免费的午餐!

假如你想要向一条智能合约发送一次事务请求,首先被要求输入下面的内容:

Gas Price : 你需要为每一单位的Gas支付的以太币数额

Gas Limit: 为了执行这次事务,你愿意支付的最大Gas单位数

你可以简单地把Gas Price 理解为时薪,然后Gas Limited就是劳务费封顶。

Gas度量的最小单位是wei。所以,如果在操作过程中花费1个gas单位,我们称它为1 wei。

以太坊的单位设定如下:

你在进行以太坊交易之前,可以设定这两项指标。但是,如果Gas Price设低了,就会出现没有矿工愿意打包的情况,也就是类似现实中时薪低了,没有工人愿意接活一样;

另外一种情况,如果你设定的时薪合理,但Gas Limit设低了,就会出现Gas 无法退回,交易回滚的结果。也就是费用白花了,交易失败,活没有干成。

以太坊gas机制。它是否合理?

尽管gas系统因为提出了一个能够非常积极地激励矿工的平稳运行机制而受到赞扬,但最近也受到了很多质疑,因为对于开发商和智能合约创造者来说成本有点高了。无论如何,以太坊项目的参与者必须了解这些成本,并据此设计 dApp 。我们需要在区块链链上和链外的复杂性之间找到平衡。