在搞区块链的那个时段里, 我对于ABI这个事物的认识, 就相当于一张菜单而已, 上面显示的菜名是函数名称, 列出的配料就是所需要的参数, 至于那个后厨内部到底是怎样的情况, 你是根本无法进入去一探究竟的。事情也就是这么一个简单的过程这么简单。
真正导致问题致命的是签名对不上号。前端传递的数据类型是(uint256,address), 但是合约那边在背地里偷偷改成了(uint256,bytes32)这种格式, 结果在调用的时候直接导致系统崩溃报错。
我在那一年的时间里于测试网上花费了整整两天的时间来进行排查, 最后查明原因是在升级合约之后忘记了去重新拉取ABI文件。竟然就是这一些些破事儿引发的事故。

解法特土建议将ABI当作活动文件进行管理, 每当完成一次合约部署操作后,都要强制重新导出一次的副本, 具体版本号直接写死在配置文件里边, 千万别靠大脑去记忆, 一旦遇到版本对不上的情况就要报错, 如果报错了需要查看差异对比信息, 不要凭空猜测,应该去调查核实。
