트랜잭션 수수료 대납 Klay 전송 오류 문의드립니다

오전에 문의드렸었던 내용(https://forum.klaytn.foundation/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);이런식으로 변경해도 동일하게 에러가 발생했습니다.

Transaction을 보내는 주체인 "from"의 sign내용이 빠진 것 같습니다.

마찬가지로, Getting Started - Klaytn Docs
문서 참고 부탁드립니다.

@Kale

caver.wallet.sign(senderKeyring.getAddress(), feeDelegatedValueTransfer);
이 부분을 추가하고 "signAsFeePayer"을 호출해야했군요…

감사합니다 정상적으로 호출되는거 확인했습니다.