# Gas Fee 燃油费机制

By [un.Block](https://paragraph.com/@un-block) · 2021-10-09

---

### **⛽️ 为什么需要支付 Gas Fee**

在 Ethereum 网络以及其他的区块链网络，当你进行转账、通过合约发送代币或在区块链网络上进行任何其他操作的时候，你必须为该运算付费，交易的手续费以 Gas 进行计算，通过 Ether（该网络下的主代币） 支付 Gas Fee（燃油费）。一笔交易的 Gas Fee 可通过 Gas Price（油价） 和 Gas Limit（油量限制） 计算得出。

### **Gas Price**

Gas Price（油价） 是**每单位 Gas 的价格**，它的计价单位是 Gwei（1 Gwei = 0.000000001 ETH，10 的负 9 次方）。假如 Gas Price 设定为 40，每一 Gwei 就是 0.00000040 ETH。

Gas Price 受网络拥挤程度的影响，当网络资源充裕的时候，Gas Price 低，交易手续费低；当网络拥挤不堪的时候，Gas Price 的价格可以飞上天，不同链的网络情况都不同，因此 Gas Price 都不一样。

Gas Price 的高低决定了交易被矿工打包的快慢，矿工更倾向于先打包 Gas Price 高的交易（钱能使得鬼推磨）以获取更高的挖矿收益。因此，假如你想让交易更快被执行（抢购、恐慌抛售的时候），Gas Price 越高越好，有的时候为了抢购，人们甚至付出比物品价格更高的 Gas Price 来贿赂矿工；假如你想省钱，例如朋友之间转账（不追求到账速度），你可以降低你的 Gas Price，但这样会使交易变慢，要注意的是，过低的 Gas Price 可能导致交易的失败或一直等待，阻塞后续交易。

在阻塞状态下，你可以通过向自己发起一笔0元转账，指定相同的 Nonce 值，支付手续费，以消除阻塞状态。

需要注意的是，在目前的机制下，交易失败，Gas Fee 是不返还的，因此切勿为了省钱设置过低的 Gas Price，这样会导致交易失败或阻塞；交易阻塞后还需要再支付一次手续费消除阻塞，得不偿失。

### **Gas Limit**

Gas Limit（油量） 是你愿意为一笔交易花费的**最大数量的 Gas 单位**。在去中心化网络中的每一步运算都要消耗 Gas ，Gas Limit 决定了你计划使用的计算资源的上限。

一般的标准交易的 Gas Limit 为 2100，假如 Gas 耗尽了，但运算未完成，交易会因为 “Out of Gas” 而失败（没油了，跑不动了）；假如运算在 Gas 耗尽前完成，已消耗的手续费会被矿工收取，未消耗的部分将不会被收取。

因此，一笔交易最高被收取的手续费是 **Gas Price \* Gas Limit**；目前 ETH 网络上每一个区块的 Gas Limit 是 15,000,000 (上段时间经过投票，从 12.5M 提升到了 15M )，区块 Gas Limit 的提升意味着每个区块能存放更多的交易内容，一定程度上降低了 Gas Price。

在智能合约开发中，Gas 消耗也是需要被考虑的在内的因素（每一步运算都在烧钱），死循环、无意义的操作会导致 Gas 的浪费；代码审计中也会找出合约代码中浪费 Gas 的操作。

### **Tx Fee**

![](https://storage.googleapis.com/papyrus_images/2977d549f6c778cd016fd02754dadb68b835dd064a5e06052c6e82fefb590029.jpg)

**Tx Fee = Gas \* Gas Limit**

Tx Fee 就是最终消耗的交易手续费。

每条链都有自己的 Sacn 工具，以 Ethereum 为例，在 [_Etherscan_](https://link.zhihu.com/?target=https%3A//etherscan.io/) 上可以查看全部实时交易记录，每一条录上都记录着 Gas Price、Gas Limit、Tx Fee 等信息。

### **总结**

ETH 网络一直以拥堵出名，UniSwap 空投派钱、CryptoKitties 游戏火热的时候 Gas Price 更是贵上天，庆幸有 ETH 的网络升级和区块 Gas Limit 的上调使 Gas Price 有所回落。相比 ETH，BSC（Binance Smart Chain）的 Gas Price 要低得多。Gas Price 也是影响用户选择使用什么网络的一个重要因素，毕竟谁也不想支付过高的交易手续费。

### **相关阅读**

Ethereum: [_GAS AND FEES_](https://link.zhihu.com/?target=https%3A//ethereum.org/en/developers/docs/gas/)

YouTube: [_What is Ethereum Gas?_](https://link.zhihu.com/?target=https%3A//www.youtube.com/watch%3Fv%3DAJvzNICwcwc%26t%3D3s)

**区块链开发：OpenZepplin 发布 4.1**
----------------------------

![](https://storage.googleapis.com/papyrus_images/0ee5d41151d1b58d36cf2beb3123df31c4407a08f1e04552115bbaaad7a97979.jpg)

知名智能合约开发库 OpenZepplin 近日发布了 4.1 的版本更新，有如下亮点：

1.  受以太坊柏林升级的影响，OpenZeppelin 用 UUPSUpgradeable 代替 Transparent Proxy 以降低 Gas。
    
2.  发布 Multicall，用户可以在一笔交易中底层调用（call）个多个函数。
    
3.  ERC20FlashMint 实现了 ERC3156，支持 flashLoan 和 flashMint。
    

官方更新日志：[_OpenZeppelin Contracts 4.1_](https://link.zhihu.com/?target=https%3A//blog.openzeppelin.com/openzeppelin-contracts-4-1/)

---

*Originally published on [un.Block](https://paragraph.com/@un-block/gas-fee)*
