Nick Szabo와 초기의 Smart Contract

이제는 암호화폐 시장에서 Smart Contract라는 단어를 들어보시지 못한 분이 없을 정도로 이 단어가 자주 사용되고 있습니다. 특히 이더리움을 비롯한 블록체인 프로토콜 상에서 Dapp과 같은 서비스를 개발하거나 코인을 발행하여 ICO를 진행하는 사람에게 Smart Contract는 이미 없어서는 안될 기술입니다. 이러한 Smart Contract는 Nick Szabo가 작성한 Smart Contract: Building Blocks for Digital Market라는 글에 처음 등장한 개념입니다. Szabo는 Smart Contract란 디지털 형식으로 표현된 약속의 집합으로 약속을 이행하는 주체가 이를 수행하는 프로토콜을 포함한다(Smart Contract is a set of promise, specified in digital form, including protocols within which the parties perform on these promises)라고 정의합니다. 그 이후 Szabo는 자산이 생각하는 Smart Contract와 여기에 관련된 보안의 문제 그리고 이를 위해 필요한 디지털 화폐에 대해 많은 글과 강의를 남깁니다. 이번 글은 Szabo가 말한 초기의 Smart Contract의 형태와 구성에 대해 다루도록 하겠습니다.

Smart Contract은 그 단어 자체에도 Contract(계약)란 단어가 포함되어 있듯이 계약의 한 형태라고 생각할 수 있습니다. 계약은 제안과 수락(offer and acceptance)이라는 가장 기본적인 형태를 통해 공식적인 관계를 정립하는 소통의 형태입니다. 인간이 이성과 경험을 통해 서로 소통하는 것이 가능하다고 가정한다면 모든 사람은 서로가 원하는 것을 표현하고 상호 동의한 거래의 내용을 토대로 계약을 작성하는 것이 가능하다고 말할 수 있습니다. 이 때 Smart Contract의 의의는 지금까지 가능했던 계약의 형태를 디지털 형식으로 재구성한다는 것입니다. 이는 자판기와 같이 인간과 기계가 맺는 계약, 소프트웨어 프로토콜을 매개로 맺는 인간과 인간의 계약, 그리고 IOT 혹은 Smart Property와 같은 기계와 기계 간의 디지털 형태의 계약을 모두 포함하는 개념이라고 생각할 수 있습니다.

사람과 사람 사이의 이해관계는 너무나 복잡하고 다르기 때문에 각자의 이성과 경험이 언제나 같은 결론은 도출하리라 기대하기는 어려운 경우가 많습니다. 또한 이행 과정에 있어서 한 사람의 마음이 바뀌거나 불평등이 발생했다고 주장한다면 이를 이러한 문제를 이 때문에 기존 계약은 법이라는 틀 안에서 중재(arbitration)를 통해 문제를 해결합니다. 이때문에 계약의 주체 뿐 아니라 법을 집행하는 제 3자의 공정한 중간자가 필요해 집니다. 이 기관은 감사(audit), 회계(accounting), 혹은 중재(arbitration)를 통해 문제가 발생하면 계약을 집행합니다. 이러한 과정을 통해 계약의 책임이 계약의 주체 외에도 법을 집행하는 제 3의 기관에게도 분산되어 집행에 있어 최상의 권위를 가지게 됩니다. Szabo는 Formalizing and Securing Relationships on Public Network에서 이러한 기존 계약의 중재 방식을 통제(control)에 기반한 프로토콜이라고 명명합니다.

여기서 통제의 기관이 계약의 주체와 너무 멀어지면 감사가 제대로 이루어지지 않아 계약 상에 도덕적 해이(moral hazard)가 발생할 소지가 있습니다. 또한 제 3기관을 통한 중재 의뢰가 어려워 지면서 발생하는 비용 문제와 정보 보고 과정에서 발생할 수 있는 보안 및 비효율의 문제가 발생할 수 있습니다. Smart Contract는 프로토콜을 통해 제 3의 정보기관과 계약자 간의 간극을 줄입니다. Smart Contract는 프로토콜을 통해 계약자 간에 직접적인 상호 작용이 가능하도록 설계할 수 있기 때문에 별도의 중재를 의뢰할 소요를 줄일 수 있습니다. 또한 중재를 의뢰하기 위해 제 3기관에게 정보를 보고하는 과정에서 발생하는 비효율 및 보안성의 문제가 해소될 수 있습니다. 물론 Smart Contract가 이행되는 과정에서도 서로 간의 중재가 필요한 상황이 발생할 수 있기 때문에 모든 중재의 필요성이 완전히 사라진다고 장담할 수는 없습니다. 하지만 지금까지는 계약 신뢰의 기반이 계약자 간의 신의와 제 3기관에 대한 신뢰라는 2가지 방안에 머물렀다면 Smart Contract는 계약자가 작성한 계약 프로토콜 그 자체의 집행에도 신뢰가 분산될 수 있다는 가능성을 제공합니다.

Szabo는 안전한 Smart Contract를 설계하기 위해서 4가지 원칙을 고려해야 한다고 주장합니다.

  1. 관찰 가능성(observability): 계약자 간에 상호 계약 정보 확인 가능
  2. 검증 가능성(verifiability): 제 3의 검증자가 계약 정보 검사 가능
  3. 비밀 관여(privity): 계약의 권리가 계약 관련자에게만 있음(중재자 포함)
  4. 집행 가능성(enforceability): 프로토콜 상에서 계약 집행 가능

언뜻 살펴보면 2번(검증 가능성)과 3번(비밀 관여) 원칙은 서로 상충된 내용으로 보일 수 있습니다. 제 3자가 검증이 가능하려면 정보가 필요에 따라 누군가에게 공개가 가능해야 하지만 비밀 유지를 위해서는 정보가 사전에 공개 될 수 없기 때문입니다. 두 원칙을 모두 충족할 수 있으려면 보안이 유지된 상태에서 상황에 따라 타인에게 정보 권한을 부여할 수 있는 기술이 필요합니다.

이러한 기술은 암호학을 통해 구현이 가능합니다. Szabo의 Contract With Bearer에서 계약의 일반적 권리와 특정 권리를 구분하는 방안을 제시합니다. 계약의 참여도에 따라 그 권한 정도를 구분하여 고유의 토큰(token) 혹은 번호(swiss number)를 부여하고 권한의 정도, 빈도, 그리고 프로토콜 내에서의 지위를 구분하는 방법을 제시합니다. 또 이러한 방법을 구현하기 위해서는 David Chaum의 Blind Signature방식을 도입할 것을 제안합니다. Chaum은 공개키 암호학을 통해 익명성이 보장된 상태에서 서로의 지불을 확인할 수 있는 자동화된 전자지불 시스템 방식을 구현하고자 이 방식을 처음 발표했습니다. Szabo는 Chaum의 방식을 통해 지불의 방식으로 계약의 권리를 분배하는 방법을 고안했던 것입니다.

Szabo가 토큰의 형식으로 권한을 부여하고자 했던 것은 계약을 이행할 경제적인 이유를 제공하기 위한 의미도 포함되어 있었습니다. 개인이 계약을 성실하게 집행하는 상황을 보장하기 위해서는 계약을 파기하는 행위보다 계약을 이행하는 행위가 자신에게 더 이득이라는 사실을 알릴 수 있어야 합니다. 이러한 이해관계를 표현할 수 있는 방법 중 가장 효과적인 방법은 경제적 유인을 제공하는 것입니다. 하지만 Szabo가 처음 이러한 글을 적을 당시에는 디지털 상에서 경제적 유인을 제공할 수 있는 비트코인과 같은 암호화폐가 출현하기 전이었기 때문에 Szabo는 Bitgold라는 화폐의 필요성에 대해서도 제안합니다. Bitgold는 작업증명 방식으로 화폐를 생성하고 분산화된 타임 스탬프(timestamp)와 분산화 자산 소유권 저장(distributed property title registry)를 이용하는 등 현재 우리가 알고 있는 비트코인과 매우 유사한 아이디어를 포함하고 있습니다. 아마 Szabo는 이러한 화폐를 통해 현실세계의 법(wet code)와 디지털 세계의 법(dry code)의 집행 유인의 간극을 좁히고자 했었을 지도 모르겠습니다.

Szabo의 생각에 대해 더 관심이 생기셨다면 podcast 인터뷰를 참조하시길 권고드리겠습니다.

커뮤니티를 만들고 운영합니다

커뮤니티를 만들고 운영합니다