- ERC-721은 EIP-721(제안)에서 논의되어 생성된 standard이다.
- ECR-721을 통해서 NFT(Non-Fungible Token)를 발행할 수 있다.
- ERC-721에서는 identify를 검증하는 ERC-165가 포함된다.
- 하나하나 구분 가능한 토큰에 대한 토론이 이루어졌고, ERC-20과는 다른 대체 불가능한 토큰을 만들 수 있게 되었다.
- NFT는 단 하나의 토큰으로 식별이 가능하고, 하나의 토큰을 추적할 수 있다.
- NFT에 사용되는 이미지를 저장하기 위해서 Amazon S3 버킷같은 클라우드 컴퓨팅을 사용할 수도 있고, IPFS(InterPlanetary File System)를 사용할 수도 있다.
- Remix나 Truffle을 이용하여 ERC-721을 사용할 수 있다.
Minting은 블록체인 자산을 생성하는 과정을 말하고, NFT가 생성될 때 주로 '민팅'한다고 한다.
NFT에 반드시 이미지만 담기는 것은 아니다.
🍓 ex. 음악 등
ERC-20에서는 소유자가 토큰을 전송할 때에는 tranfer를 사용하고, 승인받은 유저가 토큰을 사용할 때는 transferFrom 함수를 사용했다.
하지만, ERC-721에서는 두 경우 모두 transferFrom 함수를 통해서 토큰을 전송한다.
그러나, 실제로 transferFrom는 많이 쓰이지 않는다. 컨트랙트 어카운트(CA)가 토큰을 받을 수 없는 경우에도 토큰이 보내질 수 있기 때문이다.
이런 이유로 safeTransferFrom 함수가 권장된다.
safeTransferFrom는 보내는 주소가 유효한지 확인하고, 유효하지 않은 주소라면 함수의 실행을 취소한다.
🍓 safeTransferFrom 함수는 ERC-165 표준이 사용되었다.
🍓 ERC-165 표준은 특정 컨트랙트가 어떤 인터페이스를 구현하는지 확인한다.
🍄 ERC-721에 대한 코드 (openzeppelin) : https://github.com/OpenZeppelin/openzeppelin-contracts/tree/v2.5.1/contracts/token/ERC721
🍄 EIP-721 : https://eips.ethereum.org/EIPS/eip-721
🍄 Remix : http://remix.ethereum.org/
🍄 Ethereum NFT Tutorials : https://ethereum.org/en/developers/tutorials/how-to-write-and-deploy-an-nft/#write-contract
- 클레이튼 기반의 스마트 컨트랙트를 생성하기 위해서 KIP를 이용해야 한다.
- ERC-721과 같은 내용을 가지고 있는 KIP는 KIP-17이다.
- KIP-17에서는 Identity를 검증하기 위해서 KIP-13을 사용한다.
- Truffle이나 Klaytn IDE를 사용하여 KIP-17을 개발하고 배포할 수 있다.
🍄 KIP-17에 대한 코드 (klaytn-contracts) : https://github.com/klaytn/klaytn-contracts/tree/master/contracts/token/KIP17
🍄 KIP-17 : https://kips.klaytn.com/KIPs/kip-17
🍄 Klaytn IDE : https://ide.klaytn.com/
IPFS는 분산 파일 시스템으로 모든 컴퓨터를 연결하고자 하는 분산된 P2P 파일 시스템이다.
IPFS web은 기존의 HTTP web의 문제점을 해결하고자한 웹이다.
IPFS는 중앙화된 서버가 없다.
노드들의 P2P 통신으로 빠르고 안전한 열린 네트워크이다.
중앙 서버가 없기에 몇몇 노드들의 연결이 차단되어도 생태계가 유지될 수 있다.
인터넷에 원활히 접속할 수 없어도 생태계가 유지된다.
고용향 파일을 빠르고 효율적으로 전달할수 있고, 파일들의 중복을 알 수 있기에 저장소를 효율적으로 사용할 수 있다.
IPFS에 기록된 파일의 이름은 영원히 기록되며 지키고 싶은 파일을 지킬 수 있다.
IPFS는 git과 같은 파일의 버전 관리가 가능하다.
- 각 파일은 여러개의 블록으로 이루어지고 블록은 해시로 표현되는 고유의 이름이 존재한다.
- 각 노드는 자신이 원하는 파일만 저장하며 인덱싱 정보로 누가 어떤 파일을 가지는지 알 수 있다.
- 네트워크에서 파일을 찾기 위해 파일명을 조회하고 파일을 가지는 노드에게 요청한다.
☕ IPNS를 통해서 모든 파일명은 사람이 읽기 쉬운 형태로 변환될 수 있다.- 업로드된 파일의 해시값은 파일의 영구적인 이름이 되고, 이를 이용하여 IPFS를 제공하는 노드의 엔드포인트를 토큰의 이미지를 저장하는 URI(tokenURI)로 블록체인에 저장하여 온체인 NFT를 구현할 수 있다.
☕ Remix에서 IPFS로 배포하기를 선택하여 컨트랙트를 IPFS와 함께 배포할 수 있다.
참고 자료 출처 : 코드 스테이츠