기업은 미트 롬니 미국 대통령 후보가 상기시켜 주듯이 사람입니다. 그의 지지자들이 이 주장으로부터 도출하는 결론에 동의하든 동의하지 않든, 이 진술은 분명히 많은 진실을 담고 있습니다. 결국 기업이란 특정 규칙 아래에서 함께 일하는 특정 그룹의 사람들에 다름 아닙니다. 기업이 재산을 소유할 때, 그것은 실제로 그 재산이 현재 이사회의 통제 아래 있는 사람들에 의해 특정 목적을 위해서만 사용될 수 있다는 법적 계약이 존재한다는 것을 의미합니다. 만약 기업이 무언가를 한다면, 그것은 이사회가 그렇게 해야 한다고 동의했기 때문입니다. 기업이 직원을 고용한다면, 이는 직원들이 특정 규칙, 특히 보수와 관련된 규칙에 따라 기업의 고객에게 서비스를 제공하기로 동의했다는 의미입니다. 기업이 제한된 책임을 가질 때, 이는 특정 사람들이 정부에 의해 법적 기소에 대한 두려움을 줄이고 행동할 수 있는 추가적인 특권을 부여받았다는 것을 의미합니다. 결국, 이는 혼자 행동하는 일반 사람들보다 더 많은 권리를 가진 사람들의 집단이지만, 결국 여전히 사람들입니다. 어쨌든, 이는 사람들과 계약으로 이루어진 것입니다.
하지만 여기서 매우 흥미로운 질문이 제기됩니다: 우리는 정말로 사람들이 필요할까요? 한편으로는, 대답은 예입니다: 어떤 포스트 싱귤래리티 미래에는 기계가 스스로 생존할 수 있겠지만, 예측 가능한 미래에는 물리적 세계와 상호작용하기 위해 어떤 형태의 인간 행동이 필요할 것입니다. 그러나 다른 한편으로는, 지난 200년 동안 대답은 점점 더 아니오로 바뀌었습니다. 산업 혁명은 우리가 처음으로 대규모로 인간 노동을 기계로 대체할 수 있게 해주었고, 이제 우리는 고도로 발전된 디지털 공장과 복잡한 상품을 스스로 생산하는 로봇 팔을 갖추게 되었습니다. 그러나 이는 단지 하위 노동력을 자동화하는 것에 불과합니다; 일반 노동자를 제거하고 로봇을 유지하기 위해 더 적은 수의 전문가로 대체하며, 회사의 관리는 그대로 유지됩니다. 문제는, 우리가 다른 방향에서 문제에 접근할 수 있을까요: 우리가 여전히 특정 전문 작업을 수행하기 위해 인간이 필요하더라도, 관리자를 방정식에서 제거할 수 있을까요?
대부분의 회사는 어떤 형태의 사명 선언문을 가지고 있습니다; 종종 그것은 주주를 위한 이익 창출에 관한 것입니다; 때때로, 그들이 만드는 특정 제품과 관련된 도덕적 의무가 포함되며, 이론적으로는 지역 사회를 돕는 등의 다른 목표도 포함됩니다. 현재 그 사명 선언문은 이사회와 궁극적으로 주주가 해석하는 한에서만 존재합니다. 그러나 현대 정보 기술의 힘으로, 우리는 사명 선언문을 코드로 인코딩할 수 있다면 어떨까요; 즉, 수익을 창출하고, 특정 기능을 수행하기 위해 사람들에게 보수를 지급하며, 스스로 실행할 하드웨어를 찾는 불가침 계약을 생성하는 것입니다.
렛츠 토크 비트코인의 다니엘 라르미에가 이 개념에 대한 자신의 탐구에서 지적했듯이, 어떤 면에서는 비트코인 자체가 바로 그런 것의 초기 프로토타입으로 생각될 수 있습니다. 비트코인은 2100만 개의 주식을 가지고 있으며, 이 주식은 비트코인의 주주로 간주될 수 있는 사람들에 의해 소유됩니다. 직원이 있으며, 그들에게 보수 지급을 위한 프로토콜이 있습니다: 약 10분마다 무작위로 노동자 중 한 명에게 25 BTC를 지급합니다. 심지어 주주들로 구성된 마케팅 부서도 있습니다. 그러나 그것은 매우 제한적입니다. 현재 시간 외에는 세상에 대해 거의 아무것도 알지 못하며, 기능의 어떤 측면도 변경할 방법이 없고, 실제로는 아무것도 하지 않습니다; 단순히 존재할 뿐이며, 세상이 그것을 인식하도록 남겨둡니다. 질문은: 우리는 더 나은 것을 할 수 있을까요?
계산
첫 번째 도전은 명백합니다: 그러한 기업은 실제로 어떻게 결정을 내릴까요? 예측 가능한 환경에서 주어진 입력을 받아 원하는 행동을 계산하는 코드를 작성하는 것은 쉽습니다. 그러나 누가 그 코드를 실행할까요? 코드가 특정 기계의 컴퓨터 프로그램으로 존재한다면, 그 기계의 소유자가 전체를 종료하거나 자신의 돈을 모두 자신에게 보내도록 코드를 수정하는 것을 막는 것은 무엇일까요? 이 문제에 대한 유일한 효과적인 답변은 분산 컴퓨팅입니다.
그러나 우리가 여기서 찾고 있는 분산 컴퓨팅의 종류는 SETI@home 및 Folding@home과 같은 프로젝트의 분산 컴퓨팅과는 다릅니다; 이러한 경우에는 여전히 분산 노드에서 데이터를 수집하고 요청을 보내는 중앙 서버가 존재합니다. 여기서는 비트코인에서 볼 수 있는 분산 컴퓨팅의 종류가 필요합니다: 자신의 계산을 분산적으로 자가 검증하는 규칙 집합입니다. 비트코인에서는 단순한 다수결 투표로 이를 달성합니다: 만약 당신이 다수의 네트워크 파워로 블록체인을 계산하는 데 도움을 주지 않는다면, 당신의 블록은 폐기되고 블록 보상을 받을 수 없습니다. 이론적으로는 단일 공격자가 이 메커니즘을 전복할 만큼의 컴퓨터 파워를 가지지 못하므로, 유일한 실행 가능한 전략은 본질적으로 “흐름을 따라가고” 네트워크를 지원하기 위해 정직하게 행동하여 자신의 블록 보상을 받는 것입니다. 그렇다면 이 메커니즘을 분산 계산에 단순히 적용할 수 있을까요? 즉, 네트워크의 모든 컴퓨터에 프로그램을 평가하도록 요청하고, 그 답이 다수결 투표와 일치하는 경우에만 보상을 줄 수 있을까요? 불행히도 대답은 아니오입니다. 비트코인은 단순한 경우입니다. 비트코인은 단지 통화일 뿐이며, 자신의 재산이나 개인 데이터를 가지고 있지 않습니다. 반면, 가상 기업은 비트코인 지갑의 개인 키를 저장해야 할 가능성이 높습니다. 이는 아무에게도 전혀 공개되어서는 안 되는 데이터 조각입니다. 그러나 물론 개인 키는 여전히 사용 가능해야 합니다. 따라서 우리가 필요한 것은 거래에 서명하고 비트코인 주소를 생성할 수 있는 분산 방식으로 계산할 수 있는 시스템입니다. 다행히도 비트코인은 정확히 그렇게 할 수 있게 해줍니다.
즉각적으로 떠오를 수 있는 첫 번째 해결책은 다중 서명 주소입니다; 신뢰할 수 있는 천 개의 컴퓨터 집합이 있다면, 각 컴퓨터가 개인 키를 생성하고 그들 사이에 501-of-1000 다중 서명 주소를 생성합니다. 자금을 사용하려면, 단순히 501개의 노드에서 서명을 받아 거래를 구성하고 이를 블록체인에 방송합니다. 여기서 문제는 명백합니다: 거래가 너무 클 것입니다. 각 서명은 약 70바이트를 차지하므로, 501개의 서명은 35KB의 거래를 생성합니다 – 이는 비트코인 기본적으로 10,000바이트 이상의 스크립트를 가진 거래를 거부하기 때문에 네트워크에서 수용되기 매우 어렵습니다. 두 번째로, 이 해결책은 비트코인에만 해당됩니다; 기업이 비재무적 목적을 위해 개인 데이터를 저장하려면, 다중 서명 스크립트는 쓸모가 없습니다. 다중 서명 주소는 비트코인 네트워크가 이를 평가하고 평가가 성공하는지 여부에 따라 블록체인에 거래를 배치하기 때문에 작동합니다. 개인 데이터의 경우, 유사한 해결책은 본질적으로 데이터를 저장하고 요청이 필요할 때 1000개 중 501개의 서명이 필요할 경우에만 데이터를 제공할 수 있는 분산 권한이 필요합니다 – 이는 우리가 시작한 곳으로 다시 돌아가게 만듭니다.
그러나 또 다른 해결책에서 여전히 희망이 있습니다; 암호학자들이 일반적으로 부르는 이름은 “안전한 다자간 계산”입니다. 안전한 다자간 계산에서는 프로그램의 입력(또는 더 정확하게는 “회로”의 입력, 안전한 다자간 계산은 “if” 문과 조건부 루프를 처리할 수 없기 때문에)은 샤미르의 비밀 공유라는 알고리즘을 사용하여 분할되고, 각 참가자에게 정보의 일부가 제공됩니다. 샤미르의 비밀 공유는 데이터를 N조각으로 나누어 K조각을 사용하여 원래 데이터를 복구할 수 있도록 할 수 있습니다 – 알고리즘을 실행할 때 K와 N을 선택합니다. 2-of-3, 5-of-10 및 501-of-1000이 모두 가능합니다. 그런 다음 회로는 데이터 조각에서 분산적으로 평가될 수 있으며, 계산이 끝날 때 모든 사람이 계산 결과의 일부를 가지지만, 계산 중에는 어떤 개인도 무슨 일이 일어나고 있는지 조금도 엿볼 수 없습니다. 마지막으로, 조각들이 모여 결과를 드러냅니다. 알고리즘의 런타임은 O(n3)이며, 계산을 평가하는 데 필요한 계산 단계 수는 참가자 수의 세제곱에 비례합니다; 10개의 노드에서 1000개의 계산 단계, 1000개의 노드에서 10억 단계입니다. C++에서 간단한 10억 단계 루프는 제 노트북에서 약 20초가 걸리며, 서버는 몇 분의 1초 만에 이를 수행할 수 있으므로 1000개의 노드는 현재 계산 실용성의 한계에 가깝습니다.
알고 보니, 안전한 다자간 계산을 사용하여 비트코인 주소를 생성하고 거래에 서명할 수 있습니다. 주소 생성을 위한 프로토콜은 간단합니다:
- 모두가 개인 키로 사용할 무작위 숫자를 생성합니다.
- 모두가 개인 키에 해당하는 공개 키를 계산합니다.
- 모두가 자신의 공개 키를 공개하고, 샤미르의 비밀 공유 알고리즘을 사용하여 공개 키 중 501개로부터 재구성할 수 있는 공개 키를 계산합니다.
- 그 공개 키로부터 주소가 생성됩니다.
공개 키는 더하기, 빼기, 곱하기 및 심지어 정수로 나누는 것이 가능하기 때문에, 놀랍게도 이 알고리즘은 예상한 대로 작동합니다. 만약 모두가 같은 방식으로 501-of-1000 개인 키를 조합한다면, 그 개인 키는 해당 공개 키에 501-of-1000 알고리즘을 적용하여 생성된 주소로 보내진 돈을 사용할 수 있습니다. 이는 샤미르의 비밀 공유가 실제로 대수 공식을 사용하는 것이기 때문에 작동합니다 – 즉, 덧셈, 뺄셈, 곱셈 및 나눗셈만 사용하며, 이 공식은 주소와 마찬가지로 공개 키 위에서도 쉽게 계산할 수 있습니다; 결과적으로, 공개 키 변환이 대수 이전에 이루어지든 이후에 이루어지든 상관없습니다. 거래에 서명하는 것도 유사한 방식으로 수행할 수 있지만, 과정은 다소 복잡합니다.
안전한 다자간 계산의 아름다움은 비트코인에 국한되지 않고 확장된다는 것입니다; 이는 기업이 운영하는 데 의존하는 인공지능 알고리즘을 실행하는 데에도 쉽게 사용될 수 있습니다. 이른바 “기계 학습”은 실제 데이터에서 패턴을 감지하고 인간의 개입 없이 컴퓨터가 이를 모델링할 수 있도록 하는 알고리즘 집합의 일반적인 이름으로, 스팸 필터 및 자율주행차와 같은 분야에서 광범위하게 사용됩니다. 이는 또한 “단순한 대수”이며, 안전한 다자간 계산에서도 구현될 수 있습니다. 실제로, 모든 계산은 입력의 개별 비트로 회로로 분해될 수 있다면 가능합니다. 자연스럽게 가능한 복잡성에는 한계가 있습니다; 복잡한 알고리즘을 회로로 변환하는 것은 종종 추가적인 복잡성을 초래하며, 위에서 설명한 바와 같이 샤미르의 비밀 공유는 그 자체로 비용이 많이 들 수 있습니다. 따라서 이는 알고리즘의 “핵심”을 구현하는 데만 사용해야 하며, 더 복잡한 고급 사고 작업은 외부 계약자에 의해 해결하는 것이 가장 좋습니다.
이 주제에 대해 흥미가 있으신가요? 2, 3, 4부를 기대해 주세요: 분산 기업이 외부 세계와 상호작용하는 방법, 일부 간단한 안전한 다자간 계산 회로가 수학적 수준에서 작동하는 방법, 그리고 이러한 분산 기업이 실제 세계에서 변화를 만들 수 있는 두 가지 예시입니다.