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

**URL:** <https://devforum.kaia.io/t/topic/6572>\
**Category:** Kaia\
**Created:** [4월 6, 2023, 10:06오전 UTC](https://devforum.kaia.io/t/topic/6572 "2023-04-06T10:06:53Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![relician](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/relician/32/1413_2.png) [@relician](https://devforum.kaia.io/u/relician)\
**Post date:** [4월 6, 2023, 10:06오전 UTC](https://devforum.kaia.io/t/topic/6572/1 "2023-04-06T10:06:53Z")

</div>

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

> **[\[Caver\] Caver로 Klaytn 계정의 키를 바꾸는 방법 #2 — AccountKeyWeightedMultiSig](https://klaytn-tech.medium.com/caver-caver%EB%A1%9C-klaytn-%EA%B3%84%EC%A0%95%EC%9D%98-%ED%82%A4%EB%A5%BC-%EB%B0%94%EA%BE%B8%EB%8A%94-%EB%B0%A9%EB%B2%95-2-accountkeyweightedmultisig-c317a785299)**
>
> Klaytn의 특별한 점은 키와 주소를 분리하였다는 것인데요, 이에 따라 계정에서 사용하는 키를 변경할 수 있습니다. 이 포스팅에서는 caver-js와 caver-java를 사용하여 계정의 키를 AccountKeyWeightedMultiSig로 변경하는 방법에 대해서 설명합니다. 다양한 AccountKey에 대한 설명은 Klaytn Docs를 참고하세요…

아래와 같이 Threshold: 3으로 설정을 한 부분까지는 이해 되었습니다.  
 ![image](https://canada1.discourse-cdn.com/flex035/uploads/klaytn/original/2X/f/f3fb40ca57ce6d45908db5c8baacbb6b6e43769d.png)

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

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/klaytn/original/2X/f/f0f449db30920adcba63ace07158e53a571605f2.png)

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 서버를 구축 개발해야 최종 서명자에게 전달할 수 있겠군요?

---

<div class="post-metadata">

**Author:** ![jack\_jin](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/jack_jin/32/2305_2.png) [@jack\_jin](https://devforum.kaia.io/u/jack_jin)\
**Post date:** [4월 6, 2023, 10:18오전 UTC](https://devforum.kaia.io/t/topic/6572/2 "2023-04-06T10:18:42Z")

</div>

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

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

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

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

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

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

---

<div class="post-metadata">

**Author:** ![relician](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/relician/32/1413_2.png) [@relician](https://devforum.kaia.io/u/relician)\
**Post date:** [4월 7, 2023, 2:19오전 UTC](https://devforum.kaia.io/t/topic/6572/3 "2023-04-07T02:19:01Z")

</div>

![image](https://canada1.discourse-cdn.com/flex035/uploads/klaytn/original/2X/1/1c56d9bc393e44e230e051617530a601f43ae294.png)

> [@WeightedMultiSig 지갑으로 만든 계정에 관한 질문입니다](https://devforum.kaia.io/t/weightedmultisig/150/2):
>
> 안녕하세요, 먼저 질문 주셔서 감사합니다 slight_smile 답변을 드리기 전에 조금 더 명확한 답변을 위해서 질문 드릴 것이 있는데요, 이 글에서의 오너 계정과 오퍼레이터 계정의 차이점이 무엇인가요? 멀티시그를 사용하는 계정에서, weight가 2인 키를 소유한 주체가 오너이고, weight가 1인 키를 소유한 주체가 오퍼레이터가 맞나요? 위의 내용이 아니라면 다른 차이점이 있는건가요?

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

* * *

 ![image](https://canada1.discourse-cdn.com/flex035/uploads/klaytn/original/2X/3/352711fa1cad080852f55a45733ba82cc13219c0.png)  
multisig tx에 대한 Pending과 조회, 승인(서명추가) 등의 기능은  
chain (플랫폼) 내에서 처리하는 기능은 없는 상태이고,  
KAS와 같이 별도의 시스템이 필요하다는 말씀이신 것으로 이해하면 될까요?

---

<div class="post-metadata">

**Author:** ![jack\_jin](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/jack_jin/32/2305_2.png) [@jack\_jin](https://devforum.kaia.io/u/jack_jin)\
**Post date:** [4월 7, 2023, 5:14오전 UTC](https://devforum.kaia.io/t/topic/6572/4 "2023-04-07T05:14:36Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![relician](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/relician/32/1413_2.png) [@relician](https://devforum.kaia.io/u/relician)\
**Post date:** [4월 11, 2023, 8:48오전 UTC](https://devforum.kaia.io/t/topic/6572/5 "2023-04-11T08:48:10Z")

</div>

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

답변 감사 드립니다.
