智能合约 / FIELD GUIDE

看懂 EVM 调用数据:从 transfer 开始

对齐函数选择器、ABI 和原始数量,不把解码结果当安全结论。

先记住这一点

解码说明输入结构,不证明目标合约可信、执行成功或资产价值。

函数签名决定如何读取参数

ABI
function transfer(address to, uint256 amount)

调用数据的前四个字节是函数选择器;后面是 ABI 编码的参数。使用资源包中的完整 calldata,可以解出示例接收地址 0x1111…1111 和原始整数 1000000000000000000。这个示例是人工构造的,没有发送任何交易。

原始整数不等于显示数量

只有确认对应代币确实使用 18 位小数时,这个原始整数才对应 1 个代币。ABI 本身不会告诉你 decimals、价格、链或合约地址。PlainKit 用字符串显示大整数,避免 JavaScript Number 的精度损失。

DECODED / RAW UNITS
function: transfer(address,uint256)
to: 0x1111111111111111111111111111111111111111
amount: "1000000000000000000"

签名前还要核对什么

  • 核实网络、目标合约和 ABI 的可信来源;代理合约还需核实当前实现。
  • 查看接收方、金额单位和授权范围,确认与操作意图一致。
  • 解码失败、额外尾部字节或参数被截断时,先停止操作。
  • 函数名相同并不意味着行为相同,需要源码、状态与执行结果证据。

原始资料与编辑说明

资料核对:2026-10-17。本文包含 PlainKit 自编示例与实践说明,不代表来源机构的背书;不是安全审计结论。

现在,自己验证一次。

用合成示例开始,输入仍在你的浏览器内处理。

打开对应工具 →下载练习素材 ↓