KAS 에서 sendTransaction안되나요?

안녕하세요 클레이튼 관련 개발을 하고 있습니다.

사용해 보니 Klaytn에서 Klaytn API Service라는 API서비스를 지원한다는 것을 알게되었습니다.

그래서 회원가입 후 사용해 caver-js에서 caver.rpc.klay.sendTransaction()을 사용하니

Error: Invalid JSON RPC response: {“code”:1034210,“message”:“Unsupported method - klay_sendTransaction”,“requestId”:“5b865ac7-8ff2-4bac-9e94-82410f828fa2”}

아래의 에러가 나면서 실패하고 있습니다.

그래서 KAS 지원 함수 리스트를 보니 klay_sendTransaction 함수를 지원하지 않는다고 나와있습니다.

이럴 경우에 노드를 직접 운영해야만 서명이나 컨트랙트 배포등의 작업을 할 수 있는 것인가요?

다른 가스비나 chainId같은거는 잘 되는데 이건 지원이 안되네요ㅠㅠ

아니면 personal_importRawKey 를 해야하는 건가요?

근데 이것도 KAS에서는 지원하지 않네요…

어떻게 해야 트랜잭션 서명, 컨트랙트 배포를 자유롭게 할 수 있나요??

직접 노드를 운영하는 것 밖에 없나요?

안녕하세요. Node API만을 사용해서 컨트랙트 배포 및 실행을 하려는 경우에는 서명까지 마친 트랜잭션을 전송해야 합니다.

문서에 보시면 KAS SDK를 통해서 KAS Node API를 사용하여 Contract, KCT를 사용하는 방법이 설명되어 있습니다.
만약에 트랜잭션을 따로 생성하는 경우에는 await keyringContainer.sign 함수를 사용한 결과를 caver.rpc.klay.sendRawTransaction으로 전송하면 됩니다.

감사합니다

1개의 좋아요

web3나 ethers sdk를 사용하면 sendTransaction()이라는 함수를 사용하면 내부적으로 signing과 브로드캐스팅을 다 하는데, klaytn의 sdk는 개발자가 직접 sign후 sendRawTransaction()을 해야하는 특징이 있군요…

저는
caver.rpc.klay.accounts.signTransaction()을 사용해서 transaction call을 서명했고
caver.rpc.klay.sendRawTransaction 를 사용해 transaction을 broadcasting 했습니다.

keyring관련 라이브러리에도 서명관련한 기능이 있네요…

답변 감사합니다.