星球日报
搜索
手机客户端
iPhone · Android
微信公众号
微信公众号

iPhone · Android

微信公众号

科普园地09 |以太坊的Gas和手续费

2019-04-03

智能合约这么好,可不是白用的。

智能合约,顾名思义,是指计算机代码可以自动执行的合同;以太坊虚拟机是用来执行智能合约的;智能账户是智能合约能够被执行的载体。换句话说,智能账户,这个“账户”是可以被以太坊虚拟机操控的,依据什么操控呢,依据智能合约来操控。

天下没有免费的午餐,智能合约这个功能这么好,可不是白用的,你在以太坊进行交易的时候也要付给矿工手续费的,那么在以太坊系统上,你要付出的手续费是怎么回事,Gas和手续费之间又有什么关联呢?

科普园地09 |以太坊的Gas和手续费

一、以太坊Gas是什么?

Gas是一个英文单词,中文意思是:瓦斯、汽油,这个东西在日常生活中,是一种消耗品。以太坊Gas类似于汽车燃油,智能合约的驱动需要以太坊Gas。

以太坊为什么会产生“燃料”呢?以太坊里面的Gas是什么意思呢?以太坊的Gas和交易费息息相关。以太坊交易需要手续费,这个Gas就是以太坊手续费的计算模式。

在以太坊的设定中,交易费类似于一种加密的燃料,也就是Gas,这个东西可以驱动智能合约的运动。当以太坊在区块链上执行交易时,燃料将按照特点的规则而逐渐被消耗。从这一点看,Gas和它的本意一样,像汽车燃油一样,想要发动汽车,必须需要燃油。

二、以太坊Gas和比特币交易费有哪些不同?

天下没有免费的午餐,无论是比特币,还是以太坊,都需要手续费,但是二者的手续费模式是不一样的。

比特币是直接支付比特币作为转账手续费的,以太坊却不是这样的:

以太坊本质上是一个虚拟机,这个虚拟机是去中心化的,是全世界各国人民各自掌控的虚拟机联合起来形成的“世界级的计算网络”。

当你发送token,执行合约、转移以太币,或者在区块上做其他事情时,计算机在处理这笔交易时,需要进行计算,这个计算过程需要消耗网络资源。

这样一来,你必须支付“燃料费”(也就是Gas),才能让计算机为你工作,让矿工为你处理交易。

通常情况下,发送方愿意支付的Gas价格越高,矿工从交易中获得的价值就越大,矿工们也就越有可能选择这个交易。

通过这种方式,矿工可以自由地选择交易。为了给发送者设置Gas价格做参考,矿工们可以直接提出他们执行交易所需的最低Gas 价格。

三、以太坊Gas的消耗量该如何计算?

以太坊虚拟机处理交易时,虚拟机会根据交易中确定的一个一个的操作指令进行逐个处理,而每个操作指令都有明文规定的Gas消耗量。

以太坊系统规定了两个账户:一个是正常账户,一个是智能账户:

普通的转账交易,也就是调用“正常账户”,所需要的Gas是固定的21000;

而调用“智能账户”的的话,因为智能合约的复杂程度不同,使得所需要的Gas也不同。处理交易占用的资源(计算量、内存等)越多,那么所需要的Gas也就越多,比如:执行一次加法运算将消耗3Gas,如果执行更复杂的运算,那么消耗的Gas就更多。

大家可能会问一个问题:当用户的交易涉及一个恶意的智能合约,这个合约超级复杂,执行这个合约要消耗无限的燃料,怎么办呢?

以太坊系统的方案是:为了避免恶意智能合约引起无限的Gas消耗,用户需要在发送交易时设定允许消耗的燃料上限,即GasLimit,这样一来,就算有恶意智能合约,最坏情况也只是消耗 GasLimit 所规定的燃料范围之内。

四、以太坊Gas和交易手续费有什么关系?

以太坊系统上,你所支付的手续费等于:GasPrice 乘以GasUsed。

我们可以把 GasPrice 理解为是燃油单价, GasUsed 理解为汽车所需多少升燃油

对于汽车,我们举一个例子:

假如说每升汽油是20块钱,一万升汽油就是20万块钱。对于以太坊,每Gas是20吉伟(吉伟是以太币的数量单位),一万个 Gas 就是:20乘以一万,等于20万吉伟,2万吉伟等于0.0002以太坊,也就是说,本次交易手续为0.0002以太坊。

(具体的兑换值见下表)


科普园地09 |以太坊的Gas和手续费

▲注释:以太币数量的基础单位是“伟”,以太币的数量单位有“伟、芬尼、以太”,其中,“以太”被用作普通交易;“芬尼”被用作微交易;“萨博”和“伟”被用作进行关于费用和合约实施。

由此我们可以发现,Gas并不是以太坊,它是一种单独的体系,它的汇率与以太坊成一定的比例,经过了比例兑换,最终形成交易费。

具体的汇率查询,可以查看以下网站:https://jin10086.github.io/etherconVerter/

Gas价格和以太币价格都是由市场自由调节的,但是二者是不一样的,他们的不同之处在于:

以太币的价格是根据市场情况波动,

而Gas的价格由矿工决定的,如果燃料价格低于矿工们的最低要求,矿工就会拒绝处理交易。

Gas和以太坊分离,可以保护系统免受随着以太坊价格的快速变化而可能出现的波动。

大部分矿工都会选择利益优先,处理交易时候,他们会按Gas价格从高到底排列,优先处理Gas价格高的,如果你很着急交易 ,就需要提高Gas价格,让矿工早点看到你;如果你不着急呢,你只需要设定一个Gas价格,这个价格在矿工设置的Gas价格底线之上就行了。

五、Gas是怎么获取的呢?

实际上,Gas就是从矿工那里购买的以太币,用户自己账户中的以太币就可以向矿工购买Gas,以太坊客户端根据指定的交易最大支出限额,自动用以太坊购买Gas。

六、Gas最后去了哪里?

每笔交易,交易发起方都要设置交易的Gas限定和 Gas价格,不同的操作会产生不同的Gas成本,Gas用完时矿工将停止执行,使用的Gas会作为奖励,奖励给挖矿的矿工,这将涉及到几下几种情况:

第一种情况是,如果有剩余Gas,那么这些剩余的Gas会退还给交易发起方或智能合约创建者。比如我发送1个以太坊给依依,我设置的 Gas limit 是 5万,正常需要消耗的Gas是21000,那么,剩下没有被消耗的29000会返还给我。

第二种情况是,如果我设置的Gaslimit太低,或者我账号中的以太坊不足以支付我的Gas消耗,那么,这笔交易会因为Gas不足而被取消,并且用于计算的Gas不会退回到我的账户。

第三种情况是,如果交易失败,我也必须为已经占用的计算资源来支付手续费。

七、怎么设置合理的Gas价格?

每次交易之前,可以查询这个网站来确认需要设置的Gas价格:https://ethGasstation.info/

原创文章,作者:OK情报局。转载/内容合作/寻求报道请联系 report@odaily.com ;违规转载法律必究。

参与讨论

登录后参与讨论

OK情报局

特邀作者

OK情报局

OKEx旗下高品质的区块链栏目。

总文章数: 20


分享至

微信扫一扫分享

0