이주철 ETRI 책임연구원
블록체인을 바라보는 다른 시점
블록체인 기술은 전자화폐거래에서 거래의 무결성을 보증하는 주체 없이 P2P 형태로 거래될 시 거래 내역의 무결성을 보증하기 위해 개발된 기록유지기술이라고 할 수 있다. 즉 화폐거래의 내역을 저장하되 저장된 내용이 임의로 수정될 수 없도록 해주는 메커니즘을 포함하고 있는 기술이다. 다만 블록체인 기술 자체는 사실 체인형태로 구현되는 블록 데이터베이스 상에 무엇이 저장되던 관계가 없는 요소기술이다. 즉 비트코인으로 대표되는 전자화폐가 블록체인으로 구현되었기 때문에 화폐거래의 내역이 담긴 원장 (ledger) 이 그 대상이 되었을 뿐 사실 저장의 대상에는 제약이 없다고 할 수 있다.
그렇다면 어떠한 성격의 데이터들이 블록체인에 저장되기에 적합할까? 블록체인에 적용되는 P2P 기술이나 블록체인이 제공하는 변조 방지 메커니즘의 성격에 비추어 생각해보면 “제 3자가 볼 수는 있으나 변경되어서는 안 되는 (irreversible) 성격의 데이터” 가 적합한 대상이 될 것이다. 앞서 언급한 거래원장이 가장 일반적인 사례라고 할 수 있다.
사실 여기까지는 블록체인에 저장되는 “데이터”라고 언급을 해 왔지만, 데이터라는 것은 사람의 입장에서 인지할 수 있는 개념일 뿐, 컴퓨터의 입장에서 보면 저장되는 그것이 데이터든 데이터가 아니든 0과 1로 표현되는 비트의 나열일 뿐이다. 이러한 개념에 착안해서 거래원장과 같은 데이터 뿐만 아니라 프로그램 코드 자체를 블록체인에 올리려는 시도가 나타나게 되었다.1
Ethereum
이더리움 (Ethereum) 은 비탈릭 부테린 (Vitalik Buterin) 이 2013년에 제안하고 2015년에 공개한 가상화폐이자 플랫폼이다.2 이더리움은 블록체인에 단순한 데이터 뿐만 아니라 프로그램 바이너리 코드와 같은 보다 광의의 데이터가 올라가 동작할 수 있음을 보여주었다.

[그림 1] 이더리룸 로고
Ethereum 의 특징34
이더리움은 블록체인을 기반으로 하며 그 자체로 또 다른 가상화폐의 기능도 제공하지만 기존의 블록체인 기반의 가상화폐와 다른 큰 차이점은 블록체인 상에서 구동 가능한 컴퓨팅 기능을 제공한다는 점이다. 이더리움은 다음과 같은 특징을 갖는다
- 기존 비트코인이 제공하는 속성/특징을 모두 만족함
- 비트코인은 거래내역이 분산 P2P 구조를 가지는 네트워크에 저장이 되는 가상화폐로 익명성 (Anonymity), 무국경성 (Borderlessness), 탈 중앙성 (Decentralization), 분산 네트워크 (Distributed network), 투명성 (Transparency) 등의 특징을 가지며 이러한 특징들은 이더리움도 모두 만족한다.
- 튜링 완전성 (Turing-Completeness)을 만족하는 프로그래밍 언어의 지원
- 튜링완전성이란 튜링머신이 할 수 있는 일을 실제 내부 동작은 다르더라도 동일하게 수행할 수 있는 머신/언어에 대해 튜링완전성을 만족한다고 정의한다. 보통 쉽게 생각하면 최근의 범용 PC 나 프로그래밍 언어는 튜링완전성을 만족한다고 보면 된다. 어떤 프로그래밍 언어가 튜링완전하려면 조건문과 반복문을 지원할 수 있어야 한다. 원조격 가상화폐인 비트코인의 경우 자체 스크립트 언어를 지원하지만 조건문 만을 지원하기 때문에 튜링완전하지 않다고 할 수 있다. 그렇다면 왜 튜링완전성을 만족하는 프로그래밍 언어가 중요할까? 어떤 언어가 튜링만족성을 지원한다는 의미는 우리가 실생활에서 모델링할 수 있는 거의 모든 상황을 프로그래밍할 수 있다는 의미이기 때문이다. 이것은 이더리움의 또 다른 중요한 특징인 스마트 컨트랙트 (Smart Contract) 가 성립할 수 있는 중요한 조건이기도 하다. 이더리움은 스마트 컨트랙트를 위해서 이러한 튜링완전성을 만족하는 solidity라는 프로그래밍 언어를 지원한다.
- 이더리움 가상머신
- 이더리움은 프로그래밍 가능한 블록체인이다. 이 말은 곧 기존의 비트코인처럼 사전에 정해져있는 트랜잭션만을 처리할 수 있는 것이 아닌, 이더리움 상에서 사용자가 원하는 응용을 프로그램 할 수 있다는 의미이다. 이러한 응용은 가상화폐처리 응용 뿐 아니라 블록체인의 특성을 활용한 다양한 분산 응용까지 활용이 가능하다.
- 이를 위해서 각 이더리움 노드는 EVM (Ethereum Virtual Machine)을 구동하게 된다. EVM 은 자바스크립트나 파이썬 같은 언어를 사용한 응용도 구동시킬 수 있지만, 스마트 컨트랙트의 작성을 위해서는 solidity를 이용해야 한다. solidity로 기술된 스마트 컨트랙트는 EVM 컴파일러를 통해서 바이트 코드로 컴파일되고 이것은 이더리움 클라이언트를 통해서 블록체인 상으로 업로드 되게 된다.
- 어카운트
- 이더리움에서도 비트코인의 지갑과 동일한 개념인 어카운트 (account) 가 존재한다. 대신 이더리움에서는 두가지 종류의 어카운트가 존재하는데, Externally Owned Account (EOA) 와 Contract Account 가 그것들이다. EOA 는 비트코인에서의 지갑과 거의 동일한 역할을 하며 이더리움에서의 가상화폐인 이더 (Ether)를 거래하는데 쓰인다. Contract account 는 뒤의 스마트 컨트랙트 파트에서 추가로 설명한다.
- 이더(Ether) & 개스(Gas)5
- 이더는 이더리움에서 통용되는 가상화폐의 이름이다. 이더는 이더리움의 EVM 환경에서 제공하는 연산기능의 사용료를 지불하는데 쓰인다. 하지만 이더리움에서는 코드실행환경을 제공하는 특징으로 인하여 DOS 공격의 위험이 상존하기 때문에 이더리움에서 제공하는 연산기능의 구매를 바로 이더로 지불할 수 있게 하지 않고 개스라는 새로운 지불 단위를 만들었다. 이 개스는 결국 이더로 지불되는 것이긴 하지만 응용코드의 각 연산기능 별로 개스가격을 차등적으로 매겨놓도록 하였다. 따라서 손쉽게 DOS 공격이 이루어질 수 있는 코드를 실행하려면 천문학적인 개스가 필요하도록 만들어 이더리움에 대한 DOS 공격을 원천 차단하도록 하였다.

[그림 2] 이더리움 개스
Smart Contract
이더리움은 블록체인을 기반으로하여 단순한 가상화폐에서 한걸음 더 나아가 임의의 응용코드를 동작시킬 수 있는 플랫폼으로 만들었다. 이렇게 만든 이유가 무엇인지 한번 고찰해보자. 블록체인 상에서 코드를 구동시켜서 얻는 장점은 과연 무엇일까?
화폐를 기반으로 임의의 동작을 허용하는 환경이라면, 그 임의의 동작은 바로 경제활동을 의미할 것이다. 기본적으로 경제주체간의 경제활동은 거래를 하는 양자 (혹은 다자간의) 계약 (컨트랙트)을 기반으로 하게 된다. 실물 경제환경에서 경제주체간의 계약활동은 항상 그 계약이 지켜지지 못하고 파기될 위험을 수반하게 된다. 이러한 이유 때문에 보험이 존재하고 법적 분쟁이 발생되는 것이다.
하지만 이러한 경제활동의 환경을 이더리움으로 옮겨보면 어떨까? 이더리움에서 컨트랙트는 다름 아닌 코드 및 데이터의 묶음으로 구현이 되며, 이더리움 환경에서 EVM 바이트코드로 컴파일 되어 블록체인의 임의의 주소에 존재하게 된다. 앞에서 튜링완전성 및 튜링완전성을 지원하는 언어에 대해서 언급을 했는데, 실제 다자간의 거래에서 컨트랙트는 임의의 내용으로 성립이 될 수 있다. 이것은 곧 튜링완전성을 만족하는 언어만이 임의의 컨트랙트를 온전히 기술할 수 있다는 의미가 된다. 그렇다면 이더리움 상에서 코드로 구현이 된 컨트랙트는 어떠한 효과를 가질까? 전술했듯이 이더리움 또한 블록체인 상에 구현이 되는 플랫폼이며, 이더리움의 블록체인에는 응용 프로그램의 코드도 올라갈 수 있다고 했다. 따라서 코드로 구현된 컨트랙트도 블록체인 상에 저장이 될 것이고, 블록체인의 특성상 한번 저장된 컨트랙트는 수정하기가 거의 불가능 할 것이다. 또한 이더리움을 사용하기 위해서 사용자는 앞서 언급한 어카운트를 발급받아야 하는데, 이를 종합해 보면 거래 당사자들의 어카운트 및 이 어카운트를 기반으로 코드로 기술된 컨트랙트가 모두 이더리움 블록체인 상에 올라가게 된다. 이것은 곧 이더리움 상에서 일단 한번 맺어진 계약관계는 반드시 지켜지게 된다는 것을 의미하게 된다. 따라서 금전적인 관계에서 채무 불이행 같은 것들은 절대로 일어날 수 없게 되고, 보험이나 법적 강제력이 없어도 안심하고 거래를 할 수 있게 된다.
이더리움에서는 이렇게 이더리움 상에서 코드로 구현된 거래자간의 계약을 스마트 컨트랙트라고 정의하고 있다. 이러한 스마트 컨트랙트의 대표적인 사용예로 다음과 같은 것을 들 수 있다.
스마트 컨트랙트를 이용한 크라우드 펀딩
최근 많이 활성화되어 있는 크라우드 펀딩 같은 경우, 투자자는 대부분 결과물을보지 못한 채 개발사의 설명만 보고 투자여부를 판단해야 한다. 설령 시간이 지난 후 결과물을 제대로 받아보지 못하더라도 많은 경우 투자비가 중/소액 규모이기 때문에 손해를 변제받기 어려워 투자금을 날릴 위험이 상존하고 있는 편이다. 하지만 이러한 크라우드 펀딩을 스마트 컨트랙트를 이용해서 받는다면 이러한 우려는 사라지게 된다. 개발사가 투자를 받기 위해서 펀딩 조건이 만족하지 않는다면 투자금을 다시 회수하는 내용으로 스마트 컨트랙트를 기술하고 투자를 받게 된다면, 투자자는 결과물이 원안대로 나오지 않을 경우 자동으로 투자금을 회수받게 되므로 손실에 대한 걱정을 하지 않아도 된다. 이것은 더불어 개발사로 하여금 개발에 대한 독려의 효과도 가져오게 되므로 양자 모두에게 이득이 된다.
결언
최근 초미의 관심을 받고 있는 비트코인은 블록체인 상에 구현된 하나의 실 예에 불과하다. 비트코인이라는 가상화폐로 분산환경에서 고도의 신뢰성을 제공할 수 있음이 증명된 블록체인 기술은 아직도 무궁무진한 응용 가능성을 내포하고 있으며, 급격히 늘어나는 다수의 개발 참여자들로 인해 기존에는 상상하기 어려웠던 다양한 적용 사례 들이 개발되고 있다. 혹자는 블록체인이 기존 인터넷 패러다임의 변경을 가져올 만한 혁신적인 기술이라고 하는 사람도 있으며 이것을 100% 그대로 받아들이기는 어렵더라도 블록체인이 가지고 있는 기본적 특성은 확실히 종래의 기술과는 차별되는 장점이 있는 것만은 인정해야 할 것이다. 이에 블록체인 기술에 대한 지속적인 관심을 유지해야 할 것이며 이 기술을 활용하여 어떤 새로운 가치를 창출해 낼 수 있는 지에 대한 연구가 계속되어야 할 것이다.
- 이더리움 (Ethereum, https://www.ethereum.org/) ??
- 가상화폐 비트코인과 이더리움, http://webzine.etri.re.kr/20170811/sub04.html ??
- 이더리움 개론 (Ethereum Introduction), http://www.seunghwanhan.com/2015/06/ethereum-introduction3.html ??
- Ethereum homestead documentation, http://www.ethdocs.org/en/latest/ ??
- ETRI 전자통신동향분석 제 32권 제 1호 2017년 2월 “비트코인 후 블록체인” ??
