안녕하세요. 마이그레이션 작업을 진행하던 도중에 오류가 발생해서 문의드립니다.
HttpService httpService = new HttpService(kasNodeConf.kasNodeUrl);
httpService.addHeader("Authorization", okhttp3.Credentials.basic(kasNodeConf.accessKey, kasNodeConf.secretAccessKey));
httpService.addHeader("x-chain-id", kasNodeConf.chainId);
Web3j web3j = Web3j.build(httpService);
Function function = new Function(
"unpause",
Collections.emptyList(),
Collections.emptyList()
);
String encodedFunction = FunctionEncoder.encode(function);
byte[] functionArray = Numeric.hexStringToByteArray(encodedFunction);
// 보내는 지갑 Credentials
KaiaCredentials credentials = KaiaCredentials.create(privateKey);
// 수수료 지갑 Credentials
// String feePayerPrivateKey = keyStoreTools.getFeePayerPrivate();
// KaiaCredentials feePayerCredentials = KaiaCredentials.create(feePayerPrivateKey);
BigInteger nonce = web3j.ethGetTransactionCount(credentials.getAddress(), DefaultBlockParameterName.LATEST).send().getTransactionCount();
EthChainId ethChainId = web3j.ethChainId().send();
long chainId = ethChainId.getChainId().longValue();
KaiaRawTransaction kaiaRawTransaction = KaiaRawTransaction.createTransaction(
TxType.Type.FEE_DELEGATED_SMART_CONTRACT_EXECUTION,
nonce,
gasProvider.getGasPrice(),
gasProvider.getGasLimit(),
contractAddress,
BigInteger.ZERO,
credentials.getAddress(),
functionArray
);
// Sign as Sender
byte[] signMessage = KaiaTransactionEncoder.signMessage(kaiaRawTransaction, chainId, credentials);
위 와같이 테스트를 했는데 “java.lang.NoSuchMethodError: ‘org.web3j.crypto.transaction.type.TxType$Type org.web3j.crypto.transaction.type.AbstractTxType.getKaiaType()’” 오류가 발생했습니다.
어떻게 해결하면 될까요?
====================================================================
디버깅을 해보니까
KaiaTransactionEncoder.signMessage 부분에서
AbstractTxType tx = (AbstractTxType) rawTransaction.getTransaction();
으로 tx.getKaiaType()을 확인하도록 되어 있는데 KaiaType() 대신에 KaltyType()으로 되어 있어서 오류가 발생하는거 같습니다.