Дата публикации: 26.10.2023
В этом цикле статей мы обсудим, что такое блокчейн, для чего он был создан и как выглядит в реальности. А также поразглядываем пристально криптовалюты, сравним их с настоящими деньгами и попробуем управлять ими через криптокошелёк.
Этот материал пригодится тем, кто вообще не понимает, что такое блокчейн и крипта, но хочет почитать «объяснение на пальцах» для общего развития. Мы постарались сделать этот рассказ таким, чтобы ссылку на него имело смысл давать вашим продвинутым родственникам, которые просят объяснить, что там за «виртуальные деньги» такие придумали. Также мы наивно полагаем, что самым-самым начинающим айтишникам эта статья тоже будет полезна, чтобы включиться в контекст крипторазработки. Ну, поехали.
Как мы снег зимой продаём
В переводе слово «блокчейн» означает «цепь блоков». Отсюда вывод: в этой технологии точно есть какие-то «блоки» и они связаны между собой. Окей, первый вопрос – блоки чего именно?
И ответ прост – информации. В каждом блоке записаны некие данные, они там лежат себе, хранятся и просматриваются, как в любой самой обычной базе данных.
С учётом того, что эта технология задумывалась как платёжная система, блоки предназначены для хранения информации о транзакциях. То есть о том, кто кому когда и в каком количестве какие активы (ценности) передавал.
Важный момент! «Активами» в данном случае может быть практически что угодно на свете, представляющее ценность: деньги, вещи, ценные бумаги, информация, субъекты авторского права, картинки с котиками и т. д. Причём, существовать они могут как в реальности, например, картина «Мона Лиза» из Лувра, так и только в виртуальном мире – какая-нибудь цифровая «Мона Лиза», написанная особой нейросетью.
Ещё для любой платёжной системы важны такие вещи, как надёжность, безопасность, прозрачность каждой операции и невозможность «открутить фарш назад». Всё это нашло отражение в блокчейне – далее мы с вами увидим, каким образом.
В максимально упрощённом виде один блок можно представить как листочек из блокнота, на котором записано, например, «Петя продал Васе снег зимой» (снег – это актив, а его продажа – транзакция). На следующем блоке сказано «Вася обменял половину полученного от Пети снега на чемодан без ручки», ещё на одном – «Чемодан без ручки Вася подарил жене» (думаю, здесь уже сами догадались!) и т. д.
Информация о совершённых операциях, записанная в блоке, называется список транзакций.
Каждый следующий блок в цепочке содержит информацию не только о записанных в него транзакциях, но и о том, какой блок ему предшествовал. То есть никакие данные не возникают «из воздуха» и не исчезают в небытие. Таким образом, идя по цепочке, можно добраться до начала и восстановить всю историю событий, происходивших (в нашем примере) со времён, как наступила зима.
Помните игру в поиск записок, когда в каждой из них написано, где искать следующую? Можно представить блокчейн как такую игру, только в каждом блоке сказано, где его более ранний предшественник.
Теперь давайте продадим «Войну и мир»
У каждого блока в цепочке, помимо списка транзакций, есть хэш (уникальный идентификатор) из 64 символов, цифр и букв в рандомном беспорядке.
Хэши, на самом деле, это вся соль, и изюминка, и вишенка на торте в блокчейне, потому что без них транзакции не могли бы быть на 100% прозрачными, честными и неизменными. А именно тот факт, что записанное в блокчейне «не вырубишь топором», и делает его столь безопасной, а потому популярной и любимой всеми технологией.
Чтобы понять, как это работает, нужно сначала слегка и издалека потрогать палочкой программу, которая называется «хэш-функция».
Итак, хэш-функция преобразует строчку любой длины (даже огромную, хоть «Войну и мир» одной строкой вводите) в уникальную комбинацию из 64 букв и цифр. Причём, если в гипотетической «Войне и мире» вы подмените хотя бы одну букву – хэш тут же поменяется. Уберёте одну букву – опять поменяется. В общем, даже самое маленькое изменение переделывает хэш на другой.
Примечание: Обратно преобразовать 64-символьную строку в «Войну и мир» не получится, вернее, теоретически это можно сделать, но на деле это очень трудно и вычислительной мощности вам не хватит. Поэтому всё, проехали-забыли.
В нашем блокчейне каждая транзакция в каждом блоке преобразуется в отдельный хэш. Далее километровая «колбаса» из всех хэшей в одном блоке превращается программой в один простой 64-символьный хэш – и это уже хэш всего блока целиком. Они, в свою очередь, как звенья, связывают вместе нашу цепочку, потому что у каждого блока транзакций есть свой хэш и ссылка на хэш предыдущего блока.
Получается такая матрёшка, в которой все данные тесно связаны друг с другом. И если в одной транзакции вы измените хотя бы одну закорючечку, случится «эффект бабочки» – все хэши начнут меняться, все ссылки сломаются, а все пользователи увидят, где и что было изменено (и кто это сделал) – и начнут громко хихикать и тыкать пальцами.
Вот так вот и получается, что однажды записанная в блок транзакция, останется в нём навечно и никогда не сможет быть изменена или удалена. А чтобы подменить какую-то одну транзакцию и продать, например, «Войну и мир» без первой главы, нужно подменить всю предыдущую цепочку блоков, что, как вы понимаете, втихую тоже сделать не получится.
Разумеется, это очень грубое и простое объяснение – и на деле все процессы в блокчейне гораздо более сложные и высокотехнологичные. Но мы тут собрались рассуждать «на пальцах» (а также на матрёшках и чемоданах), поэтому не будем повышать уровень сложности. Ну, разве что немножечко – от Васи и Пети к византийским генералам.
Задачка про византийских генералов
Она сама по себе очень известная и интересная, она решается с помощью блокчейна (и с новой точки зрения объясняет, как он работает) и ею очень удобно интеллектуально покорять своих друзей: мол, я вам сейчас такое расскажу…Поэтому, давайте же скорее разбираться.
Есть в криптологии такая остросюжетная проблема (или задача) византийских генералов. Итак, представьте себе… Византийская армия состоит из какого-то количества легионов, каждым из которых командует свой генерал. Все они подчиняются главнокомандующему.
Сейчас некогда великая империя находится в упадке, и любой из генералов – и даже сам главнокомандующий – могут быть предателями Византии, заинтересованными в её поражении.
В ночь перед сражением каждый из генералов получает от главнокомандующего приказ, что надлежит сделать в 10 часов утра (время одинаковое для всех и известно заранее). Варианты приказа – «атаковать противника» или «отступать».
Возможные исходы сражения:
Если все верные генералы атакуют – Византия уничтожит противника (благоприятный исход).
Если все верные генералы отступят – Византия сохранит свою армию (промежуточный исход).
Если некоторые верные генералы атакуют, а некоторые отступят – противник со временем по частям уничтожит всю армию Византии (неблагоприятный исход).
Также следует учитывать, что если главнокомандующий – предатель, то он может дать разным генералам противоположные приказы, чтобы обеспечить уничтожение армии. Следовательно, генералам надо учитывать такую возможность и не допускать несогласованных действий. А если каждый генерал будет действовать сам по себе, независимо от других (например, сделает случайный выбор – «атаковать» или «отступать»), то вероятность благоприятного исхода очень низкая.
Поэтому генералы нуждаются в обмене информацией между собой, чтобы прийти к единому решению.
Что же поможет этим воякам? Правильно, блокчейн!
Что такое «проблема доверия»
Говоря самым простым языком, «проблема доверия» заключается в том, что наши генералы и их главнокомандующий заведомо хотят обмануть друг друга.
И мы – как специалисты по блокчейну – всегда должны держать в голове тот факт, что и генералы (возможно, все) хотят друг друга надуть – и ещё, предположим, некий загадочный вражина, который вскользь упоминается в задачке, тоже куда-то своих шпионов заслал. Налицо проблема доверия.
В случае с генералами все тактические вопросы, по идее, должен решать главнокомандующий. Он централизованно отдаёт всем приказы – и он же является самой главной «точкой отказа», слабым звеном, потому что если кто-то подменит его приказы или вообще он сам окажется предателем, а все ему без оглядки поверят – тогда пиши пропало, Византии конец.
С помощью децентрализации и некоторого количества алгоритмов так называемого «консенсуса» (то есть договорённости), в основном и решается эта проблема (по крайней мере, решалась на заре создания блокчейнов).
Что ж делать-то?
Децентрализа́ция – процесс перераспределения, рассеивания функций, сил, власти, людей или вещей от центрального местоположения или управляющего органа.
Спасибо, «Вики»
Вместо того, чтобы слушаться главнокомандующего, каждый генерал выдвигает своё решение (свой приказ) в блокчейн, который у нас является одноранговой децентрализованной системой (то есть все участники взаимодействуют на равных и нет никакого «главного»).
Дальше в игру вступает «алгоритм консенсуса». В нашем случае это некий свод принципов и правил, благодаря которому все участвующие в сети узлы, то есть компьютеры (или сервера), взаимодействующие в рамках одной цепочки блоков, проверяют, верна ли каждая конкретная транзакция и автоматически приходят к договорённости о текущем состоянии блокчейна. Это гарантирует достоверность всех хранящихся в нём данных и, соответственно, безопасность сети. Кстати, помните мы говорили про хэш? Вычисление хэшей тоже происходит на этих самых компьютерах (как именно – разберём в следующей статье).
В общем, после того как генералы отправили свои приказы в блокчейн, он с помощью алгоритма консенсуса приходит к какому-то решению и отправляет единый приказ в каждую армию.
Сам алгоритм консенсуса в данной ситуации заключается в том, что блокчейн видит каждое решение каждого из генералов и выбирает наиболее частое и отправляет всем армиям – и по итогу у каждой армии будет одинаковый приказ.
Получается, что у предателей связаны руки! Чтобы обмануть верных Византии генералов, нужно, чтобы каждый из них думал, что он получил свой «ложный» приказ от блокчейна. Значит, нужно целиком подменить блокчейн, либо иметь возможность изнутри как-то решать, рассылать ли разные приказы армиям или нет.
Но с точки зрения современного мира, где речь идёт о больших сетях, никакому вражине экономически не выгодно иметь такое количество предателей, которое смогло бы провернуть эту операцию. Поэтому победят «хорошие» генералы. Как это выглядит в реальной жизни? Всё просто: для того, чтобы подменить блокчейн для одного пользователя, нужно подменить его целиком (например, для сети bitcoin нужно одновременно взломать порядка 150 тыс. серверов) либо иметь под своим контролем 51% этих самых серверов или активов (если опять приводить в пример bitcoin, то нужно иметь в своём распоряжении порядка 79 миллиардов долларов в биткоинах). (Прим. автора: это много). И всё для того, чтобы обмануть даже не какого-нибудь византийского генерала, а простого Васю, который снег зимой продаёт? Нет уж, спасибо.
А нам-то от этого какая польза?
Ну, как вы уже поняли, легко представить, что речь идёт не о приказах на поле боя, а о финансовых операциях. Тогда выдуманные генералы – это мы, пользователи, главнокомандующий – это банк, а враги и предатели Византии – это мошенники и грабители, у которых блокчейн отбивает всякую охоту продолжать свою преступную деятельность.
Именно поэтому технология обрела популярность как платёжная система: потому что безопасность финансов – одна из приоритетных задач, а тут такое изящное решение возникло. О том, как всё это дальше развивалось и какие сейчас варианты использования блокчейна бывают, мы с вами поговорим в следующих материалах цикла, так что не переключайтесь.
Автор: Ольга Зайцева
Сопутствующие иллюстрации: нейросеть Kandinsky 2.2