CaverExt Transfer KeyringContainer질문드립니다

caverExt를 이용해서 KAS를 통해 저희가 main net에 배포한 컨트랙트의 Transfer함수를 호출하려고 합니다.

FeeDelegatedSmartContractExecution을 통해서 서명하는 테스트를 진행하고 있었는데

KeyringContainer container = new KeyringContainer();

container.add(fromKering);
container.add(feePayerKering);

contract.setWallet(container);

FeeDelegatedSmartContractExecution fdsce =  new FeeDelegatedSmartContractExecution.Builder().XXX.build()

container.sign(fromKeyring.getAddress(), fdsce);
container.sign(feePayerKering.getAddress(), fdsce);

String decoded = fdsce.getRLPEncoding();
caverExt.rpc.klay.sendRawTransaction(decoded).send();

처럼 서명에 필요한 from과 feePayer를 추가하고 sendRawTransaction을 사용해 전송하려고 합니다
여기서 의문점은 caver에서 caver.wallet.add(fromKeyring)으로 RoleBaseKeyring이 add가 되는데
caverExt에서는 안되고 있어서 RoleBaseKeyring을 container에 add하는 방법을 문의드리려고 합니다.

감사합니다.

@ToTheMoon

안녕하세요.
이전 문의글과 연결되는 내용이니 여기서 답변을 드려보겠습니다 :slight_smile:

KAS SDK의 경우 KAS를 원활하게 사용하기 위해 개발이 되어 있는 SDK입니다.
KAS를 원활하게 사용한다는 건, 사용하시는 계정 또한 KAS의 Account Pool에서 관리하고 있다는 것을 가정하고 사용이 됩니다.

KAS SDK에서 사용되는 Wallet 클래스의 경우 KAS의 Account Pool과 Interaction을 하는 클래스로, KAS의 Account Pool에 존재하는 계정으로 상호작용을 해야 동작하게끔 되어 있습니다만, 현재 @ToTheMoon 님께서는 현재 직접 관리하시는 개인키를 활용하시는 것으로 보입니다.

이럴 경우 KAS SDK가 아닌 Klaytn SDK인 Caver 를 사용하시는 게 좀 더 좋아보입니다.

일전에 드렸던 caver-java-examples/CaverExample.java at master · klaytn/caver-java-examples · GitHub 예제를 참고하셔서 Caver 를 사용하시는 코드로 변경해보시는 게 좋을 거 같습니다.

복잡한 코드 변경 없이 caver-java 로 의존성을 변경해주시고 예제 코드 참고하셔서 코드를 작성하는 것이 현재 @ToTheMoon 님 유즈케이스에 제일 적합하고 심플한 구조일 거라 생각이 됩니다.

1 Like