brunch

You can make anything
by writing

C.S.Lewis

by delight Jul 31. 2018

스마트 컨트랙트를 둘러싼 불편한 진실

[미디어앤톡]비트코인 개발자 지미 송의 주장

학습 차원에서 틈틈히 해외 블록체인 전문가들이 블로그나 책에서 쓴 글을 정리하고 있습니다. 이번 포스팅도 그중 하나고요, 제대로 번역되지 않은 부분은 확인주시면 반영토록 하겠습니다.


블록체인과 AI, 클라우드와 함께 스마트 컨트랙트도 중량급 키워드로 통하고 있다. 판결 시스템을 사용하는 대신 신뢰할 수 있는 보다 나은게 있다면 무슨일이 일어날 것인가? 


스마트 컨트랙트는 계약시 미들맨을 제거할 수 있다는 약속을 포함하고 있다. 변호사들도 제거할 수 있다는 얘기다. 스마트 컨트랙트가 무엇일까? 엔지니어링 측면에서 상황을 짚어보자.


통상 계약은 미래의 무언가를 놓고 두명 이상의 이해관계자들을 묶는다.  엘리스는 봅에게 집을 빌리는 조건으로 돈을 지급한다거나 찰리는 할부를  받는 조건으로 데니스의 차에 어떤 문제가 생겨도 수리해준다는 식이다.코드를 기반으로 신뢰가 필요 없도록 하는 것이다.


엘리스가 봅에게 500달러를 지불하기로 했다면 어떤 코드는 조건이 사실인지 판단하고, 실행한다. 엘리스가 봅에게 침상을 3개월에 500달러를 주고 빌리기로 했다면 코드는 조건이 사실인지 판단하고 실행한다.


스마트 컨트랙트에서 핵심은 무신뢰(trustless) 실행이다. 다양한 조건을 실행하기 위해 서드파티에 의존할 필요가 없다.  다양한 조건을 실행하기 위해 다른 누군가에 의존하는 대신 스마트 컨트랙트는 제때 객관적으로 일어나야할 것들을 실행한다.


스마트라는 말을 쓴다는 것은 이들 계약이, 본질적으로 지능을 갖췄다는 것을 함축하고 있다. 사실은 그렇지 않다.  스마트 컨트랙트에서 스마트는 동의를 실행하기 위해 다른 사람들의 협력을 필요로 하지 않는다는 것이다. 돈을 내지 않은 임차인을 내쫓기전에 스마트 컨트랙트는 돈을 내지 않은 임차인이 아파트 밖으로 나가지 못하도록 할 것이다. 


스마트 컨트랙트를 강력하게 하는 것은 동의된 것을 실행하는 것이다. 지능적이라는 의미가 아니다. 정말로 지능적인 계약은 모든 상황을 참작하는 것이다. 계약의  정신을 살펴보고, 판결을 공정하게 하는 것이다. 가장 수상쩍은 상황에서도 말이다.


다시 말해 진정한 스마트 컨트랙트는  실제 좋은 판사처럼 행동하는 것이다. 이같은 맥락에서 스마트 컨트랙트는 전혀 지능적이지 않다. 룰 기반이고, 2차 상황을 고려하지 않는다. 다시 말해, 무신뢰 계약은, 모호성이 없다는 것을 의미한다.


많은 중앙집중식 마케팅 때문에 스마트 컨트랙트는 어더리움에만 있다는 오해가 있다. 사실이 아니다. 비트코인에도 스마트 컨트랙트는 있다. 비트코인은 2009년 나올때부터 스마트 컨트랙트가 있었다. 광범위한 스마트 컨트랙트 언어인 스크립트가 그것이다. 사실, 스마트 컨트랙트의 존재는 비트코인이 나오기 전인, 1995년으로까지 거슬러 올라간다. 비트코인 스마트 컨트랙트 언어와 이더리움 스마트 컨트랙트 간  튜링 완전성이다. 


이더리움 스마트 컨트랙트 언어인 솔리디티는 분석하기 어려운 대신 복잡한 계약을 가능케 한다. 복잡한 계약이라는 장점을 취하고 분석이 어렵다는 단점을 내준 케이스다. 복잡한 계약은 보안을 유지하기 어렵다. 정상적인 계약 조차도,복잡해지면 집행하기 어려운 법이다. 복잡해질수록  해석의 여지가 추가됨에 따라 불확실성은 커진다.


스마트 컨트랙트의 차이는 모든 조건들이 컴퓨터 코드에 의해 평가되고 실행된다는 것이다. 스마트 컨트랙트에서 보안은 가능한 모든 것을 다루는 것을 의미한다. 계약이 제작자가 의도한 대로 확실하게 실행된다는 것을 뜻하다. 튜링 완전성 맥락을 실행하는 것은 매우 까다롭고 분석하기도 어렵다.


튜링 완전성 스마트 컨트랙트를 안전하는게 하는 것은, 컴퓨터 프로그램에 버그가 없다는 것을 증명하는 것과 같은 급이다. 이것이 어렵다는 것을 모두가 안다. 거의 모든 컴퓨터 프로그램에는 버그가 있다. 정상적인 컨트랙트를 제작하는 것은 몇년의 연구 시간이 걸리며 제대로 짜기 위해서는 매우 어려운 시험을 치러야 한다. 스마트 컨트랙트는 뛰어난 수준이 필요하지만 지금은 아니다. 많은 스마트 컨트랙트가 얼마나 안전할 필요가 있는지 이해하지 못하는 이들에 의해 미숙하게 만들어진다. 


이 문제에 대한 비트코인의 솔루션은 튜링 완전성을 갖지 않도록 않는 것이다. 컨트랙트를 쉽게 분석할 수 있게 한다. 가능한 프로그램 상태를  쉽게 점검하고 살펴볼 수 있도록 하는데 초점이 맞춰져 있다. 이더리움의 솔루션은 스마트 컨트랙트 제작자에게 부담을 지우는 것이다. 컨트랙트가 의도한대로 돌아가는지 여부는 제작자에게 달렸다.


컨트랙트 보안의 책임을 제작자에 넘기는 것은 이론적으로는 좋아 보인다. 하지만 실제로는 심각한 중앙화라는 결과로 이어진다. 이더리움은 '코드가 법이다'는 아이디어와 함께 등장했다. 이더리움에서 컨트랙트는 궁극의 권위다. 누구도 컨트랙트를 파기할 수없다.  스마트 컨트랙트를 고정하면, 그것을은보존할 가치가 있다. 하지만 DAO가 사건이 벌어졌을 때 충돌이 일어났다.


DAO는 탈중앙화된 자율 조직(Decentralized Autonomous Organization)을 뜻한다. 이더리움에서 이더로 1억5000달러 상당의 자금을 유치했다. 이더리움 가격이 20달러였을때의 일이다. 이것은 이론적으로는 좋아 보인다. 그러나 문제가 있었다. 코드는 안전하지 않았다. 결과적으로 누군가 DAO에 구멍을 파서 돈을 빼내올 수 있었다.


많은 이들이 DAO를 공격한 이들을 해커로 부른다. 이같은 의미에서 해커는,컨트랙트에서 돈을 빼내오는 방법을 알았다. 이것은 제작자가 의도한 것이 아니었다.  광범위한 의미에서 DAO에서 돈을 빼내간 이들은 해커가 전혀 아니다. 스마트 컨트랙트에 있는 우연을 활용했을 뿐이다. 창의적인 CPA가 세금 구멍을 이해하고 고객의 돈을 절약하는 것과 크게 다르지 않다.


다음에 일어난 것은 이더리움이 더 이상 코드는 법이 아니라고 결정하는 것이었다. 이더리움은 DAO로 흘러 들어간 모든 돈을 회수했다.다시 말해 컨트랙트 제작자와 투자자들은 어리석은 짓을 했고, 이더리움 개발자들은 이들을 구제하기로 결정했다.


이같은 사고의 휴유증은 잘 알려져있다. 이더리움 클래식의 탄생이다. 이더리움 클래식은 코드는 법이다 원칙을 지키는 것이 목표다. 쓰여진 DAO를 보존하는 것이다. 이에 더해 개발자들은 이더리움의 튜링 완전성 자산과 거리를 두기 시작했다. 안전하게 하는 것이 어렵다는 이유에서였다.


ERC20과 ERC721 표준은 대부분의 이더리움 스마트 컨트랙트 템플릿에 사용된다. 두가지 컨트랙트 유형은 튜링 완전성 없이, 개발될 수 있다는 점이  중요하다. 튜링 완전성이 없어도 스마트 컨트랙트는 충분히 좋을 수 있다. 


예를 들어 부동산이 스마트 컨트랙트로 헤택을 볼수 있나?  엘리스는 그가 집을 소유하고 있다는 것을  증명할 수 있다. 봅은  돈을 보내고 집을 받을 수 있다. 오너십, 무신뢰, 기계에 의한 빠른 실행에  대해 질문할 필요가 있다. 관료, 판사, 대표 보험도 필요치 않다.


멋지지 않나? 그러나 여기에는 두가지 문제가 있다.  하나는 중앙화된 조직에 의한 스마트 컨트랙트 실행은 진정한 무신뢰가 아니라는 것이다. 실행하려면 중앙화된 조직을 신뢰해야 한다.  무신뢰는 스마트 컨트랙트의 핵심 기능이다. 따러서 중앙화된 실행은 말이 되지 않는다. 스마트 컨트랙트를 진정한 무신뢰로 하려면 실제로 탈중앙화된 플랫폼이 필요하다.


이것은 두번째 문제로 이어진다. 탈중앙화돤 맥락에서 스마트 컨트랙트는 디지털 버전과 물리적 버전간 명쾌한 연결이 있을때만 돌아간다.  이것은 집의 디지털 버전 소유권이 바뀌면  물리적 버전의 소유권도 바뀌어야 한다는 것을 의미한다. 물리적 세계에 대해 이해하는 디지털 세계가 필요하다. 이것은 오라클 문제로 알려져 있다.


엘리스가 집을 봅에서 전달했을때, 스마트 컨트랙트는 엘리스가 실제로 집을 봅에게 넘겼다는 것을 알 필요가 있다. 이렇게 하는데는 여러가지 방법이 있는데, 본질적으로 같은 문제가 있다. 어떤식으로 해도 물리적 세상에서 일어나는 이벤트를 검증하는 서드파티가 필요하다. 


예를 들어, 집은 이더리움에서 대체 할수 없는 토큰으로 표현될 수 있다. 엘리스는 일정량의 이더를 오토믹 스왑 형태로 받고 집을 봅에게 넘길 수 있다. 여기에는 문제가 있다. 봅은 토큰이 실제로 집을 나타낸다는 것을 신뢰할 필요가 있다. 그러려면  하우스 토큰 전송이 실제로 집이 법적으로 그의 것이라는 것을 의미하는 오라클이 있어야한다.


정부 당국이, 토큰이 실제로 집이라는 것을 말한다고 해도 토큰이 도난당하면 어떤 일이 발생할 것인가, 집은 도둑에게 소유되는가, 토큰을 잃어버리면 어떻게 되는가? 누구에게도 팔릴수 없다는건가? 하우스 토큰은 재발행될 수 있는가? 누가 그렇게 하는가?


디지털과 물리적 자산을 연결하는 것에는 어려운 문제가 있다. 그것이 과일이든, 자동차든 집이든 최소한 탈중앙화된 맥락에선 그렇다. 물리적 자산은 법에 의해 규제받는다.스마트 컨트랙트에서 소유는 실제 세상에서 소유를 의미하지 않는다. 정상적인 계약처럼 신뢰 문제에 직면한다. 서드파티를 신뢰하는 스마트 컨트랙트는 무신뢰라는 핵심 기능을 제거한다.


이북, 건강 기록, 영화 같은 디지털 자산들 조차도 같은 문제로 고생할 수 있다. 이들 디지털 자산에 대한 권리는 궁극적으로, 다른 권위에 의해 결정된다. 오라클은 신뢰될 필요가 있다. 이같은 관점에서 오라클은 판사를 단순화시킨 버전이다. 당신이 실제로 얻는 것은 모든 가능한 성과를 암호화하는데 따른 복잡성이다.  


다시 말해, 계약을 스마트하게 하기위해 당신은 누군가를 여전히 신뢰하면서 매우 복잡한 계약을 해야 한다.

오라클 없이 할 수 있는 유일한 것은 무기명 주식이다.  토큰의 소유권은 외부 스마트 컨트랙트 플랫폼에 의존하지 않는다.


스마트 컨트랙트가 디지털 무기명 주식일 때만 스마트 컨트랙트는 무신뢰 상태일 수 있다. 튜링 완전성를 활용하는 것은 망치기 쉬운 방법이다, 의도하지 않은 모든 종류의 결과를 가져올 수 있다. 스마트 컨트랙트 플랫폼은 튜링 완전성이 아니라 튜링에 취약하다고 불러야 한다.  


 DAO 사건은 암묵적으로 신뢰받는 계약의 "정신"이 있으며 우리가 깨닫는 것보다 더 분쟁을 해결할 수 있음을 입증했다. 스마트 컨트랙트는 망치기 너무 쉽고 안전하기는 너무 어렵다. 무신뢰로 유지하기는 너무 어렵다., 너무 많은 외부 의존성이 있다.  스마트 컨트랙트기 무신뢰를 유지하는 유일한 공간은, 비트코인과 같은 탈중앙화된 플랫폼에서 디지털 무기명 주식으로 있는 것이다.


[관련글: 지미 송의 미디어 블로그]The Truth about Smart Contracts https://medium.com/@jimmysong/the-truth-about-smart-contracts-ae825271811f

작가의 이전글 법률가 시장 그리고 수요와 공급 법칙의 역설

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari