排错:调用 parseLog 报 data out-of-bounds 错误

  • 胡键
  • 更新于 2023-08-02 18:10
  • 阅读 994

调用 parseLog 报 data out-of-bounds 错误

症状

调用 parseLog 解析日志,结果得到:

UnhandledPromiseRejectionWarning: Error: data out-of-bounds (length=0, offset=32, code=BUFFER_OVERRUN, version=abi/5.6.0)
...

原因

这种情况一般是使用的 abi 字符串与 contract 的实际 abi 不匹配:缺少了 indexed 关键字。如下例:

  • 实际的 abi 为 event Transfer(address indexed from, address indexed to, uint256 indexed value)
  • 但使用的却是:event Transfer(address from, address to, uint256 value)

通过查看 log 的 topics 也能发现,topics 的内容实际是:event + indexed 参数,其长度可以反映出有多少个 indexed 参数。

解决

很简单,补上缺失的 indexed 关键字即可。

参考

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
胡键
胡键
CSM / 架构师 / 创业者,先后就职于中兴和 SAP,现专注于工业物联网、机器学习和区块链。同时,作为机器学习和区块链技术活动的组织者和分享者活跃于本地社区。