Klaytn 사용성 개선 Series #1: 키와 주소의 분리

Tech at Klaytn
Klaytn
Published in
4 min readNov 28, 2019

전체 포스팅 목록은 여기에서 확인하세요.

Klaytn은 블록체인 플랫폼의 사용성을 개선하기 위해 다양한 노력들을 했습니다. 아래의 포스팅을 통해 사용성 개선 기능들을 살펴보고자 합니다.

  1. 키와 주소의 분리
  2. 플랫폼에서의 멀티시그 지원
  3. 대납 기능
  4. 플랫폼에서의 Role-based key 지원
  5. 명시적인 타입 정의

이 포스팅에서는 키와 주소의 분리를 통한 사용성 개선에 대해 살펴보겠습니다. Klaytn은 비트코인, 이더리움과 동일하게 secp256k1 커브를 이용하고 있습니다. 기존의 블록체인 플랫폼들은 모두 개인 키로부터 계정 주소를 도출하는 방식을 사용하고 있습니다. 이러한 방식은 개인 키가 노출되었을 경우, 해당 계정을 더이상 사용할 수 없다는 단점이 있습니다.

만약 해당 개인 키를 다른 누군가가 알고 있을 가능성이 있다면, 빨리 새로운 개인 키를 발급하고 해당 계정의 모든 자산을 새로운 계정으로 이동해야 합니다. 그렇지 않다면, 기존 계정의 자산을 탈취당할 수 있습니다. 하지만, 새로운 계정을 만들고 자산을 이동시킨다는 것은 꽤 불편합니다. 만약 지인들이 기존 계정의 주소를 알고 있고 그 주소로 자산을 보낼 가능성이 있다면, 그 사람들이 기존 계정으로 자산을 보내기 이전에 새로운 주소를 알려주어야만 합니다.

만약 BApp을 사용하고 있었다면 더 불편해질 수 있습니다. 기존 계정과 BApp이 연동되어 있기 때문에, 기존 계정으로부터 새로운 계정으로 BApp 내 자산을 이동시켜야 합니다. 하지만 만약 해당 BApp이 그러한 기능을 제공하지 않는다면, 자산 이동이 불가능할 수도 있습니다. 추가적으로, 의도하지 않은 거래 내역의 파편화를 가져오게 됩니다.

만약 키가 또 한 번 노출된다면 어떻게 될까요? 위에서 설명드린 계정 이동을 다시 한 번 해야만 하겠죠. 이건 재앙과 가깝습니다. 물론, 개인 키를 노출하지 않도록 잘 관리하는 것이 중요하긴 합니다만, 의도치 않게 개인 키가 노출되었을 경우에 대한 대비책도 제공되어야 한다고 생각합니다.

이러한 경험은 기존의 서비스 사용 경험과 굉장히 다릅니다. 예를 들어, 은행과 사용 경험을 비교해 볼 수 있습니다. 블록체인의 계정 주소는 은행의 계좌 번호, 개인 키는 해당 계좌의 비밀번호로 생각할 수 있습니다. 만약 비밀번호가 노출된다면 어떻게 해야할까요? 가장 쉽고 일반적인 방법은 해당 계좌의 비밀번호를 변경하는 것입니다. 비밀번호가 노출되었다고 새로운 은행 계좌를 만들지는 않습니다.

사람들은 기존의 사용 경험이 변경되는 것을 바라지 않습니다. 심지어 그 경험이 더 불편해지는 경험이라면 더더욱 변경을 원하지 않을 것입니다. 그렇다면 블록체인에서의 사용 경험도 기존의 사용 경험과 유사하게 제공해야 하지 않을까요? Klaytn은 이를 위해 계정 주소와 키를 분리했습니다. Klaytn에서는 더이상 개인 키를 통해 계정 주소를 도출할 수 없습니다. 이를 통해, 개인 키가 노출되더라도, 새로운 개인 키를 해당 계정에 설정하여, 계정을 계속하여 사용할 수 있습니다. 위에서 예시로 설명드린 자산 이동을 더이상 할 필요가 없습니다. 결과적으로 은행과 동일한 사용 경험을 얻을 수 있습니다.

이러한 분리를 위해 Klaytn의 계정은 key라는 필드를 별도로 관리하고 있습니다. 이 key 필드에 공개 키를 저장시키고, 대응되는 개인 키로 트랜잭션에 서명을 하면 됩니다. 만약 새로운 개인 키로 변경하고 싶다면, AccountUpdate Transaction을 통해 해당 계정에 그에 대응되는 공개키를 설정하면 됩니다. 이후 발생하는 트랜잭션들은 새로운 개인 키로 서명해야만 유효한 트랜잭션으로 인정됩니다.

Klaytn 계정에 대한 더 자세한 정보는 KlaytnDocs/Accounts에서 확인할 수 있습니다.

이 key 필드를 공개 키 하나만을 위해 제공하는 것은 조금 비효율적으로 느껴집니다. 그래서 Klaytn에서는 이 필드를 이용해 다양한 키를 설정하도록 설계하였습니다. 다른 키들은 어떤것들이 있는지는 다른 포스팅을 통해 알아보겠습니다.

--

--