Основы блокчейна

О чем читают в книге Даниэля Дрешера «Основы блокчейна: вводный курс для начинающих в 25 небольших главах»:

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

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

Основы блокчейна Дрешер

Об авторе

Даниэль Дрешер (Daniel Drescher) – опытный профессионал в банковской сфере, работавший в области электронной торговли ценными бумагами в нескольких банках. В последнее время его деятельность сосредоточена на задачах автоматизации, машинного обучения и обработки больших данных в сфере торговли ценными бумагами. Кроме того, Даниэль имеет докторскую степень по эконометрике (метематической экономике) в Берлинском Техническом университете и степень магистра инженерии программного обеспечения, присвоенную Оксфордским университетом.

О Техническом рецензенте

Лоренс Керк (Laurence Kirk) после успешной карьеры автора оперативного финансового прикладного программного обеспечения для делового центра Сити в Лондоне заинтересовался потенциальными возможностями технологии создания распределенного программного обеспечения для финансового учета. Он поступил в Оксфордский университет для получения степени магистра и основал компанию Extropy.io, консультирующую стартапы по разработке прикладных программ для платформы Ethereum. Увлеченный возможностями технологии распределенного программного обеспечения, сейчас он является разработчиком, экспертом-консультантом и инструктором по вопросам использования платформы Ethereum.

Предисловие

Данное предисловие отвечает на самый важный вопрос, на который обязан ответить любой автор: зачем читать эту книгу? Или на более конкретный вопрос: зачем читать еще одну книгу по технологии Blockchain? Продолжайте читать, и вы поймете, зачем написана эта книга, чего ждать от нее и чего в ней не следует искать. Вы также узнаете, для какой аудитории написана эта книга и как она организована.

Зачем нужна еще одна книга о технологии блокчейна?

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

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

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

В этой книге излагаются теоретические концепции, на основе которых сформирована технология блокчейна, в лаконичном и понятном стиле, рассчитанном на неподготовленных (с технической точки зрения) читателей. Книга отвечает на три главных вопроса, возникающих при знакомстве с любой новой технологией: что это такое? зачем это нужно мне? как это работает?

Чего не следует ждать от этой книги

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

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

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

Чего следует ожидать от этой книги

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

• диалоговый («разговорный») стиль;
• отсутствие математических выкладок и формул;
• постепенное продвижение по проблемной области;
• использование метафор и аналогий.

Диалоговый («разговорный») стиль

Эта книга преднамеренно написана в диалоговом, или «разговорном», стиле. Здесь абсолютно не применяется математический и компьютерный жаргон, чтобы устранить все препятствия для читателей, не вполне подготовленных с технической точки зрения. Но здесь представлена и объяснена вся терминология, необходимая для участия в обсуждениях и для понимания других публикаций по теме блокчейна.

Отсутствие математических выкладок и формул

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

Постепенное продвижение по проблемной области

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

Использование метафор и аналогий

Каждая глава-этап, представляющая новую концепцию, начинается с образного описания ситуации из реальной жизни. Такие метафоры служат четырем основным целям. Во-первых, они готовят читателя к правильному восприятию новой технической концепции. Во-вторых, объединяя техническую концепцию с простой жизненной ситуацией, метафора устраняет психологический барьер при «исследовании новой территории». В-третьих, метафоры позволяют изучать новые концепции с помощью подобия и аналогий. Наконец, метафоры формируют простые практические правила для запоминания новых концепций без затруднений.

Как организована эта книга

Книга состоит из 25 глав-этапов, сгруппированных по пяти основным темам (частям), которые в совокупности формируют процесс обучения с постепенным наращиванием знаний о технологии блокчейна. В главах рассматриваются основы программной инженерии, объясняется необходимая терминология, обосновывается необходимость применения технологии блокчейна, описываются отдельные концепции, заложенные в основу этой технологии, а также взаимодействие между ее компонентами, рассматриваются приложения блокчейна и направления разработок и активных исследований в этой области.

Часть I: Терминология и основы технологии

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

Часть II: Зачем нужна технология блокчейна

В главах 4-7 объясняется, зачем нужна технология блокчейна, какие задачи она решает, почему решение этих задач важно, а также описываются потенциальные возможности блокчейна. К концу главы 7 вы будете хорошо понимать проблемную область технологии блокчейна, среды, в которой применение блокчейна наиболее эффективно, и почему в этих областях применение блокчейна рассматривается в первую очередь.

Часть III: Как работает блокчейн

Третья часть является главной частью книги, поскольку подробно описывает внутреннее устройство и функционирование блокчейна. В главах 8-21 последовательно представлены 15 различных технических концепций, в совокупности составляющих основу технологии блокчейна. К концу главы 21 вы будете полностью понимать все основные концепции блокчейна, их функционирование по отдельности, а также их взаимодействие для создания крупного комплексного механизма, называемого блокчейн.

Часть VI: Ограничения и способы их преодоления

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

Часть V: Использование технологии блокчейна, общие выводы и перспективы

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

Дополнительные материалы

Веб-сайт www.blockchain-basics.com предоставляет дополнительные материалы по темам некоторых глав данной книги.

Часть I
Терминология и основы технологии

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

Глава 1
Понимание уровней и аспектов
Анализ систем посредством разделения их на уровни и аспекты

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

Метафора

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

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

Уровни программной системы

На протяжении всей книги при разделении любой системы на составные части используются следующие две методики:

• сопоставление приложения и его реализации;

• разделение на функциональные и нефункциональные аспекты.

Сопоставление приложения и его реализации

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

Разделение на функциональные и нефункциональные аспекты

Различие между тем, что система делает и как она это делает, приводит к разделению функциональных и нефункциональных аспектов. Примерами функциональных аспектов являются: передача данных по сети, воспроизведение музыки, фотографирование и редактирование отдельных пикселов в изображении. Примеры нефункциональных аспектов: удобный графический пользовательский интерфейс, быстрое программное обеспечение, возможность безопасного хранения пользовательских данных и защита их приватности. Другими важными нефункциональными аспектами системы являются безопасность и целостность. Целостность (integrity) означает, что система ведет себя именно так, как от нее ожидают, в то же время понятие целостности включает в себя и многие другие аспекты, такие как, например, безопасность (защищенность) и корректность [8]. Эффективным способом запоминания различий между функциональными и нефункциональными аспектами системы является аналогия с грамматикой русского или английского языка: глаголы описывают действия (что делается), а наречия – как выполняются эти действия. Например, человек может идти быстро или медленно. В обоих случаях действие «идти» одинаково, но способы выполнения этого действия различны. Поэтому в качестве практического правила можно предложить аналогию: функциональные аспекты соответствуют глаголам, нефункциональные аспекты соответствуют наречиям.

Одновременное изучение двух уровней

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

Таблица 1.1 Пример мысленного разделения на уровни мобильного телефона

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

Целостность

Целостность (integrity) – это важный нефункциональный аспект любой программной системы. Понятие целостности включает три главных компонента [5]:

• целостность данных (data integrity): данные, используемые и сопровождаемые системой, должны быть полными, корректными и непротиворечивыми;

• целостность поведения (behavioral integrity): система ведет себя, как предполагается, и не допускает логических ошибок;

• безопасность (защита) (security): система способна ограничить доступ к своим данным и функциональным возможностям, разрешая его только авторизованным пользователям.

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

Перспектива

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

Резюме

• Анализ систем может выполняться с помощью разделения:

– на уровень приложения и уровень реализации;

– на функциональные и нефункциональные аспекты.

• Уровень приложения сосредоточен на потребностях пользователя, уровень реализации – на способах удовлетворения этих потребностей.

• Функциональные аспекты определяют, что делать, нефункциональные аспекты определяют, как это делать.

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

• Целостность является важным нефункциональным аспектом любой программной системы и включает три главных элемента:

– целостность данных;

– целостность поведения;

– безопасность (защита).

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

Глава 2
Более подробная картина
Архитектура программного обеспечения и ее связь с технологией блокчейна

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

Метафора

У вас есть автомобиль? Большинство людей имеет автомобили. Даже если вы никогда не покупали машину, вероятнее всего, вы все же знаете, что машины оснащены различными типами двигателей (например, дизельными, бензиновыми или электрическими). Это пример применения принципа модульности как результата реализации идеи разделения на уровни для автомобилей. Возможность выбора одного из нескольких типов двигателя при покупке машины может привести к значительным различиям функциональных возможностей транспортных средств.

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

Платежная система

Применим концепцию разделения на уровни к платежной системе. В табл. 2.1 показаны некоторые потребности пользователей и некоторые нефункциональные аспекты на уровне приложения и на уровне реализации.

Таблица 2.1 Аспекты и уровни платежной системы

Вы обратили внимание на знак вопроса в той части таблицы, где обычно находится информация о технологии, обеспечивающей работу системы? Часть таблицы, помеченная знаком вопроса, оставлена незаполненной с определенной целью. Это то место, где вы решаете, какой «двигатель» должен использоваться, чтобы система работала. В следующем разделе более подробно рассматривается аналог двигателя в программных системах.

Два типа архитектуры программного обеспечения

Существует много способов реализации программных систем. Но одним из основных решений в процессе реализации системы становится определение ее архитектуры, то есть схемы организации ее компонентов и взаимосвязей между ними. Двумя основными типами архитектуры программных систем являются централизованная и распределенная [32].

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

 

Рис. 2.1 Распределенная (слева) и централизованная (справа) архитектуры системы

На рис. 2.1 схематично изображены эти две противоположные архитектуры. Закрашенные серым цветом кружки представляют компоненты системы, также называемые узлами (nodes), а линии обозначают связи между ними. В этот момент несущественны подробности, касающиеся того, что эти компоненты делают и какая информация передается между узлами. Здесь самым важным является сам факт существования двух различных способов организации программных систем. В левой части рис. 2.1 распределенная архитектура демонстрирует, как соединяются друг с другом компоненты без какого-либо центрального элемента. Важно понять, что в этой схеме нет компонентов, напрямую связанных со всеми прочими компонентами. Но при этом все компоненты взаимосвязаны друг с другом, по крайней мере, не напрямую. В правой части рис. 2.1 показана централизованная архитектура, в которой каждый компонент связан с одним центральным компонентом. Периферийные компоненты не имеют прямых связей друг с другом. Для каждого периферийного компонента существует единственная прямая связь с центральным компонентом.

Преимущества распределенных систем

Ниже перечислены основные преимущества распределенной системы по сравнению с отдельными компьютерами [32]:

• более высокая вычислительная мощность;

• снижение стоимости (накладных расходов, издержек);

• более высокая надежность;

• возможность естественного роста.

Более высокая вычислительная мощность

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

Снижение стоимости (накладных расходов, издержек)

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

Более высокая надежность

Повышенная надежность распределенной системы основана на том факте, что сеть компьютеров как единое целое способна продолжать работу даже при выходе из строя отдельных машин, составляющих ее. В распределенной системе нет так называемой единой точки отказа (single point of failure – SPOF). При отказе одного элемента все прочие элементы продолжают работу. Таким образом, отдельный суперкомпьютер обладает меньшей надежностью, чем распределенная система.

Возможность естественного роста

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

Недостатки распределенных систем

Ниже перечислены недостатки распределенных систем по сравнению с отдельными компьютерами:

• издержки на координацию работы;

• издержки на организацию обмена информацией;

• зависимость от сетевой среды;

• более высокая сложность программного обеспечения;

• проблемы безопасности.

Издержки на координацию работы

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

Издержки на организацию обмена информацией

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

Зависимость от сетевой среды

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

Более высокая сложность программного обеспечения

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

Проблемы безопасности

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

Распределенные пиринговые системы

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

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

Объединение централизованных и распределенных систем

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

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

 

Рис. 2.2 Прототипы объединения распределенной и централизованной архитектур

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

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

Идентификация распределенных систем

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

Примечание

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

Цель технологии блокчейна

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

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

Примечание

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

Перспектива

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

Резюме

• Архитектура программной системы определяет, как организованы ее компоненты и как они связаны друг с другом.

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

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

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

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

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

Глава 3
Определение потенциальных возможностей
Как пиринговые системы могут изменить мир

В этой главе мы углубляем понимание главной цели технологии блокчейна, рассматривая конкретный тип распределенной системы: пиринговую систему. Это поможет лучше понять, почему блокчейн вызывает столь высокий интерес у технических специалистов и бизнес-профессионалов. Здесь также описана область приложений, в которой от блокчейна ожидается наибольшая отдача. Кроме того, в этой главе оцениваются некоторые последствия практического применения пиринговых систем.

Метафора

Вы можете вспомнить, когда в последний раз покупали компактдиск (CD) в музыкальном магазине или в универсальном торговом центре? В наши дни люди уже давно не покупают компакт-дисков, потому что музыкальная отрасль изменилась коренным образом. Сейчас люди скачивают отдельные композиции с музыкальных порталов, делятся файлами в формате mp3 с друзьями или используют потоковые музыкальные программы на мобильных устройствах вместо покупки компакт-дисков. Эти изменения начались вместе с появлением программных средств, которые позволили делиться музыкальными файлами друг с другом. Но что такое особенное предлагают подобные программы? Вот что сказал по этому поводу один из создателей нового направления в музыкальной индустрии:

«Самым интересным в этой системе является то, что вы взаимодействуете с равными партнерами, вы обмениваетесь информацией с такими же людьми, как вы сами».

Шон Фэннинг (Shawn Fanning), сооснователь пиринговой сети Napster

Фэннинг и его коллеги изобрели пиринговую (peer-to-peer), или одноранговую, систему для совместного использования музыкальных файлов. В конце 1990-х гг. это программное обеспечение открыло новый путь формирования бизнес-модели в музыкальной индустрии. Далее в этой главе подробно рассматривается, как появление сети Napster, снижение продаж компакт-дисков и коренные изменения в музыкальной индустрии повлияли на технологию блокчейна.

Как пиринговая система изменила целую отрасль промышленности

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

Возможность оцифровки музыкальных записей, доступность записывающего оборудования по приемлемым ценам, бурный рост количества персональных компьютеров, находящихся в частном владении, появление и быстрое развитие Интернета – все это привело к тому, что студии звукозаписи перестали быть обязательным компонентом музыкальной индустрии. Три основные функции студий – продюссирование, маркетинг, распространение – теперь могли выполнять сами музыканты и потребители. Сеть Napster сыграла главную роль в устранении студий звукозаписи как посредников. Пользуясь Napster, люди перестали считать студии звукозаписи единственным источником доступа к самым свежим хитам. Появилась возможность совместного использования отдельных музыкальных файлов людьми по всему миру без необходимости покупки каких-либо компакт-дисков. Методика одноранговой сети, реализованная в Napster, в действительности стала разновидностью общедоступного цифрового огромного торгового зала для файлов в формате mp3, предоставляющего потребителям доступ к более широкому ассортименту музыки, чем когда-либо ранее. При этом студии звукозаписи оказались в определенной степени не у дел и понесли значительные убытки [15, 22].

Потенциальные возможности пиринговых систем

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

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

Что именно хранится на вашем банковском счете, на вашей кредитной или дебетовой карте? Настоящие деньги? Деньги, которые вы держали в руках, уже давно превратились в нематериальные биты и байты. Сейчас лишь небольшой объем денежных средств существует в виде физически осязаемых банкнот и монет. Подавляющее большинство мировых денежных средств и активов воплотилось в форме невидимых глазу битов и байтов в централизованных информационных системах финансовой индустрии. Банки и многие другие деятели финансовой сферы являются просто посредниками между производителями и потребителями битов и байтов, которые теперь олицетворяют наши деньги и наше благополучие. Операция займа, кредитования или перевода денег с одного счета на другой – это всего лишь передача нематериальной сущности, выполняемая посредником, также называемым комиссионером. Удивительно, как много посредников привлечено к выполнению с виду простых транзакций (например, при переводе денег с одного счета на счет, расположенный в другой стране, могут принять участие до пяти посредников, и все они требуют оплаты времени, затраченного на обработку данных, и своих комиссионных). В результате для простой операции перевода денег на счет в другой стране время обработки увеличивается, и возникают значительные накладные расходы на выполнение транзакций. В пиринговой системе тот же перевод можно выполнить намного проще и быстрее, а накладные расходы будут меньшими, поскольку операция выполняется «как есть», без лишних сущностей: передача битов и байтов между двумя равноправными партнерами или узлами.

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

Пиринговые системы дают преимущества не только для операций денежных переводов. Любая сфера деятельности, которая в основном играет роль посредника между производителями и потребителями нематериальной или цифровой продукции или услуг, в любой момент может быть заменена на пиринговую систему. При непрерывно продолжающейся всеобщей оцифровке все больше и больше объектов повседневной жизни и постоянно увеличивающееся количество товаров и услуг становятся нематериальными, позволяя извлекать пользу из функционирования пиринговых систем. Активные сторонники применения пиринговых систем убеждены, что почти все аспекты нашей жизни так или иначе изменятся с наступлением «цифровой эры» и массового использования пиринговых сетей в платежных системах, системах управления денежными сбережениями, кредитами, страховками, а также в системах выдачи и проверки подлинности свидетельств о рождении, водительских прав, паспортов, удостоверений личности, дипломов об образовании, патентов и трудовых контрактов. Большинство этих документов уже существует в цифровой форме в централизованных системах, функционирующих в организациях, являющихся просто посредниками между обычными производителями и потребителями.

Примечание

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

Терминология и связь с технологией блокчейна

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

• определение пиринговой системы;

• архитектура пиринговых систем;

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

Определение пиринговой системы

Пиринговая система (peer-to-peer system) – это распределенная программная система, состоящая из узлов (nodes) (отдельных компьютеров), которые предоставляют прямой доступ к своим вычислительным ресурсам (процессорный ресурс, объем внешней памяти и/или средства распространения информации) другим узлам. После присоединения к пиринговой сети пользователи превращают свои комьютеры в узлы этой системы, обладающие равными правами и исполняющие одинаковые роли. Несмотря на то что предоставляемые пользователями ресурсы могут быть различными, все узлы системы получают одни и те же функциональные возможности и несут равную ответственность. Таким образом, компьютеры всех пользователей одновременно являются поставщиками и потребителями ресурсов [32].

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

Архитектура пиринговых систем

Пиринговые системы по своей структуре являются распределенными компьютерными системами, так как состоят из отдельных узлов, совместно использующих свои вычислительные ресурсы. Но при этом пиринговые системы также используют и элементы централизации. Централизованные пиринговые системы поддерживают центральные узлы для обеспечения взаимодействия между участниками сети, для обслуживания каталогов, описывающих сервисы, предлагаемые пиринговыми узлами, или для выполнения поиска и идентификации узлов [11]. В централизованных пиринговых системах обычно применяется смешанная архитектура, приблизительно похожая на схему в левой части рис. 2.2. Такая архитектура позволяет объединить преимущества централизованных и распределенных систем. С другой стороны, «чистые» распределенные пиринговые системы не содержат каких-либо элементов центрального управления или координации. Таким образом, все узлы этих систем выполняют одни и те же задачи, действуя и как поставщики, и как потребители ресурсов и сервисов.

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

Связь между пиринговыми системами и технологией блокчейна

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

Потенциальные возможности технологии блокчейна

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

Примечание

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

Перспектива

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

Резюме

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

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

• Замена посредников на пиринговые системы увеличивает скорость обработки данных и снижает накладные расходы.

• Пиринговые системы могут быть централизованными или полностью распределенными.

• Полностью распределенные пиринговые системы формируют сеть равных партнеров, напрямую взаимодействующих друг с другом без какой-либо центральной координации.

• Сеть Napster продемонстрировала мощь пиринговых систем, так как ее система совместного использования файлов открыла эпоху новых бизнес-моделей в сложившейся годами музыкальной индустрии, которая в основном действовала как посредник между музыкантами и слушателями.

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

• Почти вся существующая ныне финансовая система является просто посредником между поставщиками и потребителями денежных средств, в наши дни главным образом имеющих форму цифровых или нематериальных объектов. Следовательно, переход к полной оцифровке и использованию пиринговых систем может коренным образом изменить сферу финансовой деятельности, подобно тому, как сеть Napster изменила музыкальную индустрию.

• По мере продолжения процесса оцифровки все больше аспектов повседневной жизни, а также все больший объем продукции и услуг становится нематериальным, тем самым извлекая пользу из преимуществ пиринговых систем.

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

Часть II
Зачем нужна технология блокчейна

В этой части книги подробно описывается задача, которую призвана решить технология блокчейна, а также объясняется, почему решение этой задачи столь важно. Материал этой части обеспечивает более глубокое понимание проблемной области, в которой функционирует блокчейн, и среды, где эта технология может предоставить наибольшие преимущества. Кроме того, рассматривается взаимосвязь блокчейна с задачами обеспечения доверительности, целостности и управления владением (собственностью). После изучения этой части книги вы будете глубже понимать основную цель технологии блокчейна и отличительные особенности самого термина «блокчейн».

Глава 4
Исследование основной задачи
Как сформировать группу независимых компьютеров

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

Метафора

Во многих естественных языках существуют образные выражения или поговорки, описывающие ситуацию, в которой кто-либо пытается привести в порядок, организовать беспорядочную группу лиц или объектов. Например, в английском языке этой ситуации соответствует выражение «herding cats» (попытка собрать кошек в стадо) (в русском языке для подобных ситуаций могут подойти крыловские «лебедь, рак и щука» и «квартет»), описывающее трудности объединения группы упрямых, трудно контролируемых и неуступчивых животных, которые не подчиняются или даже полностью игнорируют какие-либо попытки централизованного управления ими. Вам знакомы трудности при попытках как-то организовать группу людей, не желающих подчиняться единому органу управления или игнорирующих этот орган? Вот это и есть ситуация, в которой формируется полностью распределенная пиринговая система, состоящая из отдельных независимых узлов без какого бы то ни было центрального пункта управления или координации. В данной главе рассматриваются сложная задача создания полностью распределенной пиринговой системы и ее взаимосвязь с технологией блокчейна.

Обеспечение доверительности и целостности в пиринговых системах

Доверительность и целостность – это две стороны одной монеты. В контексте программных систем целостность (integrity) является нефункциональным аспектом системы: система должна быть безопасной (защищенной), полнофункциональной, непротиворечивой, корректной и свободной от сбоев и ошибок. Доверительность (trust) – это твердая убежденность людей в надежности, честности и/или компетентности (правомочности) кого-либо или чего-либо без свидетельств, доказательств или экспертных исследований. Доверительность существует изначально и может непрерывно увеличиваться или уменьшаться в зависимости от текущих результатов взаимодействия.

С точки зрения пиринговых систем это означает, что люди присоединяются к системе и продолжают сотрудничать с ней, если доверяют этой системе и если результаты взаимодействия постоянно подтверждают и укрепляют доверие. Целостность системы необходима для удовлетворения ожиданий пользователей и укрепления доверия к системе. Если доверие пользователей не укрепляется самой системой из-за отсутствия целостности, пользователи покидают систему, и в конце концов она просто прекращает свое существование. Осознание важности доверия для существования пиринговых систем приводит к ключевому вопросу: как обеспечить и поддерживать целостность в полностью распределенной пиринговой системе?

Обеспечение и поддержка целостности в полностью распределенных пиринговых системах зависят от множества факторов, наиболее важными из которых являются:

• знание количества узлов или партнеров;

• знание степени доверия (уровня надежности) между партнерами.

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

Угрозы целостности в пиринговых системах

Для упрощения можно рассматривать два основных источника опасности для целостности в пиринговых системах:

• технические отказы (сбои);

• злоумышленники-партнеры в системе.

Технические отказы (сбои)

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

Злоумышленники-партнеры в системе

Злоумышленники-партнеры являются вторым основным источником опасности для целостности в пиринговых системах. Это не техническая проблема, это проблема, создаваемая намерениями отдельных лиц, которые решили воспользоваться системой в своих корыстных целях. Можно утверждать, что эта опасность в большей степени относится к области социальной психологии и групповой динамики, чем к технологии. Нечестные и злонамеренные партнеры создают самую большую угрозу для пиринговой системы, потому что нападают на саму основу построения пиринговой системы: на доверие. Когда пользователи перестают доверять своим партнерам, они покидают систему и прекращают предоставлять ей свои вычислительные ресурсы. Количество партнеров уменьшается, и система в целом теряет свою привлекательность для оставшихся участников, что, в свою очередь, приводит к снижению возможностей системы и в конечном итоге к прекращению ее существования.

Главная задача, решаемая технологией блокчейна

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

Примечание

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

Перспектива

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

Резюме

• Целостность и доверительность – главные характеристики, которые необходимо обеспечить в пиринговых системах.

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

• Если доверие пользователей не укрепляется самой системой из-за отсутствия целостности, пользователи покидают систему, и в конце концов она просто прекращает свое существование.

• Два основных источника опасности для целостности в пиринговых системах:

– технические отказы (сбои);

– злоумышленники-партнеры в системе.

• Обеспечение целостности в пиринговой системе зависит от следующих основных факторов:

– знание количества узлов или партнеров;

– знание степени доверия (уровня надежности) между партнерами.

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

Глава 5
Однозначное определение термина
Четыре способа определения технологии блокчейна

Из предыдущих глав вы узнали о главной цели технологии блокчейна, о взаимосвязи между доверительностью и целостностью в программной системе. Это позволило с полным обоснованием дать верную оценку цели блокчейна, но сам термин «блокчейн» пока еще не был определен. В этой главе основное внимание уделено определению этого термина и объяснению различных вариантов его использования. Здесь представлено предварительное общее определение технологии блокчейна, которым мы будем руководствоваться при изучении следующих глав книги. В конце главы рассматривается, почему управление владением (собственностью) является самым широко распространенным вариантом применения технологии блокчейна.

Определение термина

При изложении материала данной книги термин «блокчейн» используется следующим образом:

• как имя структуры данных;

• как имя алгоритма;

• как имя набора (стека) технологий;

• как гипероним (обобщающее понятие) для полностью распределенных пиринговых систем с общей прикладной областью.

Структура данных

В информатике и программной инженерии структура данных (data structure) обозначает способ организации данных, не зависящий от конкретного информационного содержимого. Структуру данных можно сравнить с планом строящегося здания. На плане здания отображаются разделение и соединение пространства с помощью стен, этажей и лестниц независимо от способов их конкретного применения. При использовании в качестве имени структуры данных блокчейн обозначает данные, объединенные в комплекты, называемые блоками (block). Блоки данных во многом похожи на страницы в книге. Блоки соединяются друг с другом в цепочку, отсюда и название блокчейн (или цепочка блоков данных). В книге слова и предложения представляют хранимую информацию. Они записаны на отдельных страницах, а не на одном большом свитке. Страницы связаны друг с другом на основе их физического расположения в книге и соответствующих номеров страниц. Вы можете заметить, что какой-то страницы не хватает, проверяя непрерывность последовательности номеров страниц. Более того, информация на страницах книги, так же как и сами страницы, упорядочена. Такая упорядоченность является важной деталью, используемой повсеместно. Кроме того, цепочка блоков данных в структуре формируется с использованием специализированной системы нумерации, которая отличается от нумерации страниц в обычных бумажных книгах.

Алгоритм

В программной инженерии термин алгоритм означает последовательность инструкций, выполняемых компьютером. Инструкции часто пользуются структурами данных. При использовании в качестве имени алгоритма блокчейн обозначает последовательность инструкций, обрабатывающих информационное содержимое структур данных блокчейна (blockchain-data-structures) в полностью распределенной пиринговой системе. Это несколько напоминает схему демократического голосования.

Набор (стек) технологий

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

Гипероним (обобщающее понятие) для полностью распределенных пиринговых систем с общей прикладной областью

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

Использование термина блокчейн в данной книге

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

Примечание

Технология, обозначаемая в наши дни термином блокчейн, была предложена в 2008 году автором, скрывавшимся под псевдонимом Сатоши Накамото (Satoshi Nakamoto) [26]. Настоящее имя автора до сих пор неизвестно.

Предварительное определение термина

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

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

Роль управления правом владения

В предварительном определении, приведенном выше, ничего не говорится ни о Bitcoin, ни об управлении правом владения криптографическими денежными средствами. Это может показаться странным, поскольку многие статьи и книги о блокчейне утверждают, что основной целью блокчейна является управление правом владения цифровыми валютами. Дело в том, что управление правом владения криптографическими денежными средствами является самым широко распространенным и вполне естественным вариантом практического применения технологии блокчейна, но далеко не единственным. Диапазон применения блокчейна широк и разнообразен. И все же существуют две причины, по которым управление правом владения цифровой продукцией стало самым обсуждаемым приложением блокчейна. Во-первых, этот вариант проще всего понять и объяснить. Во-вторых, это пример практического применения с наибольшей степенью воздействия на реальную экономику. Концепция права владения собственностью и законное обеспечение прав собственности являются главнейшими элементами практически каждого сообщества людей (даже у некоторых животных существует концепция владения собственностью, и они отстаивают свое право владения в жестокой борьбе). Почти вся деятельность банков, страховых компаний, опекунских советов, юристов, судей, адвокатов и юрисконсультов сосредоточена на управлении правами собственности или на их соблюдении. Таким образом, сфера управления правами собственности представляет собой рынок с оборотом в миллиарды долларов, и любая техническая инновация, способная изменить метод управления правом владения, будет воздействовать на этот рынок с огромной силой. Поэтому можно считать, что блокчейн действительно может коренным образом изменить методики управления правом собственности.

Область применения блокчейна, рассматриваемая в данной книге

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

Перспектива

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

Резюме

• Термин блокчейн неоднозначен; разные люди придают ему различный смысл, зависящий от контекста обсуждения.

• Термин блокчейн может обозначать:

– структуру данных;

– алгоритм;

– набор (стек) технологий;

– группу полностью распределенных пиринговых систем с общей прикладной областью.

• Управление правом владения собственностью и его осуществление являются наиболее распространенным вариантом практического применения блокчейна, но далеко не единственным.

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

Глава 6
Понимание сущности права владения собственностью
Как мы осознаем, что владеем чем-либо

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

Метафора

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

Право владения и доказательства

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

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

Большую помощь может оказать свидетельское показание, подтверждающее, что вы купили яблоко до похода в супермаркет. К счастью, вы запомнили магазин и продавца, у которого приобрели яблоко, и теперь хотите, чтобы он подтвердил это. Но вы недооценили квалификацию обвинителя. Он устроил перекрестный допрос свидетеля и задавал очень трудные вопросы: может ли он точно вспомнить то яблоко, которое продал вам? Является ли яблоко, которое он продал, в точности тем же яблоком, которое обнаружено в вашей сумке? Может ли он определенно утверждать, что вы тот самый человек, которому он продал именно это конкретное яблоко? В конце концов, почему он вдруг сразу вспомнил все эти подробности? А может быть, вы заплатили свидетелю за подтверждение вашей невиновности? Все это сводится к основному принципу: один свидетель – хорошо, но наличие многих независимых свидетелей является главным фактором, позволяющим убедить обвинителя в вашей невиновности.

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

Основания права владения

Рассматривая все изложенное в предыдущем разделе на более абстрактном уровне, можно утверждать, что доказательство права владения подразумевает три обязательных элемента:

• идентификация владельца;

• идентификация объекта владения;

• установление связи владельца с объектом.

Показание свидетеля включает все эти элементы. Исторически свидетель-очевидец часто являлся единственным источником установления перечисленных фактов. Но устные показания свидетелей отнимают слишком много времени. Поэтому их заменили документами из надежных источников, заслуживающих доверия. В наше время личность можно установить по служебным удостоверениям, свидетельствам о рождении и водительским правам. Серийные номера, даты производства, сертификаты на продукцию могут использоваться для идентификации объектов. Эти документы не изменяются после создания, потому что характерные отличительные черты людей и объектов не меняются.

Соответствие между владельцами и объектами обычно устанавливается с помощью журнала (книги) учета (ledger) или реестра (register) (запись актов гражданского состояния, бухгалтерская книга, финансовый реестр и т. п.). Но это не тот документ, который остается неизменным после создания. Каждый факт передачи права владения должен быть задокументирован в подобном реестре, потому что устаревший реестр или журнал (книга) не может являться достоверным доказательством для подтверждения права владения. Важность наличия реестра, содержащего самые последние сведения и оформляемого в надлежащем порядке, привела к появлению специализирующихся на этой области деятельности учреждений во многих сообществах. Чем большую ценность имеют некоторые типы объектов, тем больше вероятность существования управляемого на государственном уровне реестра, в котором документируются права владения этими объектами. Большинство таких реестров открыто для всех, чтобы упростить проверку и доказательство прав владения. Вы сами можете проверить наличие подобных реестров в вашей стране и узнать, какие именно права они удостоверяют. Я нашел реестры, документирующие права владения недвижимостью, патентами, судами, самолетами и компаниями. Кроме того, я даже обнаружил журналы регистрации браков, рождений и смертей.

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

Рис. 6.1 Концепции права владения

На рис. 6.1 концепции верхних уровней являются более обобщенными по сравнению с концепциями более низких уровней. Концепции каждого уровня могут рассматриваться как реализации концепции уровней, расположенных выше. Например, доказательство права владения требует идентификации владельцев и объектов собственности, а также установления связи между владельцами и собственностью. Применение права владения требует идентификации, а также аутентификации и авторизации для полной уверенности в том, что собственностью пользуется личность, имеющая на это юридическое право. В самой нижней строке на рисунке представлен уровень реализации. Например, здесь показано, что пароль и подпись являются концепциями, используемыми для реализации процедур аутентификации и авторизации. Журнал (книга) и соответствующее программное обеспечение могут рассматриваться как конкретная реализация концепции установления связи между владельцами и их собственностью.

Небольшое отступление, касающееся безопасности

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

• идентификация;

• аутентификация;

• авторизация.

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

Идентификация

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

Аутентификация

Цель аутентификации – предотвратить попытку выдать себя за другого человека. Аутентификация означает проверку или доказательство того, что вы действительно являетесь тем человеком, имя которого вы назвали [37]. Подтвердить личность может что-то или кто-то с доказательствами, значимыми с юридической точки зрения (например, служебное удостоверение, водительские права или некоторые подробности жизни человека, имя которого было названо). Важно, чтобы доказательства, подтверждающие вашу личность, были однозначно связаны с вами (например, фотография на удостоверении, отпечатки пальцев или что-то другое, характерное только для вас, не допускающее двусмысленного толкования). В примере с винным магазином вы можете подтвердить личность, показав водительские права с фотографией. Сравнение вашего лица с фотографией в правах соответствует процедуре верификации. Если вы действительно выглядите так же, как на фото, то аутентификация считается успешной. В противном случае аутентификация не пройдена. Сопоставление лица человека с фотографией в водительских правах дает возможность предотвратить попытку незаконного использования чужих документов.

Авторизация

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

Примечание

Идентификация означает объявление своего имени. Аутентификация означает доказательство того, что вы действительно являетесь тем человеком, именем которого назвались. Авторизация означает получение доступа к чему-либо на основании предварительно проведенной успешной процедуры аутентификации с целью подтверждения личности.

Цели и свойства регистра

На рис. 6.2 показано, каким образом доказательство права владения и передача права владения связаны с целями и свойствами реестра (ledger).

 

Рис. 6.2 Концепции и основные принципы реестра

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

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

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

Право владения и блокчейн

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

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

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

• отдельный реестр, используемый для сопровождения информации о правах владения, равнозначен одной структуре данных блокчейна, хранящей данные, относящиеся к правам владения;

• отдельные реестры хранятся на компьютерах (узлах) пиринговой системы;

• алгоритм блокчейна отвечает за объединение отдельных узлов в единую согласованную версию, представляющую состояние прав владения, на которой основывается окончательное юридическое решение;

• целостность такой системы основывается на ее способности формировать истинные утверждения о праве владения;

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

Перспектива

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

Резюме

• Доказательство права владения состоит из трех элементов:

– идентификация владельца;

– идентификация объекта владения;

– установление связи владельца с объектом.

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

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

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

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

• Возможно создание полностью распределенной пиринговой системы реестров с использованием структуры данных блокчейна. Каждая структура данных блокчейна представляет один реестр и поддерживается одним узлом системы. Алгоритм блокчейна отвечает за объединение отдельных узлов в единую согласованную версию, представляющую состояние прав владения. Криптография используется для реализации процедур идентификации, аутентификации и авторизации.

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

Глава 7
Двойное расходование
Использование уязвимости распределенных пиринговых систем

В предыдущей главе вы узнали о взаимосвязи между полностью распределенными пиринговыми системами и наиболее частым вариантом практического применения технологии блокчейна в качестве средства управления правами владения. Вы также узнали, что целостность полностью распределенной пиринговой системы реестров основывается на ее способности формировать истинные утверждения о праве владения и обеспечить возможность передачи права владения только законными владельцами. Но что означает это утверждение в реальной жизни? Что происходит при нарушении целостности? Эти вопросы рассматриваются в данной главе во всех подробностях. В частности, здесь представлен один из самых важных примеров нарушения целостности в распределенных пиринговых системах: проблема двойного расходования.

Метафора

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

Проблема двойного расходования

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

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

Уточнение термина

Как и термин блокчейн, термин двойное расходование (double spending) является неоднозначным, поскольку используется для обозначения следующих концепций:

• проблема, связанная с копированием цифровой продукции;

• проблема, которая может возникать в распределенных пиринговых системах реестров;

• пример нарушения целостности в полностью распределенных пиринговых системах.

Двойное расходование как проблема копирования цифровой продукции

В контексте копирования цифровой продукции проблема двойного расходования обозначает тот факт, что данные могут копироваться с некоторого компьютера без каких-либо заметных ограничений. Это создает проблемы использования цифровых денег или любых других данных, считающихся принадлежащими только одному владельцу в текущий момент. Копирование создает возможность размножения данных, представляющих элементы цифровых денег, и использования их более одного раза в нескольких платежных операциях. Это цифровая аналогия размножения денежных купюр на копировальной машине. Если не принимать во внимание чисто техническую возможность, то копирование цифровых денег нарушает основной принцип денежной системы: одни и те же деньги (или их элементы) не могут принадлежать одновременно различным людям. Возможность многократно копировать и тратить одни и те же цифровые деньги фактически делает такие деньги бесполезными, таким образом, возникает проблема двойного расходования.

Двойное расходование как проблема распределенной пиринговой системы реестров

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

Двойное расходование как пример нарушения целостности в полностью распределенных пиринговых системах

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

Как решить проблему двойного расходования

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

Решение проблемы двойного расходования как проблемы копирования цифровой продукции

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

Решение проблемы двойного расходования как проблемы в распределенных пиринговых системах реестров

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

Решение проблемы двойного расходования как примера нарушения целостности распределенных пиринговых систем

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

Примечание

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

Использование термина двойное расходование в этой книге

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

Перспектива

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

Резюме

• Термин двойное расходование (double spending) является неоднозначным; он используется в различных смыслах.

• Термин двойное расходование может обозначать следующее:

– проблему, связанную с копированием цифровой продукции;

– проблему, которая может возникать в распределенных пиринговых системах реестров;

– пример нарушения целостности в полностью распределенных пиринговых системах.

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

• Технология блокчейна является инструментальным средством для решения проблемы двойного расходования.

Если Вам понравилась книга, ее можно купить и продолжить чтение

Основы блокчейна

Правообладателям: если Вы считаете, что размещение материала нарушает Ваши или чьи-либо права — сообщите нам об этом.

Партнерские программы для заработка

В закладки:
Scroll Up