동아리, 스터디, 교육/블록체인

[20.07.08] 1주차 블록체인 - 스마트 컨트랙트(smart contract)

pxatd 2020. 7. 15. 14:08
728x90

고등학교 때 부터 블록체인이나 비트코인, 인공지능의 플랫폼 등에 관심이 많았는데 너무 내용이 방대하고 아직도 진행중인 기술이라 단어나 개념을 파악하기조차 어려웠습니다. 그런데 이번 방학에 학교 스터디에서 블록체인과 이더리움을 다룬다는 소식을 듣고 좋은 기회라 생각하여 스터디에 참여하게 되었습니다. 

 

스터디는 일주일에 한 번, 2시간정도 진행되며 구글 북스에서 무료로 제공하는 

https://play.google.com/store/books/details?id=WKLHDwAAQBAJ&rdid=book-WKLHDwAAQBAJ&rdot=1&source=gbs_vpt_read&pcampaignid=books_booksearch_viewport

코어 이더리움 프로그래밍 교재를 사용하며, 정해진 분량에 대해 공부하고 공부했던 부분을 스터디원들 앞에서 발표하는 형식으로 진행됩니다. 

 

저도 처음 다루는 부분이고 다른 블로그나 뉴스기사, 논문 책 등을 참고하여 작성하였으며 정확하지 않은 내용이 있을 수 도 있습니다. 댓글로 지적해주시면 수정하겠습니다.

 

블록체인과 이더리움의 개념과 추가적인 부분에 대해 제가 이해하기 쉽게 바꿔서 이해하였고 그 이해한 것을 바탕으로 티스토리에 업로드 합니다. 


이 주제 선정 계기

책을 읽어보면 알겠지만, 책에는 '스마트 컨트랙트'라는 단어가 꽤 많이 등장합니다. 책에 "스마트 컨트랙트 = 계약" 이라고 쓰여있지만 스마트 컨트랙트라는 과정을 계약이라는 하나의 단어로 함축하기에는 이해가 잘 되지 않았고 더 공부해보는 계기가 되었습니다.


블록체인의 플랫폼

 

 

블록체인 플랫폼

 

 

스마트 컨트랙트를 설명하기전에 우선 블록체인의 플랫폼 모델에 대해 알아야 합니다. 우리가 잘 알고있듯이 블록체인의 대부분의 서비스는 중앙집중형 플랫폼 비즈니스 모델에 따라 운영 됩니다.

 

블록체인 기반 탈중앙형 플랫폼에서는 중앙에 집중화된 서버와 데이터가 없습니다. 분산된 플랫폼에 참여한 개별 컴퓨터가 하나의 서버이고, 이 서버들이 네트워크로 연결되어 하나의 네트워크 기반 클라우드 서버가 됩니다. 데이터는 모두 동일하게 공유되고, 이 데이터는 위변조가 불가능합니다. 비록 연결된 사람들은 서로를 알지 못하고 신뢰할 수는 없겠지만, 서로 거래에 대한 이상 유무를 확인하고 이 결과의 이상 유무에 대한 합의 후 모든 거래를 신뢰할 수 있도록 만듭니다.

블록체인 기반의 이더리움은 임의의 서버들이 P2P 네트워크로 연결되어 마치 하나의 컴퓨터처럼 작동합니다. 따라서 스마트 컨트랙트는 네트워크에 연결되어 있는 어떤 서버에서도 마치 하나의 컴퓨터에서 실행되는 것처럼 실행됩니다. 스마트 컨트랙트는 블록체인에서 특정 조건을 만족하면, 암호화폐를 자동으로 해당 대상에게 전달하게 하는 계약을 만들고 이를 자동으로 실행하는 프로그램입니다. 여기서 ‘계약’이라는 단어의 뜻을 구체적으로 설명하겠습니다.

 

스마트 컨트랙트(smart contrat)란?

스마트 컨트랙트 작동 방식

 

 

스마트 컨트랙트란 블록체인 위에 ‘약속’을 올려놓는 것입니다. 어떤 조건을 만족하면 어떤 행동을 하라는 코드를 거래에 추가합니다. 예를 들면, 내일 기온이 20도이상이면, 에어컨을 틀어라, 내가 좋아요 누른 글을 복사해서 메일로 보내라 와 같은 명령입니다. 블록체인 위에 약속을 올리면 무엇이 다를까요?

 

첫 번째 블록체인이 이 계약의 진위성과 실행을 보장합니다.

단순한 약속이 아니라 계약이 된다 블록체인에 기록되면 그 내용을 누구도 부정하거나 위조할 수 없기 때문입니다. 법은 아니지만, 블록체인이 보증하는 계약입니다.

 

두 번째, 블록체인 내부에 기록된 코드에 의해서 특정조건을 만족할 경우, 정해진 행동이 자동으로 실행됩니다.

실제 문서상으로 이루어지는 계약은 사람이 직접 실행하고, 법에 의해서 강제되지만 스마트 컨트랙트는 블록체인이 유효성을 보증하고 컴퓨터가 자동으로 실행합니다.


스마트 컨트랙트로 중고거래를 해보자

 

가장 단순한 형태의 스마트 컨트랙트인 ‘에스크로 계좌’를 예로 들어서 실제로 어떻게 스마트 컨트랙트가 구현되는지를 알아봅시다. 에스크로 계좌란 서로간의 신뢰가 없는 두 사람이 거래를 할 때 제 3의 계좌에 돈을 넣어놓고(=가상계좌) 특정 조건이 만족되면 돈을 지급해주는 것을 의미합니다.

-----

A와 B가 중고거래를 한다고 하자. 스마트 컨트랙트가 구현되는 방식은 다음과 같다.

1) A가 받는 주소 없이 1이더를 전송한다. 받는 주소가 없는 대신 거래 안에 ‘스마트컨트랙트를 만들어라’‘스마트컨트랙트가 발동되는 조건(if)는 A가 약속한 물건을 받았다고 인증했을 때, 조건이 만족되면 B에게 1이더를 보낸다.’ 라는 코드를 작성해서 전송한다. 이를 컨트랙트 생성 (contract creation)이라고 한다.

 

 

 

 

2) 블록체인에 거래가 기록되면, 모든 참여자들이 안에 담긴 코드를 실행한다. 이더리움 블록체인 상에서 코드에 의해 운영되는 컨트랙트 계정 (contract account)이 생긴다. 1이더가 컨트랙트 계정에 보관된다.

 

참고) 이더리움 내의 계정은 사용자가 통제하는 외부소유 계정(Externally owned accoount)과 내부 코드에 의해서 통제되는 컨트랙트 계정(contract account)이 있다. (2주차에서 구체적으로 설명함.)

 

 

 

 

3) B는 1이더가 담긴 컨트랙트 계정과 담겨있는 코드의 내용 (“조건이 만족되면 B에게 돈을 준다”)를 보고 물건을 보내준다.

 

 

 

 

 

 

4) 물건을 받은 A는 컨트랙트 계정을 받는 사람으로 해서 소량의 이더를 보낸다 그 거래는 “조건이 만족되었음”이라는 코드를 써서 보낸다.

 

 

 

 

 

 

 

5) 이 거래가 블록체인에 기록되고 실행되면, 컨트랙트는 주어진 조건에 반응하게 되고, 정해진 대로 B에게 돈을 전송한다.

 

 

 

 

 

이 과정을 통해 제 3자의 개입도 없이 두 사람은 안전한 거래를 할 수 있게 되며 이 과정은 모두 투명하게 블록체인에 기록된다. => 블록체인의 의의

-----


스마트 컨트랙트(smart contract)의 의미

스마트 컨트랙트는 돈에 조건을 걸 수 있게 해줍니다. 예시를 든 에스크로 가상계좌 거래는 많은 예 중 한가지일 뿐입니다. 스마트 컨트랙트를 활용하면, 블록체인 위에서 단순히 돈을 주고받는 것 이상의 수준 높은 응용이 가능해집니다. 다양한 금융상품을 구현할 수 있으며, 수많은 서비스를 스마트 컨트랙트 기반으로 자동화 시킬 수 있습니다. 스마트 컨트랙트는 제 3자의 개입이 필요없는 블록체인 위에서 돌아가는 애플리케이션을 만드는 기초가 됩니다.

 

 

스마트 컨트랙트를 활용한 자동화기술

 

 


참고

블로그

https://brunch.co.kr/@bumgeunsong/47

 

코어 이더리움 프로그래밍

https://play.google.com/store/books/details?id=WKLHDwAAQBAJ&rdid=book-WKLHDwAAQBAJ&rdot=1&source=gbs_vpt_read&pcampaignid=books_booksearch_viewport

728x90