Nft
如何編寫用於鑄造指定 NFT 的 NFT 合約?
我發現 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); } }