KAS를 사용중인데 KAS 외부 계정의 private key 로 트랜잭션을 실행하고 싶습니다. 어떻게 하나요?

아래 같은 코드를 Baobab 에서는 실행되는데 Cypress 에서는 어떻게 실행해야 하나요?
KAS를 사용중인데 KAS 외부 계정의 private key 로 트랜잭션을 실행하고 싶습니다.
어떻게 해야 하나요?

Caver caver = new Caver("https://api.baobab.klaytn.net:8651");
SingleKeyring executor = KeyringFactory.createFromPrivateKey("0x{private key}");
caver.wallet.add(executor);
try {
    Contract contract = new Contract(caver, ABI, '0x{address in hex}');
    
    SendOptions sendOptions = new SendOptions();
    sendOptions.setFrom(executor.getAddress());
    sendOptions.setGas(BigInteger.valueOf(40000))
    TransactionReceipt.TransactionReceiptData receipt = contract.getMethod("set").send(Arrays.asList("testValue"), sendOptions);
    } catch (IOException | TransactionException | ClassNotFoundException | NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
    //handle exception..
}

@seungbaek.lee

안녕하세요.
사용하시는 소스코드 그대로 사용 가능하십니다.

다만 Caver 객체를 생성하실 때 매개변수로 주는 Endpoint URL 값을 KAS의 NodeAPI URL인 https://node-api.klaytnapi.com/v1/klaytn 을 주시면 되겠습니다. :slight_smile:

빠른 답변 감사합니다.

Caver caver = new Caver(“https://public-node-api.klaytnapi.com/v1/cypress”);

Endpoint URL 로 퍼블릭 노드인 https://public-node-api.klaytnapi.com/v1/cypress 과는 어떤 차이가 있나요?

얼마전부터 퍼블릭 노드를 지원한걸로 포럼에서 보았는데요. 퍼블릭 노드는 사용량 제한이 있다고 보았습니다.

https://node-api.klaytnapi.com/v1/klaytn 를 사용해서 KAS 키를 이용해서 사용량 계약에 따라 호출하려면 어떻게 해야 할까요?

2021년 12월 27일 (월) 오전 10:29, Klaytn Developers Forum를 통한 Denver <klaytn@discoursemail.com>님이 작성:

@seungbaek.lee

퍼블릭 노드에는 말씀하신 것처럼 사용량 제한이 있습니다.
따라서 다량의 요청이 예상되신다면 @seungbaek.lee 님의 KAS 계정에서 생성한 Access KeySecret Key를 사용하시는 것이 좀 더 좋을 거 같습니다.

KAS의 console에 들어가셔서 좌측 메뉴의 Security > Credential 메뉴를 확인해보시면 AccessKey 생성 버튼이 있습니다. 해당 버튼을 눌러서 생성되는 Access KeySecret Key를 사용하셔서 Caver 객체를 생성하시면 됩니다.

caver-java-examples/CaverExample.java at 2237e263617c20ea44017c8d4346bee851a25e81 · klaytn/caver-java-examples · GitHub 이 소스코드를 참고해보시면 힌트를 얻으실 수 있을 거 같습니다 :slight_smile:

이렇게 설정하시면 @seungbaek.lee 님의 계정에서 API 콜이 이루어질 때마다 호출 횟수가 그 계정에서 차감되게 됩니다.

감사합니다.

1 Like

예제 감사합니다~

문제 해결되었습니다.

2021년 12월 27일 (월) 오전 11:16, Klaytn Developers Forum를 통한 Denver <klaytn@discoursemail.com>님이 작성:

1 Like

퍼블릭 노드 사용 시 FeePayer 를 KAS 콘솔의 KAS계정 feepayer 로 사용할 수 있나요? 가능하다면 바오밥에서 Global Fee Payer 도 사용가능 할까요?
가능하다면 각각 어떻게 호출해야 하는지요?