Gas 在整个以太坊的运作中,很多人认为以太坊的 Gas 就是完全抄袭比特币的交易 Fee。实际上并不完全如此。
今天 Noah 和大家聊聊以太坊中的 Gas,以及以太坊为什么需要 Gas?
比特币的交易费 Fee
要聊 Gas 之前,我们先看一下比特币中的交易费 Fee。
比特币的 Fee 主要有 3 个作用。
- 防止垃圾交易:因为交易需要支付额外的比特币,所以这样可以防止用户恶意发送大量垃圾交易,破坏比特币网络。
- 决定交易优先级:谁支付的费用更高,谁就会更快被打包确认。
- 长期安全性:随着区块奖励的逐渐减半,交易费会逐渐成为矿工的主要收入来源。可以防止在未来区块奖励接近 0 时仍然有矿工在进行挖矿。
比特币的交易费是按照聪美字节来计算的,聪是比特币的最小计量单位,一个比特币可以分为 1 亿聪。如果当前网络拥堵情况是 10 聪每字节,那么发送 1000 字节的交易需要花费 0.0001 BTC,也就大概是 6 美元。通常一笔转账大概需要 200-250 字节。这取决于输入的 UTXO 数量、输出找零 UTXO 数量和签名复杂性。
如果 Fee 设置的过少,那么交易可能永远不会被打包。
目前矿工的收入主要还是区块奖励,大概占到 90% 以上,Fee 的占比不到 10%。
以太坊的 Gas
以太坊的 Gas 最重要的目的不是比特币 Fee 的三点作用。
以太坊作为一个通用的世界计算机,上面可以运行无限复杂的智能合约。但是运行智能合约需要调用多少系统资源是需要进行限制的,如果没有限制的话,很可能会出现一些无限循环的恶意合约,对整个以太坊系统发起 DDoS 攻击。
所以 Gas 的一个作用就是限制智能合约对资源的使用。我们在调用合约时,通常需要指定一个 Gas 的上限,当 Gas 消耗达到上限时,会终止智能合约的运行。
这也是 Gas 的首要作用。
同时以太坊的 Gas 与比特币的 Fee 一样具有三个特点:防止滥用、决定优先级和激励矿工。
Gas 的计量单位是 wei,wei 是 Ether 的最小单位。一个 Ether 是 1 的 18 次方个 wei。但是由于位数太多,我们在计算 Gas 价格的时候通常会用 gwei 作为单位,1 gwei 也就是 10 的 9 次方个 wei。
Gas 费用的计算公式是:Gas 数量 x Gas 价格。
如果 Gas 价格为 20gwei。我们调用某个合约需要花费 100000 个 Gas。那么一共会花费 100000 x 20 = 2000000gwei,也就是 0.002ETH。以太坊目前是 2500 美元左右,那么这次交互一共会花费 5 美元。
如果 Gas 设置过低,那么通常会在发起转账几分钟内被矿工拒绝,并退回转账的 Ether,但消耗的 Gas 不会退还。
目前矿工的主要收入是区块奖励,占到 60-80%。Gas 大概占到 20%-40%。
以上就是以太坊中 Gas 设计的目的和作用。