Hello guys,
I hope, im in the correct sub-forum.
Im not a Pro in this.
Started since few Days with Smart Contract Deploy NFT's.
Im not founded a solution in Forums/Google...
I use openzeppelin...
my hardhat.config looks like this:
PolygonMumbai : {
url: "https://rpc-mumbai.maticvigil.com",
accounts: [PRIVATE_KEY],
}
With this some Transactions not worked.
Failed Transactions: https://mumbai.polygonscan.com/tx/0xe8aa6a104c751fb432c56ae3d0f64cd9a60a83d17757d97142887c48fbb2ee09
Worked Transactions:
Failed Transaction: Gas Used by Transaction: 144,053 (100%)
Worked Transaction: Gas Used by Transaction: 150,053 (100%)
Why was the Transaction success with more Gas than the Failed one with less Gasfees?
I tested with gaslimit in the config:
matic: {
url: "https://matic-mumbai.chainstacklabs.com",
accounts: [PRIVATE_KEY],
gasPrice: 8000000000, // default is 'auto' which breaks chains without the london hardfork
}
But it ends in the same without, some Transactions Fails...
Does anyone know why thats happens, and how i can solve this Problem?
its a bit ugly, when i mint in mainnet, and then some nfts missing and tokenid is then wrong because of the missed one.
I minting with this code, can i add something that automatic check if the mint transaction success, if no, try again, or is this not needed if i can solve the gas error limit?
// Contract based on https://docs.openzeppelin.com/contracts/4.x/erc721
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.12;
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract ExampleNFT is ERC721URIStorage, Ownable {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
constructor() ERC721("NFT", "ENFT") {}
function mintNFT(address recipient, string memory tokenURI)
public onlyOwner
returns (uint256)
{
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(recipient, newItemId);
_setTokenURI(newItemId, tokenURI);
return newItemId;
}
}
async function mintNFT(contractAddress, metaDataURL) {
const ExampleNFT = await ethers.getContractFactory("ExampleNFT")
const [owner] = await ethers.getSigners()
await ExampleNFT.attach(contractAddress).mintNFT(owner.address, metaDataURL)
console.log("NFT minted to: ", owner.address)
}