안녕하세요 caver-java 를 사용중입니다. requestSmartContractExecution 요청 중 에러에 대해 문의드립니다

안녕하세요 caver-java 를 사용중입니다. requestSmartContractExecution 요청 중 에러에 대해 문의드립니다.

Bad request 오류가 계속 나서 혹시 제가 작성한 ContractExecutionTransactionRequest 값 안에 오류가 날 항목이 있는지 문의드립니다.

input값은 이상 없는 점 확인하였습니다.

원본 소스

String input = contract.encodeABI(exchangeKlayPos, buyCoinAddr, new BigDecimal(caver.utils.convertToPeb(buycount_coin, Utils.KlayUnit.KLAY)).toBigInteger() , Arrays.asList());
// System.out.print(input);
ContractExecutionTransactionRequest request = new ContractExecutionTransactionRequest();
request.setFrom(myKasAddr);
request.setTo(factory_address);
request.setGas((long) 2000000);
request.setSubmit(true);
request.setValue(100000000000);
request.setNonce((long) 1041);
request.setInput(input);
TransactionResult result = caver.kas.wallet.requestSmartContractExecution(request);
System.out.println(result.getTransactionHash());

에러

xyz.groundx.caver_ext_kas.rest_client.io.swagger.client.ApiException: Bad Request
at xyz.groundx.caver_ext_kas.rest_client.io.swagger.client.ApiClient.handleResponse(ApiClient.java:923)
at xyz.groundx.caver_ext_kas.rest_client.io.swagger.client.ApiClient.execute(ApiClient.java:839)
at xyz.groundx.caver_ext_kas.rest_client.io.swagger.client.api.wallet.api.BasicTxApi.contractExecutionTransactionWithHttpInfo(BasicTxApi.java:810)
at xyz.groundx.caver_ext_kas.rest_client.io.swagger.client.api.wallet.api.BasicTxApi.contractExecutionTransaction(BasicTxApi.java:795)
at xyz.groundx.caver_ext_kas.kas.wallet.Wallet.requestSmartContractExecution(Wallet.java:907)
at smart.Fin.run(SmartContract.java:138)

안녕하세요.

알려주신 코드만으로는 확인이 어려울 것 같은데요.

try-catch문으로 ApiException class를 catch하여 ApiException instance 내부의 error message가 무엇인지 확인하여 에러가 무엇을 뜻하는지 확인해보시기 바랍니다.

아래 링크는 KAS API reference에 나와있는 Wallet API의 error code list입니다.

https://refs.klaytnapi.com/ko/wallet/latest#tag/err-400

감사합니다.

답변 감사합니다. 아무래도 request.setValue(100000000000)
부분에 문제가 있었나 봅니다.

혹시 setValue 값에 0.01클레이를 넣으려면 어떤 변환을 거쳐야하는지 알수있을까요??

공식 문서를 보고
request.setValue(Utils.addHexPrefix(값))
까지는 찾아본 상태입니다!

Numeric.toHexStringWithPrefix();를 사용부탁드리겠습니다.

감사합니다.

1 Like