Как стать автором
Обновить

Блокчейн как структура данных

Время на прочтение 4 мин
Количество просмотров 6.2K
Автор оригинала: Horizen Academy
Привет, Хабр!

Сегодня мы хотели бы обозначить новую тему для обсуждения, кратко рассмотрев блокчейн с точки зрения computer science — как одну из структур данных. В последнее время блокчейн все активнее применяется за пределами криптовалютного сегмента, и эта тенденция, безусловно, заслуживает внимания. Давайте об этом поговорим!

Технологию блокчейна можно объяснить по-разному. До недавнего времени блокчейн рассматривался преимущественно с точки зрения криптовалют. Биткойн – первая ассоциация с блокчейном, возникающая у многих из нас. Но хранение криптовалютных транзакций – лишь один из многих вариантов использования блокчейна. В этой статье мы отступим от такой точки зрения и рассмотрим блокчейн в более общем контексте computer science.

Блокчейн – это структура данных


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

Массив


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



Одномерный массив с шестью элементами

Связные списки


Узлы – это элементы с данными, входящие в связный список. В узле находится как минимум один объект данных и указатель на следующий элемент. Функция указателя – сообщить компьютеру, где находится следующий элемент данного списка.

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

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



Связный список с тремя узлами

Блокчейн


В контексте структур данных блокчейн наиболее напоминает связный список. Также в блокчейне данные разделяются по контейнерам, именуемым блоками. Блоки вполне аналогичны узлам связного списка. В каждом блоке содержится ссылка, представляющая собой хэш предыдущего блока. Она служит связкой с предыдущим блоком и помогает поддерживать порядок в цепочке блоков.



Ключевое отличие между блокчейном и связным списком заключается в том, что каждая ссылка в блокчейне криптографически защищена. Возможно, вы слышали применительно к блокчейну термин «append only» — «только для добавления». Он означает, что вносить новые данные в блокчейн можно, лишь достраивая цепочку спереди. Валидность защищенных связей постоянно проверяется. Если бы можно было вставить в середину блокчейна вредоносный блок, например, между блоками 1 и 3 на схеме ниже, то можно было бы поставить ссылку на предшествующий ему блок 1, но не на следующий за ним блок 3.



Каждый новый блок надстраивается над уже имеющимся, и такая процедура обычно именуется подтверждением. Чем старше блок, тем больше подтверждений у него будет. Каждое подтверждение осложняет подделку данных в блоке. На следующей схеме у блока 2 одно подтверждение. Чтобы подделать данные в блоке 2, вам придется воссоздать один валидный блок, в котором будет новая валидная ссылка. После каждого следующего подтверждения придется воссоздавать еще один блок. Таким образом, чем старше блок, тем выше уверенность, что никаких изменений в этот блок внесено не будет.

Ссылки между блоками зависят не только от порядка блоков, но и от того, какие данные содержатся в каждом блоке. Невозможно добавить или удалить данные из блока в блокчейне. Именно на этом свойстве базируется уверенность, что с данными, помещенными в блокчейн, ничего не случится. Естественно, в структуре данных блокчейна любая подделка очевидна. Любое изменение, вносимое в данные, ломает ссылки на все последующие блоки.

Притом, что удалить или изменить данные в блокчейне невозможно, легко добавить данные в новый блок, прикрепляемый к цепочке. Например, к криптовалютному блокчейну можно добавить новую транзакцию. Транзакцию легко проверить, поскольку все предыдущие транзакции, записанные в сети, неизменяемы. Когда с адреса Y требуется потратить сумму X, на балансе этого адреса должна быть сумма не менее X.

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

Заключение


Блокчейн – это метод хранения данных, применимый в computer science. Элементы блокчейна – его блоки – криптографически связаны друг с другом. Невозможно изменить данные после того, как они были записаны в блок. В этом и заключается ценность блокчейна. Это неизменяемый реестр, в котором можно безопасно хранить данные, работая в недоверенной среде.

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

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

Таким образом, содержащиеся в блокчейне данные всегда можно спокойно проанализировать и чувствовать себя увереннее, занимаясь раскрытием лжи. Если обычный компьютер можно сравнить с вычислительной грифельной доской, то блокчейн – с вычислительным янтарем — @NickSzabo4
Теги:
Хабы:
+6
Комментарии 11
Комментарии Комментарии 11

Публикации

Информация

Сайт
piter.com
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия