Gas总结

以太坊

#1

1、gas是什么?
跟gas有关的几个概念gas,usedgas,gasprice,gaslimit
gas:每笔交易设置的最大可用gas,相当于每笔交易的gaslimit
usedgas:每笔交易实际花费的gas,并不是设置了多少gas,就使用多少gas,实际花费gas的计算参照gas计算部分
gasprice:gas的单价,每笔交易的usedgas * gasprice即为本次交易的手续费。
gaslimit:这里的gaslimit指的是每个块的最大gas限制,其作用可以限制打包的交易数量
每笔交易需要设置gas,gasprice. 有些项目上默认gas为90000,默认gasprice为18 * 1e6
2、gas有什么用?
生成区块的手续费,用来奖励给生成区块的账户。同时作为一种防止恶意操作的手段,比如防止大量的垃圾交易阻塞有效交易打包进区块(因为有手续费会提高垃圾交易的成本),防止合约代码的无限执行(超过gaslimit即恢复到原始状态,同时所有gas都会被花费)等。
3、每笔交易花费的usedgas怎么计算?
以太坊中,一般交易花费的gas默认是params.TxGas =10 。合约执行花费的usedgas由两部分组成,一部分是基础gas,默认值是params.TxGasContractCreation = 53000,第二部分是合约交易中data数据中非零字符数unzeronumparams.TxDataNonZeroGas + data数据中零字符数zeronumparams.TxDataZeroGas
其中TxDataNonZeroGas默认是68,TxDataZeroGas默认是4
如果合约执行成功,则上述计算的usedgasgasprice即为本次交易的手续费,剩余的gasgasprice-usedgasgasprice将返还给用户,如果合约执行失败,则合约设置的gasgasprice将全部作为手续费。
4、gas,gasprice的设置
系统有默认设置,也可以发交易时设置在sendtransaction接口中设置。具体可查接口说明。


#2

受教,顶一波-0- 2020,

现在我懂gas了。

抽成嘛。

你的交易经过我这里了,雁过拔根毛。


#3

多谢!
欢迎点赞!
欢迎批评指正!
欢迎留言交流!