理解 gas 成本可能会有些棘手,因为起作用的包含三个组成部分:gas price、ether 的价格和 gas 的单位。
你可能会在像 etherscan.io/gastracker 这样的网站上看到“gas price”,它会随着网络需求而波动。
Ether 的价格。显然,ether 越贵,gas 成本就越高。
最后,“gas”是一个告诉你交易有多昂贵的单位。将 Ether 从一个账户转移到另一个账户需要消耗 21,000 gas。与智能合约交互的成本会更高。
计算器
如果你只想完成一次转换,可以使用这个方便的计算器。
Gas Price
“gas price”通常以 Gwei 为单位计价。在低使用率期间,该数值在 15 gwei 左右波动,而在高使用率期间则会超过 100 gwei。在这种语境下,“gwei”到底是什么?
Ethereum 作为一种加密货币,可以细分到小数点后 10^-18 位。每一个这样微小的单位被称为一个“wei”。十亿 wei(即一个 giga-wei)是十亿分之一 Ether,也就是 10 亿 wei。(将 10^-18 乘以十亿即为 10^-9,或十亿分之一)。
“Gwei”是一个很方便的计量单位,因为每单位 gas 的价格恰好在十亿分之一 ether 左右波动。
gas price 是指你每单位 gas 需要支付多少 ether(而不是美元)。美元成本来自于将 ether 转换为美元的过程。
Gas
不要与不断波动的“gas price”混淆,每笔交易的 gas 成本是固定的。交易越复杂,gas 成本就越高。例如,Ethereum 转账始终固定消耗 21,000 gas。转移 ERC20 代币通常需要约 50,000 gas。
Gas 可以被概念化为“计算单位”,或者非常粗略地说,就像是假设的 CPU 上的一个时钟周期。
转换
(21,000 gas) (以 gwei 为单位的 gas 价格) (以美元为单位的 ether 价格) / (10 亿,用于将 gwei 标准化)
在撰写本文时,Ether 的价格约为 1,600 美元,根据 etherscan 的数据,以 gwei 计算的 gas 价格为 22,而一笔 ETH 转账需要 21,000 gas。将它们相乘,转账 Ether 的 gas 美元成本为 74 美分。
单位是如何相互抵消的
21,000 gas x (ether 单位 / gas) (美元 / ether 单位)。
“gas”项相互抵消,“ether 单位”项也相互抵消,因此我们最终的交易以美元计价。
为什么 gas 价格会波动
Ethereum 限制每个区块只能使用 3,000 万 gas。将其除以 21,000,这意味着一个区块中最多可以完成 1,428 笔 ETH 转账。如果超过 1,428 人想要进行转账,他们将不得不等待或支付更高的 gas 价格。请记住,他们不能改变 21,000 的转账成本,也不能(直接)改变 Ether 的价格。gas 价格是可由用户自由设定的,交易者可以选择支付他们想要的高价,但为了让他们的交易被打包进去,他们必须支付比其他交易者更高的价格。
由于区块空间有限,供求现象开始发挥作用。如果想要发送交易的人数超过了 Ethereum 的空间容纳能力,那么最积极的买家必须出价比其他交易者更高。
Gas Price 季节性
这些使用模式具有很强的季节性特征。大部分交易发生在美国的白天,因此在他们的白天时段,价格通常更高。来自 ethereumgasprice.org 的这个热力图非常实用。
这是在撰写本文时截取的快照。此时本地时区为亚洲时间,因此在亚洲的夜间(美国的白天),gas 价格更高。还要注意的是,周末的使用量通常较少。

Gas 消耗大户
向下滚动 etherscan gas 页面,你会看到导致最多 gas 消耗的智能合约。gas 消耗的模式遵循帕累托法则(80/20 法则),即 80% 的 gas 消耗来自生态系统中 20% 的部分。
在撰写本文时,与 Uniswap 相关的交易费用消耗了全网的 10%。
Ethereum 会销毁大部分的交易费用(矿工只获得一小部分),因此这表明在过去的 24 小时内,仅 Uniswap 就导致了超过 400 枚 Ether 被销毁。

了解更多
我们的 Solidity Bootcamp 非常全面地教授 gas 优化和定价机制。
最初发布于 2023 年 3 月 7 日