Flutter插件ldk_flutter的使用方法
Ldk-Flutter
一个基于Lightning Development Kit(LDK)的Flutter版本插件。
Table of Contents
Requirements
Flutter
- Flutter版本: 3.0或更高
- Dart版本: 2.18.2或更高
Android
- Android最低SDK版本: API 23或更高
- Android目标SDK版本: API 29
- Android Gradle插件: 3.0.0或更高
iOS
- iOS基础SDK版本: 12或更高
- 部署目标版本: iOS 12.0或更高
- Cocoapods: 1.11.3或更高
Installation
从GitHub安装(将以下代码复制到pubspec.yaml文件中):
ldk-flutter:
git:
url: https://github.com/LtbLightning/ldk-flutter.git
ref: main
Configuring iOS
请导航到项目的iOS文件夹并运行以下命令:
pod install
Usage
首先导入插件:
import 'package:ldk_flutter/ldk_flutter.dart';
以下是一个完整的示例代码,展示如何使用ldk_flutter
插件来管理闪电网络节点的功能。
示例代码
import 'package:flutter/material.dart';
import 'package:ldk_flutter/ldk_flutter.dart';
import 'dart:io' show Platform;
void main() async {
WidgetsFlutterBinding.ensureInitialized();
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final ldkFlutter = LdkFlutter();
[@override](/user/override)
void initState() {
super.initState();
startLdk();
}
Future<String> getDir() async {
final res = await ldkFlutter
.getDirPath(DirectoryType.ApplicationDocumentsDirectory);
print(res);
return res;
}
startLdk() async {
final dir = await getDir();
await ldkFlutter.ldkInit(
host: Platform.isAndroid ? "10.0.2.2" : "127.0.0.1",
port: 18443,
username: "polaruser",
password: "polarpass",
network: Network.REGTEST,
path: dir);
}
getNodeInfo() async {
final res = await ldkFlutter.getNodeInfo();
print("Local Balance ${res.localBalanceMsat}");
print("Node Pub Key ${res.nodePubKey}");
print("No:of channels ${res.numChannels}");
print("No:of usable channels ${res.numUsableChannels}");
print("No:of peers ${res.numPeers}");
}
connectPeer() async {
final res = await ldkFlutter.connectPeer(
peerPubKey:
"02e837c5c65414be833a627043c44b69ec2061298b984323e512297f142c3fae3c",
port: 9738,
// 请根据实际情况修改host参数
host: Platform.isAndroid ? "10.0.2.2" : "127.0.0.1");
print(res);
}
getPeers() async {
final res = await ldkFlutter.listPeers();
res.forEach((e) {
print(e);
});
}
openChannel() async {
final res = await ldkFlutter.openChannel(
peerPubKey:
"02636a5c5d92f05e93678f7da94d927789ea4e86ab29b7bf0be14ce09a52e8654f",
port: 9836,
amountInSats: 10000,
// 请根据实际情况修改host参数
host: Platform.isAndroid ? "10.0.2.2" : "127.0.0.1",
isPublic: true);
print(res);
}
listChannels() async {
final res = await ldkFlutter.listChannels();
for (var e in res) {
print("Channel Id ${e.channelId}");
print("Balance ${e.localBalanceMsat}");
print("Peer Pub Key ${e.peerPubkey}");
print("Peer Alias ${e.peerAlias}");
print("Funding Txid ${e.fundingTxid}");
print("Is Ready ${e.isChannelReady}");
print("Can Send Payments ${e.channelCanSendPayments}");
print("Is Public ${e.public}");
}
}
closeChannel() async {
// 替换为您的channelId和peerPubKey
await ldkFlutter.closeChannel(
"f88a2f73032922f45c7724b75595de4a9113b99d0808ce62f600022d83922fe7",
"02636a5c5d92f05e93678f7da94d927789ea4e86ab29b7bf0be14ce09a52e8654f");
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('LDK Node'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextButton(
onPressed: () {
getDir();
},
child: Text("获取文档目录")),
TextButton(
onPressed: () {
getNodeInfo();
},
child: Text("获取节点信息")),
TextButton(
onPressed: () {
connectPeer();
},
child: Text("连接对等节点")),
TextButton(
onPressed: () {
getPeers();
},
child: Text("列出对等节点")),
TextButton(
onPressed: () {
openChannel();
},
child: Text("打开通道")),
TextButton(
onPressed: () {
listChannels();
},
child: Text("列出通道")),
TextButton(
onPressed: () {
closeChannel();
},
child: Text("关闭通道")),
],
),
),
),
);
}
}
更多关于Flutter插件ldk_flutter的使用方法的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter插件ldk_flutter的使用方法的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
ldk_flutter
是一个 Flutter 插件,用于与 Lightning Development Kit (LDK) 集成。LDK 是一个用于构建比特币闪电网络节点的库,允许开发者在其应用程序中实现闪电网络功能。通过 ldk_flutter
,开发者可以在 Flutter 应用中轻松集成闪电网络功能,例如创建和管理闪电网络节点、处理支付通道、发送和接收闪电网络支付等。
以下是 ldk_flutter
插件的潜在使用场景和功能:
1. 创建和管理闪电网络节点
- 使用
ldk_flutter
,开发者可以在 Flutter 应用中创建和管理闪电网络节点。 - 支持节点的初始化、启动和停止操作。
- 示例代码:
import 'package:ldk_flutter/ldk_flutter.dart'; void initNode() async { await LDKFlutter.initNode(); print("Lightning node initialized"); }
2. 处理支付通道
- 支持创建、打开和关闭支付通道。
- 可以与其他闪电网络节点建立通道,以便进行支付。
- 示例代码:
void openChannel(String peerId, int amount) async { await LDKFlutter.openChannel(peerId, amount); print("Channel opened with $peerId"); }
3. 发送和接收闪电网络支付
- 支持生成闪电网络发票(Invoice)以供接收支付。
- 支持通过闪电网络发送支付。
- 示例代码:
void createInvoice(int amount, String memo) async { String invoice = await LDKFlutter.createInvoice(amount, memo); print("Invoice created: $invoice"); } void sendPayment(String invoice) async { await LDKFlutter.sendPayment(invoice); print("Payment sent"); }
4. 监听网络事件
- 支持监听闪电网络节点的事件,例如支付成功、通道状态变化等。
- 示例代码:
void listenToEvents() { LDKFlutter.onPaymentReceived.listen((event) { print("Payment received: $event"); }); LDKFlutter.onChannelUpdate.listen((event) { print("Channel updated: $event"); }); }