Блокчейн – технология будущего?
Блокчейн — это современная технология, являющаяся, по большому счёту, универсальным инструментом, одним из примеров использования которого, является находящийся у всех на слуху биткоин. Тем не менее, криптовалюта лишь один из множества вариантов применения данной технологии, весьма успешно и наглядно демонстрирующий её возможности.
В частности, еще не было случаев взлома или кражи биткоинов, что гарантирует безопасность денежных трансакций. Благодаря открывающимся широким возможностям использования, блокчейну предрекают большое будущее и в других сферах жизнедеятельности человека, столь же критичных в вопросах безопасности.
СОДЕРЖАНИЕ ОБЗОРА:
♦ | Блокчейн – что это? |
♦ | Как работает свертка (хеширование) |
♦ | Самое понятное объяснение принципа работы блокчейна |
♦ | В чем важность технологии блокчейн? |
Блокчейн – что это?
В основе биткоина лежит технология блокчейн — «цепочка блоков». Блоки, из которых состоит цепочка — это специальные структуры, созданные в соответствии с конкретным алгоритмом, которые содержат запись всех транзакций, обмена информацией, между «участниками».
Транзакция считается завершённой и достоверной («подтверждённой»), когда проверены её формат и подписи «участников», и когда сама транзакция объединена в группу с несколькими другими и записана в специальную структуру — блок. Содержимое блоков может быть про — верено, так как каждый блок содержит информацию о предыдущем блоке.
Все блоки выстроены в одну цепочку, которая содержит информацию обо всех совершённых когда-либо операциях в базе.
Блок состоит из заголовка и списка транзакций-действий в объединенной сети. Для того, чтобы «компактифицировать» информацию в блоке и его связи с другими блоками, используется хеш-функция. Хэширование — это преобразование массива входных данных в битовую строку фиксированной длины, выполняемое определённым алгоритмом.
Функция, реализующая алгоритм и выполняющая преобразование, называется «хеш-функцией. Результат преобразования (выходные данные) называется «хешем». Особенность хеша в том, что при изменении исходного текста даже на один знак, полностью меняется результат хеш-функции. Это свойтво хеш-функций позволяет применять их для подтверждения подлинности и цельности сообщения.
Каждый блок «цепочки блоков» включает в себя свой хеш, хеш предыдущего блока, хеши транзакций и дополнительную служебную информацию. Чтобы было более наглядно, приведу фрагмент статьи из блога на сайте лаборатории Касперского.
Как работает свертка (хеширование)?
Например, я написал сообщение «привет» и хочу передать его своему другу. Но мне надо узнать, дошло ли оно до адресата в неизменном виде. Как мне это сделать? Простейший вариант — попросить передать сообщение обратно и сравнить, не изменилось ли оно. Многие так поступают, когда диктуют по телефону какие-нибудь номера или адреса электронной почты.
Если что-то пойдет не так на обратном пути, мы не сможем понять, в порядке ли первоначальное сообщение. К тому же оно может быть длинным: представьте, что сообщение содержит видео в HD, не передавать же все эти гигабайты обратно? Поэтому поступают иначе: для подтверждения того, что сообщение дошло без искажений, используют так называемую свертку, она же «хеш».
Свернем слово «привет» в одно число — например, так:
- Каждой букве выдадим порядковый номер (а=1… я=33), получится: 17 18 10 3 6 20.
- Перемножим все числа и получим 1 101 600. Это и есть простейшая свертка, или хеш.
- Теперь я после передачи основного сообщения просто передаю другу еще и свертку — чтобы он убедился, что все сходится.
- А вот, если сообщение по дороге поменялось и превратилось, например, в «превед», то свертка будет другая: 17*18*6*10*6*5 = 550 800. Друг ждет 1 101 600, а получил 550 800 — тогда он пожалуется, и мы оба поймем: что-то пошло не так.
Обратите внимание: по пути свертку тоже можно сломать или подменить. Свертка не защищает, в отличие от подписи, — она лишь упрощает и ускоряет проверку целостности.
Еще один интересный факт: если поменять буквы местами, то в нашем примере свертка не изменится, и это провал. В реальной жизни используют гораздо более сложное «перемножение» букв, так что результат меняется от любых изменений сообщения. Более того, подобрать другое сообщение с такой же сверткой становится либо нереально, либо очень долго. В этих случаях свертку называют «криптостойкой».
Например, при использовании популярного алгоритма SHA-1, созданного специально для изготовления сверток, хеш слова «привет» будет выглядеть так:
e24505f94db2b5df4c7c2596b0788e720e073021
А хеш слова «превед» — уже вот так:
229d0ee5aabf6af982cdc03a89a56160f1de0e4a
Ничего общего, правда? Так и задумано.
Технологией, на основе которой ведётся учёт всех транзакций — блокчейном — успели заинтересоваться почти все крупные мировые финан — совые институты, в том числе и российские, что само по себе говорит о многом.
Однако объяснить доступным языком, как работает блокчейн (и сам биткоин), до сих пор непросто. На веб-ресурсе «TJournal» у пользователя sleep получилось сделать это максимально наглядно — в виде истории о Коле, ведущем дневник, и Васе, который этот дневник пытается подделать.
Самое понятное объяснение принципа работы блокчейна
Далее привожу фрагмент истории о Коле и Васе.
Коля решил вести дневник. Для этого он завёл тетрадку и начал писать там строчки вроде таких: 1. Купил хлеба. Он очень старался вести дневник честно, и если у него с кем-то возникал спор о чём-то, что произошло раньше, он доставал его и тыкал всем носом в свои записи. Однажды Коля сильно поспорил с Васей на тему того, давал ли он Васе в долг 100 рублей или нет. В момент спора у Коли не было с собой дневника, но он обещал завтра же принести и всё показать Васе. Вася решил не искушать судьбу, пробрался к Коле в дом, в дневнике нашёл строчку 132 и заменил её на «Любил Олю». На следующий день Коля достал дневник, долго искал в нём запись про долг Васе, не нашёл и пришел извиняться. Прошёл год, Васю замучила совесть, и он признался во всём Коле. Коля простил друга, но решил на будущее использовать какую-нибудь более надёжную систему записи, которую нельзя было бы так просто подделывать. Придумал он следующее. В Интернете он нашёл программу, которая брала любой текст и превращала его в хеш — набор из 32-х непонятных цифр и букв. Как именно она это делала, Коля не понимал, но в целом казалось, что она выдавала полную белиберду. Напомню предыдущий пример, если в программу ввести слово «привет», она в ответ выдаёт следующий набор букв и цифр: e24505f94db2b5df4c7c2596b0788e720e073021. А если заменить его на «превед», то уже будет совсем другой хеш: 229d0ee5aabf6af982cdc03a89a56160f1de0e4a. Почесав тыковку, Коля придумал способ усложнить будущим Васям замену записей следующим образом: после каждой записи он вставлял хеш, который получался, если скормить программе текст записи и прошлый хеш. Новый дневник получался таким: 0000 (начальный хеш, ограничимся для простоты четырьмя знаками). Если теперь какой-нибудь Вася захочет изменить строчку 132, изменится и хеш этой строчки (он будет не 1010, а чем-то другим). Это, в свою очередь, повлияет на хеш строчки «133. Любил Люду» (он будет не 8204, а чем-то другим), и так далее до конца дневника. Теперь ради одной записи Васе придётся подменить весь дневник после неё, что сложно. Прошло время, Коля открыл банк. Он всё так же писал в дневник записи «дал в долг» и «взял в кредит», снабжая их хешами. Банк разросся, и однажды он дал в долг (уже новому) Васе миллион. Следующей ночью десять нанятых новым Васей бандитов пробрались в комнату Коле, заменили запись «143313. Дал в долг Новому Васе 1000000» на «143313. Дал в долг Новому Васе 10» и по-быстрому пересчитали все хеши вплоть до конца дневника. Чудом Коля обнаружил подмену и, раз такое дело, решил усложнить способ подделки дневника: «Теперь, — решил Коля, — я буду в конце каждой записи в скобочках добавлять какое–нибудь число („нонс“), а подбирать его буду так, чтобы каждый хеш заканчивался на два нуля». Единственный способ это сделать — тупо перебирать числа, пока не получится нужный хеш: 0000 (начальный хеш, ограничимся для простоты четырьмя знаками). Для создания каждой записи Коле теперь в среднем нужно будет перебрать порядка 50 чисел, что довольно трудно. Соответственно, если запись кто-то подменит, подделка её и всех последующих будет тоже в 50 раз сложнее, а это значит, что теперь Васе даже с бандитами не справиться. Через какое–то время Коля взял себе партнёра и они стали оба вести дневник. Для каждой новой записи оба одновременно начинали подбирать нонс и тот, кому первому удавалось найти подходящий, вносил запись. Так как вдвоём подбирать нонсы быстрее, Коля усложнил задачу и потребовал, чтобы все хеши кончались уже на три нуля, а не на два. Этот окончательный Колин дневничок, по сути, и есть настоящий блокчейн, только Колю с другом надо заменить на кучу соединённых по сети компьютеров, а вычисления хешей усложнить, чтобы даже компьютерам было тяжко. |
Имея такой полезный дневничок, можно строить разные интересные системы. Например, биткоин. Биткоин — это дневничок, где каждая запись имеет вид «Передать столько-то денег с кошелька Х на кошелёк У». Так как дневничок нельзя подделать и в нём хранится вся история переводов, в любой момент из него можно вычислить количество денег на каждом кошельке.
Ну, а чтобы в системе вообще были какие-то деньги, биткоин сделан так, что каждая запись в дневничке заканчивается словами «Произвести Z монет и перевести мне», где «мне» — это тот пользователь, кто первым «угадает» нонс, который обеспечит хеш с нужным количеством нулей в конце.
Поверх дневничка с некоторым количеством криптографии можно строить другие интересные системы. Например, можно делать записи в духе «Кто решит уравнение f(x) = 14, тот получает 10 монеток». Соответственно, первая запись в дневничке, где будет предоставлено решение, может автоматически считаться получателем монеток. Вокруг этой и схожих идей строятся так называемые «контракты».
В чем важность технологии блокчейн?
Сегодня мы уже все привыкли делиться информацией через децентрализованную интерактивную платформу Интернета. Но когда речь заходит о пересылке ценностей (денег), мы обычно вынуждены снова пользоваться услугами старых централизованных финансовых учреждений (банков).
Да, методы платежей через Интернет появились сразу же в момент рождения этой сети (наиболее очевидный пример — это ВебМани или Яндекс.Деньги), но они, как правило, требуют интеграции с банковским счетом или кредитной картой, иначе их нельзя реально использовать.
Технология блокчейн предлагает заманчивую возможность избавиться от этого «лишнего звена». Она может взять на себя все три важные роли, которые традиционно играет сектор финансовых услуг: регистрация сделок, подтверждение подлинности личности и заключение контрактов.
Это будет иметь огромное значение, поскольку во всем мире рынок финансовых услуг — самый большой по рыночной капитализации. Перевод хотя бы части этой системы на технологию блокчейн приведет к разрыву большого числа связей в сфере финансовых услуг, но одновременно позволит значительно повысить эффективность этих услуг.
Третья возможная роль этой технологии (заключение контрактов) может оказаться очень полезной и вне сектора финансовых услуг. Помимо ввода в обращение еще одной валюты (биткоина), технология блокчейн может использоваться также для хранения любого вида цифровой информации, включая компьютерный код.
Этот фрагмент кода можно запрограммировать так, чтобы он выполнялся, только когда обе договаривающиеся стороны вводят свои ключи, тем самым соглашаясь на заключение контракта.
Этот же код может получать информацию из внешних потоков данных (цены на акции, метеорологические сводки, заголовки новостей и все остальное, что может быть проанализировано компьютером) и составлять контракты, которые будут автоматически регистрироваться при выполнении определенных условий.
Этот механизм называется «умные контракты», и возможности их применения практически бесконечны. Например, интеллектуальная система терморегуляции может передавать данные об энергопотреблении в интеллектуальную электрическую сеть.
При потреблении определенного количества электроэнергии другая цепочка блоков автоматически переводит нужную сумму с вашего счета на счет энергетической компании. В результате автоматизируются работа счетчика и процесс выставления счетов.
Можно применять этот подход для контроля использования интеллектуальной собственности, определяя, сколько раз пользователь может получить доступ к информации, поделиться ею или скопировать ее.
Также его можно использовать для создания систем голосования с защитой от фальсификаций, распространения информации без цензурных ограничений и многого другого.
Комментарии 0