ПЛАТФОРМА "ФУНКЦИЯ-КАК-УСЛУГА" (FaaS) В БЛОКЧЕЙН СЕТЯХ
"FUNCTION-AS-SERVICE" PLATFORM (FAAS) IN HOUSING NETWORK

Уровень техники
[0001] Системы распределенных реестров (Distributed Ledger Systems - DLS), которые также могут упоминаться как консенсусные сети и/или блокчейн сети, позволяют участвующим объектам защищенно и неизменно сохранять данные. DLS обычно упоминаются как блокчейн сети независимо от конкретных вариантов использования (например, криптовалют). Примерные типы блокчейн сетей могут включать в себя открытые блокчейн сети, закрытые блокчейн сети и консорциальные блокчейн сети. Открытая блокчейн сеть является открытой для всех объектов в том, чтобы использовать DLS и участвовать в консенсусном процессе. Закрытая блокчейн сеть предоставляется для конкретного объекта, который централизованно управляет разрешениями на считывание и запись. Консорциальная блокчейн сеть предоставляется для выбранной группы объектов, которые управляют консенсусным процессом, и включает в себя уровень управления доступом.
[0002] Смарт-контракты могут выполняться в блокчейн сетях для того, чтобы выполнять одну или более функций. Смарт-контракт может описываться как монолитное приложение, которое включает в себя кодированные функции. В качестве монолитного приложения, могут требоваться относительно надежные операции разработки для того, чтобы поддерживать смарт-контракт (например, кодирование каждой функции, обновления функций, приводящие к обновлениям всего смарт-контракта).
Сущность изобретения
[0003] Реализации настоящего описания изобретения включают в себя выполняемые компьютером способы для инициализации приложений в блокчейн сетях. Более конкретно, реализации настоящего описания изобретения направлены на платформу "функция-как-услуга" (function-as-a-service - FaaS), чтобы инициализировать функции в приложения, выполняемые в блокчейн сетях.
[0004] В некоторых реализациях, действия включают в себя прием, из смарт-контракта и посредством первого контроллера функции, выполняемого в блокчейн сети, вызова первой функции, чтобы выполнять первую функцию, причем вызов первой функции включает в себя данные для выполнения первой функции, передачу, посредством первого контроллера функции, данных вызова первой функции в первый компонент функции, причем первый компонент функции выполняет первую функцию на основе данных вызова первой функции, прием, посредством первого контроллера функции, результата первой функции из первого компонента функции и предоставление, посредством первого контроллера функции, результата первой функции в смарт-контракт. Другие реализации включают в себя соответствующие системы, оборудование и компьютерные программы, выполненные с возможностью выполнять действия способов, кодированных на компьютерных устройствах хранения данных.
[0005] Эти и другие реализации необязательно могут включать в себя один или более следующих признаков: вызов первой функции дополнительно включает в себя адрес первой функции и идентификатор версии первой функции; идентификатор версии является нулем, что указывает то, что последняя версия первой функции должна выполняться; действия дополнительно включают в себя обновление, посредством первого контроллера функции, статистики, ассоциированной с версией первой функции, которая выполнена в ответ на вызов первой функции; статистика указывает число раз, которое каждая версия первой функции выполнена; действия дополнительно включают в себя: прием, из смарт-контракта и посредством выполнения второго контроллера функции в блокчейн сети, вызова второй функции, чтобы выполнять вторую функцию, причем вызов второй функции включает в себя данные для выполнения второй функции, при этом вторая функция отличается от первой функции, и при этом второй контроллер функции отличается от первого контроллера функции, передачу, посредством второго контроллера функции, данных вызова второй функции во второй компонент функции, причем второй компонент функции выполняет вторую функцию на основе данных вызова второй функции, при этом второй компонент функции отличается от первого компонента функции, прием, посредством второго контроллера функции, результата второй функции из второго компонента функции и предоставление, посредством второго контроллера функции, результата второй функции в смарт-контракт; первая функция и вторая функция предоставляются посредством различных поставщиков; и смарт-контракт выполняет транзакцию по меньшей мере частично на основе результатов функций, причем транзакция записывается в блокчейне блокчейн сети.
[0006] Настоящее описание изобретения также предоставляет один или более энергонезависимых считываемых компьютером носителей хранения данных, соединенных с одним или более процессоров и имеющих сохраненные инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют упомянутым одному или более процессорам выполнять операции в соответствии с реализациями способов, предусмотренных в данном документе.
[0007] Настоящее описание изобретения дополнительно предоставляет систему для реализации способов, предусмотренных в настоящем документе. Система включает в себя один или более процессоров и считываемый компьютером носитель хранения данных, соединенный с одним или более процессоров, имеющий сохраненные инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют упомянутым одному или более процессорам выполнять операции в соответствии с реализациями способов, предусмотренных в данном документе.
[0008] Следует принимать во внимание, что способы в соответствии с настоящим описанием изобретения могут включать в себя любую комбинацию аспектов и признаков, описанных в данном документе. Таким образом, способы в соответствии с настоящим описанием изобретения не ограничены комбинациями аспектов и признаков, конкретно описанными в данном документе, но также включают в себя любую предоставленную комбинацию аспектов и признаков.
[0009] Подробности одной или более реализаций настоящего описания изобретения изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки и преимущества настоящего описания изобретения должны становиться очевидными из описания и чертежей, а также из формулы изобретения.
Описание чертежей
[0010] Фиг. 1 иллюстрирует примерное окружение, которое может использоваться для того, чтобы выполнять реализации настоящего описания изобретения.
[0011] Фиг. 2 иллюстрирует примерную концептуальную архитектуру в соответствии с реализациями настоящего описания изобретения.
[0012] Фиг. 3 иллюстрирует примерную концептуальную архитектуру для платформы "функция-как-услуга" (FaaS) в соответствии с реализациями настоящего описания изобретения.
[0013] Фиг. 4 иллюстрирует общую диаграмму, показывающую связь между компонентами в соответствии с реализациями настоящего описания изобретения.
[0014] Фиг. 5 иллюстрирует примерный процесс, который может выполняться в соответствии с реализациями настоящего описания изобретения.
[0015] Аналогичные ссылки с номерами на различных чертежах указывают аналогичные элементы.
Подробное описание изобретения
[0016] Реализации настоящего описания изобретения включают в себя выполняемые компьютером способы для инициализации приложений в блокчейн сетях. Более конкретно, реализации настоящего описания изобретения направлены на платформу "функция-как-услуга" (FaaS), чтобы инициализировать функции в приложения, выполняемые в блокчейн сетях. В некоторых реализациях, действия включают в себя прием, из смарт-контракта и посредством выполнения контроллера функции в блокчейн сети, вызова функции, чтобы выполнять функцию, причем вызов функции включает в себя данные для выполнения функции, передачу, посредством контроллера функции, данных вызова функции в компонент функции, причем компонент функции выполняет функцию на основе данных вызова функции, прием, посредством контроллера функции, результата функции из компонента функции и предоставление, посредством контроллера функции, результата функции в смарт-контракт.
[0017] Чтобы предоставлять дополнительный контекст для реализаций настоящего описания изобретения, и как представлено выше, системы распределенных реестров (DLS), которые также могут упоминаться как консенсусные сети (например, состоящие из узлов между одноранговыми узлами) и блокчейн сети, позволяют участвующим объектам защищенно и неизменно проводить транзакции и сохранять данные. Хотя термин "блокчейн", в общем, ассоциирован с криптовалютной сетью биткоинов, блокчейн используется в данном документе, чтобы, в общем, означать DLS независимо от конкретных вариантов использования. Как представлено выше, блокчейн сеть может предоставляться в качестве открытой блокчейн сети, закрытой блокчейн сети или консорциальной блокчейн сети.
[0018] В открытой блокчейн сети, консенсусный процесс управляется посредством узлов консенсусной сети. Например, сотни, тысячи, даже миллионы объектов могут взаимодействовать в открытой блокчейн сети, каждый из которых управляет по меньшей мере одним узлом в открытой блокчейн сети. Соответственно, открытая блокчейн сеть может считаться открытой сетью относительно участвующих объектов. В некоторых примерах, большинство объектов (узлов) должны подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в блокчейн (распределенный реестр) блокчейн сети. Примерная открытая блокчейн сеть включает в себя сеть биткоинов, которая представляет собой платежную сеть между одноранговыми узлами. Сеть биткоинов использует распределенный реестр, называемый "блокчейн". Тем не менее, как отмечено выше, термин "блокчейн" используется для того, чтобы, в общем, означать распределенные реестры без конкретной ссылки на сеть биткоинов.
[0019] В общем, открытая блокчейн сеть поддерживает открытые транзакции. Открытая транзакция совместно используется со всеми узлами в открытой блокчейн сети и сохраняется в глобальный блокчейн. Глобальный блокчейн представляет собой блокчейн, который реплицируется по всем узлам. Таким образом, все узлы находятся в идеальном консенсусе состояния относительно глобального блокчейна. Чтобы достигать консенсуса (например, соглашения с добавлением блока в блокчейн), консенсусный протокол реализуется в открытой блокчейн сети. Примерный консенсусный протокол включает в себя, без ограничения, доказательство выполнения работы (proof-of-work - POW), реализованное в сети биткоинов.
[0020] В общем, закрытая блокчейн сеть предоставляется для конкретного объекта, который централизованно управляет разрешениями на считывание и запись. Объект управляет тем, какие узлы имеют возможность участвовать в блокчейн сети. Следовательно, закрытые блокчейн сети, в общем, упоминаются в качестве сетей с контролируемым доступом, которые устанавливают ограничения касательно того, кому разрешается участвовать в сети, и касательно их уровня участия (например, только в определенных транзакциях). Различные типы механизмов управления доступом могут использоваться (например, существующие участники голосуют по добавлению новых объектов, контролирующий орган может управлять допуском).
[0021] В общем, консорциальная блокчейн сеть является закрытой между участвующими объектами. В консорциальной блокчейн сети, консенсусный процесс управляется посредством авторизованного набора узлов, причем один или более узлов управляются посредством соответствующего объекта (например, финансового учреждения, страховой компании). Например, консорциум из десяти (10) объектов (например, финансовых учреждений, страховых компаний) может управлять консорциальной блокчейн сетью, каждый из которых управляет по меньшей мере одним узлом в консорциальной блокчейн сети. Соответственно, консорциальная блокчейн сеть может считаться закрытой сетью относительно участвующих объектов. В некоторых примерах, каждый объект (узел) должен подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в блокчейн. В некоторых примерах по меньшей мере поднабор объектов (узлов) (например, по меньшей мере 7 объектов) должен подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в блокчейн.
[0022] Реализации настоящего описания изобретения подробнее описываются в данном документе со ссылкой на открытую блокчейн сеть, которая является открытой между участвующими объектами. Тем не менее, предполагается, что реализации настоящего описания изобретения могут быть реализованы в любом соответствующем типе блокчейн сети. Хотя технологии, описанные в настоящем описании изобретения, указываются как релевантные для открытых блокчейн сетей, технологии также могут использоваться, с/без изменений, в других типах блокчейн сетей, включающих в себя закрытые блокчейн сети и консорциальные блокчейн сети.
[0023] В дальнейшем подробнее описываются реализации настоящего описания изобретения в данном документе с учетом вышеизложенного контекста. Более конкретно, и как представлено выше, реализации настоящего описания изобретения направлены на FaaS-платформу, чтобы инициализировать функции в приложения, выполняемые в блокчейн сетях. Таким образом, разработчики могут разрабатывать приложения (например, смарт-контракты), которые являются относительно несложными (например, с точки зрения кодирования) и могут вызывать одну или более функций через FaaS-платформу настоящего описания изобретения.
[0024] Чтобы предоставлять дополнительный контекст для реализаций настоящего описания изобретения, в блокчейн сетях, приложения могут разрабатываться, тестироваться и развертываться для выполнения в блокчейн сети. Примерное приложение может включать в себя, без ограничения, смарт-контракт. Смарт-контракт может описываться как цифровые представления законных контрактов реального мира, имеющих контрактные условия, затрагивающие различные стороны. Смарт-контракт реализуется, сохраняется, обновляется (по мере необходимости) и выполняется, в примерном контексте, в консорциальной блокчейн сети. Стороны контракта, ассоциированные со смарт-контрактом (например, покупатели и продавцы), представляются как узлы в консорциальной блокчейн сети.
[0025] В некоторых примерах, смарт-контракт может сохранять данные, которые могут использоваться для того, чтобы записывать информацию, факты, ассоциирования, балансы и любую другую информацию, требуемую для того, чтобы реализовывать логику для выполнения договора. Смарт-контракты могут описываться как исполняемая компьютером программа, состоящая из функций, причем экземпляр смарт-контракта может создаваться, и функции могут активироваться для выполнения их логики.
[0026] В технических терминах, смарт-контракты могут реализовываться на основе объектов и объектно-ориентированных классов. Например, термины и компоненты смарт-контракта могут представляться как объекты, которые обрабатываются посредством приложений, реализующих смарт-контракты. Смарт-контракт (или объект в смарт-контракте) может вызывать другой смарт-контракт (или объект в идентичном смарт-контракте), идентично другим объектно-ориентированным объектам. Вызовы, которые выполняются посредством объекта, например, могут представлять собой вызов для того, чтобы создавать, обновлять, удалять, распространять или обмениваться данными с объектами другого класса. Вызовы между объектами могут реализовываться как функции, методы, интерфейсы прикладного программирования (API) или другие вызывающие механизмы. Например, первый объект может вызывать функцию, чтобы создавать второй объект.
[0027] Интегрированная среда разработки (IDE) может использоваться для того, чтобы разрабатывать, тестировать и развертывать приложения, такие как смарт-контракты, в блокчейн сетях. Примерная IDE включает в себя Remix IDE, предоставленную компанией Ethereum Foundation, Цуг, Швейцария, для создания смарт-контрактов в Solidity.
[0028] Фиг. 1 иллюстрирует примерное окружение 100, которое может использоваться для того, чтобы выполнять реализации настоящего описания изобретения. В некоторых примерах, примерное окружение 100 обеспечивает возможность объектам участвовать в закрытой блокчейн сети 102. Примерное окружение 100 включает в себя вычислительные устройства 106, 108 и сеть 110. В некоторых примерах, сеть 110 включает в себя локальную вычислительную сеть (LAN), глобальную вычислительную сеть (WAN), Интернет либо комбинацию вышеозначенного и соединяет веб-узлы, пользовательские устройства (например, вычислительные устройства) и внутренние интерфейсные системы. В некоторых примерах, к сети 110 может осуществляться доступ по линии проводной и/или беспроводной связи.
[0029] В проиллюстрированном примере, вычислительные системы 106, 108 могут включать в себя любую соответствующую вычислительную систему, которая обеспечивает участие в качестве узла в закрытой блокчейн сети 102. Примерные вычислительные устройства включают в себя, без ограничения, сервер, настольный компьютер, переносной компьютер, планшетное вычислительное устройство и смартфон. В некоторых примерах, вычислительные системы 106, 108 размещают одну или более выполняемых компьютером услуг для взаимодействия с закрытой блокчейн сетью 102. Например, вычислительная система 106 может размещать выполняемые компьютером услуги первого объекта (например, пользователя A), к примеру, система управления транзакциями, которую использует первый объект для того, чтобы управлять своими транзакциями с одним или более других объектов (например, других пользователей). Вычислительная система 108 может размещать выполняемые компьютером услуги второго объекта (например, пользователя B), к примеру, система управления транзакциями, которую использует второй объект для того, чтобы управлять своими транзакциями с одним или более других объектов (например, других пользователей). В примере по фиг. 1, закрытая блокчейн сеть 102 представляется как сеть с одноранговыми узлами узлов, и вычислительные системы 106, 108 предоставляют узлы первого объекта и второго объекта, соответственно, которые участвуют в закрытой блокчейн сети 102.
[0030] Фиг. 2 иллюстрирует примерную концептуальную архитектуру 200 в соответствии с реализациями настоящего описания изобретения. Примерная концептуальная архитектура 200 включает в себя уровень 202 объектов, уровень 204 предоставления размещаемых услуг и уровень 206 блокчейн сети. В проиллюстрированном примере, уровень 202 объектов включает в себя три объекта, объект_1 (E1), объект_2 (E2) и объект_3 (E3), причем каждый объект имеет соответствующую систему 208 управления транзакциями.
[0031] В проиллюстрированном примере, уровень 204 предоставления размещаемых услуг включает в себя интерфейсы 210 для каждой системы 208 управления транзакциями. В некоторых примерах, соответствующая система 208 управления транзакциями обменивается данными с соответствующим интерфейсом 210 по сети (например, по сети 110 по фиг. 1) с использованием протокола (например, протокола защищенной передачи гипертекста (HTTPS)). В некоторых примерах, каждый интерфейс 210 предоставляет соединение связи между соответствующей системой 208 управления транзакциями и уровнем 206 блокчейн сети. Более конкретно, интерфейс 210 обменивается данными с блокчейн сетью 212 уровня 206 блокчейн сети. В некоторых примерах, связь между интерфейсом 210 и уровнем 206 блокчейн сети проводится с использованием удаленных вызовов процедур (RPC). В некоторых примерах, интерфейсы 210 "размещают" узлы блокчейн сети для соответствующих систем 208 управления транзакциями. Например, интерфейсы 210 предоставляют интерфейс прикладного программирования (API) для доступа к блокчейн сети 212.
[0032] Как описано в данном документе, блокчейн сеть 212 предоставляется в качестве сети с одноранговыми узлами, включающей в себя множество узлов 214, которые неизменно записывают информацию в блокчейн 216. Хотя один блокчейн 216 схематично проиллюстрирован, несколько копий блокчейна 216 предоставляются и поддерживаются через блокчейн сеть 212. Например, каждый узел 214 сохраняет копию блокчейна. В некоторых реализациях, блокчейн 216 сохраняет информацию, ассоциированную с транзакциями, которые выполняются между двумя или более объектов, участвующих в закрытой блокчейн сети.
[0033] Фиг. 3 иллюстрирует примерную концептуальную архитектуру для FaaS-платформы 300 в соответствии с реализациями настоящего описания изобретения. Как подробнее описано в данном документе, FaaS-платформа 300 используется для того, чтобы инициализировать функции, которые поддерживают выполнение смарт-контрактов, таких как смарт-контракт 302 по фиг. 3. В некоторых примерах, смарт-контракт 302 может выполнять транзакции, которые записываются в блоках 304 блокчейна.
[0034] В примере по фиг. 3, FaaS-платформа 300 включает в себя инициатор 306 транзакций, который, например, может представлять собой узел, который инициирует действие, указывающее выполнение смарт-контракта 302. Например, инициатор 306 транзакций может отправлять запрос 308, чтобы вызывать выполнение смарт-контракта 302. В некоторых примерах, смарт-контракт 302 принимает запрос и выполняет логику, программируемую в смарт-контракте 302. В соответствии с реализациями настоящего описания изобретения, логика может включать в себя вызов в одно или более приложений 312 функции FaaS-платформы 300.
[0035] В некоторых примерах, каждое из приложений 312 функции предоставляется посредством соответствующего поставщика 310 функции. Например, поставщик 310 функции может включать в себя объект (например, разработчика), который разрабатывает приложение функции, чтобы принимать ввод, выполнять функцию и предоставлять вывод. В некоторых примерах, каждое приложение 312 функции включает в себя контроллер 314 функции и одну или более функций 316, 318, 320 (код функции). Поставщик 310 функции может предоставлять начальную версию функции (например, функции 316) и может обновлять функцию, чтобы предоставлять последующие версии (например, функции 318, 320).
[0036] В некоторых реализациях, смарт-контракт 302 выполняется до точки, в которой он вызывает функцию. Смарт-контракт 302 отправляет в соответствующее приложение 312 функции вызов функции, который включает в себя ввод, который должен обрабатываться посредством приложения 312 функции. Вызов функции принимается посредством соответствующего контроллера 314 функции. Контроллер 314 функции маршрутизирует ввод в соответствующую версию функции 316, 318, 320. Функция 316, 318, 320, которая принимает ввод, обрабатывает ввод, чтобы предоставлять вывод, который отправляется обратно в смарт-контракт 302.
[0037] В некоторых реализациях, приложения функции, которые предоставляются посредством FaaS-платформы 300, сохраняются в блокчейне и регистрируются в FaaS-платформе 300. В некоторых примерах, регистрация раскрывает информацию функций пользователям (например, разработчикам смарт-контрактов). Примерная информация может включать в себя, без ограничения, идентификатор поставщика 310, описание функции, версии функции и статистику функции (например, число раз, когда каждая версия вызвана). Пользователи могут использовать информацию, например, в качестве индикатора относительно доверительного уровня, ассоциированного с каждой функцией. Например, пользователь, разрабатывающий смарт-контракт, может анализировать реестр, чтобы идентифицировать функцию, которая необходима, и может программировать смарт-контракт, чтобы вызывать функцию.
[0038] Ниже приводится неограничивающий пример, чтобы иллюстрировать проектирование и использование FaaS-платформы в соответствии с реализациями настоящего описания изобретения. Один или более поставщиков функции, также называемых "FaaS-поставщиками" (например, поставщиков 310 функции по фиг. 3), предоставляют одну или более исполняемых компьютером функций. Например, поставщик функции может разрабатывать исполняемый компьютером код для выполнения функции, причем функция принимает ввод, обрабатывает ввод и предоставляет вывод. Примерная функция может включать в себя, без ограничения, функцию контрольной суммы Ривеста-Шамира-Аделмана (RSA), которая принимает, в качестве ввода, сообщение произвольной длины и формирует контрольную сумму в качестве вывода (например, 128-битовую (16-октетную) контрольную сумму). В некоторых примерах, функция представляет собой чистую функцию. Таким образом, функция не имеет информацию состояния, повторяющиеся вызовы и/или вложенные вызовы.
[0039] В некоторых реализациях, контроллер функции (также называемый "FaaS-контроллером") предоставляется для функции (например, контроллер 314 функции по фиг. 3). В некоторых примерах, контроллер функции и функция вместе формируют приложение функции, также называемое "FaaS-приложением" (например, приложение 312 функции по фиг. 3). В некоторых примерах, контроллер функции обрабатывает статистику и хранение для версий функции, а также информацию вызовов. Нижеприведенная таблица 1 иллюстрирует примерную информацию, сохраненную посредством контроллера функции:
Название
Тип переменной
Смысл
Latest Version (Последняя версия)
Строка latestVersion
Последняя версия для версии и адреса кода функции (например,23d61f4a88f90be1290c0eeab344992 e1a2e8f6d,1.0.0), где 1.0.0 является версией.
Version Mapping(Отображение версии)
Map<String, String>versionMap
Key является адресом смарт-контракта, и Value является версией адреса кода функции. Когда существует пара ключ/значение "с преобразованием ключа в значение", вызов смарт-контракта из ключа использует указываемую версию кода функции, иначе версия по умолчанию вызывает последнюю версию.
Calling a Statistical Map (Вызов статистической карты)
Map<String, Integer>statistics
Key является версией, Value является числом вызовов, и каждый вызов инициируется посредством единицы.
Таблица 1: Примерная информация
[0040] В некоторых реализациях, когда функция готова к коммерческому использованию, поставщик функции отправляет функцию (в качестве исполняемого компьютером кода функции) в блокчейн сеть, и коду функции назначается уникальный адрес в блокчейн сети (например, 23d61f4a88f90be1290c0eeab344992e1a2e8f6d). В некоторых примерах, контроллер функции также отправляется в блокчейн сеть, и ему назначается собственный уникальный адрес в блокчейн сети. В некоторых примерах, когда функция в первый раз отправляется в блокчейн сеть, значение последней версии (например, latestVersion) задается равным значению по умолчанию (например, 1.0.0). В некоторых примерах, функция записывается в карту версий на основе значения адреса и версии (например, 23d61f4a88f90be1290c0eeab344992e1a2e8f6d, 1.0.0), и статистика для функции является пустой.
[0041] В некоторых реализациях, могут создаваться один или более смарт-контрактов (например, смарт-контракт 302), которые вызывают одну или более функций FaaS-платформы. В некоторых примерах, пользователь, создающий смарт-контракт, может просматривать библиотеку доступных функций с релевантной информацией функции (например, описанием, адресом, версией, статистикой) и может программировать смарт-контракт, чтобы вызывать одну или более функций. Например, смарт-контракт может включать в себя логику, которая вызывает примерную функцию контрольной RSA-суммы, представленную выше. В некоторых примерах, смарт-контракт может включать в себя идентификатор версии, указывающий версию (например, 1.0.0) функции, которая должна вызываться. В некоторых примерах, идентификатор версии может быть пустым (или нулем), что указывает то, что последняя версия функции должна вызываться. В некоторых реализациях, после того, как смарт-контракт закончен и готов к использованию, смарт-контракт отправляется в блокчейн сеть, и смарт-контракту назначается уникальный адрес в блокчейн сети (например, 39a1509440f8c549dfd6e995def14b1ce3c98e5d).
[0042] В некоторых реализациях, чтобы предотвращать влияние последующей модернизации (обновления) кода функции из влияющей логики выполнения смарт-контракта, карта версий (versionMap) контроллера функции обновляется. Если продолжать с неограничивающим вышеприведенным примером, карта версий приложения функции для функции контрольной RSA-суммы обновляется следующим образом:
{
"39a1509440f8c549dfd6e995def14b1ce3c98e5d"
: "23d61f4a88f90be1290c0eeab344992e1a2e8f6d, 1.0.0"
}
Это указывает то, что примерный смарт-контракт использует первую версию примерной функции контрольной RSA-суммы. Таким образом, первая версия функции должна всегда использоваться, когда конкретный смарт-контракт вызывает функцию.
[0043] Фиг. 4 иллюстрирует общую диаграмму 400, показывающую связь между компонентами в соответствии с реализациями настоящего описания изобретения. В соответствии с реализациями настоящего описания изобретения, транзакция с использованием смарт-контракта инициируется (402). Например, узел в блокчейн сети (например, автоматически или по указанию пользователя, служащего в качестве инициатора 404 транзакций) может инициировать транзакцию с использованием смарт-контракта (например, смарт-контракта 406). Смарт-контракт может идентифицировать (408) функции, которые необходимы для того, чтобы завершать транзакцию. В некоторых примерах, во время выполнения логики смарт-контракта, один или более вызовов функций могут осуществляться (410) в одно или более FaaS-приложений 412. Каждое FaaS-приложение 412 включает в себя FaaS-контроллер 414 и FaaS-код 416. FaaS-приложение 412 может существовать для каждого поставщика.
[0044] С дальнейшей ссылкой на вышеприведенный пример, смарт-контракт может передавать вызов 410 функции для значения контрольной RSA-суммы. В некоторых примерах, вызов функции принимается посредством контроллера 414 функции для выполнения посредством FaaS-кода 416. В некоторых примерах, вызов функции включает в себя ввод в функцию и переменную версии, которая указывает версию функции, которая должна выполняться. В некоторых примерах, вызов функции не указывает версию, которая должна выполняться (например, значение версии является нулем), причем в этом случае последняя версия функции используется.
[0045] Контроллер функции обрабатывает ввод (например, сообщение), чтобы предоставлять вывод (например, значение контрольной суммы). Запрос 418 функции осуществляется из FaaS-кода 416. Как отмечено выше, в ответе 420 по функции, выполняется либо указанная версия функции, либо последние версии функции. Дополнительно, значение счетчика карты статистики вызовов, соответствующее выполняемой версии функции, обновляется 422 (например, постепенно увеличивается). Если продолжать с вышеприведенным примером, после первого вызова, статистическое содержимое для примерной функции контрольной RSA-суммы может предоставляться следующим образом:
{
"23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0": 1
}
[0046] Результат 424 функции предоставляется в смарт-контракт, который затем может завершать (426) транзакцию. Транзакция может записываться (428) посредством блокчейна (например, блокчейна 430). Подтверждение 432 может отправляться в инициатор 404 транзакций.
[0047] Последовательность этапов 410-424 может повторяться для каждой функции, вызванной посредством смарт-контракта 406. Например, смарт-контракт 406 может вызывать две функции из двух различных FaaS-поставщиков и принимать результаты функций из каждого из них, которые смарт-контракт 406 использует для того, чтобы завершать транзакцию.
[0048] В некоторых реализациях, поставщик функции может обновлять ранее предоставленную функцию. Например, поставщик функции может перекодировать по меньшей мере часть функции, чтобы повышать эффективность выполнения (например, ускорять, уменьшать объем вычислительных ресурсов). Следовательно, последующая версия функции может предоставляться. Если продолжать с вышеприведенным примером, вторая версия функции контрольной RSA-суммы может предоставляться и отправляться в блокчейн сеть. Второй версии функции назначается уникальный адрес в блокчейн сети (например, 2aae6a1150787a834382d0202ef1e89e3bc89d4d). Значение последней версии (latestVersion) в контроллере функции обновляется так, что оно включает в себя адрес обновленной функции и идентификатор версии (например, 2aae6a1150787a834382d0202ef1e89e3bc89d4d.2.0.0).
[0049] Другая транзакция (вторая транзакция) с использованием смарт-контракта инициируется. Например, и с дальнейшей ссылкой в вышеприведенный пример, смарт-контракт может передавать вызов функции для значения контрольной RSA-суммы. В некоторых примерах, вызов функции принимается посредством контроллера функции. В некоторых примерах, вызов функции включает в себя ввод в функцию и переменную версии, которая указывает версию функции, которая должна выполняться.
[0050] В некоторых реализациях, контроллер функции распознает, что идентичный смарт-контракт (например, 39a1509440f8c549dfd6e995def14b1ce3c98e5d) выдает вызов функции. Следовательно, хотя другая версия (например, 2.0.0) функции доступна, последняя используемая версия (например, 1.0.0) функции используется. Функция обрабатывает ввод (например, сообщение), чтобы предоставлять вывод (например, значение контрольной суммы), и значение счетчика карты статистики вызовов, соответствующее выполняемой версии функции, постепенно увеличивается. Если продолжать с вышеприведенным примером, после второго вызова, статистическое содержимое для примерной функции контрольной RSA-суммы может предоставляться следующим образом:
{
"23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0": 2
}
[0051] В некоторых реализациях, можно определять то, что смарт-контракт может использовать другие версии функции. Например, пользователь, который инициирует смарт-контракт и указывает то, что конкретная версия (например, 1.0.0) должна использоваться, может определять то, что последующая версия (например, 2.0.0) смарт-контракта является удовлетворительной. Следовательно, пользователь может обновлять идентификатор версии в карте версий (например, указывать другую версию или устанавливать идентификатор версии равным нулю). В неограничивающем примере, идентификатор версии задается равным нулю. Таким образом, в следующий раз, когда смарт-контракт осуществляет вызов функции, последняя версия функции используется.
[0052] Другая транзакция (третья транзакция) с использованием смарт-контракта инициируется. Например, и с дальнейшей ссылкой в вышеприведенный пример, смарт-контракт может передавать вызов функции для значения контрольной RSA-суммы. В некоторых примерах, вызов функции принимается посредством контроллера функции. В некоторых примерах, вызов функции включает в себя ввод в функцию и переменную версии, которая указывает версию функции, которая должна выполняться.
[0053] В некоторых реализациях, контроллер функции распознает, что идентичный смарт-контракт (например, 39a1509440f8c549dfd6e995def14b1ce3c98e5d) выдает вызов функции, но что идентификатор версии является нулем. Следовательно, хотя первая версия (например, 1.0.0) функции ранее использована, последняя используемая версия (например, 2.0.0) функции используется. Функция обрабатывает ввод (например, сообщение), чтобы предоставлять вывод (например, значение контрольной суммы), и значение счетчика карты статистики вызовов, соответствующее выполняемой версии функции, постепенно увеличивается. Если продолжать с вышеприведенным примером, статистическое содержимое для примерной функции контрольной RSA-суммы может предоставляться следующим образом:
{
"23d61f4a88f90be1290c0eeab344992e1a2e8f6d,1.0.0": 2
"2aae6a1150787a834382d0202ef1e89e3bc89d4d.2.0.0" :1
}
[0054] Фиг. 5 иллюстрирует примерный процесс 500, который может выполняться в соответствии с реализациями настоящего описания изобретения. В некоторых реализациях, примерный процесс 500 может выполняться с использованием одной или более исполняемых компьютером программ, выполняемых с использованием одного или более вычислительных устройств.
[0055] На 502, транзакция инициируется. Например, транзакция может использовать смарт-контракт, который составляет часть блокчейн сети. Транзакция может инициироваться автоматически, либо транзакция может указываться пользователем. Транзакция, например, может представлять собой транзакцию, которую пользователь использует для того, чтобы формировать случайное число для использования в смарт-контракте.
[0056] На 504, функция вызывается посредством смарт-контракта. В качестве примера, вызов 410 функции может осуществляться, к примеру, чтобы вызывать функцию генератора случайных чисел, которая предоставляется посредством FaaS-платформы. В некоторых реализациях, вызов функции дополнительно может включать в себя адрес функции и идентификатор версии функции. Например, смарт-контракт 406 может включать в себя, в вызове 410 функции, адрес в блокчейне, который ассоциирован с функцией, и номер версии, который идентифицирует конкретную версию функции, которая должна вызываться.
[0057] На 506, смарт-контракт принимает результат(ы). Например, 412 может предоставлять результат 424 функции, такой как случайное число, определенное посредством функции случайных чисел. На 508, смарт-контракт завершает транзакцию на основе результата(ов). В качестве примера, после того, как случайное число принимается, смарт-контракт 406 может завершать операцию со случайными числами, которая запрошена пользователем. На 510, транзакция записывается в блокчейн. Например, транзакция 428 может записываться с обновлением статистики, которая указывает то, что функция случайных чисел использована в другой раз.
[0058] Описанные признаки могут реализовываться в цифровой электронной схеме или в компьютерных аппаратных средствах, микропрограммном обеспечении, программном обеспечении либо в комбинациях вышеозначенного. Оборудование может реализовываться в компьютерном программном продукте, материально осуществленном на носителе информации (например, на машиночитаемом устройстве хранения данных) для выполнения посредством программируемого процессора; и этапы способа могут выполняться посредством программируемого процессора, выполняющего программу инструкций, чтобы выполнять функции описанных реализаций посредством обработки входных данных и формирования вывода. Описанные признаки могут быть реализованы преимущественно в одной или более компьютерных программ, которые выполняются в программируемой системе, включающей в себя по меньшей мере один программируемый процессор, соединенный с возможностью принимать данные и инструкции и передавать данные и инструкции в систему хранения данных по меньшей мере одно устройство ввода и по меньшей мере одно устройство вывода. Компьютерная программа представляет собой набор инструкций, которые могут использоваться, прямо или косвенно, в компьютере, чтобы выполнять определенную активность или обеспечивать определенный результат. Компьютерная программа может быть написана на любой форме языка программирования, включающей в себя компилированные или интерпретируемые языки, и она может развертываться в любой форме, в том числе в качестве автономной программы или в качестве модуля, компонента, вложенной процедуры или другого блока, подходящего для использования в вычислительном окружении.
[0059] Подходящие процессоры для выполнения программы инструкций включают в себя, в качестве примера, микропроцессоры общего и специального назначения и единственный процессор либо один из нескольких процессоров любого вида компьютера. В общем, процессор принимает инструкции и данные из постоянного запоминающего устройства или оперативного запоминающего устройства, или из того и из другого. Элементы компьютера могут включать в себя процессор для выполнения инструкций и одно или более запоминающих устройств для сохранения инструкций и данных. Обычно, компьютер также может включать в себя или функционально соединяться с возможностью обмениваться данными с одним или более устройств хранения данных большой емкости для сохранения файлов данных; такие устройства включают в себя магнитные диски, такие как внутренние жесткие диски и съемные диски; магнитооптические диски; и оптические диски. Устройства хранения данных, подходящие для материального осуществления компьютерных программных инструкций и данных, включают в себя все формы энергонезависимого запоминающего устройства, включающие в себя в качестве примера полупроводниковые запоминающие устройства, таки как EPROM, EEPROM и устройства флэш-памяти; магнитные диски, такие как внутренние жесткие диски и съемные диски; магнитооптические диски; и CD-ROM- и DVD-ROM-диски. Процессор и запоминающее устройство могут дополняться посредством или включаться в специализированные интегральные схемы (ASIC).
[0060] Чтобы предоставлять взаимодействие с пользователем, признаки могут реализовываться на компьютере, имеющем устройство отображения, такое как монитор на электронно-лучевой трубке (CRT) или жидкокристаллический дисплей (ЖК-дисплей) для отображения информации пользователю, и клавиатуру и указательное устройство, такое как мышь или шаровой манипулятор, посредством которого пользователь может предоставлять ввод в компьютер.
[0061] Признаки могут реализовываться в компьютерной системе, которая включает в себя внутренний интерфейсный компонент, такой как сервер данных, либо которая включает в себя промежуточный программный компонент, такой как сервер приложений или Интернет-сервер, либо которая включает в себя внешний интерфейсный компонент, такой как клиентский компьютер, имеющий графический пользовательский интерфейс или Интернет-браузер, либо любую их комбинацию. Компоненты системы могут соединяться посредством любой формы или среды цифровой передачи данных, такой как сеть связи. Примеры сетей связи включают в себя, например, локальную вычислительную сеть (LAN), глобальную вычислительную сеть (WAN) и компьютеры и сети, формирующие Интернет.
[0062] Компьютерная система может включать в себя клиенты и серверы. Клиент и сервер, в общем, являются удаленными друг от друга и типично взаимодействуют через сеть, к примеру, через описанную сеть. Взаимосвязь клиента и сервера осуществляется на основе компьютерных программ, работающих на соответствующих компьютерах и имеющих клиент-серверную взаимосвязь друг с другом.
[0063] Помимо этого, логические последовательности операций, проиллюстрированные на чертежах, не требуют показанного конкретного порядка или последовательного порядка для того, чтобы достигать требуемых результатов. Помимо этого, другие этапы могут предоставляться, или этапы могут исключаться из описанных последовательностей операций, и другие компоненты могут добавляться или удаляться из описанных систем. Соответственно, эти и другие реализации находятся в пределах объема прилагаемой формулы изобретения.
[0064] Выше описывается определенное число реализаций настоящего описания изобретения. Тем не менее, следует понимать, что различные модификации могут вноситься без отступления от сущности и объема настоящего описания изобретения. Соответственно, эти и другие реализации находятся в пределах объема прилагаемой формулы изобретения.