Skip to content

Marcos-sxt/ZK_COMPLY

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧬 ZK_COMPLY v2.0 - Pharmaceutical ADMET Compliance with Zero-Knowledge Proofs

STATUS: RELEASE v2.0 βœ… | 7 Scientific Modules βœ… | zkVerify Integrated πŸš€

License: Proprietary Python 3.13+ Circom snarkjs zkVerify

v2.0 RELEASE: Complete ADMET compliance system with 7 scientific modules
Zero-knowledge proofs for pharmaceutical validation using Circom/Groth16/zkVerify.

🎯 EXECUTIVE SUMMARY v2.0

IMPLEMENTED SCIENTIFIC MODULES:

  • βœ… LogP: Partition coefficient (RDKit)
  • βœ… Multi: Full Lipinski rule (RDKit)
  • βœ… pKa: Acidity constant (MolGpKa API + fallback)
  • βœ… Docking: Molecular affinity (AutoDock Vina + fallback)
  • βœ… QSAR: Toxicity prediction (ML models + heuristics)
  • βœ… Dynamics: Molecular simulation (GROMACS + fallback)
  • βœ… CYP450: Enzymatic metabolism (ML + heuristics)

FULL PIPELINE:

  • βœ… Witness Generation: 7 fully functional scientific modules
  • βœ… ZK Proofs: Circom circuits + Groth16 via snarkjs
  • βœ… Verification: Local and zkVerify fully integrated
  • βœ… REST API: Endpoints for all modules
  • βœ… Robust Fallbacks: Guaranteed operation without external dependencies

πŸ—οΈ ARCHITECTURE v2.0

graph TD
    A[SMILES Input] --> B[Witness Generator]
    B --> C{Scientific Module}
    C -->|LogP| D[RDKit LogP]
    C -->|Multi| E[Lipinski Rule]
    C -->|pKa| F[MolGpKa API]
    C -->|Docking| G[AutoDock Vina]
    C -->|QSAR| H[ML Toxicity]
    C -->|Dynamics| I[GROMACS]
    C -->|CYP450| J[ML Metabolism]
    D --> K[Witness JSON]
    E --> K
    F --> K
    G --> K
    H --> K
    I --> K
    J --> K
    K --> L[Circom Circuit]
    L --> M[snarkjs Groth16]
    M --> N[zkVerify Blockchain]
Loading

Technology Stack v2.0:

  • Backend: Python 3.13 + FastAPI
  • Scientific Calculations: RDKit, MolGpKa, AutoDock Vina, GROMACS
  • ZK Circuits: Circom v2.2.2
  • Proof System: snarkjs + Groth16
  • Blockchain: zkVerify (Polkadot ecosystem)
  • API: REST endpoints for all ADMET modules

🎯 Overview

ZK_COMPLY v2.0 is a complete ADMET compliance system (Absorption, Distribution, Metabolism, Excretion, Toxicity) that enables pharmaceutical companies to prove regulatory compliance without revealing:

  • Proprietary molecular structures
  • Specific test results
  • Experimental methods used
  • Sensitive intellectual property data

πŸ§ͺ ADMET Scientific Modules

Module ADMET Area Technology Fallback Status
LogP Absorption RDKit βœ… βœ…
Multi Absorption RDKit (Lipinski) βœ… βœ…
pKa Distribution MolGpKa API RDKit heuristics βœ…
Docking Distribution AutoDock Vina Molecular descriptors βœ…
CYP450 Metabolism ML models Substructure analysis βœ…
Dynamics Excretion GROMACS Property estimation βœ…
QSAR Toxicity ML models Toxicophore analysis βœ…

πŸ”’ Zero-Knowledge Features

  • Privacy: SMILES and results are never revealed
  • Verifiability: Mathematical proofs of compliance
  • Integrity: Impossible to falsify results
  • Auditability: Immutable trace on blockchain

✨ Features

πŸ”¬ 6 Scientific Analysis Modules

  • LogP: Partition coefficient (solubility)
  • pKa: Acid dissociation constant
  • Docking: Protein-drug molecular docking
  • QSAR: Toxicity analysis via machine learning
  • Dynamics: Molecular dynamics simulation
  • CYP450: Hepatic enzymatic metabolism

πŸ”’ Zero-Knowledge Proofs

  • Circom circuits for each scientific module
  • Automatic witness generation
  • snarkjs usage for proving backends
  • Cryptographic verification of compliance

πŸš€ Complete REST API

  • FastAPI with endpoints for all modules
  • Batch processing of molecules
  • Automatic documentation (Swagger/OpenAPI)
  • Integrated end-to-end tests

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Computation   β”‚    β”‚   Zero-Knowledge β”‚    β”‚   Verification  β”‚
β”‚   Scientific    β”‚ ── β”‚    Circuits      β”‚ ── β”‚   Blockchain    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
      RDKit               Circom Language        zkVerify Chain
   AutoDock Vina           snarkjs Compiler     Smart Contracts
    GROMACS ML              Groth16 Prover      Proof Registry

πŸš€ Quick Start v2.0

Prerequisites

  • Python 3.13+
  • Node.js 18+ (for snarkjs and zkverifyjs)
  • RDKit (pip install rdkit)

Installation

# 1. Clone the repository
git clone https://github.com/your-user/ZK_COMPLY.git
cd ZK_COMPLY

# 2. Install Python dependencies
pip install -r requirements.txt

# 3. Install Node.js dependencies
npm install

# 4. Configure the environment
chmod +x setup.sh
./setup.sh

# 5. Run the API
python main.py

Quick Usage

Individual Module Testing

# LogP (Absorption)
python src/witness_generator.py "CCO" logp

# Lipinski Rule (Absorption)
python src/witness_generator.py "CCO" multi

# pKa (Distribution)
python src/witness_generator.py "CCO" pka

# Docking (Distribution)
python src/witness_generator.py "CCO" docking

# Toxicity (Toxicity)
python src/witness_generator.py "CCO" qsar

# Molecular Dynamics (Excretion)
python src/witness_generator.py "CCO" dynamics

# CYP450 (Metabolism)
python src/witness_generator.py "CCO" cyp450

Full Pipeline with ZK Proof

# Generate ZK proof for LogP
python src/zk_pipeline.py --smiles "CCO" --module logp

# With submission to zkVerify
python src/zk_pipeline.py --smiles "CCO" --module logp --submit

REST API

# Start server
python main.py

# Test endpoint (new terminal)
curl -X POST "http://localhost:8000/compute/logp" \
     -H "Content-Type: application/json" \
     -d '{"smiles": "CCO"}'

# Full pipeline
curl -X POST "http://localhost:8000/pipeline" \
     -H "Content-Type: application/json" \
     -d '{"smiles": "CCO", "module": "logp"}'

Basic Usage

import requests

# Test a molecule (Aspirin)
response = requests.post("http://localhost:8000/test-all", 
    json={"smiles": "CC(=O)OC1=CC=CC=C1C(=O)O"})

print(response.json())
# {
#   "results": {
#     "logp": {"status": "success", "compliant": true},
#     "pka": {"status": "success", "compliant": true},
#     ...
#   },
#   "overall_compliance": true
# }

πŸš€ HOW TO USE (QUICK START)

1. Start Backend API

cd /home/user/Documents/ZK_COMPLY
python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000

2. Generate ZK Proof via API

curl -X POST "http://localhost:8000/generate-zk-proof" \
     -H "Content-Type: application/json" \
     -d '{
       "smiles": "CCO",
       "circuit_type": "logp", 
       "submit_to_zkverify": false
     }'

3. Expected Result

{
  "pipeline_id": "pipeline_20250725_XXXXXX",
  "smiles": "CCO",
  "success": true,
  "compliance_result": true,
  "transaction_hash": null,
  "stages": {
    "witness_generation": {"success": true},
    "proof_generation": {"success": true}
  }
}

πŸ“ PROJECT STRUCTURE

ZK_COMPLY/
β”œβ”€β”€ main.py                    # Main FastAPI backend  
β”œβ”€β”€ src/                       # Python services
β”‚   β”œβ”€β”€ witness_generator.py   # Witness generation for Circom
β”‚   β”œβ”€β”€ snarkjs_service.py     # snarkjs integration
β”‚   β”œβ”€β”€ zkverify_service.py    # Submission to zkVerify
β”‚   └── zk_pipeline.py         # Full pipeline
β”œβ”€β”€ circuits/                  # Circom circuits
β”‚   β”œβ”€β”€ simple_compliance.circom    # LogP compliance circuit
β”‚   β”œβ”€β”€ compliance_circuit.circom   # Multi-criteria circuit
β”‚   β”œβ”€β”€ circuit.zkey               # Proving key
β”‚   └── verification_key.json      # Verification key
β”œβ”€β”€ proofs/                    # Generated proofs and witnesses
β”œβ”€β”€ scripts/                   # Auxiliary scripts
└── docs/                      # Technical documentation

πŸ§ͺ TESTED EXAMPLES

Compliant Molecules:

  1. Ethanol (CCO): LogP = -0.001 β†’ βœ… Compliant
  2. Paracetamol derivative: LogP = 3.224 β†’ βœ… Compliant

Non-Compliant Molecules:

  1. C20 Chain: LogP = 8.048 β†’ ❌ Non-Compliant

Public Proof Outputs:

  • ["1", "hash"] = Compliant + molecule hash
  • ["0", "hash"] = Non-Compliant + molecule hash

πŸ“Š Project Structure

zk-comply/
β”œβ”€β”€ πŸ“ circuits/                 # Circom Circuits
β”‚   β”œβ”€β”€ compliance_circuit.circom# Multi-criteria circuit
β”‚   β”œβ”€β”€ simple_compliance.circom # LogP compliance circuit
β”‚   β”œβ”€β”€ circuit.zkey             # Proving key
β”‚   └── verification_key.json    # Verification key
β”œβ”€β”€ πŸ“ src/                      # Python services
β”‚   β”œβ”€β”€ witness_generator.py     # Witness generation for Circom
β”‚   β”œβ”€β”€ snarkjs_service.py       # snarkjs integration
β”‚   β”œβ”€β”€ zkverify_service.py      # Submission to zkVerify
β”‚   └── zk_pipeline.py           # Full pipeline
β”œβ”€β”€ πŸ“„ main.py                   # Main FastAPI API
β”œβ”€β”€ πŸ“„ test_api.py               # API tests
β”œβ”€β”€ πŸ“„ requirements.txt          # Python dependencies
└── πŸ“„ README.md                 # This file

πŸ§ͺ Tests

# Test full API
python test_api.py

# Test specific module
python src/witness_generator.py "CCO" logp

# Test Circom circuit pipeline
python src/zk_pipeline.py --smiles "CCO" --module logp

πŸ”§ Advanced Configuration

Compliance Parameters

Each module allows configuring compliance thresholds:

// input.json (used by snarkjs to generate witness)
{
  "smiles_hash": "123...456",
  "min_logp": "-5000",
  "max_logp": "5000",
  "logp": "2300"
}

Blockchain Integration

For zkVerify integration:

# Automatic proof submission
await zk_comply.submit_to_zkverify(
    smiles="CC(=O)OC1=CC=CC=C1C(=O)O",
    proofs=generated_proofs
)

πŸ›£οΈ Roadmap

  • Phase 1: Scientific core + ZK circuits (βœ… Complete)
  • Phase 2: Circom migration + zkVerify integration (βœ… Complete)
  • Phase 3: Web interface + industrial partnerships
  • Phase 4: Multi-chain + advanced AI

🀝 Contribution

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/new-feature)
  3. Commit your changes (git commit -am 'Add new feature')
  4. Push to the branch (git push origin feature/new-feature)
  5. Open a Pull Request

πŸ“„ License

This project is private property and is protected by a proprietary license.

⚠️ IMPORTANT: This software is provided for viewing and educational purposes only. Any commercial use, monetization, or redistribution is strictly prohibited without the owner's express authorization.

For commercial licensing inquiries, contact via GitHub Issues.

πŸ™ Acknowledgments

  • Iden3 for snarkjs and Circom ecosystem
  • RDKit for the computational chemistry library
  • ZK Community for support and tools

πŸ“ž Contact


ZK_COMPLY - The future of pharmaceutical compliance is private, verifiable, and decentralized. πŸš€

Β© 2025 Marcos Antonio Morais Braga - All rights reserved. Commercial use not authorized.

About

ZK_COMPLY v2.0 is a complete ADMET compliance system (Absorption, Distribution, Metabolism, Excretion, Toxicity) that enables pharmaceutical companies to prove regulatory compliance without revealing: Proprietary molecular structures Specific test results Experimental methods used Sensitive intellectual property data

Resources

License

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors