跳到主要内容
EVIDENTCHAIN ECOSYSTEM
公链项目 漏洞检测
EvidentChainINSIGHTS FOR BUILDERS
知识中心/教程/智能合约
动手实践 / 智能合约

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

来源与核对

  1. ethers v6 · ABI encoding and decoding ↗

核对日期:2026-10-18。本文为原创编排与解读,请以原始资料的最新版本为准。

理解之后,继续实践。

读一篇相关教程,或用免费工具检查手边的材料。

打开EVM 调用数据解码
FROM READING TO BUILDING

下一步,把理解变成实践。

自有项目推广