登录 后可观看高清视频
汇编与 EVM 课程 - NFT 市场 gas 优化
14次播放
18小时前
视频 AI 总结:
该视频是 Assembly EVM Op Codes 和 Formal Verification 课程的最后一部分,旨在帮助学习者掌握汇编和形式化验证技术。视频的核心内容是演示如何使用形式化验证工具 Certora 来验证一个用 Solidity 编写的 NFT 市场合约和一个用汇编重写的、更节省 Gas 的版本是否等价。通过这个过程,学习者可以学习到如何确保汇编代码在功能上与 Solidity 参考实现一致,从而构建更高效的智能合约。
视频中提出的关键信息:
- CodeHawks 平台: 学习者可以在完成课程后参与 codehawks 上的形式化验证竞赛,并有机会获得报酬。
- Gas Bad NFT Marketplace 项目: 该项目包含一个用 Solidity 编写的 NFT 市场合约(
nft_marketplace.sol
)和一个用汇编重写的版本(gas_bad_nft_marketplace.sol
),汇编版本旨在节省 Gas 费用。 - 形式化验证目标: 视频将演示如何使用 Certora 验证以下两点:
- 每当映射(mapping)被更新时,都会发出一个事件(event)。
- Gas Bad NFT Marketplace 和 NFT Marketplace 在调用任何函数后,最终状态是相同的(除了 Gas 消耗的差异)。
- Certora 的使用: 视频将从头开始编写 Certora 的配置文件和规范文件,并介绍以下概念:
- Ghost 变量: 用于在验证过程中定义额外的变量,以便在规则和Hook之间传递信息。
- Hooks(Hook): 用于在特定的底层操作(如存储变量的加载和存储)上附加 CVL 代码。
- Init State 和 Axiom: 用于初始化 Ghost 变量,并确保初始状态始终为真。
- 参数化规则: 包含未定义方法变量的规则,允许对多个方法进行验证。
- NFT Mock 合约: 视频首先使用一个简单的 NFT Mock 合约进行热身,验证总供应量(total supply)永远不会为负,以及铸造(mint)函数总是铸造一个 NFT。
- 乐观循环(Optimistic Loop): 在某些情况下,需要启用乐观循环来避免循环展开问题。
- 代码仓库: 视频提供了与课程相关的 GitHub 代码仓库链接,学习者可以在其中找到项目代码和资源。