KIP17
클레이튼에서 대체 불가능한 토큰(Non Fungible Token)의 표준이다. ERC-721에서 파생되었으며 차이점은 다음과 같다.
KIP-17 과 ERC-721 차이점
- 모든 토큰의 transfer/mint/burn 은 이벤트 로그를 남겨야 한다. 이는 즉
Transfer이벤트가 transfer/mint/burn 시 반드시 찍혀야 함을 의미한다. - 보다 다양한 확장 옵션 (Minting extension, minting with URL extension, burning extension, and pausing extension)
- safeTransfer로 컨트랙트에게 토큰을 보낼 시 리시브 훅을 호출한다.
onKIP17Received리시브 훅을 호출한다.- ERC721 수신 가능 지갑 역시 지원한다. 즉,
onERC721Received리시브 훅도 지원한다.
MUST
- 모든 토큰의 transfer/mint/burn 은 이벤트 로그를 남겨야 한다. 이는 즉
Transfer이벤트가 transfer/mint/burn 시 반드시 찍혀야 함을 의미한다. - 컨트랙트가 safeTransfer 로 토큰을 받을 수 있으려면 반드시 리시브 훅(
onKIP17Received또는onERC721Received)을 구현해야 한다. 리시브 훅은 반드시 각자의 magic value를 리턴해야 한다.onKIP17Received: 0x6745782bonERC721Received: 0x150b7a02
Memo
onKIP17Received 와 onERC721Received 둘 다 구현하는 컨트랙트는 중복해서 처리하지 않도록 주의해야 할 것 같다.
tags: blockchain, smart contract, erc721, nft, klaytn