Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

Smart contract

신뢰할 수 없는 컴퓨터 네트워크 환경에서, 신뢰 할 수 있는 자동 계약 이행을 도와주는 프로토콜이다. 1996년 Nick Szabo가 제안했다. 블럭체인 응용인 Ethereum이 사용하는 프로토콜이다.

Nick Szabo는 "Smart contract"에 대해서 "디지털 기반의 자유 시장을 위한 블럭을 만드는 프로토콜"이라고 소개했다. 나중에는 "공공 네트워크에서의 관계를 형식화하고 보안을 유지하는 프로토콜"로 소개를 변경했다. 즉, 공공 네트워크상에서 자유시장을 형성하기 위해서 안전한 관계를 만들 수 있도록 도와주는 프로토콜 이다라는 말이 되겠다.

Smart contract는 무엇인가

Smart contract(스마트한 계약이라고 번역 할 수 있겠는데, 그냥 smart contract를 그대로 쓰겠다.)는 블럭체인 기술을 이용한 계약 프로토콜이다. 이 계약 프로토콜은 프로그램 코드를 통해서 작동한다. 전체 코드가 실행이 되면 법적 계약을 보완하거나 대체 할 수 있다. 여기에서 프로그램 코드는 말그대로 코드로, 계약서에 실행 가능한 코드를 넣어서 배포한다.

계약서에 코드를 넣어서 배포하는 건 좀 생소 할 수 있겠는데, 계약서의 효력이라는 것은 결국 어떤 일련의 작업이고, 이러한 일련의 작업은 코드로 변환할 수 있다는 점을 생각해보면 그리 생소한 개념은 아니다.

Smart contract에 대한 간단한 설명

Smart contract는 실행가능한 코드를 포함한 계약이다. 그런 이유로 self-executing contracts 혹은 digital contracts라고 부르기도 한다. Smart contract의 주 목표는 두 명의 익명 사용자가 중개자가 필요 없이 인터넷을 통해서 거래하고 사업을 할 수 있게 하는 것이다. 굉장히 최신의 기술이라고 생각 할 수 있겠으나, 기원과 역사는 비트코인보다 오래됐으며 1990년대까지 거슬러 올라간다.

전통적인 계약과 Smart contracts의 차이

오늘날의 법률전문가가 만든 전통적인 물리적 계약에는 법적 언어를 포함한 엄청난 양의 인쇄된 문서가 필요하며, 제 3자에 크게 의존한다. 이러한 유형의 계약집행은 많은 시간이 걸리며, 그 과정이 불투명하다. 계약 실행 중 어딘가 잘못되면, 계약 당사자는 문제를 해결하기 위해서 공공 사법제도에 의지해야 한다. 법적 언어라는 용어가 내포하고 있듯이, 당연히 많은 시간과 비용이 들어간다.

Smart contracts는 C++, Go, Python, Java와 같은 개발 언어의 도움을 받아 컴퓨터 프로그래머가 작성을 한다. 이 코드에는 전통적인 계약 문서가 가지고 있는 당사자의 의무, 혜택, 벌금과 같은 것들을 정의한다. 이 코드는 분산 원장 시스템(distributed ledger system)에 의해서 자동으로 실행 될 수 있다.

Smart contracts의 작동 방식

Smart contracts를 이해하기 위해서는 smart contract 코드와 코드가 적용되는 방식을 구분해서 살펴봐야 한다.
  • Smart contract code : 블럭체인에 저장돼서 검증과 실행에 사용하는 코드다.
  • Smart Legal contract : Smart contract를 사용 할 때, 법적 계약을 보완하거나 대신할 수 있다.
코딩 잘 설계된 계약은 프로그램 코드와 다를바가 없다. Smart contracts는 계약에 대한 내용을 코드화해서 저장한다. 코드는 사전에 정의 한 방식으로 동작하며, 인간의 언어가 가지는 모호성을 제거 할 수 있으므로 명확하게 그리고 자동으로 수행 할 수 있다.

Distributed Ledgers 코드는 암호화 돼서 분산 원장 네트워크상에 있는 다른 컴퓨터로 전송된다. 이것은 비트코인과 같이 permissionless 블럭체인으로 이루어지며, 비트코인 트랜잭션의 업데이트가 일어나는 것과 비슷한 방식으로 계약이 전송된다.

실행 이 코드를 수신한 노드는 코드를 실행하고, 실행 결과에 대한 계약을 맺는다.(네트워크는 원장을 업데이트하고 계약을 실행 하고 기록한 다음 준수 여부를 모니터링한다.) 일단 smart contracts가 이 단계로 넘어가면, 실행에 대한 제어는 단일 당사자의 손을 떠나기 때문에 단일 조작을 할 수 없게 된다.

참고