看懂交易 Input Data 字段|从 4byte selector 到参数解码

交易页 Input Data 字段是与合约交互的原始 calldata——前 4 字节是 function selector,后续是 ABI 编码的参数。本文按 6 步教你解码:识别 0x 字符串结构→4byte 查 function 名→参数解码→对照预期。

发布于 2026-05-08 · 约 9 分钟 · 查交易

交易 Input Data 怎么读?直接答:Input Data 是与合约交互的原始 calldata 0x... 字符串——前 4 字节(8 hex)是 function selector(keccak256 哈希前 4 字节),后续每 32 字节(64 hex)是一个 ABI 编码的参数 → 用 4byte.directory 或 OpenChain 反查 function 名 → 用 Etherscan Decode Input Data 按钮一键解码参数 → 对照你预期的操作。整套流程让你看懂一笔交易到底调用了什么合约方法、传了什么参数。

如果你解码完发现交易符合预期想出金,可顺路准备 币安官网 的实名账号,并用 币安官方App 看充币地址。下载入口在 下载页

Input Data 的结构

A:Input Data = function selector(4 字节)+ 参数数据(每 32 字节 + padding)

部分 长度 说明
0x 2 字符 hex 前缀
function selector 8 hex(4 字节) keccak256(function signature) 前 4 字节
参数 1 64 hex(32 字节) ABI 编码
参数 2 64 hex(32 字节) ABI 编码
...更多参数 同上

例:0xa9059cbb000000000000000000000000abc...0000000000000000000000000000000000000000000000000000000005f5e100

解码
0xa9059cbb function selector = transfer(address,uint256)
第 2 段(abc... 64 hex) 接收方地址
第 3 段(5f5e100 = 1e8) 转账数量 = 100 USDT(如 6 位小数)

第 1 步:在 Etherscan 看 Input Data

复制 TxHash → etherscan.io → 交易页底部「Input Data」字段 → 点「Click to see More」展开。

第 2 步:用 Decode Input Data 按钮

Etherscan 在 Input Data 旁边有「Decode Input Data」按钮(仅当目标合约 Verified 时可用)——点击后自动解码 function 名 + 参数

例显示:

Function: transfer(address recipient, uint256 amount)

# Input Data
recipient   : 0xAbc...
amount      : 100000000  // 100 USDT (6 decimals)

第 3 步:未 Verified 合约怎么解码

如果合约未 Verified,Etherscan 不会自动解码。手动方法

步骤 操作
1 复制 Input Data 前 8 hex(4byte selector)
2 4byte.directoryOpenChain Signature DB
3 输入 selector 查 function 名
4 用 ethers.js 或 hashex.org 按 ABI 解码后续参数

第 4 步:常见 4byte selectors 速查

selector function
0xa9059cbb transfer(address, uint256)
0x23b872dd transferFrom(address, address, uint256)
0x095ea7b3 approve(address, uint256)
0xa22cb465 setApprovalForAll(address, bool)
0x42842e0e safeTransferFrom(address, address, uint256)
0x38ed1739 swapExactTokensForTokens(Uniswap V2)
0x7ff36ab5 swapExactETHForTokens(Uniswap V2)

A:这几个 selector 覆盖 80% 日常 ERC20 / DEX 操作——记熟了一眼就能识别。

第 5 步:用 Tenderly Debugger 单步看

Tenderly 的 Debugger 不仅解码 Input Data,还能单步执行 EVM 看每一步 stack / memory / storage 变化——是分析复杂合约交互的最强工具。详见 查交易 分类的 Trace 入门篇。

第 6 步:实战——识别钓鱼 Permit 签名

钓鱼场景:你在某个网站连钱包后被要求「签个名」,弹窗显示 0xd505accf 开头的 Input Data——

selector 解码
0xd505accf permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)

A:这是 EIP-2612 Permit 签名! 看到 0xd505accf 立即警觉——Permit 是离线授权,签了等于把代币 approve 给 spender永远不在不熟悉网站签 Permit

实战 2:看 Uniswap 真实兑换参数

例 selector 0x38ed1739 = swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] path, address to, uint deadline)

参数 解码
amountIn 你输入多少
amountOutMin 最少接受多少(滑点保护)
path 兑换路径([USDC, ETH, USDT])
to 接收地址(应该是你)
deadline 截止时间戳

A:最关键的是 to 字段——如果 to 不是你自己,这是钓鱼合约把兑换结果发给攻击者

第 7 步:Decode 工具汇总

工具 用途 价格
Etherscan Decode Input 自动解码(要 Verified) 免费
4byte.directory selector 反查 function 免费
OpenChain Signature selector 反查(更新更快) 免费
abi.hashex.org 手动 ABI 编码/解码 免费
Tenderly Debugger 单步 EVM 调试 部分免费

风险提示

签名前看清 Input Data 是防钓鱼最关键技能——MetaMask 弹窗里的 Input Data 永远显示真实将执行的内容不看清就签等于盲签

如果链上资产想出金,可借助 币安官网 走 C2C。

实操核对清单

  • [ ] 已了解 Input Data 结构(selector + 参数)
  • [ ] 已用 Etherscan Decode Input Data 按钮
  • [ ] 已记熟 5-7 个常见 4byte selectors
  • [ ] 看到陌生 selector 用 OpenChain 查
  • [ ] 钓鱼防御:Permit (0xd505accf) 立即警觉
  • [ ] 大额操作前 Tenderly 模拟看完整 Input Data

一站式回顾

A:Input Data = function selector(4byte)+ ABI 编码参数核心 3 个动作:看 selector 识别 function、用 Decode 按钮解码参数、对照预期。核心 1 个安全点:Permit (0xd505accf) 是钓鱼常见手法——没必要永远不签

如果想了解交易 Logs / Events 的解读,下一步建议看 Logs 字段解读篇。

常见问题

Input Data 为空(0x)是什么意思?

A:纯 ETH/BNB 转账——没有合约交互,只有原生币转移。普通转账 Input Data = 0x

4byte selector 会不会撞?

A:极少。4byte 空间 2^32 ≈ 43 亿——主流 function 几乎不冲突。OpenChain 与 4byte.directory 收录了几百万真实 function

Etherscan Decode 不工作怎么办?

A:通常是合约未 Verified。用 4byte 查 selector + 自己 ABI 解码——或者去 OpenChain Trace 自动解码。

Permit 签名为什么这么危险?

A:Permit 是「离线签名」——不上链不花 Gas,但对方拿到签名就能调用 transferFrom。钓鱼网站常诱导用户签 Permit 后把代币偷走

我自己编程发交易要不要管 Input Data?

A:要。ethers.js / web3.py 等库会自动 ABI 编码——你只要传 function 名 + 参数。手动构造时用 abi.hashex.org

MetaMask 弹窗里的 Input Data 我看不懂怎么办?

A:慢一点,用 4byte 查 selector 是不是熟悉的 function陌生 selector 永远不签——这是防钓鱼最重要的习惯。

一笔交易能调用多个 function 吗?

A:通过 Multicall 合约可以——一笔主交易里包多个内部 callMulticall3 是行业标准实现。详见 查交易 分类的 Trace 篇。

文档发布于 2026-05-08,下次复测计划 2026-08-08(约每 90 天回访一次,确认 Etherscan Decode Input Data 与 4byte 查询服务未变)。