시작하기에 앞서
본 내용은 블록체인 인 액션 서적을 읽으며 작성하였습니다. 이전에 작성된 내용을 확인하고 싶으신 경우, Blockchain 카테고리를 참고해주세요.
스마트 컨트랙트
스마트 컨트랙트는 암호 화폐 프레임워크를 신뢰 프레임워크로 전환시켜, 보다 폭넓은 영역에서 탈중앙화 애플리케이션을 활용할 수 있게 해주는 블록체인의 핵심적인 컴포넌트입니다.
구조적으로 스마트 컨트랙트는 객체지향 프로그래밍을 할 때 볼 수 있는 클래스와 유사하게 생긴 독립적인 코드입니다. 추가적으로, 데이터와 함수를 가진 배포 가능한 코드 모듈이기도 합니다.
현실에서는 컨트랙트는 규칙, 조건, 법, 강제해야 하는 규정, 기준, 상황, 날짜 및 서명 같은 증명을 위한 항목등을 다루는데, 블록체인에서의 스마트 컨트랙트 역시 탈중앙화 문제들을 풀기 위한 컨트랙트 규칙들을 구현합니다.
스마트 컨트랙트는 애플리케이션의 규칙과 규정들을 디지털로 정의하고, 검증하고, 검사하며, 강제하기 위한 블록체인에서 작동시킬 수 있는 실행 가능한 코드다. 스마트 컨트랙트는 제삼자 없이도 신뢰할 수 있는 트랜잭션의 수행을 지원한다. 이런 트랜잭션은 추적 가능하고 되돌릴 수 없다.
블럭체인 인 액션 p.26
스마트 컨트랙트 개념
스마트 컨트랙트는 비트코인 블록체인 프로토콜이 제공했던 기본적인 신뢰를 확장시키는 코드입니다. 이러한 스마트 컨트랙트는 암호 화폐 이외의 디지털 자산을 위한 트랜잭션을 지원할 수 있는 프로그래밍을 가능하게 해줍니다.
블록체인의 차별화된 근본적인 개념에서도 한 번 살펴본 블록체인 애플리케이션 레이어 사진을 다시 가져와봤습니다. 스마트 컨트랙트는 위 그림에서 확인할 수 있듯이 블록체인 노드의 가상머신 위에서 실행이 되면서 샌드박스 환경에 배포되고, 블록체인 네트워크의 참여자들을 식별하는 데 사용하는 160비트의 어카운트 주소를 사용하여 식별합니다.
비트코인 트랜잭션 vs 스마트 컨트랙트 트랜잭션
암호 화폐 트랜잭션과 비화폐적인 애플리케이션 종속적인 함수 호출 간의 차이를 이해하기 위해서 예제로 가져온 위 사진을 살펴보도록 합니다.
비트코인의 경우, 모든 트랜잭션의 가치(Tx(sendValue))를 전송하기 위한 것입니다. 반면, 스마트 컨트랙트를 지원하는 블록체인의 경우, 트랜잭션은 스마트 컨트랙트가 구현한 기능을 임베드합니다. 위 그림을 살펴보면 validateVote()
, vote()
, count()
, declareWinner()
함수가 있네요.
스마트 컨트랙트에 있는 위 함수들을 호출하면 블록체인에 기록될 트랜잭션들(Tx(validateVoter), Tx(vote) 등)을 생성합니다. 이렇게 블록체인에 임의로 제작한 코드를 올리고 실행할 수 있는 기능은 단순한 암호 화폐 전송을 넘어서 블록체인의 활용도를 크게 향상시킵니다.
스마트 컨트랙트가 하는 일
스마트 컨트랙트는 블록체인 애플리케이션의 두뇌와 같은 역할을 수행합니다. 그 중 핵심적인 내용을 나열하면 다음과 같습니다.
각 애플리케이션의 특수한 조건에 맞는 확인과 검증을 할 수 있는 비즈니스 로직 레이어를 표현한다.
블록체인에서 작동하기 위한 규칙의 명세(specification of rules) 를 설정할 수 있게 한다.
탈중앙화 네트워크에서 자산의 전송을 위한 정책을 구현하기 쉽도록 한다.
메시지나 다른 함수의 호출에 의해 실행되는 함수를 내장하는데, 개인 어카운트나 다른 스마트 컨트랙트 어카운트가 이러한 호출을 합니다. 이 메시지는 블록체인의 분산 장부에 트랜잭션 일부로 기록되는데, 여기에는 입력 파라미터, 송신자의 주소, 타임스탬프 등과 같은 추가적인 메타 데이터를 포함합니다.
탈중앙화 블록체인 기반 애플리케이션을 위한 소프트웨어 기반 중개자로서의 기능을 수행합니다.
스마트 컨트랙트 기능의 구체적인 설정을 통해 블록체인에게 브로그래밍 가능성(programmability) 와 지능성을 제공해줍니다.
결론
오늘은 스마트 컨트랙트에 대해서 이해를 하는 시간을 가졌습니다. 다음에는 솔리디티를 통해서 이러한 스마트 컨트랙트를 개발을 맛 볼 예정입니다.