제가 너무 주관적으로 이야기를 했습니다. 양해 부탁드리고요… ~
진행한 순서는 이렇습니다.
KAS 공식 오픈 전까지, 저희는 public-en을 사용하고 있었으며, 지금은 KAS를 적용하기 위해 test를 진행하고 있습니다.
저희는 FT(KIP7) 기반의 token을 배포해서 서비스에서 사용하고 있으며,
cave-js-ext-kas를 적용했을 때 현재 저희 서비스에서 필요한 기능들이 정상적으로 동작하는 것을 확인하였습니다.
(caver-js + publicEN, caver-js-ext-kas + KAS) 둘 다 정상동작 확인.
==> 여기까지는 FT 에 대한 내용입니다.
그런데 저희가 NFT를 도입하기 위해서 klip partners에 가입했고, NFT(card라고 부르더군요)를 발행하였습니다.
partners에서 제공하는 API는 partners에 가입해서 받은 계정(EOA)만
사용할 수 있는 API라는 제약이 있어서,
(API가 확장될 것으로 생각하지만, 아직은 아니라서 임시방편으로 아래 기술된 기능을 만들었습니다.)
저희 서비스 내부의 회원(EOA)들끼리 NFT(card)를 주고 받기 위해
const kip17 = new caver.kct.kip17(contractAddr);
의 방식으로 transferFrom을 호출했고
card가 정상적으로 전송되는 것을 확인했습니다.
물론 환경은 caver-js + public-EN 에서 확인했습니다.
이 상황에서 아래 2가지 issue를 확인했고, 해결하고자 합니다.
1) NFT(card) 토큰정보 조회
Caver SDK (caver-js, caver-java)는 Token History API를 지원하지 않습니다.
라고 기술돼 있었고,
따라서 당연히 caver-js-ext-kas도 지원을 하지 않을 것으로 생각했으며,
let owned = await kip17.ownerOf(cardID)
let uri = await kip17.tokenURI(cardID);
등으로 테스트를 해보니
’Returned values aren’t valid, did it run Out of Gas?’ 라고 응답을 받았습니다.
그래서 현재는 KAS에서 추천하는 curl 방식으로 토큰정보조회 기능을 구현하고 있습니다.
2) 스마트컨트랙트 실행 : transferFrom
(caver-js + publicEN 환경에서는 정상동작하고 있습니다만…)
KAS를 도입하기 위해서 진행하던 중
의 내용을 살펴보니 별다른 제약은 없지만,
API를 호출하는데,
transferFrom의 input
(docs 에 나온 예시를 보면
input: ‘0xe942b5160000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000036b65790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000576616c7565000000000000000000000000000000000000000000000000000000’,
)
과 같이 bytecode를 입력하라고 돼 있는데, 제가 아직 그 값은 몰라서 알아보고 있습니다.
위에 언급드렸듯, klip partners에 가입해서 받은 NFT(card)라 contract 의 address외에 abi 및 bytecode 등은 제가 모릅니다.
(혹시 알려주실 수 있는지요? ) mint, burn, transferFrom 등입니다. ~
==> 여기까지가 NFT(card)관련 내용입니다.
https://docs.klaytn.com/ 에는 input을 함수이름(transferFrom)으로 명시적으로 사용해도 되는데,
https://docs.klaytnapi.com/ 에는 input을 bytecode로 사용하라고 돼 있네요.
혹시 NFT도 docs.klaytn.com 에서 제시하는 방식대로 진행해도 무방한지 궁금합니다.
뭐 제가 임의로 함수이름을 명시해서 테스트를 해볼까 생각을 하고 있습니다.
내용이 좀 길었습니다.
그럼 확인 부탁드립니다.