스마트 컨트랙트

user-image
블록헤더스
블록헤더스
2023.10.13

[Xangle Digest]

※해당 컨텐츠는 외부에서 기발간 된 컨텐츠입니다. 컨텐츠에 대한 추가적인 주의사항은 본문 하단에서 확인해주세요.

이더리움 스마트 컨트랙트, 스마트 컨트랙트 구현, 스마트 계약, 스마트 컨트랙트 코드, 블록체인 기본 개념

작성자: 이동규 (블록체인 밸리 2기), 김희지 (블록체인앳연세 9기) 이승아 (하이블록 1), 고준호 (디사이퍼 8), 박근영 (블록체인 밸리 1), 윤태웅 (블록체인앳연세 8기)

 

목차

소개
스마트 컨트랙트란?
스마트 컨트랙트의 작동방식
스마트 컨트랙트의 주요 기능
스마트 컨트랙트의 장점과 사용 사례
스마트 컨트랙트의 한계
마치며

 

소개

스마트 컨트랙트는 블록체인에 혁명을 일으킨 존재로 매우 중요한 개념입니다.

비트코인 블록체인에서는 오직 돈을 보내고 받는 방식의 일차적인 거래만 가능했다면, 이더리움 블록체인은 ‘스마트 컨트랙트’가 등장하고 나서부터 블록체인 위에 디앱(dApp, 탈중앙화 애플리케이션)을 올릴 수 있게 됐습니다. 즉, 스마트 컨트랙트의 등장으로 블록체인의 활용 범위가 확장된 것입니다. 이번 아티클에서는 블록체인에 새로운 활로를 열어준 스마트 컨트랙트에 대해 알아보겠습니다.

 

스마트 컨트랙트란?

스마트 컨트랙트는 신뢰할 수 있는 중개자 없이 당사자 간 거래에 대한 규칙을 자동화하고 정의하는 프로그래밍 가능한 계약 조항을 의미합니다. 스마트 컨트랙트는 각 계약에 해당하는 조건이 충족되면 자동 실행되므로, 중간에서 신뢰성 문제가 발생할 가능성이 줄어듭니다.

이와 같이 코드에 쓰여진 규칙으로만 돌아가는 스마트 컨트랙트는 1990년대에 미국의 컴퓨터 과학자, 닉 자보(Nick Szabo)에 의해 처음 소개됐습니다. 닉 자보는 신용 시스템, 결제 처리 및 콘텐츠 저작권 관리와 같은 계약 합의를 필요로 하는 다양한 분야에서 스마트 컨트랙트의 잠재적인 활용에 대해 논의했습니다.

오늘날, 스마트 컨트랙트는 무신뢰 프로토콜을 만드는데 주로 활용되고 있습니다. 거래 당사자들은 스마트 컨트랙트를 통해 서로를 신뢰할 필요 없이 자동적이고 암호화된 계약을 맺을 수 있습니다. 사전에 프로그래밍된 조건이 충족되지 않으면 계약은 실행되지 않습니다. 이렇듯, 스마트 컨트랙트는 거래자들의 신용을 보장해주는 중개자의 필요성을 제거하여 운영 비용을 크게 절감할 수 있습니다.

스마트 컨트랙트 적용 케이스, 스마트 컨트랙트 구현, 스마트 계약, 블록체인 기본 개념

스마트 컨트랙트 적용 케이스 (출처 : 체인링크 블로그)

 

스마트 컨트랙트의 작동방식

스마트 컨트랙트는 결정론적 프로그램으로 작동합니다. 이는 곧 스마트 컨트랙트가 계약 코드에 작성된 조건에 따라 정확하게 실행됨을 말합니다. 동일한 상황이 주어진다면 스마트 컨트랙트는 동일한 결과를 낳는다는 말과도 일맥상통합니다. 주로 흔히 알고있는 조건문인 "if… then…"이라는 문구를 따릅니다.

이더리움 네트워크에 회원가입한 사용자는 외부 소유 계정 (EOA : Externally Owned Accounts)을 부여받습니다. 메타마스크, 렛저와 같은 전자 지갑에 생성된 주소가 EOA에 속하며, EOA는 비밀번호 역할을 하는 개인 키가 부여됩니다. 제공된 개인 키를 통해 자체적으로 트랜잭션을 처리할 수 있지만 개인 키가 노출됐을 경우, 본인 주소에 보관된 모든 자산이 탈취딜 수 있는 위험이 존재합니다. 이에 스마트 컨트랙트는 사용자들이, 즉 개인 키 노출 위험 없이 외부 소유 계정들이 트랜잭션을 주고 받는 등의 상호작용할 수 있도록 블록체인 상의 작업을 실행하고 관리하는 컨트랙트 계정 (Contract Account)을 도입했습니다. 쉽게 말해, 스마트 컨트랙트는 컴퓨터 코드에 의해 통제되는 반면 EOA는 사용자에 의해 통제됩니다.

외부 소유 계정과 컨트랙트 계정의 비교, EOA, Contract Account, 스마트 컨트랙트 구현, 스마트 컨트랙트 코드

Externally Owned Account (EOA) vs. Contract Account (출처: GnosisDAO)

EOA와 컨트랙트 계정의 관계는 현실의 계약에 비유해볼 수 있습니다. EOA는 계약 당사자이며, 컨트랙트 계정은 계약서 그 자체라고 볼 수 있습니다. 대신 컨트랙트 계정은 네트워크에 이미 배포된 코드에 작성된 대로만 실행되기 때문에 변조나 위조 가능성이 없다는 특징이 있습니다. 또한 계약의 효력은 계약 당사자가 서명을 할 때 발동하는데, 스마트 컨트랙트의 작동방식도 이와 유사합니다. 계약의 당사자인 EOA가 특정 메시지를 전송하는 트랜잭션에 개인 키로 서명하면, 그 메시지는 컨트랙트 계정을 호출하며 코드로 짜여진 계약이 활성화되는 방식입니다. 따라서 스마트 컨트랙트의 활성화는 항상 EOA에 의해 발생합니다.

기존 계약 과정과 스마트 컨트랙트 실행의 차이, 스마트 계약, 스마트 컨트랙트 구현, 블록체인 기본 개념

기존 계약 과정과 스마트 컨트랙트 실행의 차이 (출처: Originstamp)

 

스마트 컨트랙트의 주요 기능

이더리움 블록체인에서 만들어진 스마트 컨트랙트는 일반적으로 다음과 같은 특징을 띱니다.

  • 분산화(Distributed): 생성된 스마트 컨트랙트는 이더리움 블록체인 네트워크상 모든 노드들에게 공유되어 분배됩니다. 따라서 한 주체가 계약 기록을 조작하기 위해서는 이 기록을 갖고 있는 모든 노드의 데이터를 변조해야 하므로, 스마트 컨트랙트 조작은 더욱 불가해집니다.
  • 결정론적(Deterministic): 스마트 컨트랙트는 주어진 조건을 충족시켰을 때만 기능이 작동되도록 설계됐습니다. 그러므로 다른 주체가 스마트 컨트랙트를 실행하더라도 결과는 항상 동일하게 나타납니다.
  • 자동화(Autonomous): 자동 집행 프로그램과 같이 스마트 컨트랙트도 다양한 종류의 작업을 자동화할 수 있습니다. 물론, 처음 스마트 컨트랙트를 작동할 주체가 없으면 어떤 기능도 구현되지 않으므로 트리거를 일으킬 EOA를 필요로 합니다.
  • 불변성(Immutable): 한 번 배포된 스마트 컨트랙트는 그 누구도 변경할 수 없습니다. 따라서 스마트 컨트랙트는 쉽게 조작할 수 없는 코드를 포함합니다. 한편, 특정 기능을 미리 도입하는 경우 스마트 컨트랙트를 배포한 뒤에도 삭제할 수 있는데, 이에 대해서는 밑의 문단에 자세히 설명되어 있습니다.
  • 맞춤형(Customizable): 배포 전 스마트 컨트랙트를 다양한 방법으로 코딩할 수 있습니다. 덕분에 거래소, 디파이(DeFi, 탈중앙화금융)와 같은 다양한 디앱들이 등장했습니다.
  • 무신뢰(Trustless): 스마트 컨트랙트를 통해 관계자들은 서로에 대한 정보나 신뢰 없이도 상호작용할 수 있습니다.
  • 투명성(Transparent): 스마트 컨트랙트는 누구나 참여할 수 있는 개방형 블록체인, 즉 퍼블릭 블록체인에 기반을 두기 때문에 블록체인 참여자 그 누구나가 해당 스마트 컨트랙트의 소스 코드를 확인할 수 있습니다.

스마트 컨트랙트를 바꾸는 방법