1997 год. Адам Бэк создает алгоритм HashCash

Лучший Форекс-брокер – компания «Альпари». Выгодные торговые условия, более 2 млн. клиентов, положительные отзывы реальных трейдеров, уникальные инвестиционные сервисы, множество бонусов, акций и призовых конкурсов, торговля валютами, металлами и CFD, качественная аналитика и обучение.

До недавнего времени мало кто знал имя Адама Бэка. Еще меньше людей знало, какой же вклад он внес в развитие криптовалют. Современные майнеры 24 часа в сутки используют мощности своих компьютеров для добычи электронных монет. В случае большинства криптовалют новые монеты выпускаются в виде вознаграждения тому участнику процесса майнинга, который проверил определённое количество транзакций в сети на валидность, собрал эти транзакции в так называемый блок и добавил этот блок в блокчейн – распределённую базу данных. Механизм защиты от бесконтрольного создания блоков и выпуска монет, а также от других возможных злоупотреблений – необходимый элемент в процессе майнинга.

Наиболее распространённым механизмом такой защиты является алгоритм Proof-of-Work (PoW), то есть «доказательство работы», требующий доказать, что майнером для создания блока были действительно проведены необходимые вычисления.

Впервые принцип Proof-of-Work был описан в 1993 году Синтией Дворк и Мони Haop. Авторы предложили следующую концепцию:

«Чтобы получить доступ к общему pecypcy, пользователь должен вычислить некоторую функцию: достаточно сложную, но посильную; так можно защитить pecypc от злоупотребления».

Звучит немного сложно, но на самом деле смысл можно проиллюстрировать на достаточно простом примере. Допустим, вы владелец интернет-форума или электронного почтового сервера. Ваши пользователи имеют возможность писать на форум сообщения или отправлять другим пользователям электронные письма. Стоит задача – как вам защититься от спамеров и при этом не мешать пользоваться вашими сервисами добросовестным пользователям? Теоретически, современные домашние компьютеры позволяют генерировать миллионы сообщений на форумы или миллионы писем со спамом. Вот тут и приходит на помощь PoW. Вы перед каждой отправкой сообщения на форум или перед отправкой электронного письма на чей-то электронный адрес заставляете компьютер пользователя в фоновом режиме выполнить определенную операцию, которая в среднем будет занимать, к примеру, 1 секунду. При этом вы будете проверять, действительно ли пользователь выполнил необходимую операцию. Для добросовестного пользователя это не проблема. В случае же со спамером время выполнения рассылки 1 миллиона сообщений увеличится на 1 миллион секунд. Или на 11,5 суток, что уже будет для него вряд ли приемлемым.

Именно на этом принципе Адам Бэк начал в 1997 году начал создавать систему анти-спама, которую назвал HashCash. Профессор в области компьютерных технологий и распределённых систем Эксетерского университета Адам Бэк вначале сам не мог представить, к чему приведут его разработки. Он добросовестно решал лишь задачу борьбы со спамом в интернете. Ему необходимо было построить функцию, которая бы таким образом преобразовывала вводимые в нее данные, чтобы на выходе получался заранее известный результат. То есть вычисления должны были быть несимметричными – время подбора функцией ответа должно быть достаточно большим, а время проверки результата – минимальным.

Адам нашел способ предсказывать, сколько времени потребуется компьютеру с процессором, имеющим известную тактовую частоту, для производства определенных вычислений. Так был создан HashCash – алгоритм доказательства правильности работы, требующий выборочного объёма данных для вычислений. При этом само доказательство может быть эффективно подтверждено. У пользователей электронной почты к заголовку добавлялся текст отметки HashCash, подтверждающий, что перед отправкой письма компьютером пользователя было затрачено заданное время для вычисления отметки. Заголовок отметки выглядит следующим образом:

X-Hashcash:

1:20:1303030600:adam@cypherspace.org::McMybZlhxKXu57jd: FOvXX

Сам заголовок содержит:

ver: Версию hashcash, 1 (которая заменила версию 0).

bits: Число «предварительных» (нулевых) битов в хешированном коде.

date: Время, в которое сообщение было отправлено, в формате ГГММДД [ччмм [ccfl.

resource: Данные об отправителе, например, IP адрес или адрес E-mail.

ext: Расширение (опционально; игнорируется в версии 1).

rand: Строка случайных чисел, закодированная в формате base-64.

counter: Двоичный счетчик, закодированный в формате base-64.

В заголовке имеются адрес получателя, дата сообщения, информация, подтверждающая, что все требуемые вычисления осуществлены. Присутствие адреса получателя требует пересчитывать заголовок для другого получателя. Дата позволяет получателю учитывать заголовки недавно полученных писем и убеждаться, что заголовок пришедшего сообщения уникален.

На стороне компьютера отправителя заголовок формируется и к нему добавляется случайное число. Затем вычисляется точный 160-битный SHA-1 хэш заголовка. Если первые 20 бит заголовка – нули, то этот заголовок считается приемлемым или валидным. В противном случае отправитель увеличивает значение счётчика и пробует произвести вычисления хэша ещё раз. Из 2160 возможных значений хеша 2140 удовлетворяют этому критерию. Таким образом, вероятность того, что случайно выбранный хеш будет начинаться с 20 нулей – 1 к 220.

Следовательно, отправитель в среднем должен перебрать 220, или 1048567 случайных чисел, чтобы найти правильный заголовок. Учитывая разумные оценки времени, необходимого для вычисления хеша, это займет около 1 секунды. В то же время, нет эффективного метода поиска валидного заголовка, кроме перебора.

Получатель письма или сервер электронной почты могут ценой затраты небольших вычислительных мощностей подтвердить валидность отметки. На процессоре с тактовой частотой в 1 ГГц время проверки составит около двух микросекунд.

Изобретенный Бэком алгоритм стал фундаментом, на котором строится весь современный процесс майнинга. Когда широко распространенные сейчас китайские чипы ASIC обсчитывают огромное количество хэшей в единицу времени – они производят те же самые расчёты, что производились в Hashcash. На 99% современные реализации PoW используют модель, используемую в Hashcash. Изменения были внесены не самые принципиальные. В первую очередь это – переход от SHA-1 к SHA-256. Сам Адам Бэк, благодаря внесенному им вкладу в развитие распределенных систем и в криптографию, считается одним из лидирующих разработчиков в области криптовалют. Хотя, как это ни парадоксально, лично он не написал ни одной строчки кода собственно для криптовалют. Но к его мнению прислушивались и прислушиваются все, включая Сатоши Накамото. Еще об одном парадоксальном факте, касающимся одного из основоположников криптовалют, написал сам Адам Бэк:

«Если бы я, как Хал Финни, запустил майнер на своем компьютере, возможно в моём кошельке сейчас было бы много биткойнов ещё той эры, когда их можно было добывать тысячами. Ирония в том, что у меня нет ни единого биткойна, несмотря на то, что HashCash, на основе которого сейчас работает сеть биткойна – это моё изобретение».

Содержание Далее

Перейти на Главную страницу сайта