Abstract
스마트 컨트랙트 내에서 NFT의 표준 API 인터페이스를 규정. 표준 API는 NFT를 교환하고 기록하기 위한 기본적인 기능을 제공한다.
NFT는 다음과 같은 다양한 디지털 또는 물리 자산에 대한 소유권을 나타낼 수 있다.
- 물리 자산 - 집, 예술 작품 등
- 수집품 - 유일성이 보장되는 수집용 카드 등
- 대출과 같은 마이너스 자산 등
NFT는 구별 가능한 디지털 토큰으로서 각 자산에 대해 개별적으로 소유권을 추적할 수 있도록 한다.
Specification
- ERC-721를 따르는 컨트랙트를 만들기 위해서는
ERC721
,ERC165
인터페이스를 반드시 구현해야한다. - 어플리케이션은 지갑 인터페이스를 구현해야한다.
- (Optional) 토큰 이름과 상세 정보를 외부에 제공하도록 메타데이터 인터페이스를 구현할 수 있다.
- (Optional) enumeration extension : 모든 NFT를 검색할 수 있도록 함.
Rationale
- NFT Identifiers
: NFT는uint256
의 ID 값을 갖는다. 따라서(contract address, uint256 tokenId)
는 이더리움 체인에서 유일함을 보장한다. UUID, SHA3 등의 결과값이 32bytes 이기 때문에 uint256과 호환성이 좋다. - Transfer Mechanism
- 컨트랙트가 중지되었을 때 불허해야함.
- 허가되지 않은 NFT, 컨트랙트 등이 전송에 개입할 때 불허해야함.
- unsafe 한 전송일 때 불허해야함.
- 거래에 참여하는 양쪽에 요금을 부과해야함.
- 거래가 실패한 경우는
ERC-223
,ERC-677
,ERC-827
,OpenZeppelin’s implementation of SafeERC20.sol
등 참고해서 구현하도록 할것. - NFT를 생성하고 없애는 것에 대한 명세는 포함되지 않음.
event
관련 문서를 참고할 것.
- ERC-165 Interface
: 적용된 인터페이스가 무엇인지 공개하도록 정의된 ERC-165(Standard Interface Detection) 를 구현해야한다. - Gas and Complexity (regarding the enumeration extension)
: for, while 루프를 사용하지 말 것. enumeration function 에 for-loop 대신 솔리디티 배역 타입을 반환하도록 하는 것이 가스 사용량 측면에서 안전함. - Privacy
: 모든 토큰id 에 대해 ownerOf 함수를 호출하면 소유자를 쉽게 알 수 있기 때문에, privacy는 보장할 수 없다. - Metadata Choices
: metadata extension을 통해name
과symbol
을 정의할 수 있는데, 빈문자열도 가능하고 다른 NFT와 중복되게 설정할 수 있다. web3 컨트랙트를 통해서만 호출할 수 있다.
Backwards Compatibility
ERC-20 과의 호환성을 위해 몇 함수를 인터페이스에 포함시켰다.
Implementation
- CryptoKitties : https://mangkyu.tistory.com/79
'BlockChain > Blockchains' 카테고리의 다른 글
비잔틴 장애 허용 문제 (0) | 2022.12.14 |
---|---|
[Klaytn] 합의알고리즘 (1) | 2022.12.14 |
[Hyperledger Fabric] 개념 정리 및 활용 프로젝트 예시 (0) | 2022.08.22 |
EIP-1155: Multi Token Standard (0) | 2022.08.12 |
비트코인이란? (Bitcoin WhitePaper 정리) (0) | 2022.08.04 |