1 个不稳定版本
0.1.0 | 2022年9月23日 |
---|
#11 in #优化
14KB
217 代码行
sigop
一个用于优化您的Solidity函数签名的命令行工具。在我看到transmissions11关于这种优化的评论后,我想要创建这个工具。
🧪 工作原理?
优化器接收一个函数签名,例如 myFunction(address)
,并尝试将其与字典生成的后缀结合。
对于每种组合,计算并验证4字节函数选择器:如果它以指定数量的零字节开始,则找到了优化。
🚀 入门!
⚙️ 安装
使用cargo安装
cargo install sigop
或从源代码本地构建
make build-release
🏁 快速入门
./target/release/sigop -s "myFunction(address)"
它应该打印
[2022-09-23T04:06:03Z INFO sigop::optimizer] Found this optimization: myFunction_6mI(address)
使用 cast
,我们可以看到优化的函数选择器
$ cast sig "myFunction_6mI(address)"
0x00001926
✏️ 自定义参数
您可以指定优化器使用的自定义参数
length
:原始函数名之后后缀的最大大小。target
:您想在优化后的函数选择器开头拥有的零字节数量。
示例
$ sigop -s "myFunction(address)" --length=4 --target=3
[2022-09-23T04:06:26Z INFO sigop::optimizer] Found this optimization: myFunction_LYq3(address)
$ cast sig "myFunction_LYq3(address)"
0x0000006d
结果
使用Remix,我们可以跟踪调用这些函数的gas成本
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.14;
contract Test {
// Execution cost : 22132
function myFunction(address a) public pure returns (address) {
return a;
}
// Execution cost : 22074
function myFunction_LYq3(address a) public pure returns (address) {
return a;
}
}
🤖 作者
由🤖 Luca Georges François 🤖 用❤️制作
依赖项
~10–19MB
~240K SLoC