![](/img/trans.png)
[英]MetaMask - RPC Error: execution reverted {code: -32000, message: 'execution reverted'}
[英]MetaMask - RPC Error: execution reverted, Simple NFT Miniting Dapp
我正在構建一個簡單的 NFT 鑄造 Dapp 用於籌款。 我首先在 Polygon 測試網上部署了合約,然后在以太坊測試網 goerli 上部署了合約。 在整合的同時 ,我的智能合約前端使用 Ethers.js,我遇到了同樣的錯誤。 我進行了研究並嘗試了一些可用的解決方案,但仍然遇到相同的錯誤。
這是完整的倉庫: https://github.com/DevABDee/WagmiPakistan您可以使用 live-Server 來運行應用程序,我使用的是簡單HTML
我的 hardhat.config.js:
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config({ path: ".env" });
POLYGON_TESTNET_URL = process.env.POLYGON_TESTNET_URL;
GOERLI_TESTNET_URL = process.env.GOERLI_TESTNET_URL;
PRIVATE_KEY = process.env.PRIVATE_KEY;
ETHERSCAN_API_KEY = process.env.ETHERSCAN_API_KEY;
module.exports = {
solidity: {
version: "0.8.7",
settings: {
optimizer: {
enabled: true,
runs: 200,
},
},
},
networks: {
matic: {
url: POLYGON_TESTNET_URL,
accounts: [PRIVATE_KEY],
gas: 2100000,
gasPrice: 8000000000
},
goerli: {
url: GOERLI_TESTNET_URL,
accounts: [PRIVATE_KEY],
gas: 2100000,
gasPrice: 8000000000
}
},
etherscan: {
apiKey: ETHERSCAN_API_KEY
}
};
索引.js:
import { ethers } from "https://cdn-cors.ethers.io/lib/ethers-5.5.4.esm.min.js";
import {contractAddress, contractAbi} from "./constants.js";
const mintBronze = document.getElementById('MintBronze');
const mintSteel = document.getElementById('MintSteel');
const mintGold = document.getElementById('MintGold');
const mintDiamond = document.getElementById('MintDiamond');
const mintPlatinum = document.getElementById('MintPlatinum');
mintBronze.onclick = MintBronze;
mintSteel.onclick = MintSteel;
mintGold.onclick = MintGold;
mintDiamond.onclick = MintDiamond;
mintPlatinum.onclick = MintPlatinum;
async function connect() {
if (typeof window.ethereum !== 'undifined') {
await window.ethereum.request({ method: "eth_requestAccounts" })
console.log("Connected");
} else {
console.log("Get A Metamask Wallet");
}
}
connect();
let provider = new ethers.providers.Web3Provider(window.ethereum)
let signer = provider.getSigner();
let wagmiPakistanContract = new ethers.Contract(contractAddress, contractAbi, signer)
async function MintBronze() {
const mintBronze = wagmiPakistanContract.mintBronze();
const Bronze = await mintBronze;
console.log(`${Bronze} Minted`);
}
async function MintSteel() {
const mintSteel = wagmiPakistanContract.mintSteel();
const Steel = await mintSteel;
console.log(`${Steel} Minted`);
}
async function MintGold() {
const mintGold = wagmiPakistanContract.mintGold();
const Gold = await mintGold;
console.log(`${Gold} Minted`);
}
async function MintDiamond() {
const mintDiamond = wagmiPakistanContract.mintDiamond();
const Diamond = await mintDiamond;
console.log(`${Diamond} Minted`);
}
async function MintPlatinum() {
const mintPlatinum = wagmiPakistanContract.mintPlatinum();
const Platinum = await mintPlatinum;
console.log(`${Platinum} Minted`);
}
請幫幫我。 謝謝
調用合約時您沒有發送任何以太幣,因此msg.value
為 0。以下是調用需要msg.value
等於 0.001 以太幣的 function 時發送以太幣的方式(因為您在智能合約中定義的 function 需要msg.value
為 0.001):
const mintBronze = wagmiPakistanContract.mintBronze({ value: ethers.utils.parseEther("0.001") });
與其他函數類似,語法為:
const mintSteel = wagmiPakistanContract.mintSteel({ value: ethers.utils.parseEther("0.002") });
const mintGold = wagmiPakistanContract.mintGold({ value: ethers.utils.parseEther("0.003") });
const mintDiamond = wagmiPakistanContract.mintDiamond({ value: ethers.utils.parseEther("0.004") });
const mintPlatinum = wagmiPakistanContract.mintPlatinum({ value: ethers.utils.parseEther("0.005") });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.