Биткоин за 5 минут: Блокчейн
Википедия определяет блокчейн, как цепочку блоков транзакций. Само слово «блокчейн» (blockchain) в переводе с английского означает цепочку блоков (от block — блок и chain — цепочка).
Но, это определение не передает всю суть этой новой технологии, на которой построена криптовалюта Биткоин.
Так что же на самом деле такое блокчейн? И в чем его преимущества перед другими способами организации и хранения данных?
Начнем с того, что блокчейн — это распределенная база данных, полные копии которой находятся на множестве серверов (компьютеров), объединенных в одноранговую сеть.
Из этого следует, что блокчейн не может существовать только на одном компьютере.
Одноранговая сеть, называемая еще сетью peer-to-peer (P2P), означает, что все компьютеры, объединенные в неё, имеют одинаковые права и нет главного (центрального управляющего) сервера.
Из этого следует, что блокчейн является децентрализованной системой хранения данных.
Как я раньше уже писал в статье «Биткоин за 5 минут: Кошельки и транзакции», в блокчейне Биткоина, называемом еще ledger (бухгалтерская книга) хранятся данные всех прошедших на данный момент транзакций, осуществленных с монетами биткоина.
Технология блокчейна, как организации данных, обеспечивает безопасное и целостное хранение этих транзакций. Т.е. любые изменения уже записанных в блокчейн транзакциий невозможны — нельзя ни удалить, ни откорректировать их.
И это очень важный момент! Поскольку мы имеем дело с финансовыми операциями, которыми являются транзакции. А также нет единого доверенного центра (банка), который бы следил за сохранностью (неизменностью) этих транзакций.
Как же это организовано в блокчейне? Попробуем разобраться…
Для этого нужно вспомнить, что такое хэш-код и хэширование. В статье «Хэширование: Просто и наглядно» я пояснил, что хэш-код или попросту хэш (hash) любого массива информации подобен отпечатку пальца человека — он представляет собой уникальную короткую символьную строку, которая присуща только этому массиву входящей информации. Точно так же, как отпечаток пальца присущ только одному человеку и нет людей с одинаковыми отпечатками, хэш присущ только одному набору входных данных.
И это свойство хэша — Каждому набору (массиву) информации присущ строго определенный, уникальный хэш, — используется в блокчейне для контроля сохранности (неизменности) записанных транзакций.
Чтобы понять, как это реализовано в блокчейне, построим упрощенную схему данных, которую назовем хэшчейном (hash-chain) — цепочкой хэшей.
Представим, что данные в наш хэшчейн записываются построчно. Возьмем слово Start (просто так, чтобы с чего-то начать). Вычислим его хэш-код при помощи SHA-256 hash калькулятора. Это будет:
- e4bb9f1ece9af9264a3b9e3913bbdb2cf497457167b14ced5f85688bfde74644
Запишем это в первую строку в наш хэшчейн. Далее вычислим хэш-код этой стоки. Получили:
- 1f26aab02f7e645b95b4973a0202b42f4059941cf470bd567fac35e07041ac22
Запишем это второй строкой. Дале будем повторять операции, получая каждую последующую строку, как хэш от предыдущей:
- e4bb9f1ece9af9264a3b9e3913bbdb2cf497457167b14ced5f85688bfde74644
- 1f26aab02f7e645b95b4973a0202b42f4059941cf470bd567fac35e07041ac22
- 0b706bab77aab5157143417e5b05a7899c88beef136c58dd3d9b3d8a51419d26
- 805c72c5f0b8450ab6a0f9bbf1f65cc262d2cdab98fcd220285291d49efc95e9
И т.д. до бесконечности.
Это и будет наш хэшчейн — цепочка связаных хэшей, которую мы начали с хэш-кода слова Start, а каждая последующая строка — это хэш-код предыдущей.
Как несложно понять, при попытке злоумышленника изменить хотя бы один символ в этом массиве, все последующие хэши изменятся, поскольку одно из свойств хэша гласит: При самом незначительном изменении входной информации её хэш меняется кардинально.
Например, если мы во второй строке изменим первый символ (1) на 2, то наш хэшчейн с третьей строки станет совсем другим:
- e4bb9f1ece9af9264a3b9e3913bbdb2cf497457167b14ced5f85688bfde74644
- 2f26aab02f7e645b95b4973a0202b42f4059941cf470bd567fac35e07041ac22
- 495d58b76f9b95b0cd9a884b202ec7857ff5d53d199e86466d7fa396ffbe4153
- 05790b4b4ced45d6d6b5d9d39cc04ac1661187c125f7a459a618b1214da53861
Разумеется, наш пример с хэшчейном бессмысленный с точки зрения содержания данных. Но, он позволяет понять суть технологии.
Пойдем дальше. Представим теперь, что мы записываем данные в нашу базу в виде блоков, состоящих из двух строк:
- Заголовок (Hash)
- Строка осмысленных полезных данных (Payload).
При этом заголовок формируется, как хэш-код, получаемый из заголовка и данных предыдущего блока. Для первого блока заголовком будет пустая строка.
Для примера, в качестве осмысленных данных возьмем первые 4 строки поэмы А.С.Пушкина «Евгений Онегин»:
Мой дядя самых честных правил,
Когда не в шутку занемог,
Он уважать себя заставил
И лучше выдумать не мог.
Будем записывать по одной строке в каждый блок:
- (нет заголовка)
Мой дядя самых честных правил, - c55c1d6a76b4d5e2f67b5167fd6f8ded02bf94b4a5520d1b811b1ab6d7ea6cdf
Когда не в шутку занемог, - fe11dbc29864cd135eb2a7ab20f7c6012f606615d3cc5401eeba4cd6c68bebbf
Он уважать себя заставил - b5fa6355fe7c54bc8a25c3711fd09c82bcb682b4a8804e20df04a166b42d88a4
И лучше выдумать не мог.
Здесь заголовки (первый строки) блоков, начиная со второго — это по сути, хэш-коды предыдущих блоков.
Теперь представим, что некий злоумышленник (шутник) решил изменить вторую строку на «Когда он в шутку занемог,», заменив частицу «не» на местоимение «он».
Получается:
- (нет заголовка)
Мой дядя самых честных правил, - c55c1d6a76b4d5e2f67b5167fd6f8ded02bf94b4a5520d1b811b1ab6d7ea6cdf
Когда он в шутку занемог, - eb45a8d41c1903a7256fb2a0828136c2abf00a44fe89dd80632e91adf3d20bc0
Он уважать себя заставил - 6b0e9b6b534dbaea67f455be675906a9f816aa9393634a2c30e0a49a3f41f9df
И лучше выдумать не мог.
Как видим, даже незначительное изменение текста второй строки полностью изменило заголовки всех последующих строк, вплоть до последней. Это изменение будет сразу автоматически замечено, поскольку копии блокчейна хранятся на множестве компьютеров в сети.
Именно по такому принципу работает блокчейн! Вся информация в него записывается поблочно и блоки связаны между собой через заголовки (хэши).
Разумеется, организация данных в блокчейне Биткоина несколько сложнее, чем в показанном выше примере. Но суть остается та же — между блоками устанавливается связь посредством записи в заголовок текущего блока хэша предыдущего, а полезными данными являются записи осуществленных транзакций.
Но, кто и как запысывает новые данные в блокчейн? Процесс такой записи в Биткоине называется майнингом и об этом я расскажу в следующей статье цикла «Биткоин за 5 минут».
Подведем итоги:
Блокчейн (blockchain — цепочка блоков) Биткоина, называемый также технологией распределенного реестра учета (Distributed Ledger Technology или DLT) — это комбинация компонентов, включающих в себя:
- одноранговые сети peer-to-peer (P2P),
- распределенное хранение данных и
- криптографию (хэширование и криптографию с открытым ключом).
Таким образом, блокчейн является надежным способом организации и долговременного хранения данных (информации), основанным на криптографической защите и децентрализации.
Кроме того, он позволяет достичь консенсуса между всеми участниками при условиях, что они друг другу не доверяют.
Как это происходит, я расскажу в следующих статьях. Подписывайтесь и читайте!