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” 이런 오류메시지가 발생했습니다.
어떤 부분을 수정해야하는지 질문드립니다.