이더리움 스마트 계약(2) — 분산자율조직개념

철학자(philosopher)
7 min readDec 1, 2016

--

계약 : 권리-의무의 교환

계약이란 당사자 간 의사표시 일치의 산물이다. (위키:계약) 대부분의 계약은 권리와 의무의 교환을 하게 된다. 미시경제학에서는 기업을 생산요소의 수요 자로써 가계로 부터 노동과 자본 등의 생산요소를 사들여, 재화와 서비스 등의 제품을 판매하는 주체로 정의된다.

권리-의무 교환의 중개자로써의 회사

이 권리와 의무의 교환 과정에서 계약이 체결되는데, 사회의 모든 경제활동의 대부분은 모두 일련의 계약의 집합이라고 볼 수 있다. 회사는 원자재 공급자로 부터 원자재를 사들이고(회사의 권리) 그에 대한 댓가로 자금을 지불(회사의 의무)하게 된다. 회사는 그렇게 만들어진 상품(재화와 서비스)를 고객들에게 전달(회사의 의무)하는데, 이 댓가로 고객들은 비용을 지불(회사의 권리)하게 된다.

문제는 이 계약이 때때로 불이행되거나, 그 과정에서 많은 비용이 드는 경우가 있다는 것이다. 권리,의무의 불균형을 막기 위해 이를 감시하고 강제하고 중개할 사법당국이 생겨나게 되었다.

계약 이행의 강제자

이렇게 보면 마치 계약을 위한 최소한의 당사자는 3명 이상이 되어야 하는 상황이 된다. 위 그림에서도 생산 요소 시장에서는 당사자는 공급자-회사-사법당국, 생산물 시장에서는 회사-수요자-사법당국으로 나타나있다. 권리-의무가 교환되는 당사자는 2명인데, 현실에서는 이를 관리,감시,중개할 제3자의 존재로 인해 계약의 비용이 높아지게 된다. 만약 계약의 특정 조건이 만족되면, 자동으로 이행되는 특별한 계약이 있다면, 이러한 비용을 줄일 수 있지 않을까? 닉 사보의 스마트 계약(위키)은 이러한 맥락에서 시작되었다.

사례 : 우버와 한국은행

우버는 자차를 이용한 운송 서비스를 중개한다.

권리-의무 중개 중개자로써의 우버

우버는 이 권리-의무 교환의 과정에서 적극적인 역할을 한다. 예를 들어 승객이 과도한 권리를 행사하면(예를 들어 차량에 낙서를 한다던가, 토를 한다던가), 승객에가 더 큰 의무(더 큰 비용)를 부과하는 식이다.

우버가 있는 이유는, 운송서비스 계약의 중개인이 필요하기 때분이다. 결제를 하기 위해서 신용카드 회사 등과 연계가 필요하고, 여러 법적인 권리-의무의 불균형을 신뢰할만한 누군가가 중개해야 하기 때문이다. 재밌는건 이러한 중개인을 감시할 중개가 또 필요하고(사법), 그 중개인의 중개인을 감시할 중개기구 또 필요하다는 것이다(민주주의).

애초에 계약이 특정 조건을 만족할 경우 자동으로 실행된다면, 이렇게 꼬리무는 중개자로 인해 발생하는 비용을 극적으로 줄일 수 있다.

이더리움 스마트 운송 계약

이더리움 스마트 계약을 이용해 우버를 통째로 재구성 하면 위와 같은 그림이 나온다. 권리-의무의 교환을 모두 스마트 계약(smart contract)으로 처리하면, 우버라는 회사는 블록체인 상에 존재하는 코드 만으로 구성될 수 있다. 감시자가 계약의 불이행을 강제할 필요가 없다.

원화를 발행하는 한국은행의 사례를 살펴보면 스마트 계약이 더욱 명확해질 수 있다.

한국은행의 권리-의무 교환

대한민국의 국민은 국가화폐로 원화를 사용하는데, 이 원화는 중앙은행이 발행한다. 여기서 국민은 국가에 세금(의무)를 내고, 한국은행은 지불 수단인 원화의 ‘위조 방지 서비스’를 제공하는 것으로 볼 수 있다. 이를 통해 거래를 하는 당사자는 신뢰할 수 있는 ‘중앙은행’을 통해 원활한 경제활동을 할 수 있게 된다. 비트코인은 위폐 방지 서비스를 블록체인을 통해 해결했다고 볼 수 있다.

비트코인과 스마트 계약

비트코인을 사용하는 개인은 수수료를 제공하고 위조 방지 서비스를 이용하고, 여기서 발생한 수수료는 엄청난 연산을 통해 거래내역에 대한 합의(consensus)를 만들어내는 채굴자(miner)들에게 돌아간다.

이는 마치 비트코인 프로토콜이 마치 채굴자들을 고용하여 임금을 지불하고, 비트코인 이용자들에게 비용을 청구하는 것처럼 보인다. 비트코인 프로토콜 자체가 블록체인 네트워크 상에 상주하는 자율 조직(autonomous company)의 모습을 띄고 있는 것이다.

이더리움 스마트 계약(smart contract) 일반화

이더리움 스마트 계약은 단순히 “위조지폐방지” 목적으로만 사용되는 비트코인 블록체인의 경직성을 개선하여, 이를 일반적인 계약까지 확장하고자 하는 데에 있다. 컴퓨터 공학의 용어를 빌리면, 튜링 불완전한 스마트 계약의 조건 생성 방식을 튜링 완전하게 만들고자 하는 것이다.

이더리움 스마트 계약의 일반적인 모습을 그리면 다음과 같다.

일반적인 스마트 계약

현실에 존재하는 중개자를 블록체인 위에 통째로 올렸다.

때때로 중개자 없는, 신뢰 불필요한(Trustless)와 같은 말들이 블록체인에 따라오는 경우가 많다. 이 개념에 약간의 설명을 덧붙이면 “(사람인)중개자가 없는”- 결국 중개자는 있다-, “(신뢰를 공개된 규칙으로 만들었기 때문에)신뢰가 불필요하다”가 된다.

스마트 콘트렉트 코드 예제 : SimpleStorage

어떠한 데이터를 저장해주는 중개자가 있다고 가정하자. 데이터는 256비트의 길이를 가질 수 있다. 공급자는 어떠한 데이터를 저장하고자 한다. 데이터를 저장하는 대신(권리), 이에대한 비용(이더리움)을 지불해야 한다. 수요자는 데이터를 조회해야 하고, 조회가 이뤄졌을 경우(권리), 비용을 지불(이더리움)해야 한다. 이를 위의 개념도를 통해 나타내면 다음과 같다.

스마트한 데이터 저장 계약

이 스마트 계약을 이더리움이 제공하는 솔리디티(solidity)언어로 표현하면 다음처럼 작성된다.

이 계약은 storedData라는 하나의 “상태”와 set, get등 두개의 “행위”를 담고있다. 각각의 실행을 위해서는 이더리움을 네트워크 수수료로 지불해야 한다. (엄밀히 여기서 get함수는 constant형 리턴을 하기 때문에 수수료를 소모하지 않는다.)

스마트 계약과 분산화된 자율 기업(Decentralized Autonomous Company: DAC)

이러한 계약을 여러 계층으로 복잡하게 묶고 사물인터넷(IoT)등과 결합할 경우, 앞에서 이야기 되었던 우버와 같은 기업은 블록체인 위에서 단 한명의 운영조직도 없이 운영될 수 있다.

Slock의 The DAO는 밴처케피탈이라는 비즈니스를 블록체인에 구체화한 최초의 프로젝트라고 볼 수 있다(비록 해킹으로 인해 비극적 결말을 맞았지만).

마치 이러한 회사는 블록체인 상에 “살아있는 것”처럼 느껴질 때가 있는데, 필자는 이러한 특성 때문에 블록체인을 집단적 “약인공지능(semi-artificial inteligence)”으로 파악하고 있다. 기존의 인공지능이 고도의 수학연산과 중앙집중적인 서버의 연산능력을 통해 현실 문제를 해결하고자 한다면, 블록체인은 사람과 사람간의 합의 규칙을 공개적으로 정의함으로써 앞의 업무를 수행하고 있기 때문이다.

--

--