FeeDelegatedSmartContractExecution nonce관련하여 질문이 있습니다

Klaytn 네트워크에 "ABC"라는 메소드를 만들어서 배포하여 해당 메소드를 호출하려고 합니다.

이 메소드는 받는지갑과 수량을 List로 받아서 처리하도록 했습니다.

@Test
public void testABC() throws Exception {
    String testPrivateKey = "0x07f2066d045c19f72479cf3079a8161244bb3a9d0899a3487b6ec00c13596360";
    String method = "ABC";

    AbstractKeyring feePayerKeyring = keyStoreTools.getFeePayerKeyring(true);
    Caver caver = caverProvider.get();

    Utils Utils = new Utils(caver, TokenContractAddress, feePayerKeyring);
    Token token  = Utils.getToken();
    Contract Contract = caver.contract.create(.getAbi());

    AbstractKeyring senderKeyring = Utils.createFromPrivateKey(testPrivateKey);
    // caver 객체에 sender, feePayer 설정
    Utils.getToken().setSender(senderKeyring);
    Utils.getToken().setFeePayer(feePayerKeyring);
    Contract.setWallet(caver.wallet);

    // defaultSendOption객체에 senderKeyring, feePayerKeyring 초기값 설정
    token.getDefaultSendOptions().setFrom(senderKeyring.getAddress());
    token.getDefaultSendOptions().setFeeDelegation(true);
    token.getDefaultSendOptions().setFeePayer(feePayerKeyring.getAddress());

    List<String> toAddressList = new ArrayList<>();
    toAddressList.add("0x980e41f0a74f1c3d749b8ec54d9e3de3279e1feb");
    toAddressList.add("0xeca192412098a7d76044129a136f43769b074da2");

    String amount = caver.utils.convertToPeb("1", Utils.KlayUnit.KLAY);
    List<BigInteger> amountList = new ArrayList<>();
    amountList.add(new BigInteger(amount));
    amountList.add(new BigInteger(amount));

    String input = Contract.encodeABI(method, toAddressList, amountList);
    BigInteger nonce = caver.rpc.klay.getTransactionCount(senderKeyring.getAddress()).send().getValue();
    SendOptions sendOptions = determineSendOptions(, .getDefaultSendOptions(), method, Arrays.asList(toAddressList, amountList));

    FeeDelegatedSmartContractExecution fdsce =  new FeeDelegatedSmartContractExecution.Builder()
            .setKlaytnCall(caver.rpc.klay)
            .setFrom(senderKeyring.getAddress())
            .setTo(TokenContractAddress)
            .setGas(sendOptions.getGas())
            .setInput(input)
            .setNonce(nonce)
            .build();

    // Decoding하지 않고 sign(), signAsFeePayer()를 수행
    caver.wallet.sign(senderKeyring.getAddress(), fdsce);
    caver.wallet.signAsFeePayer(feePayerKeyring.getAddress(), fdsce);
    String decoded = fdsce.getRLPEncoding();

    Bytes32 txHash_executed = caver.rpc.klay.sendRawTransaction(decoded).send();
    log.info("========= {}", objectToString(txHash_executed));
}

jUnit으로 테스트코드를 작성해서 실행했는데 Transcation Hash가 나와서 scope에 조회를 했습니다.
그랬더니


캡쳐와 같이 block을 조회를 못하였습니다.

그래서 같은 정보로 실행했는데 “there is another tx which has the same nonce in the tx pool” 이런 오류메시지가 발생했습니다.

어떤 부분을 수정해야하는지 질문드립니다.

안녕하세요, 해당 현상은 현재 트랜잭션이 실행 대기상태이기 떄문인데요, same nonce 에러가 발생한 이후로 동일한 현상이 계속 발생하나요?

@jack_jin
네 동일하게 발생하다가 시간이 지나면 same nonce가 발생하지 않고
"klay_getTransactionReceipt"메소드를 호출하는 부분에서 오류가 발생했습니다
그때 오류는 "Transaction receipt was not generated after 30 seconds for transaction: 0x99f7a258363866e60c60123c3af573ff1fd3f9c9e03a3fa72cf380adb1792141"로 발생했습니다.

그리고 다시 실행하면 same nonce가 발생하고 동일한 패턴으로 동작합니다.

same nonce가 발생하지 않았을 때 이전의 Tx를 scope에 조회하면 결과가 나올까요?

지금 다시 실행해봤는데 정상적으로 응답값을 받았습니다

최초에 실행했을 때의 Nonce값은 625였는데 정상적으로 받은 응답의 Nonce값은 627로 왔네요
그러면 중간에 비어있는 626이 제가 질문드렸던 캡쳐의 Hash값이라고 하는건데
Hash값이 동일하고 왔습니다

동일하게 온 Hash값으로 처리되고 Nonce가 626인 거래는 실패로 처리되는건가요??