이 시리즈의 첫 번째 부분에서는 인터넷이 어떻게 분산된 기업을 만들 수 있는지를 이야기했습니다. 이러한 기업은 인터넷을 통해 완전히 분산된 네트워크로 존재하며, 수천 개의 서버에서 그들을 “살아있게” 유지하는 계산을 수행합니다. 이 네트워크는 비트코인 잔액을 유지하고 거래를 송수신할 수 있습니다. 이러한 두 가지 능력: 사고할 수 있는 능력과 자본을 유지할 수 있는 능력은 이론적으로 경제 주체가 시장에서 생존하는 데 필요한 모든 것입니다. 그러나 실제로는 여전히 한 가지 주요 도전 과제가 남아 있습니다: 주변 세계와 실제로 상호작용하는 방법입니다.
데이터 얻기
이와 관련된 두 가지 주요 도전 과제 중 첫 번째는 입력입니다. 분산된 기업이 실제 세계에 대한 사실을 어떻게 배울 수 있을까요? 이론적으로는 사실 없이 존재할 수 있는 분산된 기업이 가능하지만, 계산 네트워크가 처음부터 제르멜로-프레넬 집합 이론 공리를 내장하고 무한 루프를 시작하여 모든 가능한 수학 정리를 증명할 수 있습니다. 그러나 실제로는 이러한 시스템조차도 세계가 흥미롭게 여기는 정리가 무엇인지 알아야 합니다. 그렇지 않으면 우리는 단순히 a+b=b+a, a+b+c=c+b+a, a+b+c+d=d+c+b+a와 같은 사실만 배우게 될 것입니다. 반면에 사람들이 원하는 것과 이를 얻기 위해 사용할 수 있는 자원에 대한 데이터를 가진 기업은 세계에 훨씬 더 유용할 것입니다.
여기서 우리는 두 가지 종류의 데이터를 구분해야 합니다: 자기 검증 데이터와 비자기 검증 데이터. 자기 검증 데이터는 특정 방식으로 계산된 후, 어떤 의미에서 자신의 유효성을 “증명”하는 데이터입니다. 예를 들어, 주어진 분산 기업이 ‘123456789’ 시퀀스를 포함하는 소수를 찾고 있다면, ‘12345678909631’을 입력하면 기업은 그 숫자가 실제로 소수임을 계산적으로 검증할 수 있습니다. 반면에 현재 베를린의 온도는 전혀 자기 검증이 되지 않습니다; 11도일 수도 있지만, 17도일 수도 있고, 심지어 231도일 수도 있습니다; 외부 데이터가 없으면 세 가지 값 모두 동등하게 정당해 보입니다.
비트코인은 흥미로운 사례입니다. 비트코인 시스템에서 거래는 부분적으로 자기 검증이 가능합니다. “올바르게 서명된” 거래의 개념은 완전히 자기 검증적입니다; 거래의 서명이 타원 곡선 디지털 서명 검증 알고리즘을 통과하면 거래는 유효합니다. 이론적으로는 거래의 서명 정확성이 이전 거래의 공개 키에 의존한다고 주장할 수 있지만, 이는 자기 검증 속성을 전혀 해치지 않습니다. 거래 제출자는 항상 이전 거래를 제출해야 할 수 있습니다. 그러나 자기 검증이 되지 않는 것이 있습니다: 시간입니다. 거래는 그 돈이 수신되기 전에 돈을 사용할 수 없으며, 더 중요한 것은 이미 사용된 돈을 사용할 수 없습니다. 동일한 돈을 사용하는 두 거래가 있을 경우, 이론적으로 어느 하나가 먼저 발생했을 수 있습니다; 한 역사에 대한 유효성을 자기 검증할 방법은 없습니다.
비트코인은 본질적으로 계산 민주주의로 시간 문제를 해결합니다. 네트워크의 대다수가 사건이 특정 순서로 발생했다고 동의하면, 그 순서는 진리로 받아들여지며, 이 민주적 과정의 모든 참가자가 정직하게 참여하도록 유도됩니다. 어떤 참가자가 그렇지 않다면, 그 악의적인 참가자가 나머지 네트워크의 총합보다 더 많은 계산 능력을 가지지 않는 한, 그의 역사 버전은 항상 소수 의견이 되어 거부당하고, 잘못된 행동을 한 사람은 블록 수익을 잃게 됩니다.
보다 일반적인 경우에서 블록체인 개념에서 우리가 얻을 수 있는 기본 아이디어는 다음과 같습니다: 우리는 어떤 사실의 올바른 가치를 투표하기 위해 자원 민주주의 메커니즘을 사용할 수 있으며, “주류 관점”과 일치하지 않는 보고서를 제공하는 모든 사람에게 금전적 보상을 박탈함으로써 사람들이 정확한 추정치를 제공하도록 유도할 수 있습니다. 질문은, 이 동일한 개념이 다른 곳에도 적용될 수 있는가입니다. 예를 들어, 많은 사람들이 보고 싶어하는 비트코인에 대한 한 가지 개선은 가격 안정화의 형태입니다; 비트코인이 다른 통화나 상품에 대한 자신의 가격을 추적할 수 있다면, 알고리즘은 가격이 높을 때 더 많은 비트코인을 방출하고 가격이 낮을 때는 더 적은 비트코인을 방출하여 자연스럽게 가격을 안정화하고 현재 시스템이 경험하는 대규모 급등을 줄일 수 있습니다. 그러나 지금까지는 이를 실현할 수 있는 실용적인 방법이 발견되지 않았습니다. 하지만 왜 안 될까요?
답은 정밀성에 있습니다. 이론적으로는 그러한 프로토콜을 설계하는 것이 가능합니다: 채굴자는 각 블록에 비트코인 가격에 대한 자신의 견해를 넣을 수 있으며, 그 데이터를 사용하는 알고리즘은 마지막 천 개 블록의 중앙값을 취하여 이를 가져올 수 있습니다. 중앙값의 범위에 들어가지 않는 채굴자는 처벌을 받게 됩니다. 그러나 문제는 채굴자들이 사기를 저지를 유인과 상당한 여지가 있다는 것입니다. 주장은 이렇습니다: 실제 비트코인 가격이 114달러라고 가정하고, 당신이 네트워크의 상당한 비율(예: 5%)을 가진 채굴자라면, 113에서 115달러 사이가 안전한 범위에 있을 확률이 99.99%라는 것을 알고 있으므로, 그 범위 내에서 숫자를 보고하면 블록이 거부되지 않을 것입니다. 당신은 비트코인 가격이 얼마라고 말해야 할까요? 답은 115달러와 같은 것입니다. 이유는 당신이 추정치를 더 높게 설정하면, 네트워크가 제공하는 중앙값이 114.05 BTC가 될 수 있기 때문이며, 비트코인 네트워크는 이 정보를 사용하여 더 많은 돈을 인쇄하게 됩니다 – 기존의 저축자들의 비용으로 자신의 미래 수익을 증가시키는 과정에서. 모든 사람이 이렇게 하면, 심지어 정직한 채굴자들도 자신의 블록이 너무 낮은 가격 보고로 거부당하지 않도록 추정치를 상향 조정할 필요성을 느끼게 됩니다. 그 시점에서 사이클이 반복됩니다: 가격이 114달러이고, 당신은 114에서 116달러가 안전한 범위에 있을 것이라고 99.99% 확신하므로, 116달러라고 답을 적습니다. 그 다음 사이클에서 117달러, 그리고 118달러가 되고, 어느새 전체 네트워크가 하이퍼인플레이션에 빠지게 됩니다.
위의 문제는 두 가지 사실에서 발생했습니다: 첫째, 가격에 대한 허용 가능한 가능성의 범위가 있으며, 둘째, 투표자들은 답을 한 방향으로 밀어줄 유인이 있습니다. 작업 증명 대신 지분 증명이 사용된다면(즉, 하나의 비트코인이 하나의 투표가 되는 대신, 하나의 클럭 사이클이 하나의 투표가 되는 경우), 반대의 문제가 발생할 것입니다: 모든 사람이 가격을 낮추기 위해 입찰할 것입니다. 이해관계자들은 새로운 비트코인이 전혀 발행되기를 원하지 않기 때문입니다. 작업 증명과 지분 증명을 결합하여 문제를 해결할 수 있을까요? 아마도, 아닐 수도 있습니다.
또한, 이 문제를 해결할 수 있는 또 다른 잠재적인 방법이 있습니다. 적어도 기본 통화보다 더 높은 수준의 응용 프로그램에 대해: 보고된 시장 가격이 아니라 실제 시장 가격을 살펴보는 것입니다. 예를 들어, 다양한 암호화 자산 간의 분산된 거래소를 포함하는 리플(Ripple)과 같은 시스템이 이미 존재한다고 가정해 보십시오. 일부는 금이나 미국 달러와 같은 자산을 나타내는 계약일 수 있고, 다른 일부는 회사 주식, 다른 것은 스마트 자산일 수 있으며, 비트코인과 유사한 신뢰 없는 암호화폐도 분명히 존재할 것입니다. 따라서 시스템을 사기치려면 악의적인 참가자는 단순히 선호하는 방향으로 약간 잘못된 가격을 보고하는 것이 아니라, 이러한 상품의 실제 가격을 밀어야 합니다 – 본질적으로 LIBOR 스타일의 가격 조작 음모입니다. 그리고 지난 몇 년의 경험이 보여주듯이, LIBOR 스타일의 가격 조작 음모는 인간이 통제하는 시스템조차도 반드시 극복할 수 있는 것은 아닙니다.
게다가, 암호화 시장 없이 정확한 가격을 포착하는 것이 매우 어렵게 만드는 이 기본적인 약점은 보편적이지 않습니다. 가격의 경우, 부패의 여지가 분명히 많습니다 – 위의 내용은 가능한 부패의 전체 범위를 설명하기 시작하지도 않았습니다. 예를 들어, 비트코인이 개별 법정 통화보다 훨씬 더 오래 지속될 것으로 기대한다면, 우리는 통화 생성 알고리즘이 비트코인의 가격을 상품 측면에서 고려하도록 하고, USD와 같은 개별 통화는 남겨두어야 합니다. 그러나 대부분의 다른 경우에는 그러한 문제가 존재하지 않습니다. 예를 들어, 베를린의 날씨에 대한 분산 데이터베이스가 필요하다면, 한쪽 방향으로 조작할 심각한 유인이 없습니다. 기술적으로, 분산 기업이 농작물 보험에 들어가게 되면 상황이 다소 바뀔 수 있지만, 그곳에서도 위험은 더 작을 것입니다. 왜냐하면 서로 반대 방향으로 끌어당기는 두 그룹(즉, 가뭄이 있다고 주장하는 농부와 그렇지 않다고 주장하는 보험사)이 있을 것이기 때문입니다. 따라서 분산된 날씨 네트워크는 오늘날의 기술로도 충분히 만들 수 있는 것입니다.
세계에 행동하기
어떤 종류의 민주적 투표 프로토콜을 통해, 우리는 분산된 기업이 세계에 대한 사실을 배울 수 있다고 추론했습니다. 그러나 반대로 할 수 있을까요? 기업이 단순히 앉아있고 사람들이 비트코인처럼 데이터베이스 항목에 가치를 할당하기를 기다리는 것 이상으로 환경에 실질적으로 영향을 미칠 수 있을까요? 답은 예이며, 목표를 달성할 수 있는 여러 가지 방법이 있습니다. 첫 번째이자 가장 명백한 방법은 API를 사용하는 것입니다. API(응용 프로그램 프로그래밍 인터페이스)는 특정 웹사이트나 다른 소프트웨어 프로그램과 상호작용할 수 있도록 특별히 설계된 인터페이스입니다. 예를 들어, http://blockchain.info/address/1AEZyM6pXy1gxiqVsRLFENJLhDjbCj4FJz?format=json에 HTTP GET 요청을 보내면 blockchain.info의 서버에 지시를 보내고, 그 서버는 비트코인 주소 1AEZyM6pXy1gxiqVsRLFENJLhDjbCj4FJz에 대한 최신 거래를 컴퓨터 친화적인 형식으로 포함한 파일을 반환합니다. 지난 10년 동안 비즈니스가 점점 더 인터넷으로 이동함에 따라 API를 통해 접근할 수 있는 서비스의 수가 급격히 증가하고 있습니다. 우리는 인터넷 검색, 날씨, 온라인 포럼, 주식 거래 등을 가지고 있으며, 매년 더 많은 API가 생성되고 있습니다. 비트코인과 함께 우리는 가장 중요한 요소 중 하나인 돈을 위한 API를 가지고 있습니다.
그러나 여전히 하나의 중요한 문제, 그리고 놀랍도록 평범한 문제가 남아 있습니다: 현재 HTTP 요청을 분산된 방식으로 보내는 것은 불가능합니다. 요청은 결국 하나의 조각으로 서버에 전송되어야 하며, 이는 어디선가 전체가 조립되어야 함을 의미합니다. 공공 데이터를 검색하는 것만을 목적으로 하는 요청의 경우, 위에서 설명한 블록체인 쿼리와 같이 이는 심각한 문제가 아닙니다; 이 문제는 투표 프로토콜로 해결할 수 있습니다. 그러나 API에 접근하기 위해 개인 API 키가 필요한 경우, 자원을 구매하는 것과 같은 활동을 자동화하는 모든 API는 개인 키가 최종 수신자가 아닌 곳에 평문으로 나타나면 즉시 개인 키의 프라이버시가 손상됩니다. 요청에 서명을 요구하는 것은 이 문제를 완화합니다; 서명은 위에서 보았듯이 분산된 방식으로 수행할 수 있으며, 서명된 요청은 변조될 수 없습니다. 그러나 이는 API 개발자가 이를 달성하기 위해 추가적인 노력을 기울여야 함을 의미하며, 현재까지 서명된 API 요청을 표준으로 채택하는 데는 아직 멀었습니다.
그 문제를 해결하더라도 또 다른 문제가 여전히 남아 있습니다. API와 상호작용하는 것은 컴퓨터 프로그램에게는 도전이 아닙니다; 그러나 프로그램은 처음에 그 API에 대해 어떻게 배우나요? API가 변경될 때 어떻게 처리하나요? 특정 API를 운영하는 기업이 완전히 중단되고 다른 기업이 그 자리를 차지할 경우는 어떻게 되나요? API가 제거되고 대체할 것이 아무것도 존재하지 않는다면? 마지막으로, 분산된 기업이 자신의 소스 코드를 변경해야 하는 경우는 어떻게 되나요? 이러한 문제는 컴퓨터가 해결하기 훨씬 더 어렵습니다. 이에 대한 유일한 답은: 인간에게 의존하는 것입니다. 비트코인은 그것을 유지하기 위해 인간에 크게 의존합니다; 우리는 2013년 3월 블록체인 포크가 비트코인 커뮤니티의 적극적인 개입이 필요하다는 것을 보았습니다. 비트코인은 설계할 수 있는 가장 안정적인 분산 컴퓨팅 프로토콜 중 하나입니다. 51% 공격이 발생하더라도 블록체인 포크가 네트워크를 세 개로 나누고 DDoS가 다섯 개의 주요 채굴 풀을 동시에 다운시킨다면, 연기가 걷힌 후 어떤 블록체인이 앞서 나올 것이며, 채굴자들은 그 주위에 조직하고 네트워크는 그곳에서 계속 진행될 것입니다. 더 복잡한 기업은 훨씬 더 취약할 것입니다; 만약 자금을 보유한 네트워크가 개인 키를 유출한다면, 그 결과는 파산입니다.
그러나 인간을 너무 많이 신뢰하지 않고 어떻게 사용할 수 있을까요? 만약 해당 인간이 가능한 한 측정하기 쉬운 매우 특정한 작업만 부여받는다면, 예를 들어 가능한 한 빠른 채굴기를 만드는 것이라면, 문제는 없습니다. 그러나 인간이 수행해야 할 작업은 정확히 그렇게 쉽게 측정할 수 없는 작업입니다; 새로운 API를 발견한 사람에게 얼마를 보상해야 할까요? 비트코인은 복잡성을 제거하여 한 단계 높은 추상화로 나아감으로써 이 문제를 해결합니다: 비트코인의 주주들은 가격이 오르면 이익을 얻으므로, 주주들은 가격을 높이는 일을 하도록 유도됩니다. 사실, 비트코인의 경우 프로토콜을 지원하고 성장시키며 더 넓은 채택을 돕는 것을 중심으로 한 준종교가 형성되었습니다; 모든 기업이 그러한 열렬한 추종을 가질 것이라고 상상하기는 어렵습니다.
적대적 인수
“미래 보장” 문제와 함께 해결해야 할 또 다른 문제가 있습니다: “적대적 인수” 문제입니다. 이는 비트코인의 경우 51% 공격과 동등하지만, 위험이 더 큽니다. 자금을 처리하는 기업의 적대적 인수는 공격자가 기업의 전체 지갑을 비울 수 있는 능력을 얻는 것을 의미합니다. 분산된 드롭박스의 적대적 인수는 공격자가 모든 파일을 읽을 수 있게 합니다(파일이 암호화되어 있기를 바라지만, 공격자가 여전히 모든 사람에게 파일을 거부할 수 있는 경우도 있습니다). 분산 웹 호스팅 회사의 적대적 인수는 웹사이트를 호스팅하는 사람들뿐만 아니라 그들의 고객에게도 막대한 손실을 초래할 수 있습니다. 공격자는 각 고객이 로그인할 때 고객의 개인 데이터를 공격자의 서버로 전송하도록 웹 페이지를 수정할 수 있는 능력을 얻기 때문입니다. 적대적 인수는 어떻게 이루어질 수 있을까요? 501-1000 개인 키 상황의 경우, 답은 간단합니다: 동시에 수천 개의 서로 다른 서버인 척하고, 그 모든 서버로 기업에 가입하는 것입니다. 봇넷에 감염된 수백만 대의 컴퓨터를 통해 통신을 전달함으로써, 이는 탐지되지 않고 쉽게 수행할 수 있습니다. 그런 다음 네트워크의 절반 이상의 서버를 확보하면 즉시 현금을 인출할 수 있습니다.
다행히도 비트코인의 존재는 여러 가지 해결책을 만들어냈으며, 그 중 비트코인 자체가 사용하는 작업 증명도 하나입니다. 비트코인은 돈을 위한 완벽한 API이기 때문에, 통화 부족과 인센티브와 관련된 모든 종류의 프로토콜이 이제 컴퓨터 네트워크에서 사용 가능합니다. 각 참여 노드가 100 BTC를 제어하고 있다는 증거를 보여주어야 하는 지분 증명도 하나의 가능한 해결책입니다; 그렇게 된다면, 적대적 인수를 수행하려면 모든 합법적인 노드가 함께 모은 것보다 더 많은 자원이 필요합니다. 100 BTC는 네트워크가 부분적으로 제어하는 다중 서명 주소로 이동될 수도 있으며, 이는 노드가 사기를 저지르는 것을 방지하고 소유자에게 기업을 유지하기 위해 행동하도록 유도하는 훌륭한 인센티브를 제공합니다.
또 다른 대안은 분산된 기업이 주주를 가질 수 있도록 하여, 주주가 투자에 대한 대가로 이익의 일부를 받을 권리와 함께 특별한 투표 권한을 부여받는 것입니다; 이것은 또한 주주가 자신의 투자를 보호하도록 유도할 것입니다. 개별 인간 직원에 대한 보다 세밀한 평가를 하는 것은 아마도 불가능할 것입니다; 최선의 해결책은 아마도 사람들의 행동을 대략적으로 유도하기 위해 금전적 인센티브를 사용하는 것이고, 그런 다음 커뮤니티가 자율적으로 세밀한 조정을 하도록 하는 것입니다. 기업이 개별 개인보다는 커뮤니티를 투자 및 참여 대상으로 삼는 정도는 원래 개발자의 선택입니다. 한편으로, 커뮤니티를 타겟팅하면 인간 지원이 대규모로 협력하여 문제를 해결할 수 있습니다. 반면에, 모든 사람을 분리하면 공모를 방지하고, 그렇게 함으로써 적대적 인수의 가능성을 줄입니다.
따라서 우리가 여기서 본 것은 분산된 기업이 실행 가능해지기 전에 여전히 상당한 도전 과제가 남아 있다는 것입니다. 이 문제는 여러 단계로 해결될 가능성이 높습니다. 첫째, 비트코인의 출현으로 자가 지원하는 암호화폐의 층이 존재하게 되었습니다. 다음으로, 리플과 컬러드 코인으로 암호화 시장이 등장할 것이며, 이는 암호 기업에 정확한 가격 데이터를 제공하는 데 사용될 수 있습니다. 동시에 분산 시스템의 요구를 충족하기 위해 점점 더 많은 암호 친화적인 API가 등장할 것입니다. 이러한 API는 분산된 기업이 존재할지 여부와 관계없이 필요할 것입니다; 오늘날 우리는 암호화 키를 안전하게 유지하는 것이 얼마나 어려운지를 보고 있으므로, 다자 서명에 적합한 인프라가 필요할 것입니다. 예를 들어, 대형 인증서 서명 기관은 잘못된 손에 넘어가면 수억 달러의 보안 위반을 초래할 수 있는 개인 키를 보유하고 있으며, 이러한 조직은 이미 어떤 형태의 다자 서명을 사용하고 있습니다.
마지막으로, 사람들이 이러한 분산 기업이 어떻게 작동할지를 개발하는 데는 여전히 시간이 걸릴 것입니다. 컴퓨터 소프트웨어는 현대 세계의 가장 중요한 구성 요소가 되어가고 있지만, 지금까지 이 분야에 대한 연구는 두 가지 영역에 집중되어 있었습니다: 인공지능, 즉 순수하게 독립적으로 작동하는 소프트웨어와 인간 아래에서 작동하는 소프트웨어 도구. 질문은: 중간에 뭔가 있을까요? 만약 있다면, 인간을 지시하는 소프트웨어, 즉 분산 기업이 바로 그것입니다. 두려움과는 달리, 이는 인류에 철권을 가하는 악의적인 로봇이 아닙니다; 사실, 기업이 아웃소싱해야 할 작업은 가장 많은 인간의 자유와 창의성을 요구하는 작업입니다. 가능할지 지켜봅시다.
보충 읽기: 자율 기업이 유용할 수 있는 한 가지 실용적인 예에 대한 제프 가르직의 기사