오전에 문의드렸었던 내용(https://devforum.kaia.io/t/caver-java-klay/1992)에서 조금 더 테스트해보았습니다.
Klay전송은 성공해새 TransactionHash값(0xffb91deab40044939986c4b7edc77da721990fa271903d7a34f29fa8479d7c88)을 얻어 Baobab Scope에서 정상적으로 조회되는것을 확인하였습니다.
그리고 최종적으로 목표했던 수수료대납 트랜잭션을 테스트하려고 하는데
SingleKeyring senderKeyring = caver.wallet.keyring.createFromPrivateKey("0xAAA");
caver.wallet.add(senderKeyring);
AbstractKeyring feePayerKeyring = getFeePayerKeyring();
caver.wallet.add(feePayerKeyring);
FeeDelegatedValueTransfer feeDelegatedValueTransfer = caver.transaction.feeDelegatedValueTransfer.create(
TxPropertyBuilder.feeDelegatedValueTransfer()
.setFrom(senderKeyring.getAddress())
.setTo(account)
.setValue(BigInteger.valueOf(Long.parseLong("1")))
.setGas(BigInteger.valueOf(1000000))
.setFeePayer(feePayerKeyring.getAddress())
.setKlaytnCall(caver.rpc.klay)
);
caver.wallet.signAsFeePayer(feePayerKeyring.getAddress(), feeDelegatedValueTransfer);
String rlpEncoded = feeDelegatedValueTransfer.getRLPEncoding();
Bytes32 sendResult = caver.rpc.klay.sendRawTransaction(rlpEncoded).send();
log.info("### sendResult : {}", sendResult.getResult());
AbstractKeyring getFeePayerKeyring(){
String feePayerWalletFilePath = walletsRootPath + messageByLocaleService.getMessage("mcc.wallet." + feePayerWallet + ".path");
String feePayerWalletAddrPW = RSATools.decrypt(feePayerWalletEncPW, pair.getPrivate());
//Decrypt keystore.
ObjectMapper objectMapper = ObjectMapperFactory.getObjectMapper();
KeyStore keyStore = objectMapper.readValue(new File(feePayerWalletFilePath), KeyStore.class);
keyring = KeyringFactory.decrypt(keyStore, feePayerWalletAddrPW);
}
이것처럼 feePayerKeyring을 가져와서 set해주었습니다.
소스에 나와있는것처럼 ### sendResult :
부분을 확인하니 null로 찍혀있어
위에 있는 값을 확인하니
"{“jsonrpc”:“2.0”,“id”:3,“error”:{“code”:-32000,“message”:“invalid transaction v, r, s values”}}"로 나타난것으로 보아 서명값이 안맞는 것 같은데 이 부분은 어떻게 해결해야하나요??
https://ko.docs.klaytn.com/bapp/sdk/caver-java/getting-started#managing-keyrings
이곳을 통해서 똑같이 feeDelegatedValueTransfer.setFeePayer(feePayerKeyring.getAddress()); feeDelegatedValueTransfer.setKlaytnCall(caver.rpc.klay);
이런식으로 변경해도 동일하게 에러가 발생했습니다.