Уровень техники
[0001] Системы распределенных реестров (DLS), которые также могут упоминаться как консенсусные сети и/или сети цепочек блоков, позволяют участвующим объектам защищенно и неизменно сохранять данные. DLS обычно упоминаются как сети цепочек блоков без ссылки на конкретные случаи использования. Примеры типов сетей цепочек блоков могут включать в себя открытые сети цепочек блоков, закрытые сети цепочек блоков и консорциальные сети цепочек блоков. Консорциальная сеть цепочек блоков предоставляется для выбранной группы объектов, которые управляют консенсусным процессом, и включает в себя уровень управления доступом.
[0002] Смарт-контракт представляет собой набор выполняемых программных инструкций, сохраненных и выполняемых посредством сети цепочек блоков. Смарт-контракты, в общем, сохраняются незашифрованными, и в силу этого являются видимыми для всех участников сети цепочек блоков. Участники сети цепочек блоков могут записывать и публиковать собственные смарт-контракты и, в общем, также могут вызывать смарт-контракты, которые уже развернуты в сети цепочек блоков.
[0003] Одна проблема, с которой сталкиваются в сетях цепочек блоков, представляет собой скорость, с которой обрабатываются транзакции (включающие в себя вызовы в смарт-контракты). Обычно, узлы в сети цепочек блоков обрабатывают транзакции последовательно в порядке, в котором они отправляются. Это может приводить к низкой пропускной способности проведения транзакций и задержкам между тем, когда транзакция отправляется, и тем, когда она очищается.
[0004] Технологии, для того, чтобы разрешать эти проблемы производительности транзакций в сети цепочек блоков, должны быть преимущественными.
Сущность изобретения
[0005] Реализации этого описания изобретения включают в себя машинореализованные способы для параллельного выполнения транзакций в сети цепочек блоков на основе белых списков смарт-контрактов. Более конкретно, реализации этого описания изобретения направлены на технологии для выполнения групп транзакций и вызовов в смарт-контракты, имеющих совместно используемую зависимость, параллельно с другими группами.
[0006] В некоторых реализациях, действия включают в себя идентификацию множества транзакций, которые должны выполняться в цепочке блоков, при этом транзакции размещаются в порядке выполнения, при этом транзакции включают в себя один или более вызовов в смарт-контракты для смарт-контрактов, имеющих белый список, идентифицирующий один или более счетов, которые авторизованы на то, чтобы выполнять смарт-контракт, и при этом порядок выполнения включает в себя вызов в смарт-контракт для смарт-контракта, который не имеет белого списка, размещенного после множества транзакций; идентификацию групп транзакций во множестве транзакций, при этом транзакции в каждой группе ассоциированы с конкретным набором счетов в сети цепочек блоков, и при этом конкретный набор счетов, ассоциированных с каждым из одного или более вызовов в смарт-контракты, определяется на основе белого списка, ассоциированного с вызовом в смарт-контракт; инструктирование узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно, при этом выполнение каждой группы транзакций включает в себя выполнение транзакций в пределах группы последовательно и согласно порядку выполнения; определение того, что узлы сети цепочек блоков завершают выполнение всех групп транзакций; и в ответ на определение того, что узлы сети цепочек блоков завершают выполнение всех групп транзакций, инструктирование узлам сети цепочек блоков выполнять вызов в смарт-контракт, который не включает в себя белый список. Другие реализации включают в себя соответствующие системы, оборудование и компьютерные программы, выполненные с возможностью выполнять действия способов, кодированных на компьютерных устройствах хранения данных.
[0007] Эти и другие реализации необязательно могут включать в себя один или более следующих признаков:
[0008] В некоторых случаях, инструктирование узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно включает в себя инструктирование первому набору узлов выполнять первую группу транзакций и инструктирование первому набору узлов выполнять вторую группу транзакций.
[0009] В некоторых реализациях, определение того, что узлы сети цепочек блоков завершают выполнение всех групп транзакций, включает в себя определение того, что все транзакции во множестве транзакций включены в один или более блоков, сохраненных в цепочке блоков, поддерживаемой посредством сети цепочек блоков.
[0010] В некоторых случаях, инструктирование узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно включает в себя отправку сообщения в узлы по сети.
[0011] В некоторых случаях, идентификация множества транзакций, которые должны выполняться в цепочке блоков, включает в себя прием транзакций, передаваемых в широковещательном режиме в сеть цепочек блоков.
[0012] В некоторых реализациях, белый список включен в набор выполняемых инструкций, ассоциированных с каждым смарт-контрактом.
[0013] В некоторых случаях, белый список является отдельным от набора выполняемых инструкций, ассоциированных с каждым смарт-контрактом.
[0014] В некоторых реализациях, белый список включает в себя идентификацию одного или более счетов, которые авторизованы на то, чтобы осуществлять доступ к каждому смарт-контракту.
[0015] В некоторых случаях, белый список включает в себя ссылку на местоположение, внешнее для каждого смарт-контракта, который сохраняет один или более, которые авторизованы на то, чтобы осуществлять доступ к каждому смарт-контракту.
[0016] Это описание изобретения также предоставляет один или более энергонезависимых машиночитаемых носителей хранения данных, соединенных с одним или более процессоров и имеющих сохраненные инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессоров выполнять операции в соответствии с реализациями способов, предусмотренных в данном документе.
[0017] Это описание изобретения дополнительно предоставляет систему для реализации способов, предусмотренных в настоящем документе. Система включает в себя один или более процессоров и машиночитаемый носитель хранения данных, соединенный с одним или более процессорами, имеющий сохраненные инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессорам выполнять операции в соответствии с реализациями способов, предусмотренных в данном документе.
[0018] Следует принимать во внимание, что способы в соответствии с этим описанием изобретения могут включать в себя любую комбинацию аспектов и признаков, описанных в данном документе. Таким образом, способы в соответствии с этим описанием изобретения не ограничены комбинациями аспектов и признаков, конкретно описанными в данном документе, но также включают в себя любую предоставленную комбинацию аспектов и признаков.
[0019] Подробности одной или более реализаций этого описания изобретения изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки и преимущества этого описания изобретения должны становиться очевидными из описания и чертежей, а также из формулы изобретения.
Описание чертежей
[0020] Фиг. 1 иллюстрирует пример окружения, которое может использоваться для того, чтобы выполнять реализации этого описания изобретения.
[0021] Фиг. 2 иллюстрирует пример концептуальной архитектуры в соответствии с реализациями этого описания изобретения.
[0022] Фиг. 3 иллюстрирует пример окружения для обеспечения возможности белых списков смарт-контрактов в соответствии с реализациями этого описания изобретения.
[0023] Фиг. 4A иллюстрирует пример порядка выполнения для транзакций в сети цепочек блоков в соответствии с реализациями этого описания изобретения.
[0024] Фиг. 4B иллюстрирует пример параллельного порядка выполнения для транзакций в сети цепочек блоков в соответствии с реализациями этого описания изобретения.
[0025] Фиг. 5 иллюстрирует пример процесса, который может выполняться в соответствии с реализациями этого описания изобретения.
[0026] Фиг. 6 иллюстрирует примеры модулей оборудования в соответствии с реализациями этого описания изобретения.
[0027] Аналогичные ссылки с номерами на различных чертежах указывают аналогичные элементы.
Подробное описание изобретения
[0028] Реализации этого описания изобретения включают в себя машинореализованные способы для принудительной активации белых списков счета для смарт-контрактов. Более конкретно, реализации этого описания изобретения направлены на технологии для предоставления возможности создателю смарт-контракта задавать белый список, указывающий то, какие счета могут вызывать смарт-контракт.
[0029] Чтобы предоставлять дополнительный контекст для реализаций этого описания изобретения, и как представлено выше, системы распределенных реестров (DLS), которые также могут упоминаться как консенсусные сети (например, состоящие из узлов между равноправными узлами) и сети цепочек блоков, позволяют участвующим объектам защищенно и неизменно проводить транзакции и сохранять данные. Термин "цепочка блоков" используется в данном документе, чтобы, в общем, означать DLS независимо от конкретных вариантов использования.
[0030] Цепочка блоков представляет собой структуру данных, которая сохраняет транзакции таким способом, что транзакции являются неизменными и могут впоследствии верифицироваться. Цепочка блоков включает в себя один или более блоков. Каждый блок в цепочке сразу связывается с предыдущим блоком перед ним в цепочке посредством включения криптографического хэша предыдущего блока. Каждый блок также включает в себя временную метку, собственный криптографический хэш и одну или более транзакций. Транзакции, которые уже верифицированы посредством узлов сети цепочек блоков, хэшируются и кодируются в дерево Меркла. Дерево Меркла представляет собой структуру данных, в которой данные в концевых узлах дерева хэшируются, и все хэши в каждой ветви дерева конкатенируются в корне ветви. Этот процесс продолжается вверх по дереву вплоть до корня всего дерева, которое сохраняет хэш, который представляет все данные в дереве. Хэш, подразумеваемый в качестве транзакции, сохраненной в дереве, может быстро верифицироваться посредством определения того, является или нет он согласованным со структурой дерева.
[0031] Исходя из того, что цепочка блоков представляет собой структуру данных для сохранения транзакций, сеть цепочек блоков представляет собой сеть вычислительных узлов, которые управляют, обновляют и поддерживают одну или более цепочек блоков. Как представлено выше, сеть цепочек блоков может предоставляться в качестве открытой сети цепочек блоков, закрытой сети цепочек блоков или консорциальной сети цепочек блоков.
[0032] В открытой сети цепочек блоков, консенсусный процесс управляется посредством узлов консенсусной сети. Например, сотни, тысячи, даже миллионы объектов могут взаимодействовать в открытой сети цепочек блоков, каждый из которых управляет, по меньшей мере, одним узлом в открытой сети цепочек блоков. Соответственно, открытая сеть цепочек блоков может считаться открытой сетью относительно участвующих объектов. В некоторых примерах, большинство объектов (узлов) должны подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков (распределенный реестр) сети цепочек блоков. Примерные открытые сети цепочек блоков включают в себя конкретные платежные сети между равноправными узлами, которые используют распределенный реестр, называемый "цепочкой блоков". Тем не менее, как отмечено выше, термин "цепочка блоков" используется для того, чтобы, в общем, означать распределенные реестры без конкретной ссылки на конкретные сети цепочек блоков.
[0033] В общем, консорциальная сеть цепочек блоков является закрытой между участвующими объектами. В консорциальной сети цепочек блоков, консенсусный процесс управляется посредством авторизованного набора узлов, причем один или более узлов управляются посредством соответствующего объекта (например, финансового учреждения, страховой компании). Например, консорциум из десяти (10) объектов (например, финансовых учреждений, страховых компаний) может управлять консорциальной сетью цепочек блоков, каждый из которых управляет, по меньшей мере, одним узлом в консорциальной сети цепочек блоков. Соответственно, консорциальная сеть цепочек блоков может считаться закрытой сетью относительно участвующих объектов. В некоторых примерах, каждый объект (узел) должен подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков. В некоторых примерах, по меньшей мере, поднабор объектов (узлов) (например, по меньшей мере, 7 объектов) должен подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков.
[0034] Предполагается, что реализации этого описания изобретения могут быть реализованы в любом соответствующем типе сети цепочек блоков.
[0035] В дальнейшем подробнее описываются реализации этого описания изобретения в данном документе с учетом вышеизложенного контекста. Более конкретно и как представлено выше, реализации этого описания изобретения направлены на технологии для предоставления возможности создателю смарт-контракта задавать белый список, указывающий то, какие счета могут вызывать смарт-контракт.
[0036] Обычно, смарт-контракт представляет собой набор из одной или более компьютерных инструкций, которые сохраняются в цепочке блоков и выполняются посредством узлов сети цепочек блоков. Код для смарт-контракта, в общем, преобразуется в форму, которая является выполняемой посредством узлов сети цепочек блоков (например, в байтовый код), и либо непосредственно байтовый код, либо байтовый код, выполненный с возможностью извлекать байтовый код смарт-контракта, сохраняется в цепочке блоков. Функции, определяемые в коде смарт-контракта, затем могут вызываться посредством участников в сети цепочек блоков, инструктирующих узлам выполнять инструкции в вызываемой функции.
[0037] Это описание изобретения поясняет технологии, которые обеспечивают возможность создателю смарт-контракта указывать список счетов (белый список) в сети цепочек блоков, которым разрешаются вызывать смарт-контракт. Когда участник сети цепочек блоков вызывает смарт-контракт, развернутый в цепочке блоков, управляемой посредством сети цепочек блоков, участник предоставляет счет в качестве части вызова. Сеть цепочек блоков проверяет белый список, ассоциированный со смарт-контрактом для счета участника. Если счет участника находится в белом списке, сеть цепочек блоков выполняет вызов в смарт-контракт. Если счет участника не находится в белом списке, сеть цепочек блоков не выполняет вызов в смарт-контракт. Сеть цепочек блоков также может сохранять запись неудачной попытки участника осуществлять доступ к смарт-контракту.
[0038] Реализации этого описания изобретения направлены на выполнение групп транзакций (включающих в себя вызовы в смарт-контракты), имеющих совместно используемую зависимость (т.е. затрагивающих идентичные счета), параллельно с другими группами. Счета, затрагиваемые посредством вызова в смарт-контракт, могут определяться на основе белого списка, ассоциированного со смарт-контрактом. Поскольку транзакции в различных группах не имеют зависимости друг от друга (например, не затрагивают идентичные счета в сети цепочек блоков), порядок, в котором транзакции в различных группах выполняются относительно друг друга, не затрагивает общее состояние сети цепочек блоков. Таким образом, эти транзакции могут выполняться параллельно, что может приводить к увеличению пропускной способности проведения транзакций в сети цепочек блоков.
[0039] Фиг. 1 иллюстрирует пример окружения 100, которое может использоваться для того, чтобы выполнять реализации этого описания изобретения. В некоторых примерах, окружение 100 обеспечивает возможность объектам участвовать в сети 102 цепочек блоков. Окружение 100 включает в себя вычислительные устройства 106, 108 и сеть 110. В некоторых примерах, сеть 110 включает в себя локальную вычислительную сеть (LAN), глобальную вычислительную сеть (WAN), Интернет либо комбинацию вышеозначенного и соединяет веб-узлы, пользовательские устройства (например, вычислительные устройства) и внутренние интерфейсные системы. В некоторых примерах, к сети 110 может осуществляться доступ по линии проводной и/или беспроводной связи. В некоторых примерах, сеть 110 обеспечивает связь с и в сети 102 цепочек блоков. В общем, сеть 110 представляет одну или более сетей связи. В некоторых случаях, вычислительные устройства 106, 108 могут представлять собой узлы облачной вычислительной системы (не показана), либо вычислительное устройство 106, 108 может представлять собой отдельную облачную вычислительную систему, включающую в себя множество компьютеров, взаимно соединенных посредством сети, и функционирующую в качестве системы распределенной обработки.
[0040] В проиллюстрированном примере, вычислительные системы 106, 108 могут включать в себя любую соответствующую вычислительную систему, которая обеспечивает участие в качестве узла в сети 102 цепочек блоков. Примеры вычислительных устройств включают в себя, без ограничения, сервер, настольный компьютер, переносной компьютер, планшетное вычислительное устройство и смартфон. В некоторых примерах, вычислительные системы 106, 108 выполняют хостинг одной или более машинореализованных услуг для взаимодействия с сетью 102 цепочек блоков. Например, вычислительная система 106 может выполнять хостинг машинореализованных услуг первого объекта (например, участника A), к примеру, системы управления транзакциями, которую использует первый объект для того, чтобы управлять своими транзакциями с одним или более других объектов (например, других участников). Вычислительная система 108 выполнять хостинг машинореализованных услуг второго объекта (например, участника B), к примеру, системы управления транзакциями, которую использует второй объект для того, чтобы управлять своими транзакциями с одним или более других объектов (например, других участников). В примере по фиг. 1, сеть 102 цепочек блоков представляется как сеть с равноправными узлами узлов, и вычислительные системы 106, 108 предоставляют узлы первого объекта и второго объекта, соответственно, которые участвуют в сети 102 цепочек блоков.
[0041] Фиг. 2 иллюстрирует пример концептуальной архитектуры 200 в соответствии с реализациями этого описания изобретения. Пример концептуальной архитектуры 200 включает в себя системы 202, 204, 206 участников, которые соответствуют участнику A, участнику B и участнику C, соответственно. Каждый участник (например, пользователь, организация) участвует в сети 212 цепочек блоков, предоставленной в качестве сети с равноправными узлами, включающей в себя множество узлов 214, по меньшей мере, некоторые из которых неизменно записывают информацию в цепочку 216 блоков. Хотя одна цепочка 216 блоков схематично проиллюстрирована в сети 212 цепочек блоков, несколько копий цепочки 216 блоков предоставляются и поддерживаются в сети 212 цепочек блоков, как подробнее описано в данном документе.
[0042] В проиллюстрированном примере, каждая система 202, 204, 206 участников предоставляется посредством или от имени участника A, участника B и участника C, соответственно, и функционирует в качестве соответствующего узла 214 в сети цепочек блоков. При использовании в данном документе, узел, в общем, означает отдельную систему (например, компьютер, сервер), которая соединяется с сетью 212 цепочек блоков и обеспечивает возможность соответствующему участнику участвовать в сети цепочек блоков. В примере по фиг. 2, участник соответствует каждому узлу 214. Тем не менее, предполагается, что участник может управлять несколькими узлами 214 в сети 212 цепочек блоков, и/или несколько участников могут совместно использовать узел 214. В некоторых примерах, системы 202, 204, 206 участников обмениваются данными с/через сеть 212 цепочек блоков с использованием протокола (например, протокола защищенной передачи гипертекста (HTTPS)) и/или с использованием удаленных вызовов процедур (RPC).
[0043] Узлы 214 могут иметь различные степени участия в сети 212 цепочек блоков. Например, некоторые узлы 214 могут участвовать в консенсусном процессе (например, в качестве узлов-майнеров, которые добавляют блоки в цепочку 216 блоков), в то время как другие узлы 214 не участвуют в консенсусном процессе. В качестве другого примера, некоторые узлы 214 сохраняют полную копию цепочки 216 блоков, в то время как другие узлы 214 сохраняют копии только частей цепочки 216 блоков. Например, привилегии доступа к данным могут ограничивать данные цепочек блоков, которые соответствующий участник сохраняет в соответствующей системе. В примере по фиг. 2, системы 202, 204, 206 участников сохраняют соответствующие полные копии 216', 216'', 216''' цепочки 216 блоков.
[0044] Цепочка блоков (например, цепочка 216 блоков по фиг. 2) состоит из цепочки блоков, причем каждый блок хранит данные. Примеры данных включают в себя данные транзакции, представляющие транзакцию между двумя или более участников. Хотя транзакции используются в данном документе в качестве неограничивающего примера, предполагается, что любые соответствующие данные могут сохраняться в цепочке блоков (например, документы, изображения, видео, аудио). Примеры транзакций могут включать в себя, без ограничения, обмены чем-либо, имеющим стоимость (например, активами, продуктами, услугами). Данные транзакции неизменно сохраняются в цепочке блоков. Таким образом, данные транзакции не могут изменяться.
[0045] До сохранения в блоке, данные транзакции хэшируются. Хэширование представляет собой процесс преобразования данных транзакции (предоставляются в качестве строковых данных) в хэш-значение фиксированной длины (также предоставляются в качестве строковых данных). Невозможно дехэшировать хэш-значение, чтобы получать данные транзакции. Хэширование обеспечивает то, что даже небольшое изменение данных транзакции приводит к совершенно другому хэш-значению. Дополнительно и как отмечено выше, хэш-значение имеет фиксированную длину. Таким образом, независимо от размера данных транзакции, длина хэш-значения является фиксированной. Хэширование включает в себя обработку данных транзакции через хэш-функцию, чтобы формировать хэш-значение. Примеры хэш-функции включают в себя, без ограничения, защищенный хэш-алгоритм (SHA)-256, который выводит 256-битовые хэш-значения.
[0046] Данные транзакции для нескольких транзакций хэшируются и сохраняются в блоке. Например, хэш-значения двух транзакций предоставляются и непосредственно хэшируются для того, чтобы предоставлять другой хэш. Этот процесс повторяется до тех пор, пока, для всех транзакций, которые должны сохраняться в блоке, не предоставляется одно хэш-значение. Это хэш-значение упоминается как корневой хэш Меркла и сохраняется в заголовке блока. Изменение любой из транзакций должно приводить к изменению ее хэш-значения и, в конечном счете, к изменению корневого хэша Меркла.
[0047] Блоки добавляются в цепочку блоков через консенсусный протокол. Несколько узлов в сети цепочек блоков участвуют в консенсусном протоколе и конкурируют за то, чтобы добавлять блок в цепочку блоков. Такие узлы упоминаются как майнеры (или узлы-майнеры). POW, введенное выше, используется в качестве неограничивающего примера.
[0048] Узлы-майнеры выполняют консенсусный процесс, чтобы добавлять транзакции в цепочку блоков. Хотя несколько узлов-майнеров участвуют в консенсусном процессе, только один узел-майнер может записывать блок в цепочку блоков. Таким образом, узлы-майнеры конкурируют в консенсусном процессе за то, чтобы добавлять свой блок в цепочку блоков. Подробнее, узел-майнер периодически собирает отложенные транзакции из пула транзакций (например, вплоть до предварительно заданного предела для числа транзакций, которые могут быть включены в блок, если таковые имеются). Пул транзакций включает в себя сообщения по транзакциям от участников сети цепочек блоков. Узел-майнер конструирует блок и добавляет транзакции в блок. До добавления транзакций в блок, узел-майнер проверяет то, включена или нет какая-либо из транзакций уже в блок цепочки блоков. Если транзакция уже включена в другой блок, транзакция отбрасывается.
[0049] Узел-майнер формирует заголовок блока, хэширует все транзакции в блоке и комбинирует хэш-значение в пары, чтобы формировать дополнительные хэш-значения, до тех пор, пока одно хэш-значение не предоставляется для всех транзакций в блоке (корневой хэш Меркла). Этот хэш добавляется в заголовок блока. Майнер также определяет хэш-значение последнего блока в цепочке блоков (т.е. последнего блока, добавленного в цепочку блоков). Узел-майнер также добавляет значение одноразового номера и временную метку в заголовок блока. В процессе майнинга, узел-майнер пытается находить хэш-значение, которое удовлетворяет обязательным параметрам. Узел-майнер продолжает изменять значение одноразового номера до нахождения хэш-значения, которое удовлетворяет обязательным параметрам.
[0050] Каждый майнер в сети цепочек блоков пытается находить хэш-значение, которое удовлетворяет обязательным параметрам, и в силу этого конкурируют друг с другом. В конечном счете один из узлов-майнеров находит хэш-значение, которое удовлетворяет обязательным параметрам, и оповещает его во все другие узлы-майнеры в сети цепочек блоков. Другие узлы-майнеры верифицируют хэш-значение, и если оно определено как корректное, верифицируют каждую транзакцию в блоке, подтверждают блок и добавляют блок в свою копию цепочки блоков. Таким образом, глобальное состояние цепочки блоков является согласованным для всех узлов-майнеров в сети цепочек блоков. Вышеописанный процесс представляет собой консенсусный POW-протокол.
[0051] Неограничивающий пример содержит ссылку на фиг. 2. В этом примере, участник A хочет отправлять сумму участнику B. Участник A формирует сообщение по транзакции (например, включающее в себя поля From, To и Value) и отправляет сообщение по транзакции в сеть цепочек блоков, которая добавляет сообщение по транзакции в пул транзакций. Каждый узел-майнер в сети цепочек блоков создает блок и принимает все транзакции из пула транзакций (например, вплоть до предварительно заданного предела для номера транзакции, который может добавляться в блок, если таковые имеются) и добавляет транзакции в блок. Таким образом, транзакция, опубликованная посредством участника A, добавляется в блоки узлов-майнеров.
[0052] В некоторых сетях цепочек блоков, криптография реализуется, чтобы поддерживать конфиденциальность транзакций. Например, если два узла хотят поддерживать транзакцию закрытой таким образом, что другие узлы в сети цепочек блоков не могут различать подробности транзакции, узлы могут шифровать данные транзакции. Примеры криптографических способов включают в себя, без ограничения, симметричное шифрование и асимметричное шифрование. Симметричное шифрование означает процесс шифрования, который использует один ключ для шифрования (формирования зашифрованного текста из простого текста) и дешифрования (формирования простого текста из зашифрованного текста). При симметричном шифровании, идентичный ключ доступен для нескольких узлов, так что каждый узел может шифровать/дешифровать данные транзакции.
[0053] Асимметричное шифрование использует пары ключей, которые включают в себя закрытый ключ и открытый ключ, причем закрытый ключ известен только для соответствующего узла, и открытый ключ известен для всех других узлов в сети цепочек блоков. Узел может использовать открытый ключ другого узла, чтобы шифровать данные, и зашифрованные данные могут дешифроваться с использованием закрытого ключа другого узла. Например, и снова ссылаясь на фиг. 2, участник A может использовать открытый ключ участника B, чтобы шифровать данные и отправлять зашифрованные данные участнику B. Участник B может использовать свой закрытый ключ для того, чтобы дешифровать зашифрованные данные (зашифрованный текст) и извлекать исходные данные (простой текст). Сообщения, зашифрованные с помощью открытого ключа узла, могут дешифроваться только с использованием закрытого ключа узла.
[0054] Асимметричное шифрование используется для того, чтобы предоставлять цифровые подписи, что обеспечивает возможность участникам транзакции подтверждать других участников транзакции, а также достоверность транзакции. Например, узел может снабжать цифровой подписью сообщение, и другой узел может подтверждать то, что сообщение отправлено посредством узла, на основе цифровой подписи участника A. Цифровые подписи также могут использоваться для того, чтобы обеспечивать то, что сообщения не изменяются несанкционированно в транзите. Например, и снова ссылаясь на фиг. 2, участник A должен отправлять сообщение участнику B. Участник A формирует хэш сообщения и затем, с использованием своего закрытого ключа, шифрует хэш, чтобы предоставлять цифровую подпись в качестве зашифрованного хэша. Участник A добавляет цифровую подпись в сообщение и отправляет сообщение с цифровой подписью участнику B. Участник B дешифрует цифровую подпись с использованием открытого ключа участника A и извлекает хэш. Участник B хэширует сообщение и сравнивает хэши. Если хэши являются идентичными, участник B может подтверждать то, что сообщение фактически исходит от участника A и не изменено несанкционированно.
[0055] Фиг. 3 иллюстрирует пример окружения 300 для обеспечения возможности белых списков смарт-контрактов в соответствии с реализациями этого описания изобретения. Как показано, смарт-контракт 302 сохраняется в цепочке 216 блоков сети 212 цепочек блоков по фиг. 2. Смарт-контракт 302 включает в себя инструкции 304 и белый список 306. Белый список 306 включает в себя один или более счетов 308.
[0056] Как описано выше, смарт-контракт 302 сохраняется в цепочке 216 блоков. Участники сети 212 цепочек блоков могут вызывать смарт-контракт 302, который может инструктировать узлам 214 сети 212 цепочек блоков выполнять инструкции 304. В некоторых реализациях, узлы 214 сети цепочек блоков должны проверять то, включен или нет счет, указываемый посредством вызывающей стороны смарт-контракта, в один или более счетов 308, указываемых посредством белого списка 306. Если счет находится в белом списке 306, узлы 214 выполняют инструкции 304. Если счет не находится в белом списке 306, узлы 214 не выполняют инструкции 304.
[0057] В некоторых реализациях, инструкции 304 могут представлять собой программный код, написанный на высокоуровневом языке программирования, поддерживаемом посредством узлов 214 сети 212 цепочек блоков, таком как, например, Solidity, Serpent, LLL, Viper, Mutan, C, C++, Python, Java, Javascript или другие языки программирования. Инструкции 304 также могут представлять собой компилированный байтовый код, сформированный из программного кода, ассоциированного со смарт-контрактом 302.
[0058] В некоторых реализациях, белый список 306 и счета 308 сохраняются в цепочке 216 блоков наряду со смарт-контрактом 302. В некоторых случаях, белый список 306 и счета 308 включены в инструкции 304 смарт-контракта 302. Например, белый список 306 может быть включен в директиву в инструкциях 304, к примеру, в инструкцию препроцессора или в специально отформатированный комментарий. Белый список 306 также может включаться с использованием конструкции, конкретной для языка программирования, используемого для того создавать смарт-контракт, такой как функциональный декоратор. Белый список 306 также может указываться в выполняемых инструкциях в рамках инструкций 304. В некоторых реализациях, белый список 306 анализируется до выполнения инструкций узлов 214 304. В некоторых случаях, к примеру, когда белый список 306 включен в выполняемые инструкции, узлы 214 могут начинать выполнение инструкций 304 до оценки белого списка 306. Например, смарт-контракт 302 может включать в себя закрытую функцию, заданную с инструкциями 304, которые должны принимать счет вызывающей стороны в качестве параметра и верифицировать то, что вызывающая сторона авторизована на то, чтобы вызывать смарт-контракт на основе белого списка 306. Эта функция может вызываться автоматически, когда смарт-контракт 302 выполняется, и смарт-контракт 302 может просто завершаться, если счет вызывающей стороны не авторизуется на то, чтобы выполнять контракт. В некоторых случаях, узел 214, который выполняет смарт-контракт 302, может вызывать закрытую функцию, чтобы проверять белый список 306, и выполнять основную функцию смарт-контракта 302 только в том случае, если вызов в закрытую функцию указывает то, что счет вызывающей стороны авторизован на то, чтобы выполнять смарт-контракт 302.
[0059] Фиг. 4A иллюстрирует пример порядка 400 выполнения для транзакций в сети цепочек блоков в соответствии с реализациями этого описания изобретения. Как показано, порядок 400 выполнения включает в себя множество транзакций (405, 410, 415, 420), упорядоченных согласно порядку, в котором они должны выполняться посредством узлов сети цепочек блоков. Транзакция 405a, 405b и 405c представляет собой вызовы в смарт-контракты. Помимо вызовов в смарт-контракты, порядок 400 выполнения включает в себя несколько групп транзакций, совместно использующих общую зависимость (обозначаемую посредством перекрестной штриховки), такую как, например, затрагивание идентичного счета или счетов. Вызовы 405a и 405b в смарт-контракты группируются с другими транзакциями на основе контента их соответствующих белых списков, которые задают счета, которые могут выполнять смарт-контракт, и в силу этого могут иметь состояние, измененное посредством смарт-контракта. Как описано ниже, каждая группа транзакций может выполняться параллельно посредством узлов сети цепочек блоков согласно реализациям этого описания изобретения.
[0060] Фиг. 4B иллюстрирует пример параллельного порядка 450 выполнения для транзакций в сети цепочек блоков в соответствии с реализациями этого описания изобретения. Как показано, в параллельном порядке 450 выполнения, группы 455, 460 и 465 транзакций идентифицированы. Узлы сети цепочек блоков могут выполнять группы транзакций параллельно, как показано на фиг. 4B и пояснено выше. В некоторых случаях, все транзакции в группе совместно используют общую зависимость и в силу этого выполняются последовательно согласно исходному порядку выполнения. Это обеспечивает то, что состояние сети цепочек блоков (например, баланса счетов) должно быть идентичным результату выполнения транзакций согласно параллельному порядку 450 выполнения, каким оно должно быть после выполнения транзакций согласно порядку 400 выполнения на фиг. 4A.
[0061] Рассмотрим пример, в котором счет A имеет баланс в 0$ до выполнения любой из транзакций на фиг. 4B, причем транзакция 410a представляет платеж на счет A со счета B на сумму 400$, и транзакция 410b представляет платеж со счета A на счет C в 50$. Если транзакции 410a и 410b выполняются последовательно (как первоначально описано в порядке 400 выполнения), счет A сначала должен финансироваться на 400$ и затем дебетоваться на 50$, оставляя баланс в 250$. Тем не менее, если транзакции 410a и 410b не выполняются последовательно, и транзакция 410b выполняется, то перед 410a, счет A должен иметь баланс в 0$, когда платеж транзакции 410b выполняется. Счет A имеет недостаточный баланс для того, чтобы финансировать платеж, в этом сценарии, что может приводить к отклонению транзакции 410b посредством сети цепочек блоков.
[0062] На основе этого примера, рассмотрим случай, в котором транзакция 420a представляет платеж со счета D на счет E 100$. Поскольку счета, затрагиваемые посредством транзакции 420a (счета D и E), не включают в себя ни счета, затрагиваемые посредством транзакций 410a и 410b (счета A, B и C), транзакция 420a не имеет общей зависимости с транзакциями 410a и 410b. Таким образом, транзакция 420a может выполняться параллельно с транзакциями 410a и 410b.
[0063] Вызовы (например, 405a-c) в смарт-контракты отличаются от других типов транзакций в том, что счета, которые затрагивает выполнение смарт-контракта, могут не быть определимыми на основе непосредственно смарт-контракта. Поскольку смарт-контракт представляет собой исполняемую программно-реализованную программу, которая может вызываться посредством любого участника в сети цепочек блоков, он может теоретически затрагивать любой счет в сети цепочек блоков. Тем не менее, с добавлением белых списков, описанных выше, счета, которые может затрагивать конкретный смарт-контракт, могут определяться. Поскольку только счета в белом списке могут инструктировать выполнение смарт-контракта, только эти счета имеют потенциал на то, чтобы иметь состояние (например, баланс), измененное посредством выполнения смарт-контракта. Белый список в силу этого обеспечивает возможность группировки вызовов в смарт-контракты для параллельного выполнения в сети цепочек блоков наряду с другими транзакциями, затрагивающими идентичные счета.
[0064] В некоторых реализациях, транзакции, которые должны выполняться последовательно, могут группироваться. Например, как показано на фиг. 4B, транзакции 410a-b и вызов 405b в смарт-контракт группируются в 455, транзакции 415a–e группируются в 460, и транзакции 420a–c и вызов 405a в смарт-контракт группируются в 465. Каждая из групп 455, 460 и 465 может выполняться параллельно посредством узлов сети цепочек блоков. Выполнение групп 455, 460 и 465 транзакций параллельно может приводить к увеличению пропускной способности проведения транзакций в сети цепочек блоков, поскольку сеть теперь выполняет три транзакции в любой момент параллельно, вместо только одной, если все транзакции выполнены последовательно.
[0065] В некоторых реализациях, если смарт-контракт не включает в себя белый список, любой счет в сети цепочек блоков может выполнять смарт-контракт. Вызов 405c в смарт-контракт представляет собой вызов в смарт-контракт, который не указывает белый список. Поскольку вызов 405c в смарт-контракт может выполняться посредством любого счета в сети цепочек блоков, он не может выполняться параллельно с другими транзакциями. Вызов 405c в контракт представляет точку синхронизации, в которой сходится параллельное выполнение. Поскольку вызовы в контракты приводят к выполнению инструкций, составляющих смарт-контракт, может быть невозможным определять объем счетов, которые затрагивает конкретный вызов в контракт. Например, рассмотрим простой смарт-контракт, который принимает конкретный счет и сумму платежа в качестве параметров и применяет сумму платежа к конкретному счету, если некоторое условие является истинным. Поскольку вызывающая сторона этого смарт-контракта указывает конкретный счет, когда смарт-контракт вызывается, невозможно определять, из определения непосредственно смарт-контракта (т.е. его исходного кода), то, какие счета затрагивает конкретный вызов в смарт-контракт. По этой причине, в некоторых реализациях, вызов в контракт может рассматриваться в качестве транзакции с потенциалом затрагивать все счета в сети цепочек блоков, которые в силу этого не могут выполняться параллельно с другими транзакциями. Таким образом, параллельный порядок 450 выполнения сходится, когда он достигает вызова 405c в контракт. Например, как показано, группы 455, 460 и 465 выполняются параллельно до достижения вызова 405c в контракт. В этот момент, сеть цепочек блоков ожидает до тех пор, пока все транзакции в группах 455, 460 и 465 не завершают выполнение, и затем продолжается с выполнением вызова 405c в смарт-контракт.
[0066] Фиг. 5 иллюстрирует пример процесса 500, который может выполняться в соответствии с реализациями этого описания изобретения. В некоторых реализациях, процесс 400 может выполняться с использованием одной или более машиноисполняемых программ, выполняемых с использованием одного или более вычислительных устройств.
[0067] На 502, идентифицируется множество транзакций, которые должны выполняться в цепочке блоков. Транзакции размещаются в порядке выполнения и могут включать в себя один или более вызовов в смарт-контракты для смарт-контрактов, имеющих белый список, идентифицирующий один или более счетов, которые авторизованы на то, чтобы выполнять смарт-контракт. Порядок выполнения включает в себя вызов в смарт-контракт для смарт-контракта, который не имеет белого списка, размещенного после множества транзакций. В некоторых случаях, идентификация множества транзакций, которые должны выполняться в цепочке блоков, включает в себя прием транзакций, передаваемых в широковещательном режиме в сеть цепочек блоков. В некоторых реализациях, белый список для каждого смарт-контракта включен в набор выполняемых инструкций, ассоциированных с каждым смарт-контрактом. Белый список может быть отдельным от набора выполняемых инструкций, ассоциированных с каждым смарт-контрактом. Белый список может включать в себя идентификацию одного или более счетов, которые авторизованы на то, чтобы осуществлять доступ к каждому смарт-контракту. В некоторых случаях, белый список включает в себя ссылку на местоположение, внешнее для каждого смарт-контракта, который сохраняет один или более, которые авторизованы на то, чтобы осуществлять доступ к каждому смарт-контракту.
[0068] На 504, группы транзакций идентифицируются во множестве транзакций, при этом транзакции в каждой группе ассоциированы с конкретным набором счетов в сети цепочек блоков, и при этом конкретный набор счетов, ассоциированных с каждым из одного или более вызовов в смарт-контракты, определяется на основе белого списка, ассоциированного с вызовом в смарт-контракт.
[0069] На 506, узлам сети цепочек блоков инструктируется выполнять каждую из групп транзакций параллельно, при этом выполнение каждой группы транзакций включает в себя выполнение транзакций в пределах группы последовательно и согласно порядку выполнения. В некоторых случаях, инструктирование узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно включает в себя инструктирование первому набору узлов выполнять первую группу транзакций и инструктирование первому набору узлов выполнять вторую группу транзакций. В некоторых случаях, инструктирование узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно включает в себя отправку сообщения в узлы по сети.
[0070] На 508, выполняется определение в отношении того, что узлы сети цепочек блоков завершают выполнение всех групп транзакций. В некоторых случаях, определение того, что узлы сети цепочек блоков завершают выполнение всех групп транзакций, включает в себя определение того, что все транзакции во множестве транзакций включены в один или более блоков, сохраненных в цепочке блоков, поддерживаемой посредством сети цепочек блоков.
[0071] На 510, в ответ на определение того, что узлы сети цепочек блоков завершают выполнение всех групп транзакций, узлам сети цепочек блоков инструктируется выполнять вызов в смарт-контракт, который не включает в себя белый список.
[0072] Фиг. 6 иллюстрирует примеры модулей оборудования 600 в соответствии с реализациями этого описания изобретения. Оборудование 500 может представлять собой примерную реализацию оборудования, выполненного с возможностью обеспечивать параллельное выполнение транзакций в сети цепочек блоков, такой как консорциальная сеть цепочек блоков. Оборудование 600 может соответствовать реализациям, описанным выше, и оборудование 600 включает в себя следующее: первый идентификатор или первый блок 602 идентификации, идентифицирующий множество транзакций, которые должны выполняться в цепочке блоков, при этом транзакции размещаются в порядке выполнения, при этом транзакции включают в себя один или более вызовов в смарт-контракты для смарт-контрактов, имеющих белый список, идентифицирующий один или более счетов, которые авторизованы на то, чтобы выполнять смарт-контракт, и при этом порядок выполнения включает в себя вызов в смарт-контракт для смарт-контракта, который не имеет белого списка, размещенного после множества транзакций; второй идентификатор или второй блок 604 идентификации для идентификации групп транзакций во множестве транзакций, при этом транзакции в каждой группе ассоциированы с конкретным набором счетов в сети цепочек блоков, и при этом конкретный набор счетов, ассоциированных с каждым из одного или более вызовов в смарт-контракты, определяется на основе белого списка, ассоциированного с вызовом в смарт-контракт; первый инструктор или первый блок 606 инструктирования для инструктирования узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно, при этом выполнение каждой группы транзакций включает в себя выполнение транзакций в пределах группы последовательно и согласно порядку выполнения; определитель или блок 608 определения для определения, что узлы сети цепочек блоков завершают выполнение всех групп транзакций; и второй инструктор или второй блок 610 инструктирования для инструктирования узлам сети цепочек блоков выполнять вызов в смарт-контракт, который не включает в себя белый список, в ответ на определение того, что узлы сети цепочек блоков завершают выполнение всех групп транзакций.
[0073] Система, оборудование, модуль или блок, проиллюстрированные в предыдущих реализациях, могут реализовываться посредством использования компьютерной микросхемы или объекта либо могут реализовываться посредством использования продукта, имеющего определенную функцию. Устройство согласно типичной реализации представляет собой компьютер, и компьютер может представлять собой персональный компьютер, переносной компьютер, сотовый телефон, камерофон, смартфон, персональное цифровое устройство, мультимедийный проигрыватель, навигационное устройство, устройство приема и отправки электронной почты, игровую приставку, планшетный компьютер, носимое устройство либо любую комбинацию этих устройств.
[0074] На предмет процесса реализации функций и ролей каждого блока в оборудовании, следует обратиться к процессу реализации соответствующих этапов в предыдущем способе. Подробности опускаются здесь для простоты.
[0075] Поскольку реализация оборудования по существу соответствует реализации способа, для получения сведений по соответствующим частям, следует обратиться к соответствующим описаниям в реализации способа. Вышеописанная реализация оборудования представляет собой просто пример. Блоки, описанные в качестве отдельных частей, могут быть или не быть физически отдельными, и части, отображаемые в качестве блоков, могут быть или не быть физическими блоками, могут быть расположены в одной позиции либо могут быть распределены по определенному числу сетевых блоков. Некоторые или все модули могут выбираться на основе фактических потребностей для достижения целей решений описания изобретения. Специалисты в данной области техники могут понимать и реализовывать реализации настоящей заявки без творческих усилий.
[0076] Снова ссылаясь на фиг. 6, он может интерпретироваться как иллюстрирующий внутренний функциональный модуль и структуру оборудования для обеспечения возможности параллельного выполнения транзакций в сети цепочек блоков. Оборудование для параллельного выполнения может представлять собой пример оборудования, выполненного с возможностью обеспечивать параллельное выполнение транзакций в сети цепочек блоков.
[0077] Реализации предмета изобретения и действий и операций, описанных в этом подробном описании, могут реализовываться в цифровой электронной схеме, в материально осуществленном компьютерном программном обеспечении или микропрограммном обеспечении, в компьютерных аппаратных средствах, включающих в себя структуры, раскрытые в этом подробном описании, и их структурные эквиваленты, либо в комбинациях одного или более из означенного. Реализации предмета изобретения, описанного в этом подробном описании, могут быть реализованы как одна или более компьютерных программ, т.е. один или более модулей компьютерных программных инструкций, кодированных в компьютерной передающей среде программ, для выполнения или управления работой оборудования обработки данных. Передающая среда может представлять собой материальный энергонезависимый компьютерный носитель хранения данных. Альтернативно или помимо этого, передающая среда может представлять собой искусственно сформированный распространяемый сигнал, например, машиносформированный электрический, оптический или электромагнитный сигнал, который формируется для того, чтобы кодировать информацию для передачи в подходящее приемное оборудование для выполнения посредством оборудования обработки данных. Компьютерный носитель хранения данных может представлять собой или составлять часть машиночитаемого устройства хранения данных, машиночитаемой платы хранения данных, запоминающего устройства с произвольным или последовательным доступом либо комбинации одного или более из означенного. Компьютерный носитель хранения данных не представляет собой распространяемый сигнал.
[0078] Термин "оборудование обработки данных" охватывает все виды оборудования, устройств и машин для обработки данных, включающие в себя в качестве примера программируемый процессор, компьютер либо несколько процессоров или компьютеров. Оборудование обработки данных может включать в себя логическую схему специального назначения, например, FPGA (программируемую пользователем вентильную матрицу), ASIC (специализированную интегральную схему) или GPU (графический процессор). Оборудование также может включать в себя, в дополнение к аппаратным средствам, код, который создает среду выполнения для компьютерных программ, например, код, который составляет микропрограммное обеспечение процессора, стек протоколов, систему управления базами данных, операционную систему либо комбинацию одного или более из означенного.
[0079] Компьютерная программа, которая также может называться или описываться как программа, программное обеспечение, программное приложение, приложение, модуль, программный модуль, механизм, сценарий или код, может быть написана на любой форме языка программирования, включающей в себя компилируемые или интерпретируемые языки либо декларативные или процедурные языки; и она может развертываться в любой форме, в том числе в качестве автономной программы или в качестве модуля, компонента, механизма, вложенной процедуры или другого блока, подходящего для выполнения в вычислительном окружении, причем это окружение может включать в себя один или более компьютеров, взаимно соединенных посредством сети передачи данных в одном или более местоположений.
[0080] Компьютерная программа может, но не обязательно должна, соответствовать файлу в файловой системе. Компьютерная программа может сохраняться в части файла, который хранит другие программы или данные (например, один или более сценариев, сохраняемых в документе на языке разметки), в одном файле, выделенном для рассматриваемой программы, или в нескольких координированных файлах (например, в файлах, которые сохраняют один или более модулей, подпрограмм либо частей кода).
[0081] Процессы и логические последовательности операций, поясненные в этом описании изобретения, могут выполняться посредством одного или более компьютеров, выполняющих одну или более компьютерных программ, чтобы осуществлять операции посредством обработки входных данных и формирования вывода. Процессы и логические последовательности операций также могут выполняться посредством логической схемы специального назначения, например, FPGA, ASIC или GPU, либо посредством комбинации логической схемы специального назначения и одного или более запрограммированных компьютеров.
[0082] Компьютеры, подходящие для выполнения компьютерной программы, могут быть основаны на микропроцессорах общего или специального назначения либо на том и на другом, либо на любом другом виде центрального процессора. В общем, центральный процессор принимает инструкции и данные из постоянного запоминающего устройства или оперативного запоминающего устройства, либо из того и из другого. Элементы компьютера могут включать в себя центральный процессор для выполнения инструкций и одно или более запоминающих устройств для сохранения инструкций и данных. Центральный процессор и запоминающее устройство могут дополняться или включаться в логическую схему специального назначения.
[0083] Обычно, компьютер должен соединяться, по меньшей мере, с одним энергонезависимым машиночитаемым носителем хранения данных (также называемым "машиночитаемым запоминающим устройством"). Носитель хранения данных, соединенный с компьютером, может представлять собой внутренний компонент компьютера (например, интегрированный жесткий диск) или внешний компонент (например, жесткий диск по стандарту универсальной последовательной шины (USB) или систему хранения данных, доступную по сети). Примеры носителей хранения данных могут включать в себя, например, магнитные, магнитооптические или оптические диски, полупроводниковые накопители, сетевые ресурсы хранения, к примеру, системы облачного хранения данных или другие типы носителей хранения данных. Тем не менее, компьютер не должен обязательно иметь такие устройства. Кроме того, компьютер может встраиваться в другое устройство, например, в мобильный телефон, персональное цифровое устройство (PDA), мобильный аудио- или видеопроигрыватель, игровую приставку, приемник на основе глобальной системы позиционирования (GPS) или портативное устройство хранения данных, например, флэш-накопитель по стандарту универсальной последовательной шины (USB), помимо прочего.
[0084] Чтобы предоставлять взаимодействие с пользователем, реализации предмета изобретения, описанного в этом подробном описании, могут реализовываться или конфигурироваться с возможностью обмениваться данными с компьютером, имеющим устройство отображения, например, монитор ЖК-дисплея (жидкокристаллического дисплея), для отображения информации пользователю и устройство ввода, посредством которого пользователь может предоставлять ввод в компьютер, например, клавиатуру и указательное устройство, например, мышь, шаровой манипулятор или сенсорную панель. Другие виды устройств также могут использоваться для того, чтобы предоставлять взаимодействие с пользователем; например, обратная связь, предоставляемая пользователю, может представлять собой любую форму сенсорной обратной связи, такую как визуальная обратная связь, акустическая обратная связь или тактильная обратная связь; и ввод от пользователя может приниматься в любой форме, включающей в себя акустический, речевой или тактильный ввод. Помимо этого, компьютер может взаимодействовать с пользователем посредством отправки документов и приема документов из устройства, которое используется пользователем; например, посредством отправки веб-страниц в веб-браузер на устройстве пользователя в ответ на запросы, принимаемые из веб-браузера, либо посредством взаимодействия с приложением, выполняющимся на пользовательском устройстве, например, на смартфоне или электронном планшетном компьютере. Кроме того, компьютер может взаимодействовать с пользователем посредством отправки текстовых сообщений или других форм сообщения в персональное устройство, например, в смартфон, который выполняет приложение обмена сообщениями и принимает ответные сообщения от пользователя в ответ.
[0085] Это описание изобретения использует термин "выполнен с возможностью" в связи с системами, оборудованием и компьютерными программными компонентами. Для системы из одного или более компьютеров, "выполненный с возможностью" выполнять конкретные операции или действия означает то, что система имеет установленное на ней программное обеспечение, микропрограммное обеспечение, аппаратные средства либо комбинацию означенного, которая при работе инструктирует системе выполнять операции или действия. Для одной или более компьютерных программ, "выполненный с возможностью" с возможностью выполнять конкретные операции или действия означает то, что одна или более программ включают в себя инструкции, которые, при выполнении посредством оборудования обработки данных, инструктируют оборудованию выполнять операции или действия. Для логической схемы специального назначения, "выполненный с возможностью" с возможностью выполнять конкретные операции или действия означает то, что схема имеет электронную логику, которая выполняет операции или действия.
[0086] Хотя это описание изобретения содержит множество конкретных сведений по реализации, они не должны истолковываться в качестве ограничений на заявленный объем, который задается непосредственно посредством формулы изобретения, а вместо этого должны истолковываться в качестве описаний признаков, которые могут быть конкретными для конкретных реализаций. Определенные признаки, которые описываются в этом подробном описании в контексте отдельных реализаций, также могут реализовываться, в комбинации, в одной реализации. Наоборот, различные признаки, которые описываются в контексте одной реализации, также могут быть реализованы в нескольких реализациях по отдельности либо в любой подходящей субкомбинации. Кроме того, хотя признаки могут описываться выше как работающие в определенных комбинациях и даже первоначально заявляться в формуле изобретения по существу, один или более признаков из заявленной комбинации в некоторых случаях могут быть исключены из комбинации, и формула изобретения может быть направлена на субкомбинацию или на изменение субкомбинации.
[0087] Аналогично, хотя операции проиллюстрированы на чертежах и приведены в формуле изобретения в конкретном порядке, это не следует понимать как обязательность того, что такие операции должны выполняться в конкретном показанном порядке либо в последовательном порядке, либо того, что все проиллюстрированные операции должны выполняться для того, чтобы достигать требуемых результатов. При определенных обстоятельствах, может быть преимущественной многозадачная и параллельная обработка. Кроме того, разделение различных системных модулей и компонентов в реализациях, описанных выше, не должно пониматься как требующее такого разделения во всех реализациях, и следует понимать, что описанные программные компоненты и системы, в общем, могут интегрироваться в один программный продукт либо комплектоваться в несколько программных продуктов.
[0088] Выше описываются конкретные реализации предмета изобретения. Другие реализации находятся в пределах объем прилагаемой формулы изобретения. Например, действия, изложенные в формуле изобретения, могут выполняться в другом порядке и при этом достигать требуемых результатов. В качестве одного примера, процессы, проиллюстрированные на прилагаемых чертежах, не обязательно требуют конкретного показанного порядка или последовательного порядка для того, чтобы достигать требуемых результатов. В некоторых случаях, может быть преимущественной многозадачная и параллельная обработка.
Изобретение относится к области вычислительной техники. Технический результат заключается в повышение скорости обработки транзакций. Технический результат достигается за счет идентификации группы транзакций во множестве транзакций, при этом транзакции в каждой группе ассоциированы с конкретным набором счетов в сети цепочек блоков, причем конкретный набор счетов, ассоциированных с каждым из упомянутых одного или более вызовов в смарт-контракты, определяется на основе белого списка, ассоциированного с этим вызовом в смарт-контракт; инструктирования узлов сети цепочек блоков выполнять каждую из групп транзакций параллельно, при этом выполнение каждой группы транзакций включает в себя выполнение транзакций в пределах группы последовательно и согласно упомянутому порядку выполнения; определения, что узлами сети цепочек блоков завершено выполнение всех групп транзакций; и в ответ на определение того, что узлами сети цепочек блоков завершено выполнение всех групп транзакций, инструктирования узлам сети цепочек блоков выполнять упомянутый вызов в смарт-контракт, который не включает в себя белый список. 3 н. и 17 з.п. ф-лы, 7 ил.
1. Машинореализуемый способ параллельного выполнения транзакций в сети цепочек блоков, содержащий этапы, на которых:
идентифицируют множество транзакций, которые должны выполняться в цепочке блоков, при этом транзакции размещаются в порядке выполнения, причем транзакции включают в себя один или более вызовов в смарт-контракты для смарт-контрактов, каждый из которых имеет белый список, идентифицирующий один или более счетов, которые авторизованы на выполнение этого смарт-контракта, при этом упомянутый порядок выполнения включает в себя вызов в смарт-контракт для смарт-контракта, который не имеет белого списка, размещенного после упомянутого множества транзакций;
идентифицируют группы транзакций в упомянутом множестве транзакций, при этом транзакции в каждой группе ассоциированы с конкретным набором счетов в сети цепочек блоков, причем конкретный набор счетов, ассоциированных с каждым из упомянутых одного или более вызовов в смарт-контракты, определяется на основе белого списка, ассоциированного с этим вызовом в смарт-контракт;
инструктируют узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно, при этом выполнение каждой группы транзакций включает в себя выполнение транзакций в пределах группы последовательно и согласно упомянутому порядку выполнения;
определяют, что узлами сети цепочек блоков завершено выполнение всех групп транзакций; и
в ответ на определение того, что узлами сети цепочек блоков завершено выполнение всех групп транзакций, инструктируют узлам сети цепочек блоков выполнять упомянутый вызов в смарт-контракт, который не включает в себя белый список.
2. Способ по п.1, в котором инструктирование узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно включает в себя этап, на котором инструктируют первому набору узлов выполнять первую группу транзакций и инструктируют второму набору узлов выполнять вторую группу транзакций.
3. Способ по п.1, в котором определение того, что узлами сети цепочек блоков завершено выполнение всех групп транзакций, включает в себя этап, на котором определяют, что все транзакции в упомянутом множестве транзакций включены в один или более блоков, сохраненных в цепочке блоков, поддерживаемой сетью цепочек блоков.
4. Способ по п.1, в котором инструктирование узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно включает в себя этап, на котором отправляют сообщение в узлы по сети.
5. Способ по п.1, в котором идентификация множества транзакций, которые должны выполняться в цепочке блоков, включает в себя этап, на котором принимают транзакции, передаваемые в широковещательном режиме в сеть цепочек блоков.
6. Способ по п.1, в котором белый список включен в набор исполняемых инструкций, ассоциированных с каждым смарт-контрактом.
7. Способ по п.1, в котором белый список является отдельным от набора исполняемых инструкций, ассоциированных с каждым смарт-контрактом.
8. Способ по п.1, в котором белый список включает в себя идентификацию одного или более счетов, которые авторизованы на осуществление доступа к каждому смарт-контракту.
9. Способ по п.1, в котором белый список включает в себя ссылку на местоположение, внешнее для каждого смарт-контракта, который сохраняет один или более счетов, которые авторизованы на то, чтобы осуществлять доступ к каждому смарт-контракту.
10. Энергонезависимый машиночитаемый носитель данных, который соединен с одним или более компьютерами и на котором сохранены инструкции, которые исполняются одним или более компьютерами, чтобы:
идентифицировать множество транзакций, которые должны выполняться в цепочке блоков, при этом транзакции размещаются в порядке выполнения, причем транзакции включают в себя один или более вызовов в смарт-контракты для смарт-контрактов, каждый из которых имеет белый список, идентифицирующий один или более счетов, которые авторизованы на выполнение этого смарт-контракта, при этом упомянутый порядок выполнения включает в себя вызов в смарт-контракт для смарт-контракта, который не имеет белого списка, размещенного после упомянутого множества транзакций;
идентифицировать группы транзакций в упомянутом множестве транзакций, при этом транзакции в каждой группе ассоциированы с конкретным набором счетов в сети цепочек блоков, причем конкретный набор счетов, ассоциированных с каждым из упомянутых одного или более вызовов в смарт–контракты, определяется на основе белого списка, ассоциированного с этим вызовом в смарт-контракт;
инструктировать узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно, при этом выполнение каждой группы транзакций включает в себя выполнение транзакций в пределах группы последовательно и согласно упомянутому порядку выполнения;
определять, что узлами сети цепочек блоков завершено выполнение всех групп транзакций; и
в ответ на определение того, что узлами сети цепочек блоков завершено выполнение всех групп транзакций, инструктировать узлам сети цепочек блоков выполнять упомянутый вызов в смарт-контракт, который не включает в себя белый список.
11. Энергонезависимый машиночитаемый носитель данных по п.10, при этом инструктирование узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно включает в себя инструктирование первому набору узлов выполнять первую группу транзакций и инструктирование второму набору узлов выполнять вторую группу транзакций.
12. Энергонезависимый машиночитаемый носитель данных по п.10, при этом определение того, что узлами сети цепочек блоков завершено выполнение всех групп транзакций, включает в себя определение того, что все транзакции в упомянутом множестве транзакций включены в один или более блоков, сохраненных в цепочке блоков, поддерживаемой сетью цепочек блоков.
13. Энергонезависимый машиночитаемый носитель данных по п.10, при этом инструктирование узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно включает в себя отправку сообщения в узлы по сети.
14. Энергонезависимый машиночитаемый носитель данных по п.10, при этом идентификация множества транзакций, которые должны выполняться в цепочке блоков, включает в себя прием транзакций, передаваемых в широковещательном режиме в сеть цепочек блоков.
15. Энергонезависимый машиночитаемый носитель данных по п.10, при этом белый список включен в набор исполняемых инструкций, ассоциированных с каждым смарт-контрактом.
16. Энергонезависимый машиночитаемый носитель данных по п.10, при этом белый список является отдельным от набора исполняемых инструкций, ассоциированных с каждым смарт-контрактом.
17. Энергонезависимый машиночитаемый носитель данных по п.10, при этом белый список включает в себя идентификацию упомянутых одного или более счетов, которые авторизованы на осуществление доступа к каждому смарт-контракту.
18. Энергонезависимый машиночитаемый носитель данных по п.10, при этом белый список включает в себя ссылку на местоположение, внешнее для каждого смарт-контракта, который сохраняет упомянутые один или более счетов, которые авторизованы на осуществление доступа к каждому смарт-контракту.
19. Система для параллельного выполнения транзакций в сети цепочек блоков, содержащая:
один или более компьютеров; и
одно или более машиночитаемых запоминающих устройств, которые соединены с одним или более компьютерами и в которых сохранены инструкции, которые исполняются посредством одного или более компьютеров, чтобы:
идентифицировать множество транзакций, которые должны выполняться в цепочке блоков, при этом транзакции размещаются в порядке выполнения, причем транзакции включают в себя один или более вызовов в смарт-контракты для смарт-контрактов, каждый из которых имеет белый список, идентифицирующий один или более счетов, которые авторизованы на выполнение этого смарт-контракта, при этом упомянутый порядок выполнения включает в себя вызов в смарт-контракт для смарт-контракта, который не имеет белого списка, размещенного после упомянутого множества транзакций;
идентифицировать группы транзакций в упомянутом множестве транзакций, при этом транзакции в каждой группе ассоциированы с конкретным набором счетов в сети цепочек блоков, причем конкретный набор счетов, ассоциированных с каждым из упомянутых одного или более вызовов в смарт-контракты, определяется на основе белого списка, ассоциированного с этим вызовом в смарт-контракт;
инструктировать узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно, при этом выполнение каждой группы транзакций включает в себя выполнение транзакций в пределах группы последовательно и согласно упомянутому порядку выполнения;
определять, что узлами сети цепочек блоков завершено выполнение всех групп транзакций; и
в ответ на определение того, что узлами сети цепочек блоков завершено выполнение всех групп транзакций, инструктировать узлам сети цепочек блоков выполнять вызов в упомянутый смарт-контракт, который не включает в себя белый список.
20. Система по п.19, в которой инструктирование узлам сети цепочек блоков выполнять каждую из групп транзакций параллельно включает в себя инструктирование первому набору узлов выполнять первую группу транзакций и инструктирование второму набору узлов выполнять вторую группу транзакций.
СПОСОБ СОХРАНЕНИЯ ПОКУПАТЕЛЬНОЙ СПОСОБНОСТИ СБЕРЕЖЕНИЙ | 2017 |
|
RU2673399C1 |
СКРЕП КОРПУСОВ УЛЬЯ | 0 |
|
SU181439A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Способ получения цианистых соединений | 1924 |
|
SU2018A1 |
Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами | 1924 |
|
SU2017A1 |
Авторы
Даты
2020-09-02—Публикация
2018-12-28—Подача