Learn the World
[문과취향 쉬운 블록체인] 이더리움 스마트 컨트랙트 쉽게 이해하기 본문
이더리움은 비트코인 이후 등장한 2세대 암호화폐입니다. 이더리움은 비트코인의 기본 개념을 계승하지만 지급, 결제 기능의 화폐보다는 생태계를 구축하는 플랫폼에 가깝습니다. 그리고 이더리움 플랫폼을 원할하게 움직이게 하고 지탱할수 있도록 생태계를 보존하기 위해 이더리움(ETH)를 암호화폐로 사용합니다.
비트코인과 이더리움을 비교 하였을 때 가장 큰 차이점은 바로 스마트컨트랙트(Smart Contract)입니다. 스마트컨트랙트란 입력 조건이 만족하였을 때 계약이 실행되도록 코딩해 놓은 것을 의미합니다. 이더리움에서 스마트컨트랙트를 생성하면 이더리움 가상기계(EVM : Ethereum Virtual Machine) 안에서 동작하게 되어 스마트 계약의 검증, 실행이 모두 블록체인 안에 기록됩니다.
블록체인 상에서 일어나는 스마트컨트랙트를 손흥민 선수의 사례로 예를 들어 보겠습니다. 이번 아시안 게임 축구 종목에서 금메달을 따면 손흥민 선수가 병역특례에 따라 체육요원 편입되고, 그렇지 못하면 군의무를 져야 했습니다. 이를 블록체인 위에 "축구 국가대표 금메달 획득시 손흥민 선수 보충역 체육요원 편입" "축구 국가대표 은메달 획득시 손흥민 선수 현역 입대" 이렇게 약속문을 기록(코딩)하는 것입니다. 그리고 실제 경기 결과에 따라 자동 실행되는 것입니다. 일종의 약속과 같은 이 계약의 유효성은 블록체인이 보증하고 컴퓨터가 자동으로 실행됩니다. 메달의 색에 따라 입영 대상자 통지서가 다르게 발부 되도록 하는 것이지요.
금메달 축하합니다~
조금 다른 예를 들어 보겠습니다. 손흥민 선수가 금메달을 획득하였을 경우 A는 B에게 1이더(ETH)를 보내기로 하였다고 단순히 가정해 봅시다. 둘 사이의 약속을 위해서는 공증할 제 3자나 법적 효력이 발생하는 계약서같은 것들이 필요합니다. 실생활에서는 법과 같은 공신력있는 중앙의 힘에 의해서 약속이 공증을 받게 되지만 이더리움 위에 기록된 약속은 이더리움 블록체인 상의 노드들이 이 계약을 검증하고 만족하였을 때 계약을 집행합니다.
이더리움은 튜링완전언어(Turing Compelet Language)를 스마트컨트랙트 작성 언어러 선택해 응용하고 있습니다. 튜링완전언어는 조건 분기문(If 조건문, For, While 등의 반복문)으로 메모리의 임의 위치갑을 정할 수 있는 언어로 C/C++, Java, Python 등이 있습니다. 이더리움에서는 솔리디티(Solidity)라는 언어를 사용하여 이더리움 플랫폼상에 입력된 조건이 만족 되었을 때 계약이 자동 이행 되도록 합니다.
실제 이더리움에 기록되는 계약과는 조금 다르겠지만 이해를 돕기 위해 아래와 같은 계약을 코드로 만들어서 이더리움에 기록했다고 가정해보겠습니다.
1) "A는 받는 주소 없이 1이더를 전송한다" "받는 주소 대신 스마트컨트랙트를 만든다" -> 계약 조건 만족에 따라 자동으로 계약이 실행 될수 있도록 1이더를 준비함
2) 만약(If) 손흥민 선수가 2018년도 아시안 게임에서 금메달을 획득했다고 공식적으로 인정되면, 그 조건이 만족하면(Then) A는 B에게 1이더를 보낸다." -> 조건문 생성
A가 1이더와 함께 위의 코드를 전송하면 계약생성(Contract Creation)됩니다.
해당 코드가 이더리움에 기록되면 참여자들이 이 계약을 실행합니다. 스마트컨트랙트를 실행하기 위한 용도로 사용하는 계약계정(Contract Account)이 생성되며, 1이더가 계약계정에 저장됩니다.
[참고] 이더리움 플랫폼에는 이렇게 계약을 실행하기 위한 계약계정과 우리가 흔히 거래소에서 주고 암호화폐인 이더를 주고 받을 때 쓰는 외부소유계정(Externally Owned Account)로 구분되어 있으며 계약계정은 스마트 컨트랙트 코드에 의해, 외부소유계정은 비트코인처럼 개인키에 의해 통제됩니다.
계약 생성 후 실제로 손흥민 선수가 금메달을 목에 걸었기 때문에 계약의 조건이 만족되었음이 확인되고, A는 1이더와 함께 손흥민 선수 금메달 획득을 확인하여 조건이 만족되었다는 사실을 코드로 적어 하나의 블록으로 만들어 보냅니다. 그리고 이더리움 계약계정 상에 있던 1이더는 B의 외부소유계정으로 전송됩니다.
이 계약의 검증은 이더리움 네트워크에 참여하는 노드(Node)에 의해서 진행됩니다. 노드에 의한 검증과정은 비트코인과 동일합니다. 아래 2~5과정이 노드가 블록체인 거래를 검증하는 방식입니다. 손흥민 선수의 병역문제에 대한 A와 B의 거래정보가 블록체인 상에 코드로 기록되어 새로운 블록이 생성되면 네트워크 참여자인 노드(일종의 서버)들에게 전송됩니다.
[참고] 노드는 블록체인 네트워크에 연결되어 일종의 컴퓨터 서버 역할을 해주며, 블록체인 네트워크에 연결된 모든 블록 정보를 가지고 있습니다. 비트코인, 이더리움과 같인 컴퓨터를 통해 블록체인을 채굴하여 증명하거나(POW), 넴과 대시 같이 많은 수량의 암호화폐를 가지고 그 지분으로 증명(POS) 등의 방식이 있습니다.
노드는 지금까지의 블록체인에 기록된 약속을 모두 가지고 있으며 이 정보가 정확한지를 검증합니다. 이 계약이 유효하다고 판단하는 노드 수가 일정 수준 이상이 되면 이 블록은 검증되어 체인에 등록됩니다. 이렇게 검증과 체인에 등록되어야 거래가 최종 성사됩니다.
이더리움 플랫폼 상의 스마트컨트랙트는 단순히 계약과 금액 이체와 같은 금융거래 뿐만 아니라 각종 서비스와 거래에도 사용이 가능합니다. 처음 예를 들었던 체육요원과 현역 영장 발부도 스마트컨트랙트로 구현이 가능합니다.
다만 이더리움안에서 스마트컨트랙트를 구현을 위해 이더리움 네트워크의 노드들에게 검증받기 위해서는 노드의 컴퓨팅 파워를 사용해야 하기 때문에 연료의 개념으로 가스(Gas)가 필요합니다. 코드의 연산을 수행할 때 마다 일정 양의 가스가 소모되며 가스의 가격은 미리 책정된 금액의 이더만큼 지불됩니다.
이더리움의 스마트컨트랙트를 간략하게 요약하면 조건문을 바탕으로 계약을 블록위에 기록하고, 기록을 노드들이 검증하는 방식으로 공증되어 자동 실행되는 것을 의미합니다. 이로 인해 제3자의 개입 없이 신뢰할 수 있는 계약을 진행할 수 있으나, 공증을 위해 노드의 컴퓨팅 파워를 빌리는 것이기 때문에 수수료 개념인 가스를 사용해야 합니다.
'블록체인 (Blockchain)' 카테고리의 다른 글
[문과취향 쉬운 블록체인] 블록체인 트릴레마(Trillema) (0) | 2018.09.12 |
---|---|
[문과취향 쉬운 블록체인] 블록체인 플랫폼 이더리움 ERC20과 Dapp(디앱) (0) | 2018.09.09 |
[블록체인/유틸리티 토큰] 워크 모델 어거(Augur) 도식화 (0) | 2018.09.01 |
블록체인을 향한 KT의 도전, 네트워크 블록체인 (0) | 2018.08.21 |
[블록체인/리버스 ICO] SK 플래닛, 예스24, 싸이월드가 리버스 ICO를 하는 이유 (0) | 2018.08.12 |