Caver-JAVA 에서 signTransaction 이용 시, unknown account Error

AccountKey key = caver.rpc.klay.getAccountKey(address).send();
		ValueTransfer valueTransfer =
				caver.transaction.valueTransfer.create(TxPropertyBuilder.valueTransfer().
		setFrom(address).setTo("{수신자 지갑 주소}").setValue
(BigInteger.valueOf(1)).setGas(BigInteger.valueOf(300000)).setNonce(BigInteger.valueOf(1)).setGasPrice(BigInteger.valueOf(100000000)));
caver.rpc.klay.signTransaction(valueTransfer).send();

위의 코드를 이용하여 JSON-RPC를 통해 signTransaction()을 하려고 하였으나
아래와 같이 응답 받았습니다

{"jsonrpc":"2.0","id":1,"error":{"code":-32000,"message":"unknown account"}}

관련하여 버전은 아래와 같이 사용하고 있습니다.

<dependency>
     <groupId>com.klaytn.caver</groupId>
     <artifactId>core</artifactId>
      <version>1.6.3</version>
</dependency>				
<dependency>
     <groupId>com.squareup.okhttp3</groupId>
     <artifactId>okhttp</artifactId>
     <version>4.9.0</version>
</dependency>

확인 부탁드립니다.

1 Like

@escon1004

안녕하세요. signTransaction RPC Call은 Docs에도 명시되어 있듯 "요청하는 노드에 등록된 Account 를 활용해서 서명"을 하는 동작을 수행합니다.

NOTE : The address to sign with must be unlocked.

이 동작을 의도하신 게 맞는지 먼저 확인 부탁드리고
의도하신 게 맞다면 Account 가 unlock 되어 있는지 확인 부탁드립니다.

그게 아니라 개인키를 활용해서 트랜잭션을 서명하고 전송하고 싶으신 케이스라면 https://github.com/klaytn/caver-java-examples/blob/master/transaction/send_klay/src/main/java/CaverExample.java 예제를 참고 부탁드립니다.

감사합니다.

1 Like