우리는 살면서 많은 사람을 만난다. 이런저런 이유로 다투는 경우도 많다. 싸우지 않기 위해 약속을 하고 계약을 맺는다. 이때 가장 중요한 이슈는 ‘약속을 지키지 않고 계약을 위반했을 때 어떻게 할 것이냐’의 문제다. 계약은 지키겠다고 맺지만, 사실은 안 지킬 경우를 대비해서 만들기 때문이다. 그래서 계약의 핵심 내용 중 하나는 ‘계약의 해제 또는 손해배상’ 항목이고 계약서에도 꼭 들어간다.
그런데 아무리 막대한 손해배상 조항을 넣는다 해도 “꼭 지킨다”는 보장은 없다. 추가 소송이나 강제집행 등의 절차를 거쳐야만 해결되는 경우도 많다. 그런데 소송이나 강제집행조차도 책임을 져야 할 당사자가 돈이 없다면 아무 의미가 없다. 그렇다면 아예 소송조차 하지 않는 편이 낫다.
이처럼 현실에서는 예상치 못한 많은 경우가 발생한다. 그런 측면에서 블록체인 기술을 기반으로 한 스마트계약(Smart Contract)은 상당히 큰 의미를 지닌다. 스마트계약은 ‘소프트웨어를 이용해 계약을 맺는데 성립과 이행이 동시에 이뤄진다’는 것이기 때문이다. 가령 당사자가 계약을 맺겠다고 해도 계약은 맺어지지 않는다. ‘한 당사자가 다른 당사자에게 소정의 대금을 지급하면 계약이 체결된다’는 식의 내용을 소프트웨어 코드로 입력하면, 실제로 대금을 지급해야 소프트웨어가 작동하면서 계약이 완성된다.
스마트계약이 계약의 가장 본질적 위험요소인 ‘채무불이행’ 문제를 ‘코드’라는 자동화로 해결할 수 있다는 걸 보여준 셈이다. 실제로 스마트계약을 통해 모든 채무불이행 문제가 해결된다면, 소송이나 강제집행, 법원, 변호사 등은 필요 없는 세상이 된다.
스마트계약은 ICO(암호화폐발행)에서 많이 쓰인다. 암호화폐에 대한 투자자금을 모으고 토큰을 발행하고 투자자에게 전달하는 모든 과정이 프로그램으로 만들어진 후 웹페이지 또는 탈중앙화된 애플리케이션(Dapp)을 통해 자동으로 진행되는 경우가 많다.
스마트계약이 암호화폐 등 토큰을 오차 없이 발행되도록 하는 중요한 요소 중 하나가 됐다. 가령 스마트계약으로 특정 프로젝트를 위한 크라우드펀딩 프로그램을 만들었다고 하자. 프로그램은 정해진 금액이 모이면 투자자에게 토큰 또는 코인이 자동으로 지급되도록 작동한다. 그리고 정해진 투자금은 발행자에게 자동 송금되고, 초과 된 돈은 투자자에게 반환된다. 그러면 ICO 발행인, 관리자, 투자자 사이에 어떤 채무불이행 문제도 발생하지 않는다.
블록체인 프로젝트도 마찬가지다. 블록체인 플랫폼에 스마트계약을 올려놓고 미리 결정된 조건이 되면 자동으로 약속된 것이 이행되도록 할 수 있다. 그러면 스마트계약의 조건에 따라 블록체인에 올려놓은 자산이 자동으로 옮겨지는 것을 보장하는 셈이다. 토큰의 경우라면 투표할 권한, 시설의 이용권한, 물건에 대한 지급청구권 그리고 이 모든 것을 복합적으로 할 수 있는 권한을 넣어놓을 수 있다. 그리고 토큰 소유자는 약속된 조건을 충족함으로써 위와 같은 권한을 자동으로 갖게 된다.
이렇게만 보면 스마트계약이 모든 것을 완벽하게 해결해 주는 만병통치약처럼 보인다. 그런데 스마트계약이 만병통치약이 되기 위해선 몇 가지 전제조건이 있다.
우선 설계자(프로그래머)가 소프프웨어 코드를 제대로 설계해야 한다는 것이다. 그리고 계약불이행에 따른 손해배상이 지급될 수 있도록 블록체인 위에 자산을 올려놔야 한다. 만약 관리자가 ‘계약 내용에 따라 블록체인에 올려놓은 자산이 자동으로 옮겨진다’고 백서에 명시했다 해도 설계자(프로그래머)가 관련 조항을 코드로 넣어두지 않으면 계약은 실행되지 않는다.
또 프로그래밍을 했다 해도 블록체인 위에 자산이 없다면 계약은 이행되지 않는다. 가령 물건에 대한 지급청구권을 분명하게 명시한 토큰이 있다고 하자. 백서에도 ‘이 토큰을 사용하면, 자동으로 물건이 지급된다’고 명시돼 있다. 그런데 실제 코드에는 ‘토큰 소유자가 블록체인 플랫폼에서 물건 공급자에게 토큰을 지급하면, 공급자는 소유자에게 단지 토큰이 자신에게 지급됐다는 내용의 데이터 형태 기록이나 증표를 주면 된다’고 돼 있다고 하자. 물건을 건네준다는 내용이 빠진 것이다.
그러면 토큰 소유자는 ‘토큰을 줬다’는 데이터 기록이나 증표만 받게 된다. 물건은 블록체인에 담긴 자산이 아니고, 실제로도 존재하지 않거나 생산조차 안 된 것일 수 있다. 물건을 받을 방법이 없는 것이다. 이런 때는 스마트계약이 아니라 그냥 일반적인 계약이 되고 변호사를 통한 소송과 법원의 강제집행이 필요한 상황이 된다.
만약 스마트계약이 아닌 일반 계약이 되면 토큰 사용자가 물건 공급자에게 물건을 달라고 할 수 있을까?
가장 유사한 사례는 소셜커머스에서 쿠폰으로 물건을 사는 경우다. 일반적으로 쿠폰을 발행하는 경우에는 소셜커머스 사용자가 물건 공급자를 대신해 소비자와 상품 등에 대한 매매계약을 맺고, 그 증거로 쿠폰을 주는 것으로 본다. 법적 형태는 물건에 대한 위탁매매인 셈이다. 그런데 토큰 사용자와 물건 공급자는 직접 매매계약의 당사자가 아니다. 법률관계도 없다. 따라서 토큰 사용자는 물건 공급자에게 물건의 지급을 청구하기 힘들다. 소송이나 강제집행을 해도 물건을 받지 못할 위험성이 크다.
결국 스마트계약을 체결한다 해서 모든 위험성이 사라지지 않는다. 채무불이행에 대한 만병통치약은 아니다. 만약 투자를 하고 코인이나 토큰을 받기로 했다면 투자의 위험을 줄이기 위해선 세심하게 살펴볼 필요가 있다. 특히 백서에 ‘블록체인에 담겨진 자산에 대해 계약의 내용이 자동이행된다’는 내용이 있는지 찾아봐야 한다. 그리고 백서의 내용에 맞게 코딩과 작동이 가능한지 꼼꼼히 따져보는 것이 필요하다. /이명준 하모니 법률사무소 대표 변호사
- 우승호 기자
- derrida@sedaily.com