#miden #rollup #transaction #interaction #facilitate #store #blockchain

no-std bin+lib miden-client

Client library that facilitates interaction with the Miden rollup

4 releases (2 breaking)

new 0.3.0 May 16, 2024
0.2.1 Apr 25, 2024
0.2.0 Apr 15, 2024
0.1.0 Mar 15, 2024

#1763 in Magic Beans

Download history 94/week @ 2024-03-11 44/week @ 2024-03-18 55/week @ 2024-03-25 379/week @ 2024-04-01 383/week @ 2024-04-08 308/week @ 2024-04-15 329/week @ 2024-04-22 222/week @ 2024-04-29 110/week @ 2024-05-06

974 downloads per month
Used in miden-faucet

MIT license

415KB
8K SLoC

Miden client

LICENSE CI RUST_VERSION crates.io

This repository contains the Miden client, which provides a way to execute and prove transactions, facilitating the interaction with the Miden rollup.

Status

The Miden client is still under heavy development and the project can be considered to be in an alpha stage. Many features are yet to be implemented and there is a number of limitations which we will lift in the near future.

Overview

The Miden client currently consists of two components:

  • miden-client library, which can be used by other project to programmatically interact with the Miden rollup.
  • miden-client binary which is a wrapper around the library exposing its functionality via a simple command-line interface (CLI).

The client's main responsibility is to maintain a partial view of the blockchain which allows for locally executing and proving transactions. It keeps a local store of various entities that periodically get updated by syncing with the node.

For more info check:

Usage

Before you can use the Miden client, you'll need to make sure you have both Rust and sqlite3 installed. Miden client requires rust version 1.78 or higher.

Adding miden-client as a dependency

In order to utilize the miden-client library, you can add the dependency to your project's Cargo.toml file:

miden-client = { version = "0.3" }

Features

  • concurrent: used to enable concurrent proofs generation
  • testing: useful feature that lowers PoW difficulty when enabled. Only use this during development and not on production.

Running miden-client's CLI

You can either build from source with:

cargo build --release

Once the binary is built, you can find it on ./target/release/miden.

Or you can install the CLI from crates-io with:

cargo install miden-client

Note that binary name for the client is just miden.

Makefile

As mentioned before, we use cargo-make to encapsulate some tasks, such as running lints and tests. You can check out Makefile.toml for all available tasks.

Testing

To test the project's code, we provide both unit tests (which can be run with cargo test) and integration tests. For more info on integration tests, refer to the integration testing document

The crate also comes with 2 feature flags that are used exclusively on tests:

  • test_utils: used on unit tests to use the mocked RPC API.
  • integration: only used to run integration tests and separate them from unit tests

Contributing

Interested in contributing? Check CONTRIBUTING.md.

License

This project is MIT licensed.

Dependencies

~43–59MB
~1M SLoC