LND gRPC Client in Rust.
Rust 🦀 implementation of LND RPC client using async gRPC library tonic_openssl.
About
This crate implements LND GRPC using tonic_openssl and prost.
Apart from being up-to-date at the time of writing (:D) it also allows async usage.
It contains vendored *.proto files so LND source code is not required
but accepts an environment variable LND_REPO_DIR which overrides the vendored *.proto files.
This can be used to test new features in non-released lnd.
Adding to your Rust 🦀 project
cargo add lnd_grpc_rust
This crate uses OpenSSL through tonic_openssl. By default it links against a
system OpenSSL installation. On Windows, or in CI environments where OpenSSL is
not installed or not discoverable, enable the vendored OpenSSL feature so Cargo
builds OpenSSL from source:
cargo add lnd_grpc_rust --features vendored-openssl
Or add it manually:
= { = "2.14", = ["vendored-openssl"] }
The vendored feature makes setup more portable, but it increases build time.
Usage
There's no setup needed beyond adding the crate to your Cargo.toml.
If you need to change the *.proto files from which the client is generated, set the environment variable LND_REPO_DIR to a directory with cloned lnd during build.
Here's an example of retrieving information from LND ([getinfo](https://api.lightning.community/#getinfo) call).
You can find the same example in crate root for your convenience.
Connect function takes cert and macaroon in hex format.
use fs;
async
Connecting to multiple nodes
Use connect_nodes when you want to manage several LND connections at once.
Each node gets an alias, and the returned registry can look clients up by that
alias.
let nodes = vec!;
let mut clients = connect_nodes
.await
.expect;
let alice_info = clients
.get_mut
.expect
.lightning
.get_info
.await
.expect;
println!;
License
MIT