Nft

如何編寫用於鑄造指定 NFT 的 NFT 合約?

  • June 7, 2022

我發現 NFT 合約通常用於按順序鑄造 NFT。是否可以更改鑄幣函式以將 NFT 的 id 作為輸入變數,以便客戶可以鑄幣他們想要的指定 NFT?請問有誰知道如何編寫這種鑄幣功能?太感謝了!

是的,可以通過創建一個繼承自ERC721PresetMinterPauserAutoId.sol預設的合約來完成。然後你可以使用內部_mint(address to, uint256 tokenId)函式來指定id。如果不需要預設,也可以使用普通的 ERC721 合約。ERC1155 標準也是如此。您可以在OpenZeppelin 儲存庫中找到這些契約標準。

Solidity 中的範常式式碼:

// SPDX-License-Identifier: MIT
pragma solidity >=0.4.22 <0.9.0;

import "@openzeppelin/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol";

contract NFTtest is ERC721PresetMinterPauserAutoId {

   constructor()
       ERC721PresetMinterPauserAutoId(
           "NonFungibleToken",
           "NFT",
           "https://example.com"
       )
   {}

   // Mint function with ID as an input
   function mint(uint256 _id) public {
       // Here you can add additional logic or pre-conditions.
       // _mint function already checks if the _id has been
       // used so no need to check again

       // Mint the NFT with the specified _id and set as the owner
       // the sender of the transaction
       _mint(msg.sender, _id);
   }
}

引用自:https://ethereum.stackexchange.com/questions/129704