기존에 사용했던 멀티시그 지갑을 kas에서 사용하는 방법이 어떻게 되나요?

안녕하세요.

현재 저희 서비스는 EOA 지갑을 멀티시그 지갑으로 업데이트해서 사용하고 있습니다.
숫자는 대략 5만개 이상 됩니다.
그런데 이 지갑을 KAS에서 사용하려면 어떻게 해야할까요?

  1. 기존 멀티시그 지갑을 KAS로 어떻게 옮겨야 하나요?
  2. 지갑한도가 200으로 설정되어 있는데 이 한도 때문에 영향이 있을까요?
  3. 멀티시그의 오퍼레이터들만 옮겨서 기존 멀티시그 지갑들을 지원하는 방법은 어떤걸까요?

감사합니다.

@yoe21c
안녕하십니까. KAS 개발팀입니다.
1월 18일에 출시된 KAS v1.1 부터 마이그레이션 API 를 제공하고 있으며, 아래와 같이 사용이 가능합니다.

  1. 키 생성 API를 통해서 N개의 키를 생성 (keyId, public key 정보를 알 수 있음)
  2. 로컬에서 마이그레이션 하고자 하는 address 를 (1) 에서 받은 public key 로 업데이트 하기 위한 Fee delegation account update transaction 을 만들어서 서명 (RLP 를 얻음)
  3. address, keyId, RLP 를 계정 등록 API 를 통해서 등록

크게는 위의 3가지 단계로 이루어집니다. 단, 위의 단계는 모든 계정이 Public key account 로 변경되기 때문에, multisig 키를 이용하려면 다중 서명 튜토리얼을 참고하시어 계정 업데이트를 수행후에 사용할 수 있습니다.

계정 마이그레이션(Public key 계정으로)은 caver-js-ext-kas 에서 SDK 사용법을 확인하실 수 있습니다.

코드 레벨의 조금더 상세한 프로세스를 확인하고 싶으시면, SDK 의 마이그레이션 함수 내부 로직을 확인하실 수도 있습니다.

추후 튜토리얼을 통해서 조금더 쉽게 사용하실수 있도록 노력하겠습니다.

감사합니다.

1개의 좋아요

자바스크립트 말고 자바버전의 예제가 있을까요?

KAS 외부에서 adress1 이 operator1, operator2 로 서명된 멀티시그 지갑을 KAS 의 멀티시그 지갑으로 마이그레이션 했을 때의 시나리오는 어떻게 되나요?
KAS 외부에서 사용된 operator1, operator2 를 그대로 이용해서 멀티시그의 operator로 활용하고 싶다면 어떻게 해야되나요?
아직 이해가 되지 않아서 좀 자세한 설명이 필요합니다.

안녕하세요.
관련해서 진행하고 있는데요.
RLP를 얻어올 때 아래처럼 코드를 작성했습니다.

    KeyCreationResponse keys = caver.kas.wallet.createKeys(1);

    Key key = keys.getItems().get(0);

    String address = "0x8bc43c7f5ddbb2fd42ebe8feceaa43f1ba361a0d";
    com.klaytn.caver.account.Account account = com.klaytn.caver.account.Account.createWithAccountKeyPublic(address, key.getPublicKey());

    FeeDelegatedAccountUpdate feeDelegatedAccountUpdate = new FeeDelegatedAccountUpdate.Builder()
            .setKlaytnCall(caver.rpc.klay)
            .setFrom(address)
            .setGas(BigInteger.valueOf(250000))
            .setAccount(account)
            .build();

    AbstractFeeDelegatedTransaction tx = caver.wallet.signAsGlobalFeePayer(feeDelegatedAccountUpdate);

아래처럼 오류가 발생합니다.
{“code”:1065100,“message”:“failed to get an account from AMS; data don’t exist”,“requestId”:“f1bd96df-24c1-4808-8d89-6a7b19a14b2e”}

즉 해당 address 가 미리 등록되어 있어야 하는건가요?
저는 KAS 외부에서 생성해서 사용하는 address 를 등록하는것에 대해서 궁금한거라서요.
제가 잘못 이해하고 있는 부분이 있을까요?

햇갈리는 부분 있어서 재문의합니다.
답변주신 address 는 KAS 내부의 주소를 말씀하시는건가요?
아니면 KAS 외부에서 사용되던 주소를 말씀하시는건가요?
KAS 외부에서 사용된 주소라면 그 주소를 등록할수가 있는것 맞을까요?

안녕하십니까.

feeDelegatedAccountUpdate 의 RLP 를 이용하여, 계정 등록하는 API 를 통해서 등록하셔야 사용할 수 있게 됩니다.

이 때 계정의 주소는 @yoe21c 님이 가지고 계신 계정 주소를 의미하며, 키는 키 생성 API 에서 생성된 keyID 를 의미합니다.

네, 감사합니다.
이 부분은 이해가 되었습니다.
감사합니다.