какой иголкой шил его «коллега», какие строчки принадлежат только ему и никому другому, это остается тайной. Метафора слегка хромает? Ну разумеется, как и всякое сравнение. И все же, мне кажется, дает некое представление о сути системы.
Но тут возникает роковое, на первый взгляд, противоречие: с одной стороны, необходимо иметь запись о всех транзакциях, которую могли бы контролировать все участники (видеть ковер в целом и все итоговые стежки, читать все страницы в своей электронной копии «гроссбуха»); но, с другой стороны, индивидуальную конфиденциальную информацию, дающую доступ к деньгам, надо надежно защитить от всех, в том числе и участников системы. Как же это сделать? На помощь приходит гениальное открытие — хеш-функция (хеширование).
Рискну сказать, что хеширование — это особый вид шифрования, хотя подозреваю, что математики могут возражать против использования этого слова в данном контексте. Действительно, строго говоря, это нечто другое: ведь каждый шифр, независимо от его сложности, теоретически может быть расшифрован, но не хеш-функция, она работает только в одну сторону. Это сложный алгоритм, который превращает любое (практически бесконечное) количество информации в буквенно-цифровой шестнадцатеричный код — хеш-сумму. Меня особенно поражает то, что можно хешировать как полный текст «Войны и мира», так и любые числа, например 123, или даже одну-единственную какую-нибудь цифру, и получить похожую по внешнему виду строку, что-то вроде вот этого:
c3xс2483p0b2923820dcc509a6f7549b
Совершенно невозможно угадать, что такой набор 32 знаков означает: или все перипетии великой исторической драмы, или какую-то цифру, или вообще ничего. Но! Если изменить в тексте романа хоть одну (!) букву, то и этот его хешированный «итог» тут же изменится. При этом вы никогда не сможете произвести вычисление в противоположную сторону, то есть невозможно превратить хеш-сумму обратно в роман. Но можно доказать, что этот на вид бессмысленный и случайный набор цифр и букв «принадлежит» или соответствует «Войне и миру». Между ними существует некая неразрывная, роковая, почти мистическая связь.
Вот еще одна метафора: хеш-сумма подобна отпечатку пальца, по которому можно точно определить личность. Но вы не сможете по нему узнать ни размер пальца, ни форму ногтя, и тем более ничего он вам не скажет о цвете глаз, росте, весе и поле владельца пальца. Личность удостоверит надежно. Но не даст вам доступа к чувствительной личной информации. Точно так же транзакции записываются в сети, чтобы все участники могли их проверить, но при этом частные коды биткоинов надежно защищены. Что-то похожее на хеширование происходит в онлайн-банкинге: компьютеру банка не разрешается знать ваш пароль, но он хранит полученное с помощью алгоритма его производное и может проверить по нему, что это именно вы, а не кто-то другой. Это своего рода «электронный отпечаток» вашего «электронного пальца», и он позволяет надежно удостоверить вашу личность.
Не буду притворяться, будто полностью понимаю математическую суть происходящего в хеш-алгоритме. Но некую общую идею, мне кажется, дает одно из ранних описаний хеш-суммы как остатка от деления исходных данных на натуральные числа. Но только современный алгоритм SHA 265 использует формулы во много раз более сложные.
Некоторые полагают, что история хеширования восходит к 1610 году, когда Галилео Галилей зашифровал свое сообщение о наблюдении колец Сатурна. Он хотел «застолбить» открытие за собой, не выдавая раньше времени его сути. Записал фразу: Smaismrmilmepoetaleumibunenugttauiras.
Пришло время, и он сделал достоянием гласности оригинал: Altissimum planetam tergeminum obseruaui. То есть, в переводе с латыни, «Высочайшую планету тройною наблюдал». Что, конечно, было пока еще довольно сырым, невнятным наблюдением, но то, что Сатурн — необычная планета, было установлено, и начало ее исследованию положено. Но для истории криптографии важнее, что это был пример своеобразной хеш-суммы. Только, разумеется, на выходе она получилась не фиксированной длины и тем более не шестнадцатеричной. Но, по сути, близко. Или прочитайте такую строчку: ааааааа, ссссс, d, еееее, g, h, iiiiiii, lllll, mm, nnnnnnnnn, oooo, pp, q, rr, s, ttttt, uuuuu. Механизм алгоритма здесь предельно простой: все буквы зашифрованной фразы расставлены по алфавиту. Но мыслимо ли ее расшифровать, вычислить в обратную сторону? Нет, практически невозможно. Но это как раз и есть способ получить доказательство связи с исходной фразой, но так, чтобы угадать ее нельзя было. Это и есть суть хеширования. А исходная фраза была такая: Annulo cingitur, tenui plano, nusquam cohaerente, ad eclipticam inclinator. То есть «Окружен кольцом тонким, плоским, нигде не подвешенным, наклоненным к эклиптике». И речь шла о все том же Сатурне и его кольцах, с которыми более толково разобрался голландский физик, астроном и изобретатель Христиан Гюйгенс, почти полвека спустя продолживший дело Галилея.
В системе Биткоина транзакции записываются в блок, хешированная сумма которого входит в новый блок, будто цепью прикрепляя его к предыдущему. Получается блокчейн. Как тот самый ковер, на котором каждый участник вышивает свои строчки. Или книга, или каменная плита с выбитыми на ней записями. Опять же результат — у всех на виду, и его не изменить.
Блокчейн все ж не камень, а потому теоретически кто-то может попытаться предъявить права на чужую строчку или попробует второй раз истратить тот же биткоин, но для этого надо представить «доказательство выполнения работы». В компьютерном мире это не справка из важного учреждения с гербовыми знаками и печатями, но нечто еще более надежное. Сверхсложное и требующее неимоверного количества компьютерного времени вычисление.
Транзакции в блокчейне можно сравнить с электронной почтой. Когда вы посылаете сообщение на чей-то адрес, вы точно знаете, кому и зачем. Получатель, зная ваш адрес, тоже может быть уверен, что получил его именно от вас, а не от кого-то другого. А теперь представьте себе, что просто отправлением электронного письма вы могли бы оплачивать товар или услугу, пересылая энное количество криптовалюты вашему контрагенту. И наоборот — вы могли бы получать по почте биткоины от клиента. Если добавить систему вечного хранения записей обо всех транзакциях, да еще сделать так, чтобы все участники вашей группы могли в любой момент проверить их подлинность, то вы уже приблизитесь к Биткоиновскому идеалу. С той поправкой, что, в отличие от почты, блокчейн практически невозможно взломать.
И вот еще что придумал Накамото: участники, пытающиеся заработать денег на производстве новых биткоинов (их называют майнерами), поневоле будут также обеспечивать и создание очередных блоков, и подтверждение правильности новых транзакций. Так в поезде крутящиеся колеса заодно вращают и динамомашину, вырабатывающую необходимую составу электроэнергию. (Майнеры еще и комиссию за проверку транзакций получают.) Какое гениальное решение: убить двух таких огромных, важнейших для системы зайцев одним камнем!
«Спустя несколько десятилетий, когда вознаграждение (за создание