Token과 NFT 발행해보기

frookie·2023년 4월 20일
0

Remix IDE

목록 보기
1/2

OpenZepplin

  • 스마트 컨트랙트 작성 시 도움 받을 수 있는 라이브러리이다.
  • 작성 시 필수요소를 포함할 수 있도록 도움을 준다.

Remix IDE

  • 스마트 컨트랙트를 편집할 수 있는 IDE이다.
  • EVM 계열(Solidity)의 스마트 컨트랙트 작성에 특화되어 있다.

Mint Token(ERC-20)

우선 메타마스크에서 테스트 네트워크를 만들어 준다.

Remix IDE에서 MintToken.sol 파일을 생성한다.

정식으로 배우기 전이라 내용이 확실치 않음.

pragma solidity ^0.8.18;

▶ ERC20Burnable을 사용하기 위해 삽입
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";


contract MintToken is ERC20Burnable {
    constructor(uint256 _initialSupply, string memory _name, string memory _symbol) ERC20(_name, _symbol) {
        _mint(msg.sender, _initialSupply);
    }		▶construtor는 deploy에 넣을 값들
}

Solidity Compiler로 이동

  1. Auto compile 체크
  2. CONTRACT는 MintToken (MintToken.sol) 체크

Deploy & Run Transactions로 이동

  1. ENVIRONMENT에서 Injected Provider - Metamask로 선택
  2. Deploy 옵션 중 초기 발행량(1의 자리수가 10^18승), 이름, 심볼 작성 후 transact
  3. 메타마스크와 연결 및 deploy
  4. 컨트랙트 주소 복사 후 토큰 주소에 추가해서 확인

Mint NFT

Pinata

  • IPFS(InterPlanetary File System): 데이터를 분산 저장하고 공유하기 위한 프로토콜
  • NFT 이미지와 메타데이터(JSON 파일 형태)를 저장 및 공유하는 용도
  1. NFT 이미지 파일 추가
  2. Metadata .json 형태로 작성 후 Pinata에 업로드
  • NFT 이름.json
{
  "name": "이름",
  "description": "설명",
  "image": "피나타에 업로드한 이미지 파일의 주소",
  "attributes": [
    {
      "trait_type": "Animal",		▶특징 설명
      "value": "Cat"
    },
    {
      "trait_type": "Color",
      "value": "Gray"
    }
  ]
}

Remix IDE에서 민트

  • MintNft.sol
pragma solidity ^0.8.18;

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

contract MintNft is ERC721Enumerable {
    mapping(uint => string) public metadataUri;
    uint public totalNft;

    constructor(string memory _name, string memory _symbol) ERC721(_name, _symbol) {}

    function mintNft(string memory _metadataUri) public {
        uint tokenId = totalSupply() + 1;

        _mint(msg.sender, tokenId);
        
        metadataUri[tokenId] = _metadataUri;
    }

    function tokenURI(uint _tokenId) public override view returns(string memory) {
        return metadataUri[_tokenId];
    }
}
  1. deploy 전까지는 Token과 동일
  2. deploy에 이름과 심볼 입력 후 transact

Mint

  1. Deploy & Run Transactions로 이동해 mintNft 탭을 누르기
  2. _metadataUri에 Pinata에 올린 json 파일 주소 입력해 민트
  3. testnet Opensea에서 확인
profile
비전공자의 코딩, 블록체인 공부 일지

0개의 댓글