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 神奇豆
1,663每月下载量
用于 5 个crate(3个直接使用)
77KB
357 行
Tonic LND客户端
使用异步gRPC库tonic
实现的LND RPC客户端。
关于
警告:这个crate处于早期开发阶段,可能存在未知问题!在使用主网资金之前请对其进行审查!
这个crate支持来自LND v0.15.4-beta的Lightning、WalletKit、Signer和Peer RPC API。
这个crate使用tonic
和prost
实现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