1 unstable release
Uses new Rust 2024
new 0.8.0 | Mar 27, 2025 |
---|
#1802 in Network programming
Used in miden-node-proto
15KB
Miden proto build
This crate contains Protobuf files defining the Miden node gRPC API. The files are exposed via FileDescriptorSets to simplify generation of Rust bindings.
It also contains the raw Protobuf files in the proto directory to be used for binding generation in other languages.
Usage
To generate Miden node gRPC bindings in Rust, you'll need to add a build.rs
file to your project. The example below
generates the RPC component bindings and writes them into the src/generated
directory of your project.
use std::{fs, path::PathBuf, env};
use miden_node_proto_build::rpc_api_descriptor;
fn main() {
let crate_root: PathBuf = env::var("CARGO_MANIFEST_DIR").unwrap().into();
let dst_dir = crate_root.join("src").join("generated");
let _ = fs::remove_dir_all(&dst_dir);
fs::create_dir(&dst_dir).unwrap();
let file_descriptors = rpc_api_descriptor();
let mut prost_config = prost_build::Config::new();
prost_config.skip_debug(["AccountId", "Digest"]);
tonic_build::configure()
.out_dir(dst_dir)
.build_server(false) // this setting generates only the client side of the rpc api
.compile_fds_with_config(prost_config, file_descriptors)
.context("compiling protobufs")?;
}
Enabling TLS for the RPC Client
To connect to the official RPC API, you need to enable TLS in your gRPC client. The easiest way to do this is by
enabling the tls-native-roots
feature in the tonic
crate. This ensures that your client automatically uses
system-native certificate roots without requiring additional configuration.
Crate features
internal
: exposes Protobuf file descriptors for the internal components of the node. This is not intended for general use.
License
This project is MIT licensed.
Dependencies
~6MB
~80K SLoC