Во-первых, я хотел бы исправить первую точку вашего понимания:
В упрощенном смысле, как только Заказчик получает пакет транзакций из клиентского приложения, они объединяются в блок, который затем отправляетсячерез пиров для обработки;для выполнения проверочных проверок и последующего обновления состояния мира и цепочки блоков.
Матрица Hyperledger работает на архитектуре execute-order-validate .Транзакции из клиентских приложений сначала передаются на подтверждающие узлы.Подтверждающий узел выполняет предложенные транзакции, захватывает наборы для чтения и записи и отправляет их обратно в приложение в качестве ответов после подписания . Затем приложение отправляет ответы в виде транзакций в службу заказа.
Ответы на ваши вопросы:
1. Что происходит сейчас, если пэры каким-то образом это делаютне прийти к аналогичному результату (где разные коллеги предлагают свой конечный результат для блока)?Существует ли какой-либо набор одноранговых узлов, чей результат будет рассматриваться с более высоким приоритетом, чем у остальных, или система может пойти на решение, основанное на консенсусе?Как будет разрешен такой конфликт?
Отв.Сначала транзакции подтверждаются подтверждающими одноранговыми узлами, а наборы RW отправляются обратно в приложение после выполнения и подписания.Если приложение получает достаточные подтверждения, как определено в политике подтверждения, то ответ будет отправлен для заказа, в противном случае транзакция завершится неудачей на этапе подтверждения.Вот как конфликты обрабатываются.Fabric может обрабатывать недетерминированные транзакции.
2. Является ли это допустимой (при возникновении такого события) при любых обстоятельствах?Или в сети уже есть проверки, чтобы этого не происходило?
Ответ.Это возможно в случае злонамеренных узлов, сбоя в работе узла, разбиения сети и т.
Какими могут быть возможные причины возникновения такой ситуации, если бы она возникла?Возможная ошибка сети, приводящая к тому, что несколько разных копий одного и того же блока отправляются разным узлам?Или преднамеренное / злонамеренное изменение кода проверки, которым обладает каждый равноправный узел, который он затем будет выполнять при каждой транзакции внутри этого блока?Или может быть что-то еще?
Ответ. Возможные причины, уже упомянутые выше.После фазы заказа, есть фаза проверки.На этом этапе транзакции проверяются принимающими партнерами в соответствии с политикой одобрения и проверяют, является ли транзакция действительной для текущего состояния мира.Недопустимые транзакции записываются в книгу, но не обновляются в мировом состоянии, тогда как действительные транзакции обновляются в регистре и мировом состоянии.