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 Like

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

감사합니다.

1 Like

@_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 Like

해결됐습니다. ^^

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

설명하자면, 말씀주신 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 Like

@reinforcement 안녕하세요 :slight_smile:

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

1 Like