题目
接入一个已经上线的合约时,你拿不到编译产物,手上只有文档里一份人类可读的函数签名清单,于是手工写了一份 ABI。
上线后出现两类问题:部分调用反复回滚,另一部分调用能成功但界面显示的数据明显不对。请说明可能的原因与排查顺序。
考察目标
- 能否说明两种 ABI 表述形式的差异与适用场景。
- 是否理解 ABI 不匹配会在编码与解码两个方向出错。
- 能否给出可执行的排查路径。
考察两种 ABI 表述形式的取舍,以及不匹配时暴露出的症状与排查路径。
接入一个已经上线的合约时,你拿不到编译产物,手上只有文档里一份人类可读的函数签名清单,于是手工写了一份 ABI。
上线后出现两类问题:部分调用反复回滚,另一部分调用能成功但界面显示的数据明显不对。请说明可能的原因与排查顺序。
ABI 描述函数签名、参数和返回类型。输入 ABI 写错可能算出错误选择器、编码出错误参数,最终命中别的入口或回滚;返回 ABI 写错时,解码可能直接失败,也可能在类型兼容的字段之间静默读错。先核对部署地址和链,尽可能取得可验证的编译产物或公开源码;若确实没有,再用原始调用与返回字节、已知样本逐项核对手写 ABI。
发现这道题有问题? 反馈此题