В главе 16 рассматривалось превращение структуры данных блокчейна в неизменяемое хранилище с возможностью только добавления данных, которое может использоваться как защищенный от изменений реестр данных транзакций. Наличие единственной неизменяемой, а лишь обновляемой хронологии данных транзакций мало значит с точки зрения определения права владения собственностью, основанного на действиях группы компьютеров как свидетелей, подтверждающих события, связанные с правами владения. Таким образом, в этой главе основное внимание уделяется созданию полностью распределенной пиринговой системы, позволяющей совместно использовать информацию о транзакциях.
Как лучше всего распространять некоторые новости, предназначенные для личного пользования, среди всех сотрудников компании, если у вас нет доступа к общему списку рассылки электронной почты? Один способ, гарантирующий, что все сотрудники в итоге получат новости, – совместное использование их с одним или двумя взаимосвязанными и общительными коллегами, если попросить их хранить новости в секрете. Такой подход работает, потому что практически нет никакой другой информации, которой можно было бы быстро поделиться с коллегами, кроме личных новостей, распространяемых с условием сохранения их секретности. Причина довольно проста: люди – существа социальные, им присущ искренний интерес к окружающим, поэтому совместное использование информации в некоторой группе людей является обычным поведенческим шаблоном для установления или укрепления социальных связей. В этой главе рассматривается один из аспектов блокчейна, который может представить пиринговые системы с несколько необычной и почти человеческой точки зрения. Обсуждаемый здесь аспект – это обмен информацией между компьютерами с помощью обычных средств связи.
Блокчейн-система – это полностью распределенная пиринговая система для управления правами владения собственностью. Она состоит из отдельных компьютеров, поддерживающих собственную версию неизменяемого реестра, хранящего полную хронологию данных транзакций. Таким образом, отдельные компьютеры равнозначны свидетелю, который может проверить, действительно ли некоторая конкретная транзакция была выполнена в соответствии с личными записями этого свидетеля. Но каким образом отдельные компьютеры изначально узнают о транзакциях? Главная цель этой главы – убедить читателя в том, что отдельные компьютеры, составляющие пиринговую систему, действительно получают всю информацию о транзакциях, следовательно, способны обслуживать собственную хронологию данных транзакций.
В полностью распределенной пиринговой системе нет центрального пункта координации или управления. Следовательно, нет центрального компонента, распространяющего информацию по всем компьютерам системы. Существование подобного центрального информационного пункта противоречило бы самой сущности системы. Кроме того, из-за любых технических проблем распространение информации становилось бы невозможным. Таким образом, главная задача состоит в том, чтобы все узлы системы получали полную информацию обо всех транзакциях без обращений к какому-либо центральному компоненту.
Основная идея состоит в том, чтобы позволить компьютерам, образующим пиринговую систему, совместно использовать и свободно обмениваться информацией тем же способом, которым люди делятся новостями. Если узлы пиринговой системы передают информацию соседним узлам, а те, в свою очередь, отправляют информацию своим соседям, то в конечном итоге все узлы системы получат эту информацию.
Если объяснять более подробно, то пиринговая система имитирует способ, которым некоторая группа людей, например сотрудники компании, группа друзей, члены спортклуба, общаются между собой. Члены таких групп используют три типа беседы для различных ситуаций:
• разговор ни о чем (или «легкая светская беседа»), важный с социальной точки зрения, так как позволяет поддерживать существующие взаимоотношения, но не содержит какой-либо важной информации;
• обмен новостями, то есть беседы, в которых участники обмениваются важной информацией;
• представление новых членов группы, то есть тип беседы, необходимый для присоединения новых людей к существующей группе друзей или коллег. Установление новых взаимоотношений и прием нового члена в группу всегда требуют некоторой формы своеобразного ритуала вступления. В этот момент новички знакомятся с историей группы, в то же время формируется первое впечатление о них самих в процессе представления наиболее значимым членам группы.
Пиринговые системы компьютеров являются цифровым аналогом групп людей. Отдельные компьютеры, образующие пиринговую систему, точно так же болтают ни о чем, обмениваются новостями и принимают новых членов группы, проводя ритуал вступления. Эти взаимодействия являются неотъемлемой частью любой пиринговой системы. Подобно людям, беседующим друг с другом с помощью произносимых слов, компьютеры в распределенной пиринговой системе общаются с помощью цифровой сети. Самой крупной сетью, соединяющей огромное количество компьютеров, является Интернет. Таким образом, самый дешевый способ создания пиринговой системы – организация обмена информацией между узлами через Интернет. Распределенная пиринговая система, использующая Интернет в качестве среды передачи информации, обладает следующими характеристиками:
• каждый компьютер соединен с системой через Интернет;
• каждый компьютер идентифицируется по своему адресу, отличающемуся от других адресов;
• каждый компьютер может разорвать соединение с системой и восстановить его в любой момент времени;
• каждый компьютер независимо от других поддерживает список равнозначных партнеров, с которыми он обменивается информацией;
• обмен информацией между узлами системы основан на передаче сообщений;
• сообщения передаются с одного узла на другой через Интернет, используя для этого уникальные интернет-адреса.
Обмен информацией в сетевой среде и возможность разрыва и восстановления соединения в любой момент влияют на методику доставки сообщений. Доставка сообщений в сетевой среде такого рода обладает следующими характеристиками:
• нет никаких гарантий, что сообщение дойдет до адресата, сообщения могут быть потеряны;
• сообщения могут приходить к адресату более одного раза;
• сообщения могут приходить в порядке, отличающемся от порядка их отправки.
Эти характеристики создают некоторые затруднения при обмене информацией, но указанные проблемы решаются следующими способами:
• сообщения отправляются в стиле протокола gossip. Каждый узел, получающий новую информацию, перенаправляет своим партнерам, которые обрабатывают новую информацию точно таким же образом. При таком подходе в конечном итоге каждый узел получит новости, даже если некоторые отдельные сообщения были потеряны;
• так как сообщения можно идентифицировать по их цифровым отпечаткам или по криптографическим хэш-значениям, узлы без затруднений могут обнаруживать повторяющиеся сообщения и игнорировать их;
• тот факт, что данные транзакций и заголовки блоков содержат метки времени, позволяет узлам восстановить правильный порядок сообщений по четко определенному критерию.
Обмен информацией между узлами распределенной пиринговой системы должен выполнять три основные задачи:
• сохранение существующих соединений в работоспособном состоянии;
• установление новых соединений;
• распространение новой информации.
Первые два типа обмена информацией в основном сосредоточены на обеспечении функциональности самой пиринговой системы, то есть на сохранении общей работоспособности сети равных партнеров и на выполнении определенной цифровой «административно-хозяйственной» работы. Но главной целью пиринговой системы не является полная занятость работой ради самой занятости. Пиринговая система предназначена для управления правами владения собственностью. Поэтому третий тип обмена информацией сосредоточен на добавлении новых данных транзакций и новых блоков в структуру данных блокчейна. Эта информация необходима каждому узлу системы для обслуживания собственной версии хронологии транзакций.
Сохранение существующих соединений в работоспособном состоянии
Каждый компьютер в сети независимо от других поддерживает собственный список партнеров, с которыми он обменивается информацией. Этот список содержит лишь некоторое подмножество всех узлов, образующих всю систему в целом. Это похоже на сотрудников, поддерживающих социальные связи только с некоторыми коллегами, формируя тем самым лишь отдельную подгруппу всех сотрудников одной компании. Каждый компьютер регулярно проверяет работоспособность своих партнеров, отправляя короткое сообщение под названием пинг (ping) с запросом ответа в форме сообщения, называемого понг (pong). Партнеры, которые упорно не отвечают на эти сообщения, удаляются из списка. Это похоже на «светскую беседу» между коллегами, главной целью которой является сохранение социальных взаимоотношений.
Установление новых соединений
Каждый компьютер может послать запрос на присоединение к пиринговой системе, отправив соответствующее сообщение любому узлу, входящему в эту систему. Запрашиваемый узел добавляет адрес претендента в свой список партнеров и отправляет подтверждение в ответном сообщении. После получения ответа новый узел также добавляет адрес отправителя в свой список партнеров. В результате устанавливается новое соединение, а к системе добавляется новый узел. Наличие только одного соединения с системой крайне ненадежно, так как любой узел может закрыть соединение, завершить работу корректно или даже аварийно в любой момент. Поэтому, присоединяясь к пиринговой системе, компьютер обычно устанавливает соединения с несколькими различными узлами, уже являющимися частью системы. Это обеспечивает сохранение соединения с системой в целом, даже если отдельные узлы разорвали свои соединения или завершили работу.
Распространение новой информации
Этот тип обмена информацией служит для достижения основной прикладной цели системы – управления правом владения собственностью. Цель достигается посредством передачи новых данных транзакций и новых блоков, добавляемых в структуру данных блокчейна, в соответствии с принципами протокола gossip с обеспечением пересылки информации для дальнейшего ее распространения. Совместное использование информации о правах владения собственностью осуществляется в следующих трех вариантах:
• непрерывно: новая информация (данные новых транзакций и новые блоки) распространяется по мере ее создания. Каждый узел, соединенный с системой, в конце концов получит все новости;
• единовременное обновление: узлы, которые восстанавливают соединение с системой после временного отключения, получают все данные транзакций и блоки, появившиеся в системе во время отсутствия этих узлов;
• как часть адаптационной процедуры: новые узлы, присоединяющиеся к системе, не имеют возможности сформировать собственную хронологию транзакций, так как до этого система была для них недоступна. Следовательно, такие узлы должны получить всю хронологию транзакций, завершенных до момента подключения их к системе. Передача копии полной актуальной версии структуры данных блокчейна новым узлам гарантирует, что после присоединения к системе каждый новый узел становится полноправным партнером. Этот тип доставки информации можно рассматривать как особый случай обновления: полное обновление всей хронологии транзакций, когда-либо выполненных в системе.
Различные типы обмена информацией обеспечивают возможность присоединения к системе новых компьютеров, соответственно, и возможность роста и развития всей системы в целом. Кроме того, это сохраняет единство системы на основе обмена информацией об установлении новых и поддержании существующих соединений. И что более важно, система использует принципы протокола gossip в плане обмена информацией, гарантируя, что в конечном итоге все члены пиринговой системы получат все данные транзакций и блоки, добавляемые в структуру данных блокчейна.
В этой главе основное внимание было сосредоточено на том, как отдельные компьютеры становятся узлами распределенной пиринговой системы и как компьютеры, образующие такую систему, обмениваются информацией. Особое внимание было уделено подробностям доставки сообщений в ненадежной сетевой среде. Но здесь ничего не было сказано о том, что делают узлы системы с информацией после ее получения, хотя обработка информации не менее важна, чем получение информации. Поэтому в следующей главе рассматривается, как данные транзакций обрабатываются на отдельных узлах системы.
• Компьютеры в распределенной пиринговой системе обмениваются информацией с помощью цифровой сети.
• Интернет является самой распространенной и общедоступной сетью, поэтому является наиболее подходящим вариантом для создания распределенной пиринговой системы с установлением соединений между отдельными узлами через Интернет.
• Пиринговая система, использующая Интернет в качестве среды передачи информации, обладает следующими характеристиками:
– каждый компьютер соединен с системой через Интернет;
– каждый компьютер идентифицируется по своему адресу, отличающемуся от других адресов;
– каждый компьютер может разорвать соединение с системой и восстановить его в любой момент времени;
– каждый компьютер независимо от других поддерживает список равнозначных партнеров, с которыми он обменивается информацией;
– обмен информации между узлами системы основан на передаче сообщений;
– сообщения передаются с одного узла на другой через Интернет, используя для этого уникальные интернет-адреса.
• Из-за ненадежности существующих сетевых сред при обмене информацией между узлами характерны следующие факты:
– нет никаких гарантий, что сообщение дойдет до адресата, сообщения могут быть потеряны;
– сообщения могут приходить к адресату более одного раза;
– сообщения могут приходить в порядке, отличающемся от порядка их отправки.
• Технология блокчейна устраняет недостатки обмена информацией в ненадежной сетевой среде следующими способами:
– сообщения отправляются в стиле протокола gossip. Каждый узел, получающий новую информацию, перенаправляет своим партнерам, которые обрабатывают новую информацию точно таким же образом;
– повторяющиеся сообщения, содержащие транзакции и блоки, идентифицируются и отфильтровываются по их криптографическим хэш-значениям;
– каждый узел может восстановить правильную последовательность сообщений и упорядочить информацию, поскольку данные транзакций и заголовки блоков содержат метки времени.
• Обмен информацией между узлами распределенной пиринговой системы должен выполнять три основные задачи:
– сохранение существующих соединений в работоспособном состоянии;
– установление новых соединений;
– распространение новой информации.
• Распространение информации о правах владения собственностью осуществляется в следующих трех вариантах:
– непрерывно, то есть информация о данных новых транзакций и о новых блоках сразу передается всем узлам, соединенным с системой;
– единовременное обновление для всех узлов, которые восстанавливают соединение с системой после временного отключения;
– как часть адаптационной процедуры, передающей копию полной актуальной версии структуры данных блокчейна новым узлам, которая гарантирует, что после присоединения к системе каждый новый узел становится полноправным партнером.