본문 바로가기
블록체인교육/Web3(DApp)

[NFT] 이더리움 NFT(ERC721) 발행

by Danny_Kim 2022. 5. 23.

* Dapp NFT 플랫폼을 만들기 위한 사전 ERC721 발행관련 실습

 

 

1. IPFS 서비스 중 Pinata 서비스에 이미지 업로드 (https://www.pinata.cloud/)

- 가입 후 이메일 승인 후 로그인 하면 아래의 페이지가 뜸.

- IPFS에 대신 업로드 해주는 서비스임.

- 이미지 업로드 후 아래와 같이 CID 확인.

- 파일 업로드 후, pinata Docs 메뉴얼 참고하여 metadata file 작성.

 - metadata.json 파일을 아래와 같이 작성 후 업로드

  - description,name은 임의로 작성하고, image부분에 pinata에서 만들어준 CID를 입력.

 - 해당 파일을 업로드 하면 아래와 같이 뜸.

 

 

2. NFT solidity 파일 작성 후 deploy

- 소스 작성 후 배포

소스파일

// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/utils/introspection/IERC165.sol";

contract NFT is ERC721URIStorage,Ownable{
    using Counters for Counters.Counter;
    Counters.Counter private tokenId;

    constructor() ERC721("DannyWorld","DNW"){}

    function mintNFT(string memory tokenURI) public onlyOwner returns (uint256){
        tokenId.increment();
        uint256 newId = tokenId.current();
        _mint(msg.sender,newId);
        _setTokenURI(newId,tokenURI);
        return newId;
    }
}

 

- IERC165.sol 파일 솔리디티 버전 0.8.0으로 변경

 

- 배포 후, NFT 민팅

 - metada.json의 CID로 민팅.

 

- mintNFT에서 ipfs:// 이후에 CID 주소 입력후 transact 실행

 

* 트랜잭션 정상 배포되었는지 확인!!

 

반응형

댓글0