Книга: Биткоин для всех. Популярно о первой распределенной одноранговой денежной системе
Назад: Электронная цифровая подпись: Просто и наглядно
Дальше: Блок

Блокчейн

Википедия определяет блокчейн, как цепочку блоков транзакций.

Само слово «блокчейн» (blockchain) в переводе с английского означает цепочку блоков (от block – блок и chain – цепочка). Но это определение не передает всю суть этой новой технологии, на которой построена криптовалюта Биткоин.

Так что же на самом деле такое блокчейн? И в чем его преимущества перед другими способами организации и хранения данных?

Начнем с того, что блокчейн – это распределенная база данных, полные копии которой находятся на множестве серверов (компьютеров), объединенных в одноранговую сеть.

Из этого следует, что блокчейн не может существовать только на одном компьютере (сервере).

Одноранговая сеть, называемая еще сетью peer-to-peer (P2P), означает, что все компьютеры, объединенные в неё, имеют одинаковые права и нет главного (центрального управляющего) сервера.

Из этого следует, что блокчейн является децентрализованной системой хранения данных.



Как я раньше уже писал в главе «Кошельки и транзакции», в блокчейне Биткоина, называемом еще ledger (бухгалтерская книга) хранятся данные о всех прошедших на данный момент транзакциях, осуществленных с расчетными единицами Биткоина.



Технология блокчейна, как организации данных, обеспечивает безопасное и целостное хранение информации. Т.е. любые изменения уже записанных в блокчейн транзакций невозможны – нельзя ни удалить, ни откорректировать их.



И это очень важный момент! Поскольку мы имеем дело с финансовыми операциями, которыми являются транзакции. Но при этом нет единого доверенного центра (например, банка), который бы следил за сохранностью и неизменностью этих транзакций.



Как же это организовано в блокчейне? Давайте разберёмся…



Для этого нужно вспомнить, что такое хэш-код и хэширование. В главе «Хэширование: Просто и наглядно» я пояснил, что хэш-код или попросту хэш (hash) любого массива информации подобен отпечатку пальца человека – он представляет собой уникальную короткую символьную строку, которая присуща только этому массиву входящей информации. Точно так же, как отпечаток пальца присущ только одному человеку и нет людей с одинаковыми отпечатками, хэш присущ только одному набору входных данных.

И это свойство хэша – каждому набору (массиву) информации присущ строго определенный, уникальный хэш, – используется в блокчейне для контроля сохранности (неизменности) записанных транзакций.

Чтобы понять, как это реализовано в блокчейне, построим упрощенную схему данных, которую назовем хэшчейном (hash-chain) – цепочкой хэшей.

Представим, что данные в наш хэшчейн записываются построчно. Возьмем слово Start (просто так, чтобы с чего-то начать). Вычислим его хэш-код при помощи SHA-256 hash калькулятора.



Это будет:

 

e4bb9f1ece9af9264a3b9e3913bbdb2cf497457167b1…

 

Запишем это в первую строку в наш хэшчейн. Далее вычислим хэш-код этой строки. Получим:

 

1f26aab02f7e645b95b4973a0202b42f4059941cf470…

 

Запишем это второй строкой. Далее будем повторять операции, получая каждую последующую строку, как хэш от предыдущей:

 

e4bb9f1ece9af9264a3b9e3913bbdb2cf497457167b1…

1f26aab02f7e645b95b4973a0202b42f4059941cf470…

0b706bab77aab5157143417e5b05a7899c88beef136c…

805c72c5f0b8450ab6a0f9bbf1f65cc262d2cdab98fc…

 

И т. д. до бесконечности.



Это и будет наш хэшчейн – цепочка связанных хэшей, которую мы начали с хэш-кода слова Start, а каждая последующая строка – это хэш-код предыдущей.

Как несложно понять, при попытке злоумышленника изменить хотя бы один символ в этом массиве, все последующие хэши изменятся, поскольку ещё одно из свойств хэша – при самом незначительном изменении входной информации её хэш меняется кардинально.



Например, если мы во второй строке изменим первый символ (1) на 2, то наш хэшчейн с третьей строки станет совсем другим:

 

e4bb9f1ece9af9264a3b9e3913bbdb2cf497457167b1…

2f26aab02f7e645b95b4973a0202b42f4059941cf470…

495d58b76f9b95b0cd9a884b202ec7857ff5d53d199e…

05790b4b4ced45d6d6b5d9d39cc04ac1661187c125f7…

 

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



Пойдем дальше. Представим теперь, что мы записываем данные в нашу базу в виде блоков, состоящих из двух строк:



– Заголовок (Hash)

– Строка осмысленных полезных данных (Payload).



При этом заголовок формируется, как хэш-код, получаемый из заголовка и данных предыдущего блока. Для первого блока заголовком будет пустая строка.



Для примера, в качестве данных возьмем первые 4 строки поэмы А.С.Пушкина «Евгений Онегин»:

 

Мой дядя самых честных правил,

Когда не в шутку занемог,

Он уважать себя заставил

И лучше выдумать не мог.

 

Будем записывать по одной строке в каждый блок. Всего у нас будет 4 блока:

 

(нет заголовка)

Мой дядя самых честных правил

 

 

c55c1d6a76b4d5e2f67b5167fd6f8ded02bf94b4a552…

Когда не в шутку занемог,

 

 

fe11dbc29864cd135eb2a7ab20f7c6012f606615d3cc…

Он уважать себя заставил

 

 

b5fa6355fe7c54bc8a25c3711fd09c82bcb682b4a880…

И лучше выдумать не мог.

 

Здесь заголовки (первый строки) блоков, начиная со второго – это по сути, хэш-коды предыдущих блоков.





Теперь представим, что некий злоумышленник (шутник) решил изменить вторую строку на «Когда он в шутку занемог,», заменив частицу «не» на местоимение «он».





Получается:

 

(нет заголовка)

Мой дядя самых честных правил

 

 

c55c1d6a76b4d5e2f67b5167fd6f8ded02bf94b4a552…

Когда он в шутку занемог,

 

 

eb45a8d41c1903a7256fb2a0828136c2abf00a44fe89…

Он уважать себя заставил

 

 

6b0e9b6b534dbaea67f455be675906a9f816aa939363…

И лучше выдумать не мог.

 

Как видим, даже незначительное изменение текста второй строки полностью изменило заголовки всех последующих строк, вплоть до последней. Это изменение будет сразу автоматически замечено, поскольку копии блокчейна хранятся на множестве компьютеров в сети.

Именно по такому принципу работает блокчейн. Вся информация в него записывается поблочно и блоки связаны между собой через заголовки (хэши).





Разумеется, организация данных в блокчейне Биткоина гораздо сложнее, чем в показанном выше примере. Но суть остается та же – между блоками устанавливается связь посредством записи в заголовок текущего блока хэша предыдущего, а полезными данными (Payload) являются записи осуществленных транзакций.





Но кто и как записывает новые данные в блокчейн? Процесс такой записи в Биткоине называется майнингом и об этом я расскажу в главе «Майнинг» раздела «Биткоин для чайников».





Подведем итоги:





Собственно блокчейн (blockchain – цепочка блоков) – это распределённая база данных, представляющая собой непрерывную последовательную цепочку связанных между собой блоков, содержащих информацию.





Технология Блокчейн Биткоина, называемая также технологией распределенного реестра учета (Distributed Ledger Technology или DLT) – это комбинация компонентов, включающих в себя:

 

– одноранговые сети peer-to-peer (P2P),

– распределенное хранение данных,

– криптографию (хэширование и шифрование с открытым ключом).

– механизм консенсуса.

 

Таким образом, технология блокчейна является надежным способом организации и долговременного хранения данных (информации), основанным на криптографической защите и децентрализации.

Кроме того, она позволяет достичь консенсуса между всеми участниками при условиях, что они друг другу не доверяют.

Назад: Электронная цифровая подпись: Просто и наглядно
Дальше: Блок