У вас есть только один узел, и, следовательно, ваша политика одобрения будет такой, что если этот узел подтвердит транзакцию, эта транзакция будет действительной.
Однако в случаях использования в реальном времени существует несколько пиров, принадлежащих разным организациям. И политики одобрения таковы, что большинство или все поддерживающие партнеры должны подтвердить транзакцию, чтобы транзакция была признана действительной.
Например, рассмотрим консорциум из 3 организаций: Org1, Org2 и Org3. У каждого из них есть один подтверждающий одноранговый узел, а именно Org1Peer1, Org2Peer1 и Org3Peer1. И подтверждающая политика установлена так, что транзакция действительна только в том случае, если все эти узлы поддерживают транзакцию. Здесь предположим, что вы являетесь администратором Org1.
Теперь для того, чтобы любая действительная транзакция была зафиксирована в регистре, она должна проходить в целом 4 этапа:
- одобряя
- Проверка ответов об одобрении и предложение сделки
- Заказ
- Валидация и фиксация
По вашему вопросу нам нужно рассмотреть этапы 1 и 2. На этапе подтверждения все подтверждающие одноранговые узлы, Org1Peer1, Org2Peer1 и Org3Peer1, должны смоделировать транзакцию и создать набор Read-Write . Здесь подтверждающий одноранговый узел использует значения, хранящиеся в базе данных состояний (например, CouchDB) для создания этого набора. В общем, набор чтения содержит значение состояния актива до моделирования, а набор записи содержит значение состояния актива после моделирования.
Далее, все эти подтверждающие одноранговые узлы отправляют свой набор для чтения-записи клиенту, с которого инициируется транзакция. Здесь проверяется и сравнивается набор для чтения и записи, отправленный всеми подтверждающими узлами. Теперь, поскольку подтверждающая политика требовала, чтобы все одноранговые узлы должны были одобрить транзакцию, набор чтения-записи всех одноранговых узлов должен быть точно таким же. Это означает, что все подтверждающие одноранговые узлы должны иметь одинаковые значения в базе данных состояний до моделирования и должны приводить к одинаковым значениям состояния после моделирования. Если набор для чтения и записи отличается, предложение не создается и транзакция отклоняется.
Таким образом, если вы, будучи администратором Org1, обновили значения в базе данных состояний, то на этапе подтверждения ваш партнер Peg1Peer1 сгенерирует наборы для чтения-записи, отличные от наборов Org2Peer1 и Org3Peer1. И предложение по сделке не будет передано в Службу заказа (этап 3).
Обратите внимание, что клиент может не проверять ответы (набор для чтения и записи) и пересылать предложение по транзакции. Однако это предложение будет проверено на этапе санкционирования и проверки. Здесь транзакция будет помечена как недействительная, поскольку набор для чтения и записи отличается и будет зафиксирован в регистре.
Вы можете получить больше ясности, прочитав о Поток транзакций .