Klaytn 사용성 개선 Series #2: 플랫폼에서의 멀티시그 지원
전체 포스팅 목록은 여기에서 확인하세요.
Klaytn은 블록체인 플랫폼의 사용성을 개선하기 위해 다양한 노력들을 했습니다. 아래의 포스팅을 통해 사용성 개선 기능들을 살펴보고자 합니다.
- 키와 주소의 분리
- 플랫폼에서의 멀티시그 지원
- 대납 기능
- 플랫폼에서의 Role-based key 지원
- 명시적인 타입 정의
이전 포스팅에서 키와 주소의 분리에 대해 알아보았습니다. 키와 주소의 분리를 위해 Klaytn의 계정에는 key라는 필드가 추가되었다고 설명하였습니다. 이번 포스팅에서는 이 key 필드를 이용하여 멀티시그를 지원하는 것에 대해 이야기 해 보겠습니다.
멀티시그는 계정의 보안성 강화를 위해 사용할 수 있습니다. 대부분의 블록체인 플랫폼에서는 멀티시그를 이용하려면 복잡한 기능이 필요합니다. 이더리움을 예로 들면, 멀티시그를 사용하기 위해서는 스마트 컨트랙트를 이용해야 합니다. 원하는 기능은 계정의 보안성 강화인데, 그보다 훨씬 다양한 기능을 할 수 있지만 그만큼 복잡한 “스마트 컨트랙트”라는 것을 이해해야 합니다.
아래 질문들에 대답을 할 수 있어야 멀티시그를 제대로 사용할 수 있습니다.
- 스마트 컨트랙트가 무엇인가?
- 스마트 컨트랙트를 이용해 멀티시그 컨트랙트를 어떻게 구현해야 하는가?
- 구현한 컨트랙트가 안전하게 구현되었는가?
- 구현한 컨트랙트를 네트워크에 어떻게 배포해야 하는가?
- 구현한 컨트랙트를 어떻게 실행해야 하는가?
이러한 질문에 대답하기 위해서는 상당한 지식수준을 요구하며, 단순히 계정 보안 강화를 위해 위의 내용을 다 이해하는 것은 너무 어렵습니다. 우리가 만약 은행의 대여 금고 서비스를 이용한다고 할 때, 그 금고가 어떻게 구성되어 있는지 동작원리를 다 이해해야 할 필요는 없습니다. 단지 서비스가 거기 있고, 필요하면 그것을 그냥 이용하면 되는 거죠.
블록체인도 마찬가지라고 생각했습니다. 금고처럼 보안성 강화를 위한 기능이라면 플랫폼 수준에서 그 기능을 제공하는 것이 더 안전하고 사용하기 쉬운 방법이라고 생각했습니다. 이전 포스팅에서 Klaytn의 계정에 key 필드를 추가했고, 이를 이용해 쉽게 멀티시그로 확장할 수 있습니다. 해당 필드에 키를 여러개 저장하면 되니까요.
다만 좀 더 자유도를 높이기 위해 가중치(weight)와 임계치(threshold)라는 개념을 도입했습니다. 각 키는 가중치 값을 가지며, 트랜잭션 내 서명한 키들의 가중치 합이 임계치를 넘어야 유효한 트랜잭션으로 인정됩니다. 예를 들어, 가중치 1인 k1, 가중치 2인 k2, 가중치 3인 k3가 있고, 해당 계정의 임계치가 3이라고 하면, 아래와 같은 키 조합으로 서명한 트랜잭션이 유효한 트랜잭션으로 인정됩니다.
- k3
- k1, k2
- k1, k3
- k2, k3
- k1, k2, k3
이번 포스팅에서는 플랫폼 수준에서 구현된 멀티시그 기능에 대해 알아보았습니다. Klaytn을 이용하면 쉽게 여러 개인 키를 사용하여 보안을 높일 수 있습니다. 이 기능을 플랫폼 레벨로 내렸기 때문에, 사용자 또는 지갑 개발자들이 좀 더 쉽게 멀티시그를 이용할 수 있을 거라고 기대합니다. 다음 포스팅에서는 대납 기능에 대해 알아보겠습니다.