# Nautilus Infra

## Nautilus Infra

**Python Backend**

* **Role**: Handles core verification logic.
* **Capabilities**:
  * OCR for extracting ID data.
  * Facial liveness and matching for identity confirmation.
  * OTP generation and validation.
* **Output**: Produces a JSON payload with verification details, sent to Kafka:

  ```json
  {
    "user_wallet": "0x123abc...",
    "did_id": "age_18_plus",
    "result": "verified",
    "evidence_hash": "sha256:3f2a...9e4b",
    "verified_at": "2025-09-24T12:31:00Z"
  }
  ```

**Rust Backend**

* **Role**: Manages blockchain integration.
* **Capabilities**:
  * Consumes Kafka messages.
  * Signs payloads with Nautilus and ODA ephemeral keys.
  * Updates the smart contract to record verified users.

**Why It Works**

The Python backend ensures fast, reliable verification, while Rust adds secure, tamper-proof blockchain updates. Together, they create a powerful and trustworthy system.
