Nft(kip-17) 문의드립니다

안녕하세요.
다름이아니라 KIP-17을 이용하여 NFT에 대한 공부하던 진행하던 중에 문의사항이 있어 문의드립니다.

제가 현재까지 진행한 내용은 NFT를 생성한 후 소유권 이전 기능까지 확인하였습니다.
이후 소유권 이전에 대한 히스토리 기록을 확인하는 기능을 구현해보기 위해 자료를 찾아보았지만 마땅한 자료를 발견하지 못하였습니다.

다만, KAS의 다음 URL을 호출하여 NFT의 소유권 이전 히스토리를 확인할수 있는 방법을 발견하였는데요…
https://th-api.klaytnapi.com/v2/contract/nft/{nft-address}/token/{token-id}/history

혹시 해당 기능을 KAS를 이용하는 방법이 아닌 제가 직접 구현하는 방법이 있을지 조언 부탁드립니다.
(solidity를 이용하는 방법이나 caver-js 를 이용하는 방법, 어느 방법이라도 조언 주시면 좋을것 같습니다.)

감사합니다.

1개의 좋아요

@choiJae

안녕하세요.
KIP 17: Non-fungible Token Standard 표준을 확인해보시면 Transfer event 가 있으신 걸 확인해보실 수 있습니다.

이벤트 로그를 조회해보시면 해당 NFT 에 대한 소유권 이전 히스토리를 확인하실 수 있습니다. 아래 링크를 참고해보셔서 이벤트 로그를 조회해보시면 좋을 거 같습니다.

이벤트 로그 조회 관련 참고할 만한 포럼 글 링크: 트렌젝션 영수증내 로그를 분석하려면 어떤 문서를 참고해야할까요

2개의 좋아요

조언 감사드립니다.
말씀해주신 내용을 바탕으로 API문서 등을 살펴보았는데요…
tokenId를 이용한 조회는 불가능하고 transactionHash 값을 이용한 조회가 가능한것으로 확인했습니다.

그렇다면 NFT 토큰 소유주의 변경 내역을 확인하기 위해서는 다음과 같은 절차를 거쳐야 확인이 가능한 것으로 이해했는데요…
제가 이해한 것이 맞는지 확인 부탁드려도 될까요??

제가 이해한 방법은 다음과 같습니다.

NFT Contract 주소에서

  1. 소유권 전환(Transfer) 이벤트 리스트 가져오기(둘중에 한가지 방법 사용)
  • caver.klay.Contract.getPastEvents(‘Transfer’, {callback});
  • caver.klay.Contract.events.Transfer({callback});
  1. 조회한 리스트의 각각 이벤트 항목의 transactionHash 를 이용하여 트랜잭션 영수증 조회
  • caver.klay.getTransactionReceipt(transactionHash, {callback});
  1. 조회된 각 Transaction의 영수증에서 소유권 이전 확인
  • from 및 to 확인

※ tokenId 등의 추가 정보는 영수증 내의 logs 내부의 데이터 확인 필요

@choiJae

https://docs.klaytn.com/dapp/json-rpc/api-references/klay/filter#klay_getlogs API 를 참고해보시면 좋을 거 같습니다.
해당 API를 caver SDK를 통해 사용하고 싶다면 caver.rpc.klay.getLogs 와 같이 사용하실 수 있습니다.

address에 조회를 원하는 컨트랙트의 주소 또는 주소 리스트를 기입하시고 topics 에 이벤트 관련 데이터를 넣어주시면 됩니다.
fromBlock에 기재한 블록부터 로그 기록을 조회해서 관심 있는 토픽에 해당하는 로그만 가져오는 API 입니다.

이렇게 가져온 이벤트 로그에는 event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId); 에 기재되어 있듯 from, to, tokenId 를 얻으실 수 있고 해당 데이터들을 적절히 가공하면 히스토리를 뽑아내실 수 있습니다. 질문자 분의 니즈에 따라서 디비화를 하실 수도 있겠지만, 이런 일련의 작업들에 들어가는 시간과 노력을 줄여주기 위해 KAS 와 같은 서비스가 존재한다는 점도 참고 부탁드립니다.

getLogs를 사용해서 이벤트 로그 파싱하는 부분은 찾아보시면 자료들이 많이 나올 거예요.

도움이 되었길 바랍니다.

3개의 좋아요

감사합니다!!
조언해주신대로 한번 더 살펴보고 문의사항이 생기면 다시 문의하도록 하겠습니다~!!

2개의 좋아요