所以我陷入了 Web3js 的一个非常简单的问题,我不知道问题可能是什么,我开始认为我在元掩码或 chrome 方面遇到了某种问题,但我首先想确保我的基本代码已写。
重点是,我为了测试目的创建了一个非常简单的 Solidity 智能合约,它有两个简单的函数,一个是“只读”函数,另一个是“修改”智能合约中的参数,目的是从前端测试 Call 和 Send 方法。
**智能合约代码如下: **
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract TestContract{
string public variable;
function white() public {
variable = 'white';
}
function black() public {
variable = 'black';
}
}
**前端代码如下: **
src="https://unpkg.com/web3@4.1.2/dist/web3.min.js"
window.onload = async function() {
let from;
let web3;
let DappContract;
web3 = new Web3(window.ethereum)
DappContract = new web3.eth.Contract(DappABI,DappAddress)
let accounts = await web3.eth.getAccounts()
from = accounts[0]
console.log ("Initial value : " + await DappContract.methods.variable().call() );
console.log ("Send method: " + await DappContract.methods.white().send({from:from}) );
console.log ("Final value: " + await DappContract.methods.variable().call() );
}
在执行“发送”方法之前,一切似乎都工作正常。
Web3 对象已创建正常。 DappContract 也已创建正常 从变量正确加载元掩码地址
甚至“call”方法也能够检索“variable”中的任何信息。
但是,每次我尝试调用“发送”时,我都会收到失败的交易。
对我做错的事情有什么帮助吗?
我面临着完全相同的问题。我在网上找到的一些建议是;
但是这些建议都没有解决我的问题。我希望有人能帮忙!