![](/books_files/covers/thumbs_240/osnovy-blokcheyna-vvodnyy-kurs-dlya-nachinayuschih-v-25-nebolshih-glavah-154133.jpg)
Автор книги: Даниэль Дрешер
Жанр: Ценные бумаги и инвестиции, Бизнес-Книги
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 5 (всего у книги 17 страниц) [доступный отрывок для чтения: 5 страниц]
Часть III
Как работает блокчейн
Этот этап обучения является главной частью данной книги, так как здесь описываются внутреннее устройство и функционирование блокчейна. В 14 главах этой части представлены все концепции блокчейна, а также технологии, на которых они основаны. К концу этой части вы будете хорошо понимать все основные концепции блокчейна, знать, как они работают в отдельности и как взаимодействуют друг с другом для создания мощного механизма под названием блокчейн.
Глава 8
Проектирование блокчейна
Основные концепции управления правом владения с помощью блокчейна
В предыдущих главах рассматривались взаимосвязи между понятиями доверительности, целостности, полностью распределенными пиринговыми системами и технологией блокчейна. После изучения этих глав вы хорошо понимаете, что такое блокчейн, зачем нужна эта технология и какие проблемы она решает. Но вы пока еще не знаете внутреннего устройства и функционирования блокчейна. Эта глава дает общее представление о том, как работает блокчейн, описывая обобщенный сценарий приложения, который будет использоваться и в последующих главах. Также рассматриваются основные задачи при проектировании блокчейна для управления правом владения, дается обзор соответствующих основных концепций. Данная глава служит отправным пунктом для изучения последующих глав, в которых подробно описываются концепции и технологии, формирующие блокчейн.
Цель
Главная цель – понять концепции, заложенные в основу технологии блокчейна. Для более действенного обучения я буду последовательно демонстрировать все сложности проектирования вашей собственной системы для управления правом владения. Таким образом, вы встретитесь лицом к лицу с теми же затруднениями, с которыми уже сталкивался автор блокчейна и успешно преодолел их: проектирование программного обеспечения, управляющего правом владения в полностью распределенной пиринговой системе, которое функционирует в абсолютно открытой среде, не заслуживающей доверия.
Исходный пункт
В качестве отправного пункта можно сформулировать основные факты о рассматриваемой системе следующим образом:
• это будет полностью распределенная пиринговая система, состоящая из вычислительных ресурсов, предоставленных пользователями;
• рассматриваемая пиринговая система использует Интернет как сеть для соединения отдельных узлов;
• неизвестно ни количество узлов, ни их надежность и степень доверительности;
• цель этой пиринговой системы – управление правом владения цифровой продукцией (например, продажа бонусных баллов или цифровых денежных средств).
План проектирования и разработки
При проектировании и разработке программного обеспечения, управляющего правом владения в полностью распределенной пиринговой системе, которое функционирует в абсолютно открытой среде, не заслуживающей доверия, необходимо решить семь основных задач:
• описание права владения;
• защита права владения;
• хранение данных транзакций;
• подготовка реестров к распространению в ненадежной среде;
• распространение реестров;
• добавление новых транзакций в реестры;
• определение, в каких реестрах представлены правильные данные.
Задача 1: описание права владения
Прежде чем начать разработку блокчейна, необходимо ответить на вопрос: что именно вы хотите делать с помощью разрабатываемой технологии. Поскольку вы намерены спроектировать программную систему, управляющую правом владения, необходимо сначала решить, как описать право владения. Выясняется, что транзакции являются вполне подходящим способом описания любой передачи права владения, а полная хронология (история) транзакций представляет собой основное важное средство идентификации текущих владельцев. Поэтому в главе 9 будут подробно описаны транзакции, их сущность, вы узнаете, как можно их описать и как использовать их для однозначного установления права владения.
Задача 2: защита права владения
Описание права владения с использованием транзакций – это всего лишь исходный пункт. Далее необходим способ предотвращения доступа посторонних к частным секретным данным владельцев. В реальной жизни вы можете защитить свою машину или дом от использования посторонними людьми с помощью дверей с замками. В нашем случае криптография предоставляет способ защиты транзакций на индивидуальном уровне, подобно тому, как двери с замками обеспечивают защиту личной машины или дома.
Механизм защиты права владения включает три основных элемента: идентификация и аутентификация владельцев, а также разрешение доступа к объекту собственности только его законному владельцу. В главах 12 и 13 эти концепции описываются более подробно. Указанные выше три элемента связаны с концепцией хэш-значений (hash values). Если вы никогда не слышали о хэш-значениях, не беспокойтесь. В главах 10 и 11 вы найдете подробное объяснение хэш-значений. В этих двух главах также будет предложена интересная информация для тех, кто уже обладает некоторой технической подготовкой и кое-что знает о хэш-значениях.
Задача 3: хранение данных транзакций
Описание права владения средствами транзакций и принятие мер защиты прав владения на уровне отдельных транзакций являются важными шагами к цели проектирования программной системы, управляющей правами владения. Но необходим также определенный способ хранения полной хронологии всех транзакций, так как эта хронология (история) используется для однозначной установки права владения. Поскольку хронология транзакций представляет собой основополагающий элемент процедуры однозначной установки права владения, ее хранение должно быть надежно защищено. Мы уже выяснили ранее, что структура данных блокчейна является цифровым эквивалентом реестра. В главах 14 и 15 определяются требования, которые должна выполнять структура данных блокчейна, чтобы использоваться в качестве цифрового реестра, а также способы реализации этих требований.
Задача 4: подготовка реестров к распространению в ненадежной среде
Наличие отдельного реестра или структуры данных блокчейна, содержащей данные транзакций, – это уже определенное достижение, но нашей целью является проектирование распределенной пиринговой системы реестров, работающей в ненадежной среде. Следовательно, необходимо получить копии реестра на всех ненадежных узлах ненадежной сети. После этого потребуется организовать управление всеми реестрами в сети без какого-либо центрального пункта управления или координации. Как можно защитить реестры от подделок или некорректных действий (например, от удаления транзакций из хронологии или от добавления незаконных транзакций)? Самый эффективный способ защиты хронологии транзакций состоит в том, чтобы сделать ее неизменяемой. Это означает, что реестры, следовательно, и хронология транзакций не имеют возможности изменять ранее сделанные записи. Если записи в реестрах изначально защищены от изменения, то можно не опасаться, что они будут искажены или подделаны. Но распределенная пиринговая система реестров, которые невозможно изменить, выглядит весьма защищенной, но практически бесполезной, потому что не позволяет добавлять новых транзакций. Таким образом, трудность при использовании структуры данных блокчейна заключается в том, что она должна быть неизменяемой, с одной стороны, но при этом допускать возможность добавления новых транзакций – с другой. Эти требования кажутся несовместимыми, тем не менее это осуществимо с помощью технического приема, описанного в главе 16. В результате в структуру данных блокчейна становится возможным только добавление данных: разрешено добавление новых транзакций, но практически невозможно изменение данных, добавленных ранее.
Задача 5: распространение реестров
Сделав реестр доступным только для добавления новых данных, вы уже можете создать распределенную пиринговую систему реестров, разрешив копирование всем партнерам. Но простое копирование реестров с защитой от изменения хронологии не соответствует главной цели. В распределенной системе управления правами владения предполагается соответствующее взимодействие между партнерами или узлами. В главе 17 рассматривается, каким образом взаимодействуют узлы системы и какой информацией они обмениваются.
Задача 6: добавление новых транзакций в реестры
Распределенная пиринговая система формируется из участников, компьютеры которых обслуживают отдельные копии структуры данных блокчейна с единственной возможностью добавления новых записей. Поскольку структура данных позволяет только добавлять данные новых транзакций, необходимо так организовать эту процедуру, чтобы добавлялись только законные и авторизованные транзакции. Это возможно, если разрешить всем участникам пиринговой системы добавлять новые данные и сделать каждого участника пиринговой системы контролером, наблюдающим за всеми остальными партнерами. В результате все партнеры будут контролировать друг друга и обнаруживать любые ошибки в системе. В главе 18 эта методика описана более подробно, а кроме того, рассматриваются мотивы, побуждающие партнеров исполнять подобные обязанности.
Задача 7: определение, в каких реестрах представлены правильные данные
После обеспечения возможности добавления новых транзакций в отдельные реестры пиринговой системы возникает проблема, типичная для любой распределенной пиринговой системы: разные партнеры могут принимать различные транзакции, и хронология обрабатываемых разными узлами транзакций очень быстро становится несогласованной. То есть в пиринговой системе могут существовать отличающиеся друг от друга версии хронологии транзакций. Так как хронология транзакций является основой для определения законных владельцев, наличие противоречащих друг другу хронологий транзакций становится серьезной угрозой целостности всей системы. Поэтому важно найти способ предотвращения появления различных версий хронологии транзакций или методику, определяющую, в какой версии хронологии транзакций представлены правильные данные. Первый подход невозможен из-за самой сущности полностью распределенных пиринговых систем. Поэтому необходим критерий определения и выбора одной хронологии транзакций, содержащей корректные данные. Но здесь возникает другая проблема: отсутствие в полностью распределенной пиринговой системе центрального узла авторизации, который мог бы определить, какая из хронологий транзакций должна быть выбрана. Эту проблему можно решить, если предоставить каждому узлу пиринговой системы право самостоятельного выбора корректной хронологии транзакций. При таком подходе большинство партнеров независимо приходит к единому решению. К тому же оказывается, что способ, которым блокчейн обеспечивает только добавление новых транзакций в структуру данных блокчейна, уже содержит решение описанной выше проблемы. В главе 19 подробно рассматриваются критерии выбора корректной хронологии транзакций и способы их применения.
Перспектива
В этой главе определены семь задач, из которых состоит процесс проектирования в соответствии с концепциями, заложенными в основу блокчейна. После выполнения этих задач вы достигнете вершины: полного понимания технологии блокчейна. В главе 21 все эти концепции будут сведены в единое целое и позволят вам увидеть общую картину результата обучения. Глава 21 является обзорной, так же как и текущая глава, но она обобщает все технические знания, полученные вами на этом этапе обучения.
Резюме
• При проектировании и разработке программного обеспечения, управляющего правом владения в полностью распределенной пиринговой системе, необходимо решить следующие задачи:
– описание права владения;
– защита права владения;
– хранение данных транзакций;
– подготовка реестров к распространению в ненадежной среде;
– распространение реестров;
– добавление новых транзакций в реестры;
– определение, в каких реестрах представлены правильные данные.
• Задачи, кратко описанные в этой главе, будут более подробно рассматриваться в следующих двенадцати главах.
Глава 9
Документирование права владения
Использование хронологической последовательности в качестве подтверждения текущего состояния прав владения
В этой главе рассматривается задача описания права владения способом, удобным для применения в полностью распределенной пиринговой системе реестров. Здесь объясняется, как блокчейн документирует право владения и выполняет процедуру передачи прав владения. Кроме того, в этой главе особенно отмечается важность порядка, в котором документируется передача прав владения. В конце главы также подчеркивается важность обеспечения целостности данных транзакций для сохранения целостности всей системы.
Метафора
Эстафета – это забег команд бегунов, в котором каждый член команды пробегает только часть всей дистанции. Во время забега каждый бегун обязательно должен передать специальный предмет, так называемую эстафетную палочку, следующему бегуну в пределах определенной зоны, обозначенной на беговой дорожке. В любой момент забега только один член каждой соревнующейся команды несет эстафетную палочку. Чтобы определить, какой именно спортсмен из конкретной команды несет эстафетную палочку в текущий момент, достаточно знать, кому из членов этой команды была передана палочка во время последней передачи.
Для постоянного отслеживания владения эстафетной палочкой в любой момент времени необходимо фиксировать время каждой передачи и имена спортсменов, принимающих участие в эстафете. В этой главе рассматривается, как блокчейн трактует право владения в форме, до некоторой степени напоминающей владение и передачу палочки в эстафете.
Цель
Главной целью является документирование права владения абсолютно понятным для всех способом. Каждому читающему документацию должна быть предоставлена возможность сделать однозначное заключение о связи объектов и их владельцев.
Главная задача
Главная задача – поиск документации, которая не только объявляет владельца какого-либо объекта, но и предоставляет обоснование факта владения, следовательно, является доказательством права владения.
Основная идея
Вместо описания текущего состояния прав владения по инвентаризационным данным (то есть по списку имеющихся в настоящее время объектов собственности всех владельцев) обслуживается список всех фактов передачи права владения в реестре в оперативном режиме. Каждая передача права владения описывается данными транзакции, которые ясно указывают, какой владелец передает право владения, передаваемый объект, кому передается право и в какое время. Полная хронологическая запись данных транзакции, сохраняемая в реестре, становится контрольной журнальной записью, которая свидетельствует о том, каким образом то или иное лицо получило объект собственности [26]. Это равнозначно отслеживанию факта передачи палочки в эстафетном забеге, что позволяет впоследствии воспроизвести ход всего забега в целом.
Краткое отступление по поводу инвентаризационной ведомости и данных транзакции
Существуют два противоположных способа описания права владения – данные инвентаризационной ведомости и данные транзакций. Данные инвентаризационной ведомости (inventory data) описывают текущее состояние объектов собственности. Это похоже на проверку банковского счета, при которой предъявляется только денежная сумма, доступная в текущий момент. Данные транзакций (transaction data) описывают факты передачи права владения. Это похоже на проверку банковского счета, при которой предъявляется список всех операций по вкладам, снятиям и переводам денег. По полному списку данных транзакций можно сформировать данные инвентаризационной ведомости. За исключением того, что и инвентаризационная ведомость, и данные транзакций описывают права владения, основополагающие принципы этих двух подходов полностью противоположны. Данные инвентаризационной ведомости лишь утверждают или объявляют право владения, тогда как данные транзакций разъясняют, следовательно, обосновывают право владения. Тем не менее данные инвентаризационной ведомости часто считаются более удобными, так как они непосредственно отображают факт, в котором заинтересовано большинство людей, а именно текущее состояние объектов собственности.
Как это работает
Документирование прав владения с помощью блокчейна связано со следующими аспектами:
• описание передачи права владения;
• обслуживание хронологии передач права владения.
Описание передачи права владения
Транзакция (transaction) – это акт передачи права владения от текущего владельца другому лицу. Акт передачи права владения основан на данных, которые описывают предполагаемую передачу. Эти данные содержат всю информацию, необходимую для осуществления передачи права владения. Примером данных, описывающих предполагаемую передачу права владения, может служить форма банковского перевода, используемого для запроса к банку на перевод определенной денежной суммы от лица клиента. Форма банковского перевода предлагает предоставить всю информацию, необходимую для того, чтобы банк смог выполнить этот перевод от лица клиента. Подобным образом информация, используемая блокчейном для описания транзакции, содержит следующие элементы:
• идентификатор учетной записи, из которой право владения передается в другую учетную запись;
• идентификатор учетной записи, которая принимает право владения;
• количество передаваемых объектов владения (продукции);
• время, в которое выполняется данная транзакция;
• выплата системе за выполнение транзакции;
• подтверждение того, что владелец учетной записи, из которой передается право владения, действительно согласен с фактом передачи права.
Большинство этих данных знакомо каждому, кто когда-либо переводил деньги через банк. Но аналогия с банковским переводом перестает быть верной, когда рассматриваются платежи. Банки являются централизованными учреждениями, поэтому используют централизованную систему обслуживания платежей, применяемую для всех клиентов. В противоположность этому блокчейн представляет собой распределенную систему без центрального пункта управления. То есть блокчейн не имеет возможности централизованно выполнять платежи. При использовании блокчейна каждый пользователь должен заранее сообщить системе, сколько он собирается заплатить за выполнение планируемой транзакции. Учетная запись, передающая право владения, оплачивает также и саму транзакцию.
Обслуживание хронологии актов передачи прав
Данные транзакций предоставляют обязательную информацию, необходимую для выполнения передачи права владения в надлежащем порядке. Выполнение транзакции означает проведение процедуры передачи права владения в полном соответствии с данными этой транзакции. Выполнение транзакции означает добавление данных транзакции в реестр. После добавления данных транзакции в реестр эта транзакция становится частью хронологии транзакций, которая используется для точного определения права владения. Когда в очередной раз реестр применяется для определения права владения, объединяя все содержащиеся в нем данные транзакций, новая добавленная транзакция тоже будет включена в эту совокупность, следовательно, повлияет на итоговое состояние прав владения.
Блокчейн обслуживает полную хронологию всех выполненных транзакций, сохраняя соответствующие данные транзакций в структуре данных блокчейна в том порядке, в котором они выполнялись. Если какая-то транзакция не является частью этой хронологии, то считается, что она никогда не выполнялась. Таким образом, добавление данных транзакции в структуру данных блокчейна означает, что эта транзакция действительно имела место, и позволяет ей оказывать воздействие на результат обработки хронологии с целью точного определения текущего владельца.
Почему это работает
Поскольку данные транзакции содержат всю информацию об учетной записи, передающей право владения, об учетной записи, принимающей право владения, об объектах передачи и передаваемом количестве, информация о текущем состоянии прав владения для каждой учетной записи может быть сформирована в любое время при условии доступности полной хронологии транзакций. Таким образом, полная хронология всех данных транзакций вполне достаточна для документирования прав владения.
Важность упорядоченности
Объединение данных транзакций выполняется для восстановления текущего состояния прав владения и точного определения конкретных прав владения. Важно понимать, что порядок выполнения транзакций должен быть сохранен для получения корректного результата при каждой операции объединения данных транзакций. Изменение порядка данных транзакций искажает результат их объединения. На первый взгляд, результат не должен существенно измениться, если я сначала получил от друга денежный перевод на сумму $50, затем перевел эти $50 для оплаты счета, даже если эти транзакции взять в обратном порядке. Но что произойдет, если мой банковский счет абсолютно пуст и снятие денег невозможно? В этом случае возможность оплатить счет зависит от того, получил ли я сначала перевод от друга. В противном случае банк запретит перевод денег для оплаты счета из-за отсутствия денег на банковском счете. Поэтому порядок выполнения транзакций чрезвычайно важен.
Целостность хронологии транзакций
Можно без преувеличения сказать, что хронология транзакций является сердцем любой блокчейн-системы, управляющей правами владения, потому что хронология есть основа восстановления состояния прав владения. Поэтому необходимо следить за тем, чтобы хронология данных транзакций была защищенной, полной, корректной и логически согласованной для обеспечения целостности всей системы и для того, чтобы сохранять возможность вывода правильных заключений о текущем состоянии прав владения. Таким образом, блокчейн-система должна обеспечить средства защиты, гарантирующие, что в структуру данных блокчейна добавляются только действительно законные данные транзакций. При определении законности данных транзакций рассматриваются три аспекта:
• формальная корректность;
• семантическая (смысловая) корректность;
• авторизация.
Формальная корректность
Формальная корректность (formal correctness) означает, что описание транзакции содержит все требуемые данные, представленные в корректном формате.
Семантическая (смысловая) корректность
Семантическая (смысловая) корректность (semantic correctness) основное внимание уделяет смысловому значению данных транзакции и предполагаемому воздействию этих данных на результат. Таким образом, при проверке семантической корректности необходимы знания из прикладной области. Исследование семантической корректности часто основано на практических правилах ведения дел, таких как:
• не передает ли учетная запись количество объектов собственности, превышающее текущее количество объектов, находящееся в ее владении;
• предотвращение двойного расходования;
• ограничение количества объектов, передаваемых в одной транзакции;
• ограничение количества транзакций для одного пользователя;
• ограничение суммарного количества объектов, расходуемых (передаваемых) за определенный интервал времени;
• установление минимального интервала времени, в течение которого объект обязательно должен оставаться в собственности учетной записи, прежде чем появится возможность дальнейшей передачи права владения этим объектом.
Авторизация
Только владельцу учетной записи, передающей право владения, разрешено обращаться к блокчейн-системе для выполнения транзакции от своего лица. Поэтому блокчейн требует, чтобы в каждой транзакции содержалась информация, подтверждающая, что владелец учетной записи, выполняющей передачу права, действительно согласен с фактом этой передачи.
Перспектива
В этой главе рассматривались транзакции и их роль в определении права владения. Следующие главы в основном посвящены тому, как технология блокчейна обеспечивает добавление только проверенных корректных данных транзакций в хронологию и как осуществляется защита хронологии транзакций от искажений и подделок.
Резюме
• Данные транзакций предоставляют следующую информацию для описания передачи прав владения:
– идентификатор учетной записи, из которой право владения передается в другую учетную запись;
– идентификатор учетной записи, которая принимает право владения;
– количество передаваемых объектов владения (продукции);
– время, в которое выполняется данная транзакция;
– денежный взнос, выплачиваемый системе за выполнение транзакции;
– подтверждение того, что владелец учетной записи, из которой передается право владения, действительно согласен с фактом передачи права.
• Полная хронологическая запись данных транзакции, сохраняемая в реестре, становится контрольной журнальной записью, которая свидетельствует о том, каким образом то или иное лицо получило объект собственности.
• Если какая-то транзакция не является частью хронологии транзакций, то считается, что она никогда не выполнялась.
• Добавление данных транзакции в структуру данных блокчейна означает, что эта транзакция действительно имела место, и позволяет ей оказывать воздействие на результат обработки хронологии с целью точного определения текущего владельца.
• Порядок выполнения транзакций и добавления их в хронологию должен быть сохранен для получения корректного результата при каждой операции объединения данных транзакций.
• Для обеспечения целостности в структуру данных блокчейна добавляются только данные транзакций, соответствующие следующим трем критериям:
– формальная корректность;
– семантическая (смысловая) корректность;
– авторизация.
Внимание! Это не конец книги.
Если начало книги вам понравилось, то полную версию можно приобрести у нашего партнёра - распространителя легального контента. Поддержите автора!Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?