ERC-721과 KIP-17, 그리고 IPFS

citron03·2022년 3월 27일
0

블록체인

목록 보기
12/19

ERC-721

  • 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 extension으로 ERC-721 Mintable (NFT 생성 가능), ERC-721 Burnable (토큰 파기 가능), ERC-721 Pausable (트랜스퍼 중단 가능) 등이 있다.

🍄 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-17

  • 클레이튼 기반의 스마트 컨트랙트를 생성하기 위해서 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/

NFT 역시 Ganache를 통해서 로컬 환경에서에 배포해볼 수 있다.

또는, Rinkeby나 Ropsten(이더리움) baobab(클레이튼) 과 같은 테스트 네트워크에 배포해 볼 수도 있다.

IPFS(InterPlanetary File System)

  • IPFS는 분산 파일 시스템으로 모든 컴퓨터를 연결하고자 하는 분산된 P2P 파일 시스템이다.

  • IPFS web은 기존의 HTTP web의 문제점을 해결하고자한 웹이다.

  • IPFS는 중앙화된 서버가 없다.

  • 노드들의 P2P 통신으로 빠르고 안전한 열린 네트워크이다.

  • 중앙 서버가 없기에 몇몇 노드들의 연결이 차단되어도 생태계가 유지될 수 있다.

  • 인터넷에 원활히 접속할 수 없어도 생태계가 유지된다.

  • 고용향 파일을 빠르고 효율적으로 전달할수 있고, 파일들의 중복을 알 수 있기에 저장소를 효율적으로 사용할 수 있다.

  • IPFS에 기록된 파일의 이름은 영원히 기록되며 지키고 싶은 파일을 지킬 수 있다.

  • IPFS는 git과 같은 파일의 버전 관리가 가능하다.

IPFS의 동작 원리

  • 각 파일은 여러개의 블록으로 이루어지고 블록은 해시로 표현되는 고유의 이름이 존재한다.
  • 각 노드는 자신이 원하는 파일만 저장하며 인덱싱 정보로 누가 어떤 파일을 가지는지 알 수 있다.
  • 네트워크에서 파일을 찾기 위해 파일명을 조회하고 파일을 가지는 노드에게 요청한다.
    ☕ IPNS를 통해서 모든 파일명은 사람이 읽기 쉬운 형태로 변환될 수 있다.
  • 업로드된 파일의 해시값은 파일의 영구적인 이름이 되고, 이를 이용하여 IPFS를 제공하는 노드의 엔드포인트를 토큰의 이미지를 저장하는 URI(tokenURI)로 블록체인에 저장하여 온체인 NFT를 구현할 수 있다.
    ☕ Remix에서 IPFS로 배포하기를 선택하여 컨트랙트를 IPFS와 함께 배포할 수 있다.

참고 자료 출처 : 코드 스테이츠

profile
🙌🙌🙌🙌

0개의 댓글