УСЛУГА СМАРТ-КОНТРАКТА ВНЕ ЦЕПОЧКИ НА ОСНОВЕ ДОВЕРЕННОЙ СРЕДЫ ИСПОЛНЕНИЯ
SERVICE OF SMART CONTRACT OUTSIDE CHAIN BASED ON TRUSTED EXECUTION ENVIRONMENT

Предшествующий уровень техники
[0001] Системы распределенного реестра (DLS), которые могут также называться консенсусными сетями и/или сетями блокчейна (цепочек блоков), обеспечивают возможность участвующим объектам безопасно и неизменно хранить данные. DLS обычно называются сетями блокчейна без ссылки на какой–либо конкретный случай пользователя. Примеры типов сетей блокчейна могут включать в себя публичные сети блокчейна, приватные сети блокчейна и консорциумные сети блокчейна. Публичная сеть блокчейна открыта для всех объектов, чтобы использовать DLS и участвовать в процессе консенсуса. Частная сеть блокчейна обеспечена для конкретного объекта, который централизованно управляет разрешениями считывания и записи. Консорциумная сеть блокчейна обеспечена для выбранной группы объектов, которые управляют процессом консенсуса, и включает в себя уровень управления доступом.
[0002] Блокчейн (цепочка блоков) представляет собой децентрализованную и устойчивую к взлому технологию распределенного хранения данных. Пользовательские данные и контракты логически управляются и хранятся на цепочке публичным образом. Во многих сценариях пользователи нуждаются в удовлетворении требований защиты приватности и не желают утечки их данных и логики к неавторизованным сторонам.
[0003] Хотя криптография может использоваться, чтобы усиливать защиту приватности для некоторых конкретных схем сценария, более универсальное и эффективное решение необходимо для решения существующих проблем приватности операций блокчейна.
Краткое описание сущности изобретения
[0004] Реализации спецификации включают в себя реализуемые компьютером способы для услуги смарт–контракта вне цепочки на основе технологий блокчейна (упоминаемой как услуга смарт–контракта вне цепочки блокчейна или просто услуга смарт–контракта). Более конкретно, реализации спецификации направлены на обеспечение услуги смарт–контракта вне цепочки, способной оперировать с кросс–чейновыми (между цепочками) данными в доверенной среде исполнения (TEE).
[0005] В некоторых реализациях действия включают в себя прием, провайдером услуги смарт–контракта, включающим в себя доверенную среду исполнения вычисления (TEE), от клиента, ассоциированного с сетью целевого блокчейна, запроса на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна, и провайдер услуги смарт–контракта находится вне сети целевого блокчейна; отправку, провайдером услуги смарт–контракта провайдеру услуги посещения данных, запроса на кросс–чейновые данные; прием, провайдером услуги смарт–контракта, кросс–чейновых данных от провайдера услуги посещения данных; генерирование, посредством TEE, результата, использующего кросс–чейновые данные; и возвращение, провайдером услуги смарт–контракта, результата клиенту. Другие реализации включают в себя соответствующие системы, устройства и компьютерные программы, сконфигурированные, чтобы выполнять этапы способов, закодированные на компьютерных устройствах хранения.
[0006] В некоторых реализациях не–временный считываемый компьютером носитель хранения подсоединен к одному или нескольким компьютерам и сконфигурирован с инструкциями, исполняемыми одним или несколькими компьютерами, чтобы: принимать, провайдером услуги смарт–контракта, содержащим доверенную среду исполнения вычисления (TEE), от клиента, ассоциированного с сетью целевого блокчейна, запрос на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна, причем провайдер услуги смарт–контракта находится вне сети целевого блокчейна; отправлять, провайдером услуги смарт–контракта провайдеру услуги посещения данных, запрос на кросс–чейновые данные; принимать, провайдером услуги смарт–контракта, кросс–чейновые данные от провайдера услуги посещения данных; генерировать, посредством TEE, результат с использованием кросс–чейновых данных; и возвращать, провайдером услуги смарт–контракта, результат клиенту.
[0007] В некоторых реализациях система для обеспечения услуги смарт–контракта включает в себя интерфейс, сконфигурированный, чтобы принимать, от клиента, ассоциированного с сетью целевого блокчейна, запрос на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна; причем система находится вне сети целевого блокчейна; и доверенную среду исполнения вычисления (TEE), причем TEE включает в себя один или несколько компьютеров; и одну или несколько считываемых компьютером памятей, подсоединенных к одному или нескольким компьютерам и сконфигурированных с инструкциями, исполняемыми одним или несколькими компьютерами, чтобы: отправлять запрос на кросс–чейновые данные провайдеру услуги посещения данных; принимать кросс–чейновые данные от провайдера услуги посещения данных; и генерировать результат, использующий кросс–чейновые данные; и причем интерфейс сконфигурирован, чтобы возвращать результат клиенту.
[0008] Эти и другие реализации могут, каждая, необязательно включать в себя одну или несколько из следующих особенностей:
[0009] Первая особенность, комбинируемая с любой из следующих особенностей, в которой запрос на оперирование кросс–чейновыми данными включает в себя логики вычисления смарт–контракта для оперирования кросс–чейновыми данными.
[0010] Вторая особенность, комбинируемая с любой из следующих особенностей, в которой логики вычисления смарт–контракта для оперирования кросс–чейновыми данными самостоятельно разрабатываются клиентом.
[0011] Третья особенность, комбинируемая с любой из следующих особенностей, в которой результат генерируется посредством TEE, исполняющей логики вычисления смарт–контракта с использованием кросс–чейновых данных.
[0012] Четвертая особенность, комбинируемая с любой из следующих особенностей, дополнительно включает в себя удостоверение, провайдером услуги смарт–контракта клиенту, что TEE включает в себя виртуальную машину, выполненную с возможностью, чтобы исполнять логики вычисления смарт–контракта в запросе на оперирование кросс–чейновыми данными.
[0013] Пятая особенность, комбинируемая с любой из следующих особенностей, дополнительно включает в себя перед приемом запроса на оперирование кросс–чейновыми данными от клиента, удостоверение, провайдером услуги смарт–контракта клиенту, что провайдер услуги смарт–контракта включает в себя TEE.
[0014] Шестая особенность, комбинируемая с любой из следующих особенностей, дополнительно включает в себя удостоверение, провайдером услуги смарт–контракта провайдеру услуги посещения данных, что провайдер услуги смарт–контракта включает в себя TEE; и верифицирование, провайдером услуги смарт–контракта, что провайдер услуги посещения данных включает в себя TEE.
[0015] Седьмая особенность, комбинируемая с любой из следующих особенностей, дополнительно включает в себя выгрузку, провайдером услуги смарт–контракта, результата в сеть целевого блокчейна.
[0016] Восьмая особенность, комбинируемая с любой из следующих особенностей, дополнительно включает в себя выгрузку результата в сеть целевого блокчейна, удостоверение, провайдером услуги смарт–контракта для сети целевого блокчейна, что провайдер услуги смарт–контракта включает в себя TEE.
[0017] Девятая особенность, комбинируемая с любой из следующих особенностей, в которой провайдер услуги смарт–контракта включает в себя облачный сервер.
[0018] Десятая особенность, комбинируемая с любой из следующих особенностей, в которой результат подписывается посредством TEE с использованием закрытого ключа.
[0019] Одиннадцатая особенность, комбинируемая с любой из следующих особенностей, в которой кросс–чейновые данные получают из двух или более сетей блокчейна.
[0020] В некоторых реализациях действия включают в себя генерирование, клиентом, ассоциированным с сетью целевого блокчейна, запроса на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна, причем запрос на оперирование кросс–чейновыми данными включает в себя логики вычисления смарт–контракта для оперирования кросс–чейновыми данными; отправку, от клиента, запроса на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, включающему в себя доверенную среду исполнения вычисления (TEE), причем провайдер услуги смарт–контракта находится вне сети целевого блокчейна; и прием, клиентом, результата от провайдера услуги смарт–контракта, причем результат генерируется посредством TEE с использованием кросс–чейновых данных, получаемых провайдером услуги смарт–контракта. Другие реализации включают в себя соответствующие системы, устройство и компьютерные программы, сконфигурированные, чтобы выполнять действия способов, закодированные на компьютерных устройствах хранения.
[0021] В некоторых реализациях не–временный считываемый компьютером носитель хранения подсоединен к одному или нескольким компьютерам и сконфигурирован с инструкциями, исполняемыми одним или несколькими компьютерами, чтобы генерировать клиентом, ассоциированным с сетью целевого блокчейна, запрос на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна, причем запрос на оперирование кросс–чейновыми данными включает в себя логики вычисления смарт–контракта для оперирования кросс–чейновыми данными; отправлять, от клиента, запрос на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, содержащему доверенную среду исполнения вычисления (TEE), причем провайдер услуги смарт–контракта находится вне сети целевого блокчейна; и принимать, клиентом, результат от провайдера услуги смарт–контракта, причем результат генерируется посредством TEE, использующей кросс–чейновые данные, получаемые провайдером услуги смарт–контракта.
[0022] В некоторых реализациях система включает в себя один или несколько компьютеров; и одну или несколько считываемых компьютером памятей, подсоединенных к одному или нескольким компьютерам и сконфигурированных с инструкциями, исполняемыми одним или несколькими компьютерами, чтобы: генерировать, клиентом, ассоциированным с сетью целевого блокчейна, запрос на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна, причем запрос на оперирование кросс–чейновыми данными включает в себя логики вычисления смарт–контракта для оперирования с кросс–чейновыми данными; отправлять, от клиента, запрос на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, содержащему доверенную среду исполнения вычисления (TEE), причем провайдер услуги смарт–контракта находится вне сети целевого блокчейна; и принимать, клиентом, результат от провайдера услуги смарт–контракта, причем результат генерируется посредством TEE, использующей кросс–чейновые данные, получаемые провайдером услуги смарт–контракта.
[0023] Эти и другие реализации могут, каждая, необязательно включать в себя один или несколько из следующих особеностей:
[0024] Первая особенность, комбинируемая с любой из следующих особенностей, дополнительно включает в себя отправку, клиентом, принятого результата на сеть целевого блокчейна.
[0025] Вторая особенность, комбинируемая с любой из следующих особенностей, дополнительно включает в себя перед отправкой запроса на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, верифицирование, клиентом, что провайдер услуги смарт–контракта включает в себя TEE.
[0026] Третья особенность, комбинируемая с любой из следующих особенностей, дополнительно включает в себя верифицирование, клиентом, что TEE включает в себя виртуальную машину, выполненную с возможностью, чтобы исполнять логики вычисления смарт–контракта в запросе на оперирование кросс–чейновыми данными.
[0027] Четвертая особенность, комбинируемая с любой из следующих особенностей, дополнительно включает в себя разработку, клиентом, логик вычисления смарт–контракта для оперирования кросс–чейновыми данными.
[0028] Пятая особенность, комбинируемая с любой из следующих особенностей, в которой клиент включает в себя комплект разработки программного обеспечения (SDK).
[0029] Шестая особонность, комбинируемая с любой из следующих особенностей, в которой результат подписывается посредством TEE с использованием закрытого ключа, способ дополнительно включает в себя дешифрование, клиентом, принятого результата с использованием открытого ключа, соответствующего закрытому ключу.
[0030] Седьмая особенность, комбинируемая с любой из следующих особенностей, дополнительно включает в себя перед отправкой запроса на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, шифрование, клиентом, запроса на оперирование кросс–чейновыми данными.
[0031] Восьмая особенность, комбинируемая с любой из следующих особенностей, в которой кросс–чейновые данные получают из двух или более сетей блокчейна.
[0032] Описание также обеспечивает один или несколько не–временных считываемых компьютером носителей хранения, подсоединенных к одному или нескольким процессорам и имеющих сохраненные на них инструкции, которые, при исполнении одним или несколькими процессорами, побуждают один или несколько процессоров выполнять операции согласно реализациям способов, обеспеченных в настоящем документе.
[0033] Описание дополнительно обеспечивает систему для реализации способов, обеспеченных в настоящем документе. Система включает в себя один или несколько процессоров и считываемый компьютером носитель хранения, подсоединенный к одному или нескольким процессорам, имеющий сохраненные на нем инструкции, которые, при исполнении одним или несколькими процессорами, побуждают один или несколько процессоров выполнять операции согласно реализациям способов, обеспеченных в настоящем документе.
[0034] Описанный провайдер услуги смарт–контракта вне цепочки не подсоединен к какой–либо конкретной сети блокчейна, и, таким образом, обеспечиваемая услуга не ограничена конкретной формой контракта (например, сконфигурированного для конкретной сети блокчейна), а поддерживает определенные пользователем вычисления вне цепочки. К тому же, описанный провайдер услуги смарт–контракта вне цепочки может поддерживать посещения кросс–чейновых данных и позволять взаимно не–доверенным сторонам исполнять смарт–контракты на приватных данных из одной или нескольких сетей блокчейна. Описанные методы могут достигать некоторых преимуществ. Например, использование TEE в качестве промежуточной среды для выполнения вычислений может защитить приватность данных. Дополнительно, разгрузка вычислительных задач из сети блокчейна в TEE вне цепочки может сберегать время и ресурсы вычисления сети блокчейна. К тому же, поскольку пользователь может самостоятельно разрабатывать вычислительные логики для вычислений, которые он требует и запрашивает, TEE исполняет вычисления с использованием этих вычислительных логик, и различные вычисления могут выполняться более гибким образом.
[0035] Понятно, что способы согласно описанию, могут включать в себя любую комбинацию аспектов и признаков, описанных в настоящем документе. То есть, способы согласно описанию не ограничены комбинациями аспектов и признаков, конкретно описанных в настоящем документе, но также включают в себя любую комбинацию обеспеченных аспектов и признаков.
[0036] Подробности одной или нескольких реализаций описания изложены на прилагаемых чертежах и описании ниже. Другие признаки и преимущества описания будут очевидны из описания и чертежей, а также из формулы изобретения.
Описание чертежей
[0037] Фиг. 1 изображает пример среды, которая может использоваться, чтобы исполнять реализации описания.
[0038] Фиг. 2 изображает пример концептуальной архитектуры согласно реализациям описания.
[0039] Фиг. 3 изображает пример процесса обеспечения услуги кросс–чейновых данных клиенту согласно реализациям описания.
[0040] Фиг. 4 изображает пример процесса, который может исполняться согласно реализациям описания.
[0041] Фиг. 5 изображает пример диаграммы, иллюстрирующей модули устройства операции кросс–чейновых данных согласно реализациям описания.
[0042] Фиг. 6 изображает пример диаграммы, иллюстрирующей модули другого устройства операции кросс–чейновых данных согласно реализациям описания.
[0043] Подобные ссылочные символы на различных чертежах указывают подобные элементы.
Подробное описание
[0044] Реализации описания включают в себя реализуемые компьютером способы для услуги смарт–контракта вне цепочки на основе технологий блокчейна (упоминаемой как услуга смарт–контракта вне цепочки блокчейна или просто услуга смарт–контракта). Более конкретно, реализации описания направлены на обеспечение услуги смарт–контракта вне цепочки, способной оперировать кросс–чейновыми (между цепочками) данными в доверенной среде исполнения.
[0045] Чтобы обеспечить дополнительный контекст для реализаций описания, и как представлено выше, системы распределенного реестра (DLS), которые могут также называться сетями консенсуса (например, составленными из одноранговых узлов), и сети блокчейна, обеспечивают возможность участвующим объектам безопасно и неизменяемым образом проводить транзакции и сохранять данные. Термин блокчейн используется в настоящем документе, чтобы в общем ссылаться на DLS без ссылки на какой–либо конкретный случай использования.
[0046] Блокчейн представляет собой структуру данных, которая хранит транзакции таким образом, что транзакции являются неизменными и затем могут быть верифицированы. Блокчейн включает в себя один или несколько блоков. Каждый блок в цепочке связан с предыдущим блоком непосредственно перед ним в цепочке путем включения криптографического хеша предыдущего блока. Каждый блок также включает в себя временную метку, свой собственный криптографический хеш и одну или несколько транзакций. Транзакции, которые уже были верифицированы узлами сети блокчейна, хешируются и кодируются в дерево Меркла. Дерево Меркла представляет собой структуру данных, в которой данные в листовых узлах дерева хешируются, и все хеши в каждой ветви дерева конкатенированы в корне ветви. Этот процесс продолжается вверх по дереву до корня всего дерева, который хранит хеш, который является представлением всех данных в дереве. Хеш, имеющий целью относиться к транзакции, сохраненной в дереве, может быть быстро верифицирован путем определения, согласован ли он со структурой дерева.
[0047] В то время как блокчейн (цепочка блоков) представляет собой структуру данных для хранения транзакций, сеть блокчейна представляет собой сеть вычислительных узлов, которые администрируют, обновляют и поддерживают один или несколько блокчейнов (цепочек блоков). Как введено выше, сеть блокчейна может быть обеспечена как публичная сеть блокчейна, частная (приватная) сеть блокчейна или консорциумная сеть блокчейна.
[0048] В публичной сети блокчейна процесс консенсуса управляется узлами сети консенсуса. Например, сотни, тысячи, даже миллионы объектов могут совместно задействовать публичную сеть блокчейна, причем каждый из них оперирует по меньшей мере одним узлом в публичной сети блокчейна. Соответственно, публичная сеть блокчейна может рассматриваться как публичная сеть в отношении участвующих объектов. В некоторых примерах большинство объектов (узлов) должны подписывать каждый блок, чтобы блок был действительным и был добавлен в блокчейн (распределенный реестр) сети блокчейна. Примерные публичные сети блокчейна включают в себя конкретные одноранговые платежные сети, которые извлекают выгоду из распределенного реестра, называемого блокчейном. Как отмечено выше, термин блокчейн, однако, используется, чтобы в общем ссылаться на распределенные реестры без конкретной ссылки на какую–либо конкретную сеть блокчейна.
[0049] В общем публичная сеть блокчейна поддерживает публичные транзакции. Публичная транзакция совместно используется всеми из узлов в публичной сети блокчейна и хранится в глобальном блокчейне. Глобальный блокчейн представляет собой блокчейн, который воспроизводится по всем узлам. То есть, все узлы находятся в консенсусе идеального состояния в отношении глобального блокчейна. Чтобы достичь консенсуса (например, соглашения на добавление блока в блокчейн), протокол консенсуса реализуется в публичной сети блокчейна. Примеры протоколов консенсуса включают в себя, без ограничения, доказательство выполнения работы (POW), доказательство (подтверждение) доли владения (POS) и доказательство полномочий (POA). На POW далее даются ссылки в настоящем документе в качестве неограничивающего примера.
[0050] В общем частная (приватная) сеть блокчейна обеспечена для конкретного объекта, который централизованно управляет разрешениями на считывание и запись. Объект управляет тем, какие узлы способны участвовать в сети блокчейна. Следовательно, приватные сети блокчейна в общем упоминаются как сети с разрешением, которые налагают ограничения на то, кому разрешено участвовать в сети, и на их уровень участия (например, только в определенных транзакциях). Могут использоваться различные типы механизмов управления доступом (например, существующие участники голосуют за добавление новых объектов, распорядительный орган может управлять допуском).
[0051] В общем консорциумная сеть блокчейна является частной среди участвующих объектов. В консорциумной сети блокчейна процесс консенсуса управляется авторизованным набором узлов, один или несколько узлов оперируются соответственным объектом (например, финансовым институтом, страховой компанией). Например, консорциум из десяти (10) объектов (например, финансовых институтов, страховых компаний) может оперировать консорциумной сетью блокчейна, и каждый из них оперирует по меньшей мере одним узлом в консорциумной сети блокчейна. Соответственно, консорциумная сеть блокчейна может рассматриваться как частная сеть в отношении участвующих объектов. В некоторых примерах каждый объект (узел) должен подписывать каждый блок, чтобы блок стал действительным и был добавлен в блокчейн. В некоторых примерах по меньшей мере, поднабор объектов (узлов) (например, по меньшей мере 7 объектов) должен подписывать каждый блок, чтобы блок стал действительным и был добавлен в блокчейн.
[0052] Блокчейн представляет собой устойчивый к взлому совместно используемый цифровой реестр, который записывает транзакции в публичной или частной одноранговой сети. Реестр распределен по всем узлам–членам в сети, и история транзакций с активами, происходящих в сети, непрерывно записывается в блок. Перед участием в транзакции, узлу в блокчейне может потребоваться исполнить вычисления с использованием различных методов. При текущих решениях поскольку каждый блокчейн независим, узел одного блокчейна не может осуществлять связь с другими цепочками. Например, узел не может считывать данные из других блокчейнов или обмениваться данными с другими блокчейнами. К тому же, даже если узлу не требуются данные из других блокчейнов для исполнения вычисления, выполнение таких вычислений полностью на блокчейне может потреблять много времени и вычислительных ресурсов блокчейна, если это требует сложных вычислительных логик и протоколов.
[0053] Реализации описания описаны более подробно в настоящем документе со ссылкой на консорциумную сеть блокчейна, который является публичным среди участвующих объектов. Предполагается, однако, что реализации описания могут быть реализованы в любом подходящем типе сети блокчейна.
[0054] Реализации описания описаны здесь более подробно в виду вышеописанного контекста. Более конкретно, и как введено выше, реализации описания направлены на обеспечение услуги смарт–контракта вне цепочки, способной оперировать кросс–чейновыми данными в доверенной среде исполнения.
[0055] Методы для решения этих проблем могут включать в себя использование услуги смарт–контракта вне цепочки для выполнения вычисления и оперирования кросс–чейновыми данными. Смарт–контракт может представлять собой компьютерное соглашение, разработанное, чтобы распределять, верифицировать или приводить в исполнение контракты информационным образом. Смарт–контракты разрешают доверенным транзакциям выполняться без вовлечения третьей стороны. Эти транзакции могут отслеживаться и являются необратимыми. Смарт–контракт включает в себя логики или компьютерные программы, которые воплощают соглашения или правила транзакции. Например, смарт–контракт может включать в себя логики, которые управляют переводом цифровых валют или активов между сторонами при определенных условиях. Смарт–контракты могут быть закодированы на языке программирования и развернуты на платформе времени выполнения сети блокчейна.
[0056] В некоторых реализациях обработка вне цепочки может использоваться для исполнения или приведения в исполнение смарт–контрактов. Например, логики, включенные в смарт–контракт, могут исполняться вне границ сети блокчейна, например, провайдером услуги смарт–контракта вне цепочки, при сохранении доверия и прозрачности сети блокчейна. Например, провайдер услуги смарт–контракта вне цепочки может представлять собой компьютер, сервер или другие типы устройства обработки данных, независимые от сети блокчейна. При помощи обработки вне цепочки логики смарт–контракта могут исполняться в доверенной среде исполнения (TEE) для сохранения доверия и прозрачности сети блокчейна. TEE может использоваться, чтобы исполнять логики в смарт–контракте и выполнять другие операции и транзакции, включенные в смарт–контракт, вне сети блокчейна. TEE может привязывать код к смарт–контракту и обеспечивать ряд услуг, таких как верификация идентичности, администрирование ключей, ксерографическая услуга и взаимодействия с внешним миром. Доверенная среда TEE гарантирует, что только авторизованному коду разрешено осуществлять доступ к данным, и такие защиты приводятся в выполнение через исполнение кода в них. В некоторых реализациях результат исполнения смарт–контракта, возвращаемый услугой смарт–контракта вне цепочки, может быть выгружен или иным образом передан на сеть блокчейна, например, чтобы обновить состояние сети блокчейна. Например, провайдер услуги смарт–контракта вне цепочки может разгрузить вычислительную нагрузку из сети блокчейна и иметь большую гибкость в выполнении разных сложных вычислительных логик и протоколов.
[0057] В некоторых реализациях описанный провайдер услуги смарт–контракта вне цепочки не связан с какой–либо конкретной сетью блокчейна, и, таким образом, обеспеченная услуга не ограничена конкретной формой контракта (например, сконфигурированного для конкретной сети блокчейна), но поддерживает определенные пользователем вычисления вне цепочки.
[0058] Кроме того, описанный провайдер услуги смарт–контракта вне цепочки может поддерживать посещения кросс–чейновых данных и разрешать взаимно не–доверенным участникам запускать смарт–контракты на приватных данных из одной или нескольких сетей блокчейна. Например, клиент сети A блокчейна может определять смарт–контракт, который работает на данных клиента из сети A блокчейна, а также на данных из другой сети блокчейна, сети B блокчейна. В некоторых реализациях клиент вызывает услугу контракта вне цепочки, чтобы исполнить его определенный смарт–контракт. Услуга контракта вне цепочки может выбирать запрошенные данные из сети A блокчейна и сети B блокчейна, исполнять определенный клиентом смарт–контракт вне сети A блокчейна и сети B блокчейна, чтобы получить результат, и затем предоставляет результат в сеть A блокчейна, чтобы обновить состояния клиента.
[0059] Описаны примерные методы, чтобы сделать возможным и более простым для узла сети блокчейна исполнять сложные вычисления и использовать данные из одной или нескольких других сетей блокчейна для выполнения таких вычислений. Примерные методы могут быть основаны на доверенной среде исполнения (TEE). TEE представляет собой безопасную область на процессоре хоста, которая гарантирует безопасность, приватность и целостность кодов и данных, загруженных в среду. TEE обеспечивает изолированную среду исполнения (например, с использованием выделенных и изолированных аппаратных средств), которая имеет несколько признаков безопасности, таких как изолированное исполнение, целостность доверенных приложений, конфиденциальность (приватность) доверенных данных и безопасное хранение. Описанный провайдер услуги смарт–контракта вне цепочки может включать в себя TEE и реализовывать вычисление сети блокчейна в TEE. Описанные методы могут иметь несколько преимуществ. Например, использование TEE в качестве промежуточной среды для выполнения вычислений может защищать приватность данных. Например, пользователю сети A блокчейна нужны данные из сети B блокчейна и сети C блокчейна, чтобы выполнить вычисление. Нормально, каждая из сети B и C блокчейна представляет собой закрытую цепочку и не желает совместно использовать свои данные с пользователем сети A блокчейна по соображениям приватности. С использованием TEE вычисление может выполняться без раскрытия подробной информации данных из сети B и C блокчейна для сети A блокчейна, но все еще реализовывать посещение кросс–чейновых данных и исполнение смарт–контракта на основе кросс–чейновых данных. Дополнительно, как описано ранее, выполнение сложных вычислений на сети блокчейна затрачивает вычислительные ресурсы цепочки. Разгрузка вычислительных задач из сети блокчейна в TEE вне цепочки может сберечь время и ресурсы вычисления сети блокчейна. Кроме того, поскольку пользователь может самостоятельно разрабатывать вычислительные логики для вычислений, которые ему необходимы и которые он запрашивает, TEE исполняет вычисления с использованием этих вычислительных логик, и различные вычисления могут выполняться более гибким и расширенным образом.
[0060] В некоторых реализациях предложенные методы могут обеспечить универсальную услугу смарт–контракта защитой приватности. Например, смарт–контрактам, используемым для финансовых транзакций, необходимо скрывать сумму и стороны перевода (такие как отправитель и получатель платежа) по соображениям приватности. При предложенном подходе отправитель может сначала зашифровать содержание транзакции и вызвать услугу смарт–контракта вне цепочки. Услуга смарт–контракта вне цепочки может дешифровать содержание транзакции в TEE, исполнить транзакцию в TEE и затем возвратить результат транзакции в цепочку в форме зашифрованного текста (например, с доказательством, что транзакция исполняется в корректных логиках). После того как сеть блокчейна верифицирует возвращенный результат, результат может быть обновлен, чтобы отображать самое последнее состояние на сети блокчейна.
[0061] В некоторых реализациях предложенные методы могут обеспечивать услугу вычисления кросс–чейновых данных. В качестве примера предложенные методы могут использоваться для вычисления персональных кредитных балльных оценок. На практике, людям необходимо участвовать в различных услугах, привлекающих оценку кредита. Например, приложения банковского займа, арендная плата за недвижимость и арендная плата за машину. Каждая услуга может запускаться и поддерживаться независимой консорциумной сетью блокчейна или частной сетью блокчейна. Каждая услуга может не желать совместно использовать данные с другими услугами, и они могут зашифровывать их обработанные персональные данные в некоторых случаях. Чтобы получить исчерпывающую оценку кредита человека из разных областей, может использоваться предложенное решение. В некоторых реализациях пользователь может обеспечивать логики вычисления кредита (коды), авторизацию запроса данных (например, с использованием подписи или закрытого ключа), чтобы инициировать запрос оценки кредита с использованием частного канала. Услуга в предложенном решении запрашивает данные из нескольких цепочек и дешифрует данные в TEE, обеспечивая, что результат генерируется при корректных логиках вычисления. Результат и сертификат результата возвращаются пользователю, и пользователь может гарантировать приватность и целостность данных и логик через доказательство верификации. Пользователь может затем использовать этот результат и доказательство, чтобы предоставить сертифицированную персональную кредитную балльную оценку другим узлам в своей сети блокчейна.
[0062] В некоторых реализациях, когда пользователю необходимо исполнить транзакцию по контракту сети блокчейна, он может передать сложные вычисления в контракте на услугу вне цепочки смарт–контракта заранее и затем выгрузить и сохранить результат в сети блокчейна. В некоторых реализациях результат может непосредственно использоваться в качестве ввода в транзакцию, выполняемую в сети блокчейна, сокращая время исполнения контракта сети блокчейна и улучшая эффективность. В таких реализациях, если пользователь не желает представлять приватные контракты или протоколы безопасности, которые приводятся в исполнение в сети блокчейна, вычисление может быть произведено с использованием услуги смарт–контракта вне цепочки, и доступ к данным сети блокчейна может осуществляться надежным образом.
[0063] Фиг. 1 изображает пример среды 100, которая может использоваться, чтобы исполнять реализации описания. В некоторых примерах среда 100 обеспечивает возможность объектам участвовать в сети 102 блокчейна. Среда 100 включает в себя вычислительные устройства 106, 108 и сеть 110. В некоторых примерах сеть 110 включает в себя локальную сеть (LAN), сеть широкого доступа (WAN), Интернет или их комбинацию и соединяет веб–сайты, пользовательские устройства (например, вычислительные устройства) и внутренние (серверные) системы. В некоторых примерах доступ к сети 110 может осуществляться по проводной и/или беспроводной линии связи. В некоторых примерах сеть 110 обеспечивает возможность связи с и в пределах сети 102 блокчейна. В общем сеть 110 представляет одну или несколько сетей связи. В некоторых случаях вычислительные устройства 106, 108 могут представлять собой узлы облачной вычислительной системы (не показана), или каждое вычислительное устройство 106, 108 может представлять собой отдельную облачную вычислительную систему, включающую в себя ряд компьютеров, взаимосвязанных посредством сети и функционирующих как распределенная система обработки.
[0064] В изображенном примере вычислительные системы 106, 108 могут, каждая, включать в себя любую подходящую вычислительную систему, которая обеспечивает возможность участия в качестве узла в сети 102 блокчейна. Примеры вычислительных устройств включают в себя, без ограничения, сервер, настольный компьютер, ноутбук, планшетное вычислительное устройство и смартфон. В некоторых примерах вычислительные системы 106, 108 хостируют одну или несколько реализуемых компьютером услуг для взаимодействия с сетью 102 блокчейна. Например, вычислительная система 106 может хостировать реализуемые компьютером услуги первого объекта (например, участника A), такие как система администрирования транзакций, которую первый объект использует, чтобы администрировать свои транзакции с одним или несколькими другими объектами (например, другими участниками). Вычислительная система 108 может хостировать реализуемые компьютером услуги второго объекта (например, участника B), такие как система администрирования транзакций, которую второй объект использует, чтобы администрировать свои транзакции с одним или несколькими другими объектами (например, другими участниками). В примере на фиг. 1 сеть 102 блокчейна представлена как одноранговая сеть узлов, и вычислительные системы 106, 108 обеспечивают узлы первого объекта и второго объекта соответственно, которые участвуют в сети 102 блокчейна.
[0065] Фиг. 2 изображает пример концептуальной архитектуры 200 согласно реализациям описания. Пример концептуальной архитектуры 200 включает в себя системы 202, 204, 206 участников, которые соответствуют участнику A, участнику B и участнику C, соответственно. Каждый участник (например, пользователь, предприятие) участвует в сети 212 блокчейна, обеспеченной как одноранговая сеть, включающая в себя ряд узлов 214, по меньшей мере некоторые из которых неизменяемым образом записывают информацию в блокчейне 216. Хотя один блокчейн 216 схематично изображен в сети 212 блокчейна, обеспечено множество копий блокчейна 216, и они поддерживаются по сети 212 блокчейна, как описано здесь более подробно.
[0066] В изображенном примере каждая система 202, 204, 206 участника обеспечена посредством или от имени участника A, участника B и участника C, соответственно, и функционирует в качестве соответственного узла 214 в сети блокчейна. Как использовано в настоящем документе, узел в общем относится к индивидуальной системе (например, компьютеру, серверу), который соединен с сетью 212 блокчейна, и обеспечивает возможность соответственному участнику участвовать в сети блокчейна. В примере фиг. 2 участник соответствует каждому узлу 214. Предполагается, однако, что участник может оперировать множественными узлами 214 в сети 212 блокчейна, и/или множественные участники могут совместно использовать узел 214. В некоторых примерах системы 202, 204, 206 участников осуществляют связь с сетью 212 блокчейна или через нее с использованием протокола (например, протокола защищенной передачи гипертекста (HTTPS)), и/или с использованием удаленных вызовов процедуры (RPC).
[0067] Узлы 214 могут иметь изменяющиеся степени участия в сети 212 блокчейна. Например, некоторые узлы 214 могут участвовать в процессе консенсуса (например, в качестве узлов–майнеров, которые добавляют блоки в блокчейн 216), в то время как другие узлы 214 не участвуют в процессе консенсуса. В качестве другого примера некоторые узлы 214 хранят полную копию блокчейна 216, в то время как другие узлы 214 хранят только копии частей блокчейна 216. Например, привилегии доступа к данным могут ограничивать данные блокчейна, которые соответственный участник хранит в своей соответственной системе. В примере на фиг. 2, системы 202, 204, 206 участников хранят соответственные полные копии 216’, 216’’, 216’’’ блокчейна 216.
[0068] Блокчейн (например, блокчейн 216 на фиг. 2) составлен из цепочки блоков, каждый блок хранит данные. Примеры данных включают в себя данные транзакции, характеризующие транзакцию между двумя или более участниками. В то время как транзакции используются в настоящем документе в качестве неограничивающего примера, предполагается, что любые подходящие данные могут храниться в блокчейне (например, документы, изображения, видео, аудио). Примеры транзакций могут включать в себя, без ограничения, обмены чем–либо ценным (например, активами, продуктами, услугами и валютой). Данные транзакции неизменяемым образом сохраняются в блокчейне. То есть, данные транзакции не могут быть изменены.
[0069] Перед сохранением в блоке данные транзакции хешируются. Хеширование представляет собой процесс преобразования данных транзакции (обеспеченных как данные строки) в значение хеша фиксированной длины (также обеспеченное как данные строки). Невозможно хешировать обратно значение хеша, чтобы получить данные транзакции. Хеширование обеспечивает, что даже небольшое изменение в данных транзакции приводит к полностью отличному значению хеша. Дополнительно, и как отмечено выше, значение хеша относится к фиксированной длине. То есть, независимо от размера данных транзакции, длина значения хеша фиксирована. Хеширование включает в себя обработку данных транзакции через хеш–функцию, чтобы сгенерировать значение хеша. Примеры хеш–функции включают в себя, без ограничения, алгоритм безопасного хеширования (SHA)–256, который выводит 256–битные значения хеша.
[0070] Данные транзакции множества транзакций хешируются и хранятся в блоке. Например, обеспечены значения хешей двух транзакций, и они сами хешируются, чтобы обеспечить другой хеш. Этот процесс повторяется для всех транзакций, подлежащих сохранению в блоке, до тех пор, пока не будет обеспечено одно значение хеша. Это значение хеша называется хешем корня Меркла и хранится в заголовке блока. Изменение в любой из транзакций приведет к изменению в ее значении хеша и, в конечном счете, изменению в хеше корня Меркла.
[0071] Блоки добавляются в блокчейн через протокол консенсуса. Множество узлов в сети блокчейна участвуют в протоколе консенсуса и состязаются за добавление блока в блокчейн. Такие узлы называются майнерами (или добывающими узлами). POW, введенный выше, используется в качестве неограничивающего примера.
[0072] Добывающие узлы (узлы–майнеры) исполняют процесс консенсуса, чтобы добавить транзакции в блокчейн. Хотя множество узлов–майнеров участвуют в процессе консенсуса, только один узел–майнер может записывать блок в блокчейн. То есть, узлы–майнеры состязаются в процессе консенсуса, чтобы добавить свой блок в блокчейн. Более подробно, узел–майнер периодически собирает ожидающие транзакции из пула транзакций (например, вплоть до предопределенного лимита на число транзакций, которые могут быть включены в блок, если таковые могут быть включены). Пул транзакций включает в себя сообщения транзакции от участников в сети блокчейна. Узел–майнер конструирует блок и добавляет транзакции в блок. Перед добавлением транзакций в блок, узел–майнер проверяет, включена ли уже какая–либо из транзакций в блок блокчейна. Если транзакция уже включена в другой блок, транзакция отбрасывается.
[0073] Узел–майнер генерирует заголовок блока, хеширует все транзакции в блоке и комбинирует значение хеша попарно, чтобы сгенерировать дополнительные значения хеша, пока не будет обеспечено одно значение хеша для всех транзакций в блоке (хеш корня Меркла). Этот хеш добавляется в заголовок блока. Майнер также определяет значение хеша самого недавнего блока в блокчейне (т. е., последнего блока, добавленного в блокчейн). Узел–майнер также добавляет случайное значение и временную метку в заголовок блока. В процессе майнинга узел–майнер пытается найти значение хеша, которое удовлетворяет требуемым параметрам. Узел–майнер поддерживает изменение случайного значения до нахождения значения хеша, которое удовлетворяет требуемым параметрам.
[0074] Каждый майнер в сети блокчейна пытается найти значение хеша, которое удовлетворяет требуемым параметрам, и, таким образом, они состязаются друг с другом. В конечном счете, один из узлов–майнеров находит значение хеша, которое удовлетворяет требуемым параметрам, и извещает о нем другие узлы–майнеры в сети блокчейна. Другие узлы–майнеры верифицируют значение хеша, и, если оно определено как корректное, верифицируют каждую транзакцию в блоке, принимают блок и присоединяют блок к их копии блокчейна. Таким образом, глобальное состояние блокчейна согласуется по всем узлам–майнерам в сети блокчейна. Описанный выше процесс представляет собой протокол консенсуса POW.
[0075] Неограничивающий пример обеспечен со ссылкой на фиг. 2. В этом примере участник A желает отправить сумму денежных средств участнику B. Участник A генерирует сообщение транзакции (например, включающее в себя поля от кого, кому и ценность) и отправляет сообщение транзакции на сеть блокчейна, которая добавляет сообщение транзакции в пул транзакций. Каждый узел–майнер в сети блокчейна создает блок и берет все транзакции из пула транзакций (например, вплоть до предопределенного лимита на число транзакций, которое может быть добавлено в блок, если таковые могут быть добавлены) и добавляет транзакции в блок. При таком способе транзакция, опубликованная участником A, добавляется в блоки узлов–майнеров.
[0076] В некоторых сетях блокчейна реализуется криптография, чтобы поддерживать приватность транзакций. Например, если два узла желают сохранить транзакцию приватной, так что другие узлы в сети блокчейна не могут различить подробности транзакции, узлы могут зашифровать данные транзакции. Примеры криптографических способов включают в себя, без ограничения, симметричное шифрование и асимметричное шифрование. Симметричное шифрование относится к процессу шифрования, который использует один ключ как для шифрования (генерирования зашифрованного текста из незашифрованного текста), так и дешифрования (генерирования незашифрованного текста из зашифрованного текста). В симметричном шифровании, один и тот же ключ доступен множеству узлов, так что каждый узел может зашифровывать/расшифровывать данные транзакции.
[0077] Асимметричное шифрование использует пары ключей, каждая из которых включает в себя закрытый ключ и открытый ключ, закрытый ключ известен только соответственному узлу, и открытый ключ известен любому или всем другим узлам в сети блокчейна. Узел может использовать открытый ключ другого узла, чтобы зашифровывать данные, и зашифрованные данные могут быть дешифрованы с использованием закрытого ключа другого узла. Например, вновь со ссылкой на фиг. 2, участник A может использовать открытый ключ участника B, чтобы зашифровывать данные, и отправить зашифрованные данные участнику B. Участник B может использовать свой закрытый ключ, чтобы дешифровать зашифрованные данные (зашифрованный текст) и извлечь исходные данные (незашифрованный текст). Сообщения, зашифрованные при помощи открытого ключа узла, могут быть дешифрованы только с использованием закрытого ключа узла.
[0078] Асимметричное шифрование используется, чтобы обеспечить цифровые сигнатуры (подписи), которые обеспечивают возможность участникам в транзакции подтверждать других участников в транзакции, а также достоверность транзакции. Например, узел может цифровым образом подписывать сообщение, и другой узел может подтверждать, что сообщение было отправлено узлом, на основе цифровой подписи участника A. Цифровые подписи могут также использоваться, чтобы удостоверить, что сообщения не подвергаются взлому при передаче. Например, вновь со ссылкой на фиг. 2, участник A собирается отправить сообщение участнику B. Участник A генерирует хеш сообщения и затем, используя свой закрытый ключ, шифрует хеш, чтобы обеспечить цифровую подпись в качестве зашифрованного хеша. Участник A прилагает цифровую подпись к сообщению и отправляет сообщение с цифровой подписью участнику B. Участник B дешифрует цифровую подпись с использованием открытого ключа участника A и извлекает хеш. Участник B хеширует сообщение и сравнивает хеши. Если хеши являются одними и теми же, участник B может подтвердить, что сообщение действительно было от участника A и не было взломано.
соединить мостом» (связать)
[0079] Фиг. 3 изображает пример процесса 300 обеспечения услуги кросс–чейновых данных клиенту согласно реализациям описания. В некоторых реализациях клиент 302 представляет приложение (например, клиентское приложение) в связи с сетью блокчейна, такой как сеть 306 целевого блокчейна. Например, клиент 302 может включать в себя клиентский комплект разработки программного обеспечения (SDK) для осуществления доступа к и связи с сетью 306 блокчейна. Клиент 302 может быть установлен на устройстве (также называемом клиентским терминалом или узлом) пользователя (не показан на фиг. 3). В некоторых реализациях пользователь может участвовать в транзакции сети 306 целевого блокчейна путем инициирования транзакции с использованием клиента 302. В некоторых реализациях информация счета пользователя может храниться в сети 306 целевого блокчейна, и пользователь имеет авторизацию на выполнение транзакций в сети целевого блокчейна. Клиент 302 может осуществлять доступ и считывать данные, сохраненные в сети 306 целевого блокчейна. В некоторых реализациях, чтобы получить кросс–чейновые данные, например, данные из одной или нескольких разных сетей (например, 316, 328 и 320 на фиг. 3) блокчейна, клиенту 302 может потребоваться надежный или доверенный провайдер 312 услуги посещения данных, чтобы « интервал коммуникации между клиентом 302 сети 306 целевого блокчейна и другими различными сетями блокчейна.
[0080] В некоторых реализациях клиент 302 может инициировать приватную транзакцию по контракту сети целевого блокчейна, и такая информация транзакции доступна для просмотра только пользователю клиента 302 и, возможно, другим участникам или сторонам транзакции, но не любым другим сторонам на или вне сети блокчейна. В некоторых реализациях клиенту 302 необходимо представить результат другому объекту на или вне сети 306 целевого блокчейна.
[0081] В некоторых реализациях транзакция клиента 302 сети 316 целевого блокчейна может включать в себя различные вычислительные операции с использованием данных из сети 316 целевого блокчейна, кросс–чейновые данные (например, данные из одной или нескольких различных сетей 316, 318 или 320 блокчейна) или того и другого. В некоторых реализациях транзакция клиента 302 сети 316 целевого блокчейна может включать в себя результат, вычисленный с использованием данных из сети 316 целевого блокчейна, кросс–чейновых данных или того и другого. В некоторых реализациях транзакция может включать в себя различные вычислительные логики и протоколы. В некоторых реализациях вычисление может быть сложным и потребляет вычислительные ресурсы сети блокчейна. В некоторых реализациях транзакция может быть специфицирована в смарт–контракте, созданном клиентом 302.
[0082] Например, как показано на фиг. 3, клиент 302 может, например, с использованием клиентского SDK 304, подготовить смарт–контракт, который включает в себя самостоятельно разработанные вычислительные логики и протоколы, чтобы выполнять транзакцию на основе кросс–чейновых данных (например, данных из одной или нескольких различных сетей 316, 318 или 320 блокчейна). Клиент 302 может отправить смарт–контракт провайдеру 308 услуги смарт–контракта для исполнения. Провайдер 308 услуги смарт–контракта находится вне сети 306 целевого блокчейна, так что провайдер 308 услуги смарт–контракта может выполнять вычислительные логики и протоколы, как определено в смарт–контракте, независимо от сети 306 целевого блокчейна.
[0083] При приеме и анализе смарт–контракта провайдер 308 услуги смарт–контракта определяет, что кросс–чейновые данные необходимы для исполнения смарт–контракта. Провайдер 308 услуги смарт–контракта может отправить запрос на кросс–чейновые данные доверенному провайдеру 312 услуги посещения данных, чтобы получить данные из кросс–чейновых данных. Например, клиент 302 может пожелать выполнить вычисление “a плюс b”, где a представляет собой данные из сети 306 целевого блокчейна, и b представляет собой приватные данные из сети 316 блокчейна. В этом случае смарт–контракт, отправленный от клиента 302, содержит вычислительную логику для суммирования a и b вместе и указатель местоположений данных a и b. Провайдер 308 услуги смарт–контракта может отправить запрос доверенному провайдеру 312 услуги посещения данных, чтобы получить приватные данные b сети 316 блокчейна. В некоторых реализациях смарт–контракт может быть зашифрован, чтобы защитить приватность пользователя.
[0084] В некоторых реализациях провайдер 308 услуги смарт–контракта вне цепочки может представлять собой провайдера облачного сервера. В некоторых реализациях такой провайдер облачного сервера может представлять собой независимого провайдера услуги третьей участвующей стороны, такого как Alibaba. В некоторых реализациях множество объектов представляют собой ресурсы данных кросс–чейновых данных, и никакой из них не желает выгружать их собственные данные провайдеру услуги третьей участвующей стороны. В таких случаях эти объекты могут сами образовывать провайдера услуги смарт–контракта.
[0085] Провайдер 308 услуги смарт–контракта вне цепочки включает в себя доверенную среду исполнения вычисления (TEE) 310, которая обеспечивает безопасную среду исполнения вычисления. В некоторых реализациях TEE 310 вычисления представляет собой независимый модуль аппаратных средств, независимость которого обеспечивает безопасность данных, исполняемых внутри TEE 310. В некоторых реализациях, чтобы сконфигурировать TEE 310 для операций сети блокчейна, одно или несколько из виртуальной машины, прикладного интерфейса или операционной системы может быть запрограммировано, постоянно закодировано или иным образом сконфигурировано в TEE 310, чтобы сделать TEE 310 подходящей для исполнения вычислительной логики, определенной в смарт–контракте. В некоторых реализациях перед отправкой смарт–контракта провайдеру 308 услуги смарт–контракта вне цепочки, клиент 302 может верифицировать, что провайдер 308 услуги смарт–контракта вне цепочки включает в себя TEE 310, и TEE 310 включает в себя программы или среду исполнения, которые соответствуют клиенту 302. Например, если сеть 306 целевого блокчейна представляет собой сеть блокчейна на основе Ethereum, и SDK 304 клиента 302 представляет собой SDK клиента на основе Ethereum (например, с использованием языка Solidity), клиент 302 может верифицировать, включает ли в себя TEE 310 виртуальную машину Ethereum (EVM) (например, которая поддерживает язык Solidity) для исполнения вычислительных логик на основе Ethereum, прежде чем клиент 302 отправляет запрос на исполнение смарт–контракта провайдеру 308 услуги смарт–контракта вне цепочки.
[0086] После приема запроса на исполнение смарт–контракта, если запрос зашифрован, TEE 310 сначала дешифрует запрос, анализирует смарт–контракт и идентифицирует данные, необходимые для исполнения смарт–контракта. TEE 310 может вызвать доверенного провайдера 312 услуги посещения данных, чтобы получить данные из одного или нескольких разных источников, например, через прикладной программный интерфейс (API) 314 доверенного провайдера 312 услуги посещения данных. Доверенный провайдер 312 услуги посещения данных представляет собой доверенную сторону, которая может извлекать приватные данные одной или нескольких разных сетей блокчейна. Доверенный провайдер 312 услуги посещения данных может обеспечивать доверенные данные на TEE 310 провайдера 308 услуги смарт–контракта вне цепочки и обеспечивать приватность и точность данных.
[0087] В некоторых реализациях доверенный провайдер 312 услуги посещения данных может также содержать TEE, например, чтобы извлекать данные из корректных местоположений из одной или нескольких разных сетей блокчейна. В некоторых реализациях логика TEE, включенная в доверенный провайдер 312 услуги посещения данных, проще, чем логика TEE 310 в провайдере 308 услуги смарт–контракта вне цепочки, так как первая главным образом используется для извлечения данных и не требует выполнения вычислений на этих извлеченных данных.
[0088] В некоторых реализациях прежде чем TEE 310 вызывает API 314, двунаправленный процесс верификации выполняется между провайдером 308 услуги смарт–контракта вне цепочки и доверенным провайдером 312 услуги посещения данных. В некоторых реализациях во время процесса верификации, каждый из них доказывает, что он включил TEE для другой стороны.
[0089] В некоторых реализациях доверенный провайдер 312 услуги посещения данных может извлекать данные из одного или нескольких разных источников, включающих в себя одно или несколько из сети блокчейна, коллаборации сетей блокчейна или платформы сетей блокчейна (совместно называемых одной или несколькими сетями блокчейна). Примерные сети блокчейна показаны как Mychain 316, Hiperleger 318 и Ethereum 320 на фиг. 3. Полученные данные отправляются обратно на TEE 310, которая исполняет вычислительные логики с использованием полученных данных.
[0090] В некоторых реализациях после того как результат вычисления генерируется в вычислительной TEE 310, TEE 310 подписывает результат при помощи закрытого ключа, чтобы доказать целостность и точность результата. В некоторых реализациях подпись является доказательством, указывающим, что результат вычисления исполняется посредством TEE 310 в соответствии с вычислительной логикой, включенной в смарт–контракт, отправленный клиентом 302. По существу, результат может быть доверенным для других узлов сети 306 целевого блокчейна.
[0091] В некоторых реализациях TEE 310 возвращает результат на клиент 302. Например, клиент 302 дешифрует результат при помощи открытого ключа, соответствующего закрытому ключу TEE 310. В некоторых реализациях клиент 302 выгружает результат в сеть 306 целевого блокчейна, так что результат может использоваться, чтобы обновлять состояние клиента 302 или в качестве ввода в транзакцию сети 306 целевого блокчейна. В некоторых реализациях клиент 302 может использовать результат для целей, не связанных с сетью блокчейна, например, чтобы вычислять среднюю кредитную балльную оценку пользователя. Например, пользователь может получать информацию данных из разных цепочек (каждая представляет провайдера услуги, такого как аренда машины, банковский заем или аренда дома) и использовать данные, чтобы вычислить среднюю кредитную балльную оценку пользователя. Пользователь может представить результат продавцу без выгрузки результата в какую–либо сеть блокчейна.
[0092] В некоторых реализациях TEE 310 может возвращать результат непосредственно в целевую цепочку 306. В таких реализациях до возвращения результата сеть 306 целевого блокчейна может верифицировать, включает ли в себя провайдер 308 услуги смарт–контракта вне цепочки требуемую TEE, чтобы установить доверие между провайдером 308 услуги смарт–контракта вне цепочки и целевой цепочкой 306.
[0093] Фиг. 4 изображает пример процесса 400, который может исполняться согласно реализациям описания. В некоторых реализациях примерный процесс 400 может выполняться с использованием одной или нескольких исполняемых компьютером программ, исполняемых с использованием одного или нескольких вычислительных устройств. Для ясности представления последующее описание в общем описывает способ 400 в контексте других чертежей в настоящем описании. Например, клиент 420 может представлять собой клиента 302, провайдер 430 услуги смарт–контракта может представлять собой провайдера 308 услуги смарт–контракта вне цепочки, доверенный провайдер 440 услуги посещения данных может представлять собой доверенного провайдера 312 услуги посещения данных, сети 450 блокчейна могут представлять собой Mychain 316, HyperLeger 318 и/или Ethereum 320, и сеть 410 целевого блокчейна может представлять собой сеть 306 целевого блокчейна, как описано в отношении фиг. 3. Однако, будет понятно, что способ 400 может выполняться, например, любой подходящей системой, средой, программным обеспечением и аппаратными средствами или комбинацией систем, сред, программного обеспечения и аппаратных средств, по мере необходимости. В некоторых реализациях различные этапы способа 400 могут работать параллельно, в комбинации, в циклах или в любом порядке.
[0094] На этапе 412 клиент 420, ассоциированный с сетью 410 целевого блокчейна, генерирует запрос на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна. Запрос на оперирование кросс–чейновыми данными включает в себя логики вычисления смарт–контракта для оперирования кросс–чейновыми данными. В некоторых реализациях запрос на оперирование кросс–чейновыми данными может быть записан как смарт–контракт. Запрос на оперирование кросс–чейновыми данными может представлять собой пример запроса на исполнение смарт–контракта, как описано в отношении фиг. 3.
[0095] В некоторых реализациях логики вычисления смарт–контракта для оперирования кросс–чейновыми данными самостоятельно разрабатываются клиентом, обеспечивая пользователю свободу и гибкость в определении логик вычисления смарт–контракта, чтобы достичь целей пользователя, без ограничения вычислительными логиками, определенными сетью 410 целевого блокчейна. В таких реализациях, генерирование запроса включает в себя разработку клиентом логик вычисления смарт–контракта для оперирования кросс–чейновыми данными. В некоторых реализациях клиент включает в себя комплект разработки программного обеспечения (SDK), который позволяет пользователю писать логики вычисления смарт–контракта. В некоторых реализациях вычислительные логики могут быть написаны на языке Solidity. В некоторых реализациях запрос на оперирование кросс–чейновыми данными зашифровывается клиентом.
[0096] На этапе 414 клиент 420, ассоциированный с сетью 410 целевого блокчейна, отправляет провайдеру 430 услуги смарт–контракта запрос на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети 410 целевого блокчейна. Провайдер 430 услуги смарт–контракта включает в себя доверенную среду исполнения вычисления (TEE). Провайдер 430 услуги смарт–контракта находится вне сети 410 целевого блокчейна. В некоторых реализациях кросс–чейновые данные получают из двух или более сетей блокчейна. В некоторых реализациях провайдер 430 услуги смарт–контракта включает в себя облачный сервер.
[0097] В некоторых реализациях запрос на посещение кросс–чейновых данных представляет собой запрос на посещение данных. В таких реализациях, TEE извлекает данные и возвращает данные клиенту 420.
[0098] В некоторых реализациях помимо извлечения данных из множества сетей блокчейна, TEE работает на данных на основе логик вычисления смарт–контракта, включенных в запрос. В некоторых реализациях провайдер 430 услуги смарт–контракта может представлять собой сконфигурированную TEE, например, путем встраивания EVM в TEE, чтобы TEE надлежащим образом исполняла логики вычисления смарт–контракта, включенные в запрос.
[0099] В некоторых реализациях перед отправкой запроса на оперирование кросс–чейновыми данными, на этапе 426 клиент 420 верифицирует провайдера 430 услуги смарт–контракта, который способен исполнять логики вычисления смарт–контракта безопасным образом. В некоторых реализациях этот процесс верификации включает в себя: провайдер 430 услуги смарт–контракта удостоверяет клиенту 420, что провайдер 430 услуги смарт–контракта включает в себя TEE; и провайдер 430 услуги смарт–контракта удостоверяет клиенту 420, что TEE включает в себя виртуальную машину, выполненную с возможностью, чтобы исполнять логики вычисления смарт–контракта в запросе на оперирование кросс–чейновыми данными.
[00100] Например, TEE может представлять собой SGX Intel. В этом примере то, включает ли в себя провайдер 430 услуги смарт–контракта SGX, удостоверяется подписью и услугой верификации, обеспеченными из Intel. К тому же, чтобы удостоверить, что TEE включает в себя требуемую EVM, TEE вычисляет хеш вызванного скрипта и кодов EVM и отправляет хеш на клиент 420 для верификации. Поскольку клиент 420 также имеет набор выполненных кодов EVM, он может также вычислить значение хеша скрипта и кодов EVM, которые он имеет, и сравнить, согласованы ли два значения хеша.
[00101] В некоторых реализациях перед генерированием запроса, клиент 420 и провайдер 430 услуги смарт–контракта могут устанавливать пару ключей. Поэтому, после того, как провайдер 430 услуги смарт–контракта принимает запрос, подписанный одним из ключей, он может дешифровать запрос при помощи другого ключа из пары. На этапе 428 провайдер 430 услуги смарт–контракта дешифрует и анализирует принятый запрос. В некоторых реализациях запрос записывается в предопределенном формате данных во время разработки, и в таких случаях, запрос анализируется по каждому сегменту данных.
[00102] На этапе 435 провайдер 430 услуги смарт–контракта отправляет запрос на кросс–чейновые данные провайдеру 440 услуги посещения данных, чтобы получить кросс–чейновые данные, которые указаны в запросе на оперирование кросс–чейновыми данными. В некоторых реализациях перед отправкой запроса провайдеру 440 услуги посещения данных, на этапе 432 провайдер 430 услуги смарт–контракта верифицирует, что доверенный провайдер 440 услуги посещения данных способен обеспечивать доверенные кросс–чейновые данные одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна. В некоторых реализациях этот процесс верификации включает в себя то, что провайдер 430 услуги смарт–контракта верифицирует, что провайдер 440 услуги посещения данных включает в себя TEE.
[00103] В некоторых реализациях перед отправкой запроса провайдеру 440 услуги посещения данных, на этапе 434 провайдер 440 услуги посещения данных и провайдер 430 услуги смарт–контракта могут выполнять процесс верификации, чтобы установить доверие между обоими. В некоторых реализациях этот процесс верификации включает в себя то, что провайдер 430 услуги смарт–контракта удостоверяет провайдеру 440 услуги посещения данных, что провайдер 430 услуги смарт–контракта включает в себя TEE. В некоторых реализациях на обоих этапах 432 и 434 верифицирование/удостоверение существования TEE может выполняться тем же самым способом, как указано на этапе 426.
[00104] На этапе 436 провайдер 440 услуги посещения данных запрашивает данные из одной или нескольких сетей 450 блокчейна, отличных от сети 410 целевого блокчейна.
[00105] На этапе 438 провайдер 440 услуги посещения данных принимает данные из одной или нескольких сетей 450 блокчейна, отличных от сети 410 целевого блокчейна.
[00106] На этапе 439 провайдер 430 услуги смарт–контракта принимает кросс–чейновые данные от провайдера 440 услуги посещения данных. В некоторых реализациях кросс–чейновые данные получают из двух или более сетей блокчейна.
[00107] На этапе 441 TEE провайдера 430 услуги смарт–контракта генерирует результат с использованием принятых кросс–чейновых данных путем исполнения логик вычисления смарт–контракта. В некоторых реализациях результат генерируется посредством TEE, которая исполняет логики вычисления смарт–контракта с использованием кросс–чейновых данных. В некоторых реализациях EVM, включенная в TEE, исполняет код, чтобы выполнять вычисления с использованием вычислительных логик и принятых данных.
[00108] На этапе 442 провайдер 430 услуги смарт–контракта подписывает результат. В некоторых реализациях результат подписывается при помощи закрытого ключа. Например, TEE включает в себя закрытый ключ, которые изолирован от внешней среды и других компонентов TEE. В некоторых реализациях подпись, выполненная при помощи закрытого ключа, является доказательством того, что результат генерируется внутри TEE. В некоторых реализациях после того, как провайдер 430 услуги смарт–контракта подписывает результат, итоговый выведенный результат включает в себя: результат, сгенерированный посредством TEE, и значение хеша результата, подписанного при помощи закрытого ключа.
[00109] На этапе 443 провайдер 430 услуги смарт–контракта возвращает результат клиенту 420.
[00110] На этапе 444 клиент 420 дешифрует принятый результат. В некоторых реализациях клиент 420 дешифрует принятый результат с использованием открытого ключа, соответствующего закрытому ключу. В таких реализациях, принятый результат содержит результат, сгенерированный посредством TEE, и подписанное значение хеша этого результата. В таких реализациях, клиент 420 вычисляет значение хеша результата, сгенерированного посредством TEE, с использованием закрытого ключа и сравнивает его с подписанным значением хеша этого результата, чтобы выяснить, согласованы ли они.
[00111] На этапе 446 клиент 420 отправляет транзакцию на сеть 410 целевого блокчейна на основе принятого результата. В некоторых реализациях клиент 420 выгружает транзакцию в сеть 410 целевого блокчейна, чтобы обновить состояние клиента 420 или выполнить транзакцию на сети 410 целевого блокчейна.
[00112] В некоторых реализациях на этапе 452 провайдер 430 услуги смарт–контракта выгружает результат в сеть 410 целевого блокчейна. В некоторых реализациях перед выгрузкой результата в сеть целевого блокчейна, на этапе 448 провайдер услуги смарт–контракта удостоверяет сети целевого блокчейна, что провайдер услуги смарт–контракта включает в себя TEE. Способ, используемый здесь для верификации, может быть тем же самым, что и способ, используемый на этапе 426.
[00113] Со ссылкой на фиг. 5, фиг. 5 изображает пример диаграммы, иллюстрирующей модули устройства 500 согласно реализациям описания. Устройство 500 может представлять собой примерную реализацию провайдера услуги смарт–контракта, включающего в себя доверенную среду исполнения вычисления (TEE), причем провайдер услуги смарт–контракта находится вне сети целевого блокчейна. Устройство 500 для операции кросс–чейновых данных может использоваться в системе смарт–контракта вне цепочки на основе технологии сети блокчейна. Устройство 500 может соответствовать реализации, показанной на фиг. 3 и 4, и устройство 500 включает в себя следующее: первый приемник или блок 510 приема, сконфигурированный, чтобы принимать, от клиента, ассоциированного с сетью целевого блокчейна, запрос на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна; передатчик или блок 520 передачи, сконфигурированный, чтобы отправлять запрос на кросс–чейновые данные; второй приемник или блок 530 приема, сконфигурированный, чтобы принимать кросс–чейновые данные от провайдера услуги посещения данных; генератор или блок 540 генерирования, сконфигурированный, чтобы генерировать кросс–чейновые данные от провайдера услуги посещения данных; и пользовательский интерфейс 550, сконфигурированный, чтобы возвращать результат клиенту.
[00114] В необязательной реализации запрос на оперирование кросс–чейновыми данными включает в себя логики вычисления смарт–контракта для оперирования кросс–чейновыми данными.
[00115] В необязательной реализации логики вычисления смарт–контракта для оперирования кросс–чейновыми данными самостоятельно разрабатываются клиентом.
[00116] В необязательной реализации, устройство 500 дополнительно включает в себя следующее: первый под–блок обеспечения, сконфигурированный, чтобы обеспечивать, что TEE включает в себя виртуальную машину, выполненную с возможностью, чтобы исполнять логики вычисления смарт–контракта в запросе на оперирование кросс–чейновыми данными.
[00117] В необязательной реализации перед приемом запроса на оперирование кросс–чейновыми данными от клиента, устройство дополнительно включает в себя следующее: второй под–блок обеспечения, сконфигурированный, чтобы обеспечивать, что провайдер услуги смарт–контракта включает в себя TEE.
[00118] В необязательной реализации устройство 500 дополнительно включает в себя следующее: третий под–блок обеспечения, сконфигурированный, чтобы обеспечивать, что провайдер услуги смарт–контракта включает в себя TEE; и под–блок верификации, сконфигурированный, чтобы верифицировать, что провайдер услуги посещения данных включает в себя TEE.
[00119] В необязательной реализации устройство 500 дополнительно включает в себя следующее: под–блок выгрузки, сконфигурированный, чтобы выгружать результат в сеть целевого блокчейна.
[00120] В необязательной реализации перед выгрузкой результата в сеть целевого блокчейна, устройство 500 дополнительно включает в себя следующее: четвертый под–блок обеспечения, сконфигурированный, чтобы обеспечивать, что провайдер услуги смарт–контракта включает в себя TEE.
[00121] В необязательной реализации провайдер услуги смарт–контракта включает в себя облачный сервер.
[00122] В необязательной реализации кросс–чейновые данные получают из двух или более сетей блокчейна.
[00123] Со ссылкой на фиг. 6, фиг. 6 изображает пример диаграммы, иллюстрирующей модули другого устройства 600 согласно реализациям описания. Устройство 600 может представлять собой пример реализации клиента, ассоциированного с сетью целевого блокчейна. Устройство 600 может использоваться в системе смарт–контракта вне цепочки на основе технологии сети блокчейна. Устройство 600 может соответствовать реализации, показанной на фиг. 3 и 4, и устройство 600 включает в себя следующее: генератор или блок 610 генерирования, сконфигурированный, чтобы генерировать запрос на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна, причем запрос на оперирование кросс–чейновыми данными включает в себя логики вычисления смарт–контракта для оперирования кросс–чейновыми данными; передатчик или блок 620 передачи, сконфигурированный, чтобы отправлять запрос на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, содержащему доверенную среду исполнения вычисления (TEE), причем провайдер услуги смарт–контракта находится вне сети целевого блокчейна; и приемник или блок 630 приема, сконфигурированный, чтобы принимать результат от провайдера услуги смарт–контракта, причем результат генерируется посредством TEE с использованием кросс–чейновых данных, полученных провайдером услуги смарт–контракта.
[00124] В необязательной реализации устройство 600 дополнительно включает в себя следующее: первый под–блок передачи, сконфигурированный, чтобы отправлять принятый результат в сеть целевого блокчейна.
[00125] В необязательной реализации перед отправкой запроса на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, устройство 600 дополнительно включает в себя следующее: под–блок верификации, сконфигурированный, чтобы верифицировать, что TEE включает в себя виртуальную машину, выполненную с возможностью, чтобы исполнять логики вычисления смарт–контракта в запросе на оперирование кросс–чейновыми данными.
[00126] В необязательной реализации устройство 600 дополнительно включает в себя следующее: под–блок разработки, сконфигурированную, чтобы разрабатывать логики вычисления смарт–контракта для оперирования кросс–чейновыми данными.
[00127] В необязательной реализации, клиент включает в себя комплект разработки программного обеспечения (SDK).
[00128] В необязательной реализации результат подписывается посредством TEE с использованием закрытого ключа, устройство 600 дополнительно включает в себя следующее: под–блок дешифрования, сконфигурированный, чтобы дешифровывать принятый результат с использованием открытого ключа, соответствующего закрытому ключу.
[00129] В необязательной реализации перед отправкой запроса на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, устройство 600 дополнительно включает в себя следующее: блок шифрования, сконфигурированный, чтобы зашифровывать запрос на оперирование кросс–чейновыми данными.
[00130] В необязательной реализации кросс–чейновые данные получают из двух или более сетей блокчейна.
[00131] Система, устройство, модуль или блок, проиллюстрированные в предыдущих реализациях, могут быть реализованы с использованием компьютерного чипа или объекта или могут быть реализованы с использованием продукта, имеющего определенную функцию. Обычное устройство реализации представляет собой компьютер, и компьютер может представлять собой персональный компьютер, ноутбук, сотовый телефон, камерофон, смартфон, персональный цифровой ассистент, медиа–плеер, устройство навигации, устройство приема и отправки электронной почты, игровую консоль, планшетный компьютер, носимое устройство или любую комбинацию этих устройств.
[00132] Для процесса реализации функций и ролей каждого блока в устройстве, можно сослаться на процесс реализации соответствующих этапов в вышеописанном способе. Подробности опущены здесь для простоты.
[00133] Поскольку реализация устройства в основном соответствует реализации способа, для связанных частей можно ссылаться на связанные описания в реализации способа. Ранее описанная реализация устройства представляет собой только пример. Блоки, описанные как отдельные части, могут или не могут быть физически отделены, и части, отображаемые как блоки, могут или не могут представлять собой физические блоки, могут быть расположены в одном местоположении или могут быть распределены по ряду сетевых блоков. Некоторые или все из модулей могут быть выбраны на основе действительных требований для достижений целей решений описания. Специалист в данной области техники может понять и реализовать реализации настоящей заявки без приложения творческих усилий.
[00134] Фиг. 5 представляет собой схематичную диаграмму, иллюстрирующую внутренний функциональный модуль и структуру устройства операции кросс–чейновых данных. Устройство операции кросс–чейновых данных может представлять собой пример провайдера услуги смарт–контракта, содержащего доверенную среду исполнения вычисления (TEE). Исполнительным объектом по существу может быть электронное устройство, и электронное устройство включает в себя следующее: один или несколько процессоров; и память, сконфигурированную, чтобы хранить исполняемую инструкцию одного или нескольких процессоров.
[00135] Один или несколько процессоров сконфигурированы, чтобы принимать от клиента, ассоциированного с сетью целевого блокчейна, запрос на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна, причем провайдер услуги смарт–контракта находится вне сети целевого блокчейна; отправлять провайдеру услуги посещения данных запрос на кросс–чейновые данные; принимать кросс–чейновые данные от провайдера услуги посещения данных; генерировать, посредством TEE, результат с использованием кросс–чейновых данных; и возвращать результат клиенту.
[00136] Необязательно, запрос на оперирование кросс–чейновыми данными включает в себя логики вычисления смарт–контракта для оперирования кросс–чейновыми данными.
[00137] Необязательно, логики вычисления смарт–контракта для оперирования кросс–чейновыми данными самостоятельно разрабатываются клиентом.
[00138] Необязательно, результат генерируется посредством TEE, исполняющей логики вычисления смарт–контракта с использованием кросс–чейновых данных.
[00139] Необязательно, один или несколько процессоров сконфигурированы, чтобы удостоверять клиенту, что TEE включает в себя виртуальную машину, применяемую, чтобы исполнять логики вычисления смарт–контракта в запросе на оперирование с кросс–чейновыми данными.
[00140] Необязательно, перед приемом запроса на оперирование кросс–чейновыми данными от клиента, один или несколько процессоров сконфигурированы, чтобы удостоверять клиенту, что провайдер услуги смарт–контракта включает в себя TEE.
[00141] Необязательно, один или несколько процессоров сконфигурированы, чтобы удостоверять провайдеру услуги посещения данных, что провайдер услуги смарт–контракта включает в себя TEE; и верифицировать, что провайдер услуги посещения данных включает в себя TEE.
[00142] Необязательно, один или несколько процессоров сконфигурированы, чтобы выгружать результат в сеть целевого блокчейна.
[00143] Необязательно, перед выгрузкой результата в сеть целевого блокчейна, один или несколько процессоров сконфигурированы, чтобы удостоверять сети целевого блокчейна, что провайдер услуги смарт–контракта включает в себя TEE.
[00144] Необязательно, провайдер услуги смарт–контракта включает в себя облачный сервер.
[00145] Необязательно, результат подписывается посредством TEE с использованием закрытого ключа.
[00146] Необязательно, кросс–чейновые данные получают из двух или более сетей блокчейна.
[00147] Фиг. 6 представляет собой схематичную диаграмму, иллюстрирующую внутренний функциональный модуль и структуру другого устройства операции кросс–чейновых данных. Другое устройство операции кросс–чейновых данных может представлять собой пример клиента, ассоциированного с сетью целевого блокчейна. Исполнительным объектом по существу может быть электронное устройство, и электронное устройство включает в себя следующее: один или несколько процессоров; и память, сконфигурированную, чтобы хранить исполняемую инструкцию одного или нескольких процессоров.
[00148] Один или несколько процессоров сконфигурированы, чтобы генерировать запрос на оперирование кросс–чейновыми данными одной или нескольких сетей блокчейна, отличных от сети целевого блокчейна, причем запрос на оперирование кросс–чейновыми данными включает в себя логики вычисления смарт–контракта для оперирования кросс–чейновыми данными; отправлять запрос на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, содержащему доверенную среду исполнения вычисления (TEE), причем провайдер услуги смарт–контракта находится вне сети целевого блокчейна; и принимать результат от провайдера услуги смарт–контракта, причем результат генерируется посредством TEE с использованием кросс–чейновых данных, полученных провайдером услуги смарт–контракта.
[00149] Необязательно, один или несколько процессоров сконфигурированы, чтобы отправлять принятый результат на сеть целевого блокчейна.
[00150] Необязательно, перед отправкой запроса на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, один или несколько процессоров сконфигурированы, чтобы верифицировать, что провайдер услуги смарт–контракта включает в себя TEE.
[00151] Необязательно, один или несколько процессоров сконфигурированы, чтобы верифицировать, что TEE включает в себя виртуальную машину, выполненную с возможностью, чтобы исполнять логики вычисления смарт–контракта в запросе на оперирование кросс–чейновыми данными.
[00152] Необязательно, клиент включает в себя комплект разработки программного обеспечения (SDK).
[00153] Необязательно, результат подписывается посредством TEE с использованием закрытого ключа. Один или несколько процессоров сконфигурированы, чтобы дешифровать принятый результат с использованием открытого ключа, соответствующего закрытому ключу.
[00154] Необязательно, перед отправкой запроса на оперирование кросс–чейновыми данными провайдеру услуги смарт–контракта, один или несколько процессоров сконфигурированы, чтобы зашифровывать запрос на оперирование кросс–чейновыми данными.
[00155] Необязательно, кросс–чейновые данные получают из двух или более сетей блокчейна.
[00156] Реализации предмета и действия и операции, описанные в настоящей описания, могут быть реализованы в цифровой электронной схеме, в физически воплощенном компьютерном программном обеспечении или прошивке, в компьютерных аппаратных средствах, включая структуры, раскрытые в настоящей описания, и их структурные эквиваленты, или в комбинациях одного или нескольких из них. Реализации предмета, описанные в настоящей описания, могут быть реализованы как одна или несколько компьютерных программ, например, один или несколько модулей компьютерных программных инструкций, закодированных на носителе компьютерной программы, для исполнения посредством устройства обработки данных или управления его работой. Носитель может представлять собой физический не–временный компьютерный носитель хранения. Альтернативно или дополнительно, носитель может представлять собой искусственно сгенерированный распространяющийся сигнал, например, генерируемый машиной электрический, оптический или электромагнитный сигнал, который генерируется, чтобы кодировать информацию для передачи на подходящее устройство приемника для исполнения устройством обработки данных. Компьютерный носитель хранения может представлять собой или быть частью считываемого машиной устройства хранения, считываемой машиной субстрата хранения, устройства памяти произвольного или последовательного доступа или комбинации одного или нескольких из них. Компьютерный носитель хранения не является распространяющимся сигналом.
[00157] Термин “устройство обработки данных” охватывает все виды устройств, приборов и машин для обработки данных, включая в качестве примера программируемый процессор, компьютер или множество процессоров или компьютеров. Устройство обработки данных может включать в себя специализированную логическую схему, например, FPGA (программируемую вентильную матрицу), ASIC (специализированную интегральную схему) или GPU (графический процессор). Устройство может также включать в себя, в дополнение к аппаратным средствам, код, который создает среду исполнения для компьютерных программ, например, код, который составляет прошивку процессора, стек протоколов, систему администрирования базы данных, операционную систему или комбинацию одного или нескольких из них.
[00158] Компьютерная программа, которая может также упоминаться или описываться как программа, программное обеспечение, приложение программного обеспечения, приложение, модуль, модуль программного обеспечения, механизм, скрипт или код, может быть написана на языке программирования любой формы, включая компилированные или интерпретируемые языки или декларативные или процедурные языки; и она может быть развернута в любой форме, включая отдельную программу или модуль, компонент, механизм, подпрограмму или другой блок, подходящий для исполнения в вычислительной среде, причем среда может включать в себя один или несколько компьютеров, взаимно соединенных посредством сети передачи данных в одном или нескольких местоположениях.
[00159] Компьютерная программа может, но не обязательно, соответствовать файлу в файловой системе. Компьютерная программа может храниться в части файла, который хранит другие программы или данные, например, один или несколько скриптов, сохраненных в документе на языке разметки, в одном файле, выделенном для рассматриваемой программы, или во множестве координированных файлов, например, файлов, которые хранят один или несколько модулей, подпрограмм или частей кода.
[00160] Процессы и логические последовательности, описанные в настоящем описании, могут выполняться одним или несколькими компьютерами, исполняющими одну или несколько компьютерных программ для выполнения операций путем оперирования данными ввода и генерирования выходных данных. Процессы и логические последовательности могут также выполняться специализированной логической схемой, например, FPGA, ASIC или GPU или комбинацией специализированной логической схемы и одного или нескольких запрограммированных компьютеров.
[00161] Компьютеры, подходящие для исполнения компьютерной программы, могут быть основаны на универсальных или специализированных микропроцессорах или их обоих или любом другом виде центрального процессора. В общем центральный процессор будет принимать инструкции и данные из постоянной памяти или памяти с произвольным доступом или их обеих. Элементы компьютера могут включать в себя центральный процессор для исполнения инструкций и одно или несколько устройств памяти для хранения инструкций и данных. Центральный процессор и память могут быть дополняться специализированной логической схемой или встраиваться в нее.
[00162] В общем, компьютер будет подсоединен к по меньшей мере одному не–временному считываемому компьютером носителю хранения (также называемым считываемой компьютером памятью). Носитель хранения, подсоединенный к компьютеру, может представлять собой внутренний компонент компьютера (например, встроенный накопитель на жестком диске) или внешний компонент (например, накопитель на жестком диске универсальной последовательной шины (USB) или систему хранения, доступную по сети). Примеры носителей хранения могут включать в себя, например, магнитные, магнитно–оптические или оптические диски, твердотельные накопители, ресурсы сетевого хранения, такие как облачные системы хранения, или другие типы носителей хранения. Однако компьютеру не требуется иметь такие устройства. Более того, компьютер может быть встроен в другое устройство, например, мобильный телефон, персональный цифровой ассистент (PDA), мобильный аудио– или видео–плеер, игровую консоль, приемник глобальной системы позиционирования (GPS) или портативное устройство хранения, например, флэш–накопитель универсальной последовательной шины (USB), в качестве лишь некоторых примеров.
[00163] Чтобы обеспечить взаимодействие с пользователем, реализации сущности изобретения, описанного в настоящем описании, могут быть осуществлены или сконфигурированы, чтобы осуществлять связь с компьютером, имеющим устройство отображения, например монитор на LCD (жидкокристаллическом дисплее) для отображения информации пользователю, и устройство ввода, при помощи которого пользователь может обеспечивать ввод в компьютер, например клавиатуру или указательное устройство, например мышь, трекбол или панель касания. Другие виды устройств также могут использоваться, чтобы обеспечивать взаимодействие с пользователем; например, обратная связь, обеспечиваемая пользователю, может представлять собой любую форму воспринимаемой обратной связи, например, визуальную обратную связь, прослушиваемую обратную связь или тактильную обратную связь; и ввод от пользователя может приниматься в любой форме, включая акустический, речевой или тактильный ввод. Кроме того, компьютер может взаимодействовать с пользователем путем отправки документов на и приема документов от устройства, которое используется пользователем; например, путем отправки веб–страниц на веб–браузер на устройстве пользователя в ответ на запросы, принятые от веб–браузера, или путем взаимодействия с приложением, работающим на устройстве пользователя, например смартфоне или электронном планшете. Также, компьютер может взаимодействовать с пользователем путем отправки текстовых сообщений или других видов сообщения на персональное устройство, например, смартфон, который запускает приложение обмена сообщениями, и приема ответных сообщений от пользователя.
[00164] Настоящее описание использует термин “сконфигурированный, чтобы” в связи с системами, устройством и компонентами компьютерной программы. Для системы из одного или нескольких компьютеров, быть сконфигурированным, чтобы выполнять конкретные операции или действия, означает, что система имеет установленное на ней программное обеспечение, прошивку, аппаратные средства или комбинацию из них, которые при работе побуждают систему выполнять операции или действия. Для одной или нескольких компьютерных программ, быть сконфигурированной, чтобы выполнять конкретные операции или действия, означает, что одна или несколько программ включают в себя инструкции, которые, при исполнении устройством обработки данных, побуждают устройство выполнять операции или действия. Для специализированной логической схемы быть сконфигурированной, чтобы выполнять конкретные операции или действия, означает, что схема имеет электронную логику, которая выполняет операции или действия.
[00165] Хотя настоящее описание содержит множество конкретных подробностей реализации, они должны пониматься не как ограничения объема того, что заявлено, что определяется самой формулой изобретения, а как описания признаков, которые могут быть специфическими для конкретных реализаций. Некоторые признаки, которые описаны в настоящем описании в контексте отдельных реализаций, могут также быть реализованы в комбинации в одной реализации. Напротив, различные признаки, которые описаны в контексте одной реализации, могут также быть реализованы во множестве реализаций отдельно или в любой подходящей подкомбинации. Более того, хотя признаки могут быть описаны выше как действующие в определенных комбинациях и даже первоначально могут быть заявлены как таковые, один или несколько признаков из заявленной комбинации могут в некоторых случаях быть исключены из комбинации, и пункт формулы изобретения может быть направлен на подкомбинацию или вариант подкомбинации.
[00166] Аналогично, хотя операции изображены на чертежах и приведены в пунктах формулы изобретения в конкретном порядке, это не должно пониматься как требование, что такие операции должны выполняться в конкретном показанном порядке или в последовательном порядке, или что все проиллюстрированные операции должны выполняться, чтобы достичь желательных результатов. При определенных условиях многозадачность и параллельная обработка могут быть предпочтительными. Более того, разделение на различные системные модули и компоненты в реализациях, описанных выше, не должно пониматься как требование такого разделения во всех реализациях, и следует понимать, что описанные программные компоненты и системы могут, в общем, быть интегрированы вместе в один программный продукт или скомпонованы в несколько программных продуктов.
[00167] Были описаны конкретные реализации заявленного предмета. Другие реализации находятся в пределах объема следующей формулы изобретения. Например, действия, перечисленные в формуле изобретения, могут выполняться в другом порядке и все еще достигать желательных результатов. В качестве одного примера, процессы, изображенные на приложенных чертежах, не обязательно требуют конкретного показанного порядка или последовательного порядка для достижения желательных результатов. В некоторых случаях, многозадачность и параллельная обработка могут быть предпочтительными.