ERC-5625 NFT 메타데이터 분산 저장 정보 확장 (NFT Metadata JSON Schema dStorage Extension)

Final · 이름·메타데이터 · 2022-09-08 작성

NFT 메타데이터 JSON에 dStorage 속성을 추가해 NFT가 가리키는 이미지 등 자산이 어떤 분산 스토리지(decentralized storage)에 어떻게 저장돼 있는지 표시할 수 있게 합니다.

왜 필요한가

NFT의 소유권 기록은 EIP-721이나 EIP-1155 스마트 컨트랙트를 통해 블록체인에 남지만 NFT가 실제로 가리키는 이미지 같은 자산 파일은 블록체인 바깥에 저장됩니다. 가치가 큰 자산인 만큼 이 파일도 불변성, 신뢰성, 내구성이 보장되는 저장소에 있어야 하지만 기존 EIP-721과 EIP-1155의 메타데이터 스키마는 물론 OpenSea가 정의해 사실상 표준처럼 쓰이는 메타데이터 규격에도 자산이 어디에 어떻게 저장돼 있는지를 알려 주는 항목이 없습니다. 이 제안은 그 빈자리를 채우기 위해 메타데이터 JSON에 저장 정보 항목을 추가합니다.

심층 설명

적용 대상과 방식

EIP-721의 tokenURI 메서드와 EIP-1155의 uri 메서드가 반환하는 메타데이터 JSON 파일에 dStorage 속성 하나를 더하는 확장입니다. RFC 2119 기준의 OPTIONAL로 규정되어 있어 넣지 않아도 표준 위반이 아니며 기존 name, description, image 등 속성은 그대로 유지됩니다. 컨트랙트 인터페이스에는 아무 변경이 없습니다.

dStorage 객체의 6개 필수 필드

dStorage 객체를 넣을 경우 여섯 필드가 모두 required입니다. platform은 Swarm, Arweave, Filecoin, Crust 같은 분산 스토리지 플랫폼 이름, description은 그 플랫폼의 간단한 설명입니다. persistence_mechanism은 'blockchain-based', 'contract-based' 같은 지속성 또는 인센티브 구조, challenge_mechanism은 Arweave의 proof-of-access 같은 검증 방식, consensus는 PoW, PoS 같은 합의 방식입니다. dstorage_note에는 Filecoin deal id나 Crust의 place_storage_order 트랜잭션 해시처럼 실제 저장을 증명하는 메모가 들어갑니다.

EIP-721과 EIP-1155 스키마에 동일하게 추가

EIP-721 메타데이터 스키마(name, description, image)와 EIP-1155 메타데이터 스키마(name, decimals, description, image, properties, localization 등) 양쪽에 같은 구조의 dStorage 속성이 추가됩니다. 두 스키마 모두에서 dStorage의 하위 필드 구성과 required 목록은 동일합니다.

인터페이스 확장이 아니라 JSON 스키마 확장을 택한 이유

EIP-721이나 EIP-1155의 컨트랙트 인터페이스를 확장하면 구현 코드를 추가로 작성해야 하고 이미 컨트랙트를 확정해 배포한 NFT 프로젝트는 쓸 수 없습니다. 선택적 JSON 스키마 확장은 컨트랙트에 손대지 않는 비침습적 방식이어서 채택하기 쉽다는 것이 원문의 설명입니다. 같은 이유로 이 제안은 EIP-721, EIP-1155와 하위 호환됩니다.

기존 표준의 공백

EIP-721 메타데이터 스키마는 name, description, image 세 속성을, EIP-1155는 여기에 decimals, properties, localization 등을 정의합니다. OpenSea가 정의한 메타데이터 표준은 image_data, external_url, attributes, background_color, animation_url, youtube_url 등을 더하며 LooksRare 같은 다른 마켓플레이스도 이를 따릅니다. 그러나 이들 중 어느 것도 NFT가 가리키는 자산 파일의 저장 정보를 담지 않으며 이 제안은 그 부분을 채우려는 시도입니다. 원문 상태는 Final로 확정된 표준입니다.

쓸 때 주의할 점

ERC 원문 · ← ERCs