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

fedimint-tonic-lnd

一个异步库,通过tonic和prost实现LND RPC。从https://github.com/Kixunil/tonic_lnd分叉而来。

5个版本

0.2.0 2024年1月12日
0.1.3 2023年10月30日
0.1.2 2023年10月24日
0.1.1 2023年10月24日
0.1.0 2023年9月25日

#2107 in 神奇豆

Download history 580/week @ 2024-03-14 624/week @ 2024-03-21 451/week @ 2024-03-28 559/week @ 2024-04-04 507/week @ 2024-04-11 444/week @ 2024-04-18 217/week @ 2024-04-25 129/week @ 2024-05-02 89/week @ 2024-05-09 81/week @ 2024-05-16 356/week @ 2024-05-23 289/week @ 2024-05-30 300/week @ 2024-06-06 422/week @ 2024-06-13 615/week @ 2024-06-20 304/week @ 2024-06-27

1,663每月下载量
用于 5 个crate(3个直接使用)

MITNFA许可

77KB
357

Tonic LND客户端

Crate Documentation

使用异步gRPC库tonic实现的LND RPC客户端。

关于

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

这个crate支持来自LND v0.15.4-betaLightningWalletKitSignerPeer RPC API。

这个crate使用tonicprost实现LND GRPC。除了在编写时保持最新(:D)之外,它还允许使用async。它包含 vendored *.proto文件,因此不需要LND源代码,但接受环境变量LND_REPO_DIR来覆盖 vendored *.proto文件。这可以用来测试尚未发布的lnd的新功能。(实际上,使用这个库的动机项目就是这样。:)))

功能

由于此crate支持的LND RPC大多可以独立使用,并且您的项目可能只需要其中的一小部分RPC,因此我们将每个RPC置于Cargo功能门控之下。请查看Cargo清单以获取最新支持的功能

默认情况下包含所有功能,但您可以选择您想要的特定功能以实现更小的依赖关系和更快的编译

用法

除了将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 = fedimint_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(fedimint_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.65.0

许可证

MITNFA

依赖项

~15–25MB
~451K SLoC