ERC-5606 멀티버스 NFT 묶음 표준 (Multiverse NFTs)

Final · NFT·멀티토큰 · 2022-09-06 작성

여러 메타버스나 게임에 각각 발행된 같은 디지털 자산의 NFT들을 하나의 멀티버스 NFT로 묶어 한 덩어리로 소유·거래하거나 다시 낱개로 풀 수 있게 하는 표준입니다.

왜 필요한가

운동화나 게임 아이템 같은 디지털 자산은 메타버스나 블록체인 게임마다 별도의 ERC-721 또는 ERC-1155 토큰으로 발행됩니다. 실제로는 같은 자산인데도 플랫폼마다 발행된 토큰 사이에 아무 관계가 없어서 이 자산이 정말 희소한지 온체인에서 증명하기 어렵습니다. 발행자는 같은 자산을 플랫폼 수만큼 반복해서 따로 발행해야 하고 보유자는 여러 플랫폼의 버전을 한 덩어리로 소유하거나 거래할 방법이 없습니다. NFT는 처음부터 희소성 증명과 상호운용성을 목표로 했지만 상호운용성 문제는 해결되지 않은 채 각 앱이 알아서 처리하도록 남아 있었습니다. 이 표준은 여러 플랫폼에 흩어진 관련 NFT들을 하나의 멀티버스(multiverse) NFT로 묶어, 그 관계와 소유권을 앱 수준이 아니라 온체인 표준으로 표현하는 틀을 제공합니다.

구현해야 하는 것

심층 설명

DelegateData 구조체

델리게이트 토큰 정보는 DelegateData 구조체로 표현합니다. 필드는 contractAddress, tokenId, quantity 세 개로, 각 플랫폼에 발행된 NFT를 구분합니다. 델리게이트 NFT는 ERC-721 표준을 따를 수도 있고 ERC-1155 표준을 따를 수도 있으며 quantity 필드가 있어 수량 개념이 있는 ERC-1155 토큰도 담을 수 있습니다.

initBundle: 구성이 고정되는 초기화

initBundle은 새 멀티버스 NFT를 발행해 msg.sender에게 배정합니다. 갓 초기화된 멀티버스 NFT는 빈 상태로, 델리게이트 NFT를 아직 담고 있지 않습니다. 델리게이트 토큰의 컨트랙트 주소와 토큰 ID는 초기화 시점에 정해지고 이후 변경할 수 없습니다. 이는 관련 없는 NFT가 실수로 함께 묶이는 의도치 않은 경우를 막기 위한 설계입니다.

bundle: 승인 후 이전

bundle은 멀티버스 NFT의 토큰 ID와 DelegateData 배열을 받아 델리게이트 NFT들을 멀티버스 NFT 컨트랙트로 이전합니다. 호출 전에 소유자가 델리게이트 NFT에 대한 승인을 이 멀티버스 NFT 컨트랙트에 해 두어야 프로그램으로 전송이 가능합니다. 묶인 뒤에는 멀티버스 NFT가 여러 플랫폼에 있는 이 디지털 자산의 버전들을 소유하게 됩니다.

unbundle: 소유자만 꺼낼 수 있음

unbundle은 지정한 델리게이트 NFT를 멀티버스 NFT 컨트랙트 밖으로 꺼내 msg.sender에게 이전합니다. 이 이전은 msg.sender가 해당 멀티버스 NFT의 소유자인 경우에만 이뤄집니다. 꺼낸 델리게이트 NFT는 해당 플랫폼에서 개별적으로 쓰거나 팔 수 있습니다.

부분 묶기와 부분 풀기

bundle과 unbundle이 DelegateData 배열을 받는 이유는 부분 묶기와 부분 풀기를 지원하기 위해서입니다. 예를 들어 델리게이트 NFT 세 개로 묶음을 초기화한 사용자는 언제든 세 개보다 적은 수만 묶거나 풀 수 있습니다. 반대로 세 개를 넘겨 묶거나 풀 수는 없습니다. 선택적으로 다루려면 각 델리게이트 NFT의 개별 토큰 ID도 필요합니다.

기존 표준과의 호환성

이 표준은 ERC-721 및 ERC-1155와 완전히 호환됩니다. 이 제안을 지원하지 않는 제3자 애플리케이션도 원래 NFT 표준을 아무 문제 없이 그대로 사용할 수 있습니다. 원문 상태는 Final로 확정된 표준입니다.

쓸 때 주의할 점

ERC 원문 · ← ERCs