스마트 계약이란 무엇인가요?
이 질문은 요즘 디지털 바 싸움을 시작하지 않고는 대답하기 불가능한 질문이 되었습니다. 이 용어가 대화 중에 언급되면 대부분의 사람들은 즉시 “이더리움”이나 “솔라나”, “트론” 또는 비트코인이 시작된 이후로 등장한 이름만으로 분산화된(DINO) 프로젝트들을 떠올립니다.
이 생태계에 새로 들어온 사람이나 잘 모르는 사람들은 아마도 “스마트 계약”이라는 용어가 이더리움과 같은 프로젝트에 의해 만들어졌다고 생각하고, 이 프로젝트들이 그것을 실제로 발명했다고 믿을 것입니다.
“스마트 계약”이라는 말을 들으면 아마도 분산 자율 조직(DAO), 분산 거래소, 자동 시장 조성자 및 이더리움의 다른 튜링 완전 애플리케이션에 대해 즉시 생각할 것입니다. 개념적으로, 그 수준의 복잡성에 접근하지 않는 것은 대부분의 사람들이 즉시 스마트 계약이 아니라고 간주할 것입니다. 하지만 사실은 전혀 다릅니다.
스마트 계약의 탄생
“스마트 계약”이라는 용어는 1996년 닉 자보에 의해 만들어졌으며, 블록체인이라는 개념이 사토시의 눈에 띄기 전이었습니다. 이들은 DAO, 분산 거래소 또는 사람들이 이 용어를 들을 때 떠올리는 이러한 유형의 구조와는 아무런 관련이 없었습니다.
개념은 이더리움과 같은 플랫폼 위에 구축된 시스템보다 훨씬 더 단순하고 기본적이었습니다. 스마트 계약은 단순히 기존의 법적 계약을 가져와서 가능한 한 정부 관할권의 범위를 넘어 소프트웨어와 하드웨어를 통해 집행할 수 있는 방법을 찾는 것이었습니다.
자보 자신이 인용한 내용입니다:
“새로운 제도와 이러한 제도를 구성하는 관계를 공식화하는 새로운 방법들이 디지털 혁명에 의해 가능해졌습니다. 나는 이러한 새로운 계약을 ‘스마트’라고 부릅니다. 왜냐하면 이들은 무생물적인 종이 기반의 조상보다 훨씬 더 기능적이기 때문입니다. 인공지능의 사용은 암시되지 않습니다. 스마트 계약은 당사자들이 이러한 약속을 이행하는 프로토콜을 포함하여 디지털 형식으로 지정된 약속의 집합입니다.”
이 정의에서는 “튜링 완전성”이나 “분산 자율 조직” 또는 스마트 계약으로 간주되기 위해 필요한 최소한의 복잡성을 암시하는 어떤 것도 언급되지 않았습니다. 자보가 스마트 계약의 선구자로 제시한 몇 가지 예 — 또는 내가 정의하는 “프로토 스마트 계약” — 는 자판기나 판매 시점(POS) 시스템과 같은 매우 기본적인 것들입니다.
자판기의 경우, 이는 하드웨어에 내장된 “프로토 스마트 계약”입니다. 그것이 구현하는 “계약”은 매우 간단합니다: 사용자가 동전을 기계에 넣으면 기계가 사용자가 구매한 음식을 제공합니다. 전반적으로 기계의 보안은 실제 물리적 하드웨어에 달려 있습니다. 자판기를 열고 음식을 빼내는 것은 매우 시간 소모적이고 어렵기 때문에, 대부분의 경우 범죄자가 법 집행 기관이나 자판기가 위치한 장소의 직원에게 발각되지 않고 그렇게 할 가능성은 매우 낮습니다.
또 다른 중요한 세부 사항은 계약이 일반적으로 관련 당사자 간의 여러 단계를 포함한다는 것입니다. 계약적 합의와 관련된 사항이 단일 단계에서 이루어질 수 있는 경우는 매우 드뭅니다. 사용자가 자판기에 동전을 넣고, 그 다음 사용자가 구매할 항목을 선택하고, 사용자가 선택을 마치면 기계가 상품을 제공합니다. 이는 네 단계의 과정입니다: 첫째, 돈을 넣기; 둘째, 기계가 상품 선택 과정으로 진행하기; 셋째, 사용자가 선택하기; 넷째, 기계가 사용자의 선택을 제공하기.
이제 고려해야 할 중요한 점이 있습니다: 계약의 동적은 두 당사자, 즉 자판기와 고객을 포함합니다. 이는 위에서 정의한 네 단계를 통해 달성된 매우 간단한 조항을 구체화합니다: 자판기에 돈을 주면 자판기가 음식을 제공합니다.
하지만 자판기에 돈을 넣었는데 음식이 제대로 나오지 않으면 어떻게 될까요? 이 문제는 누가 처리하나요? 계약이 스스로 실행되지 못한 후 이를 해결하고 “계약”을 제대로 해결하기 위해 누구에게 가야 하나요? 이 실행 실패를 해결하기 위해서는 자판기가 위치한 사업체의 직원을 찾거나, 해당 소유자의 지원 라인에 연락해야 합니다. 누군가가 개입하여 계약의 잘못된 실행을 실제로 수정해야 합니다.
이것은 매우 중요한 점으로 이어집니다: “스마트 계약”은 정의상 제3자에 대한 신뢰가 없음을 의미하지 않습니다. 사실, 자보의 말에 따르면, “스마트 계약은 종종 성과를 수행하는 중개자와 성과에서 발생하는 분쟁을 해결하기 위해 호출되는 중재자를 포함하여 신뢰할 수 있는 제3자를 포함합니다.”
정말로 생각해 보세요: 어떤 종류의 계약에서도 한쪽 당사자가 속이거나 계약의 의무를 이행하지 않을 가능성이 존재합니다. 계약이 제대로 실행되지 않을 가능성은 항상 존재합니다. 잘못된 실행이 발생할 경우, 정의상 제3자가 개입하여 적절한 실행을 보장하고 초기 잘못된 실행에 대해 적절한 경우 처벌을 부과해야 합니다.
대부분의 프로토 스마트 계약과 완전한 스마트 계약은 신뢰가 없습니다. 대부분은 양측에서 자동화될 수조차 없습니다. 예를 들어, 누군가가 주유소의 POS 기계에서 직불카드로 담배 한 갑을 구매하는 경우를 생각해 보세요. 그 고객은 실제로 등록대의 다른 쪽에 있는 사람에게 담배를 건네줄 것을 신뢰해야 합니다. 만약 직원이 그렇게 하기를 거부한다면, 고객은 자신이 지불한 것을 받지 못했기 때문에 은행이나 카드 처리업체가 환불해 줄 것이라고 신뢰해야 합니다.
스마트 계약의 목표
이제 프로토 스마트 계약의 개념적 신뢰 모델을 확립했으니, 자보가 설명한 계약 설계의 네 가지 중요한 목표를 살펴보겠습니다.
관찰 가능성: 계약에 관련된 사람(또는 사물)은 상대방이 계약 조건에 맞게 올바르게 수행하고 있음을 볼 수 있어야 하며, 자신이 상대방에게 올바르게 수행하고 있음을 증명할 수 있어야 합니다.
검증 가능성: 계약의 모든 당사자는 계약이 올바르게 수행되었거나 한쪽 당사자(또는 당사자들)가 계약의 의무를 위반했음을 선택된 중재자에게 증명할 수 있는 능력이 필요합니다.
비밀성: 계약은 가능한 한 비공식적으로 구조화되어야 합니다. 계약 또는 관련 당사자에 대한 개인 정보가 공개되거나 다른 제3자에게 전달되는 양은 계약 이행에 필요한 최소한으로 유지되어야 합니다.
집행 가능성: 계약의 조건에 따라 한쪽 또는 여러 당사자가 의무를 위반하더라도 올바르게 실행되도록 보장하는 메커니즘이 필요하며, 계약은 집행이 필요할 가능성을 매우 낮게 구조화해야 합니다. 계약은 당사자들이 자발적으로 의무를 준수하도록 장려해야 합니다.
위의 설계 목표는 계약이 대다수의 경우 올바르게 실행될 확률을 높이기 위해 존재하며, 동시에 계약의 세부 사항이 공개의 눈으로부터 보호되도록 하여 이러한 세부 사항을 공개하는 것이 계약의 조건이 올바르게 실행될 확률을 높이는 데 절대적으로 필요하지 않은 한 공개되지 않도록 합니다.
스마트 계약의 원시 요소
암호화 프로토콜은 스마트 계약의 정의적 구성 요소입니다. 자보는 이를 “스마트 계약에서 관찰 가능성, 검증 가능성, 비밀성 및 집행 가능성 간의 개선된 절충안을 구현하는 기본 빌딩 블록”이라고 불렀습니다.
그렇다면 암호화 프로토콜을 구현하는 데 필요한 기본 원시 요소는 무엇인가요? 물론 암호화 키 쌍입니다.
스마트 계약에 참여하기 위해서는 주요 참가자와 중재자가 각각 개인 키를 생성한 다음 이를 기반으로 공개 키를 도출하여 다른 참가자와 상호작용하는 수단으로 공유해야 합니다. 또한 참가자들이 스마트 계약의 조건과 실행에 서명할 수 있는 디지털 서명 체계가 필요하며, 필요할 경우 중재자에게 해당 서명을 통해 계약의 초기 조건에 대한 동의와 계약이 올바르게 실행되었는지를 보여주는 증거를 제공해야 합니다.
이는 스마트 계약의 생성 및 실행에 참여하는 모든 당사자에게 필수적인 요구 사항을 도입합니다: 개인 키를 보호하는 것입니다. 이는 두 가지 이유로 매우 중요합니다.
첫째, 스마트 계약에 관련된 개인 키가 손상되어 도난당하면, 도둑은 당신이 계약을 잘못 실행하려고 했던 것처럼 보이게 만들 수 있습니다. 둘째, 도둑이 그렇게 하면 스마트 계약의 다른 참가자에게 당신이 신뢰할 수 없는 상대방이라는 인식을 심어줍니다(그리고 잠재적으로 대중에게도). 이는 당신에게 나쁜 평판을 줍니다.
최소한 이러한 사건은 해당 스마트 계약의 상대방이 당신과 계약을 맺고 싶지 않게 만들 것입니다. 그 이상으로, 계약 위반이 공개되거나 대중에게 드러나면, 당신과 스마트 계약을 맺는 것에 대한 주저함이 더 넓은 대중으로 퍼질 가능성이 높습니다. 평판은 법적 신원이나 단순한 가명에 묶일 수 있으므로, 평판 손상의 정도는 평판이 무엇에 묶여 있는지에 따라 다를 수 있지만, 평판 손상은 여전히 발생할 수 있습니다. 차이는 단지 사건 후 손상된 평판으로부터 자신을 분리하는 것이 얼마나 어려운지에 있습니다(즉, 인터넷의 가명과 실제 이름의 차이).
이제 스마트 계약의 매우 기본적인 예를 살펴보겠습니다.
1990년대, 자보가 이 용어를 처음 만든 시기에 가장 흥미로운 암호화 도구 중 하나는 데이비드 차움의 디지털 전자 화폐였습니다(여기에서 자세히 설명됨). 간단히 요약하자면: 전자 화폐를 중앙 권한(계약의 중재자)에서 발행한 디지털 지폐로 생각하세요. 이 지폐는 단순히 유효성을 증명하는 중앙 권한의 암호화 서명이 있는 큰 무작위 숫자입니다. 이를 사용하려면, 당신은 지불할 사람에게 주고, 그들은 중앙 권한에서 이를 상환하여 새 지폐를 발급받습니다. 또한 서명 과정의 작동 방식 때문에, 권한은 누가 누구에게 지불했는지를 알 수 없으므로 매우 비공식적입니다.
이 스마트 계약에서는 지출자와 수령자, 그리고 지출자와 수령자 간의 전송이 발생했는지를 중재하는 중앙 권한이 있습니다. 당시 이 설계의 일부는 두 가지 모드로 스마트 계약을 사용하는 것에 기반하고 있었습니다: 하나는 인터넷에 연결된 상태에서 디지털 지폐를 즉시 상환하는 것이고, 다른 하나는 상환 과정을 지연시키고 디지털 지폐를 일괄 상환하는 것입니다.
첫 번째 방법을 사용하는 경우, 정직한 중앙 권한이 있다면, 이미 중앙 권한에 의해 상환된 지폐로 사기를 당할 위험은 없어야 합니다. 오프라인 사용의 경우, 수령자는 고객이 여러 장소에서 디지털 지폐를 사용하는 위험을 감수해야 하며, 이는 그 중 한 수령자만이 중앙 권한에서 이를 상환할 수 있음을 의미합니다. 다른 모든 사람은 돈을 잃게 됩니다.
사기를 당한 당사자(또는 당사자들)는 이제 미래의 상호작용에서 자신을 속인 사람의 평판을 다르게 평가할 수밖에 없습니다. 합리적으로, 그 시점 이후로 그들은 중앙 권한에서 디지털 지폐를 성공적으로 상환하기 전까지는 그 고객에게 상품이나 서비스를 제공하지 않겠다고 거부할 것입니다. 심지어 미래에 그 고객과 비즈니스를 할지도 의문입니다.
차움식 전자 화폐 시스템에서 중앙 권한은 집행 권한이며, 사용자는 결과를 집행하기 위해 해당 권한에 데이터를 제공하는 오라클입니다. 디지털 지폐의 수령자가 이를 상환하기 위해 갈 때, 그들은 오라클로 기능하고 있습니다(무언가를 주장하는 사람 또는 사물이며, 가능할 경우 그 주장이 진실임을 증명하는 것입니다). 그들은 권한에게 누군가로부터 디지털 지폐를 받았다고 주장합니다. 그 주장의 증거는 디지털 지폐 자체이며, 권한은 오라클이 한 주장이 유효하다고 판단할 경우에만 새로운 지폐를 발급합니다.
나중에 언급할 가치가 있는 점은 거래에 제3자 오라클이 개입할 수 있다는 것입니다. 즉, 두 사람이 디지털 지폐를 제3자 오라클에게 전달하여 모든 지폐가 축구 경기의 결과에 따라 한 참가자 또는 다른 참가자에게 다시 전달되는 것입니다. 여기서 단순한 거래의 간단한 예와의 유일한 실제 차이는 오라클의 주장의 진실성을 자동화된 컴퓨터가 검증할 수 없다는 것입니다. 많은 종류의 오라클이 할 수 있는 주장은 오직 인간만이 검증할 수 있습니다.
그렇다면 이것은 궁극적으로 이 스마트 계약의 본질에 대해 무엇을 보여줍니까? 양측이 정직하게 행동할 유인이 충분히 좋거나(즉, 상인이 당신이 속이면 미래에 음식을 팔지 않을 것입니다), 또는 고객이 부정직하게 행동할 여지가 없도록 계약을 적절히 집행할 중재자를 신뢰해야 합니다. 따라서 양측은 서로가 정직하게 행동할 것이라고 신뢰해야 하며, 만약 한 참가자가 부정직하게 행동하려 한다면, 다른 참가자는 자신을 보호하기 위해 중재자가 정직하게 행동할 것이라고 신뢰해야 합니다. 이를 피할 방법은 없습니다.
스마트 계약 플랫폼으로서의 비트코인
그렇다면 이제 모든 것을 비트코인으로 가져오겠습니다. 비트코인은 문자 그대로 스마트 계약 플랫폼입니다. 그것이 바로 비트코인의 본질이며, 항상 그랬고, 그렇게 설계되었습니다.
비트코인 네트워크는 스마트 계약의 적절한 실행을 보장하는 거대한 분산 중재자로 기능하며, 이를 위해 단일 중앙 권한에 의존하지 않습니다. 이는 계약이 관찰 가능하고, 검증 가능하며, 집행 가능하도록 하는 메커니즘을 제공합니다. 역사적으로 비트코인 스마트 계약이 부족했던 유일한 특성은 비밀성입니다 — 비트코인 스마트 계약의 모든 조건은 모두가 볼 수 있도록 공개되어 있습니다. 그러나 최소한 계약에 참여하는 사람들의 실제 신원은 보호하며, 최근의 탭루트 활성화는 계약의 조항을 집행하는 데 필요하지 않은 한 숨기는 데 있어 큰 개선입니다.
비트코인 거래가 발생할 때마다 발신자는 돈을 지출할 수 있는 능력을 주장하고 디지털 서명의 형태로 증거를 제공하는 오라클로 행동합니다. 수신자와 네트워크의 모든 참가자는 거래가 네트워크를 통해 전파되는 것을 관찰하고 디지털 서명이 올바른지 검증합니다. 그런 다음, 다음 블록을 성공적으로 찾은 채굴자가 중앙 권한의 역할을 맡아 거래를 블록에 포함시키고 네트워크를 통해 전파하여 스마트 계약을 “실행”합니다. 마지막으로, 수신자와 전체 네트워크는 블록 내의 모든 서명과 계약 증인을 검증합니다.
궁극적으로 비트코인에서 실행된 계약은 여전히 적절하게 실행되기 위해 중재자에 대한 신뢰를 필요로 하지만, 그 중재자는 서로를 교차 확인하는 모든 사람의 분산 네트워크입니다. 그 네트워크에 참여하는 사람들이 많을수록, 항상 올바르게 실행될 것이라는 신뢰도가 높아집니다. 이것이 비트코인의 가장 큰 성과이자, 동시에 비트코인의 가장 큰 한계(그리고 실제 분산화의 흔적이 있는 모든 블록체인)입니다.
블록체인(또는 네트워크의 모든 노드가 자신의 복사본을 검증하는 것)은 디지털 서명이 올바른 경우에만 거래가 처리되도록 하거나, 특정 시간이 만료될 때까지 코인이 이동하지 않도록 하는 타임락 후에만 거래가 처리되도록 하는 등 다양한 규칙을 스스로 집행할 수 있습니다. 암호화된 데이터를 입력하는 것만 요구되는 계약은 자동으로 집행할 수 있습니다. 왜냐하면 오라클이 100% 검증 가능한 암호화 데이터를 네트워크에 직접 게시하거나 게시하지 않기 때문입니다. 하지만 블록체인에서 검증할 수 없는 데이터를 입력해야 하는 계약은 자동으로 제대로 집행할 수 없습니다. 즉, 비트코인은 축구 게임에 대한 내기가 올바르게 실행되도록 자동으로 집행할 수 없습니다. 오라클이 주장하는 경기 종료 시점의 점수를 블록체인이 검증할 방법이 없습니다.
따라서 비트코인은 기본 거래 또는 상대적으로 간단한 암호화 조건이 있는 거래의 실행을 신뢰 없이 만들 수 있지만, 임의의 계약의 실행을 신뢰 없이 만들 수는 없습니다. 블록체인에 게시할 수 있는 데이터로 100% 올바르다고 입증할 수 있는 계약만이 신뢰 없이 집행될 수 있습니다.
이제 서로 다른 블록체인 아키텍처는 온체인 데이터만으로 증명할 수 있는 복잡한 것들의 정도를 다르게 허용할 수 있지만, 이는 이 글의 범위를 벗어난 보안 절충안에 대한 논의가 필요합니다. 온체인에 데이터를 게시하여 100% 입증할 수 없는 조건이 포함된 계약은 반드시 신뢰를 도입해야 하며, 그러나 위에서 논의한 바와 같이 제3자가 개입한다고 해서 스마트 계약이 아닌 것은 아닙니다.
따라서 “스마트 계약이란 무엇인가요?”라는 질문에 대한 답은 블록체인에서 발생하는 모든 것입니다.
이 글은 신오비의 게스트 포스트입니다. 표현된 의견은 전적으로 그들의 것이며 BTC Inc 또는 Bitcoin Magazine의 의견을 반드시 반영하지는 않습니다.