Reposted from: 오래된 여피
미국 대통령 후보 미트 롬니는 기업은 개인으로 구성되어 있음을 상기시킵니다. 당신이 그에 동의하든 그렇지 않든, 그 말에는 많은 진실이 있습니다. 결국 특정 규칙에 따라 함께 일하는 사람들의 그룹이 아닌 회사라고 불리는 이유는 무엇입니까? 법인이 재산을 소유할 때 법적 계약에는 재산이 이사회의 통제 하에만 있을 수 있다고 명시되어 있습니다. 회사가 무언가를 한다면 그것은 이사회가 그 일을 해야 한다는 데 동의했기 때문입니다. 회사에서 직원을 고용한다는 것은 직원이 특정 규칙에 따라 회사 고객에게 서비스를 제공하는 데 동의함을 의미하며, 특히 결제가 관련된 경우에 그러합니다. 회사에 유한책임이 있는 경우 특정인에게 행동할 수 있는 추가 권한이 부여되어 정부의 법적 기소에 대한 두려움이 줄어듭니다. 집단은 혼자 행동하는 보통 사람보다 더 많은 권리를 가지지만 궁극적으로는 개인입니다. 어쨌든 그것은 사람과 계약에 지나지 않습니다.
그러나 여기에서 매우 흥미로운 질문이 생깁니다. 정말 사람이 필요한가요? 한편으로 대답은 '예'입니다. 특이점 이후의 일부 미래 기계는 스스로 생존할 수 있지만 가까운 미래에는 인간의 행동과 물리적 세계와의 상호 작용이 필요합니다. 그러나 다른 한편으로 지난 200년 동안 이 질문에 대한 답은 점점 더 '아니오'가 되었습니다. 산업혁명으로 인간의 노동력을 대규모로 기계로 대체할 수 있게 되었고, 이제 우리는 자동차와 같은 복잡한 제품을 스스로 생산할 수 있는 첨단 디지털 공장과 로봇팔을 갖게 되었습니다. 그러나 그것은 기본 하단의 자동화 일뿐입니다. 일반 육체 노동의 필요성을 없애고 소수의 전문가를 사용하여 회사의 관리는 동일하게 유지하면서 로봇을 유지 관리합니다. 진짜 질문은 우리가 다른 방향에서 이 문제에 접근할 수 있는가 하는 것입니다. 특정 전문 작업을 수행하기 위해 여전히 사람이 필요하더라도 방정식에서 관리를 제거할 수 있습니까?
대부분의 회사에는 일종의 사명 선언문이 있습니다. 일반적으로 주주를 위해 돈을 벌고, 다른 경우에는 제품과 관련된 윤리적 의무를 포함하고, 적어도 이론상으로는 때때로 커뮤니티가 참여하도록 돕는 것과 같은 기타 목표를 포함합니다. 현재 그 사명 선언문은 이사회와 궁극적으로 주주가 해석하는 경우에만 존재합니다. 그러나 현대 정보 기술의 힘으로 사명 선언문을 코드로 인코딩할 수 있다면 어떨까요? 즉, 수익을 창출하고 특정 기능을 수행하기 위해 사람들에게 비용을 지불하고 실행할 하드웨어를 찾는 불가침의 계약을 만드는 것입니다.
Let's Talk Bitcoin 의 Daniel Larmier가 자신의 개념 탐구에서 지적했듯이 어떤 의미에서 Bitcoin 자체는 그러한 것의 초기 프로토타입으로 간주될 수 있습니다. 비트코인 주주가 소유한 비트코인 주식은 2,100만 주입니다. 직원이 있고 그들에게 지불하기로 합의했습니다. 약 10분마다 임의의 직원에게 25비트코인을 지급합니다. 심지어 주주들로 구성된 자체 마케팅 부서도 있습니다. 그러나 그것은 또한 매우 제한적이며, 세상에 대해 거의 알지 못하고, 어려움 외에는 기능의 어떤 측면도 변경할 수 없으며, 실제로 그 자체로는 아무것도 가지고 있지 않습니다. 그것을 인식하는 세상. 문제는: 우리가 더 잘할 수 있을까?
계산하다
첫 번째 과제는 분명합니다. 그러한 회사가 실제로 어떻게 결정을 내릴까요? 주어진 예측 가능한 환경에서 주어진 입력을 받고 수행할 조치를 계산하는 코드를 작성하는 것은 쉽습니다. 그러나 누가 코드를 실행할 것인가? 코드가 특정 기계의 컴퓨터 프로그램으로만 존재하는 경우 해당 기계의 소유자가 전체 장치를 종료하거나 모든 자금을 자신에게 보내기 위해 코드를 수정하지 못하게 하는 것은 무엇입니까? 이 질문에 대한 유효한 답변은 분산 컴퓨팅입니다.
그러나 여기서 우리가 찾고 있는 분산 컴퓨팅은 SETI@home 및 Folding@home과 같은 프로젝트에서와 동일하지 않습니다. 이 경우 분산 노드에서 데이터를 수집하고 요청을 보내는 중앙 서버가 여전히 있습니다. 대신, 우리는 비트코인에서 볼 수 있는 일종의 분산 계산이 필요합니다: 분산되고 자체 검증 계산을 위한 일련의 규칙입니다. 비트코인에서 이것은 단순한 다수결 투표로 이루어집니다. 다수의 네트워크 파워로 블록체인 컴퓨팅에 기여하지 않으면 블록이 폐기되고 블록 보상을 받을 수 없습니다. 이론에 따르면 단일 공격자는 이 메커니즘을 깨기에 충분한 컴퓨팅 성능을 가지고 있지 않으므로 실행 가능한 유일한 전략은 "흐름에 따라" 정직하게 행동하여 네트워크를 지원하고 블록 보상을 얻는 것입니다.
그렇다면 이 메커니즘을 분산 컴퓨팅에 간단히 적용할 수 있습니까? 즉, 네트워크의 모든 컴퓨터에 프로그램을 평가하도록 요청하고 답변이 다수표와 일치하는 사람에게만 보상할 수 있습니까? 불행히도 대답은 '아니오'입니다. 비트코인은 단순하기 때문에 특별한 경우입니다. 비트코인은 자체 재산이나 개인 데이터를 가지고 있지 않은 통화일 뿐입니다. 반면에 가상 회사는 개인 키를 비트코인 지갑에 저장해야 할 수 있습니다. 이 데이터는 누구도 완전히 사용할 수 없어야 하며 비트코인 거래와 같이 모든 사람이 사용할 수 없습니다. 그러나 물론 개인 키는 계속 사용할 수 있어야 합니다. 따라서 탈중앙화 방식으로 계산할 수 있고 비트코인 주소를 생성할 수 있는 트랜잭션 서명 시스템이 필요합니다. 다행스럽게도 비트코인은 우리가 그렇게 할 수 있도록 해줍니다.
즉시 떠오르는 첫 번째 솔루션은 다중 서명 주소입니다. 천 대의 컴퓨터가 주어지면 해당 컴퓨터는 계속해서 회사를 지원하고, 각자 개인 키를 생성하고, 그들 사이에 501-of-1000 다중 서명 주소를 생성하도록 할 수 있습니다. 이 자금을 사용하려면 501개 노드의 서명으로 트랜잭션을 구성하고 블록체인에 브로드캐스트하면 됩니다. 여기서 문제는 명백합니다. 트랜잭션 볼륨이 너무 큽니다. 각 서명에는 약 70바이트가 포함되어 있으므로 그 중 501개는 35KB 트랜잭션이 됩니다. 비트코인d는 기본적으로 10,000바이트보다 큰 스크립트가 있는 모든 트랜잭션을 거부하기 때문에 네트워크에서 수락하기가 매우 어렵습니다. 회사가 비재무적 목적으로 개인 데이터를 저장하려는 경우 다중 서명 스크립트는 쓸모가 없습니다.
다중 서명 주소는 이를 평가하는 비트코인 네트워크가 있기 때문에 작동하며 평가의 성공 여부에 따라 트랜잭션이 블록체인에 입력됩니다. 개인 데이터의 경우 유사한 솔루션은 기본적으로 데이터를 저장하고 요청에 1000개 중 501개의 서명이 있는 경우에만 데이터를 보낼 수 있는 분산된 권한이 필요합니다.
그러나 또 다른 솔루션은 여전히 유망하며, 암호 작성자가 부여한 일반적인 이름은 "안전한 다자간 계산"입니다. Secure Multiparty Computation에서 프로그램에 대한 입력(또는 보다 정확하게는 Secure Multiparty Computation이 "if" 문과 조건부 루프를 처리할 수 없기 때문에 시뮬레이션된 "회로"에 대한 입력)은 Shamir의 비밀 공유라는 알고리즘을 사용하여 분할되며, 각 참가자에게 정보가 제공됩니다. Shamir의 비밀 공유는 모든 데이터를 N 조각으로 분할하는 데 사용할 수 있습니다. 즉 K-1이 아닌 K가 원본 데이터를 복구하기에 충분하도록 알고리즘을 실행할 때 K와 N을 선택합니다. 2-of-3, 5-of-10 및 501-of-1000이 모두 가능합니다. 그런 다음 데이터 조각을 분산 방식으로 평가할 수 있으므로 계산이 끝날 때 모든 사람이 계산 결과의 일부를 가지지만 계산 중에 아무도 무슨 일이 일어나고 있는지 조금이라도 알 수 없습니다.
마지막으로 조각을 모아 결과를 보여줍니다. 알고리즘의 실행 시간은 O(n3)이며, 이는 평가 계산에 필요한 계산 단계 수가 참여자 수의 세제곱에 대략 비례함을 의미합니다. 억 걸음. 내 노트북에서 간단한 C++ 10억 단계 루프는 약 20초가 걸리는 반면 서버는 몇 분의 1초 만에 이를 수행할 수 있으므로 현재 1000개 노드는 거의 계산 실용성의 한계에 도달했습니다.
안전한 다자간 계산을 사용하여 Bitcoin 주소를 생성하고 트랜잭션에 서명할 수 있음이 밝혀졌습니다. 주소 생성을 위한 프로토콜은 간단합니다.
누구나 개인 키로 난수를 생성합니다.
누구나 개인 키에 해당하는 공개 키를 계산합니다.
누구나 자신의 공개 키를 공개하고 Shamir의 비밀 공유 알고리즘을 사용하여 공개된 1,000개의 공개 키 중 501개에서 재구성할 수 있는 공개 키를 계산합니다.
이 공개 키에서 주소가 생성됩니다.
공개 키는 더하기, 빼기, 곱하기, 심지어 정수로 나눌 수 있기 때문에 놀랍게도 이 알고리즘은 예상한 대로 정확하게 작동합니다. 모든 사람이 같은 방식으로 501/1000 개인 키를 조합하면 해당 개인 키는 해당 공개 키 지출에 501/1000 알고리즘을 적용하여 생성된 주소로 돈을 보낼 수 있습니다. 이것은 Shamir의 비밀 공유가 실제로 대수 공식에 불과하기 때문에 작동합니다. 즉, 덧셈, 뺄셈, 곱셈 및 나눗셈만 사용하고 주소만큼 쉽게 공개 키 "로" 계산할 수 있습니다. 개인 키를 공개 키로 변환하는 것이 대수학 이전 또는 이후에 수행되는지 여부가 중요합니다. 프로세스가 약간 더 복잡하긴 하지만 트랜잭션에 서명하는 것도 비슷한 방식으로 수행할 수 있습니다.
안전한 다자간 계산의 장점은 비트코인에 국한되지 않고 기업이 실행하는 데 의존하는 인공 지능 알고리즘을 실행하는 데 쉽게 사용할 수 있다는 것입니다. 소위 "머신 러닝"은 실제 데이터에서 패턴을 감지하고 사람의 개입 없이 컴퓨터가 패턴을 모델링할 수 있도록 하는 일련의 알고리즘에 대한 일반적인 이름이며 스팸 필터 및 자율 주행 자동차와 같은 것들에 널리 사용됩니다. 해당 영역에서. "Just algebra"는 안전한 다자간 계산에서도 구현될 수 있습니다. 실제로 계산이 입력의 개별 비트에 대한 회로로 분해되는 경우 모든 계산이 가능합니다. 당연히 가능한 복잡성에는 몇 가지 제한이 있습니다. 복잡한 알고리즘을 회로로 변환하면 종종 복잡성이 추가되며 위에서 언급한 바와 같이 Shamir의 비밀 공유 자체가 비용이 많이 듭니다. 따라서 알고리즘의 "핵심"을 구현하는 데에만 사용해야 하며 더 복잡한 고급 사고 작업은 외부 계약자가 가장 잘 처리할 수 있습니다.
비탈릭 부테린 2013년 9월 19일