Вопросы разработчикам: низкоуровневая демонстрация работы распределённых реестров (Hyperledger Fabric)

Рабочий материал для уточнения у разработчиков (2026-10-13, обновлено по финальной структуре ПМИ v07 и эскизу ЧТЗ v07). Два блока: идеи демонстраций на нижних слоях HLF и вопросы по расхождениям ЧТЗ/стенда (коды В-N — из отчёта сверки сверка_с_обновлёнными_источниками.md, разд. 3; И-N — реестр work/OQ.md).

1. Идеи демонстрации «ниже уровня API» — что подтвердить/показать

№

Что показать

Как (инструмент, команда)

Что доказывает

1

mTLS и gRPC-трафик узлов

tcpdump на сетевом интерфейсе docker стенда (порты 7050/7051/7052/9443) при прогоне проверок А.4–А.7 ПМИ (обращение к чейнкоду)

факт шифрованного канала и взаимной аутентификации узлов

2

Gossip-обмен пиров

тот же захват — GossipMessage: StateRequest/StateResponse/DataMsg; peer gossip state

распространение блоков между пирами без orderer

3

Proposal/ProposalResponse при query

захват при peer chaincode query

запрос к чейнкоду не пишет в блок (только endorsement-фаза)

4

Структура транзакции и блока

peer channel fetch + декодирование protobuf (configtxlator, protolator, protoc --decode): ChannelHeader (channel_id, tx_id, timestamp), SignatureHeader (creator, MSP), ChaincodeAction (read/write set ключей БД)

как запись реестра выглядит внутри блока

5

Transient-данные

сравнить --transient (TransientMap в Proposal) и обычные Args

параметры через transient не сохраняются в блоке — конфиденциальность

6

БД Глобального состояния (world state, CouchDB)

прямые запросы к CouchDB узла или GetState чейнкода; сопоставить запись с JSON ответа API

материальная основа проверок А.8–А.10 ПМИ (псевдонимы КОЛЛЕКЦИЯ_N.M)

7

Леджер на диске

каталоги chains/chains/<channel>/blockfile_*, высота блока

блоки и мировой уровень отделены

8

Консенсус orderer (Raft)

логи/метрики orderer, смена лидера

доставка и упорядочение блоков

9

Метрики операций

prometheus-эндпоинт peer (operations.metrics)

количественное подтверждение «высоконагруженности»

2. Вопросы по расхождениям (решения нужны для ЧТЗ v07 и ПМИ v07)

  1. Инструменты стенда: доступны ли tcpdump / configtxlator / protolator / доступ к CouchDB и метрикам на узлах? Если нет — можно ли развернуть (или выполнять с узла admin0.esiapeer.ru)?

  2. Имена коллекций/таблиц БД (для проверок А.8–А.10 ПМИ): фактические имена баз CouchDB каналов (aca-pub-channel, iit-aca-priv-channel и др.) и состав полей записи — id/idCertificate/tbsHash против _id/hashTBS (И66).

  3. Канон endpoint'ов (В-1): прежние пути /certificate/qual/* (стенд 30.09, swagger, коллекция) или переименованные /qual-certificates/* (снимок 261002); имя метода отмены — certificate-cancel или cancel?

  4. Событие регистрации (В-2): код 1 (ЧТЗ, стенд) или 16 (снимок 261002)?

  5. Модель ответа на создание записи (В-5): {"cert": …} или расширенный JSON стенда (id, idCertificate, isCA, warnings, isChecked, createdAtCC)?

  6. Каналы и чейнкоды УНЭП и УЦ: имена для проверок А.5/А.6 ПМИ (goskey-*, каналы аккредитации) — когда будут развёрнуты на стенде?

  7. Переключение маршрута после ротации (В-7, И62): как REST-прокси/чейнкод узнаёт о ротации и новом канале?

  8. Закрепление uuid отдельной транзакцией (В-6): транзакция через RegistryContract с журналом коллизий (диаграммы) против формирования при создании записи (ЧТЗ 4.2.4.4); как выполняется межчейнкодный вызов BizCC → RegCC (Р-8)?

  9. Битовый состав идентификатора (В-4): 5 бит реестра + 32 бита владельца (ЧТЗ/260714) или 13 + 24 (снимок 261002, §5.2)?

  10. Ответ «на дату» (В-3): расширенный вариант (certId/localStatus/accreditationStatus/…) или упрощённый (cert/event/valid/privateKeyStatus); тип privateKeyStatus — boolean или строка?

  11. CHAIN_CRYPTO_* (В-13): перечень предупреждений и error_depth при неуспехе полной криптопроверки цепочки — подтвердить поведение.

  12. Коды ошибок публичного канала (В-11): ERR-0729 или ERR-1414 (стенд 08.10 вернул ERR-1414); слитые «ERR-072914» снимка.

  13. Тип сертификата УНЭП (В-10): имя и словарь поля, фиксирующего тип (END_ENTITY), — в моделях снимка поля certType нет (registration_json.owner_type / ownerType с разными словарями); какое имя поля фактически возвращают чейнкод/БД — для проверок А.5/А.9 ПМИ.