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

这篇具有很好参考价值的文章主要介绍了调用智能合约报错分析小技巧 Error: 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)
  }
}

测试:main('0x5ac9e43a32a651e92cff884a38b910d4a1897578bd935430057a619f27b7a21d')

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

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

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

完整代码地址:仓库地址

五一休假的第四篇产出。完结 🎉 ~文章来源地址https://www.toymoban.com/news/detail-513287.html

到了这里,关于调用智能合约报错分析小技巧 Error: execution reverted的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java智能合约工具包|Java调用智能合约|Java调用ERC20、ERC721、ERC1155合约

    Magician-ContractsTools是一个用于调用智能合约的工具包,你可以非常容易地在Java程序中调用智能合约进行查询和写入操作。 有三个内置的标准合约模板,分别是ERC20、ERC721和ERC1155,如果你需要调用这三个合约中的标准函数,可以帮助你非常快速地完成工作。除了内置的合同模板

    2024年02月11日
    浏览(52)
  • golang调用智能合约,获取合约函数的返回值

    如果不是只读取数据的合约函数,需要异步的执行,因此并不能直接获取到合约函数的返回值,需要等到交易执行完毕,得到确认后才能获取到合约函数的返回值。而且合约函数返回值一般是通过事件日志获取到的。 这里给出一个例子来展示我是如何获取合约函数返回值的。

    2024年03月11日
    浏览(51)
  • 如何在智能合约中调用另一个合约的函数

    智能合约是在区块链中被执行的一段程序,因为它们在区块链上执行,所以不依赖于任何的中心化服务器。目前最主流的智能合约编程语言是 Solidity。 在以太坊区块链中,智能合约可以和其他已经部署的智能合约进行交互。除了以太坊,其他 EVM 兼容的区块链(使用以太坊虚

    2024年01月22日
    浏览(52)
  • 四:调用部署在ganache的智能合约

    如果朋友有代码,工具,使用流程等不太清楚的,可用去专栏看看,专栏中有文章中所提及的具体使用方式。不太明白的朋友可以自己去看看~~ 瞬移专栏 实验目的 实验原理 ether.js中提供了我们对智能合约进行调用的方法,使用ether.js能很方便我们和智能合约进行交互。 js代码

    2023年04月09日
    浏览(33)
  • 智能合约模拟调用的具体应用:在golang中查询uniswap v3智能合约上某代币的价格

    合约的方法如果是public view的,那么通过golang代码可以直接调用,步骤大致为: 1、使用合约的ABI生成.go文件接口 2、使用以太坊节点链接初始化以太坊客户端; 3、以以太坊客户端和uniswap合约地址为参数,实例化uniswap合约 4、直接调用uniswap的“查询价格”的方法,传入代币地

    2024年02月07日
    浏览(87)
  • Mac安装Dart时,Homebrew报错 Error: Failure while executing

    最近准备开发Flutter项目时,在安装环境时,安装Homebew时遇到了以下报错信息,在这里分享一下。 安装 ARM 版 Homebrew ARM版Homebrew最终被安装在/opt/homebrew路径下。 直接执行: 然后还需设置环境变量,具体操作步骤如下,一定要仔细阅读。 在终端执行命令echo $SHELL获得终端类型

    2024年02月10日
    浏览(58)
  • MetaMask与Web3中智能合约调用(2)

    智能合约交易区别于点对点交易,智能合约交易只需付费给矿工费用,也就是gas fee,是支付给矿工的手续费,当我们在以太坊区块链上进行转账时,矿工要把我们的交易打包并放上区块链,才能使交易完成,在这过程中会消耗区块链的运算资源,所以要支付费用 这个过程为

    2024年01月16日
    浏览(47)
  • Go调用智能合约(附最新的SEPOLIA FAUCET整理)

    Geth的安装很容易,下载安装即可(需要勾选 develop tools),我安装的是 1.13.10 版本,看其他博客和教程大部分都是版本 7 和 10 ,有些操作没办法照搬 问题:没办法挖矿【 miner.start() 后返回 null , eth_mining 返回 ture ,但实际上并没有挖矿】== 没法去部署合约 解决方法: 设置 –-

    2024年02月20日
    浏览(34)
  • eureka注册报错RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceU

    发生报错时,可能是以下几种原因: 配置文件单词填写错误,如: 没有启动服务注册中心项目,就直接启动了其他客户端和服务器项目,如我自己的项目:

    2024年02月11日
    浏览(37)
  • 【智能合约】以太坊合约执行分析

    目录 1. 基本概念 1.2 合约字节码 1.3 合约构造函数 1.4 与合约交互 1.5 Call Data 1.6 程序计数器(Program Counter) 1.7 执行环境(Context) 1.8 OpCode(操作码/EVM指令/助记符) 1.9 Gas消耗 1.10 合约执行过程 2. 过程详解 2.1 关于部署代码 2.2 runtime代码 2.3 最终字节码 2.4 为EVM设计的指令集

    2024年02月02日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包