【问题标题】:MetaMask - RPC Error: Error: [ethjs-query] while formatting outputs from RPCMetaMask - RPC 错误:错误:[ethjs-query] 格式化来自 RPC 的输出时
【发布时间】:2021-09-24 01:10:19
【问题描述】:

我对以太坊智能合约 Solidity 编程非常陌生。目前,当我尝试将一个变量从我的 Node.js servlet 传递到我使用 Truffle Suite 部署的智能合约时,特别是使用 Ganache 提供的帐户时,我一直面临这个问题。

以下是我用来连接和调用智能合约方法的JavaScript:

if (this.state.contract) {
            this.state.contract.methods.searchKeyword(searchToken.toString())
                .send({from: this.state.account, gas: 210000, gasPrice: 50000}, function (err, res) {
                    if (err) {
                        console.log("Error", err)
                        return
                    }
                    console.log(res)
                })
        }

以下是智能合约中的 Solidity 代码:

function searchKeyword (string memory searchToken) public {
        searchWord = searchToken;
    }

每当我调用函数并传递 searchToken 时,都会弹出以下错误。我已经尝试将 gas 和 gasPrice 设置在 MetaMask 钱包的 gasLimit 之下,但我仍然收到Exceeds block gas limit 之类的错误。我试过不设置gas和gasPrice,但我仍然遇到类似的问题。

请任何天才帮助我这个菜鸟初学者,他努力调试一个小功能。提前谢谢你们:D

【问题讨论】:

标签: javascript node.js ethereum solidity smartcontracts


【解决方案1】:

我认为这里的问题是,当您“truffle deploy --reset”时,Ganache 区块链希望每个用户的“program_counter”再次从 0 开始。因此,您还必须在您的 Metamask 帐户上重新启动 program_counter。 Metamask 设置 -> 高级 -> 重置帐户为您的 Metamask 帐户重新启动 program_counter。这对我有用!

【讨论】:

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