codecamp

以太坊 GAS

注:GAS,中文直译,气体或者汽油,在以太坊上是衡量工作量的计量单位,类似于我们每小时用了多少度电用kilowatt/hours, 千瓦/小时。以太坊上产生的各种交易、存储等活动都是需要Gas来推动的,Gas好比是燃料,推动以太坊虚拟机(EVM)来工作。

在创建时,每笔交易都会被收取一定数量的gas ,该气体必须由交易的发起者支付(tx.origin)。在 EVM 执行交易的同时,gas 根据特定规则逐渐耗尽。如果gas在任何时候用完(即它是负数),就会触发一个gas不足异常,这会结束执行并恢复对当前调用帧中状态所做的所有修改。

这种机制激励了 EVM 执行时间的经济使用,并补偿了 EVM 执行者(即矿工/质押者)的工作。由于每个块都有最大量的gas,它也限制了验证块所需的工作量。

gas价格是由交易发起人设定的值,他必须预先支付​gas_price * gas​给EVM 执行人。如果执行后剩余一些gas,则将其退还给交易发起者。如果发生恢复更改的异常,已用完的 gas 将不予退还。

由于 EVM 执行者可以选择是否包含交易,交易发送者不能通过设置低 gas 价格来滥用系统。


以太坊 交易
以太坊 存储、内存和堆栈
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }