B-money Вэя Дая: «Биткоин» образца 1998 года
Приватность всегда была основным принципом движения шифропанков, которое в 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. Дай писал:
Каждый участник должен убедиться, что его собственные балансы верны и что сумма балансов на счетах не больше общей суммы созданных денег. Это не позволяет серверам (даже в полном сговоре) постоянно и без каких-либо затрат наращивать денежную массу.
И эта версия также звучит довольно знакомо и напоминает то, что сегодня мы называем алгоритмом консенсуса Proof-of-Stake.
К своим предложениям Дай также добавил раннюю версию смарт-контрактов. Эти типы смарт-контрактов напоминают сочетание Proof-of-Stake и арбитражной системы, где обе стороны контракта и арбитр передают средства на специальный счёт. В отличие от современных смарт-контрактов, в них отсутствовала система разрешения споров. В случае споров различные пользователи (или серверы) вносили разные данные в свои реестры, оставляя таким образом сеть вне консенсуса (теоретически потенциальные штрафы должны быть сделать попытки обмана сети невыгодными).
Монетарная политика
Самое большое отличие b-money от биткоина заключалось в монетарной политике.
Монетарная политика биткоина очень проста. Изначально в обращение выпускалось 50 новых биткоинов за блок, а сегодня вознаграждение снизилось до 12,5 биткоина. Эмиссия продолжит уменьшаться до тех пор, пока через несколько десятков лет общая сумма выпущенных монет не приблизится к 21 млн. Такая система эмиссии всегда была предметом споров, и до сих пор она не дала биткоину стабильную стоимость.
Напротив, Дай привязывал b-money к стабильному курсу. Для этого стоимость b-money привязывалась к стоимости (теоретической) корзины товаров. Например, 100 единиц b-money оценивались в одну такую корзину. Это должно дать b-money стабильное значение, по крайней мере по отношению к этим товарам. В подобной модели 100 единиц b-money покупают одинаковую корзину в прошлом, настоящем и будущем.
Для выпуска новых монет пользователи должны были определить стоимость корзины относительно решения вычислительной проблемы доказательства работы (Proof-of-Work). Если, например, корзина товаров должна стоить $80 в определённый момент времени, то это должно сопровождаться доказательством работы стоимостью $80. Если через десять лет та же корзина будет стоить $120, то 100 b-money пришлось бы сопоставить с доказательством работы стоимостью $120.
Используя этот показатель, первый человек, который бы предоставил действительное доказательство работы, получил бы 100 новых b-money. Поэтому никто не был особо заинтересован в том, чтобы производить доказательство работы без цели использовать b-money, что ограничивало рост инфляции в этой экономике.
В качестве альтернативы Дай предположил выпускать деньги через аукцион. Либо все пользователи (первый протокол), либо серверы (второй протокол) определяли бы оптимальное увеличение денежной массы. Когда это увеличение было бы определено, к примеру, на уровне 500 единиц b-money, на аукционе выбирали бы того, кто должен предоставить доказательство работы для этой суммы.
Биткоин
В итоге концепция b-money так и не была реализована. По признанию Дая, b-money был незавершённым проектом. Более того, Дай не ожидал особого успеха своей идеи даже в случае её реализации. В рассылке шифропанков он писал:
Я думаю, что b-money, скорее всего, станет нишевой системой принудительного валютного/контрактного контроля, обслуживающей тех, кто не хочет или не может использовать системы, поддерживаемые государством.
Некоторые из проблем b-money так и остались нерешёнными (или им не уделили достаточно внимания). Самой главной проблемой был ненадёжный алгоритм консенсуса (в ситуации того же разрешения споров в смарт-контрактах). С тех пор обнаружились и другие проблемы, которые Дай не предвидел (например, неясным было объективное определение «нарушения»). Кроме того, не были учтены более тонкие нюансы отсутствия анонимности из-за возможности отследить движение средств или потенциальная централизация выпуска монет (через майнинг). Некоторые из этих проблем до сих пор не решены и для биткоина.
После предложения b-money Дай продолжил работать в TerraSciences и Microsoft, а потом отошёл от дел. На LessWrong он писал:
Я не продолжил работу над проектом, потому что к тому времени, когда закончил писать b-money, немного разочаровался в криптоанархии. Я не предвидел, что система с такой реализацией сможет привлечь столько внимания и использоваться где-то ещё за пределами небольшой группы заядлых шифропанков.
Тем не менее предложение Дая не было забыто: первой ссылка в white paper биткоина ведёт на систему b-money. При этом сам Дай считает, что Накамото не вдохновлялся его детищем, а пришёл к идее биткоина самостоятельно.
Незадолго до публикации white paper биткоина изобретатель Hashcash Адам Бэк отправил Накамото ссылку на работу Дая, и Дай стал одним из немногих людей, с которыми создатель биткоина хотел связаться перед публикацией своей работы. Но разработчик b-money, тогда не ответил на письмо Сатоши, о чём теперь сожалеет:
Мне кажется, биткоин может постичь неудача в связи с его монетарной политикой (она делает его волатильным и возлагает на пользователей большие затраты; они должны либо принимать эти риски, либо заниматься дорогостоящим хеджированием при использовании валюты). Возможно, из-за неэффективности монетарной политики и связанной с ней волатильности биткоин не сможет достичь очень больших масштабов и, захватив нишу криптовалют, станет препятствием в будущем, когда криптовалюты достигнут очень больших масштабов… Возможно, это отчасти моя вина, ведь я не прокомментировал черновики Сатоши, когда он об этом попросил. Может, я смог бы отговорить его (или их) от идеи «ограниченной денежной эмиссии».
По материалам Bitcoin Magazine