ETH Gas Used
以太坊上每种操作(函数调用、合约交互、代币转账、部署智能合约、NFT 铸造等)会消耗不同数量的 Gas Used。
我们可以把这些 Gas Used 理解成 “执行以太坊虚拟机(EVM)操作的计算成本”。
🧩 一、Gas Used 的含义回顾
Gas Used = 执行交易时实际消耗的计算量。
总费用 = Gas Used × (Base Fee + Priority Fee)
比如:
-
简单转账:
21000 × GasPrice
-
调用复杂合约:可能上百万 Gas!
⚙️ 二、常见交易类型及典型 Gas Used 值
类型 | 说明 | 典型 Gas Used | 备注 |
---|---|---|---|
💰 普通 ETH 转账 | A → B 转 1 ETH | 21,000 | 最基础操作 |
💎 ERC-20 代币转账 | USDT / DAI 等 | 50,000 ~ 100,000 | 与代币合约交互 |
🔁 DEX Swap(Uniswap等) | 代币兑换 | 120,000 ~ 250,000 | 路径越复杂越贵 |
🏗️ 部署智能合约 | 新建一个合约 | 400,000 ~ 4,000,000+ | 根据合约大小变化 |
⚙️ 调用智能合约函数 | 如 approve() / stake() | 40,000 ~ 150,000 | 与逻辑复杂度有关 |
🖼️ 铸造 NFT(ERC-721/1155) | mint 一次 | 120,000 ~ 300,000 | 热门时Gas飙升 |
🏷️ NFT 购买 / 上架 / 出价 | marketplace 操作 | 150,000 ~ 300,000+ | 多步合约交互 |
🧩 多签钱包执行交易 | Gnosis Safe | 100,000 ~ 250,000 | 验签复杂 |
🧱 桥接跨链(Bridge) | L1→L2 资产转移 | 150,000 ~ 500,000+ | 涉及跨链验证 |
💾 写入存储 (SSTORE) | 修改链上数据 | 20,000 每次写入 | 这是EVM底层指令成本 |
🔍 读取存储 (SLOAD) | 读取变量 | 2,100 每次读取 | 不改数据便宜很多 |
🧠 三、Gas Used 是由 EVM 操作码累积而来
以太坊虚拟机(EVM)每执行一种操作(opcode)都会扣固定 Gas,例如:
操作码 | 含义 | Gas 消耗 |
---|---|---|
ADD | 加法 | 3 |
MUL | 乘法 | 5 |
SSTORE | 写入存储 | 20,000 |
CALL | 外部合约调用 | 700 |
LOG1 | 事件日志(1个参数) | 375 + 8×数据字节数 |
👉 所以,Gas Used 是所有指令的总和。
📊 四、常用估值(大致区间)
操作场景 | 典型 Gas Used |
---|---|
简单交易 | 21,000 |
Token Approve | 45,000–65,000 |
ERC-20 Transfer | 50,000–90,000 |
DEX Swap | 120,000–250,000 |
NFT Mint | 150,000–300,000 |
合约部署 | 400,000–3,000,000 |
L2 Bridge Deposit | 150,000–400,000 |
🔍 五、如何查看某笔交易的 Gas Used?
在 Etherscan 上打开任何交易详情页:
👉 https://etherscan.io/tx
你会看到类似:
Gas Limit: 250,000
Gas Used by Transaction: 186,543 (74.61%)
Effective Gas Price: 7.5 Gwei
Transaction Fee: 0.00139907 ETH
Gas Limit 是用户愿意花的上限
Gas Used 是实际消耗
多余的 Gas 会退回给用户。
🧮 六、如何通过节点或Web3获取 Gas Used
示例 Python 代码:
from web3 import Web3w3 = Web3(Web3.HTTPProvider("https://mainnet.infura.io/v3/YOUR_PROJECT_ID"))
tx_hash = "0x...." # 交易哈希
receipt = w3.eth.get_transaction_receipt(tx_hash)
print("Gas Used:", receipt['gasUsed'])