멀티시그 키의 분배와 서명에 대한 문의

우선 아래 사이트를 참고하고 있던 중인데요,

아래와 같이 Threshold: 3으로 설정을 한 부분까지는 이해 되었습니다.
image

이해 되지 않는 부분은 caver.wallet.updateKeyring 으로 multisig 업데이트 한 후,
갱신된 keyring을 가지고 transaction sign 및 sendRawTransaction을 보내는
예제 소스인데요, multi sig에 대한 예제 소스라고 하기에는 복사&붙여넣기 느낌이 너무 납니다.

Key를 3개로 ( weight 2 , 1 , 1 ) 분할해서 최소 2개의 키로 sign을 해야
Transaction send를 할 수 있는 것처럼 설명이 이어지다가,
갑자기 모든 key를 다 가지고 있는 keyring으로 sign 한번만 하고,
Tx send를 하는 예제인데요,

문의 내용은 아래와 같습니다.

  1. 모든 key를 가진 keyring이 등록된 caver.wallet은
    한번만 sign을 하더라도 3개의 서명이 다 붙는 것인지요?

  2. multisig로 key 여러 개 사용하도록 갱신하는 경우는 권한의 분배와 확인 절차, 정책 수립 등의 목적성이 다분한데요…Key를 각 권한자에게 분배하려면 가중치에 맞게 Private key를 전달하게 될 텐데요.
    a. Keyring의 생성 과정 예제 소스
    b. Kaikas 등록 절차
    이 내용은 어디에서 찾을 수 있을까요?

  3. 서명의 가중치 합이 Threshold 를 충족하지 못한 Transaction은
    Klaytn의 어디에 등록이 되는 것인 지, 어떤 SDK API를 통해서 조회하고 승인할 수 있는지요?
    등록되지 않는다면…
    별도의 DBMS와 API 서버를 구축 개발해야 최종 서명자에게 전달할 수 있겠군요?

안녕하세요, 먼저 클레이튼만의 다양한 키타입에 관심을 가지고 계신거 같아서 반갑습니다.

순차적으로 답변을 드리자면,

  1. 현재의 caver는 각 키타입의 sign을 호출하게 되면 내부적으로 가지고 있는 keyring에 있는 모든 키들을 이용해 서명을 진행하도록 구현되어 있습니다.

  2. 현재 web3 SDK를 이용해 클레이튼의 다양한 키타입을 사용하실 수 있도록 SDK가 개발되고 있습니다. 상반기 내로 완성을 목표로 하고 있으며 완성후에는 기존 Web3 SDK (web3py, web3js, web3j, ethersjs)로 쉽게 이용하실 수 있는 예제와 시나리오 등이 제공될 예정입니다.

  3. 현재 threshold를 충족하는 signature를 포함하고 있지 않다면 노드에서 reject되고 있습니다. 이를 편리하게 사용할 수 있는 것들을 고민하고 있습니다.

좋은 의견이나 아이디어 있으시다거나 더 궁금하신점 있으시면 지속적으로 소통했으면 좋겠습니다.

2개의 좋아요

위 링크를 보면, caver 구버전에서는 가능한 것으로 보이는데요,
현 버전에는 지원이 안된다는 말씀이실까요?
일단 Kaikas로는 안될 것 같아 보이네요.



multisig tx에 대한 Pending과 조회, 승인(서명추가) 등의 기능은
chain (플랫폼) 내에서 처리하는 기능은 없는 상태이고,
KAS와 같이 별도의 시스템이 필요하다는 말씀이신 것으로 이해하면 될까요?

현재의 caver 버전에서도 키타입별로 사용이 가능합니다. 제가 말씀드린 부분은, 다른 web3 sdk에서도 클레이튼의 키타입을 사용할 수 있도록 개발을 하고 있다는 점 입니다.

그리고 말씀주신대로 현재 multisig tx에 대한 pending처리는 플랫폼 내에서 처리가 안되는게 맞구요 별도의 백엔드를 구축해야 가능합니다. 향후 클레이튼에서 이러한 부분을 쉽게 이용할 수 있도록 백엔드 서비스 또는 플랫폼에서 지원하는 방안 등을 고민하고 있습니다.

기존에 FeePayer 용으로 API 서버 개발해 둔 거에
multisig 처리를 위해서 추가로 확장 해야겠네요.

답변 감사 드립니다.

1개의 좋아요