ИЗОЛЯЦИЯ ДАННЫХ В СЕТИ БЛОКЧЕЙН
DATA ISOLATION IN THE BLOCKCHAIN NETWORK

Уровень техники
[0001] Распределенные системы учета (DLS), которые также могут называться консенсусными сетями и/или сетями блокчейн (цепочки блоков), позволяют участвующим субъектам безопасно и постоянно хранить данные. DLS обычно называют сетями блокчейн, не ссылаясь на какой-либо конкретный вариант использования (например, криптовалюты). Примеры типов сетей блокчейн могут включать в себя публичные сети блокчейн, частные сети блокчейн и консорциумные сети блокчейн. Публичная сеть блокчейн открыта для всех субъектов, чтобы использовать DLS и участвовать в процессе консенсуса. Для конкретного субъекта предусмотрена частная сеть блокчейн, которая централизованно контролирует разрешения на чтение и запись. Для выбранной группы объектов предоставляется консорциумная сеть блокчейн, которая управляет процессом согласования, и включает в себя уровень контроля доступа.
[0002] Сети блокчейн могут включать в себя различные типы узлов. Полностью участвующие узлы (в дальнейшем именуемые «узлами блокчейн») участвуют в процессе согласования для сети блокчейн, пытаясь создать и проверить новые блоки транзакций для добавления к блокчейн. Облегченные узлы не участвуют в процессе согласования для сети блокчейн и не могут полностью синхронизировать свое собственное внутреннее представление блокчейн. Например, облегченный узел может синхронизировать только информацию заголовка блока, а не все данные транзакции в конкретном блоке в блокчейн.
[0003] В частных или консорциумных сетях блокчейн узлы (такие как облегченные узлы) могут иметь разрешение только на чтение некоторых транзакций из блокчейн, таких как, например, транзакции, в которых участвовала идентификация, связанная с облегченным узлом. В таком случае облегченный узел может запросить узел блокчейн для конкретного блока, и ему может быть возвращено представление блока (например, дерева Меркла) с транзакциями, к которым у него нет удаленного доступа. Дерево Меркла, построенное таким образом, может не соответствовать полному дереву Меркла, представляющему транзакции в блоке, что может привести к ошибкам в облегченном узле из-за того, что узел не обладает точным представлением блока.
Сущность изобретения
[0004] Варианты воплощения настоящего изобретения включают в себя компьютерно реализуемые способы для обеспечения изоляции данных в сети блокчейн, в то же время предоставляя всем узлам сети блокчейн согласованное представление блоков в блокчейн. Более конкретно, варианты реализации настоящего изобретения направлены на создание дерева Меркла, которое не включает в себя данные, от которых изолирован запрашивающий узел, но которое все еще согласуется с полным деревом Меркла, представляющим запрошенный блок.
[0005] В некоторых вариантах реализации действия включают в себя получение узлом блокчейн в сети блокчейн запроса на считывание конкретного блока блокчейн, причем запрос получен от облегченного узла сети блокчейн и включает в себя: идентификацию облегченного узла, причем конкретный блок включает в себя исходное дерево Меркла, содержащее множество транзакций, связанных с конкретным блоком; идентификацию узлом блокчейн разрешений, связанных с идентификацией облегченного узла: генерирование узлом блокчейн изолированного дерева Меркла на основе исходного дерева Меркла, включенного в блок, причем изолированное дерево Меркла включает в себя только транзакции из исходного дерева Меркла, которые определены как доступные облегченному узлу на основе идентифицированных разрешений, при этом изолированное дерево Меркла соответствует исходному дереву Меркла; и отправку посредством узла блокчейн ответа на облегченный узел, включающий в себя изолированное дерево Меркла. Другие реализации включают в себя соответствующие системы, устройства и компьютерные программы, сконфигурированные для выполнения действий способов, закодированных на компьютерных запоминающих устройствах.
[0006] Эти и другие реализации могут по выбору включать в себя одну или несколько из следующих функций.
[0007] В некоторых реализациях генерирование изолированного дерева Меркла на основе исходного дерева Меркла, включенного в конкретный блок, может включать в себя: модификацию исходного дерева Меркла для создания изолированного дерева Меркла, в том числе удаление всех транзакций, которые определены как недоступные облегченному узлу из исходного дерева Меркла; и удаление ветвей исходного дерева Меркла, из которого были удалены все транзакции, оставляя только корневой хэш каждой из ветвей без изменений.
[0008] В некоторых реализациях транзакция определяется как недоступная облегченным узлом (облегченному узлу), если разрешения указывают, что облегченный узел не имеет доступа для чтения к транзакции.
[0009] В некоторых случаях каждая из множества транзакций включает в себя одну или несколько идентификационных информаций (идентификаторов), связанных с одним или несколькими участниками транзакции.
[0010] В некоторых реализациях идентификационная информация (идентификатор) связана с классом идентификационной информации, разрешения связаны с классом идентификационной информации, а узел блокчейн сконфигурирован для обеспечения разрешений, связанных с классом идентификационной информации, для идентификационных информаций (идентификаторов), связанных с классом идентификационной информации.
[0011] В некоторых случаях класс идентификационной информации является классом регулятора, при этом разрешения, связанные с классом регулятора, указывают, что все транзакции в сети блокчейн доступны для идентификационных информаций, связанных с классом регулятора.
[0012] В некоторой реализации класс идентификационной информации является общим классом, при этом разрешения, связанные с общим классом, указывают, что только транзакции в сети блокчейна, в которой идентификационная информация является участником, доступны для этой идентификационной информации.
[0013] В некоторых случаях изолированное дерево Меркла согласуется с исходным деревом Меркла только, если этого достаточно, чтобы позволить облегченному узлу проверять транзакции в изолированном дереве Меркла на основе хэшей в изолированном дереве Меркла.
[0014] В настоящем изобретении также предложены один или несколько энергонезависимых машиночитаемых носителей данных, связанных с одним или несколькими процессорами и имеющих хранимые на них инструкции, которые при выполнении одним или несколькими процессорами заставляют один или несколько процессоров выполнять операции для реализации заявленных способов.
[0015] В настоящем описании дополнительно предложена система для реализации способов, предоставленных в данном документе. Система включает в себя один или несколько процессоров и машиночитаемый носитель данных, подключенный к этим одному или нескольким процессорам, на которых хранятся инструкции, которые при выполнении одним или несколькими процессорами заставляют один или несколько процессоров выполнять операции в соответствии реализациями способов, представленных здесь.
[0016] Понятно, что способы в соответствии с настоящим описанием могут включать в себя любую комбинацию аспектов и признаков, описанных в данном документе. То есть способы в соответствии с настоящим описанием не ограничиваются комбинациями аспектов и признаков, конкретно описанных здесь, но также включают в себя любую комбинацию предоставленных аспектов и признаков.
[0017] Детали одной или нескольких реализаций настоящего описания показаны на прилагаемых чертежах и в описании ниже. Другие признаки и преимущества настоящего описания будут очевидны из описания и чертежей, а также из формулы изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0018] фиг. 1 изображает примерную среду, которая может использоваться для выполнения реализаций настоящего описания;
[0019] фиг. Фиг. 2 изображает пример концептуальной архитектуры в соответствии с реализациями настоящего описания;
[0020] фиг. 3А изображает пример дерева Меркла для блока в блокчейн в соответствии с реализациями настоящего описания;
[0021] фиг. 3B изображает пример дерева Меркла по фиг. 3А с ответвлениями, включающими в себя изолированные транзакции, в соответствии с реализациями настоящего описания;
[0022] фиг. 3C изображает пример изолированного дерева Меркла, созданного на основе дерева Меркла на фиг. 3А, в соответствии с реализациями настоящего описания;
[0023] фиг. 4 изображает примерный процесс, который может быть выполнен в соответствии с реализациями настоящего описания.
[0024] Одинаковые условные обозначения на разных чертежах обозначают одинаковые элементы.
ПОДРОБНОЕ ОПИСАНИЕ
[0025] Реализация настоящего описания включает в себя компьютерные способы обеспечения изоляции данных в сети блокчейн, обеспечивая при этом все узлы в сети блокчейн последовательным представлением блоков в блокчейне. В частности, реализация настоящего описания касается создания дерева Меркла, которое не содержит данных, от которых изолирован запрашивающий узел, но все еще согласуется с полным деревом Меркла, представляющим собой запрашиваемый блок.
[0026] В некоторых реализациях этапы способа включают: прием узлом блокчейн в сети блокчейн запроса на считывание конкретного блока блокчейн, причем запрос принимается из облегченного узла сети блокчейн и включает в себя идентификационную информацию облегченного узла, при этом этот конкретный блок включает в себя оригинальное дерево Меркла, содержащее множество транзакций, связанных с упомянутым конкретным блоком; идентификацию узлом блокчейн разрешений, связанных с идентификационной информацией облегченного узла; генерирование узлом блокчейн изолированного дерева Меркла на основе оригинального дерева Меркла, включенного в блок, причем изолированное дерево Меркла включает в себя только транзакции из оригинального дерева Меркла, которые определены как доступные облегченному узлу на основании выявленных разрешений, при этом изолированное дерево Меркла согласуется с оригинальным деревом Меркла; и направление узлом блокчейн ответа на облегченный узел, включающий изолированное дерево Меркла.
[0027] Для обеспечения дополнительного контекста для реализации настоящего изобретения, как представлено выше, распределенные системы учета (DLS), которые также могут быть названы консенсусными сетями (например, состоящими из одноранговых узлов), и сети блокчейн обеспечивают участвующим субъектам проведение надежных транзакций и хранение данных. Хотя термин блокчейн обычно ассоциируется с различными криптовалютными сетями, блокчейн используется в настоящем описании, в основном, чтобы ссылаться на DLS без ссылки на какой-либо конкретный случай использования. Как было указано выше, сеть блокчейн может быть предоставлена как публичная сеть блокчейн, частная сеть блокчейн или консорциумная сеть блокчейн.
[0028] В публичной блокчейн-сети процесс консенсуса контролируется узлами сети консенсуса. Например, сотни, тысячи, даже миллионы субъектов могут совместно работать с публичной сетью блокчейн, каждая из которых управляет по меньшей мере одним узлом в публичной сети блокчейн. Соответственно, публичная сеть блокчейн может считаться публичной сетью по отношению к участвующим субъектам. В некоторых примерах большинство субъектов (узлов) должны подписать каждый блок для того, чтобы блок был действительным, и добавить к блокчейн (распределенный реестр) сети блокчейн. Примерами публичных сетей блокчейн являются различные криптовалютные сети, которые являются одноранговыми платежными сетями. Криптовалютные сети могут использовать распределенный реестр, называемый блокчейном. Как отмечалось выше, термин блокчейн относится в основном для распределенных регистров без конкретной ссылки на какую-либо конкретную криптовалютную сеть.
[0029] В целом публичная сеть блокчейн поддерживает публичные транзакции. Публичная транзакция распределяется между всеми узлами в публичной сети блокчейн и хранится в глобальном блокчейне. Глобальный блокчейн - это блокчейн, который реплицируется во всех узлах. То есть все узлы находятся в идеальном состоянии консенсуса по отношению к глобальному блокчейну. Для достижения консенсуса (например, согласия на добавление блока в блокчейн) в рамках публичной сети блокчейн внедряется консенсусный протокол. Пример протокола консенсуса включает в себя, без ограничений, доказательство работы (POW), реализованной в криптовалютных сетях.
[0030] Как правило, для конкретного субъекта, который централизованно контролирует считывание и запись разрешений, предусмотрена частная сеть блокчейн. Субъект контролирует, какие узлы могут участвовать в сети блокчейн. Следовательно, частные сети блокчейн обычно называются разрешенными сетями, которые накладывают ограничения на то, кому разрешено участвовать в сети, и на уровень их участия (например, только в определенных транзакциях). Могут использоваться различные типы механизмов контроля доступа (например, существующие участники голосуют за добавление новых субъектов, регулирующий орган может контролировать допуск).
[0031] В общем, консорциумная сеть блокчейн является частной среди участвующих субъектов. В консорциумной сети блокчейн процесс согласования управляется авторизованным набором узлов, один или более узлов управляются соответствующим субъектом (например, финансовым учреждением, страховой компанией). Например, консорциум из десяти (10) субъектов (например, финансовые учреждения, страховые компании) может управлять консорциумной сетью блокчейн, каждый из которых управляет по меньшей мере одним узлом в консорциумной сети блокчейн. Соответственно, консорциумная сеть блокчейн может рассматриваться как частная сеть по отношению к участвующим субъектам. В некоторых примерах каждый субъект (узел) должен подписывать каждый блок, чтобы блок был действительным и был добавлен к блокчейн. В некоторых примерах по меньшей мере один поднабор субъектов (узлов) (например, по меньшей мере, 7 субъектов) должен подписать каждый блок, чтобы блок был действительным, и был добавлен к блокчейн.
[0032] Варианты реализации настоящего описания описаны более подробно в данном документе со ссылкой на частную сеть блокчейн, в которой конкретные данные могут быть изолированы от некоторых участвующих субъектов на основе конфигурации сети блокчейн. Однако предполагается, что варианты реализации настоящего описания могут быть реализованы в любом подходящем типе цепи блокчейн.
[0033] Реализации настоящего описания описаны более подробно ниже с учетом вышеприведенного контекста. Более конкретно, как указано выше, реализации настоящего описания направлены на создание дерева Меркла, которое не включает в себя данные, от которых изолирован запрашивающий узел, но которое по-прежнему согласуется с полным деревом Меркла, представляющим запрошенный блок.
[0034] В некоторых реализациях облегченный узел может запрашивать конкретный блок от узла блокчейн, участвующего в сети. Узел блокчейн может определить, что облегченный узел не имеет разрешения на считывание некоторых транзакций в блоке. Узел блокчейн может удалить эти транзакции из копии полного дерева Меркла, представляющего запрошенный блок, но может оставить только корневые хэши для любых ветвей дерева, которые содержат только удаленные транзакции. Это может эффективно изолировать облегченный узел от данных транзакции, которые ему не разрешено читать, а также может позволить облегченному узлу быть представленным с представлением блока, который согласуется с полным деревом Меркла для блока. Это может позволить облегченному узлу проверять целостность блока (путем проверки хэшей в дереве Меркла) даже не имея доступа к данным транзакции, от которых он изолирован.
[0035] На фиг. 1 показан пример среды 100, которая может использоваться для выполнения реализаций настоящего описания. В некоторых примерах примерная среда 100 позволяет субъектам участвовать в частной сети 102 блокчейн. Примерная среда 100 включает в себя вычислительные устройства 106, 108 и сеть 110. В некоторых примерах сеть 110 включает в себя локальную сеть (LAN), глобальную сеть (WAN), Интернет или их комбинацию и соединяет веб-сайты, пользовательские устройства (например, вычислительные устройства) и внутренние системы. В некоторых примерах к сети 110 можно получить доступ по проводной и/или беспроводной линии связи.
[0036] В изображенном примере каждая из вычислительных систем 106, 108 может включать в себя любую подходящую вычислительную систему, которая обеспечивает возможность участия в качестве узла в частной сети 102 блокчейн. Примеры вычислительных устройств включают в себя, без ограничения, сервер, настольный компьютер, ноутбук, планшетное вычислительное устройство и смартфон. В некоторых примерах вычислительные системы 106, 108 содержат одну или несколько компьютерно-реализованных услуг для взаимодействия с частной сетью 102 блокчейн. Например, вычислительная система 106 может размещать компьютерно-реализованные услуги первого субъекта (например, пользователя A), такие как система управления транзакциями, которую первый субъект использует для управления своими транзакциями с одним или несколькими другими субъектами (например, другими пользователями). Вычислительная система 108 может размещать компьютерно-реализованные услуги второго субъекта (например, пользователя B), такие как система управления транзакциями, которую второй субъект использует для управления своими транзакциями с одним или несколькими другими субъектами (например, другими пользователями). В примере на фиг. 1, частная сеть 102 блокчейн представлена как одноранговая сеть узлов, и вычислительные системы 106, 108 предоставляют узлы первого субъекта и второго субъекта, соответственно, которые участвуют в частной сети 102 блокчейн.
[0037] На фиг. 2 показан пример концептуальной архитектуры 200 в соответствии с реализациями настоящего описания. Пример концептуальная архитектура 200 включает в себя уровень 202 субъекта, уровень 204 размещенных услуг и уровень 206 сети блокчейн. В изображенном примере уровень 202 субъекта включает в себя три субъекта: Субъект_1 (E1), Субъект_2 (E2) и Субъект_3 (E3), причем каждый субъект имеет соответствующую систему 208 управления транзакциями.
[0038] В изображенном примере уровень 204 размещенных услуг включает в себя интерфейсы 210 для каждой системы 210 управления транзакциями. В некоторых примерах соответствующая система 208 управления транзакциями связывается с соответствующим интерфейсом 210 по сети (например, сети 110 на фиг. 1), используя протокол (например, защищенный протокол передачи гипертекста (HTTPS)). В некоторых примерах каждый интерфейс 210 обеспечивает коммуникационное соединение между соответствующей системой 208 управления транзакциями и уровнем 206 сети блокчейн. Более конкретно, интерфейс 210 связывается с сетью 212 блокчейн уровня 206 сети блокчейн. В некоторых примерах связь между интерфейсом 210 и уровнем 206 сети блокчейн осуществляется с использованием процедуры удаленных вызовов (RPC). В некоторых примерах интерфейсы 210 «хостируют» сетевые узлы блокчейн для соответствующих систем 208 управления транзакциями. Например, интерфейсы 210 предоставляют интерфейс прикладного программирования (API) для доступа к сети 212 блокчейн.
[0039] Как описано в данном документе, сеть 212 блокчейн предоставляется как одноранговая сеть, включающую в себя множество узлов 214, которые неизменно записывают информацию в блокчейн 216. Хотя схематически изображена один блокчейн 216, предоставляется множество копий блокчейн 216, которые поддерживаются в сети 212 блокчейн. Например, каждый узел 214 хранит копию блокчейн. В некоторых реализациях блокчейн 216 хранит информацию, связанную с транзакциями, которые выполняются между двумя или более субъектами, участвующими в частной сети блокчейн.
[0040] На фиг. 3А показан пример дерева 300 Меркла для блока 310 в блокчейн в соответствии с реализациями настоящего описания. Как показано, дерево 300 Меркла включает в себя заголовок блока, который включает в себя значение хэш-функции для всех данных в блоке, а также хэш-код предыдущего блока е блокчейн и одноразовое значение. Заголовок блока также включает в себя корневой хэш, который представляет собой объединение двух хэшей непосредственно под ним в дереве Меркла (325a, b).
[0041] Конечные узлы дерева 300 Меркла включают в себя транзакции 305a-d, представляющие транзакции, записанные в этом конкретном блоке 310 блокчейн. Дерево 300 Меркла также содержит хэши 315a-d. Каждый из этих хэшей 315a-d является значением хэш-функции, сгенерированным на основе данных транзакции для транзакции 305a-d, соответственно. Например, хэш 315a может быть сгенерирован путем предоставления данных в транзакции 305a в качестве входных данных для алгоритма хэширования SHA 256, чтобы создать хэш-значение 315a. В некоторых реализациях любая хэш-функция с гарантированной уникальностью может использоваться для создания хэш-функций 315a-d.
[0042] Дерево Меркла 300 также включает в себя хэши 325a («Hash01») и 325b («Hash23»). Хэши 325a-b создаются путем объединения двух хэшей непосредственно внизу в дереве Меркла. Например, хэш 325a («Hash01») создается путем объединения хэшей 315a («Hash0») и 315b («Hash1»). Аналогично, как описано выше, корневой хэш в заголовке блока создается путем объединения хэша 325a и хэша 325b.
[0043] Транзакции 305a-c, показанные серым цветом на фиг. 3А, представляют транзакции, для которых субъект (например, облегченный узел), запрашивающий блок 310, не имеет разрешения на доступ.На фиг. 3B показан пример дерева 350 Меркла, в котором ветви 335a, b дерева 300 Меркла, которые включают в себя только транзакции, от которых должен быть изолирован запрашивающий субъект, показаны квадратиками пунктирными линиями, окружающими ветви.
[0044] На фиг. 3C показан пример изолированного дерева Меркла 390, созданного на основе дерева Меркла на фиг. 3А, в соответствии с реализациями настоящего описания. Как показано, ветви 335a и 335b, идентифицированные на предшествующей фиг. 3B, были удалены в изолированном дереве Меркла 390.
[0045] В некоторых реализациях изолированное дерево Меркла, подобное примерному 390, может быть получено путем применения программного алгоритма к полному дереву Меркла, такого как алгоритм, показанный на фиг. 3A. В одном из примеров алгоритма узел блокчейн получает запрос от облегченного узла на считывание определенного блока. Узел блокчейн сканирует транзакции в запрошенном блоке и определяет, имеет ли облегченный узел разрешение на считывание каждой транзакции на основе атрибута идентификационной информации, включенного в запрос, и разрешения, связанные с идентификацией.
[0046] В примере алгоритма узел блокчейн последовательно просматривает транзакции в блоке, которые по определению хранятся в конечных узлах дерева Меркла. Для каждой транзакции, если облегченный узел имеет разрешение на считывание транзакции, узел блокчейн переходит к следующей транзакции. Если узел блокчейн находит транзакцию Tx_i, на считывание которой облегченный узел не имеет разрешения, узел блокчейн продолжает сканировать последующие транзакции до тех пор, пока он снова не найдет транзакцию Tx_j, на считывание которой облегченный узел имеет разрешение. Узел блокчейн затем удаляет группу транзакций из Tx_i-Tx_(j-1), из которых все облегченные узлы не имеют разрешения на считывание. Кроме того, узел блокчейн удаляет любую ветвь из дерева Меркла, которая теперь не содержит транзакций, и оставляет только корневой хэш этой конкретной ветви. Как показано на фиг.3B и 3C, этот процесс удаления ветвей применяется к ветвям 335a и 335b.
[0047] Это сканирование и обработка транзакций продолжаются до тех пор, пока не будет обработана последняя транзакция в дереве Меркла, и не будет получено дерево Меркла, включающее в себя транзакции, на считывание которых облегченный узел имеет разрешение. Это изолированное дерево Меркла возвращается в облегченный узел.
[0048] На фиг. 4 показан пример процесса 400, который может быть выполнен в соответствии с реализациями настоящего описания. В некоторых реализациях примерный процесс 400 может выполняться с использованием одной или нескольких компьютерно-исполняемых программ, выполняемых с использованием одного или нескольких вычислительных устройств.
[0049] На этапе 402 узел блочейн принимает запрос на считывание конкретного блока блокчейн из облегченного узла сети блокчейн. Запрос включает в себя идентификацию облегченного узла и конкретного блока, который включает в себя исходное дерево Меркла, содержащее множество транзакций, связанных с конкретным блоком. В некоторых случаях каждая из множества транзакций включает в себя одну или несколько идентификационных информаций, связанных с одним или несколькими участниками транзакции. От этапа 402 способ 400 переходит на этап 404.
[0050] На этапе 404 узел блокчейн идентифицирует разрешения, связанные с идентификационной информацией облегченного узла. В некоторых случаях идентификационная информация связана с классом идентификационной информации, разрешения связаны с классом идентификационной информации, а узел блокчейн сконфигурирован для обеспечения разрешений, связанных с классом идентификационной информации, для идентификационных информаций, связанных с классом идентификационной информации. В некоторых реализациях класс идентификационной информации является классом регулятора, и в котором разрешения, связанные с классом регулятора, указывают, что все транзакции в сети блокчейн доступны для идентификационных информаций, связанных с классом регулятора. В некоторых случаях класс идентификационной информации является общим классом, при этом разрешения, связанные с общим классом, указывают, что только транзакции в сети блокчейн, в которой идентификационная информация является участником, доступны для этой идентификационной информации. От этапа 404 способ 400 переходит на этап 406.
[0051] На этапе 406 узел блокчейн генерирует изолированное дерево Меркла на основе исходного дерева Меркла, включенного в конкретный блок. Изолированное дерево Меркла включает в себя только транзакции из исходного дерева Меркла, которые определены как доступные облегченному узлу, на основании идентифицированных разрешений. В некоторых реализациях транзакция определяется как недоступная облегченному узлу, если разрешения указывают, что облегченный узел не имеет доступа для считывания к транзакции. Изолированное дерево Меркла соответствует исходному дереву Меркла. В некоторых реализациях изолированное дерево Меркла согласуется с исходным деревом Меркла только в том случае, если достаточно позволить облегченному узлу проверить транзакции в изолированном дереве Меркла на основе хэшей в изолированном дереве Меркла. В некоторых случаях генерирование изолированного дерева Меркла включает в себя модификацию исходного дерева Меркла для создания изолированного дерева Меркла, включая удаление всех транзакций, которые были определены как недоступные для облегченного узла из исходного дерева Меркла, и удаление ветвей оригинального дерева Меркла, из которого были удалены все транзакции, оставляя корневой хэш каждого из веток нетронутым. От этапа 406 способ 400 переходит на этап 408.
[0052] На этапе 408 узел блокчейн отправляет ответ на облегченный узел, включающий в себя изолированное дерево Меркла. На этапе 408 способ 400 останавливается.
[0053] Реализации предмета изобретения и действий и операций, описанных в этом описании, могут быть реализованы в цифровых электронных схемах, в материально-воплощенном компьютерном программном обеспечении или встроенном программном обеспечении, в компьютерном оборудовании, включая структуры, раскрытые в этом описании, и их структурные эквиваленты или в комбинациях. одного или нескольких из них. Реализации предмета изобретения, раскрытого в этом описании, могут быть реализованы в виде одной или нескольких компьютерных программ, например, одного или более модулей инструкций компьютерной программы, закодированных на носителе компьютерной программы, для выполнения устройством обработки данных или для управления. Носителем может быть материальный постоянный компьютерный носитель данных. Альтернативно или в дополнение, носитель может быть искусственно сгенерированным распространяемым сигналом, например, сгенерированным машиной электрическим, оптическим или электромагнитным сигналом, который генерируется для кодирования информации для передачи в подходящее приемное устройство для исполнения устройством обработки данных. Компьютерный носитель данных может быть частью машиночитаемого запоминающего устройства, машиночитаемой подложки запоминающего устройства, устройства памяти с произвольным или последовательным доступом или комбинации одного или нескольких из них. Носитель данных компьютера не является распространяемым сигналом.
[0054] Термин «устройство обработки данных» охватывает все виды аппаратов, устройств и машин для обработки данных, включая, например, программируемый процессор, компьютер или несколько процессоров или компьютеров. Устройство обработки данных может включать в себя логические схемы специального назначения, например, FPGA (программируемая пользователем вентильная матрица), ASIC (специализированная интегральная схема) или GPU (графический процессор). Устройство может также включать в себя, помимо аппаратного обеспечения, код, который создает среду выполнения для компьютерных программ, например, код, который составляет микропрограммное обеспечение процессора, стек протоколов, систему управления базой данных, операционную систему или комбинацию одного или более из них.
[0055] Компьютерная программа, которая также может упоминаться или описываться как программа, программное обеспечение, программное приложение, приложение, модуль, программный модуль, движок, сценарий или код, может быть написана на любом языке программирования. включая компилируемые или интерпретируемые языки или декларативные или процедурные языки, и он может быть развернут в любой форме, в том числе как отдельная программа или как модуль, компонент, механизм, подпрограмма или другое устройство, подходящее для выполнения в вычислительной среде, причем эта среда может включать в себя один или несколько компьютеров, соединенных сетью передачи данных в одном или более положениях.
[0056] Компьютерная программа может, но не обязательно, соответствовать файлу в файловой системе. Компьютерная программа может храниться в части файла, которая содержит другие программы или данные, например, в одном или более сценариях, хранящихся в документе на языке разметки, в одном файле, выделенном для рассматриваемой программы, или в нескольких скоординированных файлах, например, файлах, в которых хранится один или несколько модулей, подпрограмм или частей кода.
[0057] Процессы и логические потоки, описанные в этом описании, могут выполняться одним или несколькими компьютерами, выполняющими одну или несколько компьютерных программ для выполнения операций, работая с входными данными и генерируя выходные данные. Процессы и логические потоки также могут выполняться с помощью логических схем специального назначения, например, FPGA, ASIC или GPU, или с помощью комбинации логических схем специального назначения и одного или более программируемых компьютеров.
[0058] Компьютеры, подходящие для выполнения компьютерной программы, могут быть основаны на общеизвестных или специализированных микропроцессорах или на тех и других, или на любом другом типе центрального процессорного блока. Как правило, центральный процессорный блок будет получать инструкции и данные из постоянной памяти или из оперативной памяти или из обеих. Элементы компьютера могут включать в себя центральный процессорный блок для выполнения инструкций и одно или более запоминающих устройств для хранения инструкций и данных. Центральный процессор и память могут быть дополнены или включены в логические схемы специального назначения.
[0059] Как правило, компьютер будет подключен по меньшей мере к одному постоянному машиночитаемому носителю (также называемому машиночитаемым запоминающим устройством). Носитель данных, подключенный к компьютеру, может быть внутренним компонентом компьютера (например, встроенным жестким диском) или внешним компонентом (например, жестким диском с универсальной шиной (USB) или системой хранения, доступ к которой осуществляется через сеть). Примерами носителей данных могут быть, например, магнитные, магнитооптические или оптические диски, твердотельные накопители, сетевые ресурсы хранения, такие как облачные системы хранения, или другие типы носителей данных. Однако компьютеру не нужно иметь такие устройства. Кроме того, компьютер может быть встроен в другое устройство, например, мобильный телефон, персональный цифровой помощник (PDA), мобильный аудио- или видеоплеер, игровую приставку, приемник глобальной системы позиционирования (GPS) или портативное запоминающее устройство. например, флэш-накопитель с универсальной последовательной шиной (USB), и это лишь некоторые из них.
[0060] Чтобы обеспечить интерактивную связь с пользователем, варианты воплощения предмета изобретения, описанного в этом описании, могут быть реализованы или сконфигурированы для связи с компьютером, имеющим устройство отображения, например монитор ЖК (жидкокристаллический дисплей), для отображения информации для пользователя и устройство ввода, с помощью которого пользователь может обеспечить ввод в компьютер, например клавиатуру и указательное устройство, например, мышь, трекбол или сенсорную панель. Другие виды устройств также могут быть использованы для обеспечения взаимодействия с пользователем, например, обратная связь, предоставляемая пользователю, может быть любой формой сенсорной обратной связи, например, визуальной обратной связью, звуковой обратной связью или тактильной обратной связью; и ввод от пользователя может быть получен в любой форме, включая акустический, речевой или тактильный ввод. Кроме того, компьютер может взаимодействовать с пользователем, отправляя документы и получая документы с устройства, которое используется пользователем, например, путем отправки веб-страниц в веб-браузер на устройстве пользователя в ответ на запросы, полученные из веб-браузера, или путем взаимодействия с приложением, запущенным на пользовательском устройстве, например, смартфоном или электронным планшетом. Кроме того, компьютер может взаимодействовать с пользователем, отправляя текстовые сообщения или другие формы сообщений на персональное устройство, например смартфон, на котором запущено приложение обмена сообщениями, и получая ответные сообщения от пользователя.
[0061] В данной спецификации используется термин «сконфигурированный для» для систем, устройств и компонентов компьютерной программы. Если система из одного или более компьютеров настроена на выполнение определенных операций или действий, это означает, что в системе установлено программное обеспечение, встроенное программное обеспечение, аппаратное обеспечение или их комбинация, которые при работе заставляют систему выполнять операции или действия. Для одной или более компьютерных программ, которые должны быть сконфигурированы для выполнения определенных операций или действий, это означает, что одна или несколько программ включают в себя инструкции, которые при выполнении устройством обработки данных заставляют устройство выполнять операции или действия. Если логические схемы специального назначения должны быть сконфигурированы для выполнения определенных операций или действий, это означает, что схема имеет электронную логику, которая выполняет операции или действия.
[0062] Хотя это описание содержит много конкретных деталей реализации, их не следует истолковывать как ограничения объема заявленного изобретения, который определяется пунктами формулы изобретения, а скорее как описания функций, которые могут быть специфическими для конкретных реализаций. Определенные признаки, которые описаны в этом описании в контексте отдельных реализаций, также могут быть реализованы в комбинации в одной реализации. И наоборот, различные признаки, которые описаны в контексте отдельных реализаций, также могут быть реализованы в нескольких реализациях отдельно или в любой подходящей субкомбинации. Более того, хотя признаки могли быть описаны выше как действующие в определенных комбинациях и даже первоначально заявлены как таковые, один или несколько признаков из заявленной комбинации могут в некоторых случаях быть исключены из комбинации, и формула может быть направлена на субкомбинацию или вариацию субкомбинации.
[0063] Аналогично, хотя операции показаны на чертежах и изложены в формуле изобретения в конкретном порядке, это не следует понимать как требование, чтобы такие операции выполнялись в конкретном показанном порядке или в последовательном порядке, или чтобы выполнялись все проиллюстрированные операции, чтобы достичь желаемых результатов. В определенных обстоятельствах многозадачность и параллельная обработка могут быть выгодными. Кроме того, разделение различных системных модулей и компонентов в реализациях, описанных выше, не следует понимать, как требующее такого разделения во всех реализациях, и следует понимать, что описанные программные компоненты и системы обычно могут быть объединены вместе в одном программном продукте или упакованы в несколько программных продуктов.
[0064] В описании раскрыты конкретные варианты реализации предмета изобретения. Другие реализации находятся в пределах объема следующей формулы изобретения. Например, действия, изложенные в формуле изобретения, могут выполняться в другом порядке и при этом достигать желаемых результатов. В качестве одного примера, процессы, изображенные на прилагаемых чертежах, не обязательно требуют определенного показанного порядка или последовательного порядка для достижения желаемых результатов. В некоторых случаях многозадачность и параллельная обработка могут быть полезными.