Klip api - Case 5) Execute Contract 관련

안녕하세요.
App2App API - Klip Docs 에 기술된,
Case 5) Execute Contract 요청과 관련하여,
cypress 에 배포된 smart contract는 API 요청 조건만 정확하다면 다 실행이 되는 것인지요?

클립에 listup 돼 있는 token이나 nft card 가 아니더라도 가능한지 궁금합니다.

안녕하세요 :slight_smile:

네, contract execution의 경우 별도 등록이 필요 없습니다. 물론 호출을 위한 contract는 말씀해주신 것처럼 cypress 미리 배포돼 있어야하고, method abi를 적절히 세팅해주시면 문제 없겠습니다.

1개의 좋아요

빠른 회신 감사합니다.
클립을 3rd party에서 지갑으로 사용하기에 가장 필요한 기능이 아닌가 하는데… 잘됐네요.
물론 해당 smart contract를 클립에서는 볼 수가 없는 이슈가 있습니다만…
(언젠가는 연동이 되겠지요. ^^;)

감사합니다.

1개의 좋아요

@_albert

확인요청 드릴 게 있어서 댓글 드립니다.

본 게시글의 제목에 연결하여,
제가 요청한 App2App api - execute_contract 의 prepare를 아래와 같이 요청하였습니다.
(환경 react-native iOS app, log는 xcode 를 통해서 확인.)

(fromAddr, toAddr, tokenAddr은 모두 정상적인 값으로,
아래에서는 임의로 표기하였습니다.

{
“bapp”:{
“name”:“MYAPP”
},
“type”:“execute_contract”,
“transaction”:{
“from”:“0xFromAddr”,
“to”:“0xTokenAddr”,
“abi”:"{\"“constant\”":false,\"“inputs\”":[{\"“name\”":\"“recipient\”",\"“type\”":\"“address\”"},{\"“name\”":\"“amount\”",\"“type\”":\“uint256\”}],\"“name\”":\"“transfer\”",\"“outputs\”":[{\"“name\”":\""\"",\"“type\”":\"“bool\”"}],\"“payable\”":false,\"“stateMutability\”":\"“nonpayable\”",\"“type\”":\"“function\”"}",
“params”:"[\“0xToAddr\”,1]"
}
}

이 req의 응답으로
{ data: { code: 6409, err: ‘invalid value’ },
를 받았습니다.

abi와 params를 여러 형태로 조합하여 prepare를 호출했지만 bad request 아니면 invalid value라는 응답입니다.

혹시 관련해서 조언을 구할 수 있을까요?

추가로 , smart contract 는 KIP-7 token입니다.

확인 부탁 드립니다.

안녕하세요 :slight_smile:

abi 필드의 따옴표 에스케이프 처리가 실패 원인으로 의심되는데요, 혹시 아래 docs를 참고하여 재현되는 curl script를 하나 만들어서 공유해주실 수 있을까요?

넵.
저도 말씀주신 것이 문제지 않을까… 하고 있습니다.
참고하면서 한다고 했습니다만… ^^;

그럼 다시 해보고 말씀드리겠습니다.

1개의 좋아요

해결됐습니다. ^^

(위에 장황한 댓글은 삭제하였습니다.)

설명하자면, 말씀주신 abi, params 그리고 body format 이슈였는데,

  1. value (klay 전송량) 이 mandatory로 '0’을 반드시 넣어야 하고,
    사실 저희 서비스 backend에서 caver-js나 caver-js-ext-kas 에서는 문제가 안됐던 부분이라 문제라고 전혀 생각조차 하지 않았습니다. ^^;
  2. abi 의 output field의 name이 없는 것은 name : “” 로 남기지 말고 삭제해야 하고,
    이 부분도 1번과 동일하게 문제로 인식조차 하지 않았습니다. ^^;
  3. params 는 string이지만 안의 내용 중 uint256 등 숫자는 그 숫자 고유의 값.
    등 3가지 정도겠네요…

나머지는 json object의 구성이니… 기본적인 내용이었고요.

제 질문의 히스토리를 보시면 아시겠지만,
nft card 전송을 위해 react-native 에서 sdk 지원이 되느냐부터 질문을 드렸는데
execute_contract 까지 왔네요. ^^;

관련하여 api docs가 지금도 충분한 도움이 됩니다만,
위의 내용을 조금 보강해 주신다면 저와 같이 실력이 미천한 개발자(? ^^;)에게 도움이 되지 않을까 합니다. ^^;

@_albert 님.

많은 도움 주셔서 감사합니다.

1개의 좋아요

@reinforcement 안녕하세요 :slight_smile:

해결 방법을 자세히 적어주셔서 다른 분들도 참고가 될 것 같습니다. 정리 감사합니다!

1개의 좋아요