Skip to content

Lightning Development Kit Node library for Flutter

License

Notifications You must be signed in to change notification settings

bdgwallet/ldk-node-flutter

 
 

Repository files navigation

LDK_Node

A Flutter library for LDK Node, a ready-to-go Lightning node library built using LDK and BDK.

LDK Node is a non-custodial Lightning node. Its central goal is to provide a small, simple, and straightforward interface that enables users to easily set up and run a Lightning node with an integrated on-chain wallet. While minimalism is at its core, LDK Node aims to be sufficiently modular and configurable to be useful for a variety of use cases.

The primary abstraction of the library is the Node, which can be retrieved by setting up and configuring a Builder to your liking and calling build(). Node can then be controlled via commands such as start, stop, connectOpenChannel, sendPayment, etc.:

This release covers the same API from LDK Node 0.1.0 Rust. It has support for sourcing chain data via an Esplora server, filesystem persistence, gossip sourcing via the Lightning peer-to-peer network, and configurable entropy sources for the integrated LDK and BDK-based wallets.

Please note: This release is considered experimental, and should not be run in production

How to use ldk_node

To use the ldk_node package in your project, add it as a dependency in your project's pubspec.yaml:

dependencies:
  ldk_node: ^0.1.2

or add from pub.dev using pub add command

  flutter pub add ldk_node

Examples

Build, Start & Sync the local node

import 'package:ldk_node/ldk_node.dart';

// ....

// Path to a directory where the application may place data that is user-generated
final path = "${directory.path}alice's_node";

// Your preferred `Esplora` url
final esploraUrl = https://blockstream.info/testnet/api;

// configuration options for the node
final config  = Config(
                        storageDirPath: nodePath,
                        network: ldk.Network.regtest,
                        listeningAddress: NetAddress.iPv4(addr: "0.0.0.0", port: 3006),
                        onchainWalletSyncIntervalSecs: 30,
                        walletSyncIntervalSecs: 30,
                        feeRateCacheUpdateIntervalSecs: 100,
                        logLevel: ldk.LogLevel.info,
                        defaultCltvExpiryDelta: 144
                     );
Builder builder = Builder.fromConfig(config);
    final node  = await builder
                                .setEntropyBip39Mnemonic( 
                                     mnemonic: ldk.Mnemonic(
                                          internal:
                                                   'certain sense kiss guide crumble hint transfer crime much stereo warm coral'))
                                .setEsploraServer(
                                     esploraServerUrl: esploraUrl)
                                .build();

// Starting the node
await node.start();

// Syncing the node
await node.syncWallets();

References:

About

Lightning Development Kit Node library for Flutter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 64.5%
  • Rust 28.4%
  • C 4.6%
  • Ruby 0.6%
  • Makefile 0.6%
  • Kotlin 0.4%
  • Other 0.9%