올해 연간 카카오 디브콘 if(카카오)2021이 11월 16일부터 3일간 온라인에서 열려 카카오 커뮤니티 곳곳에서 수많은 기술 열풍이 몰아쳤다.GroundX의 개발자들도 이 행사에 참여하여 서로 다른 서비스와 기술에 대한 귀중한 지식을 공유했다.이 게시물에서는 GroundX Klip Drops Dev Lead Colin이 제공하는 NFT Marketplace 프로그래밍에 대한 세션을 소개할 것이다.
NFT의 엄청난 인기는 또한 디지털 아트에 대한 관심을 끌었는데, 이는 기초적인 블록체인 기술이 예술작품의 희소성뿐만 아니라 진품도 신뢰성 있게 검증하고 거래를 안전하게 기록할 수 있게 해주기 때문이다.
그러나 가장 중요한 것은 창작자의 입장에서 볼 때 미술관 같은 중개업자에게 막대한 수수료를 지불하지 않고도 직접 판매에서 받을 만한 것을 얻을 수 있다는 점인데, 이는 문화산업 전반에 긍정적인 시사점을 갖고 있다.나아가 창작자의 작품 전매가격의 일정 비율을 얻을 수 있는 권리인 '로얄티'가 점점 보편화되면서 미술 창작자의 처우가 개선될 것으로 기대된다.
그렇다면 개발자의 입장에서 가장 중요한 요소는 무엇일까?고려해야 할 주요 특징으로는 채굴, 발송, 판매, 그리고 NFT를 선보이는 것이 있지만, 오늘은 프로그래밍 로열티와 NFT 시장에 초점을 맞출 것이다.
로열티
앞서 언급했듯이 저작권 사용료는 창작자가 작품의 판매가격의 일정 비율을 청구할 수 있도록 한다.이는 대부분의 NFT 마켓플레이스에서 구현되는 기능이지만 공통의 표준이 없어 서로 다른 마켓플레이스 간에 로열티가 맞지 않는다.호환 가능한 로열티 표준의 필요성에 대응하여, 이더리움의 ERC-2981 표준이 2021년 7월에 도입되었다.
로열티 표준은 토큰 ID와 판매 가격이 매개 변수로 전달되고 해당 로열티(로열티 금액)가 반환되는 매우 간단한 인터페이스로 구성된다.
그러나 그것은 청구인 1명에 대해서만 규정하고 있으며, 로열티 기준을 가진 기존 NFT가 어떻게 처리될지는 언급하지 않고 있다.
따라서 이러한 문제를 해결하는 로열티 표준이 탄생했으며, 다음과 같은 특징이 있다.
- 복수의 로열티 청구인
- 로열티 표준을 포함하거나 포함하지 않는 NFT를 포함하는 게이트웨이 계약
- NFT 시장에 적용되는 표준
우리는 아래에 좀 더 자세한 내용을 다룰 것이다.
작동 방식
로열티 운영 방식을 단순화하려면:
- 시장에서, RutyRouter라고 불리는 게이트웨이 계약은 NFT 로열티를 보유하고 있는 계약의 주소를 검색할 것이다.
- 로열티 정보를 탐지한 후 getRoyalty() 함수가 실제 정보를 회수한다.
그러나 여기서는 1) 로열티 계약이 독립적으로 존재하는 NFT와 2) 로열티 표준을 내장한 NFT를 구별해야 한다.전자는 KIP-17 계약과 로열티 계약은 사전에 연계할 것을 요구하고 있다.
NFT와 무관한 로열티 계약
NFT와 로열티 계약이 별개라면 로열티루터 계약의 오버라이드 어드레스()를 통해 연결해야 한다.아래 코드에서 당신은 다음 주소들을 볼 수 있다.nftContract그리고royaltyContract통과되었다.
overrideAddress 프로세스가 끝나면 KIP-17 주소(nftContract)와 로열티 정보를 저장하는 계약주소(로열티계약)와 로열티 정보가 매핑된다.아래 그림에서 인터페이스로부터의 로열티 계약은 로열티인포로서 이행된다.이제 로열티루터 계약의 getRoyality()가 호출되면 KIP-17 계약(nftContract)과 연계된 로열티인포 계약이 발동돼 로열티 데이터를 반환하게 된다.
로열티인포 계약의 인터페이스는 아래와 같다.두 가지 기능에서 여러 명의 로열티 청구인(로열티 리시버)을 지원한다고 쉽게 추론할 수 있다.
NFT에 통합된 로열티
이제 NFT(KIP-17) 계약과 로열티 명세가 통합된 사례를 살펴보겠다.계약 인터페이스는 다음과 같다.
시장에서는 KIP-17+로열티 계약(위의 예시에서는 IKIP17로열티인포)을 촉발하는 로열티루터 계약에서 getRoyality() 함수를 불러 로열티 데이터를 반환한다.
NFT 마켓플레이스
개요
아래는 NFT 시장의 구현이다.
위의 슬라이드를 하나씩 살펴보십시오.Fixed Price Exchange는 NFT가 경매에서가 아니라 정가로 팔린다는 것을 의미한다.다음으로 KIP-7 토큰으로 결제가 이뤄진다고 가정할 때 KIP-7 계약과의 통합도 필요하다.그리고 KIP-17 계약은 클레이튼의 NFT 표준이다.그리고 나서 우리는 앞에서 본 로열티라우터 계약과 환불이 가능하도록 에스크로 계약도 필요하다.
고정 가격 NFT 판매 계약의 인터페이스는 다음과 같다.
getSaleInfo()는 판매자와 가격처럼 판매 정보를 반환하는 기능이다.PutOnSale()을 사용하면 NFT를 세일즈에 올리고, 세일을 취소하면 세일을 취소할 수 있다.마지막 두 가지 기능은 구매와 관련이 있다: buyInKLAY()는 KLAY로 결제하기 위한 것이고 onKIP7Received는 KIP-7 토큰으로 결제하기 위한 것이다.
시나리오
1. 민트 NFT
무엇보다도 먼저, NFT 크리에이터(Minter)가 아래 시각화된 것처럼 NFT를 조폐한다.
2. NFT 판매하기
우리의 NFT를 판매용으로 등록하기 위해서, 이 NFT의 구매자가 그것을 재판매하기를 원한다고 하자.그러나 그 전에 리셀러는 먼저 거래소 계약에 토큰을 보낼 수 있는 권한을 부여해야 한다.이 작업은 KIP-17 계약에 정의된 승인()을 사용하여 수행할 수 있다.이 과정은 NFT가 구매자에게 직접 전송되기 위해 필요하다.
3. NFT 구매
마지막으로, 우리는 NFT를 구매하는 것이 어떤 기능을 하는지 살펴볼 것이다.
- 구매자는 KIP-7 계약에서 이체()를 호출하고, 이체() 함수를 호출하여 거래소 계약으로 대금을 이체한다.
- 이에 따라 KIP-7 계약은 거래소 계약에서 onKIP7Received() 기능을 발동하게 된다.
- 교환 계약은 로열티 라우터 계약을 통해 로열티 정보를 검색한다.
- 이 정보는 지급과 함께 에스크로 계약에 전달될 것이다.
- 거래소 계약은 NFT를 구매자에게 이전한다. (승인()을 미리 불러야 한다.)
- 판매자가 일정 시간이 지난 후 에스크로를 닫으면 대금이 처리된다.
- KIP-7 계약의 양도() 기능을 통해 판매가격의 일정 비율을 청구인(미네터)에게, 나머지는 판매인에게 전가한다.
이 게시물에서는 로열티와 NFT 시장을 어떻게 구현할 수 있는지 살펴보았다.
오늘 게시물의 전체 프레젠테이션은 이 링크(한국어: NFTs on Klaytn: 채굴부터 판매까지.이 게시물과 세션에서 사용되는 테스트 코드는 아래 리포지토리에서 찾을 수 있다.
https://github.com/kjhman21/klaytn-contracts/tree/royalty-registry
이 계약은 MIT 허가를 받았으나 감사를 받지 않았다는 점을 유념하십시오.그것은 상업적 용도에 적합하지 않을 수 있다.
이 게시물에 대해 궁금한 점이나 문의 사항이 있으시면 클레이튼 개발자 포럼에 남겨주십시오.읽어줘서 정말 고맙고 다음 게시물도 계속 봐줘.