Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
172 commits
Select commit Hold shift + click to select a range
ca4d4c3
Reject oversized splice-out amounts
tnull Jun 10, 2026
10ac933
Prevent late cancellable runtime tasks during shutdown
tnull Jun 10, 2026
0713f6d
Move `liquidity.rs` to `liquidity/mod.rs` module directory
Camillarhi Mar 30, 2026
07dbde9
Move LSPS1 client logic into `liquidity/client/lsps1.rs`
Camillarhi Apr 16, 2026
7890b78
Move LSPS1 client event handling into `liquidity/client/lsps1.rs`
Camillarhi Apr 29, 2026
cab8892
Move LSPS2 client logic into `liquidity/client/lsps2.rs`
Camillarhi Apr 16, 2026
1f02b86
Move LSPS2 client event handling into `liquidity/client/lsps2.rs`
Camillarhi Apr 29, 2026
aa2cbfb
Move LSPS2 service logic into `liquidity/service/lsps2.rs`
Camillarhi Apr 16, 2026
96ba539
Move LSPS2 service event handling into `liquidity/service/lsps2.rs`
Camillarhi Apr 29, 2026
988ba66
Refactor liquidity source to support multiple LSP nodes
Camillarhi Apr 29, 2026
5191217
Collapse NodeCustomMessageHandler enum into a struct
Camillarhi May 7, 2026
5e5aa6b
Merge pull request #928 from tnull/2026-06-runtime-cancellable-shutdown
tnull Jun 11, 2026
cef4531
Merge pull request #927 from tnull/2026-06-fix-splice-out-capacity-units
tnull Jun 11, 2026
ef413be
Document pre-1.0 compatibility guarantees
tnull Jun 11, 2026
65f774d
Monitor v0.7.0 serialization downgrade compatibility
tnull Jun 11, 2026
a3a7606
Mention Postgres support in README
tnull Jun 11, 2026
010b483
Merge pull request #931 from tnull/2026-06-compat-guarantees-downgrad…
tnull Jun 11, 2026
926c18a
Merge pull request #792 from Camillarhi/multi-lsp-support
tnull Jun 12, 2026
2769def
Reuse Electrum client for transaction sync
tnull Jun 12, 2026
1c89247
Merge pull request #938 from tnull/2026-06-fix-488-electrum-client-reuse
tankyleo Jun 13, 2026
df8bf27
Update vss-client to 0.6
benthecarman Jun 11, 2026
5933155
Extract build_vss_store test helper
benthecarman Apr 14, 2026
2c8b658
Refactor list_all_keys into reusable list_keys
benthecarman Apr 14, 2026
38b65b2
Extract BOLT11 send helper
benthecarman Jun 12, 2026
d3faf8e
Expose BOLT11 underpayment sends
benthecarman Jun 12, 2026
9ab2106
Reject overflowing unified receive amounts
benthecarman Jun 12, 2026
187056b
Avoid Bolt11 claim amount underflow
benthecarman Jun 12, 2026
4a449fc
Deduplicate registered chain txids
benthecarman Jun 12, 2026
5ad916c
Merge pull request #940 from benthecarman/over-underflows
tnull Jun 16, 2026
1f371c5
Replace deprecated active_tasks_count with num_alive_tasks
enigbe Jun 17, 2026
860cd5c
Merge pull request #941 from enigbe/2026-06-replace-deprecated-active…
tnull Jun 17, 2026
5429331
Add PaginatedKVStore support to VssStore
benthecarman Apr 14, 2026
fb7738f
Merge pull request #864 from benthecarman/paginated-vss
tnull Jun 18, 2026
4fa33ed
Run `cargo +nightly fmt` on main
tnull Jun 18, 2026
4b1326e
Merge pull request #942 from tnull/2026-06-cargo-fmt
tnull Jun 18, 2026
5744459
Expose per-channel features in ChannelDetails
enigbe Mar 23, 2026
8048359
Add ReserveType to ChannelDetails
enigbe Mar 23, 2026
fee7a73
Expose feature helper APIs through FFI
enigbe Apr 22, 2026
c7e001b
Merge pull request #841 from enigbe/2026-03-channel-reserve-type-expo…
tnull Jun 23, 2026
4aac5e8
Merge pull request #939 from benthecarman/underpay-htlc
tnull Jun 24, 2026
5907738
Fix 0.6.2 compatibility test shutdown
tnull Jun 24, 2026
8dd06bf
Merge pull request #947 from tnull/2026-06-fix-062-compat-shutdown
tnull Jun 24, 2026
7fa8d0f
Extract shared setup helpers in Python binding tests
heyolaniran Jun 15, 2026
b318ccd
Add spontaneous payment Python binding test
heyolaniran Jun 15, 2026
8a54260
Merge pull request #923 from heyolaniran/feat/python_binding_test
tnull Jun 24, 2026
6560dff
Keep insert-or-update cache unchanged on persist failure
benthecarman Jun 15, 2026
e3793b8
Keep update cache unchanged on persist failure
benthecarman Jun 15, 2026
531d52d
Keep removed objects cached on persist failure
benthecarman Jun 15, 2026
0d2d71a
Cover insert cache behavior on persist failure
benthecarman Jun 15, 2026
2288ab5
Require PaginatedKVStore for all stores
benthecarman Jun 18, 2026
83f71f0
Add 60 minute timeout to CI jobs
benthecarman Jun 5, 2026
c2ee8b0
Split CI between self-hosted and GitHub runners
benthecarman Jun 5, 2026
678732d
Bump BDK wallet dependencies
tnull Jun 12, 2026
b384487
Use BDK mempool wallet events
tnull Jun 12, 2026
8ddfee3
Merge pull request #943 from benthecarman/paginated
tnull Jun 25, 2026
f509489
Track reorged on-chain payments as pending
tnull Jun 11, 2026
7d9afb3
Group pending payment storage constants
tnull Jun 11, 2026
65ee795
Keep pending payment details internal
tnull Jun 11, 2026
c82c2e5
Preserve anchor reserve during RBF
tnull Jun 15, 2026
aab4bff
Merge pull request #933 from benthecarman/data-store-insert-or-update
tnull Jun 26, 2026
558ec82
Fix DataStore failing store pagination
tnull Jun 26, 2026
c66676c
Merge pull request #952 from tnull/2026-06-fix-datastore-rebase-conflict
tnull Jun 26, 2026
2bcd421
Implement `MigratableKVStore` for sqlite
benthecarman Jun 23, 2026
3fa778c
Implement `MigratableKVStore` for postgres
benthecarman Jun 23, 2026
43078aa
Refactor VSS key extraction
benthecarman Jun 23, 2026
18fa93a
Implement `MigratableKVStore` for VSS
benthecarman Jun 23, 2026
43b122b
Implement `MigratableKVStore` for InMemoryStore
benthecarman Jun 23, 2026
ad4a3a8
Merge pull request #937 from tnull/2026-06-fix-770-payment-store-foll…
tnull Jun 26, 2026
93797a2
Classify on-chain payments with a durable transaction type
jkczyz Jun 23, 2026
79fd087
Track channel-open and splice payments through wallet sync
jkczyz Jun 23, 2026
c8bc878
Derive on-chain payment fields in a single place
jkczyz Jun 26, 2026
c34473d
Add bump_channel_funding_fee to fee-bump a pending splice
jkczyz Jun 23, 2026
9f98db5
Test funding-payment tracking through wallet sync
jkczyz Jun 23, 2026
e541265
Report the confirmed splice candidate's fee, not the last broadcast's
jkczyz Jun 23, 2026
5135534
Cover splice-out classification and funding-payment reorg
jkczyz Jun 23, 2026
54eb085
Honor the funding template's RBF minimum feerate when splicing
jkczyz Jun 24, 2026
f9a64a0
Refactor the splice funding-feerate helpers into fee_estimator.rs
jkczyz Jun 24, 2026
5d21bd7
Wait for funding classification before syncing in splice tests
jkczyz Jun 26, 2026
42276a1
Add end-to-end KV store migration test
benthecarman Jun 25, 2026
3b296f2
Merge pull request #888 from jkczyz/2026-04-splicing-payment-using-tx…
tnull Jun 29, 2026
e3e7960
Merge pull request #922 from benthecarman/ci-timeouts
tnull Jun 29, 2026
c7cb7ef
Merge pull request #945 from benthecarman/migrate-dbs
tnull Jun 29, 2026
d0ed6a3
Abort on first-startup chain tip fetch failure
tnull Apr 21, 2026
72d2414
Add bitcoind wallet rescan height
tnull Jun 26, 2026
101c827
Add forced wallet full scans
tnull Jun 26, 2026
f2e44fd
Merge pull request #884 from tnull/2026-04-abort-on-first-startup-tip…
tnull Jun 30, 2026
aec47c5
Configure Esplora full-scan stop gap
tnull Jul 1, 2026
da465a4
Configure Electrum full-scan stop gap
tnull Jul 1, 2026
1d40ed0
Merge pull request #957 from tnull/2026-06-configurable-stop-gap
tnull Jul 2, 2026
35adcf5
2026-07-05 automated rustfmt nightly
Jul 5, 2026
73be359
Merge pull request #965 from lightningdevkit/create-pull-request/patch
tnull Jul 6, 2026
5d4afa3
node: consolidate peer-store cleanup into ChannelClosed handler
Jolah1 Jul 7, 2026
dea5ca0
Bump LDK dependency
tnull Jul 8, 2026
4479a62
Merge pull request #971 from tnull/2026-07-bump-ldk
tnull Jul 8, 2026
f04fa4d
Merge pull request #895 from Jolah1/peer-handling-on-force-close
tnull Jul 8, 2026
9fd3cab
Require ChannelClosed counterparty id
tnull Jul 8, 2026
cd1c3e1
Fix on-chain receive test lookup
tnull Jun 29, 2026
8efba39
Keep wallet broadcasts unclassified
tnull Jun 29, 2026
061e0bd
Preserve classified on-chain types
tnull Jun 29, 2026
d66e53f
Classify LDK on-chain broadcasts
tnull Jun 29, 2026
942087b
Merge pull request #791 from tnull/2026-02-track-onchain-tx-types
tnull Jul 9, 2026
df8fe95
Merge pull request #973 from tnull/2026-07-channel-closed-counterpart…
tnull Jul 9, 2026
c3bdca8
Add probing service
randomlogin Jun 28, 2026
f5fbf42
Add probing service tests
randomlogin Jun 28, 2026
dc4fa49
Merge pull request #815 from randomlogin/add-probing-service
tnull Jul 9, 2026
da7c7eb
2026-07-12 automated rustfmt nightly
Jul 12, 2026
1cc60c8
Merge pull request #976 from lightningdevkit/create-pull-request/patch
tnull Jul 13, 2026
dc237f3
Preserve peers on failed removal
tnull Jul 14, 2026
5e241f7
Remove force-close peers after reconnect
tnull Jul 14, 2026
b34fb66
Do not record unilateral closes as payments
tankyleo Jul 14, 2026
150f370
Merge pull request #979 from tankyleo/2026-07-filter-out-unilateralclose
tnull Jul 14, 2026
0bb047f
Keep funding confirmed through test reorgs
tnull Jul 15, 2026
5ddf270
Wait for replacement blocks after reorgs
tnull Jul 15, 2026
79a9794
Wait for actual funding outpoint spends
tnull Jul 15, 2026
87b780e
Synchronize force-close sweep checks
tnull Jul 15, 2026
03812a0
Merge pull request #972 from tnull/2026-07-fix-flaky-reorg-tests
tnull Jul 15, 2026
2024749
Use a vec of length 1 to broadcast unrelated txs
tankyleo May 27, 2026
4c8ecb2
Fix anchor reserves when splicing in all funds
tankyleo Jun 27, 2026
2c2c287
Reserve onchain funds for anchor channels when peer sets them optional
tankyleo Jun 26, 2026
fac8a1f
Remove the ability to disable anchor channels
tankyleo Jun 30, 2026
8963226
Add configuration knob to enable 0FC channels
tankyleo May 28, 2026
4304326
Remove single transaction vecs in wallet broadcast path
tankyleo Jul 13, 2026
a9040a9
Sort packages received via `BroadcasterInterface`
tankyleo May 27, 2026
cc85b4d
Use helper functions to log broadcast errors
tankyleo Jun 25, 2026
195df39
Submit TRUC packages via all chain sources
tankyleo Jun 25, 2026
cf044ac
Read even bits to check the anchor channel type
tankyleo Jun 29, 2026
cada867
Include 0FC channels in anchor channel checks
tankyleo Oct 29, 2025
a868de8
Negotiate 0FC channels if configured
tankyleo Jul 15, 2026
fca1614
Merge pull request #983 from tnull/2026-07-remove-force-close-peers-a…
tnull Jul 16, 2026
7d26c23
Merge pull request #660 from tankyleo/25-10-0fc-channel-config
tnull Jul 16, 2026
d70c097
Avoid wallet persistence deadlocks
tnull Jul 14, 2026
d5c60b1
Avoid redundant wallet transaction details
tnull Jul 16, 2026
a271ce6
Merge pull request #980 from tnull/2026-07-fix-wallet-persistence-dea…
tnull Jul 16, 2026
0df5b76
Cbf chain source (#25)
randomlogin Jun 5, 2026
5415c36
Cbf chain source (#26)
randomlogin Jun 7, 2026
fabdb11
fix(cbf): shut down chain source cleanly
febyeji Jun 8, 2026
90b9718
fix(cbf): stop chain source before waiting on tasks
febyeji May 22, 2026
a51fe2b
fix(cbf): abort restart when stopped during backoff
febyeji Jun 8, 2026
bcc663b
Implement `process_kyoto_events` (#28)
randomlogin Jun 9, 2026
9a7a69d
Implement fee source (#29)
randomlogin Jun 12, 2026
d02570b
cbf: implement package broadcasting
randomlogin Jun 9, 2026
53999d1
Add `next_height` to the block applicator
randomlogin Jun 11, 2026
4d18bdc
cbf: make sync_wallets wait for applied tip
febyeji Jul 8, 2026
539d7bd
Cbf fix block fetch (#35)
febyeji Jul 16, 2026
e9cfbce
Use block header from IndexedFilter event
randomlogin Jul 21, 2026
d6f63a3
added the ability to customize the gossip data
lamtuanvu Jul 3, 2025
503281e
added sync events action
lamtuanvu Sep 24, 2025
7748684
fix: improve to suitable with onboarding flow
datphamcode295 Apr 29, 2026
1bb74c3
fix: opt in to forwarding HTLCs over private channelsupport paris ver…
datphamcode295 May 8, 2026
b0e8199
fix(fee): target 3 blocks for channel funding txs so they confirm
datphamcode295 Jun 5, 2026
b6ffd8e
fix(chain/bitcoind): swap_tx_confirmations queried txid in reversed b…
tonible14012002 Jun 30, 2026
6439e56
feat(swaps): native PeerSwap on-chain primitives (B1–B7) behind the `…
tonible14012002 Jun 30, 2026
d849751
feat(cycles): manual-route circular self-payment behind the `cycles` …
tonible14012002 Jul 3, 2026
01d2225
fix(cycles): make the rebalance loop actually receivable + pin the cl…
tonible14012002 Jul 3, 2026
2e00412
style: apply rustfmt to previously unformatted files
datphamcode295 Aug 4, 2026
891e8c6
fix(cycles): adapt manual rebalance path to current LDK APIs
datphamcode295 Aug 4, 2026
f1e0740
fix(chain): crash-safe CBF block delivery + batched chain persistence
datphamcode295 Aug 4, 2026
36b8ab1
feat(chain/cbf): optional wallet birthday for fresh CBF wallets
datphamcode295 Aug 4, 2026
d8504e8
fix(chain): adapt swaps matches to four-variant ChainSource, fail-clo…
datphamcode295 Aug 8, 2026
fc9d5ee
fix(wallet): bridge sync swaps wrappers over now-async wallet ops
datphamcode295 Aug 8, 2026
8218b27
fix: adapt swaps build to upstream lightning broadcast/classify API
datphamcode295 Aug 8, 2026
a6f60a7
fix(wallet): drop needless block_on from the two swap wrappers that n…
datphamcode295 Aug 8, 2026
8ccc58e
fix(wallet): pass the required v2_remote_key_derivation arg in a swap…
datphamcode295 Aug 8, 2026
17821ce
feat(cbf): accept hostname trusted peers, error on unparseable entries
datphamcode295 Aug 8, 2026
d4b32b8
feat(cbf): payment-agnostic external chain-service hooks for fees and…
datphamcode295 Aug 8, 2026
bfb87e3
fix(cbf): address chain-service-hooks review findings (fix round 1)
datphamcode295 Aug 8, 2026
cd8dd58
feat(cbf): expose simplified public CBF sync status
datphamcode295 Aug 8, 2026
d3fcad0
fix(cbf): bound the kyoto P2P broadcast handoff so one un-pulled tx c…
datphamcode295 Aug 9, 2026
51d113d
fix(chain): an unprovable replay below a listener's tip is not diverg…
datphamcode295 Aug 9, 2026
fb8ce39
fix(chain): fail closed when a replay can never reach a listener
datphamcode295 Aug 9, 2026
9698cd5
feat(cbf): compile a third mainnet birthday anchor at block 965,999
datphamcode295 Sep 8, 2026
880b105
feat(wallet,cbf): an own send is applied as unconfirmed at once; a re…
datphamcode295 Sep 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
49 changes: 49 additions & 0 deletions .github/workflows/0fc-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: CI Checks - 0FC Integration Tests

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build-and-test:
timeout-minutes: 60
runs-on: self-hosted
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Install Rust stable toolchain
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain stable
- name: Enable caching for bitcoind
id: cache-bitcoind
uses: actions/cache@v4
with:
path: bin/bitcoind-${{ runner.os }}-${{ runner.arch }}
key: bitcoind-29.0-${{ runner.os }}-${{ runner.arch }}
- name: Enable caching for electrs
id: cache-electrs
uses: actions/cache@v4
with:
path: bin/electrs-${{ runner.os }}-${{ runner.arch }}
key: electrs-submit-package-${{ runner.os }}-${{ runner.arch }}
- name: Download bitcoind
if: "steps.cache-bitcoind.outputs.cache-hit != 'true'"
run: |
source ./scripts/download_bitcoind_electrs.sh
mkdir -p bin
mv "$BITCOIND_EXE" bin/bitcoind-${{ runner.os }}-${{ runner.arch }}
- name: Download electrs
if: "steps.cache-electrs.outputs.cache-hit != 'true'"
run: |
source ./scripts/build_electrs.sh
mkdir -p bin
mv "$ELECTRS_EXE" bin/electrs-${{ runner.os }}-${{ runner.arch }}
- name: Set bitcoind/electrs environment variables
run: |
echo "BITCOIND_EXE=$( pwd )/bin/bitcoind-${{ runner.os }}-${{ runner.arch }}" >> "$GITHUB_ENV"
echo "ELECTRS_EXE=$( pwd )/bin/electrs-${{ runner.os }}-${{ runner.arch }}" >> "$GITHUB_ENV"
- name: Test with 0FC enabled
run: |
RUSTFLAGS="--cfg no_download --cfg cycle_tests --cfg tokio_unstable --cfg zero_fee_commitment_tests" cargo test -- --test-threads=1
1 change: 1 addition & 0 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:

jobs:
audit:
timeout-minutes: 60
permissions:
issues: write
checks: write
Expand Down
12 changes: 7 additions & 5 deletions .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,25 +8,27 @@ concurrency:

jobs:
benchmark:
runs-on: ubuntu-latest
timeout-minutes: 60
runs-on: self-hosted
env:
TOOLCHAIN: stable
steps:
- name: Checkout source code
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Install Rust toolchain
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain stable
rustup override set stable
- name: Set Rust override
run: rustup override set stable
- name: Enable caching for bitcoind
id: cache-bitcoind
uses: actions/cache@v5
uses: actions/cache@v4
with:
path: bin/bitcoind-${{ runner.os }}-${{ runner.arch }}
key: bitcoind-29.0-${{ runner.os }}-${{ runner.arch }}
- name: Enable caching for electrs
id: cache-electrs
uses: actions/cache@v5
uses: actions/cache@v4
with:
path: bin/electrs-${{ runner.os }}-${{ runner.arch }}
key: electrs-${{ runner.os }}-${{ runner.arch }}
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/cln-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ concurrency:

jobs:
check-cln:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/cron-weekly-rustfmt.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ on:
jobs:
format:
name: Nightly rustfmt
runs-on: ubuntu-24.04
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@nightly
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/eclair-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ concurrency:

jobs:
check-eclair:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/hrn-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ concurrency:

jobs:
build-and-test:
runs-on: ubuntu-latest
timeout-minutes: 60
runs-on: self-hosted

steps:
- name: Checkout source code
Expand Down Expand Up @@ -42,4 +43,4 @@ jobs:
- name: Run HRN Integration Tests
run: |
RUSTFLAGS="--cfg no_download --cfg hrn_tests $RUSTFLAGS" cargo test --test integration_tests_hrn
RUSTFLAGS="--cfg no_download --cfg hrn_tests $RUSTFLAGS" cargo test --test integration_tests_hrn --features uniffi
RUSTFLAGS="--cfg no_download --cfg hrn_tests $RUSTFLAGS" cargo test --test integration_tests_hrn --features uniffi
1 change: 1 addition & 0 deletions .github/workflows/kotlin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ concurrency:

jobs:
check-kotlin:
timeout-minutes: 60
runs-on: ubuntu-latest

env:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/lnd-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ concurrency:

jobs:
check-lnd:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- name: Checkout repository
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ concurrency:

jobs:
check-python:
timeout-minutes: 60
runs-on: ubuntu-latest

env:
Expand Down
26 changes: 15 additions & 11 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ concurrency:

jobs:
build:
timeout-minutes: 60
strategy:
matrix:
platform: [
ubuntu-latest,
self-hosted,
macos-latest,
windows-latest,
]
Expand All @@ -24,7 +25,7 @@ jobs:
- toolchain: stable
check-fmt: true
build-uniffi: true
platform: ubuntu-latest
platform: self-hosted
- toolchain: stable
platform: macos-latest
- toolchain: stable
Expand All @@ -34,7 +35,7 @@ jobs:
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout source code
uses: actions/checkout@v6
uses: actions/checkout@v4
- name: Install Rust ${{ matrix.toolchain }} toolchain
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain ${{ matrix.toolchain }}
Expand All @@ -50,13 +51,13 @@ jobs:
run: echo "RUSTFLAGS=-D warnings" >> "$GITHUB_ENV"
- name: Enable caching for bitcoind
id: cache-bitcoind
uses: actions/cache@v5
uses: actions/cache@v4
with:
path: bin/bitcoind-${{ runner.os }}-${{ runner.arch }}
key: bitcoind-29.0-${{ runner.os }}-${{ runner.arch }}
- name: Enable caching for electrs
id: cache-electrs
uses: actions/cache@v5
uses: actions/cache@v4
with:
path: bin/electrs-${{ runner.os }}-${{ runner.arch }}
key: electrs-${{ runner.os }}-${{ runner.arch }}
Expand Down Expand Up @@ -92,26 +93,29 @@ jobs:

linting:
name: Linting
runs-on: ubuntu-latest
timeout-minutes: 60
runs-on: self-hosted
steps:
- name: Checkout source code
uses: actions/checkout@v6
- name: Install Rust and clippy
uses: actions/checkout@v4
- name: Install Rust stable toolchain
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile=minimal --default-toolchain stable
rustup component add clippy
- name: Add clippy component
run: rustup component add clippy
- name: Ban `unwrap` in library code
run: |
cargo clippy --lib --verbose --color always -- -A warnings -D clippy::unwrap_used -A clippy::tabs_in_doc_comments
cargo clippy --lib --features uniffi --verbose --color always -- -A warnings -D clippy::unwrap_used -A clippy::tabs_in_doc_comments

doc:
name: Documentation
runs-on: ubuntu-latest
timeout-minutes: 60
runs-on: self-hosted
env:
RUSTDOCFLAGS: -Dwarnings
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
- uses: dtolnay/install@cargo-docs-rs
- run: cargo docs-rs
1 change: 1 addition & 0 deletions .github/workflows/semver.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ on: [push, pull_request]

jobs:
semver-checks:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- name: Checkout source code
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/swift.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ concurrency:

jobs:
check-swift:
timeout-minutes: 60
runs-on: macos-latest

steps:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/vss-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ concurrency:

jobs:
build-and-test:
timeout-minutes: 60
runs-on: ubuntu-latest

services:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/vss-no-auth-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ concurrency:

jobs:
build-and-test:
timeout-minutes: 60
runs-on: ubuntu-latest

services:
Expand Down
27 changes: 27 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,33 @@
## Compatibility Notes
- Pending JIT-channel payments created before upgrading may fail after upgrade because the
prior LSPS2 fee-limit state stored in `PaymentKind::Bolt11Jit` is not migrated.
- Upgrading from LDK Node v0.1 is no longer supported if the event queue still contains
a persisted `ChannelClosed` event.
- Users of the VSS storage backend must upgrade their VSS server to at least version
`v0.1.0-alpha.0` before upgrading LDK Node.

## Feature and API updates
- The Bitcoin Core RPC and REST chain-source builder methods now accept an optional
`wallet_rescan_from_height` argument. Passing a height lets fresh wallets rescan from a known
birthday block instead of checkpointing at the current tip, which is useful when restoring a
wallet on a pruned node where the full history is unavailable but the wallet birthday height is
known. Existing wallets are not rewound, and future heights fail the build. Passing `Some(0)`
rescans from genesis; passing `None` keeps the default current-tip checkpoint behavior. (#884)
- The compact-block-filter chain source gains a third compiled mainnet birthday anchor at block
965,999 (hash `00000000000000000000dbb4d1e55ad22ed5b5a7d81d4c0fe992fceb8a5302d0`), so a fresh
wallet built with `set_chain_source_cbf(.., Some(966_000))` scans from block 966,000 instead of
falling back to the taproot-activation anchor and roughly 256,000 blocks of filters.
- `EsploraSyncConfig` and `ElectrumSyncConfig` now support `force_wallet_full_scan`. When set,
the on-chain wallet keeps using BDK `full_scan` instead of incremental sync until a full scan
succeeds, allowing restored wallets to rediscover funds sent to previously-unknown addresses.
- `Config::anchor_channels_config` is no longer optional, hence anchor channels can no longer be
disabled. We still negotiate legacy channels if the peer does not support anchor channels.

## Bug Fixes and Improvements
- Building a fresh node against a Bitcoin Core RPC or REST chain source that fails to return the
current chain tip now aborts with a new `BuildError::ChainTipFetchFailed` variant instead of
silently pinning the wallet birthday to genesis, which would have forced a full-history rescan
once the chain source became reachable again. (#884)

# 0.7.0 - Dec. 3, 2025
This seventh minor release introduces numerous new features, bug fixes, and API improvements. In particular, it adds support for channel Splicing, Async Payments, as well as sourcing chain data from a Bitcoin Core REST backend.
Expand Down
50 changes: 30 additions & 20 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,13 @@ panic = 'abort' # Abort on panic
[features]
default = []
postgres = ["dep:tokio-postgres", "dep:native-tls", "dep:postgres-native-tls"]
# Peerswap native primitives (B-series). Empty for now; gates all swap
# additions so the default build is byte-for-byte unaffected.
swaps = []
# Cooperative cycle-balance primitive (manual-route circular self-payment).
# Gates the `Node::send_along_route` entry point; the `PaymentKind::Rebalance`
# variant and its `event.rs` claim path stay ungated for TLV compatibility.
cycles = []

[dependencies]
#lightning = { version = "0.2.0", features = ["std"] }
Expand All @@ -41,23 +48,24 @@ postgres = ["dep:tokio-postgres", "dep:native-tls", "dep:postgres-native-tls"]
#lightning-macros = { version = "0.2.0" }
#lightning-dns-resolver = { version = "0.3.0" }

lightning = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c", features = ["std"] }
lightning-types = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c" }
lightning-invoice = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c", features = ["std"] }
lightning-net-tokio = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c" }
lightning-persister = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c", features = ["tokio"] }
lightning-background-processor = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c" }
lightning-rapid-gossip-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c" }
lightning-block-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c", features = ["rest-client", "rpc-client", "tokio"] }
lightning-transaction-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c", features = ["esplora-async-https", "time", "electrum-rustls-ring"] }
lightning-liquidity = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c", features = ["std"] }
lightning-macros = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c" }
lightning-dns-resolver = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c" }

bdk_chain = { version = "0.23.0", default-features = false, features = ["std"] }
bdk_esplora = { version = "0.22.0", default-features = false, features = ["async-https-rustls", "tokio"]}
lightning = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623", features = ["std"] }
lightning-types = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623" }
lightning-invoice = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623", features = ["std"] }
lightning-net-tokio = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623" }
lightning-persister = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623", features = ["tokio"] }
lightning-background-processor = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623" }
lightning-rapid-gossip-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623" }
lightning-block-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623", features = ["rest-client", "rpc-client", "tokio"] }
lightning-transaction-sync = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623", features = ["esplora-async-https", "time", "electrum-rustls-ring"] }
lightning-liquidity = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623", features = ["std"] }
lightning-macros = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623" }
lightning-dns-resolver = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623" }

bdk_chain = { version = "0.23.3", default-features = false, features = ["std"] }
bdk_esplora = { version = "0.22.2", default-features = false, features = ["async-https-rustls", "tokio"]}
bdk_electrum = { version = "0.24.0", default-features = false, features = ["use-rustls-ring"]}
bdk_wallet = { version = "2.3.0", default-features = false, features = ["std", "keys-bip39"]}
bdk_wallet = { version = "3.1.0", default-features = false, features = ["std", "keys-bip39"]}
bip157 = { version = "0.6.3", default-features = false }

bitreq = { version = "0.3", default-features = false, features = ["async-https", "json-using-serde"] }
rustls = { version = "0.23", default-features = false }
Expand All @@ -69,7 +77,7 @@ bip21 = { version = "0.5", features = ["std"], default-features = false }
base64 = { version = "0.22.1", default-features = false, features = ["std"] }
getrandom = { version = "0.3", default-features = false }
chrono = { version = "0.4", default-features = false, features = ["clock"] }
tokio = { version = "1.37", default-features = false, features = [ "rt-multi-thread", "time", "sync", "macros", "net" ] }
tokio = { version = "1.39", default-features = false, features = [ "rt-multi-thread", "time", "sync", "macros", "net" ] }
esplora-client = { version = "0.12", default-features = false, features = ["tokio", "async-https-rustls"] }
electrum-client = { version = "0.25", default-features = false, features = ["proxy", "use-rustls-ring"] }
libc = "0.2"
Expand All @@ -82,16 +90,17 @@ async-trait = { version = "0.1", default-features = false }
tokio-postgres = { version = "0.7", default-features = false, features = ["runtime"], optional = true }
native-tls = { version = "0.2", default-features = false, optional = true }
postgres-native-tls = { version = "0.5", default-features = false, features = ["runtime"], optional = true }
vss-client = { package = "vss-client-ng", version = "0.5" }
vss-client = { package = "vss-client-ng", version = "0.6" }
prost = { version = "0.11.6", default-features = false}
#bitcoin-payment-instructions = { version = "0.6" }
bitcoin-payment-instructions = { git = "https://github.com/tnull/bitcoin-payment-instructions", rev = "ff09ce9401afa448549a8f101172700bcd14d7bb" }
bitcoin-payment-instructions = { git = "https://github.com/tnull/bitcoin-payment-instructions", rev = "0e430be98c09540624a68a68022ee0551e86d1be" }

[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3", features = ["winbase"] }

[dev-dependencies]
lightning = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "3dfcc4cca1866c5e5d4d4eaf3b82e09584e2ce5c", features = ["std", "_test_utils"] }
lightning = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623", features = ["std", "_test_utils"] }
lightning-persister = { git = "https://github.com/lightningdevkit/rust-lightning", rev = "506cb91f2e0fb87906188b79777bcf42595d3623", features = ["tokio"] }
rand = { version = "0.9.2", default-features = false, features = ["std", "thread_rng", "os_rng"] }
proptest = "1.0.0"
regex = "1.5.6"
Expand Down Expand Up @@ -134,6 +143,7 @@ check-cfg = [
"cfg(eclair_test)",
"cfg(cycle_tests)",
"cfg(hrn_tests)",
"cfg(zero_fee_commitment_tests)",
]

[[bench]]
Expand Down
Loading