【问题标题】:MetaMask RPC error? 'MetaMask - RPC Error: Internal JSON-RPC error.'MetaMask RPC 错误? “MetaMask - RPC 错误:内部 JSON-RPC 错误。”
【发布时间】:2021-04-02 20:18:18
【问题描述】:

我正在开发我正在尝试测试的应用程序的前端。但是,MetaMask 一直给我这个错误?我尝试像以前建议的那样更改气体限制,但什么也没做。有什么想法吗?

错误: MetaMask - RPC 错误:内部 JSON-RPC 错误。

代码:-32603 数据:{代码:-32000,消息:“所需的气体超过限额(30000000)或总是失败的交易”} 消息:“内部 JSON-RPC 错误。”

【问题讨论】:

  • 交易似乎恢复了(超过气体限制这么多的可能性不大)。请编辑您的问题并发布此事务调用的函数(及其依赖项,例如类变量和其他函数)的 Solidity 代码。
  • @PetrHejda 感谢您的回复。老实说,我已经分叉了 pancakeswap 并且一直在使用它。这是我一直在研究的所有前端,所以可能与我对他们的代码所做的更改有关,但我不确定它可能是什么。
  • @PetrHejda 关于我应该特别关注的函数类型有什么想法吗?
  • 我假设错误将出现在您更改的一些 Solidity 代码中(Pancakeswap 是一个成熟的项目,他们的维护人员将错误代码推送到 repo 的可能性很低)。所以在你的调试中,你应该专注于你改变的代码。

标签: blockchain ethereum solidity metamask


【解决方案1】:

没有看到代码,很难确定,但你可以试试:

  1. 检查您在前端更改的任何代码,特别是在您的代码中,您可能有这样的内容:
const contractInstance = new state.web3.eth.Contract(
    MyContract.abi,
    "0x.....",            // contract address
    {
        from: state.accounts[0],
        gasPrice: 1000,
        gas: 100000
    }
);

确保汽油价格与这些价格相似,您可能需要根据自己的情况进行调整。

  1. 重新编译和重新部署 --> 对于 truffle,首先运行 truffle develop,然后运行 ​​compile 然后 migrate --reset 进行本地部署。

  2. 在 Metamask 中,重置您的测试帐户。 Metamask > 选择帐户 > 设置 > 高级 > 重置帐户。 仅对测试帐户执行此操作

【讨论】:

    【解决方案2】:

    以前,由于已修复的气体规格问题,它曾经在旧版本中发生。 rpcErrors.internal` 需要一个字符串作为第一个参数,任意数据是可选的第二个参数。传入一个非 字符串第一个参数导致错误被错误掩盖 来自 eth-json-rpc-errors。

    请检查您传递给 Metamask 的内容。

    【讨论】:

      【解决方案3】:

      就我而言,在尝试了这么多选项后,我重新启动了 Ganache 并将新帐户从 Ganache 重新导入到 Metamask。 我将这个新帐户与 localhost 应用程序连接起来。

      这解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-10-24
        • 1970-01-01
        • 1970-01-01
        • 2021-09-24
        • 1970-01-01
        • 1970-01-01
        • 2018-11-10
        • 1970-01-01
        相关资源
        最近更新 更多