English

ABI 编码解码

ABI 编码解码在本地按函数签名与参数生成 calldata,或将 Input Data 解析为可读参数。支持 address、uint、int、bool、bytes、string 及数组类型,适用于合约开发调试与交易内容核对;tuple 结构体类型当前版本暂未支持。

函数选择器
0xa9059cbb
完整 calldata(含函数选择器)
0xa9059cbb0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed0000000000000000000000000000000000000000000000000de0b6b3a7640000
仅参数编码
0x0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed0000000000000000000000000000000000000000000000000de0b6b3a7640000

本页计算与校验均在浏览器本地完成,私钥与助记词不会上传至服务器。

工具说明

ABI 编码解码用于构建或解析以太坊合约 calldata:由 4 字节 function selector 与 ABI 编码参数组成,是交易审计与集成测试的基础。

编码:提供函数签名与 JSON 参数数组,输出完整 0x calldata。解码:提供签名与 Input Data,还原各参数取值。

支持 address、bool、整型、bytes、string 及定长/动态数组;tuple(结构体)类型当前版本未覆盖。

使用说明

  1. 选择编码或解码模式。
  2. 填写函数签名(如 transfer(address,uint256))或仅参数类型列表。
  3. 编码:以 JSON 数组传参,uint256 等大整数使用字符串;解码:粘贴 0x Input Data。
  4. 复制结果;解码时若 selector 不匹配将提示签名可能错误。

常见问题

以太坊交易的 Input Data 在哪里看?

区块浏览器交易详情的 Input Data(Hex/Original)字段;或钱包确认页的 Data/十六进制数据区域。

ABI 编码时 JSON 大整数为什么要加引号?

JavaScript JSON 数字精度上限约 2⁵³,链上 uint256 需以字符串传递,如 "1000000000000000000",以避免编码偏差。

ABI 解码结果一定准确吗?

依赖所填函数签名是否正确。selector 碰撞或代理 delegatecall 场景需结合 verified 源码与存储布局分析。

为什么还不支持 tuple 结构体参数?

嵌套/tuple 签名与参数序列化较复杂,当前版本为控制错误率暂未实现;可使用 Foundry cast 等 CLI 处理结构体参数。

相关工具