#优化 #solidity #cli-tool #函数签名

app sigop

一款优化您的Solidity函数签名的工具

1 个不稳定版本

0.1.0 2022年9月23日

#11 in #优化

自定义许可证

14KB
217 代码行

sigop

一个用于优化您的Solidity函数签名的命令行工具。在我看到transmissions11关于这种优化的评论后,我想要创建这个工具。

灵感来自emn178的杰出工作.

🧪 工作原理?

优化器接收一个函数签名,例如 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

✏️ 自定义参数

您可以指定优化器使用的自定义参数

  1. length:原始函数名之后后缀的最大大小。
  2. 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