СИСТЕМА И СПОСОБ ДЛЯ ПОВЫШЕНИЯ БЕЗОПАСНОСТИ СМАРТ-КОНТРАКТА В ЦЕПОЧКЕ БЛОКОВ
SYSTEM AND METHOD FOR INCREASING SAFETY OF A SMART CONTRACT IN A CHAIN OF UNITS

Область техники, к которой относится изобретение
[0001] Данное раскрытие, в общем, относится к компьютерным технологиям и, в частности, к системам и способам для повышения безопасности смарт-контракта в цепочке блоков.
Уровень техники
[0002] Технология работы с цепочками блоков обеспечивает перспективу хранения данных децентрализованным способом. Данные могут сохраняться в последовательностях блоков данных, которые имеют взаимосвязь на основе предшествования между собой, которые формируют цепочку блоков. Цепочка блоков поддерживается посредством сети узлов, которые также отвечают за проверку достоверности данных до их сохранения в блоках. Когда криптографические и консенсусные технологии используются посредством узлов, данные, сохраненные в цепочке блоков, являются почти неизменными. Таким образом, сеть узлов также упоминается как консенсусная сеть цепочек блоков. В последнее время, технология работы с цепочками блоков расширена таким образом, что она предоставляет инфраструктуру для выполнения смарт-контрактов. Смарт-контракт представляет собой фрагмент кода, который может осуществляться в консенсусной сети цепочек блоков, чтобы выполнять бизнес-логику, заданную пользователями. Смарт-контракты могут содержать набор обещаний, заданных в цифровом формате, и содержать соглашения между сторонами, которые имеют релевантные договорные обязательства, оговоренные в кодах. Смарт-контракты могут проводить расчеты автоматически в зависимости от будущих подписей или инициирующих событий. Тем не менее, смарт-контракты на основе цепочек блоков подвержены злонамеренным атакам онлайн, таким как неавторизованные переводы активов. В силу этого обязательно повышать безопасность смарт-контрактов, чтобы, по меньшей мере, снижать эти риски.
Сущность изобретения
[0003] Различные варианты осуществления настоящего раскрытия сущности могут включать в себя системы, способы и энергонезависимые считываемые компьютером носители для повышения безопасности смарт-контракта в цепочке блоков. Согласно одному аспекту, система для повышения безопасности смарт-контракта содержит один или более процессоров и одно или более энергонезависимых считываемых компьютером запоминающих устройств, соединенных с одним или более процессорами и сконфигурированных с инструкциями, выполняемыми посредством одного или более процессоров, чтобы инструктировать системе выполнять операции, содержащие: получение первой транзакции и второй транзакции, обе из которых вызывают смарт-контракт, при этом первая транзакция ассоциирована с условием защиты; выполнение второй транзакции и обновление текущего состояния смарт-контракта; определение того, удовлетворяет или нет обновленное текущее состояние смарт-контракта условию защиты; в ответ на определение того, что обновленное текущее состояние удовлетворяет условию защиты, выполнение первой транзакции и запись второй и первой транзакций в новый блок данных для добавления в цепочку блоков; и в ответ на определение того, что обновленное текущее состояние не удовлетворяет условию защиты, запись второй транзакции в другой новый блок данных для добавления в цепочку блоков, без выполнения первой транзакции.
[0004] В некоторых вариантах осуществления, системе дополнительно инструктируется выполнять: в ответ на определение того, что обновленное текущее состояние не удовлетворяет условию защиты, возврат исключения при выполнении в вычислительное устройство, которое отправляет первую транзакцию.
[0005] В некоторых вариантах осуществления, текущее состояние содержит текущую цену транзакционного изделия смарт-контракта; и условие защиты ассоциировано с диапазоном цен, диапазоном количеств или временным диапазоном транзакционного изделия.
[0006] В некоторых вариантах осуществления, первая транзакция ассоциирована с заказом на покупку транзакционного изделия в диапазоне цен; и вторая транзакция ассоциирована с заказом на продажу для продажи транзакционного изделия.
[0007] В некоторых вариантах осуществления, условие защиты автоматически формируется на основе первой транзакции.
[0008] В некоторых вариантах осуществления, условие защиты отправляется посредством вычислительного устройства, которое отправляет первую транзакцию.
[0009] В некоторых вариантах осуществления, получение первой транзакции и второй транзакции содержит получение первой транзакции и второй транзакции из базы данных пулов.
[0010] В некоторых вариантах осуществления, множество узлов содержат запоминающее устройство для сохранения копии цепочки блоков в качестве реестра; и узлы выполнены с возможностью обновлять реестр, когда новый блок данных или другой новый блок данных добавляется в цепочку блоков.
[0011] Согласно другому аспекту, реализуемый компьютером способ для повышения безопасности смарт-контракта содержит: получение первой транзакции и второй транзакции, обе из которых вызывают смарт-контракт, при этом первая транзакция ассоциирована с условием защиты; выполнение второй транзакции и обновление текущего состояния смарт-контракта; определение того, удовлетворяет или нет обновленное текущее состояние смарт-контракта условию защиты; в ответ на определение того, что обновленное текущее состояние удовлетворяет условию защиты, выполнение первой транзакции и запись второй и первой транзакций в блок данных для добавления в цепочку блоков; и в ответ на определение того, что обновленное текущее состояние не удовлетворяет условию защиты, запись второй транзакции в другой блок данных для добавления в цепочку блоков, без выполнения первой транзакции.
[0012] Согласно другому аспекту, энергонезависимый считываемый компьютером носитель хранения данных сконфигурирован с инструкциями, выполняемыми посредством одного или более процессоров, чтобы инструктировать одному или более процессоров выполнять операции, содержащие: получение первой транзакции и второй транзакции, обе из которых вызывают смарт-контракт, при этом первая транзакция ассоциирована с условием защиты; выполнение второй транзакции и обновление текущего состояния смарт-контракта; определение того, удовлетворяет или нет обновленное текущее состояние смарт-контракта условию защиты; в ответ на определение того, что обновленное текущее состояние удовлетворяет условию защиты, выполнение первой транзакции и запись второй и первой транзакций в блок данных для добавления в цепочку блоков; и в ответ на определение того, что обновленное текущее состояние не удовлетворяет условию защиты, запись второй транзакции в другой блок данных для добавления в цепочку блоков, без выполнения первой транзакции.
[0013] Эти и другие признаки систем, способов и энергонезависимых считываемых компьютером носителей, раскрытых в данном документе, а также способы работы и функции связанных элементов структуры и комбинации частей и мер экономии при изготовлении должны становиться более очевидными при рассмотрении нижеприведенного описания и прилагаемой формулы изобретения со ссылкой на прилагаемые чертежи, все из которых составляют часть этого описания изобретения, при этом аналогичные ссылки с номерами обозначают соответствующие части на различных чертежах. Тем не менее, следует четко понимать, что чертежи служат только для целей иллюстрации и описания и не предназначены в качестве определения ограничений изобретения.
Краткое описание чертежей
[0014] Определенные признаки различных вариантов осуществления настоящей технологии подробно изложены в прилагаемой формуле изобретения. Лучшее понимание признаков и преимуществ технологии должно получаться со ссылкой на нижеприведенное подробное описание, которое излагает иллюстративные варианты осуществления, в которых используются принципы изобретения, и на прилагаемые чертежи, на которых:
[0015] Фиг. 1 иллюстрирует примерную цепочку блоков, в соответствии с различными вариантами осуществления.
[0016] Фиг. 2A иллюстрирует примерное вычислительное окружение для повышения безопасности смарт-контракта, в соответствии с различными вариантами осуществления.
[0017] Фиг. 2B иллюстрирует примерную базу данных пулов, в соответствии с различными вариантами осуществления.
[0018] Фиг. 3 иллюстрирует примерную модель выполнения смарт-контрактов, в соответствии с различными вариантами осуществления.
[0019] Фиг. 4 иллюстрирует блок-схему последовательности операций примерного способа для повышения безопасности смарт-контракта, в соответствии с различными вариантами осуществления.
[0020] Фиг. 5 иллюстрирует блок-схему последовательности операций примерного способа для повышения безопасности смарт-контракта, в соответствии с различными вариантами осуществления.
[0021] Фиг. 6 иллюстрирует блок-схему примерной компьютерной системы, в которой может реализовываться любой из вариантов осуществления, описанных в данном документе.
Подробное описание вариантов осуществления
[0022] Далее следует обратиться к подробной информации в примерных вариантах осуществления, примеры которых проиллюстрированы на прилагаемых чертежах. Нижеприведенное описание ссылается на прилагаемые чертежи, при этом идентичные номера на различных чертежах представляют идентичные или аналогичные элементы, если не указано иное. Реализации, изложенные в нижеприведенном описании примерных вариантов осуществления в соответствии с настоящим изобретением, не представляют все реализации в соответствии с изобретением. Вместо этого, они представляют собой просто примеры систем и способов в соответствии с аспектами, связанными с изобретением.
[0023] Смарт-контракты могут включать в себя соглашения в отношении процесса или потока обработки и описывать положения и обязательства, которые должны удовлетворяться посредством сторон. При работе, управляемый событиями конечный автомат может использоваться для того, чтобы анализировать положения смарт-контрактов. Стороны могут записывать подписи и другие неаннулируемые данные в совместно используемый реестр. Транзакции могут использоваться пользователями для того, чтобы вызывать и выполнять смарт-контракты. Транзакция означает любую связь между пользователями или между пользователем и финансовым объектом. Например, транзакция может означать покупку или продажу товара или услуг, оферту или возврат товаров или услуг, платежную транзакцию, кредитную транзакцию или другое аналогичное взаимодействие. Транзакция также может упоминаться как "запрос на проведение транзакции", "торговля (trade)" или "торговля (trading)".
[0024] В некоторых вариантах осуществления, смарт-контракт представляет собой контракт, реализованный, развернутый и выполняемый в окружении эфириумов. Смарт-контракты представляют собой оцифровку законных контрактов. Смарт-контракты развертываются, сохраняются и выполняются в виртуальной машине эфириумов или в различных узлах цепочки блоков. Смарт-контракты могут сохранять данные. Сохраненные данные могут использоваться для того, чтобы записывать информацию, факт, ассоциирования, балансы и любую другую информацию, требуемую для того, чтобы реализовывать логику для контрактов реального мира. Смарт-контракты могут быть аналогичными объектно-ориентированным классам. Смарт-контракт может вызывать другой смарт-контракт, такой как объектно-ориентированный объект, чтобы создавать и использовать объекты другого класса.
[0025] Технология работы с цепочками блоков использована для того, чтобы достигать оптимизации множества услуг, таких как услуги обработки транзакций в смарт-контрактах. Фиг. 1 иллюстрирует примерную цепочку блоков, в соответствии с различными вариантами осуществления. Как показано на фиг. 1, цепочка 100 блоков может включать в себя множество блоков 102 данных. Каждый блок может связываться с предыдущим блоком через криптографический хэш. Например, блок 2 связывается с блоком 1 через хэш 106 блока 1, блок n связывается с блоком n-1 через другой хэш блока n-1. Каждый блок 102 дополнительно включает в себя структуру данных. Структура данных может включать в себя, например, данные 104, соответствующие результатам выполнения смарт-контрактов, например, баланс на счете, чеки по поступлениям платежей. По мере того, как новые данные отправляются и проходят проверку достоверности, дополнительные блоки, включающие в себя новые данные, могут формироваться и добавляться в конец последнего блока цепочки 100 блоков посредством включения хэша предыдущего блока.
[0026] В некоторых вариантах осуществления, после приема запроса на проведение транзакции для неподтвержденной транзакции, узел цепочки блоков сохраняет запрос на проведение транзакции в пуле запоминающего устройства (подробнее описывается ниже со ссылкой на фиг. 2B) временно до того, как сеть цепочек блоков (например, один или более узлов) верифицирует неподтвержденную транзакцию посредством консенсуса и пакетирует транзакцию в цепочку блоков. В определенный момент, пул запоминающего устройства может сохранять определенное число неподтвержденных транзакций. Порядок для того, чтобы выполнять неподтвержденные транзакции в пуле запоминающего устройства, не определяется до того, как консенсусная сеть цепочек блоков пакетирует транзакции в цепочку блоков. Упорядочение транзакций затрагивает конечный результат выполнения смарт-контракта, который упоминается как зависимость от упорядочения транзакций (TOD).
σ
σ
σ
σ
σ
[0027] TOD-вопрос дополнительно описывается в контексте настоящего раскрытия сущности. В некоторых вариантах осуществления, блоки данных в цепочке блоков могут содержать набор транзакций, связанных со смарт-контрактом. Состояние смарт-контракта может обновляться несколько раз в течение каждого обновления цепочки блоков. В одном примере, цепочка блоков в данный момент находится в состоянии , и новый блок данных, который должен добавляться в цепочку блоков, включает в себя две транзакции, представленные посредством (), которые вызывают идентичный смарт-контракт, соответственно. Вследствие неопределенного порядка выполнения двух транзакций, точное состояние смарт-контракта не может определяться, когда каждая из двух транзакций вызывает выполнение смарт-контракта. Например, когда транзакция  вызывает смарт-контракт, она не может определять то, находится или нет контракт в состоянии , либо то, контракт выполнен на основе вызова транзакции , и в силу этого состояние контракта изменено с . Другими словами, когда транзакция  вызывает смарт-контракт, смарт-контракт может находиться в состоянии  или в состоянии '. Аналогично, когда транзакция  вызывает идентичный смарт-контракт, смарт-контракт может находиться в состоянии , или контракт выполняется согласно вызову транзакции  и завершает изменение состояния . Следовательно, состояния смарт-контракта, при вызове посредством двух транзакций, зависят от упорядочения выполнения транзакций  и .
[0028] Может возникать различие между исходным состоянием смарт-контракта, когда транзакция намеревается вызвать контракт, и фактическим состоянием смарт-контракта, когда соответствующее выполнение возникает вследствие вызова транзакции. Узел цепочки блоков (например, майнер цепочек блоков) может определять порядок выполнения этих транзакций и в силу этого определять порядок обновлений блока. Другими словами, конечное состояние смарт-контракта может зависеть от порядка вызова посредством узла цепочки блоков. Это упоминается как TOD.
[0029] TOD может вызывать риски нарушения безопасности при выполнении смарт-контрактов. Во-первых, если имеются параллельные вызовы смарт-контракта, даже если вызовы контракта являются незлоумышленными, вызовы могут создавать помехи друг другу и приводить к неожиданным результатам для пользователей, вызывающих контракт через транзакции. Во-вторых, злоумышленный пользователь может использовать преимущество TOD смарт-контрактов для того, чтобы получать несправедливую выгоду и даже красть активы других пользователей. Например, продавец может отправлять транзакцию продаж, чтобы резко повышать цену в идентичный период времени, когда покупатель отправляет транзакцию покупки с ожиданием покупки по первоначальной цене перед резким повышением. В такой ситуации, когда транзакция продаж и транзакция покупки должны добавляться в идентичный блок цепочки блоков, покупатель в итоге может платить резко повышенную цену, если транзакция продаж выполняется перед транзакцией покупки.
[0030] В контексте эфириума, некоторые способы, такие как пакетный аукцион и предварительная отправка, использованы для того, чтобы разрешать TOD-проблему. Хотя решение на основе пакетного аукциона позволяет разрешать TOD-проблему и предотвращать высокочастотную торговлю, эффективность выполнения одиночных транзакций снижается. Сбой одной транзакции должен приводить к сбою всех отправленных транзакций. Предварительная отправка транзакций до официального выполнения транзакций может избегать рисков TOD. Тем не менее, решение на основе предварительной отправки требует от обеих сторон достигать консенсуса по результату перед выполнением и в силу этого снижает эффективность выполнения. Ни одно из решений фундаментально не разрешает TOD-проблему.
[0031] Настоящие способы и системы предоставляют технические решения для того, чтобы, по меньшей мере, снижать остроту TOD-проблемы. Раскрытые типы операций представляют технологию, которая обязательно зависит от компьютерных систем и которая не существовала до эры появления компьютеров. Раскрытые способы и системы также улучшают функциональность компьютеров посредством повышения безопасности выполнения смарт-контрактов на основе цепочек блоков. Даже когда транзакции смарт-контракта реализуются в произвольном порядке посредством майнеров цепочек блоков, настоящие системы и способы обеспечивают возможность вызову транзакций смарт-контракта возвращать ожидаемый результат или исключение при выполнении. Могут предотвращаться неожиданные результаты. Например, когда пользователь (к примеру, покупатель) отправляет транзакцию, запрашивающую то, чтобы приобретать продукт по определенной цене, результат транзакции покупки, вызывающей смарт-контракт, может заключаться в осуществлении покупки товара по запрашиваемой цене или возврате сбоя, если цена изменена в смарт-контракте вследствие реализации другой транзакции. Таким образом, транзакция покупателя не может реализовываться по измененной цене, которая является неожиданной для покупателя. Соответственно, могут избегаться несанкционированные переводы активов, реализованные посредством мошеннических транзакций или манипулирования транзакциями со стороны продавца.
[0032] Фиг. 2A иллюстрирует примерное вычислительное окружение, например, сеть 200 цепочек блоков для выполнения смарт-контрактов в цепочке блоков, в соответствии с различными вариантами осуществления. Как показано на фиг. 2A, сеть 200 цепочек блоков может включать в себя множество узлов 202, базу 230 данных пулов и одно или более пользовательских вычислительных устройств 240, которые могут обмениваться данными между собой через одну или более сетей. Примерная сеть 220 (например, проводные или беспроводные соединения, Интернет и т.д.) может использовать один или более протоколов связи, например, протоколов сотовой связи, Wi-Fi-связи и других протоколов связи. Сеть 220 может быть основана на модели между равноправными узлами и/или клиент-серверной модели. В некоторых вариантах осуществления, множество узлов 202 могут содержать вычислительные устройства, включающие в себя один или более процессоров 204 и одно или более запоминающих устройств 206 (например, один или более энергонезависимых считываемых компьютером носителей хранения данных, сохраняющих инструкции), соединенных с одним или более процессорами 204. Узел 202 может представлять собой примерную систему для повышения безопасности смарт-контракта. Одно или более запоминающих устройств могут быть сконфигурированы с инструкциями, выполняемыми посредством одного или более процессоров, чтобы инструктировать системе (например, одному или более процессоров) выполнять операции, описанные в данном документе. В некоторых вариантах осуществления, процессор 204 может реализовываться частично или полностью в качестве одной или более логических схем. В некоторых вариантах осуществления, узлы 202 и пользовательские вычислительные устройства 240 могут включать в себя другие вычислительные ресурсы и/или иметь доступ (например, через одно или более соединений/сетей) к другим вычислительным ресурсам.
[0033] В некоторых вариантах осуществления, узел 202 может включать в себя механизм выполнения смарт-контрактов (например, виртуальную машину эфириумов). Механизм выполнения смарт-контрактов может включать в себя инструкции или программный код, сохраненный на запоминающем устройстве 206 и выполняемый посредством процессора 204. Когда механизм выполнения смарт-контрактов выполняется посредством процессора 204, механизм выполнения смарт-контрактов применяет параметры смарт-контракта, чтобы выполнять смарт-контракт. В некоторых вариантах осуществления, пользовательское вычислительное устройство 204 может сохранять инструкции или программный код, который при выполнении посредством процессора на пользовательском вычислительном устройстве 204, инструктирует пользовательскому вычислительному устройству 204 подготавливать посредством рендеринга интерфейс вызова на пользовательском вычислительном устройстве 240. Интерфейс вызова выполнен с возможностью предоставлять возможность пользователю вызывать смарт-контракт, чтобы реализовывать запрос на проведение транзакции. Интерфейс вызова может быть выполнен с возможностью позволять пользователю вводить условие защиты (например, ценовые условия товаров) наряду с транзакцией, отправленной пользователем. Механизм выполнения смарт-контрактов может быть выполнен с возможностью определять то, удовлетворяет или нет состояние смарт-контракта условию защиты, отправляемому наряду с транзакцией посредством пользовательского ввода.
[0034] В некоторых вариантах осуществления, база 230 данных пулов может быть доступной для множества узлов 202 распределенно. Например, база 230 данных пулов, соответственно, может сохраняться в запоминающих устройствах 206 множества узлов 202. Ссылаясь на фиг. 2B, проиллюстрирована примерная база 230 данных пулов, в соответствии с различными вариантами осуществления. Базы 230 данных пулов могут сохранять множество транзакций, отправленных посредством одного или более пользовательских вычислительных устройств 240, управляемых пользователями.
[0035] Снова ссылаясь на фиг. 2A, в некоторых вариантах осуществления, цепочка 100 блоков сохраняется децентрализованным способом на множестве узлов 202. В некоторых вариантах осуществления, некоторые узлы 202 могут проверять достоверность транзакций, которые они принимают через консенсус, и распространять прошедшие проверку достоверности транзакции в другие узлы 202. Соответственно, узлы 202 могут обновлять реестр 208 согласно прошедшим проверку достоверности транзакциям. Узлы 202 могут обмениваться данными между собой через сеть 220, чтобы передавать и принимать данные, связанные с реестром 208. Реестр 208 включает в себя блоки 102 данных, которые проходят проверку достоверности и добавлены в цепочку 100 блоков. По мере того, как новые блоки данных добавляются в реестр 208, узлы 202 могут передавать или совместно использовать новые блоки данных через сеть 220. Запоминающее устройство 206 узлов 202 может сохранять, по меньшей мере, часть реестра 208 цепочки 100 блоков.
[0036] В некоторых вариантах осуществления, некоторые узлы 202 могут представлять собой консенсусные узлы (например, майнеры цепочек блоков), которые выбирают то, какие транзакции следует включать в блок 102 данных, и при этом узлы 202 задают порядок транзакций, например, то, какие транзакции должны выполняться раньше, а какие транзакции должны реализовываться позже. Например, когда пользовательское вычислительное устройство 240, управляемое пользователем, отправляет запрос на проведение транзакции, транзакция может временно сохраняться в базе 230 данных пулов. Узел 202 (например, узел майнера) может выбирать время для того, чтобы выполнять транзакцию. Результат транзакции может зависеть от относительного порядка или распределения времени, которое узел 202 определяет для выполнения. Для простоты и краткости, настоящее раскрытие использует форму единственного числа узла 202. Специалисты в данной области техники должны принимать во внимание, что цепочка блоков может иметь несколько узлов 202, и один или более узлов 202 могут предусматриваться в обработке одной транзакции. Форма единственного числа узла 202 может представлять один или более узлов.
[0037] Альтернативно узлу 202, выделенная виртуальная машина эфириумов (например, установленная в/на одном или более компьютеров или серверов) может выполнять различные этапы, описанные в данном документе. Виртуальная машина эфириумов может содержать один или более процессоров и одно или более энергонезависимых считываемых компьютером запоминающих устройств, соединенных с одним или более процессорами и сконфигурированных с инструкциями, выполняемыми посредством одного или более процессоров, чтобы инструктировать виртуальной машине эфириумов выполнять операции, описанные в данном документе. Альтернативно, другие типы виртуальных машин или программного обеспечения могут использоваться вместо виртуальной машины эфириумов.
[0038] В некоторых вариантах осуществления, узел 202 может принимать транзакцию от пользователя через пользовательское вычислительное устройство 240. Узел 202 также может принимать условие защиты наряду с транзакцией от пользователя. В некоторых вариантах осуществления, интерфейс вызова пользовательского вычислительного устройства 240 может инструктировать пользователю добавлять условие защиты в транзакцию пользователя. Альтернативно, узел 202 может формировать условие защиты на основе контента транзакции, отправленной пользователем. Условие защиты может представлять собой цену товаров или услуг, количество товаров или услуг, время поставки товаров или доставки услуг и т.д. В некоторых вариантах осуществления, отправленные транзакции сохраняются в базе 230 данных пулов для выполнения в группе. Транзакция, ассоциированная с условием защиты, может предусматривать вызов смарт-контракта. Например, пользователь представляет собой покупателя, который отправляет транзакцию, которая вызывает смарт-контракт, причем смарт-контракт запрашивает покупку 10 единиц товаров по цене в один доллар. Условие защиты, ассоциированное с транзакцией, может заключаться в том, что цена товаров составляет один доллар (или диапазон, к примеру, меньше одного доллара), и транзакция не может реализовываться, когда условие защиты не удовлетворяется.
[0039] Условие защиты может добавляться в транзакцию, чтобы избегать неожиданного результата вследствие TOD. Условие защиты также может упоминаться как условие выполнения, условие защиты выполнения или условие. В некоторых вариантах осуществления, посредством сверки состояния смарт-контракта с условием защиты, узел 202 может реализовывать транзакцию, которая вызывает смарт-контракт, чтобы возвращать ожидаемый результат или возвращать сбой, с избеганием неожиданных результатов, например, покупки товаров или услуг по неожиданной цене. Другими словами, условие защиты может задаваться, чтобы защищать пользователя от перехода в неожиданную транзакцию, например, транзакцию с резко повышенной ценой.
[0040] В некоторых вариантах осуществления, узел 202 может определять текущее состояние смарт-контракта. Например, состояние смарт-контракта также может называться "общемировым состоянием" цепочки блоков. Общемировое состояние цепочки блоков может отражать самое обновленное состояние относительно всех транзакций, выполняемых для цепочки блоков. Например, каждый раз, когда набор транзакций реализован, общемировое состояние цепочки блоков может обновляться таким образом, чтобы отражать реализацию. Узел 202 может реализовывать транзакцию на основе условия защиты и текущего состояния смарт-контракта. На основе результата реализации транзакции, узел 202 может обновлять текущее состояние смарт-контракта на другое состояние (которое может быть идентичным или отличающимся от текущего состояния). Реализация транзакции на основе условия защиты и текущего состояния смарт-контракта может включать в себя определенное число следующих сценариев.
.
[0041] В некоторых вариантах осуществления, узел 202 может определять то, удовлетворяется или нет, согласно текущему состоянию σ смарт-контракта, условие c защиты транзакций (например, цена составляет один доллар), перед выполнением транзакции TВ текущем состоянии σ смарт-контракта, если условие c защиты не удовлетворяется , транзакция T может отбрасываться, как указано в следующем уравнении (1). В вышеприведенном примере, согласно текущему состоянию σ смарт-контракта, если цена товаров не составляет один доллар (например, цена резко повышена до двух долларов вследствие выполнения предшествующей транзакции), условие c не удовлетворяется, и эта транзакция может отбрасываться. Уравнение (1) также может упоминаться как правило .
TX
T
c
TX
T; σ
где и представляют отправленную транзакцию; представляет условие защиты транзакции или представляет общемировое состояние цепочки блоков;  указывает преобразование. В некоторых вариантах осуществления, если условие защиты не указывается в транзакции, можно считать то, что условия защиты не требуются для транзакции.
[0042] В некоторых вариантах осуществления, согласно текущему состоянию σ смарт-контракта, который должен вызываться посредством транзакции, если условие c защиты транзакции удовлетворяется , узел 202 может обновлять баланс смарт-контракта посредством значения ν. Например, узел 202 может суммировать или вычитать значение ν в или из баланса. Значение ν может иметь значение, определенное на основе контента транзакции. В некоторых вариантах осуществления, смарт-контракт может быть ассоциирован с запасами, сохраненными в сети 200 цепочек блоков, например, в базах 230 данных пулов или в одном или более узлов 202. Запасы могут сохранять числа изделий транзакций, их цены и другую связанную информацию изделий. Баланс смарт-контракта может означать число одного из изделий. Таким образом, когда текущее состояние смарт-контракта удовлетворяет условию транзакции, узел 202 может обновлять баланс смарт-контракта (например, число изделий в запасах), чтобы временно резервировать число изделий, которые должны приобретаться или продаваться посредством транзакции. В вышеприведенном примере, в текущем состоянии σ смарт-контракта, если цена товаров составляет один доллар, условие c защитытранзакции удовлетворяется, и узел 202 может обновлять баланс смарт-контракта посредством вычитания 10 единиц товаров, которые должны приобретаться, из баланса.
[0043] В другом примере, если продавец отправляет транзакцию, чтобы продавать товары (например, 15 единиц товаров) согласно смарт-контракту, и если текущее состояние смарт-контракта удовлетворяет условию защиты, ассоциированному с транзакцией продавца (например, контрактная цена совпадает с продажной ценой транзакции), узел 202 может обновлять баланс смарт-контракта на основе числа товаров, которые должны продаваться, посредством добавления 15 единиц товаров на баланс смарт-контракта. В некоторых вариантах осуществления, узел 202 также может обновлять баланс продавца или покупателя. Например, узел 202 может добавлять число товаров, которые должны приобретаться, на баланс покупателя, и сокращать число товаров, которые должны продаваться, с баланса продавца.
σ
σ
σ
σ
[0044] В некоторых вариантах осуществления, если обновление баланса смарт-контракта завершается удачно, узел 202 может изменять текущее состояние  смарт-контракта на переходное состояние '. Например, общемировое состояние цепочки блоков может изменяться из состояния  на переходное состояние '. Если обновление баланса смарт-контракта сбоит (например, отсутствуют достаточные запасы смарт-контракта, чтобы предоставлять определенное число товаров, которые должны приобретаться), транзакция не может продолжаться, и узел 202 может отбрасывать транзакцию. Состояние смарт-контракта может сохраняться в состоянии σ.
[0045] В некоторых вариантах осуществления, когда обновление баланса смарт-контракта завершается удачно, узел 202 может выполнять транзакцию посредством вызова или активации соответствующего кода смарт-контракта. Например, узел 202 может выполнять набор транзакций, которые временно сохраняются в базе 230 данных пулов, при этом набор транзакций включает в себя транзакцию, имеющую условие защиты, которое сверено с состоянием смарт-контракта. В некоторых вариантах осуществления, транзакции, которые должны выполняться в группе, могут иметь условие защиты. В некоторых вариантах осуществления, некоторые транзакции в группе могут не иметь условие защиты, и узел 202 предполагает то, что эти транзакции проходят проверку условий, как описано выше. Таким образом, сеть 200 цепочек блоков или узлы 202 могут выполнять существующие смарт-контракты, которые могут не иметь условий защиты.
σ
σ
[0046] В некоторых вариантах осуществления, при выполнении смарт-контракта, параметры l, ассоциированные с транзакцией, могут передаваться в один или более процессов или функций смарт-контракта, и один или более процессов или функций смарт-контракта могут выполняться. Если выполнение смарт-контракта может завершаться, узел 202 может изменять состояние смарт-контракта с переходного состояния ' на конечное состояние ʺ. Таким образом, реализация транзакции завершена. Такой процесс может представляться посредством следующего уравнения (2).
,
TX
T
c
TX
T; id
M
bal
σ
;
σ
σ
σ
σ
M
.
где и представляют отправленную транзакцию; представляет условие защиты транзакции или  представляет адрес смарт-контракта в цепочке блоков; представляет код выполнения смарт-контрактов или часть кода выполнения смарт-контрактов; l представляет параметры активации смарт-контрактов; представляет баланс счета смарт-контракта;  представляет, в состоянии , соответствующий код смарт-контракта в идентификаторе адреса представляет баланс счета смарт-контракта в идентификаторе адреса в состоянии ; , ' и ʺ представляют три общемировых состояния цепочки блоков;  указывает значение назначения;  и  указывают преобразование; ε представляет стек вызовов для выполнения кодавыполнения смарт-контрактов
[0047] В некоторых вариантах осуществления, согласно переходному состоянию σ' смарт-контракта, если выполнение смарт-контракта не может завершаться, и исключение при выполнении возникает, узел 202 может возвращать переходное состояние σ' смарт-контракта обратно в состояние σ. Например, общемировое состояние цепочки блоков может возвращаться из переходного состояния σ' обратно в исходное состояние σ. Исключение при выполнении может возникать, когда возникает ошибка в процессе выполнения, или текущее условие удовлетворяется. Например, выполнение осуществлялось в течение более чем предварительно определенного времени и по-прежнему осуществляется (также называется "тайм-аутом выполнения"), или число товаров, которые должны приобретаться, превышает запасы смарт-контракта и т.д. В некоторых вариантах осуществления, узел 202 может возвращать исключение при выполнении , указывающее то, что выполнение транзакции завершено неудачно. Эта ситуация может описываться в нижеприведенном уравнении (3).
TX
T
c
TX
T; id
M
bal
σ
;
σ
σ
σ
σ
M
;
где и представляют отправленную транзакцию; представляет условие защиты транзакции или представляет адрес смарт-контракта в цепочке блоков; является машинным кодом и представляет код выполнения смарт-контрактов; lпредставляет параметры активации смарт-контрактов; представляет баланс счета смарт-контракта;  представляет, в состоянии , соответствующий код смарт-контракта в идентификаторе адреса представляет баланс счета смарт-контракта в идентификаторе адресав состоянии ; , ' и '' представляют три общемировых состояния цепочки блоков;  указывает значение назначения;  и  указывают преобразование; ε представляет стек вызовов для выполнения кода выполнения смарт-контрактов представляет исключение при выполнении транзакции.
[0048] Примерная схема, описанная в уравнениях (1)-(3), обеспечивает то, что стороны, отправляющие транзакции, получают либо ожидаемый вывод, либо сбой транзакций. Покупатели могут удостоверяться в отношении того, что они не платят больше, чем цена, которую они согласуют при выдаче заказов на покупку. Помимо этого, схема может быть обратно совместимой. В существующих смарт-контрактах, условия защиты могут задаваться как "истинные" в качестве значения по умолчанию, и в силу этого нет необходимости изменять существующий код смарт-контракта, чтобы применять схему, описанную в уравнениях (1)-(3).
[0049] Ссылаясь на фиг. 3, проиллюстрирована примерная модель 300 выполнения смарт-контрактов, в соответствии с различными вариантами осуществления. Примерная модель 300 выполнения смарт-контрактов может представлять собой применение схемы, описанной выше со ссылкой на фиг. 2A-2B, и может реализовываться посредством одного или более объектов в сети 200 цепочек блоков, например, узла 202, пользовательского вычислительного устройства 240 и базы 230 данных пулов. Как показано на фиг. 3, продавец отправляет транзакцию TxB, и покупатель отправляет транзакцию TxA практически в течение идентичного периода времени. Период времени может представлять собой период времени, в течение которого цепочка блоков подтверждает отправки транзакций для проверки достоверности. В некоторых вариантах осуществления, две транзакции сохранены в базе 230 данных пулов временно. Транзакция TxA заключается в том, чтобы вызывать процесс "покупки" смарт-контракта X, чтобы покупать две единицы товаров (что представлено посредством "g=2" в транзакции TxA) по цене в 5$ ("p=5") согласно такому условию защиты, что цена товаров является фиксированной на уровне 5$ ("c='p==5'"). С другой стороны, транзакция TxB, которая отправляемая продавцом, заключается в том, чтобы выполнять процесс "продажи" смарт-контракта X, чтобы продавать все единицы товаров (например, 50 единиц, что представлено посредством "g=50") по цене в 6$ ("p=6").
[0050] Без знания существования транзакции TxB продавца, покупатель распознает то, что текущая контрактная цена составляет 5$, и в силу этого, ожидает завершать транзакцию TxA по цене 5$. Если транзакция TxA покупателя выполняется сначала, условие защиты для транзакции TxA удовлетворяется, и транзакция TxA может реализовываться нормально. Тем не менее, если транзакция TxB продавца выполняется сначала, цена всех единиц товаров в смарт-контракте X увеличивается до 6$, и состояние смарт-контракта X преобразуется в новое состояние. Следовательно, при дальнейшем выполнении транзакции TxA покупателя, согласно новому состоянию смарт-контракта X, условие защиты "c='p==5'" транзакции TxA покупателя не удовлетворяется, и в силу этого транзакция TxA покупателя завершается, поскольку покупатель и продавец не достигают соглашения относительно цены.
[0051] По сравнению со способами пакетного аукциона и предварительной отправки в эфириуме, настоящий механизм условного выполнения транзакций на основе защиты избегает зависимости от упорядочения между транзакциями посредством задания условия выполнения для каждой транзакции и в силу этого не затрагивает эффективность выполнения отдельной транзакции. Дополнительно, раскрытые системы и способы предотвращают дополнительные затраты вследствие нескольких стадий выполнения, вызываемые в силу способа на основе предварительной отправки.
[0052] Фиг. 4 иллюстрирует блок-схему последовательности операций примерного способа 400 для выполнения смарт-контрактов, в соответствии с различными вариантами осуществления. Способ 400 может реализовываться посредством системы, включающей в себя, например, один или более компонентов сети 200 цепочек блоков по фиг. 2A. Примерный способ 400 может реализовываться посредством одного или более узлов 202, пользовательского вычислительного устройства 240 и/или виртуальной машины эфириумов. Примерный способ 400 может реализовываться посредством одного или более компонентов (например, комбинации процессора, процесса и запоминающего устройства, одной или более логических схем и т.д.) узла 202. Способ 400 может реализовываться посредством нескольких систем, аналогично окружению 200. Операции способа 400, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 400 может включать в себя дополнительные, меньшее число или альтернативные этапы, выполняемые в различных порядках или параллельно.
[0053] Этап 402 содержит: получение первой транзакции (например, TxA) и второй транзакции (например, TxB), обе из которых вызывают смарт-контракт, при этом: первая транзакция ассоциирована с условием защиты. В некоторых вариантах осуществления, выполнение второй транзакции может изменять текущее состояние смарт-контракта (например, цену транзакционного изделия). В некоторых вариантах осуществления, условие защиты автоматически формируется на основе первой транзакции. В некоторых вариантах осуществления, условие защиты отправляется посредством вычислительного устройства, которое отправляет первую транзакцию. В некоторых вариантах осуществления, может быть предусмотрен или не предусмотрен порядок выполнения первой и второй транзакций, когда они принимаются, например, в базе данных пулов. Вторая транзакция может иметь или не иметь условия защиты.
[0054] В некоторых вариантах осуществления, текущее состояние содержит текущую цену транзакционного изделия смарт-контракта; и условие защиты ассоциировано с диапазоном цен (например, предварительно установленной ценой), диапазоном количеств или временным диапазоном транзакционного изделия. Например, первая транзакция ассоциирована с заказом на покупку транзакционного изделия в диапазоне цен; и вторая транзакция ассоциирована с заказом на продажу для продажи транзакционного изделия.
[0055] В некоторых вариантах осуществления, узлы цепочки блоков (например, узел 202) периодически выполнены с возможностью (например, каждые 10 минут) собирать неподтвержденные транзакции, чтобы сохранять в базе данных пулов; и получение первой транзакции и второй транзакции содержит получение первой транзакции и второй транзакции из пула неподтвержденных транзакций в базе данных пулов. Узел, собирающий и сохраняющий неподтвержденную транзакцию, не обязательно представляет собой узел, получающий неподтвержденную транзакцию из базы данных пулов. Пул неподтвержденных транзакций не имеет порядка выполнения, и после того, как получение из базы данных пулов и следующие этапы выполняются, порядок выполнения может определяться.
[0056] В некоторых вариантах осуществления, узлы цепочки блоков (например, узел 202) содержат запоминающее устройство для сохранения копии цепочки блоков в качестве реестра; и для того, чтобы поддерживать цепочку блоков для блоков данных, узлы цепочки блоков выполнены с возможностью обновлять реестр, когда новый блок данных или другой новый блок данных добавляется в цепочку блоков.
[0057] Этап 404 содержит: выполнение второй транзакции и обновление текущего состояния смарт-контракта. Первая и вторая транзакции могут подбираться случайно для выполнения. Этот этап захватывает сценарий, при котором вторая транзакция подбирается первой.
[0058] Альтернативно, в некоторых вариантах осуществления, первая транзакция может выполняться перед второй транзакцией, и текущее состояние смарт-контракта обновляется.
[0059] Этап 406 содержит: определение того, удовлетворяет или нет обновленное текущее состояние смарт-контракта условию защиты.
[0060] Этап 407 содержит: в ответ на определение того, что обновленное текущее состояние удовлетворяет условию защиты, выполнение первой транзакции и запись второй и первой транзакций в новый блок данных для добавления в цепочку блоков.
[0061] Этап 408 содержит: в ответ на определение того, что обновленное текущее состояние не удовлетворяет условию защиты, запись второй транзакции в другой новый блок данных для добавления в цепочку блоков, без выполнения первой транзакции. В некоторых вариантах осуществления, этап 408 дополнительно содержит: в ответ на определение того, что обновленное текущее состояние не удовлетворяет условию защиты, возврат исключения при выполнении в вычислительное устройство, которое отправляет первую транзакцию.
[0062] В некоторых вариантах осуществления, текущее состояние может изменяться посредством любого фактора, не ограниченного предшествующей транзакцией (например, второй транзакцией). Например, реализуемый компьютером способ для повышения безопасности смарт-контракта содержит: получение первой транзакции, вызывающей смарт-контракт, при этом первая транзакция ассоциирована с условием защиты; определение того, удовлетворяет или нет текущее состояние смарт-контракта условию защиты; в ответ на определение того, что текущее состояние удовлетворяет условию защиты, выполнение первой транзакции и запись первой транзакции в блок данных для добавления в цепочку блоков; и в ответ на определение того, что текущее состояние не удовлетворяет условию защиты, невыполнение первой транзакции.
[0063] Фиг. 5 иллюстрирует блок-схему последовательности операций примерного способа 500 для реализации транзакций, в соответствии с различными вариантами осуществления. Способ 500 может реализовываться в различных системах, включающих в себя, например, сеть 200 цепочек блоков по фиг. 2A. Примерный способ 500 может реализовываться посредством узла 202 и пользовательского вычислительного устройства 240. Способ 500 может реализовываться посредством нескольких систем, аналогичных сети 200 цепочек блоков. Операции способа 500 могут представлять собой вариант осуществления блоков 406 и 407 на фиг. 4. Операции способа 500, представленного ниже, имеют намерение быть иллюстративными. В зависимости от реализации, примерный способ 500 может включать в себя дополнительные, меньшее число или альтернативные этапы, выполняемые в различных порядках или параллельно.
[0064] На этапе 502, может определяться то, удовлетворяет или нет текущее состояние (также называемое "первым состоянием") смарт-контракта условию транзакции (например, условию транзакции, принимаемой на этапе 402 на фиг. 4). Текущее состояние может представлять собой "обновленное текущее состояние" на этапе 406 на фиг. 4. Например, условие может состоять в том, что цена товаров задается фиксированно равной значению, заданному в транзакции. На этапе 504, если определяется то, что первое состояние смарт-контракта не удовлетворяет условию транзакции, транзакция может исключаться. Например, в первом состоянии смарт-контракта, если цена товаров изменена на значение, отличающееся от значения, заданного в транзакции, условие не удовлетворяется, и транзакция может исключаться.
[0065] На этапе 506, если определяется то, что первое состояние смарт-контракта удовлетворяет условию транзакции, баланс смарт-контракта может обновляться. На этапе 508, может определяться то, завершается удачно или нет обновление баланса смарт-контракта. Если обновление завершается неудачно, транзакция может исключаться, как указано на этапе 504. На этапе 510, если обновление баланса смарт-контракта завершается удачно, первое состояние смарт-контракта может изменяться на второе состояние. На этапе 512, транзакция может реализовываться посредством выполнения смарт-контракта на основе параметров, ассоциированных с транзакцией. Например, значения параметров, ассоциированных с транзакцией, могут передаваться в один или более процессов смарт-контракта, и один или более процессов могут выполняться.
[0066] На этапе 514, определяется то, завершается удачно или нет выполнение смарт-контракта. На этапе 516, если определяется то, что выполнение смарт-контракта завершается удачно, состояние смарт-контракта может изменяться на третье состояние. Транзакция успешно реализована. На этапе 518, если выполнение смарт-контракта сбоит, исключение при выполнении может возвращаться. На этапе 520, состояние смарт-контракта может изменяться обратно на первое состояние. В некоторых вариантах осуществления, этап 407 на фиг. 4 может включать в себя этапы 506-516 на фиг. 5.
[0067] Технологии, описанные в данном документе, реализуются посредством одного или более вычислительных устройств специального назначения. Вычислительные устройства специального назначения могут представлять собой настольные компьютерные системы, серверные компьютерные системы, портативные компьютерные системы, карманные устройства, сетевые устройства или любое другое устройство либо комбинацию устройств, которые включают аппаратно-реализованную и/или программную логику для того, чтобы реализовывать технологии.
[0068] Фиг. 6 является блок-схемой, которая иллюстрирует примерную компьютерную систему 600, в которой может реализовываться любой из вариантов осуществления, описанных в данном документе. Система 600 может соответствовать узлу 202 или пользовательскому вычислительному устройству 240, описанному выше со ссылкой на фиг. 2A. Компьютерная система 600 включает в себя шину 602 или другой механизм связи для передачи информации, при этом один или более аппаратных процессоров 604 соединяются с шиной 602 для обработки информации. Аппаратный процессор(ы) 604, например, может представлять собой один или более микропроцессоров общего назначения.
[0069] Компьютерная система 600 также включает в себя основное запоминающее устройство 606, к примеру, оперативное запоминающее устройство (RAM), кэш и/или другие устройства динамического хранения данных, соединенные с шиной 602 для сохранения информации и инструкций, которые должны выполняться посредством процессора 604. Основное запоминающее устройство 606 также может использоваться для сохранения временных переменных или другой промежуточной информации во время выполнения инструкций, которые должны выполняться посредством процессора 604. Такие инструкции, при сохранении на носителях хранения данных, доступных для процессора 604, превращают компьютерную систему 600 в машину специального назначения, которая настраивается с возможностью выполнять операции, указываемые в инструкциях. Компьютерная система 600 дополнительно включает в себя постоянное запоминающее устройство 608 (ROM) или другое устройство статического хранения данных, соединенное с шиной 602 для сохранения статической информации и инструкций для процессора 604. Устройство 610 хранения данных, такое как магнитный диск, оптический диск или карта USB-флэш-памяти (флэш-накопитель) и т.д., предоставляется и соединяется с шиной 602 для сохранения информации и инструкций.
[0070] Компьютерная система 600 может реализовывать технологии, описанные в данном документе, с использованием настраиваемой аппаратно-реализованной логики, одной или более ASIC или FPGA, микропрограммного обеспечения и/или программной логики, которая в комбинации с компьютерной системой инструктирует или программирует компьютерную систему 600 таким образом, что она представляет собой машину специального назначения. Согласно одному варианту осуществления, операции, способы и процессы, описанные в данном документе, выполняются посредством компьютерной системы 600 в ответ на выполнение, посредством процессора(ов) 604, одной или более последовательностей из одной или более инструкций, содержащихся в основном запоминающем устройстве 606. Такие инструкции могут считываться в основное запоминающее устройство 606 с другого носителя хранения данных, такого как устройство 610 хранения данных. Выполнение последовательностей инструкций, содержащихся в основном запоминающем устройстве 606, инструктирует процессору(ам) 604 выполнять этапы процесса, описанные в данном документе. В альтернативных вариантах осуществления, аппаратно-реализованная схема может использоваться вместо или в комбинации с программными инструкциями.
[0071] Процессор(ы) 604 может соответствовать процессору 204, описанному выше, и основное запоминающее устройство 606, ROM 608 и/или хранилище 610 могут соответствовать запоминающему устройству 206, описанному выше. Основное запоминающее устройство 606, ROM 608 и/или хранилище 610 могут включать в себя энергонезависимые носители хранения данных. Термин "энергонезависимые носители" и аналогичные термины, при использовании в данном документе, означают любые носители, которые сохраняют данные и/или инструкции, которые инструктируют машине работать конкретным способом. Такие энергонезависимые носители может содержать долговременные носители и/или кратковременные носители. Долговременные носители включают в себя, например, оптические или магнитные диски, такие как устройство 610 хранения данных. Кратковременные носители включают в себя динамическое запоминающее устройство, такое как основное запоминающее устройство 606. Общие формы энергонезависимых носителей включают в себя, например, гибкий диск, дискету, жесткий диск, полупроводниковый накопитель, магнитную ленту или любой другой магнитный носитель хранения данных, CD-ROM, любой другой оптический носитель хранения данных, любой физический носитель с шаблонами отверстий, RAM, PROM и EPROM, флэш-EPROM, NVRAM, любую другую микросхему или картридж запоминающего устройства и сетевые версии вышеозначенного.
[0072] Компьютерная система 600 также включает в себя интерфейсный/сетевой порт 618 связи, соединенный с шиной 602. Интерфейсный/сетевой порт 618 связи предоставляет двунаправленное соединение для обмена данными с одной или более сетевых линий связи, которые соединяются с одной или более локальных сетей. Например, интерфейсный/сетевой порт 618 связи может представлять собой карту по стандарту цифровой сети с интегрированными услугами (ISDN), кабельный модем, спутниковый модем или модем, который предоставляет соединение для передачи данных с соответствующим типом телефонной линии. В качестве другого примера, интерфейсный/сетевой порт 618 связи может представлять собой карту локальной вычислительной сети (LAN), чтобы предоставлять соединение для передачи данных с совместимой LAN (или WAN-компонент, который должен обмениваться данными с WAN). Также могут реализовываться линии беспроводной связи. В любой такой реализации, интерфейсный/сетевой порт 618 связи отправляет и принимает электрические, электромагнитные или оптические сигналы, которые переносят потоки цифровых данных, представляющие различные типы информации.
[0073] Компьютерная система 600 может отправлять сообщения и принимать данные, включающие в себя программный код, через сеть(и), сетевую линию связи и интерфейсный/сетевой порт 618 связи. В Интернет-примере, сервер может передавать запрашиваемый код для прикладной программы через Интернет, ISP, локальную сеть и интерфейсный/сетевой порт 618 связи. Принимаемый код может выполняться посредством процессора 604 по мере того, как он принимается и/или сохраняется в устройстве 610 хранения данных или в другом энергонезависимом устройстве хранения данных для последующего выполнения.
[0074] Каждая из схем, механизмов, решений, процессов, способов и алгоритмов, описанных в предыдущих разделах, может быть осуществлена и полностью или частично автоматизирована посредством кодовых модулей, выполняемых посредством одной или более компьютерных систем или процессоров компьютера, содержащих компьютерные аппаратные средства. Процессы и алгоритмы могут реализовываться частично или полностью в специализированной схеме. В некоторых вариантах осуществления, процессор(ы) 604 может реализовываться частично или полностью в качестве одной или более логических схем, описанных выше.
[0075] Различные признаки и процессы, описанные выше, могут использоваться независимо друг от друга либо могут комбинироваться различными способами. Все возможные комбинации и субкомбинации имеют намерение попадать в пределы объема этого раскрытия сущности. Помимо этого, определенные этапы способа или процесса могут опускаться в некоторых реализациях. Способы и процессы, описанные в данном документе, также не ограничены конкретными последовательностями, и этапы или состояния, связанные с ними, могут выполняться в других последовательностях, которые являются подходящими. Например, описанные этапы или состояния могут выполняться в порядке, отличном от конкретно раскрытого порядка, либо несколько этапов или состояний могут комбинироваться в одном этапе или состоянии. Примерные этапы или состояния могут выполняться последовательно, параллельно или некоторым другим способом. Этапы или состояния могут добавляться или удаляться из раскрытых примерных вариантов осуществления. Примерные системы и компоненты, описанные в данном документе, могут быть сконфигурированы отлично от описанных конфигураций. Например, элементы могут добавляться, удаляться или перекомпоновываться по сравнению с раскрытыми примерными вариантами осуществления.
[0076] Различные операции примерных способов, описанных в данном документе, могут выполняться, по меньшей мере, частично, посредством алгоритма. Алгоритм может содержаться в программных кодах или инструкциях, сохраненных в запоминающем устройстве (например, на энергонезависимом считываемом компьютером носителе хранения данных, описанном выше). Такой алгоритм может содержать алгоритм машинного обучения. В некоторых вариантах осуществления, алгоритм машинного обучения может не программировать явно компьютеры с возможностью выполнять функцию, а может обучаться, из обучающих данных, возможности создавать модель прогнозирований, которая выполняет функцию.
[0077] Различные операции примерных способов, описанных в данном документе, могут выполняться, по меньшей мере, частично, посредством одного или более процессоров, которые временно выполнены с возможностью (например, посредством программного обеспечения) или постоянно выполнены с возможностью выполнять релевантные операции. Независимо от того, временно или постоянно выполнены с возможностью, такие процессоры могут составлять процессорнореализованные механизмы, которые работают с возможностью выполнять одну или более операций или функций, описанных в данном документе.
[0078] Аналогично, способы, описанные в данном документе, могут быть, по меньшей мере, частично процессорнореализованными, при этом конкретный процессор или процессоры представляют собой пример аппаратных средств. Например, по меньшей мере, некоторые операции способа могут осуществляться посредством одного или более процессоров или процессорнореализованных механизмов. Кроме того, один или более процессоров также могут работать с возможностью поддерживать выполнение релевантных операций в окружении "облачных вычислений" или в качестве "программного обеспечения как услуга" (SaaS). Например, по меньшей мере, некоторые операции могут выполняться посредством группы компьютеров (в качестве примеров машин, включающих в себя процессоры), причем эти операции являются доступным через сеть (например, Интернет) и через один или более соответствующих интерфейсов (например, через интерфейс прикладного программирования (API)).
[0079] Выполнение определенных операций может распределяться между процессорами, не только постоянно размещающимися в одной машине, но и развернутыми на определенном числе машин. В некоторых примерных вариантах осуществления, процессоры или процессорнореализованные механизмы могут быть расположены в одном географическом местоположении (например, в домашнем окружении, в офисном окружении или на ферме серверов). В других примерных вариантах осуществления, процессоры или процессорнореализованные механизмы могут быть распределены по ряду географических местоположений.
[0080] В этом подробном описании, несколько экземпляров могут реализовывать компоненты, операции или структуры, описанные в качестве одного экземпляра. Хотя отдельные операции одного или более способов проиллюстрированы и описаны в качестве отдельных операций, одна или более отдельных операций могут выполняться параллельно, и ничего не требует выполнения операций в проиллюстрированном порядке. Структуры и функциональность, представленные в качестве отдельных компонентов в примерных конфигурациях, могут реализовываться как комбинированная структура или компонент. Аналогично, структуры и функциональность, представленные в качестве одного компонента, могут реализовываться как отдельные компоненты. Эти и другие варьирования, модификации, добавления и улучшения попадают в пределы объема предмета изобретения в данном документе.
[0081] Любые описания процессов, элементы или блоки на блок-схемах последовательности операций способа, описанных в данном документе и/или проиллюстрированных на прилагаемых чертежах, должны пониматься как потенциально представляющие модули, сегменты или части кода, которые включают в себя одну или более выполняемых инструкций для реализации конкретных логических функций или этапов в процессе. Альтернативные реализации включены в пределы объема вариантов осуществления, описанных в данном документе, при этом элементы или функции могут удаляться, выполняться в порядке, отличном от показанного или поясненного порядка, в том числе практически параллельно или в обратном порядке, в зависимости от предусмотренной функциональности, как должны понимать специалисты в данной области техники.
[0082] Хотя общее представление предмета изобретения описывается со ссылкой на конкретные примерные варианты осуществления, различные модификации и изменения могут вноситься в эти варианты осуществления без отступления от более широкого объема вариантов осуществления настоящего раскрытия сущности. Такие варианты осуществления предмета изобретения могут упоминаться в данном документе отдельно или совместно посредством термина "изобретение" просто для удобства и без намерения умышленно ограничивать объем этой заявки каким-либо одним раскрытием сущности или идеей, если фактически раскрывается несколько из них.
[0083] Варианты осуществления, проиллюстрированные в данном документе, описываются с достаточной степенью детализации, чтобы обеспечивать возможность специалистам в данной области техники осуществлять на практике раскрытые идеи. Другие варианты осуществления могут использоваться и извлекаться из них таким образом, что структурные и логические замены и изменения могут вноситься без отступления от объема данного раскрытия сущности. В силу этого, подробное описание не должно рассматриваться в ограничивающем смысле, и объем различных вариантов осуществления задается только посредством прилагаемой формулы изобретения, наряду с полным диапазоном эквивалентов, на которые уполномочена такая формула изобретения.