Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

senaite.proofchain

senaite.proofchain — это дополнение для Open Source LIMS SENAITE, которое вычисляет детерминированные хеши защищаемых лабораторных полей и регистрирует их во внешнем сервисе доказательств. Исходные лабораторные данные остаются в SENAITE; за пределы LIMS передаются только хеши и технические метаданные доказательств.

Дополнение предназначено для установок SENAITE 2.x на базе Plone 5 и Python 2.7.

Возможности

  • регистрирует доказательства после создания или изменения защищаемых объектов SENAITE;
  • сохраняет блокчейн-квитанцию, идентификатор запроса и статус проверки в аннотациях объекта;
  • помещает запросы в исходящую очередь SQLite, если внешний сервис недоступен;
  • проверяет текущие данные объекта по подтверждённому доказательству в блокчейне;
  • отображает в пользовательском интерфейсе состояния PENDING, OK, FAIL и ошибки регистрации;
  • корректно обрабатывает значения UTF-8 и кириллицу при вычислении канонического хеша.

Установка с помощью buildout

Добавьте пакет в конфигурацию buildout SENAITE:

[buildout]
eggs +=
    senaite.proofchain

auto-checkout +=
    senaite.proofchain

[sources]
senaite.proofchain = git https://github.com/ivanluchkov/senaite.proofchain.git rev=v0.1.0

Запустите buildout и перезапустите экземпляр SENAITE:

bin/buildout -N
bin/instance restart

Откройте Site Setup → Add-ons и установите SENAITE Proofchain. После этого новые защищаемые объекты будут регистрироваться автоматически.

Конфигурация среды выполнения

Следующие переменные окружения должны быть доступны процессу SENAITE:

Переменная Обязательна Описание
PROOF_SERVICE_URL да Базовый URL внешнего сервиса доказательств
PROOF_SERVICE_TOKEN да Общий токен аутентификации
PROOFCHAIN_OUTBOX_SQLITE_PATH да Доступный для записи путь к исходящей очереди SQLite
PROOFCHAIN_CRITICAL_FIELDS нет JSON-сопоставление типов портала и защищаемых полей
PROOFCHAIN_RELEVANT_TYPES нет JSON-список типов объектов, обрабатываемых дополнением
PROOFCHAIN_VERIFY_ON_VIEW нет Установите значение true, чтобы выполнять проверку при каждом открытии страницы объекта

Пример:

export PROOF_SERVICE_URL=http://proof-service:8000
export PROOF_SERVICE_TOKEN=replace-with-a-random-token
export PROOFCHAIN_OUTBOX_SQLITE_PATH=/var/lib/senaite-proofchain/outbox.sqlite3
export PROOFCHAIN_CRITICAL_FIELDS='{"AnalysisRequest":["Title","ClientSampleID"],"Analysis":["Result","Unit","Method"]}'

Каталог исходящей очереди должен быть постоянным и доступным для записи процессу SENAITE.

Состояния проверки

Состояние Значение
PENDING Доказательство принято сервисом и ожидает подтверждения в блокчейне
OK Текущие защищаемые данные соответствуют подтверждённому доказательству
FAIL Текущие защищаемые данные отличаются от подтверждённого доказательства
SUBMISSION_FAILED Не удалось зарегистрировать доказательство; это не является нарушением целостности
PROOF_OUTDATED Сохранённая блокчейн-квитанция больше не соответствует активной схеме доказательства или удалённой записи

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

Восстановление исходящей очереди

Если сервис доказательств недоступен, запросы сохраняются локально. После восстановления сервиса обработайте очередь:

bin/zopepy -m senaite.proofchain.outbox_worker --once

Для непрерывной обработки:

bin/zopepy -m senaite.proofchain.outbox_worker --interval 10

Записи, уже находящиеся в очереди, отправляются раньше новых, чтобы сохранить порядок.

Проверка установки

Запустите тесты пакета из окружения buildout SENAITE:

bin/test -s senaite.proofchain

Для развёртывания полного стенда с SENAITE, сервисом доказательств и Besu используйте отдельный репозиторий senaite-proofchain-demo.

About

Proofchain - аддон для LIMS SENAITE

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages