8 个版本 (4 个破坏性更新)
0.5.1 | 2023 年 3 月 11 日 |
---|---|
0.5.0 | 2022 年 11 月 4 日 |
0.4.0 | 2022 年 7 月 1 日 |
0.3.0 | 2021 年 12 月 16 日 |
0.1.1 | 2021 年 7 月 7 日 |
#1407 in 异步
每月 100 次下载
用于 2 crates
65KB
290 行
Tonic LND 客户端
Rust 实现 LND RPC 客户端,使用异步 gRPC 库 tonic
。
关于
警告:这个 crate 正处于早期开发阶段,可能存在未知问题!在用主网资金使用之前请先进行审查!
此 crate 支持 LND 的 Lightning、WalletKit、Signer 和 Peer RPC API,版本为 v0.15.4-beta
此 crate 使用 tonic
和 prost
实现 LND GRPC。除了在写作时保持最新(:D)之外,它还允许 async
使用。它包含 vendored *.proto
文件,因此不需要 LND 源代码,但接受环境变量 LND_REPO_DIR
,该变量可以覆盖 vendored 的 *.proto
文件。这可以用于测试尚未发布的 lnd
中的新功能。(实际上,使用此库的激励项目就是这种情况。:)))
使用方法
无需额外设置,只需将crate添加到您的Cargo.toml
文件中即可。如果您需要更改从客户端生成的*.proto
文件,请在构建期间将环境变量LND_REPO_DIR
设置为一个包含已克隆的lnd
的目录。
以下是从LND获取信息([getinfo](https://api.lightning.community/#getinfo)
调用)的示例。您可以在crate根目录中找到相同的示例,以便方便使用。
// This program accepts three arguments: address, cert file, macaroon file
// The address must start with `https://`!
#[tokio::main]
async fn main() {
let mut args = std::env::args_os();
args.next().expect("not even zeroth arg given");
let address = args.next().expect("missing arguments: address, 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 address = address.into_string().expect("address is not UTF-8");
// Connecting to LND requires only address, cert file, and macaroon file
let mut client = tonic_lnd::connect(address, cert_file, macaroon_file)
.await
.expect("failed to connect");
let info = client
.lightning()
// All calls require at least empty parameter
.get_info(tonic_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
1.48.0
但是,某些依赖项可能需要使用cargo update -p <package> --precise <version>
降级。附上Cargo-msrv.lock
供参考 - 它是用于测试crate的锁文件,包含已知可工作的依赖项版本。
MSRV不会早于Debian Bookworm版本发布。
许可证
MITNFA
依赖项
~16MB
~380K SLoC