Как работает блокчейн: разъяснение принципов работы технологии

Массовые разговоры о биткойнах начались 3 года назад. Технология блокчейн, на основе которой выполняют учет любых совершенных транзакций, сейчас интересна буквально всем крупным финансовым институтам, включая Сбербанк РФ.

Однако с сутью работы блокчейна и самих биткойнов по-прежнему многое непонятно. Разберемся с вопросом «на пальцах», взяв в качестве действующих персонажей истории Толю, который ведет дневник, и Пашу, который решил подделать данный дневник. Под дневником мы будем подразумевать блокчейн.

Итак, в дневнике Толи появляются новые записи, например:

• Звонил Марине
• Сходил в магазин
• Одолжил Паше 10 долларов
• Ходил в спортзал

Анатолий ответственно подходит к ведению дневника. Неожиданно у него возникает сильный спор с Пашей, утверждающим, что 10 долларов в долг он не получал. Во время конфликта дневника у Толи под рукой нет. Однако он заявляет, что принесет его через пару часов и продемонстрирует Паше соответствующую запись.
Паша пробирается в дом к Толе и заменяет сроку «Одолжил Паше 10 долларов» на строчку «Ходил в спортзал». Анатолий смотрит дневник, и не находит записей о долге, он извиняется перед приятелем.

Спустя несколько месяцев Паша, мучимый совестью, сознается в содеянном Анатолию. Последний решает отказаться от ведения дневника в пользу более надежной системы записей. Он находит утилиту kek32, способную хешировать любые тексты в 32 цифры по непонятному Толе алгоритму. Теперь за каждый записью следует хеш, получаемый путем скармливания софту текста записей и прошлого хеша.

Новые записи выглядят так:

• 1111 (изначальный хеш, для легкости понимания ограниченный нами 4 знаками
• Заказал пиццу
5268 (хеш от 1111 и Заказал пиццу)
• Сходил в зал
8962 (хеш от 5268 и Сходил в зал)

И далее по тому же принципу. Сейчас при попытке какого-нибудь Паши заменить строку 5268, измениться и строка 8962, и все прочие строчки дневника.

Спустя какое-то время Толя открывает банк. Он ведет хешированные записи, и дает в долг другому Паше два миллиона рублей. На следующее утро десяток узбеков, которых нанял новый Паша, прокрадываются к Толе и меняют напечатанную Анатлогием хешированную строку «1208962. Занял Паше два миллиона рублей» на строку «481223678. Занял другому Паше три тысячи рублей». После они пересчитывают все хеши до конца дневника.

Анатолий, сам заметив обман, усложняет возможный метод подделки дневника еще раз. Теперь конец всех строчек оканчивается каким-нибудь числом в скобках (нонс). Число подбирается таким образом, чтобы все хеши оканчивались двумя нолями. Единственный вариант исполнения затеи – тупой перебор чисел до получения нужного хеша:

0000 (цифры начального хеша, для легкости понимания в нашем примере их только 4)

1. Заказать пиццу(11)

4100(хеш от 4-х нолей и Заказал пиццу (11), 11 выбрано, чтобы хеш оканчивался на два ноля)

2. Сходил в спортзал(13)

3200 (хеш от 4100 и Сходил в спортзал (13)) и так далее.

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

Спустя некоторый срок Анатолий берет к себе в партнеры Алю, и они ведут дневник вдвоем. Каждая новая запись сопровождается одновременным подбором нонсов двумя молодыми людьми. Но запись вносит тот, кто находит подходящий нонс первым. Подбор нонсов двумя людьми оказался более быстрым процессом, и Толя усложняет задачу, требуя, чтобы каждый хеш оканчивался уже не двумя, а тремя нолями.

Что это значит для нас? То, что окончательную версию Толиного дневника и можно назвать, по сути, настоящим блокчейном. Вот только вместо Толи мы видим массу ПК, которые соединены друг с другом глобальной паутиной. Вычисления хешей также необходимо усложнить до такой степени, что работать с ними непросто даже компьютерному разуму.

Блокчейн является «обычным» дневником с записями, в котором пользователи могут писать одновременно, но при этом возможности подделывания старых записей у них нет никакой.

Этот прикольный дневник отлично подходит для строительства разных интересных систем. Допустим, биткойны. Биткойны также дневники, у которых все записи оформлены по форме «Передать на кошелек Z столько-то монеток с кошелька Q». С учетом невозможности подделки дневника и того, что в нем сохранена вся история операций, из дневника, при желании, возможно вычислить сумму монеток на всех кошельках в отдельности. Для того, чтобы биткойн-система вообще имела какие-нибудь монетки, она выполнена так, что все записи в дневнике оканчиваются фразой «Осуществить перевод X монеток и перечислить мне», где «мне» будет тем пользователем, который смог первый вычислить нонс, обеспечивающий хешу необходимое количество ноликов в конце.

Поверх дневника и его криптографии возможно построение других интересных систем. Допустим, вы можете указать запись «Решившему уравнение S(W) = 13, будет выдано 15 монет). Первая запись дневника с предоставленным решением станет автоматическим получателем указанного количества монет. Эта и схожие идеи позволяют строить «контракты».

Блокчейн является надежным распределенным дневником, но не больше того. С мировыми проблемами ему справиться не по силам. Вопросы, решаемые технологий, решаются гигаваттами энергии, уходящей на подбор нонсов, по факту, в пустую.


X