Как узнать, какое событие разности состояний соответствует какому блоку?

#hyperledger-sawtooth

#hyperledger-sawtooth

Вопрос:

Я синхронизирую часть реестра sawtooth с внешней базой данных, подписавшись на события ‘sawtooth / state-delta’ и ‘sawtooth / block-commit’, поэтому, когда происходит форк, я должен иметь возможность распознавать недействительные транзакции, как описано в документации:

https://sawtooth .hyperledger.org/faq/transaction-processing/#how-do-i-handle-forks-while-subscribing-to-sawtooth-events

Однако события разности состояний не имеют никакого атрибута, ссылающегося на блок, который их сгенерировал. Самое близкое, что я получил, — это посмотреть на проект sawtooth:

https://github.com/hyperledger-archives/sawtooth-supply-chain.git

В этом проекте кажется, что события сгруппированы в «Списки событий», и что если вы подписываетесь как на события ‘sawtooth / state-delta’, так и на события ‘sawtooth / block-commit’, вы можете сказать, что событие разности соответствует блоку, если они включены в один и тот же «Список событий». Проблема в том, что документация, насколько я могу судить, не гарантирует такое поведение.

Ответ №1:

Каждый список событий с событием фиксации блока будет иметь только одно событие фиксации блока. Если событие находится в этом списке, оно было сгенерировано блоком, описанным в событии фиксации блока.

https://sawtooth .hyperledger.org/docs/core/nightly/1-2/app_developers_guide/zmq_event_subscription.html ?выделить=последние известные блоков#соотнесение событий с блоками