NFT 여러개 민팅하기

심재원·2023년 12월 8일
0

맥북 Visual Studio Code

Terminal

git clone https://github.com/HashLips/hashlips_art_engine.git hashlips
brew install pkg-config cairo pango libpng jpeg giflib
npm install
npm run build
만약 brew 후 npm install 안 되면 아래 명령어 입력

vi ~/ .zshrc
export PATH=/opt/homebrew/bin:$PATH

src/config.js file

8~10줄 나중에 수정해줘야 함

const namePrefix = "Your Collection";
const description = "Remember to replace this description";
const baseUri = "ipfs://NewUriToReplace";
-> 피나타 업로드 후 파일 URL ? 앞까지 복사해서 붙여넣기

27줄 growEditionSizeTo : 5 -> 50(원하는 수 만큼)
NFT사이즈는 통상적으로 512+512
아래처럼 layer수 만큼 조건 변경

Terminal

config 피나타 파일 URL로 수정후
-> npm run update_info
하고 json파일 피나타 업로드

const layerConfigurations = [
  {
    growEditionSizeTo: 50,
    layersOrder: [
      { name: "Background" },
      { name: "Mane" },
      { name: "Face" },
      { name: "Beard" },
      { name: "Glasses" },
    ],
  },
];

Remix

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";

contract MintNFT is ERC721Enumerable {
    string metadataURI;

    constructor(string memory _name, string memory _symbol string memory _metadataURI) ERC721(_name, _symbol) {
        metadataURI = _metadataURI
    }

    function mintNFT() public {
        uint tokenId = totalSupply() + 1;

        _mint(msg.sender, tokenId);
    }

    function tokenURI(uint _tokenId) public override view returns(string memory) {
        // return metadataURI + '/' + tokenId + '.json'; 자바스크립트식 함수
        return string(abi.encodePacked(metadataURI, '/', _tokenId, '.json'));
    }
}

폴더채로 올려놨기 때문에 폴더 안 파일들을 nft번호에 맞게끔 배치시켜둠.
https://docs.openzeppelin.com/contracts/5.x/api/utils#Strings

return string(abi.encodePacked(metadataURI, '/', _tokenId, '.json'));

ex)
https://tan-rational-goat-745.mypinata.cloud/ipfs/QmfURZjLsf3Qigp8NVZ6uXFpcWrCbdXPjc3b9KwV8gGSZ4/1.json

metadataURI(json 주소) 입력한 컨트랙트 생성 후 BatchMint로 여러 개 생성!

mintNFT = 1
bacthMint 여러개

0개의 댓글