Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
c2fa7e3
feat: add watch-only account import and address derivation
shubhamkmr04 Jun 29, 2026
5f5338f
feat: expose watch-only account methods over the FFI
shubhamkmr04 Jun 29, 2026
baf9f83
feat: expose watch-only account balance
shubhamkmr04 Jun 29, 2026
6959213
feat: expose watch-only account UTXO listing
shubhamkmr04 Jun 29, 2026
a93d279
feat: expose watch-only account revealed addresses
shubhamkmr04 Jun 30, 2026
a343be2
feat: sync imported watch-only accounts via the Esplora chain source
shubhamkmr04 Jun 30, 2026
584cb27
tests: fix payment timeout call sites and add watch-only account sync…
shubhamkmr04 Jul 1, 2026
2729b9b
refactor: parameterize BDK wallet persistence by secondary namespace
shubhamkmr04 Jul 2, 2026
1221cf8
feat: persist watch-only accounts under their own KVStore namespace
shubhamkmr04 Jul 2, 2026
94b22be
feat: index imported watch-only accounts in the KVStore
shubhamkmr04 Jul 2, 2026
a65905c
feat: reload persisted watch-only accounts at startup
shubhamkmr04 Jul 2, 2026
efd93e7
test: cover watch-only account persistence across node restart
shubhamkmr04 Jul 2, 2026
9a8cf6e
feat: expose imported watch-only account listing
shubhamkmr04 Jul 3, 2026
f182383
feat: add watch-only account preview and account listing test coverage
shubhamkmr04 Jul 3, 2026
a33eb6e
chore: regenerate Swift bindings for watch-only API
shubhamkmr04 Jul 3, 2026
7e2045b
fix: use a longer sync timeout for watch-only account scans
shubhamkmr04 Jul 7, 2026
3406510
feat: build unsigned PSBTs from watch-only accounts
shubhamkmr04 Jul 8, 2026
27537ae
feat: expose watch-only PSBT creation over the FFI
shubhamkmr04 Jul 9, 2026
6ad0c1e
test: cover watch-only PSBT spend end-to-end
shubhamkmr04 Jul 9, 2026
76f58c2
chore: regenerate Swift bindings for watch-only PSBT API
shubhamkmr04 Jul 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ winapi = { version = "0.3", features = ["winbase"] }

[dev-dependencies]
lightning = { git = "https://github.com/ZeusLN/rust-lightning", branch = "lsps7-for-ldk-node-close-fix", features = ["std", "_test_utils"] }
bdk_wallet = { version = "2.2.0", default-features = false, features = ["std", "keys-bip39", "test-utils"] }
proptest = "1.0.0"
regex = "1.5.6"
criterion = { version = "0.7.0", features = ["async_tokio"] }
Expand Down
30 changes: 30 additions & 0 deletions bindings/ldk_node.udl
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,23 @@ interface Node {
LSPS1Liquidity lsps1_liquidity();
LSPS7Liquidity lsps7_liquidity();
[Throws=NodeError]
void import_watchonly_account(AccountId account_id, string external_descriptor, string internal_descriptor);
[Throws=NodeError]
Address watchonly_new_address([ByRef]AccountId account_id);
[Throws=NodeError]
u64 watchonly_balance([ByRef]AccountId account_id);
[Throws=NodeError]
sequence<WalletUtxo> watchonly_list_utxos([ByRef]AccountId account_id);
[Throws=NodeError]
sequence<Address> watchonly_list_addresses([ByRef]AccountId account_id);
[Throws=NodeError]
void sync_watchonly_accounts();
sequence<AccountId> list_watchonly_accounts();
[Throws=NodeError]
WatchonlyAccountPreview preview_watchonly_account(string external_descriptor, string internal_descriptor, u8 count);
[Throws=NodeError]
string watchonly_create_psbt([ByRef]AccountId account_id, sequence<PsbtRecipient> recipients, sequence<OutPoint> utxos, FeeRate fee_rate);
[Throws=NodeError]
void connect(PublicKey node_id, SocketAddress address, boolean persist);
[Throws=NodeError]
void disconnect(PublicKey node_id);
Expand Down Expand Up @@ -301,6 +318,16 @@ dictionary WalletUtxo {
boolean is_spent;
};

dictionary WatchonlyAccountPreview {
sequence<Address> external_addresses;
sequence<Address> internal_addresses;
};

dictionary PsbtRecipient {
Address address;
u64 amount_sats;
};

interface OnchainPayment {
[Throws=NodeError]
Address new_address();
Expand Down Expand Up @@ -988,6 +1015,9 @@ typedef string ChannelId;
[Custom]
typedef string UserChannelId;

[Custom]
typedef string AccountId;

[Custom]
typedef string Mnemonic;

Expand Down
Loading
Loading