b-money — проект цифровых денег, представленный Wei Dai в 1998 году. Он описывает два способа совместного ведения балансов и исполнения договоров между людьми с цифровыми псевдонимами. Это не была запущенная валюта или ранняя версия программы Bitcoin. Позднее Bitcoin whitepaper поставил его первым в списке источников.
Представьте, что Анна заказывает у Петра иллюстрацию через интернет. Они знают только псевдонимы друг друга. Хотят заплатить и договориться, что произойдёт, если кто-то не сдержит обещание, не раскрывая сначала личность банку или иной организации. Такие вопросы интересовали Cypherpunks — сообщество, изучавшее защиту частной жизни средствами криптографии. Wei Dai ответил проектом b-money в 1998 году. Цифровой псевдоним здесь был не просто выдуманным именем: им служил открытый ключ — данные, которые не нужно держать в секрете и с помощью которых другие проверяют подпись сообщения. Сокрытие настоящей личности зависело также от предполагаемой анонимной связи. [1] [2]
В нашем примере у Анны 10 единиц, и она хочет отправить Петру 3. Она опубликовала бы сообщение о переводе и подписала его цифровой подписью. Это не изображение рукописной подписи: программа вычисляет её из сообщения и приватного ключа — данных, которые Анна держит в секрете. С помощью открытого ключа другие могут проверить, что распоряжение подписал владелец соответствующего приватного ключа. Ведущие счета проверили бы подпись и достаточный баланс, вычли у Анны 3 и зачислили Петру; у Анны осталось бы 7. Это не передача файла с монетой, а изменение записей о балансах. Сразу возникает главный вопрос: как сохранить согласованность всех копий, если Анна разошлёт несовместимые распоряжения? Одна подпись этого не обеспечит. [1] [5]
Первый протокол, то есть предложенный набор правил, оставляет базу балансов у каждого участника. Чтобы все могли вносить одинаковые изменения, он предполагает анонимный, синхронный и неблокируемый канал рассылки. Иными словами, сообщения должны достигать всех с нужной временной согласованностью, их распространение нельзя остановить, а отправитель остаётся скрыт. Это гораздо более жёсткое требование, чем то, что обеспечивает обычное интернет-соединение с задержками и потерями сообщений. Поэтому сам Dai называл первый вариант непрактичным. Он был отправной точкой для второго, а не готовой к работе сетью. [1] [2]
Балансы должны откуда-то появиться. Dai предложил, чтобы любой мог опубликовать решение новой вычислительно сложной задачи и получить денежные единицы. Остальным нужно легко оценить затраченную работу, а решение не должно иметь иной практической или интеллектуальной ценности. Количество денег зависело бы от стоимости вычислений в стандартной корзине товаров — согласованном наборе благ для сравнения затрат. Это напоминает Proof of Work, доказательство вычислительной работы, но ещё не является майнингом блоков Bitcoin. Блок — это группа транзакций, которая добавляется к общей истории платежей. Нужна и общая оценка затрат, хотя мощность и стоимость компьютеров у людей различаются. [1] [2] [5]
Во втором протоколе не каждый хранит всю книгу. Эту роль взяла бы часть участников, называемая серверами. Анна и Пётр проверяли бы обработку платежа у случайно выбранной части серверов. Поскольку это требует некоторого доверия к управляющим учётом, каждый сервер должен внести денежное обеспечение для наказания доказанного нарушения. Серверы также регулярно публиковали бы состояние балансов и создания денег. Пользователи проверяли бы собственные балансы и то, не превышает ли сумма всех балансов созданные деньги. Это конкретные проверки управляющих счетами, а не та же схема, что у нынешних узлов и майнеров Bitcoin. [1]
Деньги были лишь частью b-money. Для заказа Анны и Петра договор определял бы условия и максимальную компенсацию за нарушение. Стороны и возможный арбитр, человек для оценки спора, подписали бы его и внесли заданные суммы на особый счёт. После согласованного завершения деньги распределили бы по результату. Проект шёл дальше: если даже арбитраж не помог, стороны публикуют аргументы, а каждый ведущий счета сам определяет компенсации или штрафы. Здесь видна граница. Подпись подтверждает согласие, но не решает, была ли иллюстрация действительно передана, и не гарантирует одинакового суждения всех управляющих. [1] [2]
Dai понимал, как трудно договориться о реальной стоимости вычислений. Техника меняется, а некоторые участники могут иметь преимущества, неизвестные другим. Поэтому приложение A предложило альтернативу для обоих протоколов. Ведущие счета сначала планировали бы число новых единиц. Желающие затем предлагали бы решить определённую задачу за нужное количество денег, выполняли вычисления и публиковали решения. После этого следовала бы эмиссия по принятым предложениям. Четыре фазы — планирование, заявки, вычисление и создание денег — должны были заменить простую оценку затрат. Это не заранее заданный предел 21 миллион биткоинов и не Halving, регулярное сокращение вдвое числа новых биткоинов в каждом блоке. [1] [3]
Adam Back обсуждал проект в декабре 1998 года. Он указывал, среди прочего, на разные вычислительные затраты и возможность связывать платежи под постоянными псевдонимами. Скрытое настоящее имя само по себе не делает платежи несвязываемыми. Исходный текст содержит проверки серверов, поэтому утверждать, что он полностью игнорировал нечестность, было бы неверно. Однако он не предложил полного, практически испытанного способа сохранять согласованность всех баз при разных сбоях и спорах. На таких ситуациях и видна разница между предложением и работающей системой. Поэтому сохранившуюся дискуссию полезно читать вместе с проектом. [1] [3] [7]
22 августа 2008 года Satoshi Nakamoto написал Wei Dai, что Adam Back указал ему на b-money, и спросил год публикации для ссылки. Dai ответил, что объявил о проекте в 1998 году. Bitcoin whitepaper затем поставил b-money первым в библиографии. В другом письме, от 10 января 2009 года, Satoshi сообщил о Bitcoin v0.1 и выразил мнение, что он достигает почти всех целей b-money. Это документированные контакты и признание предшествующей идеи. Они не доказывают, что Wei Dai написал Bitcoin, что оба проекта работают одинаково или сколько отдельных технических решений было заимствовано напрямую. [4] [5] [6]
b-money — важный этап истории идей, а не валюта, которую по этому проекту можно сегодня положить в кошелёк. Его не реализовали как описанную здесь действующую платёжную систему. У него не было цепочки блоков Bitcoin и правила выбора действительной цепи с наибольшей накопленной работой. Но он ставил ясный вопрос: как соединить цифровые подписи, создание денег и общий учёт без одного банка, управляющего всем? Bitcoin позже объединил собственные ответы в работающую сеть. Чтение b-money отделяет идею цифровых денег от более сложной задачи: поддерживать общее проверяемое состояние среди людей, которым не обязательно доверять друг другу. [1] [4] [5]
Для полной картины прочитайте эту статью вместе с Wei Dai, Шифропанки, Reusable Proofs of Work, Proof of Work, Hashcash, Bit Gold. На эту статью также ссылаются Шифропанки, Bit Gold, Wei Dai, The Genesis Book.