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
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수 만큼 조건 변경
config 피나타 파일 URL로 수정후
-> npm run update_info
하고 json파일 피나타 업로드
const layerConfigurations = [
{
growEditionSizeTo: 50,
layersOrder: [
{ name: "Background" },
{ name: "Mane" },
{ name: "Face" },
{ name: "Beard" },
{ name: "Glasses" },
],
},
];
// 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
mintNFT = 1
bacthMint 여러개