Documentation

What is Deimos?

Deimos is an open-source project, designed to provide comprehensive benchmark data that allows developers to compare the performance of different zkVMs across various devices. This enables developers to choose the most suitable zkVM based on their target device requirements.

Deimos serves two primary functions:

  • Benchmarking Suite: A comprehensive toolkit for evaluating zero-knowledge virtual machines (zkVMs) on mobile devices
  • Public Dashboard: A web-based service where users can view and compare all benchmark results

The project aims to benchmark zkVM performance for mobile-specific environments, compare multiple frameworks (initially MoPro, imp1, and ProveKit), measure performance of common cryptographic & proof-related hash functions across different languages (Circom, Noir) and make this information accessible to users via a public dashboard.

Technology Stack

Circuit Development

Circom Ecosystem:

  • Circom Compiler: Version 2.1.6 for circuit compilation
  • snarkjs: Groth16 proof generation and verification

Circom Libraries:

  • circomlib: Standard library of circuits
  • hash-circuits: Library for Blake2s circuit
  • keccak256-circom: Library for Keccak256 circuit

Noir Ecosystem:

  • Noir: Version 1.0.0-beta.8
  • Nargo: Build and compilation toolchain

Mobile Application

  • Framework: Flutter
  • Language: Dart
  • Support: Android & iOS

Website Dashboard

  • Framework: Next.js 15.5.3 with Turbopack
  • Language: TypeScript
  • Styling: Tailwind CSS

Repository Structure

deimos/
├── website/                    # Dashboard for displaying benchmark results
│   ├── src/app/               # Next.js application
│   └── package.json
│
├── benchmarking-suite/        # Core benchmarking implementation
│   ├── frameworks/
│   │   ├── circom/           # Circom circuit implementations
│   │   │   ├── circuits/     # Hash function circuits
│   │   │   │   ├── sha256/
│   │   │   │   ├── keccak256/
│   │   │   │   ├── blake2s256/
│   │   │   │   ├── poseidon/
│   │   │   │   ├── mimc256/
│   │   │   │   └── pedersen/
│   │   │   └── inputs/       # Test vectors
│   │   └── noir/             # Noir implementations (planned)
│   │
│   └── moPro/                # MoPro mobile integration
│       ├── mopro-sha256/     # SHA256 mobile app
│       ├── mopro-keccack256/ # Keccak256 mobile app
│       └── mopro-example-app/
│
├── .github/workflows/         # CI/CD automation
│   └── validate-circuits.yml # Circuit validation
│
├── README.md
├── CONTRIBUTING.md
├── APP_INTEGRATION_GUIDE.md
└── LICENSE