#lightning #syncing #interface #sync #confirm #ldk #async

lightning-transaction-sync

Utilities for syncing LDK via the transaction-based Confirm interface

22 releases

0.0.125 Oct 14, 2024
0.0.124-rc1 Aug 29, 2024
0.0.123 May 9, 2024
0.0.121 Jan 23, 2024
0.0.114 Mar 4, 2023

#3 in #ldk

Download history 888/week @ 2024-07-24 586/week @ 2024-07-31 1061/week @ 2024-08-07 698/week @ 2024-08-14 872/week @ 2024-08-21 1005/week @ 2024-08-28 662/week @ 2024-09-04 665/week @ 2024-09-11 814/week @ 2024-09-18 605/week @ 2024-09-25 776/week @ 2024-10-02 1339/week @ 2024-10-09 1626/week @ 2024-10-16 813/week @ 2024-10-23 903/week @ 2024-10-30 1251/week @ 2024-11-06

5,259 downloads per month
Used in 2 crates

MIT/Apache

7MB
114K SLoC

Provides utilities for syncing LDK via the transaction-based Confirm interface.

The provided synchronization clients need to be registered with a ChainMonitor via the Filter interface. Then, the respective fn sync needs to be called with the Confirm implementations to be synchronized, i.e., usually instances of ChannelManager and ChainMonitor.

Features and Backend Support

  • esplora-blocking enables syncing against an Esplora backend based on a blocking client.
  • esplora-async enables syncing against an Esplora backend based on an async client.
  • esplora-async-https enables the async Esplora client with support for HTTPS.

Version Compatibility

Currently this crate is compatible with LDK version 0.0.114 and above using channels which were created on LDK version 0.0.113 and above.

Usage Example:

let tx_sync = Arc::new(EsploraSyncClient::new(
	esplora_server_url,
	Arc::clone(&some_logger),
));

let chain_monitor = Arc::new(ChainMonitor::new(
	Some(Arc::clone(&tx_sync)),
	Arc::clone(&some_broadcaster),
	Arc::clone(&some_logger),
	Arc::clone(&some_fee_estimator),
	Arc::clone(&some_persister),
));

let channel_manager = Arc::new(ChannelManager::new(
	Arc::clone(&some_fee_estimator),
	Arc::clone(&chain_monitor),
	Arc::clone(&some_broadcaster),
	Arc::clone(&some_router),
	Arc::clone(&some_logger),
	Arc::clone(&some_entropy_source),
	Arc::clone(&some_node_signer),
	Arc::clone(&some_signer_provider),
	user_config,
	chain_params,
));

let confirmables = vec![
	&*channel_manager as &(dyn Confirm + Sync + Send),
	&*chain_monitor as &(dyn Confirm + Sync + Send),
];

tx_sync.sync(confirmables).unwrap();

Dependencies

~9–20MB
~258K SLoC