본문 바로가기
블록체인/블록체인

[BNB Challengers 3일차] NFT의 실습 - Remix에서 오픈씨에 민팅해보기!!

by 일등박사 2022. 11. 10.

안녕하세요!^^
오늘은 BNB Challengers 강의 3일차, 실습강의로

PFP 프로젝트를 직접 만들어 가면서 스마트 컨트랙트를 공부해보는 수업이었습니다!

 

h662 선생님이 멋진 강의를 진행해주셨습니다!!^^

강의 내용을 이해하며 정리해보았습니다!

 


스마트 컨트랙트는 계약이다!!!

 

하지만 이 용어때문에 비탈릭은 후회한다는 트윗을 했었다!!

비탈릭 曰 "이건 스마트 컨트랙트보다 영구적 프로그램이라는 코드로 했어야했어ㅠㅠ"

EVM이란? 

이더리움 가상머신!! (Ethereum Virtual Machine)

솔리디티로 스마트 컨트랙트 작성 →

이더리움이 이해할 수 있는 바이트코드로 컴파일 →

블록체인에 입력!

 

블록체인을 EVM vs 비 EVM으로 나눌수 있다~!!

EVM 비 EVM
이더리움, BNB, 폴리곤, 클레이트 등등 솔라나, 폴카닷

 

강의 주제인 BNB와 ETH의 차이는??

- ETH는 여전히 수수료가 비싼 단점이있다

- 게임사가 가장 좋아하는 체인이 BNB로 뽑혔다

   > 안정적이고, Transaction 이 많이 발생해도 수수료가 싸다

 

[실습] BNB 테스트넷을 먼저 연결해보자!!

참고! : https://growingsaja.tistory.com/728

 

 

Open Zeppelin : 스마트컨트렉트에서 사용되는 Standard

BAYC도 OpenZeppelin 을 쓰는구나!!

Remix IDE에 들어가보아요! 

> https://remix-project.org/

에서 Online IDE로!!

 

실습 시작!!!

workspace에서 MintNFT.sol을 만들어준다!!

저작권 버젼, solidity 버젼을 입력하고! MintNFTcontract를 만들자

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

contract MintNFT { }

 

여기서 잠깐!! OpenZeppelin (https://www.openzeppelin.com/contracts) 에 접속해보아요!

 

우리는 "IERC721Enumerable" 를 사용해볼것 입니다!!

https://docs.openzeppelin.com/contracts/4.x/api/token/erc721#ERC721Enumerable

그래서 import 문을 추가해줘오!!

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

construct는 함수와 비슷한, 특별한 함수로 이해하면 된다

 > 배포하는 시점에만 한번 실행되는것!!

  constructor() ERC721("원숭이요트클럽", "BAYC") {}

>> 요로케!!  티커랑 설명이 들어간다!!

 

이제 배포가능! 그렇지만 민트함수 하나만 더 추가해보자!!

오픈제플린에서 확인가능한 _mint 함수

누가?? 민팅하는 사용자가~!!  msg.sender

민팅할때마다 번호가 달라야하는데1! 어떻게할까~?

ERC721Enumerable에 이미 그 기능이있다!!

전체 발급된 토큰 숫자를 새는 함수!

이렇게해서!! 결국 코드가 완성되었습니다!!

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

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

contract MintNFT is ERC721Enumerable {
    constructor () ERC721("drfirstProject","DRF") {}
    
    function mintNFT() public {
        uint tokenId = totalSupply() + 1;
        _mint(msg.sender, tokenId);
    }
}

 

이제, 배포해볼까요!!!?? 

(위에서 했던 메타마스크 연결이 필수입니다!!)

배포 성공!!

이제 보면요!~~

엄청 많은 함ㅅ무들이 생겼어요!

민팅을 해보아요!!

 

성공!!!!

 

 

총 발행량도 볼수 있고
이름도 볼수 있고
1번토큰의 주인은 누구에요??
잔고조회도 되요!!

주황색 함수는 메타마스크 지갑이 게속 열리고(가스비가 사용)

남색함수는 바로 실행됨(가스비 미사용)

 

마지막으로 민팅한 NFT를 Opensea(testnet)에서 확인해봐요!!!

(https://testnets.opensea.io/)

 

비록 이미지는 없지만 민팅된걸 볼수 있어요!!

 

 

 

 

댓글