Home [Blockchain] 스마트 컨트랙트 이해하기
Post
Cancel

[Blockchain] 스마트 컨트랙트 이해하기

시작하기에 앞서

XL.jpeg

본 내용은 블록체인 인 액션 서적을 읽으며 작성하였습니다. 이전에 작성된 내용을 확인하고 싶으신 경우, Blockchain 카테고리를 참고해주세요.

스마트 컨트랙트

스마트 컨트랙트는 암호 화폐 프레임워크를 신뢰 프레임워크로 전환시켜, 보다 폭넓은 영역에서 탈중앙화 애플리케이션을 활용할 수 있게 해주는 블록체인의 핵심적인 컴포넌트입니다.

구조적으로 스마트 컨트랙트는 객체지향 프로그래밍을 할 때 볼 수 있는 클래스와 유사하게 생긴 독립적인 코드입니다. 추가적으로, 데이터와 함수를 가진 배포 가능한 코드 모듈이기도 합니다.

현실에서는 컨트랙트는 규칙, 조건, 법, 강제해야 하는 규정, 기준, 상황, 날짜 및 서명 같은 증명을 위한 항목등을 다루는데, 블록체인에서의 스마트 컨트랙트 역시 탈중앙화 문제들을 풀기 위한 컨트랙트 규칙들을 구현합니다.

스마트 컨트랙트는 애플리케이션의 규칙과 규정들을 디지털로 정의하고, 검증하고, 검사하며, 강제하기 위한 블록체인에서 작동시킬 수 있는 실행 가능한 코드다. 스마트 컨트랙트는 제삼자 없이도 신뢰할 수 있는 트랜잭션의 수행을 지원한다. 이런 트랜잭션은 추적 가능하고 되돌릴 수 없다.

블럭체인 인 액션 p.26

스마트 컨트랙트 개념

스마트 컨트랙트는 비트코인 블록체인 프로토콜이 제공했던 기본적인 신뢰를 확장시키는 코드입니다. 이러한 스마트 컨트랙트는 암호 화폐 이외의 디지털 자산을 위한 트랜잭션을 지원할 수 있는 프로그래밍을 가능하게 해줍니다.

블록체인의 차별화된 근본적인 개념에서도 한 번 살펴본 블록체인 애플리케이션 레이어 사진을 다시 가져와봤습니다. 스마트 컨트랙트는 위 그림에서 확인할 수 있듯이 블록체인 노드의 가상머신 위에서 실행이 되면서 샌드박스 환경에 배포되고, 블록체인 네트워크의 참여자들을 식별하는 데 사용하는 160비트의 어카운트 주소를 사용하여 식별합니다.

비트코인 트랜잭션 vs 스마트 컨트랙트 트랜잭션

암호 화폐 트랜잭션과 비화폐적인 애플리케이션 종속적인 함수 호출 간의 차이를 이해하기 위해서 예제로 가져온 위 사진을 살펴보도록 합니다.

비트코인의 경우, 모든 트랜잭션의 가치(Tx(sendValue))를 전송하기 위한 것입니다. 반면, 스마트 컨트랙트를 지원하는 블록체인의 경우, 트랜잭션은 스마트 컨트랙트가 구현한 기능을 임베드합니다. 위 그림을 살펴보면 validateVote(), vote(), count(), declareWinner() 함수가 있네요.

스마트 컨트랙트에 있는 위 함수들을 호출하면 블록체인에 기록될 트랜잭션들(Tx(validateVoter), Tx(vote) 등)을 생성합니다. 이렇게 블록체인에 임의로 제작한 코드를 올리고 실행할 수 있는 기능은 단순한 암호 화폐 전송을 넘어서 블록체인의 활용도를 크게 향상시킵니다.

스마트 컨트랙트가 하는 일

스마트 컨트랙트는 블록체인 애플리케이션의 두뇌와 같은 역할을 수행합니다. 그 중 핵심적인 내용을 나열하면 다음과 같습니다.

  • 각 애플리케이션의 특수한 조건에 맞는 확인과 검증을 할 수 있는 비즈니스 로직 레이어를 표현한다.

  • 블록체인에서 작동하기 위한 규칙의 명세(specification of rules) 를 설정할 수 있게 한다.

  • 탈중앙화 네트워크에서 자산의 전송을 위한 정책을 구현하기 쉽도록 한다.

  • 메시지나 다른 함수의 호출에 의해 실행되는 함수를 내장하는데, 개인 어카운트나 다른 스마트 컨트랙트 어카운트가 이러한 호출을 합니다. 이 메시지는 블록체인의 분산 장부에 트랜잭션 일부로 기록되는데, 여기에는 입력 파라미터, 송신자의 주소, 타임스탬프 등과 같은 추가적인 메타 데이터를 포함합니다.

  • 탈중앙화 블록체인 기반 애플리케이션을 위한 소프트웨어 기반 중개자로서의 기능을 수행합니다.

  • 스마트 컨트랙트 기능의 구체적인 설정을 통해 블록체인에게 브로그래밍 가능성(programmability) 와 지능성을 제공해줍니다.

결론

오늘은 스마트 컨트랙트에 대해서 이해를 하는 시간을 가졌습니다. 다음에는 솔리디티를 통해서 이러한 스마트 컨트랙트를 개발을 맛 볼 예정입니다.

This post is licensed under CC BY 4.0 by the author.

[Git] git-flow-avh를 멋쟁이처럼 쓰는 법

[Python] Selenium으로 원하는 웹사이트 스크린샷 찍기