带你了解下关于gas一些基本常识

2023-02-24 10:37:32 浏览数 (1)

引言

在以太坊出现的很多地方我们都能看到gas这个东西,比如购买NFT需要花费ETH,同时也需要支付gas费用,铸造NFT也是同样。那么究竟什么是gas费,为啥要支付gas费呢?

正文

gas的意思是汽油,我们可以把gas费叫做矿工费,就是支付给矿工的手续费。把矿工比喻为汽车,汽车需要汽油才能跑。如果想要矿工不断的挖矿,就要不断的给他们加油。

上面是通俗的解释。如果你不想了解技术细节,看到这里就可以了。

在执行一笔交易或者运行智能合约时,消耗的gas fee可以表示为下面的公式:

代码语言:javascript复制
gas fee = gasPrice * gasUsed

gasPrice 是由交易的发起者来设置的,但是并不是设置的越低越好。因为矿工可以选择先打包那些gas价格高的交易,gas价格低的可能要等很久或者不会被打包。gasPrice的单位一般是gwei,这个后面再细说。

gasUsed是由交易(或者是执行合约代码)的计算量来决定的,在以太坊上,对于EVM中每个被执行的命令都会有一个特定的消耗,用单位Gas计数。下面这个表就是执行不同的命令消耗的gas数量,单位是

代码语言:javascript复制
step    1    Default amount of gas to pay for an execution cycle.
stop         Nothing paid for the SUICIDE operation.
sha3          Paid for a SHA3 operation.
sload          Paid for a SLOAD operation.
sstore          Paid for a normal SSTORE operation (doubled or waived sometimes).
balance          Paid for a BALANCE operation
create          Paid for a CREATE operation
call          Paid for a CALL operation.
memory         Paid for every additional word when expanding memory
txdata          Paid for every byte of data or code for a transaction
transaction          Paid for every transaction

我不确定最新的数据还是不是这个,没找到最新的来源。

有时候,我们也能看到gas limit这样的概念,这个是你对一笔交易给的最大gas消耗,就是不管你怎么搞,最后完成交易我不希望超过这个值。

举个例子,例如一笔交易:

代码语言:javascript复制
{ from:web3.eth.accounts[], data:tokenCompiled.token.code, gas:  },

gas参数设置这个交易最多能使用多少gas,这个就是gas limit,另外就是交易里面还可以再加一个参数gasPrice。

有人可能觉得奇怪,gas price的单位为啥不是ETH,而是gwei。他们之间又有什么关系呢?下面这个表是这些单位的换算关系:

单位

价值

Wei

wei

1

1 wei

Kwei(babbage)

1e3 wei

1,000

Mwei (lovelace)

1e6 wei

1,000,000

Gwei (shannon)

1e9 wei

1,000,000,000

microether (szabo)

1e12 wei

1,000,000,000,000

milliether (finney)

1e15 wei

1,000,000,000,000,000

ether

1e18 wei

1,000,000,000,000,000,000

你也可以在下面这个网址进行快速换算:

http://eth-converter.com/

0 人点赞