[Xangle Digest]
※해당 컨텐츠는 외부에서 기발간 된 컨텐츠입니다. 컨텐츠에 대한 추가적인 주의사항은 본문 하단에서 확인해주세요.
작성자: 이동규 (블록체인 밸리 2기), 김희지 (블록체인앳연세 9기) 이승아 (하이블록 1기), 고준호 (디사이퍼 8기), 박근영 (블록체인 밸리 1기), 윤태웅 (블록체인앳연세 8기)
목차
소개
스마트 컨트랙트란?
스마트 컨트랙트의 작동방식
스마트 컨트랙트의 주요 기능
스마트 컨트랙트의 장점과 사용 사례
스마트 컨트랙트의 한계
마치며
소개
스마트 컨트랙트는 블록체인에 혁명을 일으킨 존재로 매우 중요한 개념입니다.
비트코인 블록체인에서는 오직 돈을 보내고 받는 방식의 일차적인 거래만 가능했다면, 이더리움 블록체인은 ‘스마트 컨트랙트’가 등장하고 나서부터 블록체인 위에 디앱(dApp, 탈중앙화 애플리케이션)을 올릴 수 있게 됐습니다. 즉, 스마트 컨트랙트의 등장으로 블록체인의 활용 범위가 확장된 것입니다. 이번 아티클에서는 블록체인에 새로운 활로를 열어준 스마트 컨트랙트에 대해 알아보겠습니다.
스마트 컨트랙트란?
스마트 컨트랙트는 신뢰할 수 있는 중개자 없이 당사자 간 거래에 대한 규칙을 자동화하고 정의하는 프로그래밍 가능한 계약 조항을 의미합니다. 스마트 컨트랙트는 각 계약에 해당하는 조건이 충족되면 자동 실행되므로, 중간에서 신뢰성 문제가 발생할 가능성이 줄어듭니다.
이와 같이 코드에 쓰여진 규칙으로만 돌아가는 스마트 컨트랙트는 1990년대에 미국의 컴퓨터 과학자, 닉 자보(Nick Szabo)에 의해 처음 소개됐습니다. 닉 자보는 신용 시스템, 결제 처리 및 콘텐츠 저작권 관리와 같은 계약 합의를 필요로 하는 다양한 분야에서 스마트 컨트랙트의 잠재적인 활용에 대해 논의했습니다.
오늘날, 스마트 컨트랙트는 무신뢰 프로토콜을 만드는데 주로 활용되고 있습니다. 거래 당사자들은 스마트 컨트랙트를 통해 서로를 신뢰할 필요 없이 자동적이고 암호화된 계약을 맺을 수 있습니다. 사전에 프로그래밍된 조건이 충족되지 않으면 계약은 실행되지 않습니다. 이렇듯, 스마트 컨트랙트는 거래자들의 신용을 보장해주는 중개자의 필요성을 제거하여 운영 비용을 크게 절감할 수 있습니다.
스마트 컨트랙트 적용 케이스 (출처 : 체인링크 블로그)
스마트 컨트랙트의 작동방식
스마트 컨트랙트는 결정론적 프로그램으로 작동합니다. 이는 곧 스마트 컨트랙트가 계약 코드에 작성된 조건에 따라 정확하게 실행됨을 말합니다. 동일한 상황이 주어진다면 스마트 컨트랙트는 동일한 결과를 낳는다는 말과도 일맥상통합니다. 주로 흔히 알고있는 조건문인 "if… then…"이라는 문구를 따릅니다.
이더리움 네트워크에 회원가입한 사용자는 외부 소유 계정 (EOA : Externally Owned Accounts)을 부여받습니다. 메타마스크, 렛저와 같은 전자 지갑에 생성된 주소가 EOA에 속하며, 각 EOA는 비밀번호 역할을 하는 개인 키가 부여됩니다. 제공된 개인 키를 통해 자체적으로 트랜잭션을 처리할 수 있지만 개인 키가 노출됐을 경우, 본인 주소에 보관된 모든 자산이 탈취딜 수 있는 위험이 존재합니다. 이에 스마트 컨트랙트는 사용자들이, 즉 개인 키 노출 위험 없이 외부 소유 계정들이 트랜잭션을 주고 받는 등의 상호작용할 수 있도록 블록체인 상의 작업을 실행하고 관리하는 컨트랙트 계정 (Contract Account)을 도입했습니다. 쉽게 말해, 스마트 컨트랙트는 컴퓨터 코드에 의해 통제되는 반면 EOA는 사용자에 의해 통제됩니다.
Externally Owned Account (EOA) vs. Contract Account (출처: GnosisDAO)
EOA와 컨트랙트 계정의 관계는 현실의 계약에 비유해볼 수 있습니다. EOA는 계약 당사자이며, 컨트랙트 계정은 계약서 그 자체라고 볼 수 있습니다. 대신 컨트랙트 계정은 네트워크에 이미 배포된 코드에 작성된 대로만 실행되기 때문에 변조나 위조 가능성이 없다는 특징이 있습니다. 또한 계약의 효력은 계약 당사자가 서명을 할 때 발동하는데, 스마트 컨트랙트의 작동방식도 이와 유사합니다. 계약의 당사자인 EOA가 특정 메시지를 전송하는 트랜잭션에 개인 키로 서명하면, 그 메시지는 컨트랙트 계정을 호출하며 코드로 짜여진 계약이 활성화되는 방식입니다. 따라서 스마트 컨트랙트의 활성화는 항상 EOA에 의해 발생합니다.
기존 계약 과정과 스마트 컨트랙트 실행의 차이 (출처: Originstamp)
스마트 컨트랙트의 주요 기능
이더리움 블록체인에서 만들어진 스마트 컨트랙트는 일반적으로 다음과 같은 특징을 띱니다.
- 분산화(Distributed): 생성된 스마트 컨트랙트는 이더리움 블록체인 네트워크상 모든 노드들에게 공유되어 분배됩니다. 따라서 한 주체가 계약 기록을 조작하기 위해서는 이 기록을 갖고 있는 모든 노드의 데이터를 변조해야 하므로, 스마트 컨트랙트 조작은 더욱 불가해집니다.
- 결정론적(Deterministic): 스마트 컨트랙트는 주어진 조건을 충족시켰을 때만 기능이 작동되도록 설계됐습니다. 그러므로 다른 주체가 스마트 컨트랙트를 실행하더라도 결과는 항상 동일하게 나타납니다.
- 자동화(Autonomous): 자동 집행 프로그램과 같이 스마트 컨트랙트도 다양한 종류의 작업을 자동화할 수 있습니다. 물론, 처음 스마트 컨트랙트를 작동할 주체가 없으면 어떤 기능도 구현되지 않으므로 트리거를 일으킬 EOA를 필요로 합니다.
- 불변성(Immutable): 한 번 배포된 스마트 컨트랙트는 그 누구도 변경할 수 없습니다. 따라서 스마트 컨트랙트는 쉽게 조작할 수 없는 코드를 포함합니다. 한편, 특정 기능을 미리 도입하는 경우 스마트 컨트랙트를 배포한 뒤에도 삭제할 수 있는데, 이에 대해서는 밑의 문단에 자세히 설명되어 있습니다.
- 맞춤형(Customizable): 배포 전 스마트 컨트랙트를 다양한 방법으로 코딩할 수 있습니다. 덕분에 거래소, 디파이(DeFi, 탈중앙화금융)와 같은 다양한 디앱들이 등장했습니다.
- 무신뢰(Trustless): 스마트 컨트랙트를 통해 관계자들은 서로에 대한 정보나 신뢰 없이도 상호작용할 수 있습니다.
- 투명성(Transparent): 스마트 컨트랙트는 누구나 참여할 수 있는 개방형 블록체인, 즉 퍼블릭 블록체인에 기반을 두기 때문에 블록체인 참여자 그 누구나가 해당 스마트 컨트랙트의 소스 코드를 확인할 수 있습니다.
스마트 컨트랙트를 바꾸는 방법
SELFDESTRUCT 코드 추가 예시 (출처: Coinsbench)
일반적으로 이더리움 네트워크상의 스마트 컨트랙트는 한 번 배포되고 나며 추가 조작이 불가합니다. 그러나, 배포하기 전 스마트 컨트랙트에 SELFDESTRUCT(자폭) 코드를 추가했을 경우, 해당 스마트 컨트랙트는 배포된 뒤에도 삭제될 수 있으며 새로운 스마트 컨트랙트로 대체도 가능합니다. 물론 자폭 코드는 배포 전 단계에 도입했을 때만 구현되며, 그렇지 않은 경우 일반 스마트 컨트랙트와 같이 배포 후 변경이 불가합니다.
스마트 컨트랙트의 불변성은 이더리움의 탈중앙화된 데이터의 신뢰성을 보완해주는 이점을 갖고 있지만, 서비스를 구현하려는 개발자에게는 기능을 추가하거나 버그를 패치할 수 없는 제약으로 다가올 수 있습니다. 그러므로 개발자들은 더 유연하게 스마트 컨트랙트를 개발할 수 있도록 “업그레이드 가능한 스마트 컨트랙트(Upgradeable Smart Contract)”라는 대안을 내놓았습니다.
예를 들어, 한 스마트 컨트랙트를 여러 개의 자그마한 스마트 컨트랙트로 나누고 일부는 삭제 기능을 활성화한 채로 배포하는 방법이 있습니다. 이럴 경우, 스마트 컨트랙트가 배포된 뒤에도 중요한 기능들은 조작 불가하게 보존시키면서 일부 코드는 차후에 삭제하거나 변경할 수 있게 됩니다. 이 외에도 여러 가지 방법으로 “업그레이드 가능한 스마트 컨트랙트”를 설계할 수 있으며, 방법에 따라 구현 난이도는 상이할 수 있습니다.
스마트 컨트랙트의 장점과 사용 사례
스마트 컨트랙트는 개발자의 입맛과 목표에 맞게 다양한 형태로 개발이 가능하며, 이를 통해 현재까지도 다양한 서비스와 솔루션이 이더리움 블록체인에 만들어졌습니다.
탈중앙성과 자동화라는 특징을 띤 스마트 컨트랙트는 사용자에게는 투명성을, 개발자들에게는 적은 운영비용이라는 혜택을 제공합니다. 아울러 내재된 기능에 따라 스마트 컨트랙트는 효율성을 높이고 관료적 비용을 줄일 수 있습니다.
스마트 컨트랙트는 특히 여러 당사자 간의 자금 전송 및 교환에 용이하며, 이는 스마트 컨트랙트가 다양한 방면에 활용될 수 있게 했습니다. 블록체인 업계에만 해도 자산 토큰화, 투표 체계, 암호화폐 지갑, 탈중앙 거래소, 게임, 모바일 애플리케이션 등에 스마트 컨트랙트가 적용됐습니다. 심지어 블록체인 산업 외에 의료 서비스, 자선 사업, 유통망 분야에도 널리 사용되고 있습니다.
ERC-20
ERC-20 기반 토큰 예시 (출처: CryptoWise)
이더리움 블록체인에 발행된 토큰들은 대부분 ERC-20이라고 알려진 표준에 맞춰져 있습니다. ERC-20은 대체 가능한(Fungible) 암호화폐 발행 표준 규격 중 하나로 모든 이더리움 기반 토큰의 핵심 기능들을 내포하고 있어, 이더리움 네트워크 위에서 원활하게 유통할 수 있게끔 토큰의 호환성을 보장합니다.
2015년에 처음 이더리움 커뮤니티에 제안된 ERC-20 표준은 2017년 9월에 이더리움 네트워크에 정식 도입됐으며, 이 때를 계기로 자기만의 디지털 토큰을 만들고 싶었던 많은 수의 블록체인 기업들은 이더리움 네트워크에 스마트 컨트랙트를 발행하기 시작했습니다. 2022년 11월을 기준으로 약 45만 개의 토큰이 ERC-20 표준에 따라 발행됐으며, 지금도 많은 수의 ERC-20 토큰들이 만들어지고 있습니다.
토큰에 대해 더 궁금하신 분들은 블록헤더스의 “암호화폐란?” 글에서 확인하실 수 있습니다.
스마트 컨트랙트의 한계
스마트 컨트랙트는 결국 사람이 컴퓨터 코드를 작성해 만드는 것입니다. 이로 인해 코드에 취약점과 버그가 발생할 수 있는 위험이 존재합니다. 특히 큰 규모의 자금이나 민감한 정보와 관련된 스마트 컨트랙트를 배포한다면, 경험이 많은 프로그래머가 코드를 작성하고 배포하는 것이 이상적입니다.
이 밖에도 일각에서는 중앙화된 시스템이 스마트 컨트랙트가 제공하는 솔루션과 기능의 대부분을 제공할 수 있다고 주장합니다. 하지만 중앙화된 시스템과 스마트 컨트랙트에는 중요한 차이점이 존재합니다. 스마트 컨트랙트는 중앙화된 서버가 아닌 분산형 P2P 네트워크 위에서 실행된다는 점입니다. 또한 스마트 컨트랙트는 블록체인 시스템을 기반으로 하기 때문에 변경하기 매우 어려운 비가역성이 있다는 것입니다.
이러한 비가역성이 데이터의 불변성을 보장해줄 수 있어 장점이지만, 반대로 단점이 되는 경우도 있습니다. 예를 들어 2016년 발생했던 ‘더 다오’(The DAO) 해킹 사건의 경우, 스마트 컨트랙트 코드의 결함이 있었으나 이를 급하게 변경하기는 쉽지 않았고 결국 수 백만 개의 이더리움(ETH)을 탈취 당했습니다.
스마트 컨트랙트에 불변성이 존재하기 때문에 개발자들이 코드를 수정할 수 없었고, 이 사건은 결국 이더리움 하드포크로 이어져 제 2의 이더리움인 ‘이더리움 클래식’이 탄생했습니다. 해킹 사건이 발생했던 이더리움 네트워크는 해킹 전 시점으로 네트워크를 롤백했고, 원래 소유자에게 자금을 반환했습니다. 반면 이더리움 클래식은 그 어떠한 일이 있어도 인위적으로 블록체인을 변경해서는 안된다는 점을 강조하며, 해킹 사건에 대한 롤백 없이 네트워크를 그대로 이어나갔습니다.
이더리움과 이더리움 클래식 (출처: Coingecko)
이 사건의 요점은 사건이 이더리움 블록체인에서 발생한 것이 아니라, 스마트 컨트랙트의 결함이 원인이었다는 점입니다. 스마트 컨트랙트를 작성하고 배포하는 것은 언제나 예상치 못한 위험을 내포할 수 있습니다.
또한, 스마트 컨트랙트는 법적 지위가 불명확하다는 한계를 지니고 있습니다. 스마트 컨트랙트는 현재의 법적 프레임워크와 맞지 않기 때문에 대부분 규제의 회색 지대에 속합니다.
예를 들어 현실의 계약 대다수는 양 측 당사자를 적절히 식별할 수 있어야 하며, 만 18세 이상의 성인이어야 합니다. 블록체인이 제공하는 익명성은 중개자의 부재와 함께 이러한 계약적 필요조건을 불충족할 수 있습니다. 이에 대한 잠재적인 해결책이 존재하긴 하나, 스마트 컨트랙트의 법적 지위 확보에 대한 가능성은 탈중앙 네트워크의 실현과 직접적으로 관련이 있는 주요 도전 과제입니다.
마치며
일각에서는 스마트 컨트랙트가 곧 우리 사회의 상업, 행정적 시스템의 상당 부분을 대체하고 자동화할 솔루션으로 생각하고 있지만, 일반적인 솔루션으로 인식되려면 아직 갈 길이 많이 남았습니다.
앞서 얘기했듯이 스마트 컨트랙트는 불변성이라는 특징으로 인해 개발 초기부터 실수 없이 설계되어야 한다는 어려움이 있습니다. 또한, 일부 기업이나 조직의 관점에서 스마트 컨트랙트를 적용하기보다 중앙화된 서버를 유지 보수하는 것이 더 쉽고 저렴하며, 속도와 네트워크 간 통신 측면에서 더 높은 효율성을 가질 수 있습니다.
그럼에도 불구하고 스마트 컨트랙트를 통해 블록체인 네트워크에 자산 전송 외의 다양한 기능 구현이 가능해졌다는 점, 중개자에 대한 신뢰 없이도 컨트랙트로만 안전하게 거래가 가능해졌다는 점, 해당 기술이 점차 의료 서비스, 유통망과 같은 실제 생활에 영향을 끼치는 산업에도 점차 확장되고 있다는 점에서 스마트 컨트랙트는 앞으로도 혁신을 일으킬 수 있는 기술로 볼 수 있겠습니다.
-> '스마트 컨트랙트' 원문 보러가기