#miden #rollup #store #facilitate #interaction #rpc-client #interact

no-std miden-client

Client library that facilitates interaction with the Miden rollup

7 unstable releases (3 breaking)

new 0.4.1 Jul 8, 2024
0.4.0 Jul 6, 2024
0.3.1 May 22, 2024
0.2.1 Apr 25, 2024
0.1.0 Mar 15, 2024

#2839 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 417/week @ 2024-05-13 254/week @ 2024-05-20 129/week @ 2024-05-27 89/week @ 2024-06-03 24/week @ 2024-06-10 9/week @ 2024-06-17 16/week @ 2024-06-24

141 downloads per month
Used in miden-cli

MIT license

585KB
12K SLoC

Rust 11K SLoC // 0.0% comments JavaScript 1K SLoC // 0.1% comments SQL 154 SLoC // 0.2% comments

Rust Client Library

Rust library, which can be used by other project to programmatically interact with the Miden rollup.

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.4" }

Crate Features

  • async: enables async traits. Automatically enabled for web-tonic feature. Disabled by default.
  • concurrent: used to enable concurrency during execution and proof generation. Disabled by default.
  • idxdb: includes WebStore, an IdexedDB implementation of the Store trait. Disabled by default.
  • sqlite: includes SqliteStore, a SQLite implementation of the Store trait. Disabled by default.
  • tonic: includes TonicRpcClient, a Tonic client to communicate with Miden node. Disabled by default.
  • web-tonic: includes WebTonicRpcClient, an Tonic client to communicate with the Miden node in the browser. Disabled by default.
  • testing: useful feature that lowers PoW difficulty when enabled, meant to be used during development and not on production. Disabled by default.

To compile with no_std, disable default features via --no-default-features flag.

Store and RpcClient implementations

The library user can provide their own implementations of Store and RpcClient traits, which can be used as components of Client, though it is not necessary. The Store trait is used to persist the state of the client, while the RpcClient trait is used to communicate via gRPC with the Miden node.

The sqlite and tonic features provide implementations for these traits using Rusqlite and Tonic respectively. The idxdb and web-tonic features provide implementations based on IndexedDB and tonic-web which can be used in the browser.

License

This project is MIT licensed.

Dependencies

~15–35MB
~511K SLoC