Klay_sign 질문입니다

caver-java 를 이용해서 서명을 개발중에 다음과 같은 오류가 발생하여 문의드립니다.

public Bytes klaySignTx(String address, byte[] preSignedHash) throws Exception{
    return caver().rpc.klay.sign(address, Numeric.toHexString(preSignedHash)).sendAsync().get();
}

위와 같이 서명을 하려고 하는데

java.util.concurrent.ExecutionException: org.web3j.protocol.exceptions.ClientConnectionException: Invalid response received: 400; {“code”:1034210,“message”:“Unsupported method - klay_sign”,“requestId”:“f47d1efc-88a8-9817-8abd-e9ef9f2a3105”}
at java.base/java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:395) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture.get(CompletableFuture.java:1999) ~[na:na]

지원하지 않는 메소드 라는 오류가 나옵니다.

이더리움을 개발할때는 다음과 같은 소스를 사용했었고 문제없이 동작했었습니다.

public EthSign ethSignTx(String address, byte[] preSignedHash) throws Exception{
    return web3j().ethSign(address, Numeric.toHexString(preSignedHash)).sendAsync().get();
}

이더리움으로 개발해놓은걸 클레이튼으로 마이그레이션중인데 어렵네요. ㅠㅠ
확인부탁드립니다.

@0746

안녕하세요.

우선 해당 에러 메시지는 연결을 시도하는 노드에서 klay_sign 메서드를 제공하지 않기 때문에 생기는 에러입니다. 연결을 시도하고 있는 노드의 설정 중 지원하는 API 목록에서 klay namesapce가 빠진 건 아닌지 점검이 필요할 거 같아요.

어떤 노드에 연결을 하고 계신지요? 두 번째로 현재 사용하시려는 klay_sign RPC Call은 서명을 하는 계정이 해당 노드에 등록 및 Unlock이 되어 있어야 합니다.

문서에서도 이 부분에 대해 분명히 설명을 하고 있습니다.

위와 같은 점들을 숙지하셨다면
CaverExample_klay_sign.java · GitHub 와 같이 작성하신 뒤 테스트 해보시기 바랍니다.

caver-java 를 좀 더 잘 사용하시기 위해서는 GitHub - klaytn/caver-java-examples 에 있는 예제들을 참고해보시는 것도 추천드립니다 :slight_smile: