🌈NFT λŒ€λŸ‰μ œμž‘_(3)

RoRAΒ·2023λ…„ 4μ›” 24일
0

[λΈ”μ²΄μŠ€] NFT

λͺ©λ‘ 보기
1/3

πŸͺ‚ 2023. 04. 24. Monday_ μ‘Έλ¦½κ³ μš”. μ‘Έλ €μš”.μ˜€λŠ˜μ€.κ·Έλž˜μš”.🀯 πŸͺ‚


βœ… NFT Deploy

β €β €β €

Intro

μ•ˆλ…•ν•˜μ„Έμš”!😁

λͺ¨λ‘ ν•¨κ»˜ 4κ°œμ›” λ™μ•ˆ ν•˜λ‚˜μ˜ 멋진 ν”„λ‘œμ νŠΈλ₯Ό μ™„μ„±ν•˜λŠ” κ·Έλ‚ κΉŒμ§€ ν™”μ΄νŒ…ν•©μ‹œλ‹€ !

* 이 κ³³μ—μ„œλŠ” 당일에 배운 λ‚΄μš©μ„ λ³΅μŠ΅ν•˜λŠ” μš©λ„λ‘œ 글을 μž‘μ„±ν•˜λ €κ³  ν•©λ‹ˆλ‹€.

* 였늘 이 μ‹œκ°„μ—λŠ” NFT λŒ€λŸ‰ μ œμž‘μ˜ λ§ˆμ§€λ§‰ 단계인 DEPLOY 과정에 κ΄€ν•œ λ‚΄μš©μ„ λ³΅μŠ΅ν•΄ λ³΄κ² μŠ΅λ‹ˆλ‹€.

β €β €β €β €
β €β €


βœ… Pinata

β €β €β €

πŸ‘‰ STEP 01. build/images 폴더 μ—…λ‘œλ“œ

β €β €β €
βœ”οΈ 01. RE- build : 이미지 수 쑰절

β–ͺ️ 'npm run build' λͺ…λ Ήμ–΄λ‘œ μƒμ„±λœ 이미지 폴더 μ—…λ‘œλ“œ ν•˜κΈ°

β–ͺ️ Pinata 무료 버전을 μ‚¬μš©ν•˜κ³  있음으둜,
    => config νŒŒμΌμ—μ„œ 랜덀 생성 개수 μ‘°μ ˆν•˜κ³  λ‹€μ‹œ build ν•˜κΈ°
    => λ§Œμ•½μ— νŒŒμΌμ„ μ‚­μ œν•˜λŠ” λ°©λ²•μœΌλ‘œ μ§„ν–‰ν•œλ‹€λ©΄
    	!μ ˆλŒ€! _metadata.json νŒŒμΌμ€ μ œκ±°ν•˜λ©΄ μ•ˆλœλ‹€!


β €β €β €
βœ”οΈ 02. Pinata에 이미지 폴더 μ—…λ‘œλ“œ

β–ͺ️ pinata 접속 ( https://www.pinata.cloud/ )
β–ͺ️ build/images 폴더 μ—…λ‘œλ“œ ν•˜κΈ°


β €β €β €
β €β €β €
βœ”οΈ 03. 쿼리 슀트링 μ•ž κΉŒμ§€ μ£Όμ†Œ λ³΅μ‚¬ν•˜κΈ°

β €β €β €

βœ”οΈ 04. src/config.js 파일 μˆ˜μ •

β–ͺ️ pinata 접속 ( https://www.pinata.cloud/ )
β–ͺ️ build/images 폴더 μ—…λ‘œλ“œ ν•˜κΈ°
      // General metadata for Ethereum
      const namePrefix = "RE";
      const description = "RE-해골";
      const baseUri = "https://gateway.pinata.cloud/ipfs~~~~~";
      

β €β €β €

βœ”οΈ 05. config.js λ³€κ²½ λ‚΄μš© λ‹€λ₯Έ json νŒŒμΌμ— 적용

β–ͺ️ λ‹€μŒ λͺ…λ Ήμ–΄ μž…λ ₯μ‹œ
	: 각각의 이미지에 κ΄€ν•œ json 파일 λͺ¨λ‘
      config.jsμ—μ„œ μˆ˜μ •ν•œ λ‚΄μš©μ΄ λ°˜μ˜λœκ²ƒμ„ ν™•ν•  수 μžˆλ‹€.

πŸ”Έ npm run update_info 


β €β €β €
β €β €β €

πŸ‘‰ STEP 02. build/json 폴더 μ—…λ‘œλ“œ

β €β €β €
βœ”οΈ 01. Pinata에 json 폴더 μ—…λ‘œλ“œ

βœ”οΈ 02. μ—…λ‘œλ“œκ°€ 잘 λœκ²ƒμ„ 확인할 수 μžˆλ‹€.

β €β €β €β €β €β €

βœ… REMIX

β €β €β €

πŸ‘‰ STEP 03. REMIX _ NFT λ°°ν¬ν•˜κΈ°

β €β €β €
βœ”οΈ 01. MintNft_2.sol 파일 생성

β–ͺ️ REMIX 접속 ( https://remix.ethereum.org/ )
    // SPDX-License-Identifier: MIT

    pragma solidity ^0.8.18;

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

    contract MintNft is ERC721Enumerable {
        string public metadataUri;
        uint public totalNft;

        constructor(
            string memory _name, 
            string memory _symbol, 
            string memory _metadataUri, 
            uint _totalNft
        ) ERC721(_name, _symbol) {
            metadataUri = _metadataUri;
            totalNft = _totalNft;
        }

        function mintNft() public {
            require(totalNft > totalSupply(), "No more mint.");

            uint tokenId = totalSupply() + 1;

            _mint(msg.sender, tokenId);
        }

        function batchMint(uint _amount) public {
            for(uint i = 0; i < _amount; i++) {
                mintNft();
            }
        }

        function tokenURI(uint _tokenId) public override view returns(string memory) {
            return string(abi.encodePacked(metadataUri, '/', Strings.toString(_tokenId), '.json'));
        }

        function burnNFT(uint _tokenId) public {
            require(msg.sender == ownerOf(_tokenId), "Caller is not token owner.");

            _burn(_tokenId);
        }
    }

β €β €

βœ”οΈ 02. Remix_ Deploy

β–ͺ️ _NAME, _SYMBOL μž‘μ„±
β–ͺ️ _METADATAURL에 Pinataμ—μ„œ μƒμ„±λœ json μ£Όμ†Œ κ°’λ§Œ λ„£μ–΄μ£Όλ©΄ λœλ‹€.
β–ͺ️ _TOTALNFT : λ‚΄κ°€ μƒμ„±ν•œ 이미지 개수 적어주기
β–ͺ️ transaction 클릭 ! == μ§€κ°‘μ—°κ²°λ˜λ©΄μ„œ NFT deploy끝 !


β €β €β €

πŸ“Œ23. 04. 24

μš”μ¦˜ 날씨 정말정말 쒋은데~!~!~~~😎
이번 μ£Ό μ£Όλ§μ—λŠ”~!~ μ•Œλ°” λλ‚˜κ³  λ“±μ‚°μ΄λ‚˜ κ°€μ•Όκ² λ΅βœ¨βœ¨βœ¨
제발 ν”„λ‘œμ νŠΈλ‚˜ ν”„λ‘œμ νŠΈλ‚˜ ν”„λ‘œμ νŠΈ 였λ₯˜λ‚˜μ„œ 주말에 λͺ» λ‚˜κ°€λŠ” 일이 μ—†κΈΈπŸ’§

0개의 λŒ“κΈ€