题目
运营给来一个「质押领取」按钮,指向的合约在区块浏览器上没有验证源码,也没有 ABI 文件;同时另一个页面接入了新上线的合约,但开发把从社区库里猜出的选择器直接当成了函数签名。请说明这两处应当如何评估与落地。
考察目标
- 选择器与参数编码在无 ABI 场景下的构造方式。
- 选择器猜测的可靠边界与验证流程。
- 未验证合约在读写路径上的风险控制。
从函数选择器与参数编码出发,说明在缺少 ABI 时构造调用、核对目标与降低误调用风险的流程。
运营给来一个「质押领取」按钮,指向的合约在区块浏览器上没有验证源码,也没有 ABI 文件;同时另一个页面接入了新上线的合约,但开发把从社区库里猜出的选择器直接当成了函数签名。请说明这两处应当如何评估与落地。
calldata 由四字节函数选择器与 ABI 编码后的参数组成,在缺少 ABI 时仍可以构造调用并读取返回数据;选择器来自签名哈希,不同签名可能落到同一个选择器,因此猜测结果需要验证。实现差异与工程取舍见深入回答。
发现这道题有问题? 反馈此题