본문 바로가기

블록체인 공부

지미 송(Jimmy Song) - 스마트 컨트랙트에 대한 진실

지미 송(Jimmy Song) - 스마트 컨트랙트에 대한 진실


* 비트코인 맥시멀리스트 지미 송의 글 ‘스마트 컨트랙트에 관한 진실’을 한국어로 정리해보았습니다. 다만 이해(해석)되지 않거나, 문장과 어울리는 표현현이 떠오르지 않은 경우에는 임의로 작성하였기에 원작자의 의도와는 약간 다를 수 있습니다. 또한 본 글은 초안입니다. 브런치 (스마트 컨트랙트의 진실)에서 다듬어진 글을 확인하실 수 있습니다.



원문 : https://medium.com/@jimmysong/the-truth-about-smart-contracts-ae825271811f



- Jimmy Song

‘블록체인’, ‘인공지능’, ‘클라우드’와 마찬가지로, ‘스마트 계약(이하 스마트 컨트랙트)’도 많은 주목을 받는 단어 중 하나다. 스마트 컨트랙트를 사용하는 게 사법제도를 이용하는 것보다 나은 점은 무엇일까?


스마트 컨트랙트의 약속은 다음과 같은 내용을 포함한다.


• 자동적으로, 신뢰할 필요 없이, 공정하게 계약 집행

• 계약 생성, 이행, 집행에 있어 제 3자 제거 

• (암시적으로) 변호사 제거


나는 이 과대광고에 공감한다. 제 3자를 신뢰할 필요가 없어진다면 얼마나 효율적으로 일을 수행할 수 있을까?


그건 그렇고, 스마트 컨트랙트라는 게 무엇인가? 이것은 이더리움의 영역에 속하지 않는가? 이것은 미래의 방법은 아닌가? 진보의 길을 왜 방해하려 하나?


이 글에서는 스마트 컨트랙트가 무엇이고, 이와 함께하는 기술적 실체가 무엇인지 살펴보겠다.(스포일러 : 이것은 그렇게 간단하지 않고, 안전하게 만들기는 매우 어렵다.)




스마트 컨트랙트란 무엇인가?


일반적인 계약은 두 명 이상의 사람들을 미래의 무언가와 결속시킬 당사자 간의 합의이다. 앨리스는 밥의 집의 사용하는 대가로 밥에게 약간의 돈을 지불할 수 있다(임대료). 찰리는 매달 돈을 지불받는 대가로 미래에 데니스의 차에서 발생하는 어떤 손상을 수리하는 것에 대해 동의할 수 있다(자동차 보험).



스마트 컨트랙트가 기존의 계약과 다른 점은 누군가를 신뢰할 필요 없이 계약 조건이 컴퓨터 코드로 평가되고 실행된다는 것이다. 그래서 만약 앨리스가 3개월 후 소파를 배달하는 조건으로 500달러를 지불하기로 동의한다면(소파 선물) 어떤 코드는 그 조건이 사실인지(앨리스가 밥에게 지불했는가? 3개월이 되었는가?) 결정하고, 양자 모두 계약을 철회하지 못하게 하고 실행할 수 있다(에스크로에서 소파를 배달).


스마트 컨트랙트의 핵심은 신뢰가 필요 없는 실행이다. 즉, 다양한 조건을 실행하기 위해 제 3자에게 의지할 필요가 없다. 상대방이 약속을 지킬 것인가에 의존하는 대신, 일이 잘못되었을 때 변호사와 사법제도에 의존하는 대신, 스마트 컨트랙트는 일어나기로 한 일을 제시간에 객관적으로 집행한다.



스마트 컨트랙트는 아주 멍청하다.


‘스마트’라는 단어의 사용은 이러한 계약들이 타고난 지능을 가지고 있다는 것을 암시한다. 그렇지 않다. 계약에서 ‘스마트’한 부분은 합의를 실행할 때 상대방의 협조를 필요로 하지 않는 데 있다. 돈을 지불하지 않는 임차인을 내쫓는 대신, ‘스마트’ 컨트랙트는 임차인이 아파트에 들어가지 못하도록 문을 잠글 것이다. 합의한 결과를 집행하는 것이 스마트 컨트랙트를 강력한 것으로 만드는 것이지, 계약에 타고난 지성이 있는 것이 아니다.



진정으로 지적인 계약은 정상참작이 가능한 모든 상황을 고려하고, 계약의 정신을 보며 심지어 가장 모호한 상황에서도 공정한 판결을 내린다. 달리 표현하면, 진정한 스마트 컨트랙트는 정말 좋은 재판관처럼 행동할 것이다. ‘스마트 컨트랙트’는 이러한 맥락에서 전혀 지능적이지 않다. 사실 스마트 컨트랙트는 매우 규칙에 근거하고, 어떤 2차 상황이나 법의 ‘정신’을 고려할 수 없다.


바꿔 말하면 신뢰가 필요 없는 계약을 만드는 것은 우리가 애매한 상황에 대한 여지를 가질 수 없다는 것을 의미하며, 이것은 다음과 같은 문제를 야기한다.



스마트 컨트랙트는 진짜 어렵다.


이더리움의 중앙화 된 마케팅 때문에 스마트 컨트랙트는 이더리움에만 존재한다는 잘못된 믿음이 있다. 사실이 아니다. 비트코인은 2009년 초부터 스크립트라고 부르는 매우 광범위한 스마트 컨트랙트 언어를 갖고 있다. 사실 스마트 컨트랙트는 비트코인 이전(1995년)부터 존재했다. 비트코인의 스마트 컨트랙트 언어와 이더리움의 스마트 컨트랙트 언어의 차이점은 튜링 완전성에 있다. 솔리디티(ETH의 스마트 컨트랙트 언어)는 분석의 어려움을 대가로 좀 더 복잡한 계약을 허용한다.



복잡성의 몇몇 중요한 결과가 있다. 복잡한 계약은 좀 더 복잡한 상황을 허용하지만, 안전하게 만들기는 매우 어렵다. 일반적인 계약에서도 계약이 더 복잡할수록 그것을 실행하기는 더 어렵다. 복잡성은 더 많은 불확실성과 해석의 여지를 더해주기 때문이다. 스마트 컨트랙트에서 안전성은 계약이 실행될 수 있는 가능한 모든 방법을 다루고, 계약이 작성자의 의도대로 이루어지도록 하는 것을 의미한다.



튜링 완전한 상태에서 실행은 매우 까다롭고 분석하기 어렵다. 튜링 완전한 스마트 컨트랙트에서 안전성을 확보하는 것은 컴퓨터 프로그램에 버그가 없다는 것을 증명하는 것과 같다. 거의 모든 컴퓨터 프로그램에 버그가 있기 때문에 우리는 이것이 매우 어렵다는 것을 안다.


일반적인 계약서를 합법적으로 작성하기 위해서는 수년간의 공부와 매우 어려운 변호사 시험을 거쳐야 한다. 스마트 컨트랙트도 최소한 그 정도의 능력을 요구하지만 현재 많은 계약들이 그것이 얼마나 안전할 필요가 있는지 이해하지 못하는 초보들에 의해 작성된다. 이는 결함이 있는 것으로 판명된 많은 계약에서 분명하게 드러난다.


이 문제에 대한 비트코인의 해결책은 단순히 튜링 완전성을 갖지 않는 데 있다. 이것은 프로그램의 가능한 상태를 열거하고 검토하기가 쉽기 때문에 계약을 분석하기가 더 쉽다.


이더리움의 해결책은 스마트 컨트랙트 작성자에게 부담을 주는 것이다. 계약이 의도한 대로 이루어지도록 하는 것은 계약 작성자에게 달려 있다.



스마트 컨트랙트는 진짜 계약이 아니다(적어도 이더리움에서는).


계약을 안전하게 하는 책임을 작성자에게 넘기는 것은 이론적으로는 좋게 들리지만, 실제로는 심각한 중앙화의 결과를 가져왔다.


이더리움은 ‘코드가 법이다’라는 아이디어로 시작했다. 즉, 이더리움에서 계약은 궁극적인 권한이며 누구도 계약을 무효화할 수 없다. 이 아이디어는 스마트 컨트랙트 개발자에게 스스로 책임져야 한다는 것을 분명하게 했다. 만약 당신이 스마트 컨트랙트를 잘못 만들었다면 자업자득이라는 것이다. 이러한 생각은 다오(DAO) 사건이 발생했을 때 급정거하게 되었다.


DAO는 '탈중앙화 된 자치 기구'를 의미하며 이더리움 플랫폼이 무엇을 할 수 있는지를 보여주기 위한 한 방법으로 이더리움에서 펀드가 조성되었다. 사용자는 DAO에 돈을 입금하고 DAO가 투자하여 얻은 결실에 따라 수익금을 얻을 수 있었다. 이 결정들은 크라우드 소싱되고 탈중앙화 될 것이었다. DAO는 이더리움이 20달러 근처에서 거래될 때 1억 5,000만 달러를 모금하였다. 이론적으로는 모든 게 좋아 보였지만 한 가지 문제가 있었다. 코드가 그다지 안전하지 못했고, 누군가가 DAO의 돈을 빼낼 방법을 알아냈다는 것이다.


많은 사람들은 DAO에서 돈을 빼간 사람을 '해커'라 부른다. ‘해커’가 계약 작성자가 의도하지 않은 방식으로 계약에서 돈을 인출하는 방법을 발견했다는 점에서는 사실이다. 하지만 더 넓은 의미에서 보면 그들은 해커가 전혀 아니다. 단지 스마트 컨트랙트에서 고려하지 못한 부분을 자신들에게 유리하게 이용한 사람일 뿐이다. 이는 고객들의 돈을 절약하기 위해 조세제도의 허점을 알아내는 창의적인 회계사와 별반 다르지 않다.


이 사건 이후로 이더리움에서 코드는 더 이상 법이 아니라고 결정했고, DAO에 들어간 돈은 모두 되돌렸다. 달리 표현하면 계약 작성자와 투자자는 멍청한 짓을 했고, 이더리움 개발자는 그들을 구제하기로 결정한 것이다.



이 사건의 결과는 잘 기록되어 있다. DAO를 그대로 보존하고, ‘코드는 법이다’ 원칙을 지키는 이더리움 클래식이 탄생하였다. 게다가, 개발자들은 안전하게 만들기가 어렵다고 증명된 이더리움의 튜링 완전성을 기피하기 시작했다. ERC20과 ERC721은 이더리움에서 가장 자주 사용되는 스마트 컨트랙트 템플릿이고, 이 두 유형의 계약은 튜링 완전성 없이도 작성할 수 있다.



스마트 컨트랙트는 오직 디지털 무기명 상품과 함께 작동한다.


튜링 완전성이 없다 해도 스마트 컨트랙트는 좋아 보인다. 누가 신뢰할 수 없는 사람으로부터 자신이 정당하게 소유해야 할 것을 얻기 위해 법원에 가야 하는 것을 좋아하겠는가? 스마트 컨트랙트를 사용하는 것이 일반 계약을 사용하는 것보다 훨씬 쉽지 않은가?


예를 들면 부동산은 스마트 컨트랙트로 혜택을 받지 않을까? 앨리스는 자신이 집을 가지고 있다는 것을 증명할 수 있다. 밥은 돈을 보내고 그 집을 살 수 있다. 소유권, 신뢰 문제, 기계에 의한 빠른 실행에 대해 질문할 필요가 없고, 판사나 관료, 보험도 필요치 않다. 놀랍다. 그렇지 않은가?


여기에는 두 가지 문제가 있다. 중앙화 된 기구에 의한 스마트 컨트랙트는 신뢰할 필요가 없는 것이 아니다. 당신은 여전히 중앙화 된 기구가 계약을 실행해 줄 것이라고 믿어야 한다. 신뢰할 필요가 없는 것이 핵심 기능이기 때문에 중앙화 된 실행은 사실 말이 되지 않는다. 신뢰할 필요가 없는 스마트 컨트랙트를 만들기 위해서는 실제로 탈중앙화 된 플랫폼이 필요하다.


이것은 두 번째 문제를 야기한다. 탈중앙화 관점에서 스마트 컨트랙트는 오직 디지털 버전과 실제 버전 사이에 명확한 연결이 있을 때만 작동한다. 즉, 디지털 버전의 주택 소유권이 변경될 때마다 실제 버전의 소유권도 변경해야 한다. 디지털 세계는 실제 세계에 대해 알 필요가 있다. 이것을 ‘오라클 문제’라고 한다.


앨리스가 밥에게 집을 넘겨줄 때 스마트 컨트랙트는 그녀가 실제로 집을 넘겨주었다는 것을 알 필요가 있다. 이것을 하기 위한 방법에는 여러 가지가 있지만 모두 본질적으로 같은 문제를 안고 있다. 실제 세계에서의 사건을 증명하기 위해서는 제 3자에 대한 신뢰가 있어야 한다는 점이다.



예를 들어, 그 집은 이더리움 위에서 대체 불가능한 토큰으로 표현될 수 있다. 앨리스는 밥에게 약간의 이더리움을 받고 아토믹 스왑으로 집과 교환해줄 수 있을 것이다. 여기에 문제가 있다. 밥은 이 토큰이 실제로 집을 나타낸다는 것을 믿을 필요가 있다. 집 토큰을 양도하는 것이 실제로 그 집이 합법적으로 밥의 소유물이라는 것을 보증해주는 오라클이 필요하다.  


뿐만 아니라 정부 당국이 토큰은 실제로 집을 나타낸다고 말했다 하더라도, 그 토큰을 도난당하면 어떻게 될까? 그 집은 이제 도둑의 소유인가? 토큰을 잃어버리면 어떻게 되는가? 그 집은 더 이상 팔 수 없는가? 집 토큰을 재발행할 수 있는가? 만약 그렇다면, 누가?


디지털 자산과 실제 자산을 연결하는 것은 어려운 문제가 있다. 과일이든 차든 집이든 적어도 탈중앙화 된 상태에서는 그렇다. 실제 자산은 당신이 속한 법적 관할권에 의해 규제되고, 이는 당신이 만든 스마트 컨트랙트 이외에 무언가를 더 믿고 있다는 것을 의미한다. 이것은 스마트 컨트랙트에서 보증하는 소유권이 반드시 실제 세계에서의 소유를 의미하는 것은 아니며 일반 계약과 같은 신뢰 문제를 겪고 있다는 것을 의미한다. 제 3자를 신뢰하는 스마트 컨트랙트는 신뢰할 필요가 없다는 (스마트 컨트랙트의) 핵심 기능을 제거하는 것이다.


심지어 전자책, 건강 기록, 영화 같은 디지털 자산도 같은 문제가 겪고 있다. 이러한 디지털 자산에 대한 권리는 궁극적으로 다른 권한에 의해 결정되고 오라클은 신뢰할 수 있어야 한다.


이런 관점에서 오라클은 재판관을 하향 평준화시킨 버전이다. 기계를 단독으로 실행하고 실행을 단순화하는 대신 당신이 실제로 얻는 것은 가능한 모든 결과물을 인간 판단의 주관성과 위험성을 함께 암호화하는 데 따른 복잡성이다. 바꿔 말하면 계약을 스마트하게 하기 위해서는 누군가를 여전히 신뢰해야 하면서도 사용하기는 더 복잡한 계약을 해야 하는 것이다.


오라클 없이 작동할 수 있는 유일한 것은 디지털 무기명 상품이다. 본질적으로, 거래의 양측이 모두 디지털일 뿐만 아니라 무기명 상품이어야 한다. 즉, 토큰의 소유권은 스마트 컨트랙트 플랫폼 바깥에 의지하지 않는다. 스마트 컨트랙트가 무기명 상품일 때만 스마트 컨트랙트는 신뢰가 필요 없는 상태가 될 수 있다.



결론


나는 스마트 컨트랙트가 실제보다 더 유용해지기를 바란다. 불행하게도, 우리 인간들이 계약으로 생각하는 많은 것들은 수많은 가정과 명시적으로 진술할 필요가 없는 판례를 들고 온다.


게다가, 튜링 완전성을 활용하는 것은 스마트 컨트랙트를 망치고 의도하지 않은 행동을 유발하기 쉬운 방법이라는 게 밝혀졌다. 우리는 스마트 컨트랙트 플랫폼에 튜링 완전성이 아니라, 튜링 취약성이라는 라벨을 붙여야 한다. 또한 DAO 사건은 암암리에 신뢰받는 계약의 '정신'이 있으며 우리가 알고 있는 것보다 더 분쟁을 해결하는데 도움을 준다는 걸 증명했다.


스마트 컨트랙트는 망치기가 너무 쉽고, 안전하기는 너무 어렵다. 신뢰할 필요가 없는 상태를 만들기 어렵고, 대부분의 일에 (블록체인) 외부 의존성을 갖고 있다. 스마트 컨트랙트가 무신뢰를 유지하는 유일한 공간은 비트코인과 같이 탈중앙화 된 플랫폼에서 디지털 무기명 상품으로 있는 것이다.