Klaytn Design (3) : Accounts

jinny
Top Klass
Published in
5 min readSep 8, 2019

안녕하세요, Klaytn 스터디그룹 Top Klass입니다.

이번 글은 Klaytn Design 3번째 시리즈로, 클레이튼의 계정 관리에 대해 설명합니다.

* Klaytn Design 이전 시리즈 보기 :

Klaytn Design (2) : Block Generation & Propagation

* Klaytn Design 다음 시리즈 보기 :

[링크]

Klaytn Account Types

클레이튼 계정은 크게 2가지 타입으로 나뉩니다. 하나는 우리와 같은 유저가 소유하는 계정(EOAs, Externally Owned Accounts), 또다른 하나는 스마트 컨트랙의 계정(SCAs, Smart Contract Accounts)입니다.

EOA는 유저가 가진 잔액 정보를 가지고 있습니다. 한 쌍의 private/public key에 의해 생성되며, 이 키페어를 가진 유저에 의해 관리됩니다.

SCA는 스마트 컨트랙의 코드 정보를 가집니다. 즉 코드로 해시값을 계산하여, 코드 해시값을 저장합니다. 이 코드 해시값은 스마트 컨트랙을 생성할 때 만들어지며, 그 이후에는 변경될 수 없습니다(immutable).

더 자세한 EOA, SCA data structure는 이 곳에서 확인할 수 있습니다.

Decoupling the Address from the Key

일반적으로 계정 주소의 생성은 private key로부터 시작됩니다. 랜덤 넘버인 private key로부터 public key를 만들고, public key로부터 주소를 생성합니다. 결국 하나의 주소는 하나의 키 페어에 1:1 매핑됩니다.

그러나 이러한 주소 관리의 문제점은, private key가 노출되어 사용할 수 없게 되면, 그에 대한 주소도 사용할 수 없게 된다는 것입니다. 물론 새 private key를 생성하고, 또다시 이것을 통해 새 주소를 생성할 수는 있습니다. 그러나 주소가 바뀌면 이전 주소가 가지던 잔액을 새 주소로 옮겨야 하고, 이는 사용자에게는 부담스러운 작업입니다.

위와 같이 하나의 주소가 하나의 키 페어에 coupled되는 문제점을 해결하기 위해, 클레이튼은 주소와 키 페어를 decoupling합니다. 만약 하나의 private key가 노출되거나 혹은 유저가 원하는 때에 기존 주소를 변경하지 않은 채, 기존 주소 매핑되는 키 페어를 교체할 수 있습니다.

Multi-Key Pairs and Role-Based Keys

또한 클레이튼은 여러 키 페어를 다른 목적으로 사용할 수 있도록 지원합니다. 예를 들어, 계정 정보를 업데이트하는 목적으로 사용되는 키를 지정할 수 있을 것입니다. 만약 기존의 private key(A)가 노출되어 기존 주소와 연결되는 키 페어를 새 것(B)으로 교체할 경우 이 때 계정정보 업데이트용 키(D)를 사용할 수 있습니다.

기존 주소를 변경하지 않은 채, 기존 주소 매핑되는 키 페어를 교체(A →B)할 수 있다. 계정정보를 업데이트할 때 사용되는 키(D)를 지정할 수 있으며, 이 외에도 다양한 키를 각각 다양한 목적으로 사용할 수 있다.

Human-Readable Address (HRA)

기존의 블록체인 계정 관리의 또다른 문제점은, 주소가 지나치게 complex하다는 것입니다.

주소 예) 0x0fe2e20716753082222b52e753854f40afddffd2

* 클레이튼 주소 역시 위와 같이 20byte입니다.

이는 사용성을 떨어트릴 뿐만 아니라, 주소를 입력할 때 오타가 발생하기 쉽습니다. 자칫 주소를 잘못 입력하여 원하지 않는 계정으로 클레이를 송금하게 될 수도 있습니다.

이러한 문제점때문에 클레이튼은 사람이 읽기 쉬운, 주소에 대한 alias 설정을 지원합니다. 20byte 주소에 대해 20byte 문자열을 설정할 수 있습니다. 이러한 alias를 클레이튼에서는 HRA(Human-Readable Address)라고 명명합니다. HRA 기능은 아직 개발중입니다. 개발이 완료된 후 더 자세한 가이드가 제공되기를 기대합니다.

참고로, 이더리움에는 클레이튼의 HRA와 비슷한 개념으로 ENS(Ethereum Name Service)가 있습니다.

실제로 EOA와 SCA의 자료구조를 보면, boolean 타입의 humanReadable 속성이 있는 것을 확인할 수 있습니다. 해당 주소에 설정된 HRA가 있는지를 나타내는 속성이며, HRA 기능이 아직 개발중이기 때문에 현재는 항상 false값을 가집니다.

감사합니다.

발제자: 김지은

작성자: 김지은

검토자: 이건, 송현수

Klaytn Design

#1. Klaytn Network Structure, Klaytn Main Chain Network

#2. Block Generation and Propagation

#3. Klaytn Accounts

#4. Klaytn Transactions

#5. Computation

--

--

jinny
Top Klass

Studied CSE / Interested in ethics of AI and technological policy for AI / Love ducks and pandas