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

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

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

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

Каждый новый блок надстраивается над уже имеющимся, и такая процедура обычно именуется подтверждением. Чем старше блок, тем больше подтверждений у него будет. Каждое подтверждение осложняет подделку данных в блоке. На следующей схеме у блока 2 одно подтверждение. Чтобы подделать данные в блоке 2, вам придется воссоздать один валидный блок, в котором будет новая валидная ссылка. После каждого следующего подтверждения придется воссоздавать еще один блок. Таким образом, чем старше блок, тем выше уверенность, что никаких изменений в этот блок внесено не будет.
Ссылки между блоками зависят не только от порядка блоков, но и от того, какие данные содержатся в каждом блоке. Невозможно добавить или удалить данные из блока в блокчейне. Именно на этом свойстве базируется уверенность, что с данными, помещенными в блокчейн, ничего не случится. Естественно, в структуре данных блокчейна любая подделка очевидна. Любое изменение, вносимое в данные, ломает ссылки на все последующие блоки.
Притом, что удалить или изменить данные в блокчейне невозможно, легко добавить данные в новый блок, прикрепляемый к цепочке. Например, к криптовалютному блокчейну можно добавить новую транзакцию. Транзакцию легко проверить, поскольку все предыдущие транзакции, записанные в сети, неизменяемы. Когда с адреса Y требуется потратить сумму X, на балансе этого адреса должна быть сумма не менее X.
Криптовалюты – лишь частный вариант применения технологии блокчейна. Блокчейн стремительно становится все более жизнеспособной возможностью для управления цепочками поставок, транспортным парком и для других целей.
Блокчейн – это метод хранения данных, применимый в computer science. Элементы блокчейна – его блоки – криптографически связаны друг с другом. Невозможно изменить данные после того, как они были записаны в блок. В этом и заключается ценность блокчейна. Это неизменяемый реестр, в котором можно безопасно хранить данные, работая в недоверенной среде.
Эту статью хотелось бы завершить твитом, содержащим квинтэссенцию свойств технологии блокчейна и иллюстрирующим его место среди других структур данных.
Сегодня мы хотели бы обозначить новую тему для обсуждения, кратко рассмотрев блокчейн с точки зрения computer science — как одну из структур данных. В последнее время блокчейн все активнее применяется за пределами криптовалютного сегмента, и эта тенденция, безусловно, заслуживает внимания. Давайте об этом поговорим!
Технологию блокчейна можно объяснить по-разному. До недавнего времени блокчейн рассматривался преимущественно с точки зрения криптовалют. Биткойн – первая ассоциация с блокчейном, возникающая у многих из нас. Но хранение криптовалютных транзакций – лишь один из многих вариантов использования блокчейна. В этой статье мы отступим от такой точки зрения и рассмотрим блокчейн в более общем контексте computer science.
Блокчейн – это структура данных
Структура данных – это способ хранения и организации данных, а также управления ими. Структура данных позволяет обращаться к этим данным, добавлять их, изменять и искать данные, содержащиеся в этой структуре. В числе наиболее распространенных и базовых структур данных – массивы и связные списки.
Массив
Массив включает некоторое количество перечислимых элементов. Это могут быть числа, буквы, слова или даже целые файлы. Благодаря индексам, можно обращаться к каждому отдельному элементу в массиве. Таким образом, если вы хотите изменить запись в массиве и знаете, где она находится, то можете мгновенно к ней обратиться.

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

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

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

Каждый новый блок надстраивается над уже имеющимся, и такая процедура обычно именуется подтверждением. Чем старше блок, тем больше подтверждений у него будет. Каждое подтверждение осложняет подделку данных в блоке. На следующей схеме у блока 2 одно подтверждение. Чтобы подделать данные в блоке 2, вам придется воссоздать один валидный блок, в котором будет новая валидная ссылка. После каждого следующего подтверждения придется воссоздавать еще один блок. Таким образом, чем старше блок, тем выше уверенность, что никаких изменений в этот блок внесено не будет.
Ссылки между блоками зависят не только от порядка блоков, но и от того, какие данные содержатся в каждом блоке. Невозможно добавить или удалить данные из блока в блокчейне. Именно на этом свойстве базируется уверенность, что с данными, помещенными в блокчейн, ничего не случится. Естественно, в структуре данных блокчейна любая подделка очевидна. Любое изменение, вносимое в данные, ломает ссылки на все последующие блоки.
Притом, что удалить или изменить данные в блокчейне невозможно, легко добавить данные в новый блок, прикрепляемый к цепочке. Например, к криптовалютному блокчейну можно добавить новую транзакцию. Транзакцию легко проверить, поскольку все предыдущие транзакции, записанные в сети, неизменяемы. Когда с адреса Y требуется потратить сумму X, на балансе этого адреса должна быть сумма не менее X.
Криптовалюты – лишь частный вариант применения технологии блокчейна. Блокчейн стремительно становится все более жизнеспособной возможностью для управления цепочками поставок, транспортным парком и для других целей.
Заключение
Блокчейн – это метод хранения данных, применимый в computer science. Элементы блокчейна – его блоки – криптографически связаны друг с другом. Невозможно изменить данные после того, как они были записаны в блок. В этом и заключается ценность блокчейна. Это неизменяемый реестр, в котором можно безопасно хранить данные, работая в недоверенной среде.
Эту статью хотелось бы завершить твитом, содержащим квинтэссенцию свойств технологии блокчейна и иллюстрирующим его место среди других структур данных.
Блокчейн не гарантирует истину, а предохраняет как истину, так и ложь от внесения изменений.
Таким образом, содержащиеся в блокчейне данные всегда можно спокойно проанализировать и чувствовать себя увереннее, занимаясь раскрытием лжи. Если обычный компьютер можно сравнить с вычислительной грифельной доской, то блокчейн – с вычислительным янтарем — @NickSzabo4
jetcar
Весь смысл блокчейна в том что он разделён между многими участниками и внести изменение с которым большенство «не согласны» невозможно, а когда ты единственный участник, то изменения вносяться путём переписывания всей последующей истории, что энерго/время затратно, но не невозможно и вся защита построена тупо на вычислительной мощности. А если учесть что все записи будут изначально потреблять больше энергии, то мы в греем воздух ради призрачной безопасности данных.
Да и нафиг оно нужно, ведь с базой напрямую почти никто не работает, а значит и поменять там просто так ничего не смогут, а те кто имеют доступ к данным на прямую могут сделать что угодно и никакой блокчейн не поможет.
Sklott
Вы путаете блокчейн как структуру данных, описанную в данной статье, и «блокчейн» как распространенный термин описывающий одну из частных реализаций блокчейна в криптовалютах.
git например тоже основан на блокчейне, но никто там фигней с PoW не страдает…