Keyring 중에서 multiple keyring은 주로 어떤용도로 사용하나요?

안녕하세요?
klaytn 관련해서 공부를 하는 중에 한가지 궁금점이 생겨 문의 드립니다.

keyring type에는 single, multiple, rollbase 가 있다고 되어있는데, 그 중에서 multiple keyring은 어떤 용도로 사용되는지 궁금합니다.

일반적인 서명용도라면 single keyring만으로도 가능할 것 같고
보안 및 "대납"등의 부가 기능을 위해서라면 rollbase keyring을 쓰면 되는데
multiple keyring은 단순 서명용도 뿐이라면, 오히려 관리해야 할 private key만 많아져서 분실로부터의 위험부담만 커질거 같은데, 혹시 다른 용도가 있는지요? 문의 드립니다.

감사합니다.

안녕하세요, 클레이튼 포럼에 질문을 올려주셔서 감사드립니다.

Multisig는 다양한 방식으로 사용될 수 있습니다.

  1. 계정의 잔고가 아주 많은 경우, 그리고 회사에서 특정 계정의 잔고를 관리하는 경우, 계정 키를 하나로 하게 되면 한 키를 여러명이 공유해야 합니다. 이럴 경우 키가 노출되었을 경우 누구에게서 어떤 문제가 발생했는지 파악하기 어렵습니다. 각 개인에게 서로 다른 키를 발급하고, 그 중 몇 개 이상의 키로 서명되었을 경우 해당 계정의 잔고를 인출할 수 있도록 구성할 수 있습니다. 예를 들면 키를 3개를 발급한 후, 2명 이상의 서명이 있을 경우에만 잔고를 인출하도록 할 수 있습니다.

  2. 먄악 서비스가 여러 스크린으로 분할되는 경우에도 유용하게 적용할 수 있습니다. 예를 들어 지갑 서비스가 웹과 모바일이 서로 다른 경우, 두 개의 private key를 가지게 되는데, 이를 하나의 계정으로 통합하게 되면 웹을 사용하던 모바일을 사용하던 하나의 계정을 관리하게 할 수 있습니다. 이럴 경우에는 어떤 키로 서명하더라도 잔고를 인출할 수 있도록도 설계할 수 있습니다.

도움이 되셨길 바랍니다.

감사합니다.

1개의 좋아요

친절한 답변 감사드립니다. 많은 도움이 되었습니다~!

1개의 좋아요

아 한가지 더 문의 드립니다.

multiple keyring은 그럼 하나의 address를 여러 명이 공유하는 개념으로 이해하면 될까요?

그럼 account의 nonce 관리는 address별로 관리되는 것이 아니라, private key 별로 관리되는 것이라 이해하면 될른지요?

감사합니다.

nonce는 account에 존재하는 정보이기 때문에 address 별로 관리됩니다.

private key도 마찬가지로 account 내부에서 관리하는 데이터라고 생각하시면 됩니다.
(실제로는 public key가 보관됩니다.)

감사합니다.

그럼 하나의 multiple keyring account를 사용하는 두명의 user가 각각의 private key로 transaction을 생성할 경우, nonce 충돌이 발생하지는 않나요?

아래처럼 생각하시면 되겠습니다.

Account A - Private key A
Account B - private key B

이게 초기 상태가 될테고요, account A를 key A, B 로 업데이트 하게 되면

Account A - private key A, private key B
Account B - private key B

가 되겠죠. tx.from이 A라면 A의 nonce가 필요하고, tx.from이 B라면 B의 nonce가 필요하겠죠. 둘 다 private key 는 B를 쓰더라도요.

도움이 되셨길 바랍니다.

감사합니다.

위에 들어주신 예에서
tx.from은 Account A로 동일한데
PC1에서 private key A로 100개의 transaction을 생성하고
PC2에서 private key B로 100개의 transaction을 동시에 생성하였을 경우
Account A의 nonce값을 동시에 사용하게 되어 nonce값 충돌이 발생하지 않나요?
(100개의 transaction을 만들 때 nonce값을 직접 입력하여 raw transaction을 생성한다면)

음… 생각의 방향을 바꾸셔야 할 것 같습니다.

nonce를 관리하는 주체가 private key가 아니고 account입니다. private key와 nonce는 관계가 없고, account와 nonce가 관계가 있는 것이라고 생각하시면 됩니다.

말씀주신 예시에서는 당연히 충돌이 발생합니다. 비슷하게

PC1에서 private key A로 100개의 transaction을 생성하고
PC2에서 private key A(같은 private key)로 100개의 transaction을 동시에 생성한다고 하여도 충돌이 발생합니다.

감사합니다.

그럼 multiple keyring account의 경우
동시에 다른 곳에서 transaction을 발생시키면 안된다 고 이해하면 맞는건지요?

답변 감사드립니다.

하나의 account의 nonce는 유일해야 하므로
account 내에 binding 되어 있는 여러 private key로 transaction들을 서명할 때 동시에 nonce가 중복되는 상황이 발생하지 않도록 순서를 지켜 만들어야 한다
로 정리될 수 있을까요?

감사드립니다.

네네, multiple keyring이던 single keyring이던 관계없이, tx.from의 입장에서는 논스가 중복되는 상황이 발생하지 않도록 관리하여야 합니다.

감사합니다.

1개의 좋아요