用途:分析并优化 Aptos Move 合约的 Gas 效率,找出昂贵操作并提出优化建议,适用于主网部署前、交易成本偏高或构建高频交易 DeFi 协议时。
主要能力:
- 存储优化:精简存储数据、选择高效数据结构、紧凑打包 struct 字段、移除无用字段。
- 计算优化:避免大集合循环、缓存重复计算、使用位运算、减少 vector 操作。
- 引用优化:优先借用而非移动,高效使用 & 与 &mut,避免多余拷贝。
- 昂贵操作识别:全局存储读写与 exists 检查、vector 增长/查找/中间删除、字符串拼接与 utf8 校验。
- 优化模式:批处理减少存储访问、存储打包、惰性求值、精简事件数据、用 Table 替代 vector 实现 O(1) 查找、位标志替代多个 bool。
- 测量手段:使用 --simulate 获取 gas_unit_price、max_gas_amount、gas_used;编写测试用 gas::remaining_gas() 度量单测 Gas。
- 配套清单与报告模板,并列出常见优化前后对比。
使用方式:当出现“optimize gas”“reduce gas costs”“gas analysis”“make contract cheaper”“analyze gas usage”等触发语时启用。可模拟交易估算 Gas:
aptos move run-function
--function-id 0x1::module::function
--args ...
--simulate
也可在测试中度量:
let gas_before = gas::remaining_gas();
expensive_operation();
let gas_used = gas_before - gas::remaining_gas();
适用场景:主网部署前优化、交易成本高时、高频操作优化、多笔交易的 DeFi 协议。
限制:禁止为了优化而移除安全检查(访问控制、输入校验);优化后必须重新测试;分析期间不得读取 .env 或 ~/.aptos/config.yaml(含私钥)。具体费用与效果暂未提供。