#lnd #tonic #grpc #async #rpc #api-bindings #rpc-client

tonic_lnd

使用 tonic 和 prost 实现的 LND RPC 异步库

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 异步

Download history 75/week @ 2024-04-15 87/week @ 2024-04-22 52/week @ 2024-04-29 20/week @ 2024-05-06 1/week @ 2024-05-13 1/week @ 2024-05-20 31/week @ 2024-05-27 30/week @ 2024-06-03 85/week @ 2024-06-10 34/week @ 2024-06-17 15/week @ 2024-06-24 32/week @ 2024-07-01 15/week @ 2024-07-08 85/week @ 2024-07-29

每月 100 次下载
用于 2 crates

MITNFA 许可证

65KB
290

Tonic LND 客户端

Crate Documentation

Rust 实现 LND RPC 客户端,使用异步 gRPC 库 tonic

关于

警告:这个 crate 正处于早期开发阶段,可能存在未知问题!在用主网资金使用之前请先进行审查!

此 crate 支持 LND 的 LightningWalletKitSignerPeer RPC API,版本为 v0.15.4-beta

此 crate 使用 tonicprost 实现 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