Blockchain 시리즈 – Smart Contract

비트코인 가격 (대)폭락으로 코인에 대한 일반 대중의 관심은 많이 시들해졌지만, 여전히 “차세대” 코인이라는 이더리움 (Ethereum) 류의 가상화폐에는 관심이 남아있는 걸 종종 보게 된다.

“앞으로 기술이 더 발전하면 나아지지 않을까?”

라는 뒷맛을 남기는 코멘트에는 언제나 이더리움이 등장하더라. 이더리움이 Smart Contract를 상징하는 대표 코인이라는 점을 미뤄볼 때, 슬슬 블록체인 Hype이 한풀 꺾이고, 요즘은 Smart Contract가 대세로 자리잡고 있는 것 같다.

(Source: SmartContract)

 

Smart Contract? 사실은 Dumb contract아닌가?

잠깐, 그전에 비트코인이 Smart Contract를 지원해주지 못하는 블록체인이었는지 확인하고 넘어가자. 아니 그 전에, Smart Contract라는게 뭔지, 정말로 Smart한 부분이 있어서 그런 표현을 쓰는건지 확인해보고 넘어가자.

Smart Contract란 블록체인 시리즈 초반부터 강조했던 “중간 매개체”가 없는 거래를 말한다. 엥? 그럼 비트코인도 같은 종류의 Smart Contract 지원하는거 아니냐고 반문할 수 있을 것이다. (실제로 Bitcoin의 Script는 Stacking 기반의 Smart contract 시스템 중의 초기 버젼이다.)

Bitcoin과 Ethereum의 가장 큰 차이점은 단순한 계약 (x원 송금, y 상품 수령)을 위한 Smart Contract인지, 좀 더 복잡한 계약을 위한 구성을 해 놨는지의 차이, 이걸 기록 & 처리하는 방식을 직선형 vs. 순환형으로 해 놓았는지다. 혹시나 Turing Complete이라는 표현을 들어봤는지 모르겠는데, 시스템의 계산이 자기 완결성을 갖는 구조 (고교 수학 개념을 빌리면 닫힌 집합)를 말하고, Ethereum의 순환형 기록 & 처리 방식이 처음과 끝을 연결하는 자기 완결성을 갖는 Turing Complete 구조를 갖는다.

(참고로 이미지 인식에 쓰는 CNN에서 GAN 시스템을 Turing Complete 구조를 갖는 시스템이라고 부르기도 한다.)

블록체인 작동 방식을 이해하고 보면 결국 어느 코인을 쓰건 Smart Contract를 지원하고 있고, Ethereum 같은 “차세대” 코인들은 거래를 기록 & 처리하는 구조가 약간 달라졌을 뿐, 본질적인 차이는 없다는 것을 알 수 있다.

왜 Dumb contract냐고? 단순한 계약밖에 못 처리하기 때문에? 복잡한 계약을 처리할 수 있다는 Ethereum은 진정한 “Smart” Contract 맞는거 아니냐고?

어떤 계약이 복잡하다는 것은 Uncertainty가 많다, 고려해야하는 경우의 수가 많다는 뜻이다. 금융시장에는 단순한 주식, 채권 거래 말고, 그런 기초 금융상품들이 특정 가격 조합일 때만 가치를 갖는 파생상품이라는 것들이 있고, 이런 파생 상품도 수많은 조합이 나오면서 거래 내용이 굉장히 복잡해질 수 있다. 비슷한 맥락의 복잡한 계약을 처리할 수 있다고 주장하는 것이 바로 Smart Contract의 핵심이다.

 

Smart Contract이 그렇게 어렵나?

세상의 어떤 실물 계산 시스템도 완벽하게 Turing Complete을 만족시키지 못한다. 단순 사칙 연산하는 계산기는 가능한거 아니냐고? 계산기의 메모리 사이즈를 넘어서는 숫자간 계산을 입력해보시라. 계산 결과에 에러가 나오면서 자기 완결성을 유지하는데 실패한다.

자, 이제 고려해야하는 경우의 수가 그렇게 많다는 Smart Contract들을 처리해준다는 Ethereum을 생각해보자. 단순 사칙연산도 10^n으로 큰 값이 되면 메모리가 작아서 문제가 되는 경우가 있는데, 복잡한 계약을 모두 Ethereum으로 처리할 수 있다고 확신하는건 도대체 무슨 근거에서일까? 예를 들어 Turing Complete으로 Smart Contract을 기록 & 처리하는 시스템을 카드 결제 승인 & 처리하는데 활용하겠다는 것은, 내가 짠 프로그램이 그 어떤 환경에서도 버그가 생기지 않고, 업데이트를 할 필요도 없고, 처리 속도도 굉장히 빠르다는 주장과 같다. (VISA 카드는 1,500만번 계산하는 동안 Ethereum은 15번…)

Ethereum의 (느린) 처리 속도에 대한 언급은 이전 글에서 했으니 패스하고, 복잡한 계약을 처리하는 프로그램이 bug-free라고 쉽게 단언할 수 있는 개발자 분 나와보시라. Bitcoin 방식의 단순 거래 기록 stack도, 소프트웨어적인 이슈가 아니더라도 하드웨어적으로 문제가 있을 가능성이 충분히 있는 판국인데, 더 복잡한 계약들을 처리하면서 Bug-free라고?

투자 건으로 변호사들을 만나보면, 경력, 실력, 내공에 따라 계약서의 급이 휙휙 달라지고, 완벽한 계약서 하나 쓰려면 오랜 세월의 내공이 필요한 걸 법알못인 필자도 느낄 수 있는데, 그런 복잡한 계약을 정리할 수 있다고 주장하는 컴퓨터 프로그램에 대한 신뢰도가 높아지려면 어떤 방식의 “머신러닝” or “인공지능”을 활용해야할까?

Bitcoin은 차라리 Turing Complete을 포기했기 때문에 쉽게 어떤 계약이었고, 어떤 문제가 있었는지 찾아볼 수 있다. 그러나 Ethereum은 외부인이 문제를 이해하고 조사할 수 있는 접근권이 Turing Complete 때문에 우선 배제된다. 하나하나 Stack 되어 있는 정보를 추적해서 누가 잘못된 정보를 입력했는지 볼 수 있도록 풀어놓은 시스템이 아니라, 처음과 끝이 일치하면 OK가 떨어지도록 해 놨기 때문에 외부인이 중간 확인을 하기가 어렵기 때문이다. 결국, Smart Contract을 쓰고 있는 당사자가 모든 위험 부담을 다 감수해야한다. 차라리 중간 매개체가 있어서 잘못될 가능성들을 잘 설명해주는 편이 더 좋지 않나?

(왠지 모든 보안 문제를 사용자에게 전가하는 한국의 금융기관들 같은 시스템이다….)

 

개발자들의 망상: 코드는 법이다 (Code is Law)

Ethereum의 Smart Contract 처리방식은 당사자가 모든 위험을 다 부담하는 방식이기 때문에, 제 3자가 절대 개입할 수 없다. 말을 바꾸면, 니가 코드 잘 못 쳤으면 다 니 책임이다는 뜻이다.

Decentralized Autonomous Organization (DAO)라는 Ethereum 투자 펀드가 만들어졌다. (이름에서 뽕맞고 헤롱헤롱하며 권위에 저항하는 집시 분위기의 캘리포니아와 자동화에 광적으로 집착하는 공학도의 만남이 느껴지지 않나? ㅋㅋ) 개인들에게서 Crowd funding으로 총 1억 5천만 달러에 육박하는 Ethereum 투자를 받은 DAO 펀드는 보안 미비와 해커들의 공격 때문에 결국 파산하게 된다. 근데, 처음에는 보안 설비 문제로 인한 해커들의 공격인줄 알았는데, 다시 보니 Smart Contract 기록 방식을 악용하는 사람들의 장난질 때문이었다.

결국 Ethereum은 “Code is Law” 정책을 포기하고 DAO 펀드를 청산하게 된다. 금융시장 용어로 정리하면, Smart Contract을 만들어내던 개발자가 시스템을 악용할 수 있는 여지를 남겨놓은 구조를 만들었고, DAO 펀드 투자자들이 내용도 이해못하고 묻지마 투자를 했기 때문에 대규모 손실이 발생했고, Ethereum이 직접 구제금융을 해 준 것과 같다.

(금융시장 개방할 수 있는 역량이 안 된다는 경고를 무시하고 WTO 가입을 위해서 억지로 시장 개방한 후, 외국의 투기 자금 때문에 자산 가격 일시 폭등이 일어나는 착시 효과에 속아서 저 이자율 단기채로 고 이자율 장기채를 갚고 Rolling 전략을 취했던 한국의 수준낮은 금융인력 덕분에 우리나라는 1997년 12월에 IMF에 구제금융을 신청하러 갔었다.)

이 사건 이후로 Ethereum 관련 개발자들은 Turing Complete에 대한 집착을 버렸다.  Turing Complete과 보안을 공존시키는 것이 매우 어렵다는 것을 깨달은 것이다.

(한국 금융시장도 1990년대 후반부터 복잡한 금융 상품을 이해하고 시스템 설계를 제대로 할 수 있는 인력을 뽑아야 한다는 사실을 인지하기 시작했다. 인지하고 실행으로 옮긴것같지는 않지만…)

 

Oracle Problem

별로 Smart 해 보이지는 않지만, 어쨌건 Smart Contract를 이용해서 단순한 100원짜리 상품말고 집 같은 대형 재산을 거래한다고 생각해보자. 비트코인 1,000개를 내고 강남에 있는 집을 한 채 구입했다고 하자. 보통은 집 판매자가 실제 집 소유주인지 확인하기 위해서 등기사항을 확인하고, 부동산 중개인이 여러가지 관련 서류들을 제공해주는 작업, 집 구매 후 신규 등기, 매각 후 양도소득세 신고, 거주지 이전 등등의 여러가지 작업을 다양한 종류의 “중간 매개체”와 진행하게 된다.

만약 이런 중간 매개체 없이 코인 1,000개로 집을 산다고 했을 때, 어떻게 계약의 확실성을 담보할 수 있을까? 코인 1,000개에 집의 로고를 그려놓은들 지금 거래되는 코인 1,000개가 집이라는 걸 확실하게 보증할 수 없다. 블록체인에서는 이런 문제를 Oracle problem이라고 부른다. 정말 그 코인이 집과 동등한 가치를 가진다는, 전자 상품에 대한 권리와 실제 상품에 대한 권리가 동등한 권리라는 담보가 없기 때문에, Oracle 이 아닌 이상 누가 알겠냐는 것이다.

이런 문제가 현실 집 거래에서도 나타나는 것 아니냐고? 사기꾼들이 돈 받고 도망가면 어떻게 잡냐, 중고나라 사기꾼들이 득시글한 것도 현실 화폐나 가상화폐가 모두 확증 담보가 불가능하다는 공통의 문제점 때문에 생기는 것 아니냐고 반문할 수 있다. 사소한 여러가지 차이가 있지만, 가장 큰 차이는 Central authority의 유무다. 정부, 경찰, 사법, 중간상인 등의 중간 매개체를 거칠 수 있고, 권리 침해에 대한 피해보상을 처리해주는 기관이 현실에는 엄연히 존재하지만, 가상화폐에는 존재하지 않는다. 애시당초 “Decentralized”가 핵심이었기 때문이다.

가상화폐 시장에서 사기꾼을 쫓아내기 위해서는 어쩔 수 없이 Central authority가 필요하다. 그런데, Central authority가 필요한 화폐는 이미 수백년, 수천년간 인류에게 잘 쓰이고 있다. Then, what good do you find in crypto currencies?

 

나가며 – 인지적 구두쇠 (Cognitive miser)

머신러닝 Hype, 딥러닝 Hype, 인공지능 Hype에 이어서, 블록체인 Hype, ICO Hype이 생기더니, 요즘은 Smart Contract Hype이 시장을 휩쓸고 있다. 그동안 데이터 사이언스는 통계학을 다른 방식으로 쓰는거라는 일관된 주장을 했던 것과 같은 맥락으로, Crypto currency는 결국 게임 머니에 불과하고, 블록체인은 Torrent 방식의 정보 저장 & 전달 체계에 지나지 않는다는 사실을 강조하고 싶다.

용어가 Hot하다는 이유로 잘 모르지만 입에 올리면서 자기가 Hip한 인간이라는 걸 강조하려는 사람도 많고, 잘 몰라서 괜히 움츠려들고 도망가는 사람도 많다. 또 버블을 만들어내서 “한탕”하자는 투기꾼들도 모여들고, 잘 모르지만 어쨌건 트렌드니까 이걸로 사업하겠다는 사람들도 부지기수다. 어떻게 하면 제대로 이해하고, 안 속으면서 살 수 있냐고? 묻기 전에 직접 공부하시는건 어떨까?

가능한 생각을 적게해서 신속하게 판단하려는 사람들을 ‘인지적 구두쇠’ (Cognitive miser)라고 한단다. 얼마나 게을렀으면 몸 움직이는 건 고사하고 생각도 안 하려고 하는 걸까? ICO하는 회사들의 백서 내용은 하나도 이해 못하고, 그냥 거기에 학벌 좋은 사람이 있다니까, 사람 얼굴 사진과 학벌만 믿고 투자하겠다는 ICO 매니악들 (or 벤쳐 캐피탈들)이 오버랩된다. 인지적 구두쇠의 투자는 도전도, 모험도 아니고 도박일 뿐이다. 뱅킹 시절, 사회 초년병이었던 필자의 눈에도 Super Mega Ultra 인지적 구두쇠로 보였던 이사님은 오래 못 버티고 쫓겨나시더라. ICO 매니악들이 판치는 한국 시장과 4차산업의 관계는 어떻게 될까?

루비니 NYU 교수가 이야기했듯이, 블록체인은 인류 역사에서 가장 과장된 쓸모없는 기술이었다.

 

Similar Posts