Klaytn 사용성 개선 Series #3: 대납 기능

Tech at Klaytn
Klaytn
Published in
4 min readDec 3, 2019

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

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

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

이전 포스팅에서는 플랫폼 레벨에서 멀티시그를 어떻게 지원하는지에 대해 설명했습니다. 이번 포스팅에서는 대납 기능에 대해 설명하고자 합니다.

대부분의 블록체인 플랫폼에서는 트랜잭션 수수료라는 개념이 있습니다. 트랜잭션이 발생할 때마다 해당 트랜잭션의 발신자(Sender)가 트랜잭션의 실행에 발생한 비용을 부담하는 방식입니다. 블록체인 네트워크의 계산 비용과 저장 비용을 사용하기 때문에, 비용을 발생시키고 그에 대한 부담을 지는 것은 합리적으로 보입니다. 다만 사용자의 관점에서 바라보게 되면, 사용자가 어떤 행동을 취할 때마다 비용을 납부하는 것은 좋은 사용자 경험이라고 이야기 할 수는 없습니다.

대부분의 서비스를 생각해 보면, 사용자에게 비용을 부담하기보다는 서비스 제공자가 비용을 부담하며 사용자를 유치하는 방식을 사용합니다. 예를 들어, 트위터에서 트윗을 할 때마다, 페이스북에서 담벼락에 글을 쓸 때마다 사용자가 비용을 부담한다면, 사용자가 그 서비스를 사용할까요? 이러한 것이 일반적인 사용자 경험이 아닌데, 왜 블록체인에서는 이러한 사용자 경험을 강요할까요?

Klaytn은 이러한 사용자 경험이 굉장히 불편한 경험이라고 생각했습니다. 이 불편한 경험을 해소하고자, Klaytn에서는 “대납 기능”을 제공합니다. 사용자 대신 서비스 제공자가 트랜잭션 수수료를 납부하는 개념입니다.

이에 대한 동작은 아주 간단히 이루어집니다. 트랜잭션을 생성하고, 발신자가 서명하고, 트랜잭션 수수료를 대신 납부할 서비스 제공자(fee payer)가 추가 서명을 합니다. 예를 들어, KLAY를 전송하는 트랜잭션이라면, 발신자로부터 수신자로 정해진 양 만큼의 KLAY가 전송되고, 이 트랜잭션의 수수료는 서비스 제공자가 납부합니다. 이 트랜잭션의 자료구조를 좀 더 살펴보면 아래와 같습니다.

기존의 트랜잭션 자료구조에 fee payer address와 fee payer signature 필드가 추가되었고, 이 필드를 기반으로 fee payer에게 비용을 부과합니다. 당연히, fee payer signature가 fee payer address의 signature가 아니라면 유효하지 않은 트랜잭션으로 간주합니다.

이러한 대납 트랜잭션은 Klaytn transaction type별로 다양하게 존재합니다. 모든 대납 트랜잭션에 대한 자세한 설명은 KlaytnDocs/Transactions에서 확인하실 수 있습니다.

추가적으로, 단순히 서비스 제공자가 모든 트랜잭션 수수료를 부담하는 것이 아니라, 일부만 부담하는 부분 위임 트랜잭션도 제공합니다. 예를 들어 서비스 제공자가 수수료의 70%를 부담하고 나머지는 발신자가 부담하는 형태도 가능합니다.

이러한 대납 방식을 통해 서비스 제공자는 다양한 형태의 사용자 유치 전략을 만들어 낼 수 있습니다. 서비스 제공자가 수수료 전부를 내는 방식, 수수료의 일부만 대신 내는 방식, 일정 기간동안 수수료를 내는 방식, 일정 개수의 트랜잭션까지만 수수료를 내고 그 이후는 사용자가 부담하는 방식 등 다양한 형태의 과금 전략을 만들어 낼 수 있습니다. 이러한 다양한 방식으로 사용자들을 서비스에 끌어들이는 것이 가능해집니다.

이 대납 기능을 기반으로 기존의 사용자 경험을 유지하는 다양한 블록체인 서비스들이 개발될 수 있을 것이라고 기대합니다.

이번 포스팅에서는 대납 기능에 대해 알아보았습니다. 다음 포스팅에서는 한 계정 내의 기능을 분리하여 각 기능별로 다른 키를 사용하는 방식인 role-based key에 대해 알아보도록 하겠습니다.

--

--