왜 블록체인을 사용해야하나?

+부록 스마트 컨트랙트는 과연 스마트한가?

우리는 블록체인의 등장부터 블록체인에서의 사례, 그리고 블록체인이 산업에 적용 될 수 있는지 알아보았다. 여전히 블록체인 산업은 발전을 하기 위해 노력 중이고 점차 여러 관점으로 접근을 하여 성장이 이루어지고 있다. 블록체인을 모르는 일반적인 접근에서는 이미 망한 산업이 아니냐고 이야기를 한다. 그러나 블록체인 기술은 다듬어 지고 있는 원석과도 같다. (더욱 개선된 아이디어로 개발이 이루어지고 있다.)

이번 글에서는 블록체인이 새로운 플랫폼으로 등장하게 된 계기가 된 스마트 컨트랙트에 대해 이야기 해보려 한다. 과연 이 스마트 컨트랙트는 무엇이고, 어디에 사용되며, 정말 스마트(?) 한지 알아보자.


지난 글

1편. 블록체인은 왜 탄생했고 뜨거운 감자가 되었나?
2편. 블록체인은 어디에 사용되고 있을까?
3편. 블록체인을 꼭 사용해야하나요?

스마트 컨트랙트란?

스마트 컨트랙트는 이더리움이라는 블록체인 프로젝트가 등장하고 많은 관심을 받게 되었다. 그럼 이 스마트 컨트랙트 우리말로 ‘똑똑한 계약’은 무엇일까?

스마트 컨트랙트는 블록체인에서 갑자기 생겨난 개념이 아니다. 스마트 컨트랙트는 우리 일상에서 자주 볼 수 있다. 최근에 볼 수 있는 ‘ㅇㅇ로 로그인 하기’가 대표적인 예라고 볼 수 있다.

해당 아이디로 로그인을 클릭을 하면 이에 대한 동의를 체크하게 되고 사용하고 있던 플랫폼의 개인 정보를 다른 사이트에서 그대로 가져와 사용할 수 있게 된다. 이처럼 스마트 컨트랙트는 특정한 조건에 도달하게 되면 자동적으로 실행이 되는 것을 의미한다. 이 개념은 1994년 닉 자보(Nick Szabo)에 의해 처음 제시가 되었다. 그가 제시한 스마트 컨트랙트의 조건은 다음과 같다.

1. 관측 가능성(Observability)
2.
검증 가능성(Verifiability)
3.
사생활 보호(Privity)
4.
강제 가능성(Enforceability)

그가 제시한 방법을 극대화하여 이용한 것이 바로 이더리움 블록체인에서의 스마트 컨트랙트이다. 스마트 컨트랙트의 장점은 조건이 충족이 되면 바로 이행이 되기 때문에 빠르고 Realtime에 가깝다. 또한, 사람에 의해 실수하는 부분이 없으므로 정확도가 높아진다. 이는 중개자 없이 이행이 될 수 있고, 불필요한 중개자가 사라지니 비용도 자연스럽게 줄어드는 장점을 지니고 있다.

스마트 컨트랙트의 활용

스마트 컨트랙트의 초기 버전은 불법복제를 막는 DRM과 같은 방법이 있다. DRM의 경우 불법복제를 막기 위해 계약 위반 시 강제적인 조치를 통해 범죄를 막는 방법이다. 가령 결제를 할부로 진행하여 할부금을 지불해야 하는데 할부금을 갚지 못하면 전자 제품의 경우 Kill Switch를 작동하여 사용하지 못하게 막는 것 또한 스마트 컨트랙트라고 볼 수 있다. (IT 개발 외주는 알 것이다. 돈을 안주고 부려먹으려는 경우가 많아 심어 놓기도 한다.)

스마트 컨트랙트를 이용하는 방법은 예시를 통해 알아보자.

영화를 보고 싶어서 Netflix를 이용하려고 한다. 이 때 Netflix에서는 1시간 스트리밍 이용권을 판매하고 있어 정해진 영화를 부분적으로 볼 수 있다고 하자. 사용자는 정해진 금액을 입금하면 스마트 컨트랙트에 의해 영화 1시간 이용권이 주어지고 그만큼 시청을 하면 된다.

영화 뿐만 아니라 전자 장비를 대여를 할 때에도 보증금처럼 금액을 먼저 지불하고 나중에 사용한 시간만큼만 제하고 다시 돌려받을 수 있다.

이처럼 스마트 컨트랙트는 활용되고 활용될 수 있는 곳이 많다.

블록체인에서의 스마트 컨트랙트

블록체인에서의 스마트 컨트랙트는 이더리움이 가장 먼저 사용했다고 사람들은 알고 있지만 사실 비트코인에서도 비슷한 Script라는 것이 있다. 단지 비트코인과 이더리움의 스마트 컨트랙트 차이는 튜링 완전성이라 볼 수 있다. 튜링완전이란 자신이 원하는 것을 코드로 만들 수 있다는 것을 의미한다. 이더리움은 가능하고 비트코인은 튜링 완전하지 않다.(또한 비트코인은 아주 작은 스크립트 정도로 작성가능하기에 없는 것과 같다고 이야기들을 한다) 기업형 블록체인인 IBM의 하이퍼렛져의 경우 Chain-code 라는 스마트 컨트랙트를 지원하고 있다.

스마트 컨트랙트는 스마트(Smart)한가?

스마트 컨트랙트에 대해 많이 알아보았다.(이 정도면 충분하다고 생각한다) 그렇다면 이 스.마.트. 컨트랙트는 과연 똑똑한가에 대해 알아보자. 
(4차 산업혁명이라는 단어 아래에 스마트라는 단어를 너무 많이 쓰고있다…)

일단 앞에서 이야기 했던 활용의 다른 예시를 보면서 이야기 해보자.

‘내일 날씨가 좋으면 알람을 8시에 울려줘’라는 계약을 내걸었다고 하자. 계약을 그냥 보더라도 모호한 부분이 존재한다. 바로 ‘날씨가 좋으면’이라는 부분이다. 사람마다 좋다는 의미가 다르기 때문에 이는 합의를 이끌기 어렵다고 볼 수 있다. 객관적인 조건으로 변경하여 해결할 수 있지만, 이 이외에도 많은 조건을 모두 만족시키는 것은 어렵다. 그렇기 때문에 스마트 컨트랙트는 무조건 적용하기는 힘들다.

또한, 외부에서 작동하는 업무를 블록체인의 스마트 컨트랙트로 다루는 것 또한 쉬운 문제가 아니다. 이는 지난 글에서 이야기했던 오라클 문제와도 관련이 있다.

스마트 컨트랙트는 하드(Hard)하다

스마트 컨트랙트는 서점의 책들을 보면 쉽다고 이야기 하지만 사실은 쉽지 않다. 스마트 컨트랙트는 사실 스마트 하지 않다. 단지 스마트라는 단어 때문에 더욱 지능적으로 보이는 것이다. 좋은 계약은 어려운 환경에서도 조작(Control)이 가능해야 한다. 하지만 코드(Code)로만 작성이 되어있는 스마트 컨트랙트에서 복잡한 법률 문제 등을 다루기는 매우 어렵다. 또한 계약이라는 것은 본래 내용이 복잡하고 길어질수록 issue가 많아진다. 이를 코드로 구현하는 것은 보안의 문제로 이어지게 된다. 여기 공감이 가는 만화가 있어서 가져와 보았다.

우리는 보안에 대해서 잘 인지를 하지 못한다. 그러나 보안은 프로그램을 만드는 입장에서 매우 중요한 부분이다. 이러한 문제를 스마트 컨트랙트로 보여준 사건은 크게 두 가지가 있다. 바로 DAO 사태와 최근의 FOMO3D 스캠사건이다.

DAO 사태

이더리움에서는 ‘Code is law’라는 인식을 가지고 있었다. 그러나 독일의 Slock.it이 ICO를 진행할 당시 코드에 구멍이 있었고, 이를 인지한 해커들은 해킹을 자행했다. 이로 인해 막대한 이더리움이 탈취당했고, 이더리움 진영에서는 하드포크를 하여 당시 사태를 해결하였다. 해결을 했다고 하지만 이 때 의견 충돌로 인하여 이더리움 클래식이 만들어지게 되었다. (이는 조금이라도 블록체인을 공부하면 많이 다루고 있다. 검색해서 보자)

FOMO 3D

FOMO 3D가 처음 등장하였을 때 사람들은 매우 궁금해했다. 대놓고 SCAM!!이라고 하는 Dapp이 몇이나 될까 싶고, FOMO 3D를 해보면 알겠지만 Winner takes all 과 같은 느낌을 주기 때문에 다단계 느낌이 났다. 실제로 스마트 컨트랙트의 취약점을 이용해 우승자가 등장하였고, 이후에는 바로 사용자가 급격히 줄어들었다. 이에 대한 이야기는 내가 활동하고 있는 스터디인 ‘Tokeonomy’에서 확인 가능하다.(진형님 짱짱맨)

이처럼 튜링 완전한 스마트 컨트랙트에서의 보안은 컴퓨터 프로그램에서 버그를 찾는 것과 같다. 이를 간과할 경우 해커의 좋은 먹이감이 되기 쉽다. 얼마나 이슈가 되었으면, 비탈릭이 스마트 컨트랙트 대신 더 지루한 용어를 사용하면 어떤지 이야기 했을까.

https://twitter.com/VitalikButerin

결론

스마트 컨트랙트에 대해서 자세하지는 않지만 개념부터 스마트 컨트랙트의 장단점까지 알아보았다. 블록체인이 발전함에 따라 스마트 컨트랙트의 보안 문제도 같이 발전하고 있다. 국내만 하더라도 스마트 컨트랙트 AUDITING을 하는 회사들이 등장하고 있다. 또한, 블록체인이 가지고 있는 특징 중에 변경할 수 없는 이슈와 접목되어 과연 스마트 컨트랙트도 업그레이드가 가능한지에 대한 문제를 다루는 곳도 있다. 스마트 컨트랙트의 여러 문제들이 하나하나 해결이 된다면 우리는 좀 더 편리한 세상에서 지낼 수 있지 않을까?

다음 글에서는 블록체인의 최근 트랜드인 확장성의 문제에 대해 여러 프로젝트들은 어떻게 접근하고 있는지 알아보고자 한다.