OML is a modular Rust implementation of a Mina light client designed for research, experimentation, and lightweight node deployments.
The project focuses on providing a minimal, modular architecture for interacting with the Mina protocol without running a full node. It aims to verify Mina consensus proofs and participate in peer-to-peer networking while maintaining a small resource footprint.
OML is built as a Rust workspace with independent crates for networking, consensus verification, cryptography, storage, and shared types.
- Provide a lightweight Mina client implementation
- Enable succinct blockchain verification
- Offer a modular architecture for research and experimentation
- Serve as a foundation for building Mina tooling and integrations
- Demonstrate a minimal P2P + consensus verification stack
OML follows a modular workspace design:
oml/
├── bin/oml # CLI node binary
│
├── crates/
│ ├── consensus # Consensus / proof verification
│ ├── crypto # Cryptographic primitives
│ ├── p2p # Peer-to-peer networking
│ ├── storage # Persistent state
│ └── types # Shared data structures
│
├── Cargo.toml # Workspace configuration
└── Cargo.lock
Components
bin/oml
The main executable that launches the node.
Responsibilities:
- Initialize storage
- Start the P2P network
- Run the consensus verifier
- Connect to peers
crates/types
Defines common data structures shared across the project.
Examples:
- Blocks
- Transactions
- Hashes
- Signatures
- Network messages
This crate contains minimal dependencies to keep shared structures lightweight.
crates/crypto
Implements cryptographic primitives required by the client.
Includes:
- hashing utilities
- signature verification
- keypair management
- cryptographic helpers
crates/p2p
Implements the peer-to-peer networking layer.
Modules:
- "node.rs" – node lifecycle management
- "protocol.rs" – network message definitions
- "tcp.rs" – TCP transport implementation
- "transport.rs" – networking abstraction layer
This layer allows nodes to discover peers, exchange blocks, and propagate messages.
crates/storage
Handles persistent state and local data management.
Responsibilities:
- block storage
- chain state
- indexing
- peer metadata
Storage backends can be swapped depending on requirements.
crates/consensus
Implements consensus verification logic.
The light client verifies blockchain updates and ensures correctness without storing the full chain state.
Getting Started
Prerequisites
- Rust (latest stable)
- Cargo
Install Rust:
curl https://sh.rustup.rs -sSf | shBuild
Clone the repository:
git clone https://github.com/binsta/oml
cd omlBuild the project:
cargo build --releaseRun the node
cargo run --bin omlDevelopment
Run tests:
cargo testFormat code:
cargo fmtRun clippy:
cargo clippyDesign Principles
OML follows several core principles:
- Modularity — independent crates for each subsystem
- Security — minimal trusted components
- Performance — async networking and efficient serialization
- Extensibility — easy to extend with additional modules
Project Status
This project is currently in early development and is intended primarily for:
- research
- experimentation
- protocol learning
- lightweight verification tooling
APIs and internal modules may change.
Contributing
Contributions are welcome.
You can help by:
- improving networking components
- adding consensus verification logic
- improving documentation
- writing tests
- security reviews
Please open an issue before submitting major changes.
License
MIT License