스마트 계약
스마트 계약 또는 스마트 컨트랙트(smart contract)는 계약 당사자가 사전에 협의한 내용을 미리 프로그래밍하여 전자 계약서 문서 안에 넣어두고, 이 계약 조건이 모두 충족되면 자동으로 계약 내용이 실행되도록 하는 시스템이다. 스마트 계약은 중간에 제3의 보증기관을 끼우지 않고도 개인간(P2P)에 원하는 계약을 체결할 수 있도록 해주는 전자계약 기능이라고 할 수 있다. 2013년 당시 19세의 천재 프로그래머였던 비탈릭 부테린(Vitalik Buterin)은 스마트 계약 플랫폼인 이더리움(ethereum)을 개발할 것을 제안[1]하고, 2015년 7월 30일 이더리움 개발에 성공하여 실제 서비스를 시작했다. 솔리디티(solidity)라는 프로그래밍 언어를 사용하여, 계약 기간, 금액, 조건 등을 미리 코딩해 두면, 부동산 거래, 중고 자동차 거래, 무역 거래 등 어떠한 종류의 계약도 자동 실행되도록 만들 수 있다. [2] 기존의 비트코인이 블록체인 기술을 활용하여 가치의 저장과 전달이 가능한 암호화폐를 만들었다면, 이더리움은 한 단계 더 나아가 블록체인 기술을 활용하여 인간이 상상할 수 있는 모든 종류의 계약을 자동으로 실행할 수 있는 스마트 계약 플랫폼을 개발했다. 비탈릭 부테린이 이더리움을 통해 스마트 계약 기능을 구현함으로써, 블록체인 기술을 비트코인과 같은 암호화폐에만 사용하는 것이 아니라, 위변조 방지가 필요한 각종 계약서 작성 등에 활용할 수 있게 되었다. 이런 점에서 기존의 비트코인을 '블록체인 1.0'이라고 부르고, 스마트 계약 기능을 구현한 이더리움을 '블록체인 2.0'이라고 부른다.
목차
닉 재보의 비트골드
스마트 계약은 1994년 닉 재보(Nick Szabo)[3]가 고안한 개념이다. 닉 재보는 스마트 계약을 "계약에 필요한 요소를 코드를 통해 스스로 실행되게 하는 전산화된 거래 약속"이라고 정의했다. 그는 스마트 계약이 자동판매기와 비슷하다[4]고 말했다. 자동판매기에 미리 정해진 액수 이상의 돈을 투입하면, 자동으로 원하는 상품을 구매할 수 있듯이, 스마트 계약을 통해 일정한 조건이 충족되면 자동으로 계약이 실행되도록 한다는 것이다.
1996년 닉 재보는 스마트 계약 설계의 기본 원칙으로 관측 가능성, 검증 가능성, 사생활 보호, 강제 가능성 등 4가지를 제시했다.
- 관측 가능성(observability) : 스마트 계약은 서로의 계약 이행 가능성을 관찰하거나 성과를 입증할 수 있어야 한다.
- 검증 가능성(verifiability) : 계약을 이행 또는 위반했을 때 이를 알 수 있어야 한다.
- 사생활 보호(privacy) : 계약 내용은 계약에 관련된 당사자들에게만 알려져야 한다.
- 강제 가능성(enforceability) : 계약을 강제로 이행할 수 있는 구속력이 있어야 한다. 단, 강제 가능성은 최소화해야 한다.
닉 재보는 스마트 계약을 위해 비트골드(bit gold)라는 디지털 화폐를 고안했지만, 당시의 기술적 한계로 인해 실제로 개발되거나 사용되지는 못하였다.[5]
비트코인 스크립트
비트코인 프로토콜도 낮은 수준의 '스마트 계약' 기능이 가능하다. 기술적인 관점에서 보았을 때, 비트코인의 장부는 하나의 상태변환시스템(state transition system)으로 생각해볼 수 있다. 이 시스템은 현재 모든 비트코인의 소유권 현황으로 이루어진 하나의 “상태(state)” 와 이 현재 상태와 트랜잭션을 받아서 그 결과로써 새로운 상태를 출력해주는 “상태변환함수(state transition function)”로 구성되어 있다. 이러한 비트코인의 결제 시스템인 UTXO(소비되지 않은 트랜잭션 출력)은 간단한 스택-기반 프로그래밍 언어로 표현된 복잡한 스크립트에 의해서도 작동한다.[1] 즉, 최초의 블록체인 기반 스마트 컨트랙트는 바로 비트코인 스크립트이다. 비트코인 트랜잭션에 원시 언어인 OPCODE로 스크립트를 작성해서 보내면 일종의 계약(Contract) 개념이 있으므로 조건에 따라 자동으로 거래를 수행할 수 있다. 하지만 비트코인 스크립트는 튜링불완전성 언어를 사용하고, 반복문을 사용할 수 없고, 다양한 상태를 표현할 수 없으며 비트코인 잔고 외의 다른 정보를 관리 할 수 없다는 한계가 있다. 이는 블록체인의 특이한 구조 때문인데 비트코인 스크립트에서 반복문을 허용할 경우, 스크립트 조건 때문에 코드 실행을 0부터 시작하는 프로그램 카운터를 하나씩 증가시키면서 반복적으로 연산을 수행하도록 구성된 무한 루프가 발생할 경우 네트워크 전체가 멈출 수 있다.[6]
이더리움 스마트 컨트랙트
이더리움(Ethereum)은 이러한 비트코인 스크립트 시스템의 한계를 극복하고자 나온 스마트 컨트랙트에 특화된 블록체인 플랫폼이다. 이더리움은 비트코인 스크립트 시스템의 한계인 다양한 상태 저장과 반복문을 허용한 스마트 컨트랙트를 만들었다. 여기에 각 라인을 실행할 때마다 수수료를 발생시키고 네트워크상에 수수료의 한계를 설정하여 무한루프를 막았다. 무한히 반복되는 조건을 만들어 스마트 컨트랙트를 실행시키면 중간에 수수료 한계점에 도달하면 중단된다. 이는 블록체인을 통해 함수 내용과 함수의 입력을 공유하면서 무결성을 보장한다면, 함수의 결과는 별도로 공유하지 않더라도 그 무결성이 보장된다는 것이다. 이더리움은 함수를 컴파일된 코드 형태로 거래에 포함하여 블록체인을 통해 동기화한다. 이때 거래에 포함된 정보를 함수의 입력으로 하여 코드로 표현된 함수를 실행한 후 그 결과를 별도의 상태로 보관하는 방식으로 스마트 컨트랙트를 구현하게 되었다.
이더리움이 제공하려는 것은 튜링 완전(turing-complete) 프로그래밍 언어가 심어진 블록체인이다. 이 프로그래밍 언어는 코딩된 규칙에 따라 '어떤 상태'를 다르게 변환시키는 기능(arbitrary state transition functions)이 포함된 "계약(contracts)"을 사용자들이 작성할 수 있게 함으로써 인간이 상상할 수 있는 모든 종류의 계약을 자동으로 실행할 수 있게 만들고, 다른 많은 앱플리케이션도 쉽게 만들 수 있도록 돕는다.[1]누구든지 이 언어를 사용해 스마트 컨트랙트, 디앱을 작성하고 소유권에 대한 임의의 규칙, 트랜잭션 형식(transaction format), 상태변환함수(state transition function) 등을 생성 할 수 있다. 이더리움 상에서의 가장 유명한 스마트 컨트랙트의 예는 DAO(Decentralized Autonomous Organization)라고 불리는 탈중앙화된 자율 조직이다. 이는 회사의 의결권을 토큰(DAO Token)으로 행사할 수 있도록 크라우드 펀딩을 통해 토큰을 이더로 구입할 수 있도록 판매하였고, 그 과정에서 모인 약 2000억원 가량의 이더를 어떻게 사용할지 토큰을 기반으로 투표할 수 있도록 한 스마트 컨트랙트로서 특정 운영주체가 없이 참여자의 투표로 운영되도록 했다.
작동 방법
비트코인의 경우 스마트 컨트랙트가 지원되지는 않지만, 비트코인이라는 자산이 이동되는 단 하나의 송금 애플리케이션이 블록체인에 올라간 서비스라고 볼 수 있다. 이더리움 스마트 컨트랙트의 경우, 스마트 컨트랙트의 상태를 변경시키는 트랜잭션 보관 데이터베이스와 스마트 컨트랙트의 최신 상태를 보관하고 있는 스마트 컨트랙트 데이터베이스를 가지고 있다. 여기서의 스마트 컨트랙트는 상태를 변경할 수 있는 애플리케이션이라고 할 수 있고, 스마트 컨트랙트의 상태는 해당 애플리케이션에서 사용하는 변수라고 할 수 있으며 이를 변경하기 위한 입력값은 트랜잭션에 포함되어 있다. 또, 스마트 컨트랙트는 두 가지 인터페이스를 공개하고 있는데, 하나는 트랜잭션(Transaction)이고, 하나는 쿼리(Query)이다. 트랜잭션을 통한 인터페이스는 트랜잭션 데이터베이스에 저장되고, 스마트 컨트랙트의 상태를 변경시키는 접근방법이다. 쿼리는 트랜잭션 데이터베이스에 기록이 남지 않으면서 스마트 컨트랙트의 상태를 읽는 작업이다. 트랜잭션은 쓰기, 삭제, 수정을 실행하고 쿼리는 읽기만을 실행한다. 예로, '디지털 컨텐츠 거래' 가 어떻게 작동하는지를 알아보도록 하자.
- 콘텐츠 판매자가 콘탠츠 등록 트랜잭션을 블록체인에 보낸다. 콘텐츠 등록 트랜잭션 발생 시, 네트워크의 모든 노드는 콘텐츠 등록 트랜잭션을 공유하고 트랜잭션 데이터베이스에 저장하게 된다. 여기까지가 비트코인과 같은 스마트 컨트랙트가 지원되지 않는 데이터 공유 기반의 블록체인이라고 할 수 있다. 스마트 컨트랙트 지원 블록체인은 이 단계 이후에 트랜잭션의 내용에 따라 스마트 컨트랙트 애플리케이션을 실행하고 그 결과를 스마트 컨트랙트 데이터베이스를 반영한다.
- 구매자는 블록체인 네트워크에서 콘텐츠를 조회한다. 블록체인의 어떤 데이터도 변경시킬 필요 없이 스마트 컨트랙트 데이터베이스 내 저장된 상태 값만 조회하면 되기 때문에 쿼리 정보는 블록체인에 동기화할 필요 없고, 블록 동기화 타이밍에 상관없이 바로 응답할 수 있다.
- 구매자가 콘텐츠 구매 트랜잭션을 보내면 트랜잭션을 공유하고 블록체인 네트워크에 동기화한다. 모든 노드의 스마트 컨트랙트 데이터베이스에 컨텐츠 구매자를 등록하고 돈을 판매자에게 전송한다. 그러면 등록된 콘텐츠의 소유권이 구매자에게로 이동한다.
사용 사례
스마트계약은 블록체인 플랫폼의 형태로 발전하고 있어 사실상 적용이 불가능한 기존의 금융 업무 영역은 거의 찾아볼 수 없다. 기존 비트코인(Bitcoin) 기반의 블록체인에서부터 시발된 통화 및 지급 결제 수단으로서의 본원적 업무 영역은 물론, 유∙무형 자산을 포괄한 모든 재화에 대한 평가, 가치 Lifecycle 관련 모든 거래가 모두 스마트계약(Smart Contracts) 시스템으로 연결될 것으로 보인다.
- 금융
블록체인 1.0 기준에서는 지급결제를 중심으로 한 중개기관 없이 순수 자금의 이동·전환·처리에 중점을 두었다면, 블록체인 2.0에서는 거래 관련 이해관계자들 간 자금이동을 포함하여 관련된 계약의 내용을 포괄하는 사전·사후 업무처리 범위로 관련 서비스 영역이 확산되어 거래 당사자 간 스마트계약(Smart Contracts)에 따른 자동 실행을 기반으로 하는 P2P 중심 계약 시스템으로 확산될 전망이다.
- 지적재산권
블록체인을 통해 소유권을 관리하고 음원 구입관련 거래 정보를 투명하게 공유하여, 저작권과 같은 지적재산권을 보호하고 불법 복제를 근본적으로 근절하는 데에 기여할 수 있다. 또한 지적재산권에 대한 권리를 스마트계약(Smart Contracts)으로 등록하여 사용자 대금 지급에 따라 실시간 대금 수령이 이루어지도록 구현하면, 불필요한 중개자가 제거되고 프로세스는 단축되어 보다 효율적인 거래가 가능해진다.
- 공유경제
블록체인 기반의 스마트계약(Smart Contracts)은 공유경제의 한계점인 보완과 신뢰의 문제를 해결하는 열쇠가 될 수 있다. 블록체인에 사용자 차량이나 집을 연동하고 IoT와의 결합을 통하여 사물 스스로가 스마트계약(Smart Contracts)을 실행할 경우, 중개 기업을 거치지 않는 사용자 간 직접 거래가 실현된다. 이와 같이 공유경제에 블록체인 기술이 적용될 경우 간접비를 제외한 모든 수익이 참여자에게 배포될 수 있다.
비트코인캐시 스크립트 연산 부호
2018년 한국에서 열린 후오비 카니발에서 비트메인 대표이자 비트코인캐시의 아버지라 불리는 우지한은 비트코인캐시(BCH)는 의사결정 방식인 합의 알고리즘 변화 없이 다양한 프로젝트를 시도할 수 있는 방안을 도출했다며 BCH에 내재된 ‘스크립트 연산 부호(OP_RETURN)’을 활용하면 스마트 계약 등 다양한 기능을 자유롭게 구현할 수 있다고 했다. BCH는 최근 업데이트를 통해 40바이트였던 스크립트 연산 부호 용량을 220바이트로 늘려 새로운 프로토콜을 개발하기에 훨씬 쉬운 환경이 됐다고 한다. 스크립트 연산 부호는 블록체인 거래(transaction) 과정에 아무런 영향을 주지 않고, 블록에서 제거할 수 있기 때문에 스마트 계약 등 다양한 기능을 자유롭게 개발 및 구현할 수 있다거 한다. 이어 비트코인의 스크립트 연산 부호 용량이 컸다면 이더리움 창시자인 비탈릭 부테린도 이더리움을 만드는 대신 이 부호를 활용하여 스마트 계약을 만들었을 것이란 언급도 덧붙였다.
심버스의 심트랜스 : 범용거래 처리기
이더리움 블록체인의 주요 기능인 스마트 계약은 당사자 간 특정 조건이 충족되어야만 거래가 발생하므로, 예약거래는 불가능하다. 반면 심버스는 범용거래 처리기로 예약거래와 일반거래를 구분 없이 거래 가능하도록 했다. 심버스 블록체인의 사용자들은 일반거래와 예약거래는 분 단위로 처리시점을 정할 수 있으며, 예약거래의 최장 예약시점은 1년이며, 그 이상 되는 예약거래의 경우 애플리케이션이 연 단위로 갱신하여 처리하거나 스마트 계약을 이용하여야 한다. 예약거래의 네트워크 수수료는 거래의 컴퓨팅 크기를 기준으로 하며 저장비용을 감안하여 기간할인 방식을 적용한다. 이러한 범용거래 처리기 사용으로 그동안 블록체인 접근이 힘들었던 개인과 소상공인 및 인터넷 애플리케이션에 새로운 블록체인을 활용 기회가 제공된다.
심트랜스 범용거래 처리기의 주요 기능은 다음과 같다.
- 즉시거래와 예약거래 : 범용거래 처리기는 다중블록체인을 이용하여 일반거래와 스마트 계약을 구분하여 처리하고, 일반거래는 거래 처리 시점에 따라 즉시거래와 예약거래로 구분하며 서로 다른 블록체인을 사용한다. 일상생활에서 송금이나 단순지불 거래는 즉시 처리가 요구되지만, 일부 인터넷 쇼핑 등에서는 물건의 배달이 확인되는 시점까지 대금지불을 늦출 수 있다. 또한 매달 월정액을 지불하는 상품과 서비스 구매도 예약거래에 해당한다. 계약서에 따른 대금지불이나 조건이 붙은 거래도 예약 거래를 이용하여 손쉽게 처리할 수 있다.
- 일대다 거래 : 다수의 수신자에게 즉시 거래하거나 예약거래를 할 수 있다. 다수의 수신인에게 송금을 할 수 있기 때문에 다수의 중개인이 존재하는 거래나 동일한 유형의 다수 거래를 한 번에 처리할 수 있다. 이를 통하여 거래 처리시간 단축, 거래시점 동시화 등을 간단하게 처리한다.
- 일반거래와 스마트 계약의 병용 : 하나의 함수로 모든 일반거래와 스마트 계약을 동시에 처리할 수 있다. 예를 들어 예약거래와 스마트 계약의 호출은 하나의 함수로 처리할 수 있기 때문에, 선물거래나 옵션거래를 간단하게 처리할 수 있다.
스마트 계약 장점
블록체인을 이용한 스마트계약(Smart Contracts)은 계약 이행 및 검증의 과정이 네트워크로 자동화 되고, 중재해주는 사람이나 기관이 없다보니 돈이나 부동산, 주식, 그밖에 가치있는 그 무엇이라도 교환하면서도 투명하고, 계약 쌍방간에 충돌 없이 거래를 완료할 수 있다. 기존 계약서는 서면으로 돼 있어 계약 조건을 이행하려면 실제 사람이 계약서대로 수행을 해야 하지만 디지털 명령어로 계약서를 작성하게 되면 애초에 합의한 조건에 따라 계약 내용을 자동으로 실행할 수 있다. 디지털로 된 계약서는 조건에 따른 계약 결과가 명확하고 계약 내용을 즉각 이행할 수 있다. 그리고 추가 비용 없이 직접 처리하게 만든 것으로 복잡한 사업상의 계약을 적은 비용과 합의에 따른 신뢰를 바탕으로 안전하게 계약을 실행할 수 있게 되었다.
각주
- ↑ 1.0 1.1 1.2 Vitalik Buterin, "A Next-Generation Smart Contract and Decentralized Application Platform", 2013.
- ↑ Peter Sayer, 〈블록체인에 대한 기본 상식 5가지〉, 《CIO Korea》, 2016-04-12
- ↑ 닉 재보(Nick Szabo)는 로스쿨을 졸업한 컴퓨터 과학자이다. '닉 자보'라고도 한다.
- ↑ 김인경 기자, 〈(IT열쇳말) 스마트 계약〉, 《블로터》, 2018-02-05
- ↑ 이정훈 기자, 〈(이정훈의 암호화폐 읽기)<2>`빅 브라더` 가라…혁신 넘어선 혁명〉, 《이데일리》, 2018-01-10
- ↑ 더루프, 〈스마트 컨트랙트 개요(Smart Contract)-2〉, 《더루프 블로그》, 2017-04-04
참고자료
- Vitalik Buterin, "A Next-Generation Smart Contract and Decentralized Application Platform", 2013.
- 김인경 기자, 〈(IT열쇳말) 스마트 계약〉, 《블로터》, 2018-02-05
- 이정훈 기자, 〈(이정훈의 암호화폐 읽기)<2>`빅 브라더` 가라…혁신 넘어선 혁명〉, 《이데일리》, 2018-01-10
- 더루프, 〈스마트 컨트랙트 개요(Smart Contract)-2〉, 《더루프 블로그》, 2017-04-04
같이 보기