Expand description
Rust implementation of LND RPC client using async GRPC library tonic-openssl.
§About
Warning: this crate is in early development and may have unknown problems!
Review it before using with mainnet funds!
This crate implements LND GRPC using tonic and prost.
Apart from being up-to-date at the time of writing (:D) it also allows aync usage.
It contains vendored rpc.proto file so LND source code is not required
but accepts an environment variable LND_REPO_DIR which overrides the vendored rpc.proto file.
This can be used to test new features in non-released lnd.
(Actually, the motivating project using this library is that case. :))
§Usage
There’s no setup needed beyond adding the crate to your Cargo.toml.
If you need to change the rpc.proto input set the environment variable LND_REPO_DIR to the directory with cloned lnd during build.
Here’s an example of retrieving information from LND (getinfo call).
You can find the same example in crate root for your convenience.
// This program accepts four arguments: host, port, cert file, macaroon file
#[tokio::main]
async fn main() {
let mut args = std::env::args_os();
args.next().expect("not even zeroth arg given");
let host = args
.next()
.expect("missing arguments: host, port, cert file, macaroon file");
let port = args
.next()
.expect("missing arguments: port, cert file, macaroon file");
let cert_file = args
.next()
.expect("missing arguments: cert file, macaroon file");
let macaroon_file = args.next().expect("missing argument: macaroon file");
let host: String = host.into_string().expect("host is not UTF-8");
let port: u32 = port
.into_string()
.expect("port is not UTF-8")
.parse()
.expect("port is not u32");
let cert_file: String = cert_file.into_string().expect("cert_file is not UTF-8");
let macaroon_file: String = macaroon_file
.into_string()
.expect("macaroon_file is not UTF-8");
// Connecting to LND requires only host, port, cert file, macaroon file
let mut client = tonic_openssl_lnd::connect_lightning(host, port, cert_file, macaroon_file)
.await
.expect("failed to connect");
let info = client
// All calls require at least empty parameter
.get_info(tonic_openssl_lnd::lnrpc::GetInfoRequest {})
.await
.expect("failed to get info");
// We only print it here, note that in real-life code you may want to call `.into_inner()` on
// the response to get the message.
println!("{:#?}", info);
}§MSRV
Undetermined yet, please make suggestions.
§License
MITNFA
Modules§
- autopilotrpc
- chainrpc
- devrpc
- invoicesrpc
- lnclipb
- lnrpc
- neutrinorpc
- peersrpc
- routerrpc
- signrpc
- verrpc
- walletrpc
- watchtowerrpc
- wtclientrpc
Structs§
- LndClient
- Macaroon
Interceptor - Supplies requests with macaroon
- MyChannel
Functions§
- connect
- connect_
autopilot Deprecated - connect_
chain_ notifier Deprecated - connect_
dev Deprecated - connect_
invoices Deprecated - connect_
lightning Deprecated - connect_
neutrino Deprecated - connect_
peers Deprecated - connect_
router Deprecated - connect_
signer Deprecated - connect_
state Deprecated - connect_
versioner Deprecated - connect_
wallet Deprecated - connect_
wallet_ unlocker Deprecated - connect_
watchtower Deprecated - connect_
wtc Deprecated
Type Aliases§
- LndAutopilot
Client - LndChain
Client - LndClient
Error tonic::Statusis re-exported asLndClientErrorfor convenience.- LndDev
Client - LndInvoices
Client - LndLightning
Client - LndNeutrino
Client - LndPeers
Client - LndRouter
Client - LndSigner
Client - LndState
Client - LndVersioner
Client - LndWallet
Client - LndWallet
Unlocker Client - LndWatchtower
Client - LndWtc
Client