이더리움 (Ethereum)

by digipine posted Feb 08, 2018
?

Shortcut

PrevPrev Article

NextNext Article

ESCClose

Larger Font Smaller Font Up Down Go comment Print

비트코인의 블록체인에서 파생되어 ‘블록체인 2.0’을 표방하고 나온 3가지의 대표적인 블록체인 중 하 나이다. 이 세가지는 리플, 비트쉐어(Bitshares), 이더리움인데, 이 중 이더리움은 ‘플랫폼’ 형태의 블 록체인으로 상상가능한 모든 응용프로그램의 개발을 지원한다.

 

튜링완전성과 보안 (Turing-Completeness and Security)

튜링완전언어(Turing Complete Language)란 일반적으로 사용하는 C나 JAVA와 같이 반복문 (Looping code)를 사용할 수 있고 그 단위가 잘게 분할되어 있어 다양한 프로그램을 효율적으로 개발 할 수 있는 언어를 통칭한다. 특정한 목적을 위해 개발된 프로그램의 경우, 굳이 튜링완전언어를 사용해 서 불확실성을 높일 필요가 없기 때문에 일부 제한된 언어(튜링완전하지 않은 언어)만을 사용하도록 설 계한다.

 

비트코인은 내부적으로 스크립트 언어를 이용해 이체를 처리하는데, 의도적으로 30여 가지의 제한된 명령어만 지원하기 때문에 다양한 수준의 응용이 어려웠다. 이러한 제한성을 극복하고자 이더리움은 처 음부터 튜링완전언어를 스마트컨트랙트(Smart Contract) 작성용 언어로 선택하였으며, Python과 유사한 구조의 Serpent, C++과 유사한 Solidity, Lisp과 유사한 LLL 등의 튜링완전언어를 통해 스마 트컨트랙트 코딩을 지원한다. 이를 통해 일반적으로 블록체인 외부에서 구현하게 되는 많은 종류의 프 로그램을 이더리움 블록체인 위에 애플리케이션으로 구현할 수 있으나, 그 만큼 경우의 수 또한 늘어나 기 때문에 보안적으로 불완전하다는 문제도 제기되고 있다.

 

이더리움 블록체인 위에서, 이미 간단한 스마트 컨트랙트는 물론 스마트 컨트랙트를 기반으로 설계한 ‘탈중앙화자율조직(Decentralized Autonomous Organization)’인 어거(Augur)나 다오(The DAO)도 개발이 완료되어 서비스된 바 있다. 단순히 이체가 언제 어떻게 누구에게 이루어지는지를 정의 하는 것에 더해서, 블록체인에 기록할 수 있는 모든 것을 이용하여 일종의 ‘조직’ 또는 ‘사업체’를 구현할 정도로 높은 수준의 구현을 지원한다.

 

물론 이더리움이 실제 구상되고 세상에 나온 것이 불과 2015년 7월경(Frontier Version)이기 때문에, 부족한 점이 많고 아직도 수많은 주변 프로그램들이 개발 중에 있다. 이더리움의 VM인 EVM이나 지갑 프로그램도 코드정합성(Correctness in code execution)이 증명되지 못했고 그로 인한 해킹사고도 계속되고 있다. 이것은 현재 세상에 나온 ‘퍼블릭 블록체인 파생프로그램(Public Blockchain based Program)’들이 공통적으로 겪고 있는 현상인데, 여타의 프로그램들이 그러하였듯 전문기관들과 시장 의 시간에 걸친 검증이 필요하다.

 

 

스마트 컨트랙트 (Smart Contract)

스마트 컨트랙트를 한국어로 직역하면 ‘똑똑한 계약’이다. 거래 계약을 작성할 때는 계약 대상물과 계약 주체 그리고 거래 장소·방법·시간·조건 등을 정해둔다. 그러나 계약서를 작성한 뒤에도 상대가 계약을 이행하지 않을 가능성은 여전히 남는다. 이런 문제가 불거지면 법적 분쟁이나 중재인 선임 등 절차로 이 어진다. 그러나 애초에 이런 계약이 컴퓨터 코드로 짜여 있다면 어떨까? 정확히 지정된 시간에 지정된 조건이 완료되면 지정된 물권이 지정된 상대에게 이동하도록 만들 수 있을 것이다.

 

스마트 컨트랙트의 또 다른 이름은 ‘자기강제적 언어(Self-Enforcing Language)’인데, 굳이 제3자 나 법집행관(Law Enforcement)이 개입하지 않아도 컴퓨터가 계약을 강제로 실행할 수 있기 때문이 다. 스마트 컨트랙트가 잘 짜여 있다면, 전혀 모르는 사람과도 익명으로 거래를 하는 것이 가능하다. 상 대나 강제력을 지닌 제3자를 신뢰하는 것이 아니라, 그냥 짜여진 코드를 믿으면 되기 때문이다. 이렇게 스마트 컨트랙트는 무신뢰거래를 가능하게 하며, 특히 거래 당사자가 여러명일 때 강력한 힘을 발휘한다.

 

은행의 경우, 다른 은행과 공동으로 장부를 관리하고자 할 때, 스마트 컨트랙트를 적절히 짜두면 상대 은 행의 신뢰에 의존할 필요가 없을 것이고 계속 독립성을 유지한 채로 블록체인에서 제공하는 효과와 효율 성을 누릴 수 있을 것이다. 

 

 

탈중앙화된 어플리케이션 (Decentralized App, DApp) 

위의 튜링완전언어를 이용한 스마트 컨트랙트를 통해, 직접 어플리케이션을 만들어 볼 수 있다. 사실상 일반적인 프로그래밍으로 가능한 모든 어플리케이션을 만들 수 있는 셈인데, 이를 통해 여러가지의 실 험이 진행되고 있다. 이를 통해 블록체인이 단순히 금액을 이체하는 것 뿐 아니라, 이체 대상물, 이체시 기, 이체권한, 이체금액 및 방법 등까지 복잡하고 정교하게 설계할 수 있게 되었다. 또한 단순 이체뿐 아 니라, 권한의 이양, 투표, 파일공유 등 온라인에서 실행 가능한 수많은 행위가 블록체인 위에서도 구현 가능해졌다. 현재 대표적으로 서비스되었거나 서비스 준비중인 ‘탈중앙화 어플리케이션(DApp)’39들 은 200여개에 이른다. The DAO는 이미 2천여억원의 자금을 모집한 크라우드 펀딩 및 기업운영 플랫 폼이고(현재는 기능중지), AUGUR는 예측을 주제로 파생상품을 다루는 시장, SWARM은 파일공유 플 랫폼, AKSHA는 검열불가능한 SNS서비스, Mango는 탈중앙화된 코드공유플랫폼(일종의 Github)이 다. 이러한 기능들을 통해, 단순한 계약이 아니라 보다 복잡하고 필요에 맞춘 기능의 실현이 가능하다.

 

이더리움 블록체인의 활용

이더리움 블록체인을 이용하는 많은 기업이 높이 평가하는 것 중 하나는 이더리움에서 자체적으로 ‘스 마트 컨트랙트’를 지원하고 또 이를 쉽게 적용할 수 있다는 점이다. 누구나 이더리움 블록체인 위에서 많 은 실험을 진행해볼 수 있다. 일례로, 비상장 기업이 블록체인에 주주명부와 주식 수를 기록하고 주주투 표를 블록체인에서 진행하고자 하는 경우, 굳이 새로운 전용프로그램을 개발할 것 없이 이더리움 블록 체인 위에서 스마트 컨트랙트를 짜서 바로 실행할 수 있다. 그에 더해서 금융 관련 어플리케이션도 스마 트 컨트랙트를 통해 작성할 수 있다. 이더리움은 기업들이 전용 블록체인을 개발하기 전에 개념을 테스 트하는 용도로 적극 활용될 수 있을 것이다. 

 

이더리움 블록체인의 한계

튜링완전성이 가져온 보안불완전성 (Security-Incompleteness due to Turing-Completeness)

튜링완전성은 코드의 자유를 보장한다. 하지만 보안의 완전성을 보장하지는 못한다. 일반적으로 보안은 가능한 경우의 수를 줄이고, 예상되는 공격경로를 차단하거나 줄임으로써 강화되는데, 무제한적인 코딩 의 자유는 이 부면에서 매우 취약하다. 실제로 이러한 튜링완전성을 타깃으로한 공격이 여러번 나타났 고, 이더리움의 탈중앙화 어플리케이션들은 속수무책으로 당하는 모습을 보여왔다. 이러한 보안성이 명 확이 유지되지 않고서는 그 어떤 금융서비스도 이더리움 네트워크에서 직접적으로 실행되기 어려울 것 이다.

 

스마트 컨트랙트 (Smart Contract)

신규 소프트웨어는 코드가 짜인 대로 실행되는지 검증하는 과정이 필수적이다. 스마트 컨트랙트도 마찬 가지다. 이 문제를 푸는 가장 이상적인 방법은 전문기업이 다양한 용도에 맞는 ‘표준 컨트랙트(Con- tract Standardization)’를 개발하고, 이를 복수의 외부 감사기관이 정밀 검사와 필드테스트로 검증해 실제로 상용화할 수 있는 수준으로 발전시키는 것이다.

이더리움의 경우 아직 이러한 코드정합성(Consistent Execution) 검증을 위한 툴이나 과정이 제대 로 마련되어 있지 않다. 이러한 코드 정합성은 자동으로 그리고 수학적으로 검증이 되어야 하는데, 이 를 위해 이더리움 고급언어 솔리디티(Solidity)의 리드개발자인 크리스찬 레잇와이즈너(Christian Reitwiessner)가 ‘솔리디티’에 프로그램 검증 플랫폼인 ‘WHY3’을 통합시키는 작업을 진행하고 있다. 하지만 Solidity라는 프로그래밍 언어자체가 시장에 나온지 얼마되지 않았고, 개발툴인 EVM도 제대로 된 검증과정을 거친 바가 없다. 현재의 스마트 컨트랙트 방식을 그대로 따라서 작성하는 것은 보안적으 로 위험할 수 있다.