Skip to content

Архитектура Blockchain Integrity Appliance

Общая схема

┌─────────────────────────────────────────────────────────────────────────┐
│                        ИНФРАСТРУКТУРА OZON                              │
│                                                                         │
│  ┌─────────────┐    ┌─────────────────────────────────────────────┐     │
│  │  Source of  │    │         INTEGRITY APPLIANCE (1U)            │     │
│  │  Truth      │    │                                             │     │
│  │  (любой     │    │  ┌─────────┐  ┌────────────┐  ┌──────────┐  │     │
│  │   сервис    │───▶│  │ Go REST │─▶│ Hash       │─▶│ PoA Node │  │     │
│  │   Ozon)     │    │  │ API     │  │ Engine     │  │ (Ethereum│  │     │
│  │             │    │  └─────────┘  │ (SHA-256)  │  │  Client) │  │     │
│  │  - Order    │    │               └────────────┘  └────┬─────┘  │     │
│  │    Service  │    │  ┌──────────────────────────┐      │        │     │
│  │  - Contract │    │  │  Journal DB (PostgreSQL) │      │        │     │
│  │    Service  │    │  │  - все proof-ы           │      │        │     │
│  │  - Logger   │    │  │  - метаданные            │      │        │     │
│  │  - CRM      │    │  └──────────────────────────┘      │        │     │
│  └─────────────┘    └────────────────────────────────────┼────────┘     │
│                                                          │              │
└──────────────────────────────────────────────────────────┼──────────────┘
                                                           │
                                                           ▼
                            ┌─────────────────────────────────────────────────┐
                            │           PoA CONSENSUS NETWORK                 │
                            │              6 Валидаторов                      │
                            │                                                 │
                            │    ┌──────────┐  ┌──────────┐  ┌──────────┐     │
                            │    │ Node 1   │  │ Node 2   │  │ Node 3   │     │
                            │    │ (ДЦ А)   │──│ (ДЦ B)   │──│ (ДЦ C)   │     │
                            │    └──────────┘  └──────────┘  └──────────┘     │
                            │         │                            │          │
                            │    ┌──────────┐  ┌──────────┐  ┌──────────┐     │
                            │    │ Node 4   │  │ Node 5   │  │ Node 6   │     │
                            │    │ (ДЦ D)   │──│ (ДЦ E)   │──│ (OZON)   │     │
                            │    └──────────┘  └──────────┘  └──────────┘     │
                            │                                                 │
                            │    * Consensus: IBFT 2.0                        │
                            │    * Block time: 3-12 секунд                    │
                            │    * Gas: 0 (бесплатные транзакции)             │
                            └─────────────────────────────────────────────────┘

Компоненты Appliance

1. REST API (Go)

  • Фреймворк: chi или стандартный net/http
  • Эндпоинты:
Метод Путь Описание
POST /api/v1/proof Отправить данные на proof
GET /api/v1/proof/:id Получить proof по ID
GET /api/v1/proof/tx/:txhash Получить proof по tx hash
GET /api/v1/verify Проверить документ (hash → proof)
GET /api/v1/status Health check + метрики ноды
GET /metrics Prometheus metrics
  • Формат запроса POST /proof:

    {
      "document_id": "contract-2025-001",
      "hash": "sha256hex...",
      "metadata": {
        "type": "contract",
        "timestamp": 1715692800,
        "source": "contract-service.ozon.internal"
      }
    }
    

  • Формат ответа:

    {
      "status": "confirmed",
      "proof": {
        "tx_hash": "0x7a1e...f3c9",
        "block_number": 1047297,
        "block_hash": "0x...",
        "timestamp": 1715692802,
        "validator": "ozon-node"
      },
      "verification_url": "https://explorer.integrity.network/tx/0x7a1e...f3c9"
    }
    

2. Hash Engine

  • SHA-256 (стандартный, может быть BLAKE2b для производительности)
  • Возможность пакетной обработки: несколько документов → Merkle tree → один root hash → одна транзакция
  • Bulk API до 1000 документов в одной транзакции

3. PoA Node (Ethereum Client)

  • Клиент: Go-Ethereum (geth) в режиме PoA
  • Consensus: IBFT 2.0 (Istanbul Byzantine Fault Tolerance)
  • Block time: 3-12 секунд
  • Finality: мгновенная (no fork possibility in PoA)

4. Journal DB (PostgreSQL)

  • Хранит полную историю: какие документы, когда, какой hash, какой tx hash
  • Служит для быстрой проверки без обращения к блокчейну
  • Реплицируется на внешний storage для disaster recovery

5. Мониторинг

  • Prometheus metrics: количество proof-ов, время подтверждения, статус консенсуса, загрузка CPU/RAM
  • Health check: /api/v1/status — состояние ноды, синхронизация, peers
  • Alerts: падение ноды, потеря синхронизации, деградация производительности

Процесс proof-ing (пошагово)

Клиент                    Appliance                     PoA Network
  │                          │                              │
  │  POST /api/v1/proof      │                              │
  │─────────────────────────▶│                              │
  │                          │  1. Валидация входных данных │
  │                          │  2. Вычисление SHA-256       │
  │                          │  3. Формирование tx          │
  │                          │─────────────────────────────▶│
  │                          │  4. IBFT consensus (3-12 сек)│
  │                          │◀─────────────────────────────│
  │                          │  5. Сохранение в Journal DB  │
  │  { tx_hash, block, ts }  │                              │
  │◀─────────────────────────│                              │
  │                          │                              │
  │  GET /api/v1/verify      │                              │
  │─────────────────────────▶│                              │
  │                          │  6. Сравнение hash:          │
  │                          │     запрос → блокчейн        │
  │  { valid: true/false }   │                              │
  │◀─────────────────────────│                              │

Hardware спецификация (начальная оценка)

Компонент Минимальная Рекомендуемая (Ozon)
CPU 4 cores, 2.0 GHz 16 cores, 3.0 GHz (AMD EPYC 7313)
RAM 16 GB 64 GB
SSD 500 GB 1 TB NVMe + 4TB SAS
Сеть 1 GbE 10 GbE
Питание 1x 2N hot-swap
Форм-фактор 1U 1U

Оценка нагрузки: - 100 TPS хэшей → ~8.6M proof-ов в день - Размер 1 proof в блокчейне: ~100 байт - Рост блокчейна: ~1 GB в месяц при 100 TPS - Journal DB: ~30 GB в месяц (с метаданными)


Безопасность

Data leakage

  • Zero data leakage: только 32-байтовые хэши покидают периметр Ozon
  • Hash необратим — невозможно восстановить исходные данные
  • Метаданные (document_id, source) остаются только в Journal DB на appliance

Network security

  • Нода Ozon подключается к PoA сети через TLS
  • Белый список пиров (static-nodes.json)
  • API доступен только внутри сети Ozon
  • Option: дополнительная аутентификация запросов (API key / JWT)

Физическая безопасность

  • TPM 2.0 для защиты ключа валидатора
  • Secure boot
  • Encrypted storage (LUKS)

Аудит

  • Все изменения конфигурации логируются
  • Journal DB immutable (append-only)
  • Регулярная сверка Journal DB с блокчейном