智能合约 / FIELD GUIDE
看懂 EVM 调用数据:从 transfer 开始
对齐函数选择器、ABI 和原始数量,不把解码结果当安全结论。
先记住这一点
解码说明输入结构,不证明目标合约可信、执行成功或资产价值。
函数签名决定如何读取参数
function transfer(address to, uint256 amount)调用数据的前四个字节是函数选择器;后面是 ABI 编码的参数。使用资源包中的完整 calldata,可以解出示例接收地址 0x1111…1111 和原始整数 1000000000000000000。这个示例是人工构造的,没有发送任何交易。
原始整数不等于显示数量
只有确认对应代币确实使用 18 位小数时,这个原始整数才对应 1 个代币。ABI 本身不会告诉你 decimals、价格、链或合约地址。PlainKit 用字符串显示大整数,避免 JavaScript Number 的精度损失。
function: transfer(address,uint256)
to: 0x1111111111111111111111111111111111111111
amount: "1000000000000000000"签名前还要核对什么
- 核实网络、目标合约和 ABI 的可信来源;代理合约还需核实当前实现。
- 查看接收方、金额单位和授权范围,确认与操作意图一致。
- 解码失败、额外尾部字节或参数被截断时,先停止操作。
- 函数名相同并不意味着行为相同,需要源码、状态与执行结果证据。
原始资料与编辑说明
资料核对:2026-10-17。本文包含 PlainKit 自编示例与实践说明,不代表来源机构的背书;不是安全审计结论。