热点、深度、趋势全掌握,尽在BTC区块圈

编写更低成本的合约:开发者Gas优化指南

图片由 Giorgio Trovato 拍摄于 Unsplash

image.png

以太坊上的每次计算、存储访问和数据传输都会产生 gas 成本,这直接影响用户费用和合约性能。

本文总结了 Udemy 的课程 “Advanced Solidity: Understanding and Optimizing Gas Costs”,涵盖了费用机制、calldata 与 memory 的区别、变量打包和编译器优化。

应用这些技术,每次交易可以节省数千个 gas 单位,并使你的合约更精简、更快且更经济高效。

1. 以太坊费用如何运作1.1 交易费用计算

以太坊交易费用很简单:

Gas used × Gas price (in gwei)

这决定了将你的交易包含在区块中需要支付多少 ETH。

1.2 区块 Gas Limit

每个区块都限制了总 gas 使用量——目前在主网上约为 25-30 百万——从而平衡了吞吐量(更多交易)与去中心化(更快的区块传播)。

1.3 EIP-1559 机制

自从伦敦硬分叉以来,费用分为:

用户通过 maxFeePerGas 和 maxPriorityFeePerGas 出价来控制成本和包含速度。

2. 节省 Gas 的五个关键领域

优化分为合约生命周期的五个阶段。专注于每个阶段都可以带来巨大的节省:

2.1 部署时2.2 计算期间2.3 交易数据2.4 内存管理2.5 存储操作3. 高级 Gas 节省技巧3.1 Payable vs Non-Payable

一个 non-payable 函数隐式地检查 msg.value == 0。如果你不需要拒绝 ETH 转账,将其标记为 payable 可以通过跳过该检查来节省 gas。

3.2 Intrinsic Gas

每笔交易都会产生 21 000 gas 的基本成本,包括签名检查、RLP 编码和共识验证。低于此限制的交易将被拒绝。

3.3 编译器标志 (–optimize-runs)3.4 Gas 成本规则一览3.5 Bitwise Operations3.6 Comparison Operators

严格的 </> 操作码花费 3 gas;<=/>= 增加一个额外的 ISZERO,大约 6 gas。 尽可能使用严格的比较。

4. 整合在一起

通过分层应用这些技术——优化你的数据布局、使用正确的内存模型、选择高效的操作码以及调整编译器设置——你可以显著降低每笔交易的 gas 成本。随着以太坊的不断发展,掌握 gas 不仅对于今天为用户省钱至关重要,而且对于构建未来的高性能 DApp 至关重要。

使用本文
0
共享
上一篇

Coinbase斥资29亿美元收购Deribit,加密货币市场迎来新格局

下一篇

Mint Blockchain 主网上线一周年回顾:增长之年与未来展望

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

阅读下一页

以太坊2025年第一季度资助拨款

本文总结了以太坊基金会在2025年第一季度提供的资助项目,这些项目涵盖了社区与教育、共识层、密码学与零知识证明、开发者体验与工具、执行层等多个领域,以及协议增长与支持。