Skip to content

binsta/oml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OML — Open Mina Light Client

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.


Goals

  • 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

Architecture

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 | sh

Build

Clone the repository:

git clone https://github.com/binsta/oml
cd oml

Build the project:

cargo build --release

Run the node

cargo run --bin oml

Development

Run tests:

cargo test

Format code:

cargo fmt

Run clippy:

cargo clippy

Design 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages