题目
一个批量转账脚本把合约调用发到了一个拼错的地址上,交易显示成功,但用户只看到手续费损失;另一个组件在发送前用 getCode 判断地址是 EOA,却没考虑 7702 委托。请说明向无代码地址发送调用的后果与检查方式。
考察目标
- 调用数据在没有代码的地址上执行时的行为。
- 发送前的目标地址类型检查方式。
- 7702 委托对检查结论的影响。
说明调用数据在普通无代码地址上的执行结果,以及预编译、7702 委托对地址检查结论的影响。
一个批量转账脚本把合约调用发到了一个拼错的地址上,交易显示成功,但用户只看到手续费损失;另一个组件在发送前用 getCode 判断地址是 EOA,却没考虑 7702 委托。请说明向无代码地址发送调用的后果与检查方式。
当交易的目标是普通无代码地址时,调用数据不触发合约逻辑,value 转账照常完成,交易本身仍然成功并消耗手续费;但「代码为空」并不代表「没有可执行逻辑」——预编译地址通常没有普通 EVM 代码却会执行协议内置逻辑,EIP-7702 委托账户则会返回以 0xef0100 开头的指示码。因此地址类型检查不能只依赖 eth_getCode。实现差异与工程取舍见深入回答。
发现这道题有问题? 反馈此题