목차
- NFT토큰과 그냥 토큰과의 차이점
- remix IDE로 NFT 토큰 생성해보기
- Opensea 마켓에 등록해보기
NFT토큰과 그냥 토큰과의 차이점
ERC 20 - Token fungible Token
ERC-721 - Token Non-funfible Token
fingible Token : 토큰을 값어치로 표현한다. 1개에 천원이면 2장 이천원
NFT - 토큰마다 가치가 다른 것.
code로 구현하자면 어떤 느낌일까?
토큰이 생성될 때마다 고유키 값을 부여해주면 된다.(민팅)
mint(msg.sender, 1) << 숫자는 키값
mint(msg.sender, 2) 이런 식으로 키 값에 대한 작업이 이루어진다.
따라서 토큰이 2000개가 있다면 2000개의 key값이 존재하는 것이다.
따라서 ERC-721은 ERC-20와 다른 게 하나 있다면,
mapping(uint => address) public owned; 가 존재한다.
키 값을 넣으면 계정주가 나옴.
영화관에 돈 넣으면 나오는 티켓처럼. 가치가 달라질 수 있음 (암표라던가.)
그래서 오늘 할 것은?
OpenSea라는 NFT 마켓에 코인을 올려보자! (테스트 넷으로..)
NFT 토큰 생성해보기
일단 기본 설치와 세팅을 해주자.
npx ganache-cli
npm install -g @remix-project/remixd
mkdir truffle
cd truffle
truffle init
cd contracts
remixd -s . --remix-ide https://remix.ethereum.org
이런 게 뜨면 잘 된 것이다.
그 다음, Remix IDE에 들어가주자.
workspace안에 connect_localhost 들어가서 connect해준다.
아래처럼 설정해준다.
ERC20 -> 라이브러리
라이브러리 먼저 만들어보고 구현(opensea에 보이게 등록)할 것이다.
cd truffle
npm init
npm install openzeppelin-solidity
truffle/contracts/Minting.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15;
import "openzeppelin-solidity/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
contract Minting is ERC721{
constructor(string memory _name, string memory _symbol) ERC721(_name, _symbol){}
function _minting(uint _tokenId) public{
_mint(msg.sender, _tokenId);
}
function tokenURI(uint _tokenId)public override pure returns(string memory){
return "https://gateway.pinata.cloud/ipfs/QmPwjnvWYN4etA5eW4yAbWCTy2ukEC1Jj5417VLGyH5XpU/1/1.json";
}
}
그럼 Remix 파일에 VSCODE에서 친 코드가 연동이 된다.
Environment 를 메타마스크로 린키비 테스트네트워크와 연결해주자.(테스트 이더리움은 구글에 검색하면 받을 수 있는 사이트가 많다.)
초기 name, symbol도 설정할 수 있다.
transact 를 누르면 메타마스크 확인 창이 뜨는데, 그걸 누르면 완료가 된다.
민팅에서 token의 고유한 아이디를 부여해주고 transact를 하면?(필자는 이미 1~3까지 생성을 했기때문에 4로 함. 처음하는 사람은 0으로)
트랜잭션 승인을 눌러주자.
balanceOf에 계정을 입력해주고, call을 누르면
현재 생성 된 nft 토큰의 개수가 나온다.
remix IDE에서 사용할 수 있는 함수들을 살펴보면, 주황색과 파란색이 있는데
주황색은 send, 파란색은 call함수이다.
즉, 주황색만 이더가 든다. (트랜잭션이기 때문에)
Opensea 마켓에 등록해보기
에 들어가서
메타마스크를 연동해준다.
메타마스크 선택 후, 연동을 시켜주고,
내 계정을 클릭하면, 만든 nft코인이 등록된 것을 확인할 수 있다.
끝!
'블록체인 > 스마트 컨트랙트' 카테고리의 다른 글
[typescript] NFT 토큰 민팅하는 dApp 간단히 구현하기 (0) | 2022.07.28 |
---|---|
[스마트 컨트랙트, open-zeppelin] 토큰 <-> 이더리움 스왑 구현해보기 (0) | 2022.07.22 |
[스마트 컨트랙트] 물건 사고, 환불하는 dApp 간단히 구현 (0) | 2022.07.20 |
[스마트 컨트랙트] 투표 dApp 만들어 보기 (0) | 2022.07.18 |
[truffle, 스마트 컨트랙트] 토큰 생성해보기 (0) | 2022.07.15 |