ИСПОЛЬЗОВАНИЕ ТАБЛИЦЫ ОДНОРАЗОВЫХ НОМЕРОВ ДЛЯ РАЗРЕШЕНИЯ СБОЯ ПАРАЛЛЕЛЬНЫХ ТРАНЗАКЦИЙ С ЦЕПОЧКАМИ БЛОКОВ
USING TABLE OF NONCES FOR RESOLVING FAILURE OF PARALLEL TRANSACTIONS WITH BLOCKCHAINS

Уровень техники
[0001] Системы распределенных реестров (DLS), которые также могут упоминаться как консенсусные сети и/или сети цепочек блоков (блокчейн), позволяют участвующим субъектам защищенно и неизменно хранить данные. DLS обычно упоминаются как сети цепочек блоков независимо от конкретных вариантов использования (например, криптовалют). Примерные типы сетей цепочек блоков могут включать в себя открытые сети цепочек блоков, закрытые сети цепочек блоков и консорциальные сети цепочек блоков. Открытая сеть цепочек блоков является общедоступной для всех субъектов в том, чтобы использовать DLS и участвовать в консенсусном процессе. Закрытая сеть цепочек блоков предоставляется для конкретного субъекта, который централизованно управляет разрешениями на считывание и запись. Консорциальная сеть цепочек блоков предоставляется для выбранной группы субъектов, которые управляют консенсусным процессом, и включает в себя уровень управления доступом.
[0002] В сетях цепочек блоков, консенсусный протокол выполняется для того, чтобы добавлять транзакции в блоки цепочки блоков. Консенсусный протокол может работать на основе одноразовых номеров (например, произвольных чисел, которые используются однократно), причем каждый узел в цепочке блоков использует одноразовый номер (nonce). Например, для каждой транзакции, которая должна добавляться, каждый узел использует одноразовый номер в попытке добавлять транзакцию в блок в цепочке блоков. В большинстве случаев, транзакции могут быть параллельными, что может приводить к использованию идентичного одноразового номера посредством нескольких узлов. Следовательно, может происходить сбой одной или более параллельных транзакций.
Сущность изобретения
[0003] Реализации настоящего раскрытия включают в себя машинореализуемые способы уменьшения сбоев параллельных транзакций в сетях цепочек блоков. Более конкретно, реализации настоящего раскрытия направлены на таблицу одноразовых номеров с множеством заранее заполняемых одноразовых номеров, чтобы избегать коллизии одноразовых номеров при обработке параллельных транзакций в сетях цепочек блоков.
[0004] В некоторых реализациях, действия включают в себя инициализацию таблицы одноразовых номеров, содержащей множество возможных позиций одноразовых номеров, причем каждая возможная позиция (slot) одноразового номера связана с индексом одноразового номера и состоянием и хранит соответствующее значение одноразового номера; прием запроса на значение одноразового номера от приложения, и в ответ, запрос значения одноразового номера из таблицы одноразовых номеров; прием значения одноразового номера в ответ на запрос, причем состояние возможной позиции одноразового номера, соответствующей значению одноразового номера, устанавливается как занятое; и в ответ на одно из успешности и сбоя транзакции с использованием значения одноразового номера, выполнение одного из: высвобождения значения одноразового номера в возможной позиции одноразового номера и установление состояния как незанятого, если транзакция является успешной, и установления состояния как незанятого, если произошел сбой транзакции. Другие реализации включают в себя соответствующие системы, оборудование и компьютерные программы, выполненные с возможностью выполнять действия способов, кодированных на компьютерных устройствах хранения.
[0005] Эти и другие реализации в необязательном порядке могут включать в себя один или более следующих признаков: высвобождение значения одноразового номера в возможной позиции одноразового номера включает в себя сохранение инкрементно увеличенного значения одноразового номера в возможной позиции одноразового номера; прием второго запроса на значение одноразового номера от приложения, и в ответ, запрос значения одноразового номера из таблицы одноразовых номеров и определение того, что состояние каждой возможной позиции одноразового номера в таблице одноразовых номеров является занятым, и в ответ, передача в приложение указания того, что все возможные позиции одноразовых номеров являются занятыми; таблица одноразовых номеров хранится в базе данных, и мост между приложением и базой данных принимает запросы на значения одноразовых номеров и избирательно предоставляет значения одноразовых номеров в приложение; приложение определяет то, представляет ли выполнение транзакции с использованием значения одноразового номера собой одно из успешности и сбоя, на основе одного или более сообщений, принимаемых посредством приложения из сети цепочек блоков; и состояние транзакции периодически опрашивается для определения того, возникло ли событие истечения времени ожидания.
[0006] Настоящее раскрытие также предоставляет один или более долговременных машиночитаемых носителей, соединенных с одним или более процессоров и имеющих сохраненные на себе инструкции, которые, при их исполнении одним или более процессорами, предписывают одному или более процессоров выполнять операции в соответствии с реализациями способов, предусмотренных в данном документе.
[0007] Настоящее раскрытие дополнительно предоставляет систему для реализации способов, предусмотренных в настоящем документе. Система включает в себя один или более процессоров и машиночитаемый носитель, соединенный с одним или более процессоров, имеющий сохраненные на себе инструкции, которые, при их исполнении одним или более процессорами, предписывают одному или более процессоров выполнять операции в соответствии с реализациями способов, предусмотренных в данном документе.
[0008] Следует принимать во внимание, что способы в соответствии с настоящим раскрытием могут включать в себя любую комбинацию аспектов и признаков, описанных в данном документе. Таким образом, способы в соответствии с настоящим раскрытием не ограничены комбинациями аспектов и признаков, конкретно описанными в данном документе, но также включают в себя любую предоставленную комбинацию аспектов и признаков.
[0009] Подробности одной или более реализаций настоящего раскрытия изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки и преимущества настоящего раскрытия должны становиться очевидными из описания и чертежей, а также из формулы изобретения.
Описание чертежей
[0010] Фиг. 1 иллюстрирует примерное окружение, которое может использоваться для того, чтобы выполнять реализации настоящего раскрытия.
[0011] Фиг. 2 иллюстрирует примерную концептуальную архитектуру в соответствии с реализациями настоящего раскрытия.
[0012] Фиг. 3 иллюстрирует примерную последовательность сигналов, чтобы инициализировать таблицу одноразовых номеров в соответствии с реализациями настоящего раскрытия.
[0013] Фиг. 4 иллюстрирует примерную последовательность сигналов, чтобы осуществлять выборку, высвобождать и сбрасывать значения одноразовых номеров из таблицы одноразовых номеров в соответствии с реализациями настоящего раскрытия.
[0014] Фиг. 5 иллюстрирует примерную последовательность сигналов, чтобы обновлять доступные значения одноразовых номеров в таблице одноразовых номеров в соответствии с реализациями настоящего раскрытия.
[0015] Фиг. 6 иллюстрирует примерный процесс поддержания таблицы одноразовых номеров, который может выполняться в соответствии с реализациями настоящего раскрытия.
[0016] Аналогичные ссылки с номерами на различных чертежах указывают аналогичные элементы.
Подробное описание изобретения
[0017] Реализации настоящего раскрытия включают в себя машинореализуемые способы уменьшения сбоев параллельных транзакций в сетях цепочек блоков. Более конкретно, реализации настоящего раскрытия направлены на таблицу одноразовых номеров с множеством заранее заполняемых одноразовых номеров, чтобы избегать коллизии одноразовых номеров при обработке параллельных транзакций в сетях цепочек блоков. В некоторых реализациях, действия включают в себя инициализацию таблицы одноразовых номеров, включающей в себя множество возможных позиций одноразовых номеров, причем каждая возможная позиция одноразового номера связана с индексом одноразового номера и состоянием и хранит соответствующее значение одноразового номера, прием запроса на значение одноразового номера от приложения, и в ответ, запрос значения одноразового номера из таблицы одноразовых номеров, прием значения одноразового номера в ответ на запрос, причем состояние возможной позиции одноразового номера, соответствующей значению одноразового номера, устанавливается как занятое, и в ответ на одно из успешности и сбоя транзакции с использованием значения одноразового номера, выполнение одного из: высвобождение значения одноразового номера в возможной позиции одноразового номера и установление состояния как незанятого, если транзакция является успешной, и установление состояния как незанятого, если произошел сбой транзакции.
[0018] Чтобы предоставлять дополнительный контекст для реализаций настоящего раскрытия, и как представлено выше, системы распределенных реестров (DLS), которые также могут упоминаться как консенсусные сети (например, состоящие из узлов между равноправными узлами) и сети цепочек блоков, позволяют участвующим субъектам защищенно и неизменно проводить транзакции и хранить данные. Хотя термин "цепочка блоков", в общем, связан с криптовалютной сетью биткоинов, цепочка блоков используется в данном документе, чтобы, в общем, означать DLS независимо от конкретных вариантов использования. Как представлено выше, сеть цепочек блоков может предоставляться в качестве открытой сети цепочек блоков, закрытой сети цепочек блоков или консорциальной сети цепочек блоков.
[0019] В открытой сети цепочек блоков, консенсусный процесс управляется посредством узлов консенсусной сети. Например, сотни, тысячи, даже миллионы субъектов могут взаимодействовать в открытой сети цепочек блоков, каждый из которых управляет, по меньшей мере, одним узлом в открытой сети цепочек блоков. Соответственно, открытая сеть цепочек блоков может считаться открытой сетью относительно участвующих субъектов. В некоторых примерах, большинство субъектов (узлов) должны подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков (распределенный реестр) сети цепочек блоков. Примерная открытая сеть цепочек блоков включает в себя сеть биткоинов, которая представляет собой платежную сеть между равноправными узлами. Сеть биткоинов использует распределенный реестр, называемый "цепочкой блоков". Тем не менее, как отмечено выше, термин "цепочка блоков" используется для того, чтобы, в общем, означать распределенные реестры без конкретной ссылки на сеть биткоинов.
[0020] В общем, открытая сеть цепочек блоков поддерживает открытые транзакции. Открытая транзакция совместно используется со всеми узлами в открытой сети цепочек блоков и хранится в глобальной цепочке блоков. Глобальная цепочка блоков представляет собой цепочку блоков, которая реплицируется по всем узлам. Таким образом, все узлы находятся в идеальном консенсусе состояния относительно глобальной цепочки блоков. Чтобы достигать консенсуса (например, соглашения с добавлением блока в цепочку блоков), консенсусный протокол реализуется в открытой сети цепочек блоков. Примерный консенсусный протокол включает в себя, без ограничения, доказательство выполнения работы (POW), реализованное в сети биткоинов.
[0021] В общем, закрытая сеть цепочек блоков предоставляется для конкретного субъекта, который централизованно управляет разрешениями на считывание и запись. Субъект управляет тем, какие узлы имеют возможность участвовать в сети цепочек блоков. Следовательно, закрытые сети цепочек блоков, в общем, упоминаются в качестве сетей с контролируемым доступом, которые устанавливают ограничения касательно того, кому разрешается участвовать в сети, и касательно их уровня участия (например, только в определенных транзакциях). Различные типы механизмов управления доступом могут использоваться (например, существующие участники голосуют по добавлению новых субъектов, контролирующий орган может управлять допуском).
[0022] В общем, консорциальная сеть цепочек блоков является закрытой между участвующими субъектами. В консорциальной сети цепочек блоков, консенсусный процесс управляется посредством авторизованного набора узлов, причем один или более узлов управляются посредством соответствующего субъекта (например, финансового учреждения, страховой компании). Например, консорциум из десяти (10) субъектов (например, финансовых учреждений, страховых компаний) может управлять консорциальной сетью цепочек блоков, каждый из которых управляет, по меньшей мере, одним узлом в консорциальной сети цепочек блоков. Соответственно, консорциальная сеть цепочек блоков может считаться закрытой сетью относительно участвующих субъектов. В некоторых примерах, каждый субъект (узел) должен подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков. В некоторых примерах, по меньшей мере, поднабор субъектов (узлов) (например, по меньшей мере, 7 субъектов) должен подписывать каждый блок для того, чтобы блок был достоверным и добавлялся в цепочку блоков.
[0023] Реализации настоящего раскрытия, в общем, подробнее описываются в данном документе со ссылкой на сети цепочек блоков. Предполагается, что реализации настоящего раскрытия могут быть реализованы в любом соответствующем типе сети цепочек блоков.
[0024] Как представлено выше, консенсусный протокол выполняется в сети цепочек блоков, чтобы добавлять блоки в цепочку блоков. Каждый блок может описываться как пакет транзакций, выполняемых между субъектами в сети цепочек блоков. Несколько узлов в сети цепочек блоков конкурируют через консенсусный протокол, чтобы добавлять свой блок в цепочку блоков. Транзакции и блоки записываются с использованием одноразовых номеров. Таким образом, каждый узел, участвующий в консенсусном протоколе, использует одноразовый номер. В некоторых примерах, одноразовый номер является случайным (произвольным) числом (например, фиксированной длины), которое используется только однократно. Например, если одноразовый номер используется для того, чтобы успешно записывать транзакцию в цепочку блоков, этот одноразовый номер не используется снова. Подробнее, каждая транзакция, записываемая в цепочку блоков, использует одноразовый номер. Одноразовый номер может использоваться множеством способов. Например, одноразовый номер может конкатенироваться с хеш-значением блока транзакций, так что хеш должен быть меньше или равен цели сети. В качестве другого примера, одноразовый номер может конкатенироваться со стоимостью транзакции, которая должна хешироваться.
[0025] В некоторых случаях, транзакции могут быть параллельными. Следовательно, значительное количество одноразовых номеров могут параллельно требоваться для того, чтобы записывать транзакции в цепочку блоков. Может возникать такая ситуация, что два или более узлов параллельно используют идентичный одноразовый номер. Если один узел успешно выполняет добавление своей транзакции в цепочку блоков, одноразовый номер более не является достоверным для использования, и в другом узле(ах) происходит сбой попытки записывать свою транзакцию(и) в цепочку блоков.
[0026] В дальнейшем подробнее описываются реализации настоящего раскрытия в данном документе с учетом вышеизложенного контекста. Более конкретно, и как представлено выше, реализации настоящего раскрытия направлены на таблицу одноразовых номеров с множеством заранее заполняемых одноразовых номеров, чтобы избегать коллизии одноразовых номеров при обработке параллельных транзакций в сетях цепочек блоков. Как подробнее описано в данном документе, модель вытеснения по приоритету используется таким образом, что в то время как одноразовый номер из таблицы одноразовых номеров используется посредством узла, одноразовый номер является недоступным для использования посредством любого другого узла. Если транзакция является успешной, одноразовый номер удаляется из таблицы одноразовых номеров, и новый одноразовый номер предоставляется на его месте. Если транзакция не является успешной, одноразовый номер высвобождается для использования и остается в таблице одноразовых номеров для многократного использования в последующей транзакции.
[0027] Фиг. 1 иллюстрирует примерное окружение 100, которое может использоваться для того, чтобы выполнять реализации настоящего раскрытия. В некоторых примерах, примерное окружение 100 обеспечивает возможность субъектам участвовать в сети 102 цепочек блоков. Примерное окружение 100 включает в себя вычислительные устройства 106, 108 и сеть 110. В некоторых примерах, сеть 110 включает в себя локальную вычислительную сеть (LAN), глобальную вычислительную сеть (WAN), Интернет либо комбинацию вышеозначенного и соединяет веб-узлы, пользовательские устройства (например, вычислительные устройства) и внутренние интерфейсные системы. В некоторых примерах, к сети 110 может осуществляться доступ по линии проводной и/или беспроводной связи.
[0028] В проиллюстрированном примере, вычислительные системы 106, 108 могут включать в себя любую соответствующую вычислительную систему, которая обеспечивает участие в качестве узла в сети 102 цепочек блоков. Примерные вычислительные устройства включают в себя, без ограничения, сервер, настольный компьютер, переносной компьютер, планшетное вычислительное устройство и смартфон. В некоторых примерах, вычислительные системы 106, 108 размещают (хостят) одну или более машинореализуемых услуг для взаимодействия с сетью 102 цепочек блоков. Например, вычислительная система 106 может хостить машинореализуемые услуги первого субъекта (например, пользователя A), такая как система управления транзакциями, которую использует первый субъект для того, чтобы управлять своими транзакциями с одним или более других субъектов (например, других пользователей). Вычислительная система 108 может хостить машинореализуемые услуги второго субъекта (например, пользователя B), такая как система управления транзакциями, которую использует второй субъект для того, чтобы управлять своими транзакциями с одним или более других субъектов (например, других пользователей).
[0029] В примере по фиг. 1, сеть 102 цепочек блоков представляется как сеть с равноправными узлами узлов, и вычислительные системы 106, 108 предоставляют узлы первого субъекта и второго субъекта, соответственно, которые участвуют в сети 102 цепочек блоков.
[0030] Фиг. 2 иллюстрирует примерную концептуальную архитектуру 200 в соответствии с реализациями настоящего раскрытия. Примерная концептуальная архитектура 200 включает в себя уровень 202 субъектов, уровень 204 предоставления хостящихся услуг и уровень 206 сети цепочек блоков. В проиллюстрированном примере, уровень 202 субъектов включает в себя три субъекта, субъект _1 (E1), субъект _2 (E2) и субъект _3 (E3), причем каждый субъект имеет соответствующую систему 208 управления транзакциями.
[0031] В проиллюстрированном примере, уровень 204 предоставления хостящихся услуг включает в себя интерфейсы 210 для каждой системы 210 управления транзакциями. В некоторых примерах, соответствующая система 208 управления транзакциями обменивается данными с соответствующим интерфейсом 210 по сети (например, по сети 110 по фиг. 1) с использованием протокола (например, протокола защищенной передачи гипертекста (HTTPS)). В некоторых примерах, каждый интерфейс 210 предоставляет соединение связи между соответствующей системой 208 управления транзакциями и уровнем 206 сети цепочек блоков. Более конкретно, интерфейс 210 обменивается данными с сетью 212 цепочек блоков уровня 206 сети цепочек блоков. В некоторых примерах, связь между интерфейсом 210 и уровнем 206 сети цепочек блоков проводится с использованием удаленных вызовов процедур (RPC). В некоторых примерах, интерфейсы 210 "хостят" узлы сети цепочек блоков для соответствующих систем 208 управления транзакциями. Например, интерфейсы 210 предоставляют интерфейс прикладного программирования (API) для доступа к сети 212 цепочек блоков.
[0032] Как описано в данном документе, сеть 212 цепочек блоков предоставляется в качестве сети с равноправными узлами, включающей в себя множество узлов 214, которые неизменно записывают информацию в цепочку 216 блоков. Хотя одна цепочка 216 блоков схематично проиллюстрирована, несколько копий цепочки 216 блоков предоставляются и поддерживаются через сеть 212 цепочек блоков. Например, каждый узел 214 хранит копию цепочки блоков. В некоторых реализациях, цепочка 216 блоков хранит информацию, связанную с транзакциями, которые выполняются между двумя или более субъектов, участвующих в сети 212 цепочек блоков.[0033]Фиг. 3 иллюстрирует примерную последовательность 300 сигналов, чтобы инициализировать таблицу одноразовых номеров (nonceTable) в соответствии с реализациями настоящего раскрытия. Для удобства, последовательность 300 сигналов описывается как выполняемая между компонентами в сети цепочек блоков. Как подробнее описано в данном документе, таблица одноразовых номеров записывает множество одноразовых номеров, которые могут использоваться, например, при выполнении консенсусного протокола в сети цепочек блоков, чтобы записывать транзакции в цепочку блоков в сети цепочек блоков. Таблица одноразовых номеров может хранить десятки, сотни, тысячи или любое соответствующее число значений одноразовых номеров. В некоторых примерах, размер таблицы одноразовых номеров сконфигурирован на основе ожидаемого числа и/или частоты одноразовых номеров, которые должны извлекаться. В некоторых примерах, размер таблицы одноразовых номеров может выбираться множеством способов. Например, размер может случайно инициализироваться, предварительно определяться на основе типа счета. В качестве другого примера, размер может задаваться в запросе на то, чтобы инициализировать таблицу одноразовых номеров. В некоторых реализациях, таблица одноразовых номеров включает в себя строки, причем каждая строка записывает индекс одноразового номера (nonceIndex), одноразовый номер (nonceValue) и состояние индекса одноразового номера (nonceIndexStatus).
[0034] В примере по фиг. 3, последовательность 300 сигналов осуществляется между приложением 302 (например, выполняемым в узле сети цепочек блоков), мостом 304 и базой 306 данных. Мост 304 хостится вместе с клиентскими приложениями. База 306 данных хранит таблицу одноразовых номеров, которая используется посредством приложения 302.
[0035] В некоторых реализациях, приложение 302 отправляет (308) запрос на то, чтобы инициализировать таблицу одноразовых номеров. В некоторых примерах, это возникает после того, как создается счет цепочки блоков, связанный с приложением 302. Мост 304 абстрагирует модель и реализацию услуг клиента цепочек блоков, чтобы поддерживать таблицу одноразовых номеров. Мост 304 располагается между приложением 302 и базой 306 данных, чтобы упрощать инициализацию таблицы одноразовых номеров.
[0036] В некоторых реализациях, мост 304 инициализирует каждый индекс одноразового номера в таблице одноразовых номеров посредством цикличного выполнения по размеру таблицы одноразовых номеров. Таблица одноразовых номеров хранится в базе 306 данных. Мост 304 (310) вставляет строку, соответствующую каждому индексу одноразового номера. Каждый индекс одноразового номера может иметь одно или более связанных с ним значений. Примерные значения включают в себя, без ограничения, идентификатор, адрес счета, версию одноразового номера, индекс одноразового номера, одноразовый номер, занятое состояние и последнее время занятости. Переменные, соответствующие значению одноразового номера, характеризуют одноразовый номер. Например, идентификатор представляет собой уникальную ссылку на одноразовый номер, адрес счета может означать один или более счетов, связанных с транзакциями, версия одноразового номера может указывать то, какая разновидность одноразового номера используется, и занятый указывает доступность одноразового номера для транзакции. В некоторых примерах, последнее время занятости может использоваться для того для определения того, истекло ли время ожидания, и должно высвобождаться, как подробнее описано в данном документе.
[0037] Фиг. 4 иллюстрирует примерную последовательность 400 сигналов, чтобы осуществлять выборку, высвобождать и сбрасывать значения одноразовых номеров из таблицы одноразовых номеров в соответствии с реализациями настоящего раскрытия. Для удобства, последовательность 400 сигналов описывается как выполняемая между компонентами в сети цепочек блоков. В примере по фиг. 4, последовательность 400 сигналов осуществляется между приложением 302 (например, выполняемым в узле сети цепочек блоков), мостом 304, базой 306 данных и цепочкой 402 блоков.
[0038] В соответствии с реализациями настоящего раскрытия, модель вытеснения по приоритету используется таким образом, что в то время как одноразовый номер из таблицы одноразовых номеров используется посредством узла (например, приложения 302), одноразовый номер является недоступным для использования посредством любого другого узла. Если транзакция является успешной, одноразовый номер удаляется из таблицы одноразовых номеров, и новый одноразовый номер предоставляется на его месте. Если транзакция не является успешной, одноразовый номер высвобождается для использования и остается в таблице одноразовых номеров для многократного использования в последующей транзакции. Посредством вытеснения по приоритету одноразового номера, в ходе использования, параллельные транзакции неспособны использовать идентичный одноразовый номер, что исключает сбои транзакций. В некоторых реализациях, и как подробнее описано в данном документе, модель вытеснения по приоритету включает в себя примитивы операций выборки, высвобождения и сброса.
[0039] В некоторых реализациях, операция выборки получает значение одноразового номера, которое должно использоваться в транзакции с цепочками блоков. Приложение 302 отправляет (410) сообщение одноразового номера выборки в мост 304. В свою очередь, мост 304 выполняет запрос в базу 306 данных с тем, чтобы запрашивать (412) незанятый индекс одноразового номера. Выполнение запроса в базу данных на предмет одноразового номера может выполняться посредством нижеприведенных примерных SQL-операторов:
update nonce_table
set
occupied=#uuid#,
last_occupied_time=now,
where id in (
select
id
from nonce_table
where
account_address=#account_address#, and
occupied is null
order by nonce_index asc
limit 1
)
В некоторых примерах, SQL-оператор выбирает все индексы одноразовых номеров с установленным в null занятым состоянием и выбирает наименьший индекс одноразового номера, который должен вытесняться по приоритету (например, занятый). Последнее время занятости выбранного индекса одноразового номера устанавливается равным now (например, текущей временной метке), чтобы предотвращать использование соответствующего значения одноразового номера в другой транзакции.
[0040] Если вытеснение по приоритету является успешным, мост 304 запрашивает (414) информацию относительно индекса одноразового номера, который вытеснен по приоритету (например, одноразового номера), и одноразовый номер возвращается (416) в приложение 302. Информация относительно индекса одноразового номера может запрашиваться с использованием нижеприведенного примерного SQL-запроса:
select
id,
account_address,
nonce_version,
nonce_index,
nonce_value,
occupied,
last_occupied_time
from nonce_table
where
occupied=#uuid#
Примерный SQL-оператор выбирает всю информацию одноразовых номеров из таблицы одноразовых номеров на основе занятого состояния, указываемого в начальном запросе на значение одноразового номера.
[0041] Тем не менее, если извлечение одноразового номера является безуспешным (например, все индексы одноразовых номеров являются занятыми), база 306 данных возвращает значение обновления в нуль, мост 304 (418) возвращает то, что все возможные позиции индексов одноразовых номеров в таблице одноразовых номеров являются занятыми, и выдает исключение.
[0042] Выбранное значение одноразового номера используется для того, чтобы инициировать (420) запись транзакции в цепочке 408 блоков. Посредством выполнения консенсусного протокола, цепочка 408 блоков отправляет (422) асинхронные сообщения, чтобы информировать узлы сети цепочек блоков в отношении состояний транзакций. Такие асинхронные сообщения принимаются посредством приложения 302. Система цепочек блоков не гарантирует то, что асинхронное сообщение должно успешно доставляться. Если асинхронное сообщение, указывающее состояние транзакции, не возвращается в приложение 302, занятое состояние индекса одноразового номера и значения одноразового номера не может сбрасываться и остается недоступным для использования с последующими транзакциями.
[0043] В некоторых реализациях, приложение 302 принимает сообщение, указывающее то, что транзакция либо является успешной, либо произошел ее сбой. Если транзакция является успешной, приложение информирует (424) мост 304, и мост 304 высвобождает индекс одноразового номера для будущего использования. В некоторых примерах, высвобождение включает в себя обновление одноразового номера (например, инкрементное увеличение значения одноразового номера) и установление занятого состояния в null. Обновление значения одноразового номера обеспечивает то, что используются только новые одноразовые номера, и ранее используемые одноразовые номера остаются недоступными для будущих транзакций. Если транзакция не является успешной, приложение 302 информирует (428) мост 304, и мост сбрасывает индекс одноразового номера посредством обновления занятого состояния на нуль. Таким образом, одноразовый номер остается неизменным и снова становится доступным для использования в будущей транзакции. Примерный первой и второй SQL-операторы могут предоставляться следующим образом:
update nonce_table
set
occupied=null,
last_occupied_time=null,
nonce_value=nonce_value+1
where
account_address=#accountAddress#, and
nonce_index=#nonceIndex#
update nonce_table
set
occupied=null,
last_occupied_time=null,
where
account_address=#accountAddress#, and
nonce_index=#nonceIndex#
Примерный первый SQL-оператор может выполняться для высвобождения (например, в ответ на успешность транзакции), и примерный второй SQL-оператор может выполняться для сброса (например, в ответ на сбой транзакции).
[0044] Фиг. 5 иллюстрирует примерную последовательность 500 сигналов, чтобы обновлять доступные значения одноразовых номеров в таблице одноразовых номеров в соответствии с реализациями настоящего раскрытия. Для удобства, последовательность 400 сигналов описывается как выполняемая между компонентами в сети цепочек блоков. В примере по фиг. 5, последовательность 500 сигналов осуществляется между приложением 302 (например, выполняемым в узле сети цепочек блоков), мостом 304, базой 306 данных и цепочкой 402 блоков.
[0045] Как отмечено выше, поскольку цепочка 402 блоков не гарантирует то, что доставленное сообщение должно успешно доставляться в приложение 302, некоторые возможные позиции одноразовых номеров являются занятыми и не ожидают сообщения для того, чтобы высвобождать/сбрасывать. С учетом этого, реализации настоящего раскрытия предоставляют задачу демона с тем, чтобы периодически проверять все занятые возможные позиции индексов одноразовых номеров. В некоторых примерах, последнее время занятости каждой возможной позиции индекса одноразового номера используется для того для определения того, истекло ли время ожидания, и то, состоит ли задача демона в том, чтобы высвобождать/сбрасывать возможную позицию индекса одноразового номера.
[0046] В примере по фиг. 5, приложение 302 отправляет (510) запланированный по времени опрос в мост 304. В ответ, мост (512) запрашивает базу 306 данных на предмет списка индексов одноразовых номеров с последним временем занятости, не установленным в null. Это обеспечивает возможность обновления всех значений индекса одноразового номера посредством использования одного способа для того, чтобы обновлять соответствующие значения, возвращаемые из оператора выбора. Мост 304 циклично проходит через каждое значение в списке, возвращаемом из базы 306 данных, чтобы запрашивать (514) состояние в реальном времени соответствующего значения одноразового номера в цепочке 402 блоков. Мост 304 принимает обновление и обновляет (516) состояние в последнее время занятости в базе 306 данных на основе результатов, возвращаемых из цепочки блоков 306. Если возникает истечение времени ожидания (например, разность между текущим временем и последним временем занятости превышает пороговое время), мост 304 непосредственно выполняет запрос относительно состояния в реальном времени, соответствующего возможной позиции одноразового номера цепочки 402 блоков, и обновляет базу 306 данных. При обновлении базы 306 данных, состояние занятости устанавливается равным нулю, и значение одноразового номера представляет собой результат запроса в реальном времени из цепочки 402 блоков.
[0047] Фиг. 6 иллюстрирует примерный процесс 600, который может выполняться в соответствии с реализациями настоящего раскрытия. В некоторых реализациях, примерный процесс 600 может выполняться с использованием одной или более машиноисполняемых программ, выполняемых с использованием одного или более вычислительных устройств. Примерный процесс 600 основан на одной или более вышеописанных последовательностей сигналов. В общем, примерный процесс направлен на использование таблицы одноразовых номеров в соответствии с реализациями настоящего раскрытия.
[0048] Таблица одноразовых номеров инициализируется (602). Как описано в данном документе, например, со ссылкой на фиг. 3, таблица одноразовых номеров включает в себя множество возможных позиций одноразовых номеров, причем каждая возможная позиция одноразового номера связана с индексом одноразового номера и состоянием и хранит соответствующее значение одноразового номера. Запрос на предмет одноразового номера принимается (604). Например, и как описано в данном документе со ссылкой на фиг. 4, запрос принимается, приложение и в ответ одноразовый номер запрашивается из таблицы одноразовых номеров посредством моста. Значение одноразового номера принимается в ответ на запрос (606). Как описано в данном документе, состояние возможной позиции одноразового номера, соответствующей значению одноразового номера, устанавливается как занятое (например, операция выборки по фиг. 4). В ответ на одно из успешности и сбоя транзакции с использованием значения одноразового номера, выполняется одно из следующего (610): высвобождение значения одноразового номера в возможной позиции одноразового номера и установление состояния как незанятого, если транзакция является успешной, и установление состояния как незанятого, если произошел сбой транзакции. Это описывается со ссылкой на операции высвобождения и сброса по фиг. 4.
[0049] Описанные признаки могут реализовываться в цифровой электронной схеме или в компьютерных аппаратных средствах, микропрограммном обеспечении, программном обеспечении либо в комбинациях вышеозначенного. Оборудование может реализовываться в компьютерном программном продукте, материально осуществленном на носителе информации (например, на машиночитаемом устройстве хранения) для выполнения посредством программируемого процессора; и этапы способа могут выполняться посредством программируемого процессора, выполняющего программу инструкций, чтобы выполнять функции описанных реализаций посредством обработки входных данных и формирования вывода. Описанные признаки могут быть реализованы преимущественно в одной или более компьютерных программ, которые выполняются в программируемой системе, включающей в себя, по меньшей мере, один программируемый процессор, соединенный с возможностью принимать данные и инструкции и передавать данные и инструкции в систему хранения данных, по меньшей мере, одно устройство ввода и, по меньшей мере, одно устройство вывода. Компьютерная программа представляет собой набор инструкций, которые могут использоваться, прямо или косвенно, в компьютере, чтобы выполнять определенную активность или обеспечивать определенный результат. Компьютерная программа может быть написана на любой форме языка программирования, включающей в себя компилированные или интерпретируемые языки, и она может развертываться в любой форме, в том числе в качестве автономной программы или в качестве модуля, компонента, вложенной процедуры или другого блока, подходящего для использования в вычислительном окружении.
[0050] Подходящие процессоры для выполнения программы инструкций включают в себя, в качестве примера, микропроцессоры общего и специального назначения и единственный процессор либо один из нескольких процессоров любого вида компьютера. В общем, процессор принимает инструкции и данные из постоянного запоминающего устройства или оперативного запоминающего устройства, или из того и из другого. Элементы компьютера могут включать в себя процессор для выполнения инструкций и одно или более запоминающих устройств для хранения инструкций и данных. Обычно, компьютер также может включать в себя или функционально соединяться с возможностью обмениваться данными с одним или более устройств хранения большой емкости для хранения файлов данных; такие устройства включают в себя магнитные диски, такие как внутренние жесткие диски и съемные диски; магнитооптические диски; и оптические диски. Устройства хранения, подходящие для материального осуществления компьютерных программных инструкций и данных, включают в себя все формы долговременного запоминающего устройства, включающие в себя в качестве примера полупроводниковые запоминающие устройства, таки как EPROM, EEPROM и устройства флэш-памяти; магнитные диски, такие как внутренние жесткие диски и съемные диски; магнитооптические диски; и CD-ROM- и DVD-ROM-диски. Процессор и запоминающее устройство могут дополняться посредством или включаться в специализированные интегральные схемы (ASIC).
[0051] Чтобы предоставлять взаимодействие с пользователем, признаки могут реализовываться на компьютере, имеющем устройство отображения, такое как монитор на электронно-лучевой трубке (CRT) или жидкокристаллический дисплей (ЖК-дисплей) для отображения информации пользователю, и клавиатуру и указательное устройство, такое как мышь или шаровой манипулятор, посредством которого пользователь может предоставлять ввод в компьютер.
[0052] Признаки могут реализовываться в компьютерной системе, которая включает в себя внутренний интерфейсный компонент, такой как сервер данных, либо которая включает в себя промежуточный программный компонент, такой как сервер приложений или Интернет-сервер, либо которая включает в себя внешний интерфейсный компонент, такой как клиентский компьютер, имеющий графический пользовательский интерфейс или Интернет-браузер, либо любую их комбинацию. Компоненты системы могут соединяться посредством любой формы или среды цифровой передачи данных, такой как сеть связи. Примеры сетей связи включают в себя, например, локальную вычислительную сеть (LAN), глобальную вычислительную сеть (WAN) и компьютеры и сети, формирующие Интернет.
[0053] Компьютерная система может включать в себя клиенты и серверы. Клиент и сервер, в общем, являются удаленными друг от друга и типично взаимодействуют через сеть, к примеру, описанную сеть. Взаимосвязь клиента и сервера осуществляется на основе компьютерных программ, работающих на соответствующих компьютерах и имеющих клиент-серверную взаимосвязь друг с другом.
[0054] Помимо этого, логические последовательности операций, проиллюстрированные на чертежах, не требуют показанного конкретного порядка или последовательного порядка для того, чтобы достигать требуемых результатов. Помимо этого, другие этапы могут предоставляться, или этапы могут исключаться из описанных потоков, и другие компоненты могут добавляться или удаляться из описанных систем. Соответственно, эти и другие реализации находятся в пределах объема прилагаемой формулы изобретения.
[0055] Выше описывается определенное число реализаций настоящего раскрытия. Тем не менее, следует понимать, что различные модификации могут вноситься без отступления от сущности и объема настоящего раскрытия. Соответственно, эти и другие реализации находятся в пределах объема прилагаемой формулы изобретения.