Приватность всегда была основным принципом движения шифропанков, которое в 90-х собрало вокруг себя криптографов, учёных и активистов с либертарианскими взглядами. Одним из самых видных участников этого движения стал Вэй Дай, которого газета The New York Times назвала «активным компьютерным специалистом в вопросе приватности». По сей день об этом человеке известно немного, хотя ещё 20 лет назад он создал концепцию электронной системы наличности, которая очень похожа на биткоин.
Биткоин — это реализация предложения b-money Вэя Дая… и предложения Bitgold Ника Сабо.
Вэй Дай разработал и до сих пор поддерживает библиотеку криптографических алгоритмов Crypto++ (написана на языке C++). Он также довольно активен на форуме LessWrong, где философствует на темы искусственного интеллекта, этики, эпистемологии и др. О нём хорошо отзывался известный исследователь в области искусственного интеллекта Элиезер Юдковский в своих выступлениях в Исследовательском институте машинного обучения (ранее известном как Институт сингулярности).
Интерес Дая к философии и политике известен давно. В 90-х годах, будучи студентом факультета информатики Вашингтонского университета, он заинтересовался работами Тимоти Мэя, одного из основателей движения шифропанков. Дая привлекли идеи криптоанархии, которые продвигал Мэй. Эта идеология основана на убеждении, что криптография и программное обеспечение могут предложить лучшую политическую и экономическую свободу в сравнении с любой государственной системой. В 1998 году он писал:
Я очарован криптоанархией Мэя. В отличие от моделей традиционных анархосообществ, в криптоанархии правительство не уничтожается на какое-то время, а навсегда становится запрещённым и ненужным. Это сообщество, в котором нет угрозы насилия: оно попросту невозможно, ведь участники сообщества не привязаны к настоящим именам или местам в реальном мире.
К середине 90-х Дай активно участвовал в обсуждении различных тем в рассылке шифропанков, среди которых были системы цифровой репутации, теория игр, конфиденциальность и анонимность в цифровых системах наличности. В ходе обсуждений Дай сделал ряд предложений по проблемам доверенных временных печатей, шифрования TCP-туннелирования, системы безопасного файлообмена и т.д. В сообществе он обладал хорошей репутацией, хотя о нём ничего не знали (недавно Тимоти Мэй сказал, что тогда он даже не знал, кем был Дай — мужчиной или женщиной).
В ноябре 1998 года, сразу после окончания университета, Дай предложил свою идею «эффективного сотрудничества и способа обеспечения исполнения контрактов, которые требуют средства обмена (денег)». Он описал протокол, который позволял псевдонимным организациям более эффективно сотрудничать друг с другом с помощью предложенного им средства обмена и способа обеспечения исполнения контрактов. По его словам, это решение должно было стать шагом к практической реализации идей криптоанархии.
Он назвал своё предложение b-money.
B-money
Типичные системы цифровых денег используют централизованный реестр для отслеживания балансов на счетах. Этот реестр контролируют центральные банки, коммерческие банки, Visa или любой другой платёжный оператор.
Проблема таких систем (с точки зрения Дая и криптоанархистов) заключается в том, что они позволяют государствам контролировать денежные потоки посредством регулирования, а участники системы практически всегда должны быть идентифицированы. Позже Дай объяснил:
Мотивом создания b-money было желание обеспечить исключительно добровольную онлайн-экономику — ту, которая не может облагаться налогом или регулироваться угрозой принуждения.
Дай придумал альтернативное решение. Точнее, два альтернативных решения.
В первом вместо централизованного субъекта, контролирующего реестр, копии одного реестра хранили все участники системы. Участники обновляли свои данные каждый раз, когда совершалась новая транзакция. Вместо реальных имён в реестрах использовались открытые ключи. Такой децентрализованный подход мешал какому-либо объекту блокировать транзакции, обеспечивая при этом анонимность всех пользователей.
В качестве примера представим двух пользователей b-money — Алису и Боба. У обоих есть открытый ключ: у Алисы — открытый ключ «А», у Боба — открытый ключ «Б». Также они владеют своими уникальными секретными ключи. Исходя из данных реестра, который поддерживают все пользователями, Алиса и Боб хранят по три единицы b-money.
Если Боб хочет получить от Алисы две единицы (в качестве оплаты за продукт), он отправляет ей свой открытый ключ «Б». Предположим, что Алиса хочет купить этот продукт; для этого она создаёт транзакцию в виде сообщения: «два b-money из A на B». Затем она подписывает это сообщение своим секретным ключом. Сообщение и криптографическая подпись отправляются всем пользователям b-money. Подписанное сообщение доказывает, что законный владелец ключа «A» хочет отправить две единицы b-money на ключ «B». Каждый обновит реестр и не узнает, что ключами управляют Алиса или Боб.
Согласитесь, очень знакомое решение. Примерно такая же модель десять лет спустя была использована Сатоши Накамото при разработке биткоина.
B-money, вторая версия
Дай посчитал первую версия b-money непрактичной, «потому что в ней было сложно использовать синхронный и помехоустойчивый анонимный канал передачи».
Иными словами, первая версия b-money не решала проблему двойного расходования. Алиса могла одновременно отправить b-money как Бобу, так и Кэрол, передавая эти транзакции в разные части сети. И Боб, и Кэрол продали бы Алисе товар, но позже бы узнали, что половина сети не признаёт их новые балансы.
Поэтому Дай в своём предложении описал вторую версию b-money.
В этой версии не все поддерживают реестр. Вместо этого система состоит из двух типов пользователей: обычных пользователей и серверов. В данной модели серверы поддерживали реестр b-money и связывались между собой каналом передачи по типу Usenet. Чтобы убедиться, что транзакция прошла успешно, обычные пользователи (такие как Боб и Кэрол) должны были проверить её со случайным числом этих серверов (в случае конфликта Боб и Кэрол могли отказаться от сделки с Алисой и ничего ей не продавать).
Хотя это не было подробно описано в предложении, но кто-то, скорее всего, мог стать сервером, «вносящим определённую сумму денег на специальный счёт, который будет использоваться для потенциальных штрафов или вознаграждений за доказательства нарушений». Серверы также должны периодически публиковать и подтверждать балансы владельцев b-money. Дай писал: