当前位置:   article > 正文

调用智能合约报错分析小技巧 Error: execution reverted

execution reverted

前端在调试调用合约的时候经常会遇到合约revert的情况,大部分区块浏览器只会显示 execution reverted,并不会把具体原因告诉我们。这个时候一般会去找合约大哥帮忙分析错误,但是合约大哥是怎么分析报错的呢? 这篇文章给你一个解题方法。

直接上代码

const main = async (txHash) => {
  const tx = await provider.getTransaction(txHash)
  if (!tx) {
    console.log('tx not found')
  } else {
    const code = await provider.call(tx)
    console.log('revert reason:', code)
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

测试:main('0x5ac9e43a32a651e92cff884a38b910d4a1897578bd935430057a619f27b7a21d')

输出:
在这里插入图片描述

可以看到测试txHash被revert的原因是 输入了无效的 B Amount,也就给我们提供的 debug 的思路。

该方法试用于所有evm链,只需修改 provider 对应链的chain信息即可。

完整代码地址:仓库地址

五一休假的第四篇产出。完结

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/326240
推荐阅读
相关标签