SuperAPI AI 工具集

contract-decode

通用与其它

查看项目

更新于 10-16 04:32

技能介绍

用途:解码 EVM 合约的函数选择器、自定义错误、calldata 与 revert data。触发条件包括关键词 revert、selector、4byte、calldata、decode、custom error、execution reverted、abi decode,或消息中含 0x 加 8 位以上十六进制字符。不适用于已由代码库处理的 Error(string) 回滚、非 EVM 链错误,或仅需错误码定义而非十六进制解码的场景。

输入字段:revertData(错误数据或粘贴的十六进制)、calldata(交易数据)、contractAddr(合约地址)、chainId(链标识)。

工作流:先分类输入(4 字节为纯选择器;大于 4 字节含选择器前缀为 calldata 或 revert data;合约地址需先取 ABI),再进行本地快速解码,依次尝试标准错误 0x08c379a0 的 Error(string) 与 0x4e487b71 的 Panic(uint256),并提供 Panic 码参考(如 0x01 assert 失败、0x11 算术溢出、0x12 除零、0x32 数组越界等);可选执行 timeout 5 cast 4byte <selector>,cast 不可用则转外部 API。外部查询分两条路径:有合约地址和 chainId 时走 ABI 路径,通过 Sourcify(免费免密钥)或 Etherscan v2(需密钥,免费额度 3 请求/秒)获取 ABI JSON,代理合约需取实现地址后重查;否则走选择器数据库路径,查询 4byte.directory API,可能返回多个候选并标记低置信度。最后精确解码:有 ABI 时可用 cast decode-error <revert_data> --abi <abi_file>、cast decode-calldata <calldata> --abi <abi_file>,或 cast calldata-decode "functionName(type1,type2)" <calldata>;无 ABI 但有签名候选时用 cast abi-decode "functionName(type1,type2)" <data_without_selector>。

输出为报告表,含类型、选择器、签名、解码参数、置信度(High 已验证 ABI / Medium 选择器库 / Low 多候选)、来源、合约、链,并附原始数据;多候选时列出歧义候选及置信度。

限制:依赖 cast 与外部 API 可用性;无 ABI 时可能返回多个候选,置信度较低;仅面向 EVM 链;需参考 references/apis.md 的端点、参数与速率限制。