트랜잭션 디버깅 관련 질문입니다

안녕하세요. 현재 KAS의 KIP17을 이용하여 klaytn ide에서 컨트랙트를 개발하는 중입니다.

KIP17의 safeTransferFrom을 이용하던 중 오류가 나서 문의를 드립니다.

  1. safeTransferFrom함수를 사용할 때, from : 개인지갑주소 to : 개인지갑주소로 전송을 하면 문제 없이 실행되는데 from:개인지갑주소 to: 컨트랙트 주소로 전송을 하면 오류가납니다. onKIP17Received는 구현했습니다.(올바르게 구현한 것인지는 정확히 모르겠습니다.) 이유를 알 수 있을까요?

  2. 실행한 트랜잭션의 디버깅을 위해서는 무조건 endpoint node가 필요한가요? node설치 없이 klaytn ide를 통해서 디버깅을 하는 방법은 없을까요? 혹은 다른 ide를 사용할 경우에 디버깅을 하는 방법이 있다면 알려주시면 감사하겠습니다.

실패한 트랜잭션입니다.

안녕하세요. 클레이튼 포럼에 질문을 남겨주셔서 감사합니다.

  1. onKIP17Received의 구현 부분을 다시 체크해보시기 바랍니다
  2. baobab 네트워크의 경우 퍼블릭 EN을 운영중에 있습니다.
    주소는 https://api.baobab.klaytn.net:8651/ 입니다.
    Connecting to Baobab Public EN 글도 참고하시기 바랍니다.

감사합니다.

답변 감사합니다.

올려주신 퍼블릭 EN관련 문서를 참고했습니다.

Klaytn ide에서 Run → Environment → Caver Provide에 “https://api.baobab.klaytn.net:8651/” 해당 url을 입력하여 Contract를 Deploy하려고 했는데 실패합니다.

  1. klaytn ide에 퍼블릭 en을 연결하여 contract를 Deploy하는 방법을 알 수있을까요?

  2. 1번이 해결되어 contract를 deploy한 후 퍼블릭 en에 접속하여
    VM Tracing - Klaytn Docs
    여기에 있는 debugging 하는 방법을 알 수있을까요?? 링크의 명령어들을 실행하기 위해서 접속하는 방법이 궁금합니다.

  3. 그리고 전에 질문들을 검색해본 결과 아래 질문의 답변에서 3월 정도에 퍼블릭 EN이 중단 되었다는데 다시 운영이 되는 중인가요?
    Klaytn IDE 사용 / Transaction Debugging 관련 문의

  4. safeTransferFrom을 실행하기 위해 임의로 만든 contract안에 해당 함수만 구현되어 있으면 되는 것 아닌가요? 혹시 다른 것이 또 있을까요?

    function onKIP17Received(
    address operator,
    address from,
    uint256 tokenId,
    bytes memory data
    ) public returns (bytes4) {
    return bytes4(keccak256(“onKIP17Received(address,address,uint256,bytes)”));
    }

감사합니다.

안녕하세요. 질문 주신 내용에 순서대로 답변드리도록 하겠습니다.

  1. klaytn IDE에서는 public EN(https://api.baobab.klaytn.net:8651/)에 연결해서 스마트컨트랙트를 배포할 수 없습니다. 노드가 personal mode가 아니기 때문입니다. public EN을 사용하실 경우 caver 사용을 추천드립니다.
  2. baobab 퍼블릭 EN에 접속하는 방법은 다음과 같습니다.
  • ken이 설치된 디렉토리로 이동
  • ./ken attach https://api.baobab.klaytn.net:8651/ 입력
  • 다만 public en에서 사용 가능한 api 종류는 klay, net, rpc 세 가지 종류로, 아쉽게도 debug api는 사용하실 수 없습니다.
  1. 현재 사용 가능합니다.

  2. 함수를 구현하실때 IKIP17Receiver.onKIP17Received 를 ‘implement’ 하셨나요?

감사합니다.