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

tonic_openssl_lnd

一个通过tonic_openssl和prost实现LND RPC的异步库

8个版本

0.2.0 2022年10月31日
0.1.6 2022年10月22日
0.1.5 2022年9月6日
0.1.4 2022年7月22日

#9 in #lnd

Download history 42/week @ 2024-03-12 53/week @ 2024-03-19 43/week @ 2024-03-26 83/week @ 2024-04-02 65/week @ 2024-04-09 44/week @ 2024-04-16 44/week @ 2024-04-23 39/week @ 2024-04-30 24/week @ 2024-05-07 29/week @ 2024-05-14 43/week @ 2024-05-21 65/week @ 2024-05-28 34/week @ 2024-06-04 43/week @ 2024-06-11 47/week @ 2024-06-18 27/week @ 2024-06-25

每月下载量158
2 crates中使用

MITNFA许可证

84KB
690

Tonic LND客户端

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

关于

警告:此crate处于早期开发阶段,可能存在未知问题!在使用主网资金之前请仔细检查!

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

使用方法

除了将crate添加到您的Cargo.toml之外,无需进行任何设置。如果需要更改生成客户端的*.proto文件,请在构建期间将环境变量LND_REPO_DIR设置为包含克隆lnd的目录。

这里是一个从LND(Lightning Network Daemon)获取信息的示例([getinfo](https://api.lightning.community/#getinfo)调用)。您可以在仓库根目录找到相同的示例,方便您使用。

// 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(host, port, cert_file, macaroon_file)
        .await
        .expect("failed to connect");

    let info = client
        .lightning()
        // 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);
}

许可证

MITNFA

依赖项

约12-23MB
约332K SLoC