问题描述
我对以太坊智能合约可靠性编程非常陌生。目前,当我尝试将变量从我的 Node.js servlet 传递到我使用 Truffle Suite 部署的智能合约时,我一直面临这个问题,特别是使用 Ganache 提供的帐户。
10
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)
})
}
每当我调用函数并传递 function searchKeyword (string memory searchToken) public {
searchWord = searchToken;
}
时,都会弹出以下错误。我曾尝试将 gas 和 gasPrice 设置在我的 MetaMask 钱包的 gasLimit 以上、之内、以下,但我仍然收到诸如 searchToken
之类的错误。我试过没有设置 gas 和 gasPrice,但我仍然遇到类似的问题。
任何天才都请帮助我这个菜鸟初学者,他努力调试一个小功能。提前谢谢你们:D
解决方法
我认为这里的问题是,当您“truffle deploy --reset”时,Ganache 区块链希望每个用户的“program_counter”再次从 0 开始。因此,您还必须在您的 Metamask 帐户上重新启动 program_counter。 Metamask Settings -> Advanced -> Reset Account 为您的 Metamask 帐户重新启动 program_counter。这对我有用!