brunch

You can make anything
by writing

C.S.Lewis

by 김도윤 Oct 15. 2018

스마트 컨트랙트의 진실

지미 송(Jimmy Song)

'비트코인 맥시멀리스트' 지미 송(Jimmy Song)의 The Truth about Smart Contracts 글을 한국어로 정리해보았습니다. 다만 이해(또는 해석)하지 못했거나, 문장과 어울리는 표현이 떠오르지 않는 부분은 자신 있게 틀릴 위험을 감수하고 임의로 작성하였기에 원작자의 의도와 약간 다를 수 있습니다.


원문 : Jimmy Song. The Truth about Smart Contracts



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


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

• 자동적으로, 신뢰할 필요 없이, 공정하게 계약 집행
• 계약 생성, 이행, 집행에 있어 제 3자 제거
• (암시적으로) 변호사 제거


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


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


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



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


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



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


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



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


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



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


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



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


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


To be clear, smart contracts existed even before Bitcoin, I just like the cartoon


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



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


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


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


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



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


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


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


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


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


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



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



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


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


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


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


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


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



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


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


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


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


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


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



결론


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


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


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

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