Александр Цихилов - Блокчейн. Принципы и основы
- Название:Блокчейн. Принципы и основы
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:2019
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Александр Цихилов - Блокчейн. Принципы и основы краткое содержание
Помимо истории возникновения и описания технологии, в книге рассмотрены наиболее популярные проекты, реализованные на блокчейн, уже существующее и потенциальное применение в различных отраслях, а также проблематика взаимоотношений блокчейн-проектов и государств. Наконец, автор подробно разбирает самые востребованные и популярные темы — инвестиции в криптоактивы, связанные с ними риски и перспективы развития блокчейн. Книга адресована широкому кругу читателей и будет интересна как техническим специалистам, так и аудитории, далекой от финансовых и IT-технологий.
Блокчейн. Принципы и основы - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
односвязный список, когда каждый следующий блок в системе ссылается на
предыдущий. Вопрос в том, что значит «ссылается»: каким образом это
технологически реализовано, а главное, зачем он вообще это делает? Ответ
прост — для поддержания целостности базы данных. Блок состоит из двух
основных частей — заголовка, содержащего служебную информацию, и списка
транзакций для передачи цифровых активов между участниками системы или
просто записи фактов. Все это — набор данных, который можно отобразить в
виде хеша стандартной длины. Вычислив хеш данных заголовка, мы
фиксируем состояние всего блока, и любое вмешательство в его целостность
немедленно приведет к тотальному изменению общего хеша. А что, если
каждый новый блок будет содержать хеш от данных предыдущего блока как
один из элементов своего заголовка? Тогда получится, что, хешируя данные
одного заголовка, мы автоматически включаем туда хеш заголовка
предыдущего блока, и таким образом получается форма сцепления блоков.
Нам известно, что любое малейшее изменение в прообразе меняет его хеш до
неузнаваемости. Это означает, что если мы вмешаемся в любой бит данных
любого из блоков в середине цепочки, это приведет к пересчету всех хешей
последующих блоков. Другими словами, изменятся данные всей цепочки.
О чем в первую очередь нам говорит связная структура блоков? О том, что
блокчейн — это система, куда можно только добавлять информацию, но
нельзя менять или удалять. При этом добавить информацию возможно только
в виде новых блоков и только в конец цепочки. Это, безусловно, порождает
определенное неудобство при управлении информацией, помещаемой в
блокчейн, но, с другой стороны, создает исключительную безопасность
хранения данных в распределенном виде. Ведь вся база блоков копируется
каждому участнику системы, и каждый из них имеет возможность записать туда
что угодно. Другое дело, что эти изменения, будучи сделаны с нарушением
правил системы, не будут приняты другими участниками сети. А соответствие
правилам проверяется участниками системы чисто математически, поэтому
подсунуть им искаженную информацию никак не удастся. Алгоритмы проверки
информации, содержащейся в блоках, сразу же просигнализируют о
нарушении целостности данных, и данный блок будет считаться
неприемлемым для всей сети.
Есть и еще одно неудобство: поскольку данные можно только добавить, но
нельзя удалить, даже если они в какой-то момент утратили свою актуальность, общая база с момента образования самого первого блока постоянно растет. Ее
размер зависит от разных параметров — скорости создания новых блоков, количества транзакций, содержащихся в них, размеров самих транзакций. В
зависимости от этих параметров, а также «возраста» базы данных ее размер
уже через несколько лет активной работы может исчисляться сотнями гигабайт
информации, которая постоянно копируется и синхронизируется между
участниками системы. Решение задачи оптимизации размера базы данных в
блокчейн должно стать приоритетом для разработчиков популярных систем, в
противном случае это может создать дополнительные препятствия для
развития перспективной технологии. Впрочем, предложения по решению этой
проблемы уже существуют, и мы коснемся их в разделе, посвященном
вопросам масштабирования технологии блокчейн.
Давайте рассмотрим структуру заголовка блока подробнее, чтобы понять, какого рода служебная информация в нем содержится. Понятно, что в разных
практических реализациях структура блоков всегда отличается, но у них есть
ряд общих элементов, которые встречаются в том или ином виде почти в
каждом проекте. Как правило, первое, с чего начинается любой блок — это его
порядковый номер. Самый первый блок называется «генезисным», он
отличается от прочих тем, что не содержит ссылки на предыдущий блок по
причине отсутствия такового. Обычно в блоке есть информация о номере его
версии — это бывает необходимо, если впоследствии структура блока
претерпит изменения, и в зависимости от номера версии алгоритмы
программного обеспечения должны будут их по-разному обрабатывать. Затем, как отмечалось ранее, в заголовке содержится хеш заголовка предыдущего
блока для поддержания целостности данных всей цепочки.
Важным элементом заголовка также является время создания блока. Оно
записывается в виде числа, равного количеству секунд, прошедших с 1 января
1970 года — формат, принятый в многопользовательских и многозадачных
операционных системах, таких, например, как Unix и совместимых с ней.
Отдельно заметим, что число это достаточно велико, и через пару десятков
лет должно произойти переполнение 32-битной ячейки памяти, обычно
выделяемой для переменных, хранящих это значение в различном
программном обеспечении. В случае если разработчики этих программ не
внесут необходимые исправления, увеличив размер переменной, хранящей
значения времени до 64 бит, то 19 января 2038 года по всему миру могут
произойти массовые программные сбои. Произойдет это потому, что значения
этого числа в силу специфики построения компьютерной архитектуры при
выполнении программ будут интерпретироваться как имеющие отрицательные
значения — со всеми вытекающими из этого алгоритмическими
последствиями.
И, наконец, переходим к части заголовка, посвященной содержащимся в блоке
транзакциям. Одним из значений в заголовке является число транзакций в
блоке, а вот второе значение имеет загадочное название «корень Меркла».
Это не что иное, как совокупный хеш всех транзакций, находящихся в данном
блоке, вычисленный определенным образом. В 1979 году американский
криптограф Ральф Меркл запатентовал алгоритм вычисления
результирующего хеша для набора данных, построенных в виде двоичного
дерева:
Согласно логике алгоритма Меркла, все транзакции в блоке делятся попарно, хешируются, и их хеши суммируются между собой. Если общее число
транзакций изначально было нечетным и последней транзакции не хватает
пары, то в этом случае ее собственный хеш просто удваивается. На
следующем уровне «дерева» количество хешей уже вдвое меньше и их число
уже гарантированно четное. Хеши опять разбиваются по парам, эти пары
суммируются, и так далее, пока из них не останется только одно конечное
число. В итоге на вершине дерева образуется результирующий, или корневой
хеш, который и называется «корнем Меркла» и является фактически единым
совокупным отпечатком всех транзакций блока. Понятно, что при изменении
Читать дальшеИнтервал:
Закладка: