Skip to content

XuHugo/gas_optimization_master

Repository files navigation

🚀 Gas Optimization Master Course

Master the Art of Solidity Gas Optimization - 掌握 Solidity Gas 优化的艺术

📖 Language / 语言选择: English | 中文

一个系统化的智能合约 Gas 优化课程,通过实战代码、完整测试和详细文档,从零开始学习高级 Gas 优化技术。适合所有想要提升智能合约性能和降低交易成本的开发者。

Solidity Foundry License Gas Optimized

🎯 课程特色

"在区块链世界,每一点 Gas 的节省都是真金白银"

💡 系统化学习路径

  • 🔧 编译器优化: 循环展开、分支优化、算术运算、方法选择器优化
  • 汇编级优化: 直接使用 EVM 指令实现极致性能
  • 💾 存储优化: 变量打包、位图操作、缓存策略、瞬态存储
  • 🏗️ 合约架构: 函数可见性、修饰符优化、库继承、批量调用
  • 🎨 设计模式: Airdrop、ERC标准、UUPS代理、投票系统、Permit签名
  • 🎲 高级技巧: CREATE2部署、地址预测、预编译合约利用

📊 实战数据驱动

  • 完整测试覆盖: 每个优化都有对应的测试用例
  • 📈 Gas报告对比: 优化前后的详细Gas消耗分析
  • 🔬 基准测试: 使用 Foundry 的 gas snapshot 功能
  • 📚 中文文档: 详细的优化原理和实现解析

🛠️ 现代开发环境

  • Solidity 0.8.30: 最新编译器特性
  • Foundry 框架: 快速测试和部署
  • 开箱即用: 预配置的优化环境

📁 课程结构

gas_master/
├── src/
│   ├── assembly/         # 汇编优化: Address0, Balance, MathOpt, MemoryExp, AssemblyErr
│   ├── compiler/         # 编译器优化: Loop, UnRoll, Split, Uint, Not, Error, ...
│   ├── contract/         # 合约层优化: External, Hooks, Clone, Multicall, PredictAddr, ...
│   ├── patterns/         # 设计模式: AirDrops, Erc20s, MerkleLib, UUPS, Votes, ...
│   ├── storage/          # 存储优化: Pack, BitMaps, Cache, Sstore, StringShort, ...
│   ├── examples/         # 示例(如有)
│   └── unorthodox/       # 非常规/实验优化(如有)
├── test/                 # 与上面各模块一一对应的测试
│   ├── compiler/ contract/ patterns/ storage/ ...
├── docs/                 # 中文文档(详见 docs/README.md)
├── script/               # 脚本:Create2.s.sol 等
├── lib/                  # 依赖:openzeppelin, solmate, solady, sstore3, forge-std
├── precompiles_analysis.md  # 预编译合约深度分析
├── foundry.toml
└── .gas-snapshot         # gas 快照

🚀 开始学习

🔧 环境准备

必要工具:

  • Git - 版本控制
  • Foundry - Solidity 开发框架

一键开始:

# 克隆课程仓库
git clone https://github.com/your-username/gas_master.git
cd gas_master

# 安装依赖(自动安装 OpenZeppelin, Solmate, Solady 等优质库)
forge install

# 验证环境
forge build

🧪 学习与测试

完整课程体验:

# 构建所有合约
forge build

# 运行全部测试(查看优化效果)
forge test --gas-report

# 生成 Gas 快照(用于性能对比)
forge snapshot

分模块学习:

# 编译器优化模块
forge test --match-path test/compiler/ --gas-report

# 存储优化模块
forge test --match-path test/storage/ --gas-report

# 设计模式模块
forge test --match-path test/patterns/ --gas-report

# 单个案例深入学习
forge test --match-path test/storage/Pack.t.sol -vvv

🔗 本地开发环境

# 启动本地测试链(可选)
anvil

# 在另一个终端部署合约进行实验
forge script script/Create2.s.sol --rpc-url http://localhost:8545

🛠️ 实用工具

🎯 CREATE2 地址生成工具

  • 📜 script/Create2.s.sol: CREATE2 部署演示脚本
  • 🔍 find_abc_address.sh: 暴力搜索特定前缀地址(靓号生成)
  • 🎲 generate_salt.sh: 随机 salt 生成器

使用示例:

# 生成以 0x0000 开头的合约地址
./find_abc_address.sh 0000

# 生成随机 salt
./generate_salt.sh

📚 学习资料

📖 课程文档

  • 🎯 课程总览: docs/README.md - 完整学习路径
  • 🔧 编译器优化: docs/compiler/ - 深入编译器层面优化
  • 💾 存储优化: docs/storage/ - 存储结构与Gas关系
  • 🏗️ 合约设计: docs/contract/ - 架构层面的优化
  • 🎨 设计模式: docs/patterns/ - 常见模式的最佳实践

📋 特别推荐

  • 🚀 预编译合约深度分析: precompiles_analysis.md
  • 💡 实战案例集锦: 各模块的 src/ 目录
  • 🧪 测试用例解析: 各模块的 test/ 目录

⭐ 明星案例

🏆 入门必学

🚀 进阶实战

🎓 专家级技巧

🎯 学习成果

完成本课程后,你将掌握:

💰 成本控制

  • ✅ 减少 20-50% 的 Gas 消耗
  • ✅ 理解 Gas 计算机制
  • ✅ 选择最优的数据结构和算法

🛠️ 技术能力

  • ✅ 编写高性能智能合约
  • ✅ 使用内联汇编优化关键路径
  • ✅ 设计Gas友好的架构

📊 分析技能

  • ✅ 使用 Foundry 进行 Gas 分析
  • ✅ 建立性能基准测试
  • ✅ 识别和解决性能瓶颈

⚙️ 开发环境配置

# foundry.toml - 已为你优化配置
solc = "0.8.30"          # 最新编译器
gas_reports = ["*"]      # 自动生成 Gas 报告
gas_snapshot_check = true # Gas 回归测试
optimizer = true         # 编译器优化开启

👥 社区与支持

🤝 参与贡献

我们欢迎所有形式的贡献!

  1. 🍴 Fork 本仓库
  2. 🌿 创建 特性分支 (git checkout -b feature/amazing-optimization)
  3. 💾 提交 更改 (git commit -m 'Add amazing optimization')
  4. 📤 推送 分支 (git push origin feature/amazing-optimization)
  5. 🔄 创建 Pull Request

💬 讨论交流

  • 🐛 发现 Bug?请提交 Issue
  • 💡 有优化建议?欢迎 Discussion
  • 📚 需要帮助?查看 Wiki

🏆 学习建议

📚 推荐学习路径

  1. 基础阶段 (1-2周)

    • 完成 compiler/ 模块所有案例
    • 理解基本的 Gas 计算原理
    • 掌握 Foundry 测试框架
  2. 进阶阶段 (2-3周)

    • 深入 storage/contract/ 模块
    • 学习内联汇编基础
    • 实践常见设计模式优化
  3. 专家阶段 (4-6周)

    • 挑战 assembly/ 模块
    • 研究预编译合约应用
    • 设计自己的优化方案

💡 学习贴士

  • 🔬 先测试,后优化: 始终以数据为准
  • 📊 建立基准: 记录优化前后的 Gas 消耗
  • 🎯 聚焦热点: 优化最频繁调用的函数
  • 🤝 实践分享: 在社区分享你的优化发现

📖 扩展资源

📚 推荐阅读

🎥 视频教程

  • 🎬 "Solidity Gas Optimization Techniques" - 配套视频课程(即将推出)
  • 🎬 "Advanced Assembly Programming" - 汇编编程深度解析

📄 许可证

本项目采用 MIT License 开源协议。


💡 "优化不是猜测的艺术,而是测量的科学"

在每次优化前后,务必通过测试和 Gas 报告验证实际效果

🌟 Star 本项目🔄 Fork 开始学习📢 分享给朋友

About

Gas Optimization Master

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published