Что происходит с недействительными транзакциями в блоке, проверенном / созданном заказчиком в структуре hyperledger? - PullRequest
1 голос
/ 12 марта 2019

В документации потока транзакций

5. Сделка подтверждена и совершена
Блоки транзакций «доставляются» всем партнерам на канале. Транзакции в блоке проверяются, чтобы убедиться, что политика одобрения выполнена, и чтобы убедиться, что не было никаких изменений в состоянии бухгалтерской книги для переменных набора чтения, так как набор чтения был сгенерирован выполнением транзакции. Транзакции в блоке помечаются как действительные или недействительные .

Означает ли это, что блок также содержит недопустимую транзакцию?

Ответы [ 2 ]

2 голосов
/ 12 марта 2019

Да - поскольку блоки от заказчика подписаны, одноранговый узел сериализует весь блок как с действительной, так и с недействительной транзакцией.Он добавляет внешние метаданные в сериализованные блоки, чтобы пометить недействительные транзакции.И, конечно, изменения состояния для недействительных транзакций не применяются к базе данных состояния.

1 голос
/ 13 марта 2019

Даже я изначально был озадачен этим, и для лучшего понимания пришлось перечитать документацию.

Как мы знаем, регистр Hyperledger Fabric состоит из двух частей: 1. Состояние мира и 2. Журнал транзакций. Таким образом, происходит следующее: после того, как заказчик отправляет блок, содержащий заказанные транзакции, с политиками и верификациями транзакций, он принимается одноранговым узлом, который, в свою очередь, передает этот блок всем другим узлам в канале.

Как только одноранговый узел получает блок, он проходит через все транзакции в блоке и проверяет транзакцию, т. Е. Проверку политик и проверку работоспособности данных транзакции по данным о состоянии мира. Если в какой-либо учетной записи обнаружена дефектная транзакция (проверка политик / данных), одноранговый узел помечает транзакцию как недействительную и не фиксирует транзакцию в состоянии мира. Напротив, если транзакция действительна, одноранговый узел будет выполнять действия (Добавить / Обновить / Удалить) для состояния мира на основе набора транзакций для чтения / записи.

Как только все транзакции будут обработаны, блок будет добавлен в журнал транзакций (он же Block Chain). Это означает, что блок в цепочке блоков будет содержать как действительные, так и недействительные транзакции, а транзакции будут иметь маркировку, указывающую, является ли она действительной или недействительной. Одноранговый узел может перестроить мировое состояние, просмотрев журнал транзакций - в этом сценарии будут рассматриваться только допустимые транзакции для перестройки мирового состояния.

Есть также другой ответ на аналогичную строку - https://stackoverflow.com/a/50622463/2040522

...