引言
在以太坊出现的很多地方我们都能看到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/