Klaytn 사용성 개선 Series #4: 플랫폼에서의 role-based key 지원

Tech at Klaytn
Klaytn
Published in
5 min readDec 23, 2019

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

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

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

지난 포스팅에서는 대납 기능을 알아보았습니다. 대납 기능을 통해 기존 서비스와 동일한 사용자 경험을 지니는 블록체인 서비스가 개발될 수 있을 것이라고 기대합니다. 이번 포스팅에서는 role-based key에 대해 알아보겠습니다.

Klaytn의 한 계정은 아래와 같이 다양한 기능을 수행합니다.

  • KLAY 전송
  • 스마트 컨트랙트 배포
  • 스마트 컨트랙트 실행
  • 계정 정보 업데이트
  • 대납 기능

그렇다면, 기능 별로 서로 다른 키를 사용할 수 있다면 어떨까요? 특히, Klaytn에서 추가한 기능들에 대해서는 별도의 키를 사용하게 한다면 다양한 새로운 사용 시나리오가 만들어질 수 있다고 생각합니다. Klaytn에서는 이를 위해 role-based key라는 기능을 설계하고 구현하였습니다. 아래 표와 같이 각 기능에 해당하는 역할(role)을 부여하였고, 각 역할 별로 서로 다른 키를 설정할 수 있도록 설계하였습니다. Role-based key에 대한 더 자세한 설명은 KlaytnDocs에서 확인하실 수 있습니다.

대납만 가능한 키

서비스 개발사는 Klaytn의 대납 기능을 이용해 사용자들의 트랜잭션 수수료를 대신 납부하는 것을 고려할 수 있습니다. 이 경우, 대납 기능을 운영하는 운영자에게 해당 계정의 잔고를 이체할 수 있는 권한까지 부여해야 하기 때문에, 잔고가 많은 계정을 그대로 운영자에게 제공할 수 없습니다. 따라서 대납 계정을 별도로 운영하고 계속 적당한 양의 잔고를 채워주는 것이 제일 간단한 해결책이 됩니다.

하지만 이 방법은 별도의 계정을 운영해야 하는 점, 잔고를 주기적으로 확인하고 채워줘야 하는 점 등 상당히 불편한 사용성을 가집니다. Klaytn의 role-based key를 이용하면 하나의 계정만 이용하여 대납 계정을 운영할 수 있습니다. 아래 그림을 통해 어떻게 가능한지 좀 더 자세히 알아보겠습니다.

먼저 계정의 관리자는 RoleTransaction에 대한 키를 가져갑니다. 이 키는 해당 계정의 잔고를 이체할 수 있는 권한이 있습니다. RoleFeePayer에 대한 키는 대납 기능 운영자에게 제공합니다. 이 키는 트랜잭션의 수수료를 대신 납부할 수 있는 권한이 있기 때문에, 사용자의 트랜잭션을 받아서 수수료를 대신 납부하는 기능만을 대납 기능 운영자에게 부여할 수 있습니다. 하지만, 이 키는 계정의 잔고를 이체할 수 있는 권한은 없기 때문에, 잔고를 다른 사람에게 보내는 것은 불가능합니다. 이렇게 구현하게 되면 별도의 계정을 운영할 필요도 없고, 따라서 잔고를 주기적으로 확인해야 하는 불편함도 사라지게 됩니다.

사용자 계정 복구

블록체인 플랫폼의 사용성이 어렵다고 이야기하는 것 중 가장 대표적인 것이, 개인이 키를 관리해야 한다는 문제입니다. Role-based key를 이용하면 사용자 계정을 복구할 수 있는 시나리오를 만들어 낼 수 있습니다. 아래 그림을 통해 좀 더 자세히 살펴보겠습니다.

먼저 서비스 개발사는 개인들의 계정을 발급하면서 RoleAccountUpdate에 대한 키를 가져갑니다. 사용자에게는 RoleTransaction에 대한 키를 제공합니다. 사용자는 RoleTransaction 키를 이용해 토큰 전송, 스마트 컨트랙트 실행 등의 기능을 이용할 수 있습니다. 만약 사용자가 키를 잃어버렸을 경우, 서비스 개발사는 RoleAccountUpdate 키를 이용해 RoleTransaction 키를 재발급합니다. 재발급한 키를 다시 사용자에게 제공하면, 사용자는 기존의 계정에서 이용하던 서비스를 해당 계정에서 계속 이용할 수 있습니다.

위에서 Role-based key를 이용한 두 가지 사례를 살펴보았습니다. 추가적으로, 여러 다른 다양한 서비스에서 role-based key를 이용해, 또 다른 다양한 사례들을 만들어 낼 수 있다고 생각합니다. 이 role-based key를 이용해 블록체인을 보다 쓰기 쉽게 제공하는 다양한 서비스들이 만들어지기를 기대합니다.

이번 포스팅에서는 role-based key에 대해 알아보았습니다. 다음 포스팅에서는 이런 다양한 기능을 구현하기 위해 타입을 어떻게 설계했는지 알아보도록 하겠습니다.

--

--