0

我正在尝试构建一个非常简单的 web3 应用程序。目标是能够在单击按钮时铸造 NFT,并使用元掩码对特定数量的 ETH 执行交易。为此,我想使用moralis(但我也愿意接受替代品)。我也为此使用 Rinkeby 测试网络。

这整个话题对我来说是相当新的,我试图弄清楚我该如何做到这一点,但我不断地出错。

登录/注销已经在工作,我构建了一个简单的 UI。连接到 MetaMask 后,我希望用户从合约中选择他想要铸造的数量,然后单击“立即铸造”。但是,此交易一直失败。

错误是:

  1. MetaMask - RPC 错误:执行恢复{代码:-32000,消息:'执行恢复'}
  2. moralis.js:42068 未捕获(承诺)错误:无法估计气体;交易可能失败或可能需要手动限制气体 (error={"code":-32000,"message":"execution reverted"}, method="estimateGas", transaction={"from":"X","to" :"Y","data":"Z","accessList":null}, code=UNPREDICTABLE_GAS_LIMIT, version=providers/5.5.2) 在 Logger.makeError (moralis.js:42068:21) 在 Logger.throwError ( Moralis.js:42077:20) 在 Web3Provider 的 checkError (moralis.js:47333:16)。(moralis.js:47866:47) 在步骤 (moralis.js:47255:23) 在 Object.throw (moralis.js:47236:53) 在拒绝 (moralis.js:47228:65)

我的代码是:

async function moralisWeb3() {
// Get the EthersJs library
const ethers = Moralis.web3Library;

// Get a (ethers.js) web3Provider
const web3Provider = await Moralis.enableWeb3();

// Enable web3 and get the initialized web3 instance from Web3.js
await Moralis.enableWeb3();
const web3Js = new Web3(Moralis.provider);

// connector
const web3 = await Moralis.enableWeb3();

const options = {
    contractAddress: contractID,
    functionName: "mint",
    abi: ABI,
    params: {
        _mintAmount: "2"
    }
};

const transaction = await Moralis.executeFunction(options);
const receipt = await transaction.wait();
console.log(receipt);
document.getElementById("btn-mint").onclick = moralisWeb3;
}

有人可以帮我建造这个吗?

4

0 回答 0