我试图在web3上调用一个函数,但它没有在web3上执行。它只是不会弹出Metamask钱包来请求交易批准,所以它不会执行。
可靠性功能:
function Deposit(uint _amount) payable public{
require(msg.value == _amount);
funds[msg.sender] += _amount;
}
web3上的功能
deposit = async(depositAmount)=>{
const web3 = window.web3
const ethers = web3.utils.toWei(this.depositAmount.value, 'ether')
await web3.contract.methods.Deposit(depositAmount).send({from: this.account, value: ethers})
}
函数如何被称为
<form className="deposit" onSubmitCapture={(event) => {
event.preventDefault()
const amount = this.amount
this.deposit(amount)
}}>
<input type="text" className="inputs" placeholder="Amount to deposit"
ref={(input)=>this.amount = input}/>
<input type="submit" className="btn" value="DEPOSIT"/>
</form>
我正在加载web3并正确加载区块链数据,并且在按钮组件中调用了存款函数。只是想知道它是否与这段代码有关,或者问题可能在其他地方。智能合约用松露和巧克力酱正确迁移。
您需要正确初始化web3。根据文档,您应该初始化为const web3 = new Web3(web3.currentProvider).
您可以使用gasLimitparam .
await web3.contract.methods.Deposit(depositAmount).send({from: this.account, value:
ethers, gasLimit: "21000"})