
适用范围:先明确ERC的含义
ERC并非单一代币或网络名称。本文讨论ERC-20代币,适用于普通账户签名并直接调用代币合约的情形,不涵盖所有ERC标准,也不把通用机制视为某款冷钱包已支持的功能。
以太坊交易文档解释签名、交易字段及确认过程;OpenZeppelin合约文档解释ERC-20接口、数量精度和授权语义。前者帮助理解交易如何进入链上,后者帮助辨认代币操作的含义。

地址与数量:不能只看表面字段
直接调用ERC-20的transfer时,交易外层的to通常是代币合约地址,实际收款地址与代币数量编码在调用数据中。因此,仅看到外层地址正确,不足以判断收款对象正确;仅凭代币简称,也不足以辨认被调用的合约。

交易的value表示随交易发送的ETH,并非ERC-20数量。代币显示数量还取决于decimals:合约处理整数,界面按精度换算。OpenZeppelin实现默认精度为18,但允许修改,不能把这一默认值套用于所有代币。
签名安全:离线不等于内容正确
签名表达账户对交易内容的授权,不证明该内容符合持有者本意。冷钱包场景同样需要辨认合约、函数、收款地址和数量;若设备只显示难以理解的十六进制数据,就存在无法充分核验实际动作的盲签问题。
可读的交易描述能辅助理解,但不能仅因界面出现熟悉的名称,就认定底层调用可信。具体设备能否解析并展示这些字段,需要以其实际能力为准。
费用与授权:两类常见混淆
以太坊上的普通账户交易需要支付ETH费用,持有代币并不等于具备支付费用的余额。ERC-20转账涉及合约执行,不能直接套用简单ETH转账的Gas消耗。gasLimit限制计算用量,maxFeePerGas限制单位Gas费用,两者不是同一个参数。
transfer是发送自己的代币,approve则是设置其他地址可代为使用的额度。直接转账通常不需要先授权第三方;若签名内容变成approve,操作性质已经改变。授权也不等于代币已转出,无限额度更不等于仅允许一次操作。
状态判断:签名完成不代表到账
签名、广播、进入区块和最终确定是不同阶段。交易哈希不是到账证明,被区块收录也不必然表示合约执行成功,应区分交易状态与实际代币转移结果。
nonce代表账户交易序号,排查待处理交易时不能忽略它。代币合约还可能包含暂停或其他自定义逻辑,因此符合ERC-20接口并不保证每次转账都能完成;具体限制必须依据对应合约判断。