qcrypt-rng / README.md
rocRevyAreGoals15's picture
Add HF Space metadata to README and ignore PRD screenshots
b3d4326
---
title: QCrypt RNG
emoji: πŸ”
colorFrom: indigo
colorTo: purple
sdk: docker
app_port: 7860
pinned: false
---
# QCrypt RNG
**Quantum-enhanced random number generation, post-quantum cryptography, and blockchain security.**
QCrypt RNG is a platform for cryptographically secure randomness and quantum-resistant security. It provides a REST API and web dashboard for quantum-backed entropy, NIST-standard post-quantum algorithms, a verifiable random function (VRF) oracle for blockchains, data protection tools, and threat intelligence. The stack runs as a single Docker image and is deployable to cloud or Hugging Face Spaces.
**Live demo:** [Hugging Face Spaces](https://huggingface.co/spaces/rocRevyAreGoals15/qcrypt-rng)
**Upgrade roadmap:** [docs/UPGRADE_ROADMAP.md](docs/UPGRADE_ROADMAP.md)
**AI / Cursor session prompt:** [docs/CURSOR_OPERATOR_PROMPT.md](docs/CURSOR_OPERATOR_PROMPT.md)
---
## What it does
- **Quantum randomness** β€” Random bytes, keys, UUIDs, passwords, and session tokens with configurable qubit counts (8/12/16) and batch generation.
- **Quantum VRF** β€” Verifiable random function with a one-time quantum seed, Keccak-256 commitment (Ethereum-compatible), and commit–reveal flow; supports Ethereum, Polygon, BSC, Avalanche, Fantom.
- **Post-quantum cryptography** β€” Complete NIST-standardized PQC suite:
- **Signatures**: DILITHIUM2/3/5, FALCON512/1024, SPHINCS+-SHA2-128f (FIPS 204, 205)
- **Key Exchange**: KYBER512/768/1024, NTRU-HPS, SABER (FIPS 203)
- Full KEM workflow: generate keypair, encapsulate, decapsulate
- **Data protection** β€” AES-256-GCM, AES-128-GCM, AES-256-CBC (quantum or user-supplied keys); file encryption; HMAC sign/verify; quantum-salted hashing (SHA3, PBKDF2, BLAKE2b).
- **Blockchain security** β€” Quantum-safe vs classical wallet comparison, Shor-based attack simulation, chain comparison, demo mining, and oracle randomness (single and batch).
- **On-chain oracle fulfillment** β€” Real blockchain integration for oracle requests with commit-reveal on Ethereum, Polygon, BSC, Avalanche, and Fantom.
- **Threat intelligence** β€” Algorithm vulnerability scanning, oracle benchmarking, and qubit-to-break estimates.
- **Quantum hardware** β€” Abstraction layer for real QRNG devices (ID Quantique Quantis, QuintessenceLabs qStream) with entropy quality checks.
- **Operations** β€” Health checks, entropy quality and hardware status, monitoring metrics; optional rate limiting and API key auth.
---
## Quick start
**Prerequisites:** Python 3.8+, Node.js 18+ (for the dashboard), pip.
**Backend:**
```bash
git clone <repository-url>
cd qcrypt-rng
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python run_api.py
```
Use a **`.venv`** in the project root (not `venv/`). `scripts/start.py` also looks for `.venv/bin/python`.
API: http://localhost:8000 β€” Interactive docs: http://localhost:8000/docs
**Frontend:**
```bash
cd quantum-oracle-ui
npm install
npm run dev
```
Dashboard: **http://localhost:3040** by default (`quantum-oracle-ui/find-port.js` picks the next free port from 3040 upward so this project does not grab 3000). Auto-discovers API on ports 8000–8004, or set `NEXT_PUBLIC_API_BASE_URL`. See `quantum-oracle-ui/env.example`.
**Production:** See [docs/PRODUCTION.md](docs/PRODUCTION.md). For Docker: `docker-compose up -d` or Kubernetes via `./deploy.sh`.
**Hugging Face Spaces:** The root `Dockerfile` is built for Spaces (Nginx + FastAPI + Next.js on port 7860). Create a Docker Space, add the Space as a remote, and push `main`; use a [HF token](https://huggingface.co/settings/tokens) with write access when prompted. The app will be available at your Space URL after the build completes.
---
## Web dashboard
The dashboard has five sections and an in-app Docs link:
| Section | Capabilities |
|--------|----------------|
| Blockchain Security | Wallet creation, VRF proof generation and verification, supported chains |
| Data Protection | Encrypt/decrypt (text and file), sign/verify, hash, PQC key generation and sign/verify |
| Key and Entropy Tools | Random bytes, keys, UUIDs, passwords, tokens, batch generation, oracle requests |
| Threat Intelligence | Algorithm scanning, attack simulation, blockchain comparison, benchmarks |
| Network Status | Platform health, entropy quality, hardware status, oracle request lookup |
Each card includes an info popover; collapsible sections are used for dense workflows.
---
## API reference
Base path: `/api/v2`.
### Quantum Randomness Generation
| Endpoint | Description |
|----------|-------------|
| `POST /generate/bytes` | Generate random bytes |
| `POST /generate/key` | Generate cryptographic key (AES-128/256) |
| `POST /generate/uuid` | Generate quantum UUID v4 |
| `POST /generate/password` | Generate random password |
| `POST /generate/token` | Generate session token |
| `POST /generate/batch` | Batch generation |
### Post-Quantum Cryptography
**Dilithium Signatures:**
| Endpoint | Description |
|----------|-------------|
| `POST /pqc/generate` | Generate DILITHIUM keypair |
| `POST /pqc/sign` | Sign message |
| `POST /pqc/verify` | Verify signature |
**Kyber KEM:**
| Endpoint | Description |
|----------|-------------|
| `POST /pqc/kem/generate` | Generate KYBER keypair |
| `POST /pqc/kem/encapsulate` | Encapsulate shared secret |
| `POST /pqc/kem/decapsulate` | Decapsulate shared secret |
| `GET /pqc/kem/info` | KEM documentation |
**FALCON Signatures:**
| Endpoint | Description |
|----------|-------------|
| `POST /pqc/falcon/generate` | Generate FALCON keypair |
**SPHINCS+ Signatures:**
| Endpoint | Description |
|----------|-------------|
| `POST /pqc/sphincs/generate` | Generate SPHINCS+ keypair |
**NTRU KEM:**
| Endpoint | Description |
|----------|-------------|
| `POST /pqc/ntru/generate` | Generate NTRU keypair |
**SABER KEM:**
| Endpoint | Description |
|----------|-------------|
| `POST /pqc/saber/generate` | Generate SABER keypair |
**General:**
| Endpoint | Description |
|----------|-------------|
| `GET /pqc/algorithms` | List supported algorithms |
| `GET /pqc/info` | PQC information |
| `POST /pqc/threat-assessment` | Assess quantum threat |
### Oracle & On-Chain Fulfillment
**Basic Oracle:**
| Endpoint | Description |
|----------|-------------|
| `POST /oracle/request` | Request quantum randomness |
| `POST /oracle/requests/batch` | Batch oracle requests |
| `GET /oracle/status/:id` | Get request status |
| `GET /oracle/network-info` | Network status |
| `GET /oracle/benchmark` | Benchmark oracle |
**On-Chain Fulfillment:**
| Endpoint | Description |
|----------|-------------|
| `POST /oracle/fulfillment/configure-chain` | Configure blockchain |
| `POST /oracle/fulfillment/request` | Create on-chain request |
| `GET /oracle/fulfillment/status/:id` | Fulfillment status |
| `GET /oracle/fulfillment/requests` | List all requests |
| `GET /oracle/fulfillment/chains` | Supported chains |
| `POST /oracle/fulfillment/retry/:id` | Retry failed request |
**VRF:**
| Endpoint | Description |
|----------|-------------|
| `POST /oracle/vrf/seed` | Generate VRF seed |
| `POST /oracle/vrf/prove` | Generate VRF proof |
| `POST /oracle/vrf/reveal` | Reveal VRF |
| `POST /oracle/vrf/verify` | Verify VRF |
### Data Protection
| Endpoint | Description |
|----------|-------------|
| `POST /protect/encrypt` | Encrypt data (AES) |
| `POST /protect/decrypt` | Decrypt data |
| `POST /protect/encrypt-file` | Encrypt file |
| `POST /protect/decrypt-file` | Decrypt file |
| `POST /protect/sign` | HMAC sign |
| `POST /protect/verify` | HMAC verify |
| `POST /protect/hash` | Quantum-salted hash |
| `POST /protect/salt` | Generate quantum salt |
### Blockchain Security
| Endpoint | Description |
|----------|-------------|
| `POST /blockchain/create-wallet` | Create quantum wallet |
| `POST /blockchain/sign-transaction` | Sign transaction |
| `POST /blockchain/simulate-attack` | Simulate Shor attack |
| `POST /blockchain/verify-quantum-safe` | Verify quantum-safe |
| `POST /blockchain/mine-block` | Demo mining |
| `GET /blockchain/compare-blockchains` | Compare chains |
### Hardware & System
| Endpoint | Description |
|----------|-------------|
| `GET /health` | Health check |
| `GET /quantum/entropy` | Entropy quality |
| `GET /quantum/stats` | Generation statistics |
| `POST /quantum/reseed` | Reseed entropy pool |
| `GET /hardware/devices` | List hardware devices |
| `GET /monitoring/metrics` | Prometheus metrics |
Full interactive API docs: http://localhost:8000/docs (or `/swagger` when running behind the bundled Nginx).
---
## Stack
- **Backend:** FastAPI, Uvicorn, Python 3.8+
- **Frontend:** Next.js 16, React, TypeScript, Tailwind CSS
- **Quantum:** QRisp-style simulation; hardware abstraction for photonic/superconducting devices
- **Quantum Hardware:** ID Quantique Quantis, QuintessenceLabs qStream adapters
- **Crypto:** PyCryptodome (Keccak-256), `cryptography` (AES/RSA/ECDSA), liboqs-python (DILITHIUM/KYBER/FALCON/SPHINCS+/NTRU/SABER)
- **Blockchain:** web3.py for Ethereum, Polygon, BSC, Avalanche, Fantom
- **Deployment:** Docker (single image for Spaces), Docker Compose, Kubernetes
---
## Quantum Hardware Backends
QCrypt RNG supports multiple quantum hardware backends for true random number generation:
| Backend | Environment Variable | Description |
|---------|---------------------|-------------|
| `qrisp_simulator` | `QUANTUM_BACKEND=qrisp_simulator` | Quantum circuit simulation (default) |
| `idq_quantis` | `QUANTUM_BACKEND=idq_quantis` | ID Quantique Quantis (USB/PCIe/Network) |
| `qlabs_qstream` | `QUANTUM_BACKEND=qlabs_qstream` | QuintessenceLabs qStream (TCP/IP) |
| `hardware_photonic` | `QUANTUM_BACKEND=hardware_photonic` | Generic photonic QRNG |
| `hardware_superconducting` | `QUANTUM_BACKEND=hardware_superconducting` | Generic superconducting QRNG |
### Hardware Configuration
**ID Quantique Quantis:**
```bash
QUANTUM_BACKEND=idq_quantis
IDQ_DEVICE_ADDRESS=usb://0
IDQ_DEVICE_TYPE=usb # usb, pcie, or network
IDQ_CALIBRATION_FILE=/path/to/calibration.json
```
**QuintessenceLabs qStream:**
```bash
QUANTUM_BACKEND=qlabs_qstream
QLABS_DEVICE_ADDRESS=tcp://localhost:8888
QLABS_API_KEY=your-api-key
```
### Entropy Quality Checks
The system performs NIST SP 800-90B entropy estimation:
- Chi-square uniformity test
- Shannon entropy calculation
- Min-entropy estimation
- Overall quality assessment
Access via `GET /quantum/entropy` or the dashboard Network Status section.
---
## On-Chain Oracle Fulfillment
QCrypt RNG provides real blockchain integration for oracle requests:
### Supported Chains
| Chain | Chain ID | Explorer | Features |
|-------|----------|----------|----------|
| Ethereum | 1 | etherscan.io | Mainnet, Sepolia testnet |
| Polygon | 137 | polygonscan.com | Low fees, fast confirmation |
| BSC | 56 | bscscan.com | Low fees |
| Avalanche | 43114 | snowtrace.io | Fast finality |
| Fantom | 250 | ftmscan.com | Low fees, fast |
### Fulfillment Workflow
1. **Configure Chain:** `POST /oracle/fulfillment/configure-chain`
2. **Create Request:** `POST /oracle/fulfillment/request`
3. **Automatic Fulfillment:**
- Generate quantum randomness
- Create commitment (keccak256)
- Submit commit transaction
- Wait for confirmation
- Submit reveal transaction
- Mark as completed
### Fulfillment Status
| Status | Description |
|--------|-------------|
| `pending` | Request created |
| `commit_submitted` | Commit transaction sent |
| `commit_confirmed` | Commit confirmed on-chain |
| `reveal_submitted` | Reveal transaction sent |
| `reveal_confirmed` | Reveal confirmed on-chain |
| `completed` | Fulfillment complete |
| `failed` | Fulfillment failed (can retry) |
### Security Notes
⚠️ **Private Key Security:**
- Never commit private keys to version control
- Use hardware wallets or KMS in production
- Store keys in environment variables or secure vaults
- Rotate keys regularly
### Testnet Deployment
For testing and development, deploy the oracle contracts to testnets:
**Supported Testnets:**
- Ethereum Sepolia (Chain ID: 11155111)
- Polygon Amoy (Chain ID: 80002)
- BSC Testnet (Chain ID: 97)
- Avalanche Fuji (Chain ID: 43113)
- Fantom Testnet (Chain ID: 4002)
**Deployment Guide:** See [docs/next-phase/TESTNET_DEPLOYMENT.md](docs/next-phase/TESTNET_DEPLOYMENT.md)
```bash
# Deploy to all testnets
cd quantum-oracle/contracts
npx hardhat run scripts/deploy-all-testnets.js --network sepolia
# Validate deployments
npx hardhat run scripts/validate-deployment.js --network sepolia
```
**Contract Addresses:** After deployment, update `.env` with contract addresses:
```bash
ORACLE_CONTRACT_SEPOLIA=0x...
ORACLE_CONTRACT_POLYGON_AMOY=0x...
# etc.
```
---
## Repository layout
| Path | Contents |
|------|----------|
| `app/` | FastAPI backend (`/api/v2`) |
| `quantum-oracle-ui/` | Next.js 16 dashboard |
| `docs/` | Technical docs, [PRODUCTION.md](docs/PRODUCTION.md), upgrade roadmaps, guides (`docs/guides/`) |
| `examples/` | Standalone sample scripts (e.g. `quantum_randomness_oracle.py`) |
| `legacy/` | Deprecated Streamlit dashboard and static HTML demos |
| `scripts/` | Dev helpers (e.g. `scripts/start.py` β€” API + UI) |
| `tests/unit/`, `tests/integration/` | Pytest suites |
| `tests/manual/` | Interactive check scripts (run with `python`, not pytest) |
| `client_sdk/`, `quantum-oracle/`, `k8s/` | SDK, oracle node/contracts, Kubernetes |
Entry points: `python run_api.py` (API only), `python scripts/start.py` (API + Next.js).
---
## Documentation
- [docs/README.md](docs/README.md) β€” index of documentation in `docs/`
- [docs/UPGRADE_ROADMAP.md](docs/UPGRADE_ROADMAP.md) β€” product upgrade map (monetization, platform quality, oracle)
- In-app documentation: `/docs` in the web dashboard
- [docs/PRODUCTION.md](docs/PRODUCTION.md) β€” deployment and operations
- [Python SDK](client_sdk/python/README.md) β€” client library
- [docs/IMPLEMENTATION_SUMMARY_2026.md](docs/IMPLEMENTATION_SUMMARY_2026.md) β€” Phase 1 implementation details
- [docs/NEXT_STEPS_PHASE2.md](docs/NEXT_STEPS_PHASE2.md) β€” Phase 2 roadmap
---
## License
MIT License.