모든 사이퍼펑크는 프라이버시를 중요하게 생각합니다. 이는 1990년대 같은 이름의 메일링 리스트를 중심으로 모인 암호학자, 학자, 개발자 및 활동가 집단의 기본 원칙입니다. 그러나 Wei Dai처럼 이를 실천하는 사람은 드뭅니다. 뉴욕 타임스에 의해 “극도로 사적인 컴퓨터 엔지니어”로 묘사된 그는, 20년 전 비트코인과 흡사한 전자 화폐 시스템을 구상한 사람으로서 개인적인 정보는 많이 알려져 있지 않습니다.
이러한 개인적인 정보 부족은 Wei Dai의 작업과 아이디어의 확산으로 보완됩니다. 재능 있는 암호학자인 Dai는 Crypto++를 만들었고 여전히 유지하고 있습니다: 암호 알고리즘을 위한 C++ 라이브러리입니다. 그는 현재도 LessWrong와 같은 합리성 포럼에서 인공지능, 윤리, 인식론 등과 같은 주제에 대해 철학적으로 논의하고 있습니다. 그의 통찰력은 유명한 AI 연구자 Eliezer Yudkowsky의 찬사를 받았고, 그의 기계 지능 연구소(MIRI; 이전에 특이점 연구소로 알려짐)에서 강연 초청을 받았습니다.
Dai의 철학과 정치에 대한 관심은 새로운 것이 아닙니다. 1990년대, 워싱턴 대학교에서 컴퓨터 과학을 전공하던 젊은 학부생 시절, 그의 호기심은 사이퍼펑크 운동의 “창립 아버지” 중 한 명인 Timothy May의 저작으로 그를 이끌었습니다. Dai는 May가 주장한 암호 무정부주의에 영감을 받았습니다. 이는 정부 시스템보다 암호학과 소프트웨어가 정치적, 경제적 자유를 더 잘 제공하고 보호할 수 있다는 확신을 바탕으로 한 사이퍼펑크들 사이에서 유행하는 새로운 이념입니다.
“나는 Tim May의 암호 무정부주의에 매료되었다”고 Dai는 1998년에 썼습니다. “전통적으로 ‘무정부주의’라는 단어와 연관된 공동체와는 달리, 암호 무정부주의에서는 정부가 일시적으로 파괴되는 것이 아니라 영구적으로 금지되고 영구적으로 불필요합니다. 폭력의 위협이 무력한 공동체이며, 폭력이 불가능하기 때문에 폭력은 불가능합니다. 그 이유는 참가자들이 자신의 진짜 이름이나 물리적 위치와 연결될 수 없기 때문입니다.”
1990년대 중반, Dai는 사이퍼펑크 메일링 리스트에서 디지털 평판 시스템, 게임 이론, 디지털 화폐 시스템의 프라이버시 및 익명성 등 다양한 주제에 대해 논의에 참여했습니다. 아마도 더 중요하게는, Dai는 신뢰할 수 있는 타임스탬프, 암호화된 TCP 터널러, 안전한 파일 공유 시스템 등을 포함하여 사이퍼펑크 대의를 발전시키기 위한 여러 제안을 했습니다. 이는 그를 사이퍼펑크 커뮤니티의 다작 기여자로서의 명성을 얻었습니다 — 비록 그 당시에도 개인적으로 그에 대해 아는 사람이 많지 않았습니다. (Dai가 남성인지 여성인지도 아무도 몰랐습니다, Timothy May가 최근에 말했습니다.)
Dai는 1998년 11월, 대학 졸업 직후에 우연히 발표한 아이디어로 가장 잘 알려지게 됩니다. “효율적인 협력은 교환 매체(돈)와 계약을 집행하는 방법을 필요로 합니다,”라고 Dai는 설명했습니다. “이 기사에서 제안된 프로토콜은 추적할 수 없는 가명 엔티티들이 서로 더 효율적으로 협력할 수 있도록 교환 매체와 계약 집행 방법을 제공합니다. […] 나는 이것이 암호 무정부주의를 실용적이면서도 이론적인 가능성으로 만드는 한 걸음이 되기를 바랍니다.”
그는 자신의 제안을 “b-money”라고 불렀습니다.
b-money
전형적인 디지털 화폐 시스템은 계좌 잔액을 추적하기 위해 중앙 원장을 사용합니다. 중앙은행, 상업은행, VISA 또는 기타 결제 제공업체가 어디에 있든, 중앙에서 관리되는 데이터베이스가 누가 무엇을 소유하고 있는지를 추적합니다.
Dai와 암호 무정부주의자의 관점에서 이 솔루션의 문제는 궁극적으로 정부가 규제를 통해 돈의 흐름을 통제할 수 있게 한다는 것입니다. 시스템의 참가자들은 일반적으로 자신을 식별해야 합니다. “b-money에 대한 나의 동기는 순전히 자발적인 온라인 경제를 가능하게 하는 것이었습니다 … 세금이나 강제의 위협을 통해 규제될 수 없는 경제입니다,”라고 그는 나중에 설명했습니다.
그래서 Dai는 대안 솔루션을 제안했습니다. 또는 사실상 두 가지 대안 솔루션을 제시했습니다.
첫 번째 솔루션에서는 중앙 기관이 원장을 제어하는 대신, 모든 참가자가 동일한 원장의 별도 복사본을 유지합니다. 새로운 거래가 발생할 때마다 모든 사람이 자신의 기록을 업데이트합니다. 이 원장은 또한 공개 키로 구성되며, 그에 부착된 금액이 있습니다 — 실제 이름은 없습니다. 이 분산 접근 방식은 어떤 단일 기관이 거래를 차단하는 것을 방지하고 모든 사용자에게 프라이버시 수준을 제공합니다.
간단한 예를 들어 보겠습니다. Alice와 Bob이 b-money 사용자라고 가정해 보겠습니다. 그들은 모두 공개 키를 가지고 있습니다: Alice는 공개 키 “A”를 가지고 있고 Bob은 공개 키 “B”를 가지고 있으며, 두 사람 모두 고유한 개인 키를 제어합니다. 그리고 모든 사용자가 유지하는 원장에 기록된 바와 같이, 두 사람의 공개 키는 각각 b-money 단위를 보유하고 있습니다; 예를 들어 각각 세 단위입니다.
Bob이 Alice로부터 두 개의 b-money 단위를 받으려면(그가 그녀에게 제품을 판매하고 있기 때문에), 그는 자신의 공개 키 B를 그녀에게 보냅니다. Alice가 제품을 구매하고자 한다면, 그녀는 “A에서 B로 2 b-money”라는 메시지 형태로 거래를 생성합니다. 다음으로, 그녀는 A에 해당하는 개인 키로 이 메시지에 서명합니다. 그 메시지와 암호 서명은 모든 b-money 사용자에게 전송됩니다.
서명된 메시지는 모든 b-money 사용자에게 A의 정당한 소유자가 B에게 두 개의 b-money 단위를 보내고자 한다는 것을 증명합니다. 따라서 모든 사용자는 자신의 원장을 업데이트하여 A에 총 하나의 b-money 단위를, B에 총 다섯 개의 b-money 단위를 할당합니다 — Alice나 Bob이 각각을 제어하고 있다는 사실을 알지 못한 채로요.
이 솔루션이 익숙하게 들린다면, 그럴 만합니다: 이는 대략 10년 후 Satoshi Nakamoto가 비트코인을 설계한 방식입니다.
b-money, 버전 2
그러나 Dai는 첫 번째 b-money 솔루션이 비실용적이라고 생각했습니다. “동기화되고 방해받지 않는 익명 방송 채널을 많이 사용하기 때문입니다,”라고 그는 제안서에서 설명했습니다.
다르게 말하면, 첫 번째 b-money 제안은 이중 지출 문제를 해결하지 못했습니다. Alice는 동시에 Bob의 B와 Carol의 C에게 두 개의 b-money 단위를 보낼 수 있으며, 이러한 거래를 네트워크의 다른 부분으로 전송할 수 있습니다. Bob과 Carol은 Alice에게 제품을 제공하지만 … 나중에 네트워크의 절반이 그들의 새로운 잔액을 인정하지 않는다는 사실을 알게 됩니다.
그래서 Dai는 같은 제안서에서 두 번째 b-money 솔루션을 제안했습니다.
이 버전에서는 모든 사용자가 원장의 버전을 유지하지 않습니다. 대신 시스템은 일반 사용자와 “서버”의 두 가지 유형으로 구성됩니다. 서버만이 Usenet 스타일의 방송 네트워크를 통해 연결되어 b-money 원장을 유지합니다. 거래가 제대로 이루어졌는지 확인하기 위해 일반 사용자 — Bob과 Carol과 같은 — 는 이 서버들 중 무작위 하위 집합과 확인해야 합니다. (충돌이 발생할 경우, Bob과 Carol은 아마도 Alice의 거래를 거부하고 그녀에게 아무것도 판매하지 않을 것입니다.)
제안서에 자세히 설명되지는 않았지만, 누구나 서버가 될 수 있었을 것입니다. 그러나 “각 서버는 위반 증거에 대한 잠재적 벌금이나 보상을 위해 특별 계좌에 일정 금액의 돈을 예치해야 합니다,”라고 Dai는 제안했습니다. 서버는 또한 주기적으로 소유 데이터베이스를 게시하고 암호적으로 약속해야 합니다.
“각 참가자는 자신의 계좌 잔액이 정확하고 계좌 잔액의 합이 생성된 총 금액보다 크지 않도록 확인해야 합니다,”라고 Dai는 구상했습니다. “이는 서버들이 총 공모를 하더라도 돈 공급을 영구적이고 비용 없이 확장하는 것을 방지합니다.”
이것이 다소 익숙하게 들린다면, 그 이유는 놀랍지 않습니다: Dai의 두 번째 b-money 제안은 오늘날의 지분 증명 시스템과 느슨하게 유사합니다.
더욱이, Dai는 그의 제안에 스마트 계약 솔루션의 초기 버전을 추가했습니다. 이러한 유형의 스마트 계약은 계약의 양 당사자와 중재자가 모두 특별 계좌에 자금을 예치해야 하는 지분 증명 시스템과 중재 시스템의 혼합에 가장 가깝습니다. 그러나 현대 기준으로 흥미로운 점은 이러한 계약에 분쟁 해결 시스템이 인코딩되어 있지 않았다는 것입니다: 대신 분쟁이 발생할 경우, 서로 다른 사용자(또는 서버)가 자신의 원장을 다르게 조정할 수 있어 네트워크의 원장 상태가 합의에서 벗어날 수 있었습니다. (아마도 잠재적 벌금이 속임수의 비용을 너무 높게 만들어서 위험을 감수하지 못하게 했을 것입니다.)
통화 정책
그렇지만 b-money가 비트코인과 가장 크게 다를 수 있었던 점은 Dai가 제안한 통화 정책이었습니다.
비트코인의 통화 정책은 매우 간단합니다. 유통되는 코인을 만들기 위해, 처음에는 블록당 50개의 새로운 비트코인을 발행했으며, 이 숫자는 이후 12.5로 줄어들었습니다. 이 숫자는 시간이 지남에 따라 계속 줄어들어, 몇 백 년 후에는 발행된 비트코인의 총량이 약 2100만 개로 제한됩니다. 이러한 통화 정책이 이상적인지 여부는 논란의 여지가 있지만, 한 가지는 분명합니다: 지금까지 안정적인 코인 가치를 생산하지 못했습니다.
대조적으로, 안정적인 코인 가치는 Dai의 비전의 명시적인 부분이었습니다. 이를 달성하기 위해 b-money의 가치는 (이론적인) 상품 바구니의 가치와 연결될 예정이었습니다. 예를 들어, 100 b-money 단위는 하나의 상품 바구니의 가치가 될 것입니다. 이는 b-money에 안정적인 가치를 부여해야 합니다. 적어도 이 상품 바구니와 관련하여: 같은 100 b-money 단위는 과거, 현재 및 미래에 동일한 상품 바구니를 구매할 수 있습니다.
새로운 코인을 발행하기 위해 사용자는 상품 바구니가 특정 시점에서 얼마의 비용이 들지를 결정해야 했습니다: “작업 증명.” 예를 들어, 특정 시점에서 상품 바구니의 비용이 $80이어야 한다면, 이를 생산하는 데 평균적으로 $80의 비용이 드는 작업 증명과 일치해야 합니다. 만약 10년 후 같은 상품 바구니의 비용이 $120이 된다면, 같은 100 단위는 $120의 비용이 드는 작업 증명과 일치해야 합니다.
이 지표를 사용하여 유효한 작업 증명을 최초로 생산한 사람은 모든 사용자 또는 서버로부터 100개의 새로운 b-money를 부여받게 됩니다. 따라서 누구도 b-money를 사용하려는 의도가 없다면 작업 증명을 생산할 유인이 없게 되어 인플레이션은 “b-money 경제”의 성장으로 제한됩니다.
또한, 그의 제안서 부록에서 Dai는 돈 생성이 경매를 통해 이루어질 수 있다고 제안했습니다. 모든 사용자(첫 번째 프로토콜) 또는 서버(두 번째 프로토콜)가 먼저 통화 기반의 최적 증가를 결정해야 합니다. 그런 다음 이 이상적인 증가가 예를 들어 500 b-money 단위로 설정된다면, 경매를 통해 누가 이 500 단위를 생성해야 할지를 결정합니다: 가장 많은 작업 증명을 제공할 의향이 있고 능력이 있는 사람이 됩니다.
비트코인
b-money는 결코 구현되지 않았습니다. 구현될 수 없었습니다: “b-money는 아직 완전한 실용적 설계가 아니었습니다,”라고 Dai는 몇 년 전 LessWrong 포럼 스레드에서 인정했습니다. 더욱이, Dai는 b-money가 큰 방식으로 유행할 것이라고 기대하지 않았습니다.
“나는 b-money가 최대한 틈새 화폐/계약 집행 메커니즘이 될 것이라고 생각합니다. 정부가 후원하는 것을 사용하고 싶지 않거나 사용할 수 없는 사람들에게 서비스를 제공하는 것입니다,”라고 그는 사이퍼펑크 메일링 리스트에 발표한 후 이메일에서 설명했습니다.
실제로 b-money의 여러 문제는 여전히 해결되지 않았거나 최소한 명확하지 않았습니다. 아마도 가장 중요한 것은 그 합의 모델이 매우 견고하지 않았다는 것입니다. 이는 Dai가 제안한 스마트 계약 솔루션에서 가장 잘 드러납니다. 이후 지분 증명 시스템이 Dai가 예상하지 못한 새로운 도전을 도입한다는 것이 밝혀졌습니다. 예를 들어, “위반”을 객관적으로 어떻게 설정할 수 있는지는 명확하지 않습니다. 그리고 이는 자금의 추적 가능성으로 인한 프라이버시 부족이나 잠재적인 코인 발행(“채굴”) 중앙화와 같은 제안의 더 미묘한 문제를 다루지 않습니다. 실제로 이러한 문제 중 일부는 오늘날 비트코인에서도 여전히 해결되지 않았습니다.
Dai는 b-money를 제안한 후 TerraSciences와 Microsoft에서 일했으며, 그 이후로 조기 은퇴했을 가능성이 있습니다 — 그는 이러한 문제를 해결하기 위해 남아 있지 않았습니다.
“나는 b-money를 작성하는 동안 암호 무정부주의에 대해 다소 환멸을 느끼게 되었기 때문에 설계 작업을 계속하지 않았습니다,”라고 Dai는 나중에 LessWrong에서 설명했습니다. 그는 “내가 b-money를 작성한 후, 그것이 소수의 하드코어 사이퍼펑크 그룹을 넘어 많은 관심과 사용을 끌 수 있을 것이라고 예상하지 못했습니다,”라고 덧붙였습니다.
그럼에도 불구하고 Dai의 제안은 잊히지 않았습니다: b-money는 비트코인 백서의 첫 번째 참고 문헌으로 남게 되었습니다. 비록 b-money와 비트코인의 설계가 유사하더라도, Satoshi Nakamoto가 전혀 Dai의 아이디어에서 영감을 받지 않았을 가능성도 있습니다. Dai 자신은 비트코인의 발명자가 독립적으로 아이디어를 생각해냈다고 믿고 있습니다.
비트코인 백서를 발표하기 직전에 Hashcash 발명가인 Dr. Adam Back은 Satoshi Nakamoto에게 Dai의 작업을 소개하며, Dai는 비트코인 발명자가 백서를 발표하기 전에 개인적으로 연락한 몇 안 되는 사람 중 하나가 되었습니다. 그러나 Dai는 Satoshi의 이메일에 응답하지 않았습니다. 회상해보면, 그는 응답했어야 한다고 생각합니다. 놀랍게도, Dai는 비트코인의 코인 생성 모델에 의문을 제기합니다.
“나는 비트코인이 통화 정책과 관련하여 실패했다고 생각합니다(왜냐하면 이 정책이 높은 가격 변동성을 초래하여 사용자에게 큰 비용을 부과하기 때문입니다. 사용자들은 바람직하지 않은 위험을 감수하거나 통화 사용을 위해 비용이 많이 드는 헤징을 해야 합니다),”라고 그는 LessWrong에 썼습니다. “[O]ne 가능한 비트코인의 영향은 그 결함 있는 통화 정책과 관련된 가격 변동성 때문에 매우 큰 규모로 성장할 수 없다는 것입니다. 암호화폐 틈새를 차지함으로써, 비트코인이 매우 큰 규모로 성장하는 미래를 차단했을 수도 있습니다.”
그는 또한 “이것은 부분적으로 나의 잘못일 수 있습니다. 왜냐하면 Satoshi가 그의 초안 논문에 대한 의견을 요청하기 위해 나에게 연락했을 때, 나는 그에게 다시 연락하지 않았기 때문입니다. 그렇지 않았다면 아마도 나는 그를 ‘고정 공급 화폐’ 아이디어에서 설득할 수 있었을 것입니다.”라고 덧붙였습니다.
저자 노트: 이 기사를 마친 후, Nick Szabo의 Bit Gold의 첫 번째 버전이 1998년 초로 거슬러 올라간다는 점이 지적되었습니다. b-money보다 Satoshi Nakamoto의 발명과 더 유사하므로, Bit Gold를 “비트코인의 첫 번째 초안”으로 간주하는 것이 더 정확할 것입니다.
이 기사는 비트코인 매거진의 The Genesis Files 시리즈의 세 번째 편입니다. 첫 두 기사는 Dr. David Chaum의 eCash와 Dr. Adam Back의 Hashcash를 다루었습니다. Wei Dai에 대한 더 많은 정보는 weidai.com을 방문하십시오.