СПОСОБ И АППАРАТУРА ДЛЯ ВЕРИФИКАЦИИ СОГЛАСОВАННОСТИ
METHOD AND APPARATUS FOR VERIFICATION OF CONSISTENCY

ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ
[1] Настоящая заявка основана на заявке и испрашивает приоритет заявки Китая 201710181068.8, поданной 24 марта 2017 г., полное содержание которой включено в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ
[2] Настоящая заявка относится к области компьютерных технологий и, в частности, к способам и аппаратам для верификации согласованности.
УРОВЕНЬ ТЕХНИКИ
[3] Блокчейн-технология может делать данные, хранящиеся в цепочке блоков, неизменяемыми и децентрализованными, и, таким образом, она привлекла внимание с момента ее появления. Наряду со все более глубокими исследованиями в блокчейн-технологии была реализована более безопасная среда хранения данных с блокчейн-технологией, и, кроме того, блокчейн-технология была использована для оптимизации различных служб, таких как службы транзакций.
[4] В настоящее время после приема запроса транзакции, отправленного клиентом, узел блокчейна будет сохранять запрос транзакции в самом себе. В то же время узел блокчейна будет дополнительно широковещательно передавать запрос транзакции на другие узлы блокчейна в согласованной сети, а другие узлы блокчейна будут соответственно сохранять принятый запрос транзакции в самом себе.
[5] На этапе верификации согласованности (консенсуса) узел блокчейна должен сначала получить множество запросов транзакций из сохраненных в нем запросов транзакций и выполнить верификацию законности асимметричной подписи в отношении этих запросов транзакций. Когда определено, что эти запросы транзакций проходят верификацию законности асимметричной подписи, узел блокчейна упаковывает эти запросы транзакций в предварительно обработанный блок и широковещательно передает его другим узлам блокчейна во всей согласованной сети. После приема предварительно обработанного блока другие узлы блокчейна в первую очередь выполняют верификацию законности асимметричной подписи в отношении всех запросов транзакций, содержащихся в предварительно обработанном блоке, и когда определено, что эти запросы транзакций прошли верификацию законности асимметричной подписи, выполняют верификацию согласованности в отношении этих запросов транзакций, чтобы определить, нужно ли сохранять эти запросы транзакций в форме блока в цепочке блоков.
[6] Как показано в вышеописанном процессе, на этапе верификации согласованности узлу блокчейна необходимо выполнить относительно сложную обработку подлежащих согласованию запросов транзакций, прежде чем он сможет упаковать эти запросы транзакций в предварительно обработанный блок и широковещательно передать его другим узлам блокчейна в согласованной сети. Другим узлам блокчейна также необходимо выполнить процессы в отношении предварительно обработанного блока, прежде чем они смогут выполнить верификацию согласованности запросов транзакций, содержащихся в предварительно обработанном блоке. Поэтому в соответствии с предшествующим уровнем техники процесс, вовлеченный в этап согласования, является относительно сложным, и процесс согласования занимает слишком много времени, что, следовательно, снижает эффективность верификации согласованности в блокчейн-транзакциях.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[7] Варианты осуществления настоящей заявки предоставляют примерные системы и способы для верификации согласованности, чтобы, по меньшей мере, уменьшить низкую эффективность верификации согласованности в блокчейн-транзакциях в предшествующем уровне техники.
[8] Согласно одному аспекту способ верификации согласованности, реализуемый посредством первого узла блокчейна в согласованной сети, может содержать: прием запроса транзакции от клиента и выполнение первой верификации безопасности в отношении запроса транзакции; в ответ на определение, что запрос транзакции прошел первую верификацию безопасности, сохранение запроса транзакции и широковещательную передачу этого запроса транзакции каждому из вторых узлов блокчейна в согласованной сети, вынуждая каждый второй узел блокчейна сохранять запрос транзакции в ответ на то, что второй узел блокчейна определяет, что запрос транзакции прошел вторую верификацию безопасности; выполнение предварительной обработки в отношении по меньшей мере одного сохраненного запроса транзакции в ответ на определение, что заранее установленное условие удовлетворено, чтобы получить и сохранить предварительно обработанный блок; и широковещательную передачу полученного предварительно обработанного блока на вторые узлы блокчейна, вынуждая вторые узлы блокчейна выполнять верификацию согласованности в отношении полученного предварительно обработанного блока.
[9] Согласно другому аспекту способ верификации согласованности, реализуемый вторым узла блокчейна, может содержать: прием запроса транзакции, широковещательно передаваемого первым узлом блокчейна, и выполнение второй верификации безопасности в отношении запроса транзакции; в ответ на определение, что запрос транзакции прошел вторую верификацию безопасности, сохранение запроса транзакции; и в ответ на прием предварительно обработанного блока, широковещательно передаваемого первым узлом блокчейна, выполнение верификации согласованности в отношении предварительно обработанного блока.
[10] Варианты осуществления настоящей заявки обеспечивают аппаратуру для верификации согласованности, содержащую: модуль приема, сконфигурированный для приема запроса транзакции от клиента и выполнения первой верификации безопасности в отношении запроса транзакции; модуль хранения, выполненный с возможностью сохранять, при определении того, что запрос транзакции прошел первую верификацию безопасности, запрос транзакции и широковещательно передавать запрос транзакции каждому второму узлу цепочки блоков, так что каждый второй узел блокчейна сохраняет запрос транзакции при определении того, что запрос транзакции прошел вторую верификацию безопасности; модуль предварительной обработки, сконфигурированный для выполнения предварительной обработки по меньшей мере одного сохраненного запроса транзакции при определении того, что заданное условие удовлетворяется, для получения и сохранения предварительно обработанного блока; модуль захвата, выполненный с возможностью захватывать, при выполнении верификации согласованности, предварительно обработанный блок и широковещательно передавать его всем вторым узлам блокчейна в согласованной сети, чтобы выполнять верификацию согласованности в отношении захваченного предварительно обработанного блока по всем вторым узлам блокчейна.
[11] Согласно другому аспекту аппаратура в согласованной сети для верификации согласованности может содержать процессор и невременный машиночитаемый носитель данных, на котором хранятся инструкции, которые при выполнении процессором вынуждают аппаратуру выполнять способ. Способ может содержать: прием запроса транзакции от клиента и выполнение первой верификации безопасности в отношении запроса транзакции; в ответ на определение, что запрос транзакции прошел первую верификацию безопасности, сохранение запроса транзакции и широковещательную передачу запроса транзакции каждому второму узлу блокчейна в согласованной сети, вынуждение каждого второго узла блокчейна сохранять запрос транзакции в ответ на то, что второй узел блокчейна определяет, что запрос транзакции прошел вторую верификацию безопасности; выполнение предварительной обработки в отношении по меньшей мере одного сохраненного запроса транзакции в ответ на определение, что предварительно заданное условие удовлетворено, для получения и сохранения предварительно обработанного блока; и широковещательную передачу полученного предварительно обработанного блока на вторые узлы блокчейна, вынуждение вторых узлов блокчейна выполнять верификацию согласованности в отношении полученного предварительно обработанного блока.
[12] Согласно другому аспекту первый узел блокчейна в согласованной сети может содержать множество аппаратур и по меньшей мере одну память транзакций. Каждая аппаратура может содержать процессор и невременный машиночитаемый носитель, на котором хранятся инструкции, которые при исполнении процессором вынуждают аппаратуру выполнять способ. Способ может содержать: прием запроса транзакции от клиента и выполнение первой верификации безопасности в отношении запроса транзакции; в ответ на определение, что запрос транзакции прошел первую верификацию безопасности, сохранение запроса транзакции и широковещательную передачу запроса транзакции каждому второму узлу блокчейна в согласованной сети, вынуждая каждый второй узел блокчейна сохранять запрос транзакции в ответ на то, что второй узел блокчейна определил, что запрос транзакции прошел вторую верификацию безопасности; выполнение предварительной обработки по меньшей мере одного сохраненного запроса транзакции в ответ на определение, что предварительно установленное условие удовлетворено, для получения и сохранения предварительно обработанного блока; и широковещательную передачу полученного предварительно обработанного блока на вторые узлы блокчейна, вынуждая вторые узлы блокчейна выполнять верификацию согласованности в отношении полученного предварительно обработанного блока.
[13] Согласно другому аспекту аппаратура для верификации согласованности может содержать процессор и невременный машиночитаемый носитель данных, на котором хранятся инструкции, которые при исполнении процессором вынуждают аппаратуру выполнять способ. Способ может содержать: прием запроса транзакции, широковещательно передаваемого посредством первого узла блокчейна, и выполнение второй верификации безопасности в отношении запроса транзакции; сохранение, в ответ на определение, что запрос транзакции прошел вторую верификацию безопасности, запроса транзакции; и выполнение верификации согласованности в ответ на прием предварительно обработанного блока, широковещательно передаваемого посредством первого узла блокчейна, в отношении предварительно обработанного блока.
[14] Согласно другому аспекту второй узел блокчейна может содержать множество аппаратур и по меньшей мере одну память транзакций. Каждая аппаратура может содержать процессор и невременный машиночитаемый носитель данных, на котором хранятся инструкции, которые при исполнении посредством процессора вынуждают аппаратуру выполнять способ. Способ может содержать: прием запроса транзакции, широковещательно передаваемого посредством первого узла блокчейна, и выполнение второй верификации безопасности в отношении запроса транзакции; сохранение в ответ на определение, что запрос транзакции прошел вторую верификацию безопасности, запроса транзакции; и выполнение верификации согласованности в ответ на прием предварительно обработанного блока, широковещательно передаваемого посредством первого узла блокчейна, в отношении предварительно обработанного блока.
[15] Варианты осуществления настоящей заявки предоставляют аппаратуру для верификации согласованности, содержащую: модуль приема запроса, сконфигурированный для приема запроса транзакции, широковещательно передаваемого посредством первого узла блокчейна, и выполнения второй верификации безопасности в отношении запроса транзакции; модуль сохранения запросов, сконфигурированный для сохранения, при определении того, что запрос транзакции прошел вторую верификацию безопасности, запроса транзакции; модуль верификации, сконфигурированный, чтобы выполнять верификацию согласованности при приеме предварительно обработанного блока, широковещательно передаваемого посредством первого узла блокчейна, в отношении предварительно обработанного блока.
[16] В некоторых вариантах осуществления настоящего раскрытия после приема запроса транзакции от клиента первый узел блокчейна может выполнять первую верификацию безопасности в отношении запроса транзакции вместо ожидания этапа верификации согласованности для выполнения первой верификации безопасности в отношении запроса транзакции, что значительно упрощает верификацию согласованности. Кроме того, перед этапом верификации согласованности первый узел блокчейна может получать по меньшей мере один запрос транзакции из запросов транзакций, сохраненных в нем, и обработать полученные запросы транзакций, чтобы получить предварительно обработанный блок. Таким образом, первый узел блокчейна может непосредственно передавать на этапе верификации согласованности ранее полученный предварительно обработанный блок на все вторые узлы блокчейна в согласованной сети, что значительно упрощает процесс на этапе верификации согласованности, сокращает время, затрачиваемое на этап верификации согласованности, и повышает эффективность согласованности для транзакций блокчейна.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[17] Прилагаемые чертежи, описанные в данном документе, используются для обеспечения дополнительного понимания настоящего раскрытия. Иллюстративные варианты осуществления и их описание являются просто примерными и не ограничивают настоящее раскрытие. На прилагаемых чертежах:
[18] Фиг. 1 является схематической диаграммой процесса верификации согласованности согласно варианту осуществления настоящего раскрытия;
[19] Фиг. 2 является схематической диаграммой подробного процесса верификации законности асимметричной подписи, выполняемой посредством всей согласованной сети в отношении запроса транзакции согласно варианту осуществления настоящего раскрытия.
[20] Фиг. 3 является схематической диаграммой определения значения характеристики, подлежащего верификации, согласно варианту осуществления настоящего раскрытия;
[21] Фиг. 4 является схематической диаграммой кластера серверов в соответствии с вариантом осуществления настоящего раскрытия;
[22] Фиг. 5 является схематической диаграммой аппаратуры для верификации согласованности согласно варианту осуществления настоящего раскрытия; и
[23] Фиг. 6 является схематической диаграммой другой аппаратуры для верификации согласованности согласно варианту осуществления настоящего раскрытия.
ПОДРОБНОЕ ОПИСАНИЕ
[24] В настоящее время процесс, в котором узел блокчейна выполняет обработку транзакции, по существу, является следующим: клиент отправляет запрос транзакции на узел блокчейна, а узел блокчейна отправляет принятый запрос транзакции в форме широковещательной передачи на другие узлы блокчейна; и другие узлы блокчейна сохраняют принятый запрос транзакции. Узел блокчейна, который отправляет запрос транзакции другим узлам блокчейна, также сохраняет запрос транзакции в самом себе.
[25] В согласованной сети, сформированной посредством узлов блокчейна, каждый узел блокчейна имеет право инициировать запрос согласования к другим узлам блокчейна. Узел блокчейна может сортировать запросы транзакций, хранящиеся в нем, для того, чтобы получить очередь запросов транзакций и сгенерировать хэш-значение для очереди запросов транзакций. Затем узел блокчейна может помещать очередь запросов транзакций и хэш-значение в предварительно обработанный блок и отправлять этот предварительно обработанный блок в форме широковещательной передачи другим узлам блокчейна для верификации согласованности.
[26] В процессе верификации согласованности после приема предварительно обработанного блока другие узлы блокчейна выполняют верификацию безопасности, такую как верификация законности асимметричной подписи, в отношении всех запросов транзакций, содержащихся в предварительно обработанном блоке. Например, узел блокчейна может разрешать все запросы транзакций, содержащиеся в предварительно обработанном блоке, в соответствии с открытым криптографическим ключом, которым он обладает, чтобы верифицировать, является ли каждый запрос транзакции законным запросом транзакции.
[27] Кроме того, всякий раз, когда узел блокчейна принимает запрос транзакции от клиента, узел блокчейна передает запрос транзакции другим узлам блокчейна, и, поэтому каждый узел блокчейна обычно может сохранить в себе запросы транзакций, принятые посредством всей согласованной сети. На основании этого, после приема предварительно обработанного блока другие узлы блокчейна будут выполнять верификацию целостности на основе хэш-значения в отношении всех запросов транзакций в предварительно обработанном блоке. А именно, узел блокчейна может находить запросы транзакций, содержащиеся в предварительно обработанном блоке, из запросов транзакций, хранящихся в нем самом, и сортировать найденные запросы транзакций в последовательности, в которой запросы транзакций скомпонованы в предварительно обработанном блоке, для получения очереди запросов транзакций. Затем узел блокчейна может генерировать хэш-значение для очереди запросов транзакций, а затем сравнить полученное хэш-значение с хэш-значением, содержащимся в предварительно обработанном блоке, чтобы определить, были ли изменены запросы транзакций в предварительно обработанном блоке.
[28] В соответствии с верификацией безопасности и верификацией целостности на основе хэш-значения, выполненными в отношении предварительно обработанного блока, каждый узел блокчейна будет получать свой собственный результат верификации, касающийся того, является ли предварительно обработанный блок законным в целом, и широковещательно передавать результат верификации, полученный им самим, в форме широковещательной передачи к другим узлам блокчейна.
[29] В соответствии с результатами верификации, отправленными другими узлами блокчейна, и результатом верификации, полученным им самим в отношении предварительно обработанного блока, каждый узел блокчейна будет получать исчерпывающие результаты верификации посредством всех узлов блокчейна во всей согласованной сети относительно того, прошел ли предварительно обработанный блок, и широковещательно передавать полученный исчерпывающий результат верификации, снова в форме широковещательной передачи, другим узлам блокчейна.
[30] После приема взаимно широковещательно передаваемых исчерпывающих результатов верификации каждый узел блокчейна в согласованной сети будет дополнительно определять, являются ли большинство исчерпывающих результатов верификации, полученных посредством всех узлов блокчейна в согласованной сети, прошедшими верификацию. Если да, все запросы транзакций в предварительно обработанном блоке сохраняются в их собственных цепочках блоков в форме блока; если нет, то определяется, что запросы транзакций в предварительно обработанном блоке не прошли верификацию согласованности.
[31] В соответствии с описанным выше процессом, когда узел блокчейна выполняет верификацию согласованности в отношении запросов транзакций согласно предшествующему уровню техники, процесс верификации согласованности является относительно сложным, и процесс верификации согласованности занимает слишком много времени, что приводит к низкой эффективности обработки блокчейн-транзакций.
[32] Чтобы эффективно решить вышеупомянутую проблему, первый узел блокчейна, как раскрыто, может выполнять верификацию безопасности и генерировать предварительно обработанный блок до этапа верификации согласованности. Другими словами, первый узел блокчейна может выполнять, по меньшей мере, часть процесса, включенного в этап верификации согласованности предшествующего уровня техники до этапа верификации согласованности, что значительно упрощает процесс верификации согласованности, сокращает время, затрачиваемое на этап верификации согласованности и повышает эффективность верификации согласованности для блокчейн-транзакций.
[33] Описанные варианты осуществления в данном документе являются просто примерными. Все другие варианты осуществления, которые могут быть получены специалистом в данной области без изобретательских усилий и на основе этих вариантов осуществления, должны быть включены в настоящее раскрытие.
[34] Фиг. 1 является схематической диаграммой процесса верификации согласованности согласно варианту осуществления настоящего раскрытия. Процесс верификации согласованности может быть реализован посредством первого узла блокчейна и может содержать следующие этапы:
[35] S101: прием запроса транзакции от клиента и выполнение первой верификации безопасности в отношении этого запроса транзакции.
[36] В некоторых вариантах осуществления в процессе обработки транзакции пользователь может отправлять запрос транзакции первому узлу блокчейна через клиента, установленного в терминале. Например, пользователь заполняет соответствующее содержимое обработки транзакции в интерфейсе, представленном на клиенте, клиент генерирует соответствующий запрос транзакции в соответствии с содержимым обработки транзакции, заполненным пользователем в интерфейсе, и затем отправляет запрос транзакции в первый узел блокчейна через терминал. Пользователь также может заполнить соответствующее содержимое обработки транзакции в пользовательском терминале, удерживаемом им / ей, в то время как терминал генерирует соответствующий запрос транзакции в соответствии с содержимым обработки транзакции, заполненным пользователем, и затем отправляет запрос транзакции первым узлам блокчейна в согласованной сети. Здесь упомянутый терминал может быть аппаратурой, такой как компьютер, планшет, смартфон и т.д.
[37] В некоторых вариантах осуществления согласованная сеть содержит множество узлов блокчейна, тогда как первый упомянутый узел блокчейна может относиться к узлу блокчейна, который принимает запрос транзакции от клиента. Узлы блокчейна, отличные от первых узлов блокчейна, могут упоминаться как вторые узлы блокчейна. Первый узел блокчейна и второй узел блокчейна являются относительными понятиями. Узел блокчейна, который принимает запрос транзакции от клиента, может быть первым узлом блокчейна, тогда как узел блокчейна, который принимает запрос транзакции, отправленный посредством первого узла блокчейна в форме широковещательной передачи, может называться вторым узлом блокчейна. Поскольку все узлы блокчейна в согласованной сети могут принимать запрос транзакций от клиента, все узлы блокчейна являются по существу первыми узлами блокчейна или вторыми узлами блокчейна. Разница между первым узлом блокчейна и вторым узлом блокчейна может зависеть от того, откуда принят запрос транзакций.
[38] Согласно предшествующему уровню техники при приеме запроса транзакции от клиента первый узел блокчейна обычно сохраняет запрос транзакции непосредственно в самом себе. В этом процессе первый узел блокчейна не выполняет верификацию в отношении запроса транзакции. С другой стороны, процесс верификации обычно выполняется на этапе верификации согласованности. В процессе верификации согласованности все узлы блокчейна в согласованной сети сначала выполняют верификацию безопасности, такую как верификация законности асимметричной подписи, в том числе RSA (криптосистема Rivest-Shamir-Adleman) и т.п., в отношении всех запросов транзакций, содержащихся в предварительно обработанном блоке, широковещательно передаваемом посредством первого узла блокчейна, чтобы верифицировать, являются ли законными запросы транзакций, содержащиеся в предварительно обработанном блоке. Затем все узлы блокчейна в согласованной сети будут верифицировать содержимое каждого запроса транзакции. Верификация может быть выполнена в форме верификации целостности на основе хэш-значения.
[39] Когда вышеупомянутые две верификации завершены, узлы блокчейна в согласованной сети будут дополнительно выполнять согласование в соответствии с результатами верификации, полученными после того, как верификация выполнена, в отношении предварительно обработанного блока, и затем решать, могут ли быть записаны в цепочку блоков запросы транзакций, содержащиеся в предварительно обработанном блоке.
[40] Таким образом, в процессе верификации согласованности согласованная сеть должна иметь три этапа, включая верификацию безопасности, верификацию целостности на основе хэш-значения и согласование результатов верификации в отношении всех запросов транзакций, содержащихся в вышеупомянутом предварительно обработанном блоке. Из-за этих трех этапов процесс верификации согласованности согласно предшествующему уровню техники требует слишком много времени и, следовательно, снижает эффективность верификации согласованности в отношении блокчейн-транзакций.
[41] Чтобы эффективно разрешить вышеупомянутую проблему, в настоящем раскрытии верификация безопасности в верификации согласованности может быть выполнена до верификации согласованности, тем самым упрощая весь процесс верификации согласованности, повышая эффективность верификации согласованности, а затем повышая эффективность обработки транзакций для блокчейн-транзакции.
[42] Например, после приема запроса транзакции от клиента первый узел блокчейна может выполнять первую верификацию безопасности в отношении этого запроса транзакции. В одном варианте осуществления первая верификация безопасности может быть верификацией законности асимметричной подписи, тогда как верификация законности асимметричной подписи согласно настоящему раскрытию может быть реализована посредством алгоритма асимметричного шифрования, такого как алгоритм шифрования RSA. Поэтому, когда клиент отправляет запрос транзакции первому узлу блокчейна, клиент может зашифровать запрос транзакции с помощью закрытого ключа, который у него есть, и первый узел блокчейна после приема запроса транзакции может разрешить запрос транзакции с помощью открытого криптографического ключа, который у него есть, и верифицировать разрешенный контент.
[43] В некоторых вариантах осуществления, когда клиент отправляет запрос транзакции первому узлу блокчейна, он может отправлять открытый криптографический ключ для разрешения запроса транзакции в запросе транзакции. После приема запроса транзакции первый узел блокчейна может разрешить запрос транзакции в соответствии с открытым криптографическим ключом, содержащимся в запросе транзакции. Первый узел блокчейна также может заранее получать открытый криптографический ключ от клиента. Соответственно, когда клиент отправляет запрос транзакции первому узлу блокчейна, первый узел блокчейна может разрешить запрос транзакции с помощью открытого криптографического ключа, полученного заранее.
[44] В некоторых вариантах осуществления первая верификация безопасности, описанная выше, относится к верификации безопасности, выполняемой посредством первого узла блокчейна в отношении вышеупомянутого запроса транзакции, а вторая верификация безопасности, описанная ниже, относится к верификации безопасности, выполняемой посредством второго узла блокчейна в отношении вышеупомянутого запроса транзакции. Методы верификации, адаптированные посредством первой верификации безопасности и второй верификации безопасности, могут быть одним и тем же методом верификации, например, верификацией законности асимметричной подписи в обоих случаях. Поэтому, первая верификация безопасности, описанная здесь, и вторая верификация безопасности, описанная ниже, могут использоваться для определения, какой узел блокчейна выполняет верификацию безопасности в отношении вышеупомянутого запроса транзакции.
[45] S102: в ответ на определение, что запрос транзакции прошел первую верификацию безопасности, сохраняют этот запрос транзакции и широковещательно передают запрос транзакции каждому второму узлу блокчейна в согласованной сети, вынуждая каждый второй узел блокчейна сохранять запрос транзакции в ответ на то, что второй узел блокчейна определил, что запрос транзакции прошел вторую верификацию безопасности. Согласованная сеть может содержать первый узел блокчейна и вторые узлы блокчейна.
[46] При определении, что запрос транзакции прошел первую верификацию безопасности, первый узел блокчейна может сохранять запрос транзакции. При определении, что запрос транзакции не прошел первую верификацию безопасности, первый узел блокчейна не сохраняет запрос транзакции и может отправить клиенту указание о том, что запрос транзакции не прошел принятие. После приема этого указания клиент может представить его пользователю, так что пользователь повторно редактирует запрос транзакции и отправляет его на первый узел блокчейна через клиента.
[47] Кроме того, после приема запроса транзакции от клиента первый узел блокчейна может отправить запрос транзакции в форме широковещательной передачи всем вторым узлам блокчейна. Все вторые узлы блокчейна здесь могут быть узлами блокчейна в согласованной сети, отличными от первого узла блокчейна. После приема запроса транзакции все вторые узлы блокчейна могут выполнить вторую верификацию безопасности в отношении запроса транзакции, чтобы решить, сохранять ли запрос транзакции, как показано на Фиг. 2.
[48] Фиг. 2 является схематической диаграммой подробного процесса верификации безопасности, выполняемого посредством всей согласованной сети в отношении запроса транзакции согласно варианту осуществления настоящего раскрытия.
[49] На примере транзакций транзакции, когда пользователю необходимо выполнить транзакцию перевода остатка средств, объект перевода может быть выбран в клиенте, установленном на терминале, и введена сумма перевода. В соответствии с содержимым, введенным пользователем, клиент генерирует соответствующий запрос транзакции и отправляет запрос транзакции в первый узел блокчейна, при этом клиент может зашифровать запрос транзакции с помощью закрытого криптографического ключа, хранящегося у него, и отправить зашифрованный запрос транзакции в первый узел блокчейна.
[50] После приема запроса транзакции от клиента первый узел блокчейна может расшифровать запрос транзакции (например, посредством выполнения первой верификации безопасности в отношении запроса транзакции) с помощью открытого криптографического ключа, содержащегося в запросе транзакции (первый узел блокчейна может заранее получать открытый криптографический ключ от клиента), чтобы получить адреса учетных записей сторон транзакции, вовлеченных в запрос транзакции, а затем верифицировать являются ли адреса учетных записей сторон транзакции законными. При определении того, что адреса учетных записей сторон транзакции, вовлеченных в запрос транзакции, являются законными учетными записями, и что сумма в учетной записи стороны, инициирующей транзакцию, больше или равна сумме перевода, вовлеченной в запрос транзакции, первый блокчейн узел определяет, что запрос транзакции прошел первую верификацию безопасности, а затем сохраняет запрос транзакции в памяти транзакций, соответствующей первому узлу блокчейна. Сохранение запроса транзакции посредством первого узла блокчейна в памяти транзакций может быть эквивалентно принятию запроса транзакции. Если первый узел блокчейна определяет, что запрос транзакции не прошел первую верификацию безопасности, с другой стороны, первый узел блокчейна отказывается принимать запрос транзакции, а именно, не сохраняет запрос транзакции в памяти транзакций, соответствующей ему самому.
[51] Кроме того, после приема запроса транзакции первый узел блокчейна может отправлять запрос транзакции в форме широковещательной передачи другим узлам блокчейна в согласованной сети, например, всем вторым узлам блокчейна. После приема запроса транзакции все вторые узлы блокчейна могут выполнять вторую верификацию безопасности в отношении запроса транзакции. При определении того, что запрос транзакции прошел вторую верификацию безопасности, каждый второй узел блокчейна сохраняет запрос транзакции в памяти транзакций, соответствующей ему самому, чтобы принять (одобрить) запрос транзакции; аналогично, при определении того, что запрос транзакции не прошел вторую верификацию безопасности, второй узел блокчейна не принимает (не одобряет) запрос транзакции.
[52] В некоторых вариантах осуществления все узлы блокчейна и все памяти транзакций в согласованной сети могут достигать передачи данных через предварительно установленную часть распределенного промежуточного программного обеспечения. Например, при определении того, что запрос транзакции прошел первую верификацию безопасности, первый узел блокчейна может отправлять запрос транзакции в распределенное промежуточное программное обеспечение, а распределенное промежуточное программное обеспечение может отправлять, согласно идентификатору узла первого узла блокчейна, запрос транзакции в память транзакций, соответствующую первому узлу блокчейна, для сохранения.
[53] S103: выполнение предварительной обработки в отношении по меньшей мере одного сохраненного запроса транзакции в ответ на определение, что заданное условие удовлетворено, для получения и сохранения предварительно обработанного блока.
[54] Чтобы упростить процесс верификации согласованности для транзакций блокчейна, сократить время, затрачиваемое на верификацию согласованности, и повысить эффективность верификации согласованности, первый узел блокчейна выполняет предварительную обработку в отношении запросов транзакции для получения предварительно обработанного блока перед выполнением верификации согласованности транзакции в отношении запросов, хранящихся в нем самом. В результате предварительно обработанный блок непосредственно широковещательно передается в процессе верификации согласованности всем вторым узлам блокчейна в согласованной сети для верификации согласованности.
[55] В одном примере при определении того, что заранее установленное условие удовлетворяется, первый узел блокчейна может получить по меньшей мере один запрос транзакции из памяти транзакций, соответствующей ему самому, и выполнить согласование в отношении этих запросов транзакции по всей согласованной сети в последующем процессе.
[56] Здесь, при определении того, что текущий момент достигает установленного периода времени для получения следующего запроса транзакции, первый узел блокчейна определяет, что условие получения запроса выполнено, получает по меньшей мере один запрос транзакции из памяти транзакций, соответствующей ему самому, и выполняет предварительную обработку в отношении полученного по меньшей мере одного запроса транзакции. Кроме того, вышеуказанное заранее установленное условие также быть другими условиями. Например, при мониторинге и определении, что запрос транзакции в памяти транзакций достигает установленного времени хранения, первый узел цепочки блоков определяет, что запрос транзакции удовлетворяет заранее установленному условию. Затем первый узел блокчейна может выполнять предварительную обработку всех запросов транзакций, которые удовлетворяют заранее установленному условию, и получить соответствующие предварительно обработанные блоки. Заранее установленное условие в этом документе также может быть в других формах.
[57] В процессе получения запросов транзакций из памяти транзакций первый узел блокчейна может получить множество запросов транзакций из памяти транзакций, соответствующей ему самому, в соответствии с приоритетами типа транзакции. Например, первый узел блокчейна может установить тип транзакции в качестве границы и получить все запросы транзакций с приоритетом типа транзакции выше границы из памяти транзакций.
[58] При выполнении согласования в отношении запросов транзакций в согласованной сети первый узел блокчейна может выбрать транзакцию и получить все запросы транзакций, соответствующие этой транзакции, из памяти транзакций, причем первый узел блокчейна может выбирать транзакции случайным образом или в некотором порядке. Альтернативно, первый узел блокчейна может получить множество запросов транзакций из памяти транзакций во временном порядке, в котором запросы транзакций входят в память транзакций. Первый узел блокчейна может получать запросы транзакций, следуя другим критериям, которые не будут подробно описаны здесь.
[59] После получения запросов транзакции первый узел блокчейна может определить, согласно предварительно установленному правилу определения значения характеристики, значение субхарактеристики, соответствующее каждому запросу транзакции, соответственно. Например, когда предварительно установленное правило определения значения характеристики является алгоритмом хэширования, первый узел блокчейна может определить значение субхэша, соответствующее каждому запросу транзакции, соответственно. Когда предварительно установленным правилом определения значения характеристики является алгоритм дайджеста сообщения (MD5), первый узел блокчейна может определить значение суб-MD5, соответствующее каждому запросу транзакции, соответственно.
[60]  После определения значения суб-характеристики, соответствующего каждому запросу транзакции, первый узел блокчейна может определить, в соответствии с порядком определенных значений суб-характеристики и запросов на транзакцию, подлежащее верификации значение характеристики, однозначно соответствующее запросам на транзакцию.
[61] Здесь, подлежащее верификации значение характеристики может однозначно соответствовать запросам транзакции в целом. Например, когда изменяется содержимое одного из запросов транзакции, подлежащее верификации значение характеристики изменяется соответственно. Порядок запросов транзакции может быть порядком, установленным первым узлом блокчейна, или может быть определен в соответствии с порядком запросов транзакции в памяти транзакций. Примерный способ, в котором первый узел блокчейна определяет подлежащее верификации значение характеристики, показан на фиг. 3.
[62] Фиг. 3 является схематической диаграммой определения подлежащего верификации значения характеристики в соответствии с вариантом осуществления настоящего раскрытия.
[63] Как показано на фиг. 3, в некоторых вариантах осуществления правило определения значения характеристики, используемое первым узла блокчейна, включает в себя алгоритм хэширования. Предположим, что первый узел блокчейна получает четыре запроса транзакций из всех запросов транзакций, хранящихся в нем самом, и эти четыре запроса транзакций расположены в порядке, показанном на фиг. 3. После того, как первый узел блокчейна определит четыре значения суб-хэша, соответствующие этим четырем запросам транзакции, соответственно, эти четыре значения суб-хэша (Hash1, Hash2, Hash3, Hash4) могут быть размещены на четырех листовых (оконечных) узлах дерева Меркла последовательно слева направо в соответствии с порядком этих четырех запросов транзакций, и на основе которых могут быть определены нелистовые узлы (Hash5, Hash6) и корневой узел (Hash7) дерева Меркла. Затем первый узел блокчейна может определить, что корневой узел Hash7 дерева Меркла, которое должно быть подлежащим верификации значением характеристики, однозначно соответствует этим четырем запросам транзакции.
[64] Способ определения подлежащего верификации значения характеристики, описанный выше, не является уникальным, и первый узел блокчейна также может использовать другие способы, если он гарантирует, что подлежащее верификации значение характеристики однозначно соответствует всем запросам транзакции в некотором порядке.
[65]  После определения подлежащего верификации значения характеристики, однозначно соответствующего всем запросам транзакции (например, по меньшей мере один запрос транзакции, полученный из памяти транзакций), первый узел блокчейна может упаковать подлежащее верификации значение характеристики, и все идентификаторы запросов транзакции (например, для транзакции транзакции (банковского перевода), идентификатором транзакции транзакции может быть порядковый номер транзакции), соответствующие всем запросам транзакции, в предварительно обработанный блок, причем первый узел блокчейна может отсортировать все идентификаторы запросов транзакции в приведенном выше порядке запросов транзакции для получения очереди идентификаторов запросов транзакции и сохранения очереди идентификаторов запросов транзакции в предварительно обработанном блоке.
[66]  После определения вышеупомянутого предварительно обработанного блока первый узел блокчейна может сохранять предварительно обработанный блок в памяти транзакций, соответствующей ему самому. Когда начинается этап верификации согласованности, первый узел блокчейна может получить предварительно обработанный блок из памяти транзакций и широковещательно передать предварительно обработанный блок всем вторым узлам блокчейна в согласованной сети для верификации согласованности, причем первый узел блокчейна может смешивать предварительно обработанный блок со всеми запросами транзакций для сохранения в памяти транзакций, соответствующей ему самому, или может отделить обозначенную область памяти в памяти транзакций и сохранить предварительно обработанный блок в обозначенную область памяти.
[67] S104: широковещательная передача полученного предварительно обработанного блока на вторые узлы блокчейна, вынуждая вторые узлы блокчейна выполнять верификацию согласованности для полученного предварительно обработанного блока.
[68] При верификации согласованности первый узел блокчейна может получить предварительно обработанный блок из предварительно обработанных блоков, соответствующих предыдущей предварительной обработке всех запросов транзакций и сохраненных в самом себе, отправить посредством широковещательной передачи предварительно обработанный блок другим узлам блокчейна (например, всем вторым узлам блокчейна) во всей согласованной сети, а затем выполнить верификацию согласованности в отношении всех запросов транзакций, соответствующим предварительно обработанному блоку по всей согласованной сети.
[69] В одном примере первый узел блокчейна может широковещательно передавать вышеупомянутый предварительно обработанный блок всем вторым узлам блокчейна в согласованной сети. Для каждого второго узла блокчейна, с другой стороны, второй узел блокчейна может разрешать предварительно обработанный блок после приема предварительно обработанного блока от первого узла блокчейна, чтобы определить идентификаторы запросов транзакций всех запросов транзакций, содержащихся в предварительно обработанном блоке.
[70] Вторые узлы блокчейна могут дополнительно определять все запросы транзакций, соответствующие идентификаторам запросов транзакций, из всех запросов транзакций, хранимых в них самих, и определять, согласно предварительно установленному правилу определения значения характеристики, значение субхарактеристики, соответствующее каждому запросу транзакции, соответственно, причем правило определения значения характеристики, используемое вторыми узлами блокчейна, может быть таким же, как правило первого узла блокчейна.
[71]  После определения значения субхарактеристики, соответствующего каждому запросу транзакции, вторые узлы блокчейна могут определять в соответствии с порядком идентификаторов запросов транзакций (например, порядок всех идентификаторов запросов транзакций в очереди идентификаторов запросов транзакций) и всех значений субхарактеристик, значение характеристики, однозначно соответствующее всем запросам транзакции в целом, и затем сравнивать это значение характеристики с подлежащим верификации общим значением характеристики в предварительно обработанном блоке. Когда эти два значения характеристики идентичны, может быть определено, что содержимое этих запросов транзакций, которые должны быть проверены на согласованность первым узлом блокчейна, не изменено, а именно определяется, что эти запросы транзакций прошли верификацию целостности на основе хэш-значения, причем вторые узлы блокчейна могут определять порядок всех идентификаторов запросов транзакций в соответствии с порядком всех идентификаторов запросов транзакций, содержащихся в предварительно обработанном блоке.
[72] Каждый второй узел блокчейна может выполнить верификацию целостности на основе хэш-значения в вышеупомянутом предварительно обработанном блоке согласно вышеописанному способу и получить соответствующий результат верификации, касающийся предварительно обработанного блока. Затем каждый второй узел блокчейна может отправлять соответственно полученный результат верификации в широковещательной форме другим узлам блокчейна в согласованной сети. После приема каждого взаимно широковещательно передаваемого результата верификации каждый узел блокчейна в согласованной сети может получить, согласно принятым результатам верификации и своему собственному результату верификации, исчерпывающий результат верификации, касающийся того, прошел ли предварительно обработанный блок верификацию всеми узлами блокчейна в согласованной сети, и снова широковещательно передавать полученный исчерпывающий результат верификации другим узлам блокчейна во всей согласованной сети.
[73] После приема взаимно широковещательно передаваемого исчерпывающего результата верификации каждый узел блокчейна в согласованной сети может дополнительно определить, является ли большинство исчерпывающих результатов верификации, полученных всеми узлами блокчейна во всей согласованной сети, прошедшими верификацию. Если да, узел блокчейна записывает запросы транзакций, соответствующие идентификаторам запросов транзакций, содержащимся в предварительно обработанном блоке, в блок для хранения, и дополнительно записывает блок в цепочку блоков, хранимую в самом себе, согласно временному порядку; если нет, узел блокчейна определяет, что запросы транзакций, соответствующие предварительно обработанному блоку, не прошли верификацию согласованности согласованной сетью и отказывается записывать запросы транзакций в цепочку блоков.
[74] После того, как узел блокчейна (здесь узел блокчейна может быть первым узлом блокчейна или вторым узлом блокчейна) сохраняет все запросы транзакций в форме блока в цепочке блоков, пространство хранения, занимаемое этими запросами транзакций, в их соответствующих запоминающих устройствах транзакций может быть освобождено, и эти запросы транзакций передаются в базу данных для сохранения исторических запросов транзакций.
[75] Из вышеприведенного способа можно видеть, что после приема запроса транзакции от клиента первый узел блокчейна может выполнить первую верификацию безопасности в отношении запроса транзакции, и после определения, что запрос транзакции прошел первую верификацию безопасности, сохранить этот запрос транзакции. Затем первый узел блокчейна может выполнить предварительную обработку в отношении по меньшей мере одного собственного запроса транзакции, чтобы получить предварительно обработанный блок, и сохранить этот предварительно обработанный блок. В результате в процессе выполнения верификации согласованности первый узел блокчейна может непосредственно получить предварительно обработанный блок, полученный ранее, до этапа верификации согласованности, и широковещательно передать этот предварительно обработанный блок другим узлам блокчейна в согласованной сети для верификации согласованности, что значительно упрощает процесс на этапе верификации согласованности, сокращает время, затрачиваемое на этапе верификации согласованности, и, таким образом, повышает эффективность верификации согласованности узлов блокчейна и повышает эффективность верификации согласованности для транзакций блокчейна.
[76] В некоторых вариантах осуществления для дальнейшего повышения эффективности верификации согласованности для транзакций блокчейна все узлы блокчейна в согласованной сети (например, первый узел блокчейна и все вторые узлы блокчейна) также могут принимать, хранить, верифицировать и предварительно обрабатывать вышеупомянутые запросы транзакции через кластер серверов. Другими словами, узел блокчейна может состоять из отдельного устройства в предшествующем уровне техники, но в настоящем раскрытии узел блокчейна может содержать кластер серверов. Все серверы в кластере серверов могут иметь один и тот же уровень иерархии или могут быть предоставлены для конкретных назначенных задач обработки, в то время как все серверы в кластере серверов совместно используют одинаковую конфигурацию узла. Например, все серверы могут совместно использовать один идентификатор узла (ID), таблицу маршрутизации точка-точка, асимметричные открытый и закрытый ключи узла и другую конфигурацию узла. Поэтому с внешней точки зрения все действия и инструкции, отправляемые серверами в кластере серверов, можно рассматривать как исходящие из одного узла цепочки блоков. Схематическая диаграмма кластера серверов показана на следующем чертеже.
[77]  Фиг.4 - схематическая диаграмма кластера серверов в соответствии с вариантом осуществления настоящего раскрытия. Фиг. 4 иллюстрирует архитектуру кластера серверов первого узла блокчейна. В кластере серверов есть устройство с возможностью маршрутизации. Устройство с возможностью маршрутизации отвечает за распределение запросов транзакций от пользовательского терминала на сервер в кластере серверов. Здесь устройство с возможностью маршрутизации может распределять запросы транзакций случайным образом на сервер в кластере серверов или может распределять запросы транзакций способом балансировки нагрузки на серверы в кластере серверов. Следовательно, устройство с возможностью маршрутизации также может быть устройством балансировки нагрузки. После приема запроса транзакции сервер в кластере серверов может выполнить первую верификацию безопасности в отношении запроса транзакции, и после определения того, что запрос транзакции прошел первую верификацию безопасности, сохранить запрос транзакции в памяти транзакций, соответствующей первому узлу блокчейна, при этом кластер серверов первого узла блокчейна может соответствовать памяти транзакций. Каждый сервер в кластере серверов может соответствовать памяти транзакций, и в этом случае первый узел блокчейна будет соответствовать множеству блоков памяти транзакций.
[78] Сервер в кластере серверов может получать множество запросов транзакций из памяти транзакций и выполнять предварительную обработку в отношении запросов транзакций для получения предварительно обработанного блока. Затем сервер может сохранять полученный предварительно обработанный блок в памяти транзакций, соответствующей первому узлу блокчейна, для использования в последующей верификации согласованности, причем сервер может быть сервером, выбранным ранее устройством балансировки нагрузки для приема запросов транзакций от клиента (или сервером, выбранным устройством с возможностью маршрутизации), или может быть сервером, повторно выбранным из множества серверов, содержащихся в первом узле цепочки блоков.
[79] В некоторых вариантах осуществления, когда сервер в кластере серверов получает множество запросов транзакций из вышеупомянутой памяти транзакций, он может непосредственно передавать эти запросы транзакций на сервер для предварительной обработки. Таким образом, другие серверы в кластере серверов не смогут получить эти запросы транзакций из памяти транзакций, тем самым избегая ситуации, в которой эти запросы транзакций подвергаются повторной предварительной обработке серверами в кластере серверов.
[80] В этом процессе, когда сервер в кластере серверов получает эти запросы транзакций, сервер может маркировать эти запросы транзакций в памяти транзакций. Таким образом, другие серверы в кластере серверов не будут выполнять предварительную обработку в отношении запросов транзакций, как только они обнаружат маркированные запросы транзакций в памяти транзакций. Кроме того, сервер в кластере серверов также может распоряжаться ситуацией, в которой запросы транзакций подвергаются повторной предварительной обработке серверами в кластере серверов другими способами.
[81] При верификации согласованности сервер в кластере серверов может получить предварительно обработанный блок, полученный из предыдущей предварительной обработки всех запросов транзакций, из памяти транзакций, соответствующей первому узлу блокчейна, и отправить предварительно обработанный блок другим узлам блокчейна (например, всем вторым узлам блокчейна) во всей согласованной сети через шлюз. После приема предварительно обработанного блока вторые узлы блокчейна могут распределить предварительно обработанный блок одному серверу в своих кластерах серверов через соответствующие устройства балансировки нагрузки (или устройство с возможностью маршрутизации) и выполнить верификацию согласованности в отношении этого предварительно обработанного блока через сервер.
[82] Здесь сервером, который получает вышеупомянутый предварительно обработанный блок из памяти транзакций, может быть любой сервер в кластере серверов. Выбор сервера может быть решен (выполнен) устройством балансировки нагрузки способом балансировки нагрузки (или выбран устройством с возможностью маршрутизации) или может быть решен назначенным сервером в кластере серверов. Альтернативно, каждому серверу в кластере серверов может быть предоставлен период согласования, а разные серверы имеют разные периоды согласования. Другими словами, периоды согласования разных серверов смещены во времени. Для каждого сервера в кластере серверов сервер может автоматически получать предварительно полученный предварительно обработанный блок из памяти транзакций, соответствующей первому узлу блокчейна, каждый раз, когда прошел некоторой период (например, период согласования, соответствующий ему самому), и широковещательно передавать предварительно обработанный блок для всех вторых узлов блокчейна в согласованной сети через шлюз. Кроме того, работа по получению предварительно обработанного блока также может выполняться назначенным сервером в кластере серверов, в то время как другие серверы не участвуют в работе по получению предварительно обработанного блока.
[83] Как видно на чертежах, в некоторых вариантах осуществления кластер серверов может быть эквивалентен первому узлу блокчейна. Поскольку число серверов первого узла блокчейна изменяется с одного сервера на режим кластера серверов, нагрузка на серверы и эффективность обработки транзакций значительно улучшаются, что обеспечивает эффективное решение для увеличенной нагрузки транзакций в результате последующего увеличения пользователей.
[84] В некоторых вариантах, как показано на фиг. 4, назначенная задача может быть выполнена путем выбора сервера из множества серверов, содержащихся в первом узле блокчейна, с помощью устройства с возможностью маршрутизации (или устройства балансировки нагрузки) и, более того, может быть реализована в форме, подобной шлюзу. Если сервер выбирается с помощью шлюза, этот шлюз может выбрать сервер из множества серверов, содержащихся в первом узле цепочки блоков, способом балансировки нагрузки, чтобы выполнить назначенную задачу. Случайный выбор или альтернативная реализация могут быть использованы для выбора сервера.
[85] После того, как сервер, выбранный вышеупомянутым устройством с возможностью маршрутизации (или устройством балансировки нагрузки), принимает запрос транзакции от клиента, устройство с возможностью маршрутизации может снова выбрать сервер из множества серверов, содержащихся в первом узле цепочки блоков, для сохранения запроса транзакции, отправить запрос транзакции на сервер, выбранный для сохранения запроса транзакции, через сервер, который принимает запрос транзакции, и затем сохранить запрос транзакции с помощью этого сервера. Первый узел блокчейна может использовать тот же способ при выполнении предварительной обработки в отношении запроса транзакции через сервер, выбранный устройством с возможностью маршрутизации (или устройством балансировки нагрузки). А именно, после того, как выбранный сервер завершает предварительную обработку в отношении запроса транзакции, устройство с возможностью маршрутизации может повторно определить сервер из множества серверов, содержащихся в первом узле цепочки блоков, и уведомить сервер, который завершает предварительную обработку в отношении запроса транзакции, чтобы отправить полученный предварительно обработанный блок на этот повторно определенный сервер, чтобы сохранить предварительно обработанный блок в памяти транзакций, содержащейся в первом узле цепочки блоков, через повторно определенный сервер.
[86] Как показано на фиг. 4, кластер серверов первого узла блокчейна используется в качестве примера для описания того, как кластер серверов работает в транзакциях блокчейна, в то время как кластеры серверов всех вторых узлов блокчейна в согласованной сети могут быть такими же, как кластер серверов, описанный выше, и некоторые процессы обработки аналогичны процессам вышеупомянутого кластера серверов первого узла блокчейна, которые ниже не будут подробно повторяться.
[87] В некоторых вариантах осуществления вся согласованная сеть может быть объединенной цепочкой, тогда как каждый узел блокчейна может быть узлом блокчейна в объединенной цепочке.
[88] Этот способ для верификации согласованности в соответствии с некоторыми  вариантами осуществления настоящего раскрытия описан выше. На основе той же концепции варианты осуществления настоящего раскрытия дополнительно предоставляют два устройства для верификации согласованности, как показано на фиг. 5 и 6.
[89] Фиг. 5 является схематической диаграммой устройства 500 для верификации согласованности согласно варианту осуществления настоящего раскрытия. Устройство 500 может находиться в согласованной сети (например, в качестве первого узла блокчейна в согласованной сети) и может быть реализовано в виде программного обеспечения, аппаратных средств или их комбинации. В одном примере устройство 500 может содержать память и процессор, соединенные вместе. Память может быть невременной (постоянной) и считываемой компьютером. Память может хранить инструкции, которые при выполнении процессором вынуждают аппаратуру 500 выполнять один или несколько этапов, описанных в данном документе. В некоторых вариантах осуществления инструкции могут быть реализованы в виде различных программных модулей. Такие модули могут содержать: приемный модуль 501, сконфигурированный для приема запроса транзакции от терминала и выполнения первой верификации безопасности в отношении запроса транзакции; модуль 502 хранения, сконфигурированный для сохранения, при определении того, что запрос транзакции прошел первую верификацию безопасности, запроса транзакции и широковещательной передачи запроса транзакции каждому второму узлу блокчейна в согласованной сети, так что каждый второй узел блокчейна сохраняет запрос транзакции при определении того, что запрос транзакции прошел вторую верификацию безопасности; модуль 503 предварительной обработки, сконфигурированный для выполнения предварительной обработки в отношении по меньшей мере одного сохраненного запроса транзакции при определении того, что заданное условие удовлетворено, для получения и сохранения предварительно обработанного блока; модуль 504 получения, сконфигурированный для широковещательной передачи полученного предварительно обработанного блока на вторые узлы блокчейна, вынуждая вторые узлы блокчейна выполнять верификацию согласованности в отношении полученного предварительно обработанного блока.
[90] Первая верификация безопасности содержит верификацию законности асимметричной подписи.
[91] В некоторых вариантах осуществления модуль 502 хранения может не сохранять запрос транзакции, когда определяется, что запрос транзакции не прошел первую верификацию безопасности.
[92] Модуль 503 предварительной обработки может определять, что заданное условие удовлетворено, при выполнении мониторинга, что установленный период времени прошел.
[93] Модуль 503 предварительной обработки может определять, согласно предварительно установленному правилу определения значения характеристики, подлежащее верификации значение характеристики, соответствующее по меньшей мере одному запросу транзакции; и упаковывать все идентификаторы запросов транзакции, соответствующие по меньшей мере одному запросу транзакции и подлежащему верификации значению характеристики, в предварительно обработанный блок.
[94]  Фиг. 6 является схематической диаграммой другого устройства для верификации согласованности согласно варианту осуществления настоящего раскрытия. Устройство 600 может находиться в согласованной сети (например, в качестве второго узла блокчейна в согласованной сети) и может быть реализовано в виде программного, аппаратного обеспечения или комбинации того и другого. В одном примере устройство 600 может содержать память и процессор, соединенные вместе. Память может быть непостоянной и считываемой компьютером. Память может хранить инструкции, которые при исполнении процессором вынуждают аппаратуру 600 выполнять один или несколько этапов, описанных в данном документе. В некоторых вариантах осуществления инструкции могут быть реализованы в виде различных программных модулей. Такие модули могут содержать: модуль 601 приема запроса, сконфигурированный для приема запроса транзакции, широковещательно передаваемого первым узлом блокчейна, и выполнения второй верификации безопасности в отношении запроса транзакции; модуль 602 хранения запроса, сконфигурированный для сохранения, при определении того, что запрос транзакции прошел вторую верификацию безопасности, запроса транзакции; модуль 603 верификации, сконфигурированный для выполнения верификации согласованности при приеме предварительно обработанного блока, широковещательно передаваемого посредством первого узла блокчейна, в отношении предварительно обработанного блока.
[95] Вторая верификация безопасности содержит верификацию законности асимметричной подписи.
[96] В некоторых вариантах осуществления модуль 602 хранения запроса может не сохранять запрос транзакции, когда определяется, что запрос транзакции не прошел вторую верификацию безопасности.
[97] Модуль верификации может, при приеме предварительно обработанного блока, широковещательно передаваемого первым узлом блокчейна, просматривать все запросы транзакций, сохраненные в нем самом, в поисках запросов транзакций, соответствующих всем идентификаторам запросов транзакций, содержащихся в предварительно обработанном блоке, и определять, в соответствии с предварительно установленным правилом определения значения характеристики, значение характеристики, соответствующее каждому запросу транзакции; выполнять верификацию согласованности посредством значения характеристики для подлежащего верификации значения характеристики, содержащегося в предварительно обработанном блоке.
[98] В некоторых вариантах осуществления после приема запроса транзакции от клиента первый узел блокчейна может выполнять первую верификацию безопасности в отношении запроса транзакции, и после определения, что запрос транзакции прошел первую верификацию безопасности, сохранять запрос транзакции в самом себе. Затем первый узел блокчейна может выполнять предварительную обработку в отношении по меньшей мере одного запроса транзакции среди всех запросов транзакции, сохраненных в нем самом, чтобы получить предварительно обработанный блок, и сохранять этот предварительно обработанный блок. В результате в процессе выполнения верификации согласованности первый узел блокчейна может получить предварительно обработанный блок непосредственно из всех сохраненных предварительно обработанных блоков и широковещательно передать предварительно обработанный блок другим узлам блокчейна в согласованной сети для верификации согласованности, что значительно упрощает процесс на этапе верификации согласованности, сокращает время, затрачиваемое на верификацию согласованности, и, таким образом, повышает эффективность верификации согласованности для операций блокчейна.
[99] В 1990-х годах усовершенствование технологии можно было разделить на усовершенствование аппаратного обеспечения (например, усовершенствование схемной структуры, такой как диод, транзистор, коммутатор и т.п.) или усовершенствование программного обеспечения (усовершенствование потока операций способа). Однако, наряду с технологическим развитием, многие текущие улучшения потоков операций способов могут рассматриваться как непосредственные улучшения структур аппаратных схем. Разработчики могут получить соответствующую структуру аппаратной схемы, запрограммировав поток усовершенствованного способа в аппаратную схему. Поэтому усовершенствование потока операций способа может быть реализовано посредством аппаратной реализации. Например, программируемое логическое устройство (PLD) (например, программируемая пользователем логическая матрица (FPGA)) является такой интегральной схемой, что ее логические функции определяются пользователем посредством программирования устройства. Разработчик может запрограммировать «интегрировать» цифровую систему в один элемент PLD, не обращаясь к производителю микросхем с требованием спроектировать и изготовить специализированную интегральную микросхему ИС. В настоящее время этот тип программирования в основном реализуется с помощью программного обеспечения «логического компилятора», а не спеуиального изготовления интегральных микросхем. Программное обеспечение логического компилятора аналогично программному компилятору, используемому для разработки и написания программ, в то время как для написания исходных кодов до компиляции используется определенный язык программирования, который называется  языком описания аппаратных средств (HDL). Существует не один, а много типов HDL, таких как ABEL (расширенный язык булевых выражений), AHDL (язык описания оборудования Altera), Confluence, CUPL (язык программирования Корнельского университета), HDCal, JHDL (язык описания оборудования Java), Lava, Lola, MyHDL, PALASM, RHDL (язык описания оборудования Ruby). Наиболее часто используемые HDL включают в себя VHDL (язык описания аппаратных средств для высокоскоростных интегральных схем) и Verilog. Специалист в данной области техники может знать, как получить аппаратную схему для реализации потока операций способа, используя вышеупомянутые HDL, чтобы выполнить некоторое логическое программирование потока операций способа и запрограммировать его в ИС.
[100] Контроллер может быть реализован любым надлежащим образом. Например, контроллер может иметь, например, форму микропроцессора или процессора, а также считываемого компьютером носителя, на котором сохраняются машиночитаемые программные коды (например, программное обеспечение или встроенное программное обеспечение), которые могут выполняться (микро)процессором, логическим элементом, переключателем, специализированной интегральной схемой (ASIC), программируемым логическим контроллером и встроенным микроконтроллером. Примеры контроллера включают в себя, но не ограничиваются ими, следующие микроконтроллеры: ARC 625D, Atmel AT91SAM, Microchip PIC18F26K20 и Silicone Labs C8051F320. Контроллер памяти может быть дополнительно реализован как часть логики управления памятью. Специалист в данной области также должен знать, что в дополнение к тому, что контроллер реализован в виде только машиночитаемых программных кодов, допустимо выполнять логическое программирование на этапах способа, чтобы дать возможность контроллеру реализовать те же самые функции в виде логического элемента, переключателя, ASIC, программируемого логического контроллера и встроенного микроконтроллера. Поэтому такой контроллер может рассматриваться как аппаратная часть, тогда как устройства, содержащиеся в нем и сконфигурированные для выполнения различных функций, также могут рассматриваться как некоторая структура внутри аппаратной части. Альтернативно, устройства, сконфигурированные для выполнения различных функций, могут рассматриваться как программные модули для реализации способа и структуры внутри аппаратной части.
[101] Система, устройство, модуль или блок, описанные в вышеупомянутых вариантах осуществления, могут быть реализованы с помощью компьютерной микросхемы или объекта или реализованы с помощью продукта, имеющего функцию. Типичным устройством реализации является компьютер. Например, компьютер может быть персональным компьютером, ноутбуком, сотовым телефоном, камерой с телефоном, смартфоном, персональным цифровым помощником, медиаплеером, навигационным устройством, устройством электронной почты, игровой приставкой, компьютером-планшетом, носимым устройством или комбинацией любых устройств в этих устройствах.
[102] Для удобства описания вышеупомянутое устройство разделено на различные блоки в соответствии с функциями для описания. Функции блоков могут быть реализованы в одном или нескольких элементах программного и / или аппаратного обеспечения при реализации настоящего раскрытия.
[103] Специалист в данной области техники должен понимать, что варианты осуществления настоящего раскрытия могут быть предоставлены в виде способа, системы или компьютерного программного продукта. Следовательно, раскрытая система может быть реализована как полный вариант аппаратного обеспечения, полный вариант программного обеспечения или вариант осуществления, объединяющий программное и аппаратное обеспечение для выполнения раскрытых способов. Кроме того, раскрытая система может быть в форме компьютерного программного продукта, реализованного на одном или нескольких компьютерных носителях данных (включающих, помимо прочего, память на магнитном диске, CD-ROM, оптическую память и т.п.), содержащую компьютерные программные коды.
[104] Раскрытая система описана со ссылкой на блок-схемы и / или блок-схемы способа, устройства (системы) и компьютерный программный продукт в соответствии с вариантами осуществления настоящего раскрытия. Следует понимать, что инструкция компьютерной программы может использоваться для реализации каждого процесса и / или блока в блок-схемах и / или блок-схемах и комбинации процессов и / или блоков в блок-схемах и / или блок-схемах. Эти инструкции компьютерной программы могут предоставляться для компьютера общего назначения, компьютера специального назначения, встроенного процессора или процессора других программируемых устройств обработки данных для генерации машины, так что инструкции, выполняемые компьютером или процессором других программируемых устройств обработки данных, генерируют устройство для реализации указанной функции в одном или нескольких процессах на блок-схемах и / или в одном или нескольких блоках на блок-схемах.
[105] Эти инструкции компьютерной программы также могут храниться в машиночитаемой памяти, которая может инструктировать компьютер или другие программируемые устройства обработки данных работать определенным образом, так что инструкции, хранящиеся в машиночитаемой памяти, формируют изготовленное изделие, которое включает в себя устройство инструкций. Устройство инструкций реализует одну или несколько функций в одном или нескольких процессах на блок-схемах и / или в одном или нескольких блоках на блок-схемах.
[106] Эти инструкции компьютерной программы также могут быть загружены в компьютер или другие программируемые устройства обработки данных, так что в компьютере или других программируемых устройствах выполняется ряд рабочих этапов, тем самым генерируя компьютерную обработку. Следовательно, инструкции, выполняемые в компьютере или других программируемых устройствах, предоставляют этапы для реализации одной или нескольких функций в одном или нескольких процессах в блок-схемах и / или в одном или нескольких блоках на блок-схемах.
[107] В типичной конфигурации вычислительное устройство включает в себя один или несколько центральных блоков обработки (ЦП), интерфейсы ввода / вывода, сетевые интерфейсы и память.
[108] Память может включать в себя считываемый компьютером носитель, такой как энергозависимая память, оперативное запоминающее устройство (RAM) и / или энергонезависимое запоминающее устройство, например, постоянное запоминающее устройство (ROM) или флэш-RAM. Память является примером машиночитаемого носителя.
[109] Машиночитаемые носители включают в себя постоянные, энергозависимые, мобильные и неподвижные носители, которые могут осуществлять хранение информации любым способом или технологией. Информация может быть машиночитаемыми инструкциями, структурами данных, программными модулями или другими данными. Примеры носителей данных компьютеров включают в себя, но не ограничиваются ими, ОЗУ с фазовым переходом (PRAM), статические ОЗУ (SRAM), динамические ОЗУ (DRAM), другие типы запоминающих устройств с произвольным доступом (ОЗУ), постоянные запоминающие устройства (ПЗУ), ЭЛЕКТРИЧЕСКИ стираемые программируемые запоминающие устройства только для чтения (EEPROM), флэш-память или другие технологии памяти, компакт-диски только для чтения (CD-ROM), цифровые универсальные диски (DVD) или другие оптические запоминающие устройства, кассеты, кассетные и дисковые запоминающие устройства или другие устройства с магнитной памятью или любые другие непередающие носители, которые можно использовать для хранения информации, доступной для вычислительного устройства. Согласно приведенным здесь определениям машиночитаемые носители не включают в себя временные носители, такие как модулированные сигналы данных и несущие.
[110] Далее следует отметить, что термины «включающий», «содержащий» или любые другие их варианты предназначены для охвата неисключительного включения, так что процесс, способ, товар или устройство, содержащие набор элементов, не только содержат эти элементы, но также содержит другие элементы, которые не перечислены, или дополнительно содержит элементы, которые присущи этим процессу, способу, товару или устройству. Когда нет дополнительных ограничений, элементы, определяемые выражением «содержащий один…», не исключают дополнительные аналогичные элементы в процессе, методе, товаре или устройстве, которые содержат эти определенные элементы.
[111] Специалист в данной области техники должен понимать, что варианты осуществления настоящего раскрытия могут быть предоставлены в виде способа, системы или компьютерного программного продукта. Следовательно, настоящее раскрытие может  быть реализовано как вариант полностью аппаратного обеспечения, вариант полностью программного обеспечения или вариант осуществления, объединяющий программное и аппаратное обеспечение. Кроме того, настоящее раскрытие может быть в форме компьютерного программного продукта, реализованного на одном или нескольких компьютерных носителях данных (включая, но не ограничиваясь ими, память на магнитных дисках, CD-ROM, оптическую память и тому подобное), содержащую компьютерные программные коды.
[112] Настоящее раскрытие может быть описано в обычном контексте исполняемой компьютером инструкции, которая выполняется компьютером, таким как программный модуль. В различных вариантах осуществления программный модуль содержит подпрограмму, программу, объект, компонент, структуру данных и тому подобное для выполнения конкретной задачи или реализации конкретного абстрактного типа данных. Настоящее раскрытие может  также применяться на практике в распределенных вычислительных средах. В этих распределенных вычислительных средах удаленные устройства обработки, подключенные через сети связи, выполняют задачи. В распределенных вычислительных средах программный модуль может быть расположен на локальных и удаленных компьютерных носителях данных, включая запоминающие устройства.
[113] Варианты осуществления в этом описании описаны последовательно, причем каждый вариант осуществления фокусируется на отличиях от других вариантов осуществления, и варианты осуществления могут ссылаться на взаимные ссылки для их идентичных или аналогичных частей. Для варианта осуществления системы его описание является относительно простым, поскольку оно по существу аналогично варианту осуществления способа. Описание варианта осуществления способа может быть использовано для связанных с ним частей.
[114] Варианты осуществления настоящего раскрытия являются просто примерными и не используются для ограничения настоящего раскрытия. Для специалиста в данной области техники раскрытые варианты осуществления могут быть модифицированы или изменены различными способами. Любая модификация, эквивалентная замена или улучшение, произведенные в духе и согласно принципам настоящего раскрытия, должны охватываться формулой изобретения настоящего раскрытия.