
以太坊 gas 费详解:写给自我托管用户
在 Ethereum 上的每一个操作都要花费 gas,而对于自己保管密钥的人来说,这笔费用决定了一笔交易是确认成功还是卡住不动。用通俗的方式把 以太坊 gas 费详解 讲清楚,是自我托管用户能做的最有用的事情之一:一旦弄懂其中的机制,钱包显示的那些数字就从谜团变成了你可以主动做出的决定。
本指南讲解你究竟在为什么付费、费用公式、EIP-1559 如何把一笔费用拆成被销毁的 base fee 加上给验证者的小费、为什么连失败的交易也要花钱,以及 SSP 和更便宜的 L2 链如何融入其中。刚开始在 SSP 里使用 ETH?先看 SSP 中的 Ethereum,再回到这里。
gas 到底是什么
gas 是 Ethereum 用来衡量计算工作量的单位。每一个操作都有固定的 gas 成本,网络会把它们加总:一笔普通的 ETH 转账很便宜,因为它做的事很少,而一次 swap 或 DeFi 交互会触及更多合约代码、消耗更多 gas。gas 之所以存在,是因为区块空间是共享且有限的,所以网络要为这种空间的需求定价,并支付给执行这些工作的验证者。Ethereum 基金会的 gas 文档 是权威参考。
费用公式:gas used 乘以 gas price
任何一笔交易的总费用都是一个简单的乘法:
费用 = gas used × gas price
gas used 是这笔交易实际完成的工作量;gas price 是你为每一单位支付的价格,以 gwei 计价——它是 ETH 的一个细分单位,一个 ETH 等于十亿 gwei,一个 gwei 等于十亿 wei,wei 是最小单位。这样,一笔使用 21,000 gas、价格为 20 gwei 的转账要花 0.00042 ETH;价格为 80 gwei 时则要花四倍,尽管工作量完全相同。每单位的价格随需求变动,而工作量保持不变。
EIP-1559:base fee 加 priority fee
2021 年的 EIP-1559 升级改变了 gas price 的确定方式:不再是人人靠猜的盲拍,费用现在分成两部分。
base fee 由协议按区块用算法设定,依据是上一个区块有多满:当区块超过半满时它会上升,当区块更空时它会下降,因此价格能平滑地响应需求。最关键的是,base fee 会被 销毁——永久从流通中移除——所以它不会流向任何验证者。
priority fee,也就是小费,是你额外加上去、用来激励验证者更早把你纳入区块的部分。由于 base fee 被销毁,小费才是验证者真正赚到的,因此当网络繁忙、区块空间被争抢时,更高的小费会胜出。base fee 对一个区块里的所有人都相同;小费才是你能控制的杠杆。完整规范请见 EIP-1559 本身。
maxFeePerGas 与 maxPriorityFeePerGas:你设定的上限
由于在你的交易等待期间 base fee 会在区块之间变动,EIP-1559 让你设定两个上限,而不是单一的固定价格。
- maxPriorityFeePerGas 是你愿意付给验证者的最高小费。
- maxFeePerGas 是你为每一单位 gas 总共愿意支付的绝对上限——base fee 加小费合计。
你被收取的是交易所在区块的实际 base fee 加上你的小费,绝不会超过 maxFeePerGas;如果 base fee 比预期低,余额会退还给你,因此即使在你等待期间出现价格飙升,也不会多收你的钱。包括 SSP 在内的大多数钱包,都会依据当前状况自动填好这些值,所以你通常是选一个速度,而不是手动输入数字。
gas limit 与 gas used,以及为什么失败的交易仍要花 gas
还有一个数字会让人困惑:gas limit,即你授权一笔交易可消耗的最大 gas 量。它是对工作量设的安全上限,而不是价格——你只会被收取实际用掉的 gas。一笔普通转账总是用掉 21,000 gas;对于合约交互,钱包会估算一个带有余量的上限。
棘手的地方在于失败。如果一笔交易耗尽了 gas 或中途 revert,已经做完的工作仍然要付钱。一笔失败或被 revert 的交易仍然要花 gas。 gas limit 设得太低是 gas 不足而失败的常见原因,这就是为什么让钱包来估算上限比手动调节更稳妥。
gas 费为什么会飙升
gas 价格上涨只有一个原因:对区块空间的需求超过了供给。区块大小是有上限的,所以当很多人同时交易时——某个热门 token 上线、抢手的 NFT mint、市场剧烈波动——base fee 算法会把价格一个区块接一个区块地往上推,直到需求降温,与此同时小费也随着用户争抢被纳入而攀升。
正因如此,Ethereum 主网上的费用波动很大:同一笔转账在清闲时段也许只花几美分,而在狂热时段却要好几美元;工作量没变,变的只是价格,这正是时机很重要的原因。
钱包如何估算费用:慢、普通、快
你很少需要手动设定原始的 gwei。钱包会读取当前状况,并提供预设档位——通常是慢、普通和快——对应不同的小费水平和确认时间。
- 较慢 的选项用较低的小费:更便宜,但可能更久,而且在价格飙升时它可能一直挂着。
- 普通 的选项以合理的价格争取在接下来的几个区块内确认。
- 较快 的选项付出更高的小费以更早被纳入,在你赶时间或面对剧烈波动的价格时很值得。
这些都是估算,而非保证。如果一笔定价偏低的交易卡住了,就用相同的 nonce 和更高的费用重新发送——也就是 用 SSP 发送和接收 Ethereum 中讲到的"加速"或"替换"操作。在 SSP 中,替换是一笔新交易,所以它仍然需要 2-of-2 的共同签名。
SSP 中的 gas:通过 UserOperation 来支付
SSP 把你的 ETH 保存在一个 2-of-2 multisig 中,而在 EVM 链上,这是一个 ERC-4337 智能合约账户——这改变的是交易的形态,而非 gas 的经济逻辑。它不会广播一笔普通交易,而是把账户的意图表达为一个由 bundler 提交上链的 UserOperation。gas 作为这个 UserOperation 的一部分被支付,底层仍然适用同样的 EIP-1559 base fee 和 priority fee:你仍然是以 ETH 支付 gas used × gas price,并由两台设备以单一的 Schnorr 聚合操作共同签名。
account abstraction 还让 gas 代付成为可能:ERC-4337 允许一个 paymaster 代用户支付 gas,因此原则上一笔费用可以由第三方承担,或用某种 token 而非 ETH 来支付。这是该标准的一种能力,而不是对某个具体行为的承诺——更深入的内容属于 account abstraction(ERC-4337)讲解。就目前而言,在账户里留一些 ETH 来支付 gas 即可。
天生更便宜:L2 链上的 gas
如果主网费用让你觉得太贵,你并不需要凡事都在那里交易。同一套 SSP 密钥可以触及一系列 EVM 链,而像 Polygon 和 Base 这样的 L2 网络与侧链要便宜得多——常常只要几分之一美分——因为它们把繁重的工作放到主网之外完成,那里的区块空间远没有那么稀缺。
模型是一样的——你用该链的原生代币支付 gas,且通常适用 EIP-1559 风格的定价——但绝对数字相比之下极其微小。关于何时以及如何使用它们,请见 在 Polygon、Base 及其他 EVM 链上使用 SSP。
Bitcoin 与 Ethereum 费用的简短对比
如果你是从 Bitcoin 转到 SSP,Ethereum 的费用模型会让你觉得相似却又不同:两者都为稀缺的区块空间定价,也都允许多付一点来更快确认,但差别在于你为什么付费。Bitcoin 的费用基于交易的字节大小——它在区块里占的空间——以每字节多少 satoshi 计费,没有任意计算,因此也没有 gas limit 或 gas 不足而失败。Ethereum 的费用为计算工作量定价,会随你交易的内容而变,并在其上叠加 EIP-1559 的 base fee 加小费结构。关于 Bitcoin 这一侧,请见 SSP 中的 Bitcoin 费用策略。
给自我托管用户的实用建议
- 选好交易时机。 如果一笔转账并不紧急,挑一个更清闲的时段可以显著降低成本。
- 共同签名前先看一眼估算。 SSP 会在你审核时显示费用:批准之前,在两台设备上都看一眼。
- 为 gas 留一点 ETH 缓冲。 只有 token 的余额无法支付自己的 gas,所以总要留一些 ETH——以及每条 L2 链上正确的原生代币。
- 合适时就用 L2。 对于频繁或小额的转账,一条更便宜的 EVM 链所节省的,远超过在主网上精打细算时机。
- 交易卡住时别慌。 一笔卡住的交易通常可以用相同的 nonce 重新发送来加速。
接下来去哪里
一旦你看清 gas 的各个部分,它就不再令人生畏:你支付 gas used × gas price,这个价格是被销毁的 base fee 加上你能控制的小费,而即便是失败的交易也要为它做过的工作付费。从这里开始,用 用 SSP 发送和接收 Ethereum 来实践,或用 在 Polygon、Base 及其他 EVM 链上使用 SSP 探索更便宜的一面。无论你在哪条链上,SSP 的原则始终如一:两把密钥,一个签名,以及你能掌控的费用。


