Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
633738b
[test] latest-bitcoind: build output location has moved to bin/ (#3057)
pinheadmz Apr 7, 2025
cb7f95d
Add test for Bolt11 features minimal encoding (#3058)
t-bast Apr 8, 2025
4088359
fixup! Fix flaky GossipIntegrationSpec test (#3039) (#3061)
remyers Apr 14, 2025
383d141
Remove support for claiming remote anchor output (#3062)
t-bast Apr 15, 2025
63f4ca8
Use bitcoin-lib 0.37 (#3063)
sstone Apr 16, 2025
ecd4634
Simplify channel keys management (#3064)
t-bast Apr 24, 2025
a626281
Remove duplication around skipping dust transactions (#3068)
t-bast Apr 24, 2025
76eb6cb
Move `addSigs` into each dedicated class (#3069)
t-bast Apr 24, 2025
3b714df
Refactor HTLC-penalty txs creation (#3071)
t-bast Apr 24, 2025
826284c
Remove `LegacyClaimHtlcSuccess` transaction class (#3072)
t-bast Apr 25, 2025
2ada7e7
Rework the `TransactionWithInputInfo` architecture (#3074)
t-bast May 12, 2025
f14b92d
Increase default revocation timeout (#3082)
t-bast May 13, 2025
fdc2077
Refactor replaceable transactions (#3075)
t-bast May 15, 2025
9b0c00a
Add an option to specify a custom signet tx to check (#3088)
remyers May 20, 2025
055695f
Attributable failures (#3065)
thomash-acinq May 20, 2025
1e23081
Refactor some closing helper functions (#3089)
t-bast May 21, 2025
dd622ad
Add low-level taproot helpers (#3086)
sstone May 23, 2025
a1c6988
Stricter batching of `commit_sig` messages on the wire (#3083)
t-bast May 23, 2025
62182f9
Increase limits for flaky test (#3091)
thomash-acinq May 26, 2025
fb84a9d
Cleaner handling of HTLC settlement during force-close (#3090)
t-bast Jun 2, 2025
f8b1272
Watch spent outputs before watching for confirmation (#3092)
t-bast Jun 3, 2025
2c10538
Rework closing channel balance computation (#3096)
t-bast Jun 3, 2025
345aef0
Add more splice channel_reestablish tests (#3094)
remyers Jun 4, 2025
e7b9b89
Parse offers and pay offers with currency (#3101)
thomash-acinq Jun 10, 2025
100e174
Add attribution data to UpdateFulfillHtlc (#3100)
thomash-acinq Jun 11, 2025
52b7652
Remove non-final transactions from `XxxCommitPublished` (#3097)
t-bast Jun 13, 2025
7b67f33
Stop storing commit tx and HTLC txs in channel data (#3099)
t-bast Jun 16, 2025
8abb525
Round hold times to decaseconds (#3112)
thomash-acinq Jun 17, 2025
8e3e206
Increase channel spent delay to 72 blocks (#3110)
t-bast Jun 17, 2025
297f7f0
Prepare attribution data for trampoline payments (#3109)
thomash-acinq Jun 17, 2025
9418ea1
Remove obsolete interop tests (#3114)
t-bast Jun 18, 2025
961f844
Simplify force-close transaction signing and replaceable publishers (…
t-bast Jun 18, 2025
2e6c6fe
Use `Uint64` for `max_htlc_value_in_flight_msat` consistently (#3113)
t-bast Jun 23, 2025
4a34b8c
Ensure `htlc_maximum_msat` is at least `htlc_minimum_msat` (#3117)
thomash-acinq Jun 24, 2025
e6585bf
Keep original features byte vector in Bolt12 TLVs (#3121)
thomash-acinq Jun 25, 2025
5e829ac
Stricter Bolt11 invoice parsing (#3122)
t-bast Jun 26, 2025
6fb7ac1
Refactor channel params: extract commitment params (#3116)
t-bast Jun 26, 2025
bddacda
Publish hold times to the event stream (#3123)
thomash-acinq Jun 27, 2025
3a9b791
Fix flaky 0-conf watch-published event (#3124)
t-bast Jun 27, 2025
d7c020d
Refactor attribution helpers and commands (#3125)
t-bast Jun 30, 2025
17ac335
Upgrade to bitcoin-lib 0.41 (#3128)
sstone Jul 1, 2025
43c3986
Endorse htlc and local reputation (#2716)
thomash-acinq Jul 11, 2025
09fc936
Rename maxHtlcAmount to maxHtlcValueInFlight in Commitments (#3131)
thomash-acinq Jul 11, 2025
a307b70
Add unconfirmed transaction pruning when computing closing balance (#…
t-bast Jul 16, 2025
9af7084
Add outgoing reputation (#3133)
thomash-acinq Jul 29, 2025
65e2639
Fix flaky on-chain balance test (#3132)
t-bast Jul 29, 2025
af3cd55
Add recent invoice spec test vectors (#3137)
t-bast Aug 18, 2025
5703cd4
Use actual CLTV delta for reputation (#3134)
thomash-acinq Aug 18, 2025
b651e5b
Offers with currency must set amount. (#3140)
thomash-acinq Aug 19, 2025
49bee72
Extract `CommitParams` to individual commitments (#3118)
t-bast Aug 19, 2025
d8ce91b
Simple taproot channels (#3103)
sstone Aug 19, 2025
0e0da42
Allow omitting `previousTx` for taproot splices (#3143)
t-bast Aug 25, 2025
d7ee663
Split commit nonces from funding nonce in `tx_complete` (#3145)
t-bast Aug 25, 2025
3d5fd33
Fix minor incompatibilities with feature branches (#3148)
t-bast Sep 1, 2025
012b382
Adjust `batch_size` on `commit_sig` retransmission (#3147)
t-bast Sep 2, 2025
50f16cb
Add `GossipTimestampFilter` buffer during gossip queries to fix flaky…
thomash-acinq Sep 4, 2025
18ea362
Fix `LocalFundingStatus.ConfirmedFundingTx` migration (#3151)
t-bast Sep 4, 2025
d48dd21
Allow overriding `max-closing-feerate` with `forceclose` API (#3142)
t-bast Sep 5, 2025
f93d02f
Allow non-initiator RBF for dual funding (#3021)
t-bast Sep 5, 2025
d4dfb86
Use balance estimates from past payments in path-finding (#2308)
thomash-acinq Sep 8, 2025
07c0cfd
Re-encode channel data using v5 codecs (#3149)
t-bast Sep 9, 2025
70a2e29
Use helpers for feerates conversions (#3156)
pm47 Sep 9, 2025
c9ff501
Catch close commands in `Offline(WaitForDualFundingSigned)` (#3159)
pm47 Sep 9, 2025
2a5b0f1
Fix comparison of utxos in the balance (#3160)
pm47 Sep 9, 2025
6075196
Relax taproot feature dependency (#3161)
t-bast Sep 10, 2025
e8ec148
Add high-S signature Bolt 11 test vector (#3163)
t-bast Sep 10, 2025
f32e0b6
Fix flaky `OfferPaymentSpec` (#3164)
thomash-acinq Sep 10, 2025
992ec8c
Eclair v0.13.0 release (#3154)
t-bast Sep 10, 2025
3abc17f
Back to dev (#3155)
t-bast Sep 10, 2025
f029584
Update Bitcoin Core to v29.1 (#3153)
t-bast Sep 10, 2025
ae3e44b
Remove legacy channel codecs and DB migrations (#3150)
t-bast Sep 11, 2025
a7e57ea
Update taproot commit weight to match `lnd` (#3158)
t-bast Sep 11, 2025
d3ac75d
Fix flaky `ReputationRecorder` test (#3166)
thomash-acinq Sep 11, 2025
c13d530
Fix flaky test in `OfferPaymentSpec` (#3165)
thomash-acinq Sep 11, 2025
379abc5
Resign next remote commit on reconnection (#3157)
t-bast Sep 12, 2025
e351320
Increase timeout for flaky onion message tests (#3167)
thomash-acinq Sep 16, 2025
76f8d53
Correctly fill PSBT for taproot `interactive-tx` (#3169)
t-bast Sep 17, 2025
9f00ebf
Always count local CLTV delta in route finding (#3174)
thomash-acinq Sep 18, 2025
08a1fc6
Kill the connection if a peer sends multiple ping requests in paralle…
pm47 Sep 19, 2025
fa1b0ee
Remove `PaymentWeightRatios` from the routing config (#3171)
thomash-acinq Sep 19, 2025
abe2cc9
Reject offers with some fields present but empty (#3175)
thomash-acinq Sep 22, 2025
ad8b2e3
Add "phoenix zero reserve" feature bit (#3176)
sstone Sep 23, 2025
5b4368a
Fix encoding of channel type TLV in splice_init/splice_ack (#3178)
sstone Sep 23, 2025
90778ca
Smaller default value for `peer-connection.max-no-channels` (#3180)
t-bast Sep 25, 2025
d04ed3d
Deduplicate closing balance during mutual close (#3182)
t-bast Sep 29, 2025
2b39bf6
Update `bitcoin-lib` (#3179)
t-bast Sep 30, 2025
16a309e
Add `DATA_CLOSED` class when active channel is closed (#3170)
t-bast Sep 30, 2025
56a3acd
Add `zero-conf` test tag for Phoenix taproot tests (#3181)
t-bast Sep 30, 2025
cc75b13
Nits (#3183)
pm47 Sep 30, 2025
d1863f9
Create fresh shutdown nonce on reconnection (#3184)
t-bast Oct 8, 2025
3208266
Use bitcoin-lib 0.44 (#3185)
sstone Oct 13, 2025
51a144c
Split MPP by maximizing expected delivered amount (#2792)
thomash-acinq Oct 14, 2025
409c7c1
Don't store anchor transaction in channel data (#3187)
t-bast Oct 15, 2025
0baddd9
Only store txs spending our commit outputs (#3188)
t-bast Oct 15, 2025
711c52a
Avoid negative on-the-fly funding fee (#3189)
t-bast Oct 15, 2025
656a2fe
Update Bitcoin Core to v29.2 (#3190)
pm47 Oct 20, 2025
7372a87
Update `bitcoin-lib` (#3193)
t-bast Oct 24, 2025
9771b2d
Configure bitcoind test instances to use bech32m addresses (#3195)
t-bast Oct 24, 2025
701f229
More flexible mixing of clearnet addresses and tor proxy (#3054)
rorp Oct 27, 2025
9830aa6
Eclair v0.13.1 release (#3196)
t-bast Oct 27, 2025
ddf75bc
Back to dev (#3197)
t-bast Oct 27, 2025
26d0350
Require closed channels migration before starting (#3198)
t-bast Oct 27, 2025
9911cb7
Remove support for non-anchor channels (#3173)
t-bast Oct 27, 2025
3b69013
Stop sending `update_fee` for mobile wallets (#3186)
t-bast Oct 27, 2025
65309ee
ci: only run latest-bitcoin
pinheadmz Apr 7, 2025
f611774
build bitcoin from pinheadmz/http-rewrite for testing
pinheadmz Apr 7, 2025
0baf773
test 2025_threadpool_http_server
pinheadmz Oct 28, 2025
3aec500
add capnproto
pinheadmz Oct 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
15 changes: 8 additions & 7 deletions .github/workflows/latest-bitcoind.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
name: Latest Bitcoin Core

on:
workflow_dispatch: # Build can be triggered manually from github.com
schedule:
# Run at midnight on Sunday and Wednesday.
- cron: '0 0 * * 0,3'
push:
branches: [ master ]
pull_request:
branches: [ master ]

permissions:
contents: read
Expand All @@ -18,11 +18,12 @@ jobs:
- name: Checkout bitcoind master
uses: actions/checkout@v3
with:
repository: bitcoin/bitcoin
repository: furszy/bitcoin-core
ref: 2025_threadpool_http_server
path: bitcoin

- name: Install bitcoind dependencies
run: sudo apt-get install build-essential cmake pkg-config bsdmainutils python3 libevent-dev libboost-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libsqlite3-dev systemtap-sdt-dev
run: sudo apt-get install build-essential cmake pkg-config bsdmainutils python3 libevent-dev libboost-dev libminiupnpc-dev libnatpmp-dev libzmq3-dev libsqlite3-dev systemtap-sdt-dev libcapnp-dev capnproto
working-directory: ./bitcoin

- name: Init and configure cmake build
Expand All @@ -48,5 +49,5 @@ jobs:
run: echo "fs.file-max = 1024000" | sudo tee -a /etc/sysctl.conf

- name: Run eclair tests
run: BITCOIND_DIR=$GITHUB_WORKSPACE/bitcoin/build/src ./mvnw test
run: BITCOIND_DIR=$GITHUB_WORKSPACE/bitcoin/build/bin ./mvnw test
working-directory: ./eclair
4 changes: 0 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
name: Build & Test

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:

Expand Down
56 changes: 20 additions & 36 deletions .mvn/checksums/checksums-central.sha256

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions .mvn/maven.config
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,5 @@
-Daether.artifactResolver.postProcessor.trustedChecksums.checksumAlgorithms=SHA-256
-Daether.artifactResolver.postProcessor.trustedChecksums.failIfMissing=true
-Daether.artifactResolver.postProcessor.trustedChecksums.snapshots=false
# Uncomment the following line to generate checksums
# -Daether.artifactResolver.postProcessor.trustedChecksums.record=true
2 changes: 1 addition & 1 deletion BUILD.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,6 @@ To make local development and testing easier, SNAPSHOT dependencies are not veri
To re-create the trusted checksums file, run:

```shell
$ rm ~/.m2/wrapper ~/.sbt -rf
$ rm -Rf ~/.m2/wrapper ~/.sbt
$ ./mvnw clean install -DskipTests -Daether.artifactResolver.postProcessor.trustedChecksums.record
```
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ This means that instead of re-implementing them, Eclair benefits from the verifi

* Eclair needs a _synchronized_, _segwit-ready_, **_zeromq-enabled_**, _wallet-enabled_, _non-pruning_, _tx-indexing_ [Bitcoin Core](https://github.com/bitcoin/bitcoin) node.
* You must configure your Bitcoin node to use `bech32` or `bech32m` (segwit) addresses. If your wallet has "non-segwit UTXOs" (outputs that are neither `p2sh-segwit`, `bech32` or `bech32m`), you must send them to a `bech32` or `bech32m` address before running Eclair.
* Eclair requires Bitcoin Core 28.1 or higher. If you are upgrading an existing wallet, you may need to create a new address and send all your funds to that address.
* Eclair requires Bitcoin Core 29 or higher. If you are upgrading an existing wallet, you may need to create a new address and send all your funds to that address.

Run bitcoind with the following minimal `bitcoin.conf`:

Expand All @@ -71,8 +71,8 @@ server=1
rpcuser=foo
rpcpassword=bar
txindex=1
addresstype=bech32
changetype=bech32
addresstype=bech32m
changetype=bech32m
zmqpubhashblock=tcp://127.0.0.1:29000
zmqpubrawtx=tcp://127.0.0.1:29000
```
Expand Down Expand Up @@ -284,11 +284,12 @@ eclair.chain = "regtest"
eclair.bitcoind.rpcport=18443
```

For signet, add `signet=1` in `bitcoin.conf` or start with `-signet`, and modify `eclair.conf`:
For signet, add `signet=1` in `bitcoin.conf` or start with `-signet`, and modify `eclair.conf` as follows. The `signet-check-tx` config parameter should be the txid of a transaction that exists in your signet, "" to skip this check, or if not specified, the default signet txid value will be used.

```conf
eclair.chain = "signet"
eclair.bitcoind.rpcport=38332
eclair.bitcoind.signet-check-tx=<txid of signet tx>
```

You may also want to take advantage of the new configuration sections in `bitcoin.conf` to manage parameters that are network specific,
Expand Down
60 changes: 8 additions & 52 deletions docs/Configure.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,32 +261,16 @@ eclair {
path-finding {
experiments {
control = ${eclair.router.path-finding.default} {
percentage = 50
}

// alternative routing heuristics (replaces ratios)
test-failure-cost = ${eclair.router.path-finding.default} {
use-ratios = false

locked-funds-risk = 1e-8 // msat per msat locked per block. It should be your expected interest rate per block multiplied by the probability that something goes wrong and your funds stay locked.
// 1e-8 corresponds to an interest rate of ~5% per year (1e-6 per block) and a probability of 1% that the channel will fail and our funds will be locked.

// Virtual fee for failed payments
// Corresponds to how much you are willing to pay to get one less failed payment attempt
failure-cost {
fee-base-msat = 2000
fee-proportional-millionths = 500
}
percentage = 10
percentage = 70
}

// To optimize for fees only:
test-fees-only = ${eclair.router.path-finding.default} {
ratios {
base = 1
cltv = 0
channel-age = 0
channel-capacity = 0
// By setting everything to zero, only fees will be taken into account.
locked-funds-risk = 0
failure-cost {
fee-base-msat = 0
fee-proportional-millionths = 0
}
hop-cost {
fee-base-msat = 0
Expand All @@ -297,12 +281,6 @@ eclair {

// To optimize for shorter paths:
test-short-paths = ${eclair.router.path-finding.default} {
ratios {
base = 1
cltv = 0
channel-age = 0
channel-capacity = 0
}
hop-cost {
// High hop cost penalizes strongly longer paths
fee-base-msat = 10000
Expand All @@ -313,30 +291,8 @@ eclair {

// To optimize for successful payments:
test-pay-safe = ${eclair.router.path-finding.default} {
ratios {
base = 0
cltv = 0
channel-age = 0.5 // Old channels should have less risk of failures
channel-capacity = 0.5 // High capacity channels are more likely to have enough liquidity to relay our payment
}
hop-cost {
// Less hops means less chances of failures
fee-base-msat = 1000
fee-proportional-millionths = 1000
}
percentage = 10
}

// To optimize for fast payments:
test-pay-fast = ${eclair.router.path-finding.default} {
ratios {
base = 0.2
cltv = 0.5 // In case of failure we want our funds back as fast as possible
channel-age = 0.3 // Older channels are more likely to run smoothly
channel-capacity = 0
}
hop-cost {
// Shorter paths should be faster
failure-cost {
// High failure cost will penalize paths that are less likely to succeed.
fee-base-msat = 10000
fee-proportional-millionths = 10000
}
Expand Down
14 changes: 12 additions & 2 deletions docs/FAQ.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# FAQ

## What does it mean for a channel to be "enabled" or "disabled" ?
## What does it mean for a channel to be "enabled" or "disabled"?

A channel is disabled if a `channel_update` message has been broadcast for that channel with the `disable` bit set (see [BOLT 7](https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#the-channel_update-message)). It means that the channel still exists but cannot be used to route payments, until it has been re-enabled.

Expand All @@ -13,6 +13,16 @@ There are other cases when a channel becomes disabled, for example when its bala

Note that you can have multiple channels between the same nodes, and that some of them can be enabled while others are disabled (i.e. enable/disable is channel-specific, not node-specific).

## How should you stop an Eclair node ?
## How do I make my closing transactions confirm faster?

When channels are unilaterally closed, there is a delay before which closing transactions can be published: you must wait for this delay before you can get your funds back.

Once published, transactions will be automatically RBF-ed by `eclair` based on your configuration values for the [`eclair.on-chain-fees` section](../eclair-core/src/main/resources/reference.conf).

Note that there is an upper bound on the feerate that will be used, configured by the `eclair.on-chain-fees.max-closing-feerate` parameter.
If the current feerate is higher than this value, your transactions will not confirm.
You should update `eclair.on-chain-fees.max-closing-feerate` in your `eclair.conf` and restart your node: your transactions will automatically be RBF-ed using the new feerate.

## How should you stop an Eclair node?

To stop your node you just need to kill its process, there is no API command to do this. The JVM handles the quit signal and notifies the node to perform clean-up. For example, there is a hook to cleanly free DB locks when using Postgres.
Loading