안녕하세요 블록체인 초보입니다.
대납 관련해서 작업중인 내용입니다.
사용하는 자바 버젼입니다.
implementation ‘com.klaytn.caver:core:1.5.7’
implementation ‘xyz.groundx.caver:caver-java-ext-kas:1.1.0’
소스 내용입니다.
밑에 소스를 보냅니다.
- 이 계정이 지갑에서 만드는 계정과 차이가 있는것인지요?
// Account from = caver.kas.wallet.createAccount();
// Account to = caver.kas.wallet.createAccount();
Account from = caver.kas.wallet.getAccount("0x476E8656AADD1B7518905DE62ddc9F7e3F211111");
Account to = caver.kas.wallet.getAccount("0xBBFB37E66f0f3ADef08e7e8e0b4C25Aas1221121");
이 계정은 프로그램에서 생성한 내용입니다.
{“address”:“0x476E8656AADD1B7518905DE62ddc9F7e3F211111”,“chainId”:1001,“createdAt”:1618199259,“keyId”:“krn:1001:wallet:d1794ae0-24ad-402d-a046-0567e567d6fd:account-pool:default:0x410c4de55102159ee6c0c06cc696eefd3961616a346ce37838107a7efbaa5738”,“krn”:“krn:1001:wallet:d1794ae0-24ad-402d-a046-0567e567d6fd:account-pool:default”,“publicKey”:“0x0483c8d8f02ccb0fe61b8b011172df79d89a70b9eb6551eb63a6d25178db6edbcea77ab805fd3a7c24f33e0f138bd5cc88d24f5e76e4fa83338e9b1a6fe7867084”,“updatedAt”:1618199259}
0x929a5822ddb5a0036f4e7007c1e00ac437ea140e
현재 소스는 에러가 없이 잘됩니다.
하지만 https://baobab.wallet.klaytn.com/ 작성한 Account를 이용하면 에러가 발생이 됩니다.
@RequestMapping(value = "/sampleresult")
public void sampleresult() throws Exception {
CaverExtKAS caver = new CaverExtKAS("1001", ACCESS_KEY_ID, SECRET_ACCESSKEY);
caver.kas.wallet.getApiClient().setDebugging(true); // Show http request and response in a console.
// Account from = caver.kas.wallet.createAccount();
// Account to = caver.kas.wallet.createAccount();
// Account from = caver.kas.wallet.getAccount(“0x053b3a90d281f21e16b675bcd84ea7077dcc9187”); // https://baobab.wallet.klaytn.com/ 작성한 Account를 이용하면 에러가 발생이 됩니다.
Account from = caver.kas.wallet.getAccount(“0x476E8656AADD1B7518905DE62ddc9F7e3F211111”); // caver.kas.wallet.createAccount() 로 생성한 내용임
Account to = caver.kas.wallet.getAccount(“0x476E8656AADD1B7518905DE62ddc9F7e3F211111”);
BigInteger value = new BigInteger(Utils.convertToPeb(BigDecimal.ONE, "kpeb"));
FDValueTransferTransactionRequest request = new FDValueTransferTransactionRequest();
request.setFrom(from.getAddress());
request.setTo(to.getAddress());
request.setMemo("memo");
request.setValue("0x0");
request.setSubmit(true);
// call a request.
FDTransactionResult result = caver.kas.wallet.requestFDValueTransferPaidByGlobalFeePayer(request);
System.out.println("getTransactionHash=================================>" + result.getTransactionHash());
}
-
https://baobab.wallet.klaytn.com/
작성한 Account를 이용하면 에러가 발생이 됩니다.
에러 내용
GET https://wallet-api.klaytnapi.com/v2/account/0x053b3a90d281f21e16b675bcd84ea7077dcc9187 HTTP/1.1
Authorization: Basic S0FTSzE1VktVTlNJMDhPTUQzQkdPRkI0OkRGbWJqYkRzS0VtdTMzTmtzaFR2eEJ6U3VJekhScFpIYW03VDN5c2E=
Accept: application/json
x-chain-id: 1001
User-Agent: Swagger-Codegen/1.0.0/java
→ END GET
← HTTP/1.1 400 Bad Request (57ms)
content-type: application/json; charset=utf-8
date: Tue, 13 Apr 2021 04:33:21 GMT
content-length: 96
x-envoy-upstream-service-time: 6
server: istio-envoy
OkHttp-Sent-Millis: 1618288402707
OkHttp-Received-Millis: 1618288402735
{"code":1061010,"message":"data don't exist","requestId":"3cb05fe2-0313-4501-a081-9f4662a7f877"}
<-- END HTTP (96-byte body)
-
그래서 프로그램을 이용해서 caver.kas.wallet.createAccount() 를 사용하는 경우 에러가 나지 않습니다.
-
https://baobab.wallet.klaytn.com/ 작성한 Account와 caver.kas.wallet.createAccount() 의 차이가 있는지요?
-
그리고 View Transaction List 를 볼 경우 화면의 내용이 다릅니다.
https://baobab.wallet.klaytn.com 로 작성한 화면
caver.kas.wallet.createAccount() 로 작성한 화면
-
request.setValue(“0x0”); → 에러가 없습니다. 정상 작동
밑의 내용은 왜 그런지요?request.setValue(“0x1”); → 이 부분 변경하면 에러 발생합니다.
에러 메시지 :
{“code”:1065001,“message”:"failed to send a raw transaction to klaytn node; -32000::insufficient funds of the sender for value ",“requestId”:“a0bb6e8a-7de4-4c68-b775-b24c16d50a8b”}BigInteger value = new BigInteger(Utils.convertToPeb(BigDecimal.ONE, “kpeb”));
request.setValue(“0x” + value.toString()); → 이 부분 변경하면 에러 발생합니다.{“code”:1065001,“message”:"failed to send a raw transaction to klaytn node; -32000::insufficient funds of the sender for value ",“requestId”:“aa15b4ae-a764-41c2-a00b-76ec0ffe94a6”}
BigInteger value = new BigInteger(Utils.convertToPeb(BigDecimal.ONE, “kpeb”));
request.setValue(“0x” + value.toString(16)); → 이 부분 변경하면 에러 발생합니다.
{“code”:1065001,“message”:"failed to send a raw transaction to klaytn node; -32000::insufficient funds of the sender for value ",“requestId”:“4f141b5d-9a64-4a23-86dc-b1826b685622”}
수고하세요