题目
一个聚合器按标准 ABI 解码每个代币的 transfer 返回值,接入某个稳定币后交易明明成功,前端却提示「调用失败」;另一个页面在用户点击转账后直接把本地余额减去输入金额。请说明这两处的问题与处理方式。
考察目标
- ERC-20 标准对 transfer 与 transferFrom 返回值的要求。
- 非标准实现带来的解码差异与兼容方式。
- 以事件与链上余额作为对账依据。
说明标准对 transfer 返回值的要求、部分实现不返回数据带来的解码差异,以及以事件与链上余额对账的做法。
一个聚合器按标准 ABI 解码每个代币的 transfer 返回值,接入某个稳定币后交易明明成功,前端却提示「调用失败」;另一个页面在用户点击转账后直接把本地余额减去输入金额。请说明这两处的问题与处理方式。
ERC-20 标准要求 transfer 与 transferFrom 返回 bool,并要求成功的转账发出携带发送方、接收方与金额的 Transfer 事件;部分实现并不返回数据,按标准 ABI 直接解码会失败。链上事实以事件与余额读取为依据。实现差异与工程取舍见深入回答。
发现这道题有问题? 反馈此题