안녕하세요.
오전에 문의드리고 DOC문서를 보면서 샘플테스트를 진행하고 있습니다.
해당 샘플소스를 보면 PublicKey로 되어있는데 PrivateKey로 했을 때 “publicKey must have uncompressed format” 오류가 발생했습니다.
기존에 Caver-java에서는 privateKey를 사용하여 roleBasedKey로 업데이트 요청하였을 때 성공하였는데
KAS에서는 오류가 발생하여 해당 부분을 문의드립니다.
kas에서도 PrivateKey를 통한 업데이트가 예정되어 있는지 아니면 publicKey를 만드는 방법(에제의 “createMultiSig” 부분)이 궁금하여 문의드립니다.
테스트코드를 찾아서 한번 확인해봤는데
github코드에서는 PublicKey로 Update를 하고 있는것을 확인하였습니다
privateKey로 roleBasedKey로 업데이트하는 예제가 있을까요??
-
- 18 16:36 추가
CaverExtKAS caver = new CaverExtKAS();
caver.initKASAPI(1001, accessKeyId, secretAccessKey);
String publicKey1 = "0x04a9f0fbeab8c415e560c12266c51ecd90c71dd16ca97a99d3fd55f2eaf4698a1a68a942c0d25bd27f3d4e5604b394fb197b69091972d70d35927896633aae140c";
String publicKey2 = "0x0432ac2fa7aa17035999f9dc2b151d9b551a85e4acb6c61e2e4905bafcf64b5fb29f59f12d631a31a3fb32c9913945cfc623db4714471a7ceee4c2d39c99922691";
String publicKey3 = "0x040f381470965e1c939e792b583ae221fd5fb7524c25bc07221e2a80f71431ed2a2e859dfb641aa8c809d5e649d0b5fc3ba407369aa7e67f72d63d5a253f143048";
MultisigUpdateKey multisigUpdateKey = new MultisigUpdateKey();
multisigUpdateKey.setThreshold((long)2);
multisigUpdateKey.setWeightedKeys(
Arrays.asList(createMultiSig(2, publicKey1),
createMultiSig(1, publicKey2),
createMultiSig(1, publicKey3))
);
KeyTypeMultiSig keyTypeMultiSig = new KeyTypeMultiSig(multisigUpdateKey);
FDUserAccountUpdateTransactionRequest request = new FDUserAccountUpdateTransactionRequest();
request.setFrom("0x5eF85F4600402FE7249F224c71FB11aAA0e5B6e4");
request.setAccountKey(keyTypeMultiSig);
request.setSubmit(true);
request.setFeePayer("0x9775723fbb9a567e18d8497421f8C26Cd92070c7");
FDTransactionResult result = caver.kas.wallet.requestFDAccountUpdatePaidByUser(request);
log.info("### result : {}", objectToString(result));
DOC에 나온 예제 그대로 테스트를 해보았는데
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.FdtxUserApi.uFDAccountUpdateTransactionWithHttpInfo(FdtxUserApi.java:156)
at xyz.groundx.caver_ext_kas.rest_client.io.swagger.client.api.wallet.api.FdtxUserApi.uFDAccountUpdateTransaction(FdtxUserApi.java:141)
at xyz.groundx.caver_ext_kas.kas.wallet.Wallet.requestFDAccountUpdatePaidByUser(Wallet.java:2112)
at io.test.klaytn.CaverExtServiceTest.updateAccountRolebasedKey(CaverExtServiceTest.java:83)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
위와 같은 오류가 발생하였습니다
From의 주소를 baobab.wallet.klaytn.com에서 새로 만들어서 해보고 KAS Console의 Account pool에 등록된 지갑 주소와 Public주소로 해보았는데도 동일하게 Bad Request가 발생했습니다.
KAS에서는 roleBaseKey를 지원하는지 의문이 드네요…