【以太坊】Gas 和汽油是什么关系?

以太坊中的 Gas 到底是什么,和汽油有什么关系?

【以太坊】Gas 和汽油是什么关系?

显然和汽油没关系

,对以太坊平台而言 Gas 是计算和衡量各种交易行为需要多少工作量的计量单位(比如说:3 天的工作量,对发起者而言就是需要付给矿工/网络节点的交易费用



我们再来看一下标准的定义:

#1 Gas 的定义

Gas is a unit of measuring the computational work of running transactions or smart contracts in the Ethereum network. 



This system is similar to the use of kilowatts (kW) for measuring electricity in your house; 



the electricity you use isn’t measured in dollars and cents but instead through kWH or Kilowatts per hour.

翻译过来:

Gas 是测量以太坊网络中运行交易或智能合约的计算工作量的单位,Gas 系统类似于使用千瓦(kW)来测量你房间内的电力;

您使用的电力不是以美元和美分计量,而是以每小时千瓦计量的

我再啰嗦一下,好比我们现在要开车从北京去天津,需要 Gas 汽油,而汽油是以(L、ML)计量的,比如需要 15L 汽油。

【以太坊】Gas 和汽油是什么关系?

比如加满一箱油需要 40L



#2 Gas 如何计算

以太坊平台上的交易都有交易费,而且严格规定了每一步操作都会有不同的价格(例如:乘法消耗 5 个 Gas,加法消耗 3 个 Gas),在智能合约一节中我们讲过,所有部署到以太坊上的合约都将以代码形式来部署,

所以部署的代码需要

满足最小可用

,要一切从简,即

代码越少越好

逻辑越简单越好;



因为逻辑越复杂、计算量越大,所需的 Gas 越多

【以太坊】Gas 和汽油是什么关系?

Gas 消耗(图片来源于网络)



这就好比我们驾驶一辆 2.0T 的轿车走高速去天津与驾驶一辆有 20 个轮子且装载满满大货车走省道去天津,所需要的油量是不一样的,轿车可能需要 15L 汽油就够了,但大货车估计得需要 30L 汽油甚至都不够才能跑到天津。



作为对比,比特币的交易费用按照千字节来收取

#3 计量单位

先看下 ETH 中的单位 ,ETH 中最小单位是 wei,除了最小单位 wei,ETH 中还有其它的单位,如 Gwei、Kwei 等(你可以理解为人民币中的元角分厘豪,像比特币中的最小单位聪,1 BTC = 100000000 聪)。

Kwei = 10 的 3 次方 Wei

Mwei = 10 的 6 次方 Wei

Gwei 

= 10 的 9次方 Wei

MicroEther = 10 的 12次方 Wei

MilliEther = 10 的 15次方 Wei

Ether

 = 10 的 18次方 Wei

每单位的 Gas  Gwei 来计量

1 Gwei = 0.000000001 ETH 。

接下来,来看下交易的 Gas 还涉及哪些部分。

#4 Gas 的交易组成



在交易过程中,Gas 由 Gas Price 和 Gas Limit 组成,交易的总费用=已使用的 Gas Price * Gas Limit,就得到此次交易的 ETH 成本。



Gas Price 是浮动的,由交易发起方主动设定,比如你(如果设置太低,有可能没有矿工打包,如果太高,会提升打包优先级,但同时也会提升此次交易的成本)。



Gas Limit 为你在此次交易上愿意付出的最大 Gas 量,Gas Limit 也由交易发起方设定(每条交易最小为 21000,也可以设置大一些,但因为每个区块有 670 万的限制,所以矿工在选择交易时会有所取舍)。



【以太坊】Gas 和汽油是什么关系?

图片来源于网络

假设 

Gas Limit 为 21000,Gas Price 为 20Gwei,则

交易成本为:



21000 * 20 Gwei  = 0.00042 ETH

Gas 不够或多了怎么办?



你加了一箱油从北京到深圳,可是还没到达目的地就没油了,目的地虽没到达,但用完的汽油自然也就没了。



同样的道理,你的合约或交易执行过程中,你付的 Gas 不够了,用完了,抱歉,合约会回滚到最初的位置,同时你的 Gas 不会退还,因为矿工已经付出了算力

当然如果还有剩余 Gas 的话,也会将多余的退还给用户(多退少补是我们的优良传统,只不过 100% 的情况下都是补,呵呵)。



Gas 有代币吗?



并没有。



Gas 只是计量单位,并没有代币。当实际支付 Gas 时,都以 ETH 计算。那为什么不以 ETH 直接计量呢



#1 以 Gas 为计量单位,可以保证成本避免因 ETH 的价格波动带来的影响



#2 保障任何失控的操作,不会无限执行下去,因为没有 Gas 就停下来了。



延伸阅读(点击关键字阅读)



比特币有多少?

PoW 

挖矿

一枚比特币

 | 

区块链长这样

比特币/黄金 

比特币/现金

51%攻击 | 

价格通缩

智能合约

【以太坊】Gas 和汽油是什么关系?