ОБНОВЛЕНИЯ СМАРТ-КОНТРАКТОВ НА ОСНОВЕ ЦЕПОЧЕК БЛОКОВ С ИСПОЛЬЗОВАНИЕМ ДЕЦЕНТРАЛИЗОВАННОГО РЕШЕНИЯ
UPDATING SMART CONTRACTS BASED ON BLOCK CHAINS USING DECENTRALIZED SOLUTION

Уровень техники
[0001] Системы распределенных реестров (DLS), которые также могут упоминаться как консенсусные сети и/или сети цепочек блоков (блокчейн), позволяют участвующим субъектам защищенно и неизменно сохранять данные. DLS обычно упоминаются как сети цепочек блоков независимо от конкретных вариантов использования (например, криптовалют). Примерные типы сетей цепочек блоков могут включать в себя открытые сети цепочек блоков, закрытые сети цепочек блоков и консорциальные сети цепочек блоков. Открытая сеть цепочек блоков является открытой для всех субъектов в том, чтобы использовать и участвовать в консенсусном процессе. Закрытая сеть цепочек блоков предоставляется для конкретного субъекта, который централизованно управляет разрешениями на считывание и запись. Консорциальная сеть цепочек блоков предоставляется для выбранной группы субъектов, которые управляют консенсусным процессом, и включает в себя уровень управления доступом.
[0002] Смарт-контракты могут выполняться между субъектами и постоянно размещаться в сети цепочек блоков. В некоторых случаях, смарт-контракты должны обновляться (например, чтобы отражать измененные обстоятельства между субъектами). Традиционные системы используют централизованное решение для того, чтобы управлять изменениями смарт-контрактов, которые могут включать в себя процессы, которыми затруднительно управлять и которые имеют другие недостатки. Например, когда смарт-контракт должен обновляться (или модернизироваться), авторизованный субъект (например, менеджер, создатель контракта или государственное учреждение) может отвечать за обновление смарт-контракта и может обмениваться данными с субъектами относительно обновления. После того, как связь достигает консенсуса, авторизованный субъект может выполнять операцию обновления. Этот процесс может быть затруднительным для отслеживания и может требовать от субъектов, которые являются сторонами в смарт-контракте, доверять авторизованному субъекту.
Сущность изобретения
[0003] Реализации настоящего раскрытия включают в себя машинореализуемые способы для обновления смарт-контрактов. Более конкретно, реализации настоящего раскрытия направлены на обновление смарт-контракта посредством выполнения смарт-контракта на обновления в системе управления обновлениями контрактов.
[0004] В некоторых реализациях, действия включают в себя прием, посредством системы управления обновлениями контрактов, запроса на обновление, указывающего изменение смарт-контракта, причем изменение представляет собой предложенное обновление смарт-контракта, определение, посредством выполнения смарт-контракта на обновления в системе управления обновлениями контрактов, того, удовлетворяются или нет условия для обновления смарт-контракта включением в него упомянутого изменения, причем смарт-контракт на обновления задает условия, и после определения, посредством системы управления обновлениями контрактов, того, что условия удовлетворяются, обновление, посредством системы управления обновлениями контрактов, смарт-контракта и запись изменения в один или более блоков в цепочке блоков из сети цепочек блоков. Другие реализации включают в себя соответствующие системы, оборудование и компьютерные программы, выполненные с возможностью выполнять действия способов, кодированных на компьютерных устройствах хранения данных.
[0005] Эти и другие реализации необязательно могут включать в себя один или более следующих признаков: запрос на обновление включает в себя идентификатор, назначаемый смарт-контракту в сети цепочек блоков; запрос на обновление включает в себя идентификатор, назначаемый смарт-контракту на обновления в сети цепочек блоков; смарт-контракт включает в себя: контракт на контроллер, заданный посредством диспетчера при приеме запроса посредством инициатора контракта, который инициирует смарт-контракт, контракт на предоставление услуг, который включает в себя логику смарт-контракта, и контракт на данные, который включает в себя положения смарт-контракта; определение того, удовлетворяются или нет условия, включает в себя выполнение процесса голосования, включающего в себя: отправку запроса в один или более узлов в сети цепочек блоков на предмет голоса относительно изменения, сбор голосов из одного или более узлов и определение того, что условия удовлетворяются, когда собранные голоса указывают подтверждение изменения посредством одного или более узлов; выполнение процесса голосования включает в себя взвешивание голосов посредством весовых коэффициентов, ассоциированных с соответствующими узлами, и при этом подтверждение основано на функции собранных голосов и их ассоциированных весовых коэффициентов; выполнение процесса голосования включает в себя применение вето, принимаемого из узла с привилегией в виде права вето, причем процесс голосования заканчивается, когда принимается вето для изменения во время процесса голосования, причем вето вызывает отклонение изменения; выполнение процесса голосования включает в себя использование правил голосования, указывающих то, когда процесс голосования должен приводить к подтверждению изменения или отклонению изменения; выполнение процесса голосования включает в себя использование времени начала голосования и времени окончания голосования, которые задают период голосования, в который возникает процесс голосования; и выполнение процесса голосования завершается, и условия удовлетворяются, когда пороговое число голосующих подтверждает изменение, либо когда комбинация одного или более конкретных голосующих подтверждает изменение.
[0006] Настоящее раскрытие также предоставляет один или более энергонезависимых машиночитаемых носителей хранения данных, соединенных с одним или более процессоров и имеющих сохраненные инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессоров выполнять операции в соответствии с реализациями способов, предусмотренных в данном документе.
[0007] Настоящее раскрытие дополнительно предоставляет систему для реализации способов, предусмотренных в настоящем документе. Система включает в себя один или более процессоров и машиночитаемый носитель данных, соединенный с одним или более процессоров, имеющий сохраненные инструкции, которые, при выполнении посредством одного или более процессоров, инструктируют одному или более процессоров выполнять операции в соответствии с реализациями способов, предусмотренных в данном документе.
[0008] Следует принимать во внимание, что способы в соответствии с настоящим раскрытием могут включать в себя любую комбинацию аспектов и признаков, описанных в данном документе. Таким образом, способы в соответствии с настоящим раскрытием не ограничены комбинациями аспектов и признаков, конкретно описанными в данном документе, но также включают в себя любую предоставленную комбинацию аспектов и признаков.
[0009] Подробности одной или более реализаций настоящего раскрытия изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки и преимущества настоящего раскрытия должны становиться очевидными из описания и чертежей, а также из формулы изобретения.
Описание чертежей
[0010] Фиг. 1 иллюстрирует примерное окружение, которое может использоваться для того, чтобы выполнять реализации настоящего раскрытия.
[0011] Фиг. 2 иллюстрирует примерную концептуальную архитектуру в соответствии с реализациями настоящего раскрытия.
[0012] Фиг. 3 иллюстрирует примерную систему для обновления смарт-контрактов в соответствии с реализациями настоящего раскрытия.
[0013] Фиг. 4 иллюстрирует примерный процесс, который может выполняться в соответствии с реализациями настоящего раскрытия.
[0014] Аналогичные ссылки с номерами на различных чертежах указывают аналогичные элементы.
Подробное описание изобретения
[0015] Реализации настоящего раскрытия включают в себя машинореализуемые способы для обновления смарт-контрактов. Более конкретно, реализации настоящего раскрытия направлены на выполнение смарт-контракта на обновления в системе управления обновлениями контрактов, чтобы управлять обновлениями смарт-контрактов в сети цепочек блоков. В некоторых реализациях, действия включают в себя прием, посредством системы управления обновлениями контрактов, запроса на обновление, указывающего изменение смарт-контракта, причем изменение представляет собой предложенное обновление смарт-контракта, определение, посредством выполнения смарт-контракта на обновления в системе управления обновлениями контрактов, того, удовлетворяются или нет условия для обновления смарт-контракта включением в него упомянутого изменения, причем смарт-контракт на обновления задает условия, и после определения, посредством системы управления обновлениями контрактов, того, что условия удовлетворяются, обновление, посредством системы управления обновлениями контрактов, смарт-контракта и запись изменения в один или более блоков в цепочке блоков из сети цепочек блоков.
[0016] Чтобы предоставлять дополнительный контекст для реализаций настоящего раскрытия, и как представлено выше, системы распределенных реестров (DLS), которые также могут упоминаться как консенсусные сети (например, состоящие из узлов между равноправными узлами) и сети цепочек блоков, позволяют участвующим субъектам защищенно и неизменно проводить транзакции и сохранять данные. Хотя термин "цепочка блоков", в общем, ассоциирован с криптовалютной сетью биткоинов, цепочка блоков используется в данном документе, чтобы, в общем, означать DLS независимо от конкретных вариантов использования. Как представлено выше, сеть цепочек блоков может предоставляться в качестве открытой сети цепочек блоков, закрытой сети цепочек блоков или консорциальной сети цепочек блоков.
[0017] В открытой сети цепочек блоков, консенсусный процесс управляется посредством узлов консенсусной сети. Например, сотни, тысячи, даже миллионы субъектов могут взаимодействовать в открытой сети цепочек блоков, каждый из которых управляет, по меньшей мере, одним узлом в открытой сети цепочек блоков. Соответственно, открытая сеть цепочек блоков может считаться открытой сетью относительно участвующих субъектов. В некоторых примерах, большинство субъектов (узлов) должны подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков (распределенный реестр) сети цепочек блоков. Примерная открытая сеть цепочек блоков включает в себя сеть биткоинов, которая представляет собой платежную сеть между равноправными узлами. Сеть биткоинов использует распределенный реестр, называемый "цепочкой блоков". Тем не менее, как отмечено выше, термин "цепочка блоков" используется для того, чтобы, в общем, означать распределенные реестры без конкретной ссылки на сеть биткоинов.
[0018] В общем, открытая сеть цепочек блоков поддерживает открытые транзакции. Открытая транзакция совместно используется со всеми узлами в открытой сети цепочек блоков и сохраняется в глобальной цепочке блоков. Глобальная цепочка блоков представляет собой цепочку блоков, которая реплицируется по всем узлам. Таким образом, все узлы находятся в идеальном консенсусе состояния относительно глобальной цепочки блоков. Чтобы достигать консенсуса (например, соглашения с добавлением блока в цепочку блоков), консенсусный протокол реализуется в открытой сети цепочек блоков. Примерный консенсусный протокол включает в себя, без ограничения, доказательство выполнения работы (POW), реализованное в сети биткоинов.
[0019] В общем, закрытая сеть цепочек блоков предоставляется для конкретного субъекта, который централизованно управляет разрешениями на считывание и запись. Субъект управляет тем, какие узлы имеют возможность участвовать в сети цепочек блоков. Следовательно, закрытые сети цепочек блоков, в общем, упоминаются в качестве сетей с контролируемым доступом, которые устанавливают ограничения касательно того, кому разрешается участвовать в сети, и касательно их уровня участия (например, только в определенных транзакциях). Различные типы механизмов управления доступом могут использоваться (например, существующие участники голосуют по добавлению новых субъектов, контролирующий орган может управлять допуском).
[0020] В общем, консорциальная сеть цепочек блоков является закрытой между участвующими субъектами. В консорциальной сети цепочек блоков, консенсусный процесс управляется посредством авторизованного набора узлов, причем один или более узлов управляются посредством соответствующего субъекта (например, организации). Например, консорциум из десяти (10) субъектов (например, организаций) может управлять консорциальной сетью цепочек блоков, каждый из которых управляет, по меньшей мере, одним узлом в консорциальной сети цепочек блоков. Соответственно, консорциальная сеть цепочек блоков может считаться закрытой сетью относительно участвующих субъектов. В некоторых примерах, каждый субъект (узел) должен подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков. В некоторых примерах, по меньшей мере, поднабор субъектов (узлов) (например, по меньшей мере, 7 субъектов) должен подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков.
[0021] Реализации настоящего раскрытия подробнее описываются в данном документе со ссылкой на консорциальную сеть цепочек блоков, которая является открытой между участвующими субъектами (например, членами консорциума). Тем не менее, предполагается, что реализации настоящего раскрытия могут быть реализованы в любом соответствующем типе сети цепочек блоков. Хотя технологии, описанные в настоящем раскрытии, указываются в качестве релевантных для консорциальных сетей цепочек блоков, технологии также могут использоваться, с/без изменений, в других типах сетей цепочек блоков, включающих в себя открытые сети цепочек блоков и закрытые сети цепочек блоков.
[0022] В дальнейшем подробнее описываются реализации настоящего раскрытия в данном документе с учетом вышеизложенного контекста. Более конкретно, и как представлено выше, реализации настоящего раскрытия направлены на выполнение смарт-контракта на обновления в системе управления обновлениями контрактов сети цепочек блоков, чтобы управлять обновлениями смарт-контрактов.
[0023] Смарт-контракты могут описываться как цифровые представления законных контрактов реального мира, имеющих контрактные условия, затрагивающие различные стороны. Смарт-контракт реализуется, сохраняется, обновляется (по мере необходимости) и выполняется, в примерном контексте, в консорциальной сети цепочек блоков. Стороны контракта, ассоциированные со смарт-контрактом (например, покупатели и продавцы), представляются как узлы в консорциальной сети цепочек блоков. В некоторых примерах, стороны контракта могут включать в себя субъекты (например, коммерческие организации), которые ассоциированы со смарт-контрактом (например, в качестве сторон в смарт-контракте).
[0024] В некоторых примерах, смарт-контракт может сохранять данные, которые могут использоваться для того, чтобы записывать информацию, факты, ассоциирования, балансы и любую другую информацию, требуемую для того, чтобы реализовывать логику для выполнения договора. Смарт-контракты могут описываться как машиноисполняемая программа, состоящая из функций, в которых может создаваться экземпляр смарт-контракта, и функций, активируемых для выполнения ее логики. В некоторых примерах, смарт-контракт может включать в себя различные компоненты, один или более из которых также могут описываться как контракт. В некоторых примерах, один или более компонентов смарт-контракта могут обновляться в качестве части обновления полного смарт-контракта.
[0025] В некоторых реализациях, примерные компоненты смарт-контракта могут включать в себя, без ограничения, контракт на контроллер, контракт на предоставление услуг и контракт на данные. Контракт на контроллер может задаваться посредством диспетчера при приеме запроса посредством инициатора контракта, который инициирует смарт-контракт. Инициирование смарт-контракта может включать в себя предоставление смарт-контракта в узлы в консорциальной сети цепочек блоков (например, в субъекты, которые должны представлять собой стороны в смарт-контракте). Инициирование смарт-контракта также может идентифицировать время, в которое создан смарт-контракт, и идентификационные данные инициатора смарт-контракта. В некоторых примерах, контракт на предоставление услуг включает в себя логику смарт-контракта. Логика может задавать то, как выполняется контракт, что включает в себя определение порядка событий и взаимосвязей с субъектами, ассоциированными со смарт-контрактом. Контракт на данные включает в себя положения смарт-контракта, включающие в себя, без ограничения, продукты и/или услуги, которые охватываются смарт-контрактом, и платежную информацию для смарт-контракта для предоставления продуктов и/или услуг. Данные, которые сохраняются в контракте на данные, могут использоваться для того, чтобы записывать информацию, факты и ассоциирования, включающие в себя, без ограничения, балансы, платежи, чеки платежей, доставки, крайние сроки и любую другую информацию, требуемую для того, чтобы реализовывать логику смарт-контракта.
[0026] В технических терминах, смарт-контракты могут реализовываться на основе объектов и объектно-ориентированных классов. Например, положения и компоненты смарт-контракта могут представляться как объекты, которые обрабатываются посредством приложений, реализующих смарт-контракты. Смарт-контракт (или объект в смарт-контракте) может вызывать другой смарт-контракт (или объект в идентичном смарт-контракте), идентично другим объектно-ориентированным объектам. Вызовы, которые выполняются посредством объекта, например, могут представлять собой вызов для того, чтобы создавать, обновлять, удалять, распространять или обмениваться данными с объектами другого класса. Вызовы между объектами могут реализовываться как функции, методы, интерфейсы прикладного программирования (API) или другие вызывающие механизмы. Например, первый объект может вызывать функцию, чтобы создавать второй объект.
[0027] Фиг. 1 иллюстрирует примерное окружение 100, которое может использоваться для того, чтобы выполнять реализации настоящего раскрытия. В некоторых примерах, примерное окружение 100 обеспечивает возможность субъектам участвовать в консорциальной сети 102 цепочек блоков. Примерное окружение 100 включает в себя вычислительные устройства 106, 108 и сеть 110. В некоторых примерах, сеть 110 включает в себя локальную вычислительную сеть (LAN), глобальную вычислительную сеть (WAN), Интернет либо комбинацию вышеозначенного и соединяет веб-узлы, пользовательские устройства (например, вычислительные устройства) и внутренние интерфейсные системы. В некоторых примерах, к сети 110 может осуществляться доступ по линии проводной и/или беспроводной связи.
[0028] В проиллюстрированном примере, вычислительные системы 106, 108 могут включать в себя любую соответствующую вычислительную систему, которая обеспечивает участие в качестве узла в консорциальной сети 102 цепочек блоков. Примерные вычислительные устройства включают в себя, без ограничения, сервер, настольный компьютер, переносной компьютер, планшетное вычислительное устройство и смартфон. В некоторых примерах, вычислительные системы 106, 108 размещают (хостят) одну или более машинореализуемых услуг для взаимодействия с консорциальной сетью 102 цепочек блоков. Например, вычислительная система 106 может хостить машинореализуемые услуги первого субъекта (например, пользователя A), к примеру, система управления транзакциями, которую использует первый субъект для того, чтобы управлять своими транзакциями с одним или более других субъектов (например, других пользователей). Вычислительная система 108 может хостить машинореализуемые услуги второго субъекта (например, пользователя B), к примеру, система управления транзакциями, которую использует второй субъект для того, чтобы управлять своими транзакциями с одним или более других субъектов (например, других пользователей). В примере по фиг. 1, консорциальная сеть 102 цепочек блоков представляется как сеть с равноправными узлами узлов, и вычислительные системы 106, 108 предоставляют узлы первого субъекта и второго субъекта, соответственно, которые участвуют в консорциальной сети 102 цепочек блоков.
[0029] Фиг. 2 иллюстрирует примерную концептуальную архитектуру 200 в соответствии с реализациями настоящего раскрытия. Примерная концептуальная архитектура 200 включает в себя уровень 202 субъектов, уровень 204 предоставления хостящихся услуг и уровень 206 сети цепочек блоков. В проиллюстрированном примере, уровень 202 субъектов включает в себя три субъекта, субъект _1 (E1), субъект _2 (E2) и субъект _3 (E3), причем каждый субъект имеет соответствующую систему 208 управления транзакциями.
[0030] В проиллюстрированном примере, уровень 204 предоставления хостящихся услуг включает в себя интерфейсы 210 для каждой системы 208 управления транзакциями. В некоторых примерах, соответствующая система 208 управления транзакциями обменивается данными с соответствующим интерфейсом 210 по сети (например, по сети 110 по фиг. 1) с использованием протокола (например, протокола защищенной передачи гипертекста (HTTPS)). В некоторых примерах, каждый интерфейс 210 предоставляет соединение связи между соответствующей системой 208 управления транзакциями и уровнем 206 сети цепочек блоков. Более конкретно, интерфейс 210 обменивается данными с сетью 212 цепочек блоков уровня 206 сети цепочек блоков. В некоторых примерах, связь между интерфейсом 210 и уровнем 206 сети цепочек блоков проводится с использованием удаленных вызовов процедур (RPC). В некоторых примерах, интерфейсы 210 "хостят" узлы сети цепочек блоков для соответствующих систем 208 управления транзакциями. Например, интерфейсы 210 предоставляют интерфейс прикладного программирования (API) для доступа к сети 212 цепочек блоков.
[0031] Как описано в данном документе, сеть 212 цепочек блоков предоставляется в качестве сети с равноправными узлами, включающей в себя множество узлов 214, которые неизменно записывают информацию в цепочку 216 блоков (например, в консорциальную цепочку блоков). Хотя одна цепочка 216 блоков схематично проиллюстрирована, несколько копий цепочки 216 блоков предоставляются и поддерживаются в сети 212 цепочек блоков. Например, каждый узел 214 сохраняет копию цепочки блоков. В некоторых реализациях, цепочка 216 блоков сохраняет информацию, ассоциированную с транзакциями, которые выполняются между двумя или более субъектов, участвующих в закрытой сети цепочек блоков.
[0032] Фиг. 3 иллюстрирует примерную систему 300 для обновления смарт-контрактов в соответствии с реализациями настоящего раскрытия. В проиллюстрированном примере, система 300 включает в себя систему 302 управления обновлениями контрактов, которая управляет обновлениями смарт-контрактов, включающих в себя смарт-контракт 304. Хотя один смарт-контракт 304 проиллюстрирован, предполагается, что система 302 управления обновлениями контрактов, например, может использоваться для того, чтобы обновлять любое число смарт-контрактов 304 в консорциальной сети цепочек блоков. Дополнительно, хотя один смарт-контракт 303 на обновления проиллюстрирован, предполагается, что любое число смарт-контрактов 303 на обновления может предоставляться. В некоторых примерах, смарт-контракт 303 на обновления предоставляется для одного или более смарт-контрактов 304 (например, взаимосвязь "один-ко-многим"). В некоторых примерах, смарт-контракт 303 на обновления предоставляется для одного смарт-контракта 304 (например, взаимосвязь "один к одному"). В некоторых примерах, несколько смарт-контрактов 303 на обновления предоставляются для одного смарт-контракта 304 (например, взаимосвязь "многие-к-одному").
[0033] В соответствии с реализациями настоящего раскрытия, система 302 управления обновлениями контрактов избирательно выполняет смарт-контракт 303 на обновления, чтобы обновлять смарт-контракт 304. Хотя схематично иллюстрировано в системе управления обновлений контрактов 302, смарт-контракт 303 на обновления, в общем, постоянно размещается и выполняется в консорциальной сети цепочек блоков. В некоторых примерах, и как подробнее описано в данном документе, смарт-контракт 303 на обновления включает в себя логику для активации обновления смарт-контракта 304, одно или более условий, требуемых для выполнения обновления для смарт-контракта 304, и при условии, что одно или более условий удовлетворяются, выполнения обновления смарт-контракта 304.
[0034] Подробнее, система 302 управления контрактами может активировать процесс обновления. Например, и как подробнее описано в данном документе, запрос на обновление может предоставляться в систему 302 управления контрактами, которая активирует процесс обновления. В некоторых примерах, запрос на обновление идентифицирует смарт-контракт 304, который должен обновляться, а также обновление, которое должно выполняться. В некоторых примерах, смарт-контракт 304 идентифицируется на основе уникального адреса смарт-контракта 304 в консорциальной сети цепочек блоков (например, 39a1509440f8c549dfd6e995def14b1ce3c98e5d). Например, после или наряду с созданием смарт-контракта 304, смарт-контракт 304 может регистрироваться в системе 302 управления обновлениями контрактов. В некоторых примерах, регистрация смарт-контракта 304 включает в себя индексацию смарт-контракта 304 на основе его уникального идентификатора и обращение к одному или более смарт-контрактов 303 на обновления, которые должны выполняться для обновления смарт-контракта 304. В некоторых примерах, к каждому из одного или более смарт-контрактов 303 на обновления обращаются на основе уникального адреса соответствующего смарт-контракта 303 на обновления в консорциальной сети цепочек блоков (например, 23d61f4a88f90be1290c0eeab344992e1a2e8f6d).
[0035] В некоторых реализациях, запрос на обновление может включать в себя тип обновления, которое должно выполняться в смарт-контракте 304. В некоторых примерах, смарт-контракт 303 на обновления может выбираться для выполнения процесса обновления на основе типа обновления. Например, для первого типа обновления (например, для модификации цен), первый смарт-контракт на обновления выбирается и включает в себя первый набор условий, и для второго типа обновления (например, для модификации сторон в смарт-контракте), второй смарт-контракт на обновления выбирается и включает в себя второй набор условий. В некоторых примерах, наборы условий между смарт-контрактами на обновления могут быть более/менее строгими. Например, первый набор условий может быть менее строгим, чем второй набор смарт-контрактов.
[0036] В некоторых реализациях, смарт-контракт 303 на обновления выбирается независимо от типа обновления (например, один смарт-контракт 303 на обновления ассоциирован со смарт-контрактом 304). В некоторых примерах, набор условий, реализованных посредством смарт-контракта на обновления, выбирается на основе типа обновления. Например, для первого типа обновления, смарт-контракт 304 на обновления реализует первый набор условий, и для второго типа обновления, смарт-контракт 304 на обновления реализует второй набор условий.
[0037] В некоторых реализациях, смарт-контракт 303 на обновления может управлять списком узлов 308, которые предусмотрены при удовлетворении одного или более условий, которые должны удовлетворяться для обновления смарт-контракта 304. В некоторых примерах, узел 308 выполняет некоторую задачу или имеет некоторую выполняемую задачу (например, пользователем в узле 308). Например, узел 308, возможно, должен чтобы предоставлять информацию, подтверждение, подпись (например, цифровую подпись) и/или голос, в зависимости от логики и набора условий, требуемых для того, чтобы реализовывать обновление.
[0038] В дальнейшем подробнее описывается неограничивающий пример для подтверждения обновления в данном документе со ссылкой на фиг. 3. В примере по фиг. 3, узлы 308 (проиллюстрированные в качестве пользователей) голосуют по предложенному обновлению смарт-контракта 304. Примерные типы голосования могут включать в себя, без ограничения, голосование по изменению членов комитета и атрибутов и голосование по росту цены по контракту. Голосование по изменению членов комитета и атрибутов может использоваться для того, чтобы обновлять список голосующих членов и соответствующие параметры голосования. Голосование по росту цены по контракту может использоваться для того, чтобы обновлять смарт-контракт 304.
[0039] Каждое предложение на то, чтобы обновлять смарт-контракт 304, который обрабатывается посредством системы 302 управления обновлениями контрактов, может включать в себя контент. Примерный контент может включать в себя, без ограничения, адрес смарт-контракта 304, адрес смарт-контракта 303 на обновления, причину обновления (или модернизации) и/или список новых членов комитета. Условия для предложения могут включать в себя, например, информацию, указывающую то, требуется или нет полное согласие для подтверждения предложения, то, устанавливается или нет требуемое весовое соотношение для подтверждения предложения, и то, активируются или нет вето (и то, как опция вето должна применяться). Крайний срок голосования по предложению и эффективный временной интервал действия предложения позволяют идентифицировать распределение времени от формирования предложения до выполнения предложения (во время процесса голосования). Примерные типы голосов могут включать в себя, без ограничения, голос по изменению атрибутов и голос по обновлению контрактов.
[0040] Контракт 306 на контроллер может задаваться посредством диспетчера при приеме запроса посредством инициатора контракта, который инициирует смарт-контракт 304. Например, смарт-контракт 304 может инициироваться посредством одного или более узлов 308. В проиллюстрированном примере, контракт 306 на контроллер включает в себя маршрутизатор 310, который маршрутизирует запросы, включающие в себя запросы на то, чтобы обновлять смарт-контракт 304. Смарт-контракт 304 также включает в себя контракт 312 на предоставление услуг и контракт 314 на данные. Контракт 312 на предоставление услуг может включать в себя бизнес-логику смарт-контракта 304. Контракт 314 на данные может включать в себя положения смарт-контракта 304, включающие в себя продукты и/или услуги, охватываемые смарт-контрактом 304, и платежную информацию для контракта на прием продуктов и/или услуг.
[0041] В некоторых примерах, маршрутизатор 310 отвечает за маршрутизацию запросов и другой информации на корректный адрес контракта на предоставление услуг, например, в корректный узел 308. Модификация адресных данных контракта в маршрутизаторе 310 может выполняться посредством смарт-контракта 303 на обновления. Решение обновлять смарт-контракт 304 может формироваться посредством членов консорциума, комитета по управлению контрактами или объединенного голоса посредством определенного числа узлов 308.
[0042] В примерной последовательности событий, узел 308a может предлагать изменение смарт-контракта 304. Предложенное изменение может иметь форму предложения 312 (например, запроса на обновление), например, который изменяет положения смарт-контракта 304 (например, дату доставки, цену, которая должна быть заплачена за продукт или услугу). Система 302 управления обновлениями контрактов может принимать предложение 312 и может отправлять запросы не предлагающим изменения пользователям 308 (включающим в себя пользователей 308b, 308c, 308d, 308e). Запросы, которые отправляются не предлагающим изменения пользователям 308, могут включать в себя предложение изменения для смарт-контракта 304, и запрос (или приглашение) на то, чтобы голосовать по изменению. Узлы 308b, 308c, 308d, 308e могут предоставлять свои голоса 318 в систему 302 управления обновлениями контрактов, которая затем может определять то, следует или нет подтверждать изменение. В некоторых примерах, голос автоматически предоставляется посредством узла (например, компьютерное выполнение голосования). В некоторых примерах, голос предоставляется пользователем через узел (например, авторизованный пользователь отправляет голос через узел).
[0043] Фиг. 4 иллюстрирует примерный процесс 400, который может выполняться в соответствии с реализациями настоящего раскрытия. В некоторых реализациях, примерный процесс 400 может выполняться с использованием одной или более машиноисполняемых программ, выполняемых с использованием одного или более вычислительных устройств.
[0044] На 402, изменение смарт-контракта принимается посредством системы управления обновлениями контрактов. Например, изменение смарт-контракта 304 может предлагаться пользователем 308a. Изменение может представлять собой предложенное обновление, например, чтобы изменять положения контракта для смарт-контракта 304. Положения контракта, предложенные для изменения, могут включать в себя, например, изменение даты доставки или цены, которая должна быть заплачена за продукт или услугу, идентифицированную в смарт-контракте 304.
[0045] На 404, выполняется определение в отношении того, удовлетворяются или нет условия для обновления смарт-контракта включением в него упомянутого изменения. Например, определение может выполняться посредством выполнения смарт-контракта 303 на обновления в системе 302 управления обновлениями контрактов. Смарт-контракт 303 на обновления может задавать условия для выполнения определения.
[0046] В некоторых реализациях, определение того, удовлетворяются или нет условия, включает в себя выполнение процесса голосования, включающего в себя следующее. Предложенное изменение отправляется в блоки в цепочке блоков с запросом на голос за или против изменения. Например, система 302 управления обновлениями контрактов может отправлять запросы в блоки, представляющие пользователей 308b, 308b, 308d и 308e. Система 302 управления обновлениями контрактов затем может собирать голоса 318 из блоков в цепочке блоков. Система 302 управления обновлениями контрактов затем может определять то, что условия удовлетворяются, например, когда собранные голоса указывают подтверждение изменения посредством консенсуса блоков в цепочке блоков.
[0047] В некоторых реализациях, процесс голосования включает в себя взвешивание голосов посредством весовых коэффициентов, ассоциированных с конкретными голосующими, и консенсус может быть основан на функции собранных голосов и их ассоциированных весовых коэффициентов. Например, некоторые пользователи 308 могут представлять собой стороны контракта, важность которых для смарт-контракта 304 варьируется посредством их важности. Во время процесса голосования, система 302 управления обновлениями контрактов использует весовые коэффициенты, ассоциированные с различными пользователями 308, чтобы принимать решение касательно того, достигнут или нет консенсус голосующих.
[0048] В некоторых реализациях, выполнение процесса голосования включает в себя применение вето, принимаемого от голосующего с привилегией в виде права вето. Процесс голосования может завершаться, когда вето принимается для изменения во время процесса голосования, причем вето вызывает отклонение изменения. Например, некоторые пользователи 308 могут представлять собой стороны контракта для смарт-контракта 304, которые представляют собой покупателя или продавца. Эти типы сторон контракта могут иметь привилегии в виде права вето на любые предложенные изменения смарт-контракта 304.
[0049] В некоторых реализациях, выполнение процесса голосования включает в себя использование правил голосования, указывающих то, когда процесс голосования должен приводить к подтверждению изменения или отклонению изменения. В качестве примера, набор правил голосования для данного смарт-контракта может включать в себя правила, которые указывают то, как голосование должно использоваться для того, чтобы определять то, выполнено или нет подтверждение. Правила могут указывать, например, минимальное число блоков в цепочке блоков, которые необходимы для подтверждения или некоторой другой комбинации голосования. Каждый смарт-контракт может иметь уникальный набор правил голосования.
[0050] В некоторых реализациях, выполнение процесса голосования включает в себя использование времени начала голосования и времени окончания голосования, которые задают период голосования, в который возникает процесс голосования. Например, смарт-контракт 303 на обновления может задавать продолжительность (например, число часов или дней), которая может увязываться с конкретным начальным временем и конечным временем.
[0051] В некоторых реализациях, выполнение процесса голосования завершается, и условия удовлетворяются, когда пороговое число голосующих подтверждает изменение, либо когда комбинация одного или более конкретных голосующих подтверждает изменение. Например, система 302 управления обновлениями контрактов может определять, с использованием правил голосования, то, что консенсус достигнут, когда, по меньшей мере, три из пользователей 308 голосуют за подтверждение предложенного изменения.
[0052] На 406, после определения, посредством системы управления обновлениями контрактов, того, что условия удовлетворяются, смарт-контракт обновляется посредством системы управления обновлениями контрактов. Изменение записывается в один или более блоков в цепочке блоков. Например, система 302 управления обновлениями контрактов может распространять изменение в блоки в цепочке блоков (например, пользователям 308).
[0053] Хотя примерный процесс обновления описывается в данном документе со ссылкой на голосование по предложенному обновлению, предполагается, что реализации настоящего раскрытия могут быть реализованы с использованием любых соответствующих условий для разрешения или запрещения обновления. Например, в ответ на запрос на обновление, примерные условия могут включать в себя требование подтверждения обновления от одного или более указанных пользователей. Если каждый из одного или более указанных пользователей выдает свое подтверждение, обновление выполняется в смарт-контракт. Если любой из одного или более указанных пользователей не выдает свое подтверждение, обновление не выполняется для смарт-контракта. В качестве другого примера, примерные условия обновления могут включать в себя требование отказа от подтверждения обновления от одного или более указанных пользователей в течение предварительно заданного периода времени. Если отказ от подтверждения не принимается в течение предварительно заданного периода времени, обновление выполняется. В качестве еще одного другого примера, примерные условия обновления могут включать в себя требование подтверждения обновления от одного или более указанных пользователей в течение предварительно заданного периода времени. Если подтверждение не принимается в течение предварительно заданного периода времени, обновление отклоняется.
[0054] Описанные признаки могут реализовываться в цифровой электронной схеме или в компьютерных аппаратных средствах, микропрограммном обеспечении, программном обеспечении либо в комбинациях вышеозначенного. Оборудование может реализовываться в компьютерном программном продукте, материально осуществленном на носителе информации (например, на машиночитаемом устройстве хранения данных) для выполнения посредством программируемого процессора; и этапы способа могут выполняться посредством программируемого процессора, выполняющего программу инструкций, чтобы выполнять функции описанных реализаций посредством обработки входных данных и формирования вывода. Описанные признаки могут быть реализованы преимущественно в одной или более компьютерных программ, которые выполняются в программируемой системе, включающей в себя, по меньшей мере, один программируемый процессор, соединенный с возможностью принимать данные и инструкции и передавать данные и инструкции в систему хранения данных, по меньшей мере, одно устройство ввода и, по меньшей мере, одно устройство вывода. Компьютерная программа представляет собой набор инструкций, которые могут использоваться, прямо или косвенно, в компьютере, чтобы выполнять определенную активность или обеспечивать определенный результат. Компьютерная программа может быть написана на любой форме языка программирования, включающей в себя компилированные или интерпретируемые языки, и она может развертываться в любой форме, в том числе в качестве автономной программы или в качестве модуля, компонента, вложенной процедуры или другого блока, подходящего для использования в вычислительном окружении.
[0055] Подходящие процессоры для выполнения программы инструкций включают в себя, в качестве примера, микропроцессоры общего и специального назначения и единственный процессор либо один из нескольких процессоров любого вида компьютера. В общем, процессор принимает инструкции и данные из постоянного запоминающего устройства или оперативного запоминающего устройства, или из того и из другого. Элементы компьютера могут включать в себя процессор для выполнения инструкций и одно или более запоминающих устройств для сохранения инструкций и данных. Обычно, компьютер также может включать в себя или функционально соединяться с возможностью обмениваться данными с одним или более устройств хранения данных большой емкости для сохранения файлов данных; такие устройства включают в себя магнитные диски, такие как внутренние жесткие диски и съемные диски; магнитооптические диски; и оптические диски. Устройства хранения данных, подходящие для материального осуществления компьютерных программных инструкций и данных, включают в себя все формы энергонезависимого запоминающего устройства, включающие в себя в качестве примера полупроводниковые запоминающие устройства, таки как EPROM, EEPROM и устройства флэш-памяти; магнитные диски, такие как внутренние жесткие диски и съемные диски; магнитооптические диски; и CD-ROM- и DVD-ROM-диски. Процессор и запоминающее устройство могут дополняться посредством или включаться в специализированные интегральные схемы (ASIC).
[0056] Чтобы предоставлять взаимодействие с пользователем, признаки могут реализовываться на компьютере, имеющем устройство отображения, такое как монитор на электронно-лучевой трубке (CRT) или жидкокристаллический дисплей (ЖК-дисплей) для отображения информации пользователю, и клавиатуру и указательное устройство, такое как мышь или шаровой манипулятор, посредством которого пользователь может предоставлять ввод в компьютер.
[0057] Признаки могут реализовываться в компьютерной системе, которая включает в себя внутренний интерфейсный компонент, такой как сервер данных, либо которая включает в себя промежуточный программный компонент, такой как сервер приложений или Интернет-сервер, либо которая включает в себя внешний интерфейсный компонент, такой как клиентский компьютер, имеющий графический пользовательский интерфейс или Интернет-браузер, либо любую их комбинацию. Компоненты системы могут соединяться посредством любой формы или среды цифровой передачи данных, такой как сеть связи. Примеры сетей связи включают в себя, например, локальную вычислительную сеть (LAN), глобальную вычислительную сеть (WAN) и компьютеры и сети, формирующие Интернет.
[0058] Компьютерная система может включать в себя клиенты и серверы. Клиент и сервер, в общем, являются удаленными друг от друга и типично взаимодействуют через сеть, к примеру, через описанную сеть. Взаимосвязь клиента и сервера осуществляется на основе компьютерных программ, работающих на соответствующих компьютерах и имеющих клиент-серверную взаимосвязь друг с другом.
[0059] Помимо этого, логические последовательности операций, проиллюстрированные на чертежах, не требуют показанного конкретного порядка или последовательного порядка для того, чтобы достигать требуемых результатов. Помимо этого, другие этапы могут предоставляться, или этапы могут исключаться из описанных потоков, и другие компоненты могут добавляться или удаляться из описанных систем. Соответственно, эти и другие реализации находятся в пределах объема прилагаемой формулы изобретения.
[0060] Выше описывается определенное число реализаций настоящего раскрытия. Тем не менее, следует понимать, что различные модификации могут вноситься без отступления от и объема настоящего раскрытия. Соответственно, эти и другие реализации находятся в пределах объема, определяемого прилагаемой формулой изобретения.