Skip to content

Commit 57b455c

Browse files
authored
Eclair v0.12.0 release (#3032)
We temporarily remove checksums, and will re-add them in a follow-up commit.
1 parent 6a8df49 commit 57b455c

File tree

8 files changed

+204
-1221
lines changed

8 files changed

+204
-1221
lines changed

.mvn/checksums/checksums-central.sha256

Lines changed: 0 additions & 1085 deletions
This file was deleted.

.mvn/maven.config

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
# Eclair v0.12.0
2+
3+
This release adds support for creating and managing Bolt 12 offers and a new channel closing protocol (`option_simple_close`) that supports RBF.
4+
We also add support for storing small amounts of (encrypted) data for our peers (`option_provide_storage`).
5+
6+
:warning: This release also starts using Java 21, which means you may need to update your runtime.
7+
:warning: We also update our dependency on Bitcoin Core to v28.1 to benefit from package relay.
8+
9+
We've also made more progress on splicing, which is getting into the final stage of cross-compatibility tests.
10+
This cannot be used yet with other implementations, but will likely be available in the next release.
11+
12+
This release also contains various performance improvements, more configuration options and bug fixes.
13+
One notable performance improvement is a change in one of our database indexes (see #2946), which may take a few seconds to complete when restarting your node.
14+
15+
## Major changes
16+
17+
### Update minimal version of Bitcoin Core
18+
19+
With this release, eclair requires using Bitcoin Core 28.1.
20+
Newer versions of Bitcoin Core may be used, but have not been extensively tested.
21+
22+
This version of Bitcoin Core lets us benefit from opportunistic package relay.
23+
We now more aggressively use the *remote* commitment when using anchor outputs, which ensures that channel funds can be reallocated without waiting for a long delay.
24+
25+
### Offers
26+
27+
You can now create an offer with
28+
29+
```sh
30+
./eclair-cli createoffer --description=coffee --amountMsat=20000 --expireInSeconds=3600 [email protected] --blindedPathsFirstNodeId=03864ef025fde8fb587d989186ce6a4a186895ee44a926bfc370e2c366597a3f8f
31+
```
32+
33+
All parameters are optional and omitting all of them will create a minimal offer with your public node id.
34+
You can also disable offers and list offers with
35+
36+
```sh
37+
./eclair-cli disableoffer --offer=lnoxxx
38+
./eclair-cli listoffers
39+
```
40+
41+
If you specify `--blindedPathsFirstNodeId`, your public node id will not be in the offer, you will instead be hidden behind a blinded path starting at the node that you have chosen.
42+
You can configure the number and length of blinded paths used in `eclair.conf`:
43+
44+
```conf
45+
offers {
46+
// Minimum length of an offer blinded path
47+
message-path-min-length = 2
48+
49+
// Number of payment paths to put in Bolt12 invoices
50+
payment-path-count = 2
51+
// Length of payment paths to put in Bolt12 invoices
52+
payment-path-length = 4
53+
// Expiry delta of payment paths to put in Bolt12 invoices
54+
payment-path-expiry-delta = 500
55+
}
56+
```
57+
58+
### Simplified mutual close
59+
60+
This release includes support for the latest [mutual close protocol](https://github.com/lightning/bolts/pull/1205).
61+
This protocol allows both channel participants to decide exactly how much fees they're willing to pay to close the channel.
62+
Each participant obtains a channel closing transaction where they are paying the fees.
63+
64+
Once closing transactions are broadcast, they can be RBF-ed by calling the `close` RPC again with a higher feerate:
65+
66+
```sh
67+
./eclair-cli close --channelId=<channel_id> --preferredFeerateSatByte=<rbf_feerate>
68+
```
69+
70+
### Peer storage
71+
72+
With this release, eclair supports the `option_provide_storage` feature introduced in <https://github.com/lightning/bolts/pull/1110>.
73+
When `option_provide_storage` is enabled, eclair will store a small encrypted backup for peers that request it.
74+
This backup is limited to 65kB and node operators should customize the `eclair.peer-storage` configuration section to match their desired SLAs.
75+
This is mostly intended for LSPs that serve mobile wallets to allow users to restore their channels when they switch phones.
76+
77+
### Eclair requires a Java 21 runtime
78+
79+
Eclair now targets Java 21 and requires a compatible Java Runtime Environment. It will no longer work on JRE 11 or JRE 17.
80+
There are many organisations that package Java runtimes and development kits, for example [OpenJDK 21](https://adoptium.net/temurin/releases/?package=jdk&version=21).
81+
82+
### API changes
83+
84+
- `createoffer` allows creating a Bolt12 offer managed by eclair (#2976).
85+
- `disableoffer` allows disabling a Bolt12 offer (#2976).
86+
- `listoffers` lists offers managed by eclair (#2976).
87+
88+
### Miscellaneous improvements and bug fixes
89+
90+
#### Gossip sync limits
91+
92+
On reconnection, eclair now only synchronizes its routing table with a small number of top peers instead of synchronizing with every peer.
93+
If you already use `sync-whitelist`, the default behavior has been modified and you must set `router.sync.peer-limit = 0` to keep preventing any synchronization with other nodes.
94+
You must also use `router.sync.whitelist` instead of `sync-whitelist`.
95+
96+
## Verifying signatures
97+
98+
You will need `gpg` and our release signing key E04E48E72C205463. Note that you can get it:
99+
100+
- from our website: https://acinq.co/pgp/drouinf2.asc
101+
- from github user @sstone, a committer on eclair: https://api.github.com/users/sstone/gpg_keys
102+
103+
To import our signing key:
104+
105+
```sh
106+
$ gpg --import drouinf2.asc
107+
```
108+
109+
To verify the release file checksums and signatures:
110+
111+
```sh
112+
$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
113+
$ sha256sum -c SHA256SUMS.stripped
114+
```
115+
116+
## Building
117+
118+
Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):
119+
120+
- Ubuntu 24.04.1
121+
- Adoptium OpenJDK 21.0.4
122+
123+
Use the following command to generate the eclair-node package:
124+
125+
```sh
126+
./mvnw clean install -DskipTests
127+
```
128+
129+
That should generate `eclair-node/target/eclair-node-<version>-XXXXXXX-bin.zip` with sha256 checksums that match the one we provide and sign in `SHA256SUMS.asc`
130+
131+
(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 21, we have not tried everything.
132+
133+
## Upgrading
134+
135+
This release is fully compatible with previous eclair versions. You don't need to close your channels, just stop eclair, upgrade and restart.
136+
137+
## Changelog
138+
139+
- [4d930c7](https://github.com/ACINQ/eclair/commit/4d930c776bc2e08425c82d31c20a27468d659ea9) Back to dev (#2957)
140+
- [2ad2260](https://github.com/ACINQ/eclair/commit/2ad22602fd332a32c46c9efff1e90cc962a684a5) Refactor Sphinx failures (#2955)
141+
- [feef44b](https://github.com/ACINQ/eclair/commit/feef44b9803a2cc3144289a328a4d0091b0fcacb) Properly type Sphinx shared secrets (#2959)
142+
- [8381fc4](https://github.com/ACINQ/eclair/commit/8381fc4d2bbe81ed35a300bd1b00f188e2e709b2) Decrypt on-the-fly funding trampoline failures (#2960)
143+
- [189e282](https://github.com/ACINQ/eclair/commit/189e28299373b2aada6f51efe3e0b901bfb3cea3) Remove obsolete `WatchFundingConfirmed` when using RBF (#2961)
144+
- [e28f23f](https://github.com/ACINQ/eclair/commit/e28f23fbc886a98e732c0016094d15a35697c373) Peer storage (#2888)
145+
- [61af10a](https://github.com/ACINQ/eclair/commit/61af10ac71ec68cc65d215815f209575794a06ae) Add more splice RBF reconnection tests (#2964)
146+
- [c390560](https://github.com/ACINQ/eclair/commit/c390560aa1f670f6ad95a60fcb4f610ef12e4b0c) Delay considering a channel closed when seeing an on-chain spend (#2936)
147+
- [27ba60f](https://github.com/ACINQ/eclair/commit/27ba60f2416c47c6315139f0cb21894534cad890) `OutgoingNodeId` in a blinded path may not be a wallet (#2970)
148+
- [a35a972](https://github.com/ACINQ/eclair/commit/a35a972081628de4647e8989bef91f4eb6380081) Build against Java 21 (#2929)
149+
- [e99fa2e](https://github.com/ACINQ/eclair/commit/e99fa2e0a4d3900cc72cfa62d1ecb64b46ee52e3) Refactor route finding (#2974)
150+
- [db93cbe](https://github.com/ACINQ/eclair/commit/db93cbeda6eb43f7cd7614d86a0f41b07d99d253) Add support for taproot outputs to our "input info" class (#2895)
151+
- [ef1a029](https://github.com/ACINQ/eclair/commit/ef1a029dff5025f29e2b2e26c477638fd0d851eb) Reestablish partially signed splice with current `remote_commitment_number` (#2965)
152+
- [96183a9](https://github.com/ACINQ/eclair/commit/96183a93aa6090c18384db00ea7aea90658494d0) Increase `min-depth` for funding transactions (#2973)
153+
- [8827a04](https://github.com/ACINQ/eclair/commit/8827a043491014d160aae6b5e86cf5c1578090a7) Get ready for storing partial commit signatures (#2896)
154+
- [1c38591](https://github.com/ACINQ/eclair/commit/1c38591d0bb3bc8564a293a78538a06e2595b7bd) Get rid of various unnecessary warnings in logs (#2981)
155+
- [29ac25f](https://github.com/ACINQ/eclair/commit/29ac25f4c06024a686f157e8a45a3b0f9bfa69e5) Move `recommended_feerates` message to `CONNECTED` state (#2984)
156+
- [3249f2b](https://github.com/ACINQ/eclair/commit/3249f2b6077564030411c27d20ac08b30e0e2545) Validate offers format (#2985)
157+
- [12df4ce](https://github.com/ACINQ/eclair/commit/12df4cecfb356a8e5a99ff48f844d03dfe268d04) Add liquidity griefing protection for liquidity ads (#2982)
158+
- [05f7dc3](https://github.com/ACINQ/eclair/commit/05f7dc3d75624d18cee2b0e668cf14dfb6c73c28) Verify maven dependency checksums (#2986)
159+
- [5a1811b](https://github.com/ACINQ/eclair/commit/5a1811b344dd3b0b36ca694ec22b447b61edbe9a) Rework channel announcement signatures handling (#2969)
160+
- [73ea751](https://github.com/ACINQ/eclair/commit/73ea75105a32cdc90b776e4d0a3e353447de16e8) Do not estimate balance for local channels (#2988)
161+
- [06eb44a](https://github.com/ACINQ/eclair/commit/06eb44af7de28ab7c49b6f9874e393947620ade5) Send `channel_announcement` for splice transactions on public channels (#2968)
162+
- [00fe7a3](https://github.com/ACINQ/eclair/commit/00fe7a32b362a097ec5c5aff9126652d6fbdd6b4) Only sync with top peers (#2983)
163+
- [03ba2f8](https://github.com/ACINQ/eclair/commit/03ba2f861791a64c63713b4d6f307a4f27daf6f2) Fix flaky `ZmqWatcher` test (#2992)
164+
- [b6aa4cc](https://github.com/ACINQ/eclair/commit/b6aa4cc8eccf465daf743cd9cc606dc3c760827f) Log balance estimate updates (#2994)
165+
- [5abf99e](https://github.com/ACINQ/eclair/commit/5abf99efed318df9f8d09fd3bb615131e75aa6fd) Add router support for batched splices (#2989)
166+
- [10edb42](https://github.com/ACINQ/eclair/commit/10edb42b20391d80aa7fbb3e240c78e4b7c77264) Use SHA256 checksum to verify bitcoind download (#2996)
167+
- [8e46889](https://github.com/ACINQ/eclair/commit/8e46889b87d49ba76f7e2feb348075d813b9622e) Use sha256 checksums to verify maven dependencies (#2998)
168+
- [ee70529](https://github.com/ACINQ/eclair/commit/ee7052922c1d791ebc98e97210159c8d59ba9a12) Update logback to 1.5.16 (#2995)
169+
- [7ea73a7](https://github.com/ACINQ/eclair/commit/7ea73a7037365a847e01d4774a9dd3a186cb0354) (Minor) Add a feerate method for funding/closing (#3001)
170+
- [bd08bcd](https://github.com/ACINQ/eclair/commit/bd08bcddd29099fb9278beea45253d51965d58cb) fixup! Update logback to 1.5.16 (#2995) (#3004)
171+
- [35876c4](https://github.com/ACINQ/eclair/commit/35876c4181416a756bc1bca1a439177f63ee0b7f) Compute detailed diff of balance (#3000)
172+
- [a19ca67](https://github.com/ACINQ/eclair/commit/a19ca67cb4a3cb33fbbe83daf863785487df35b1) Fix flaky channel open integration test (#3003)
173+
- [a8787ab](https://github.com/ACINQ/eclair/commit/a8787ab1d57bcb230fd6490cb3183eea11d4378f) Use remote funding when setting `max_htlc_value_in_flight` (#2980)
174+
- [23c139c](https://github.com/ACINQ/eclair/commit/23c139ce91f3d911ca4512df342d56f4d40f80b0) Split composite DB index on `htlc_infos` table (#2946)
175+
- [bc44808](https://github.com/ACINQ/eclair/commit/bc448081645d222e3b7a694be5e9775009798d25) Secondary mechanism to trigger watches for transactions from past blocks (#3002)
176+
- [9b91c16](https://github.com/ACINQ/eclair/commit/9b91c1678e065713b5981f90a978614a17ca6f8f) Fix eclair-cli "compact" mode (#2990)
177+
- [3e5929b](https://github.com/ACINQ/eclair/commit/3e5929b2217c4e349d2d09ccc76ee4f39ae5d736) (Minor) Remove `ChannelOrigin` (#3006)
178+
- [fb58d8c](https://github.com/ACINQ/eclair/commit/fb58d8c7c2c3a63ca9de241f5487dc61048e0e37) Store remote features in `PeersDb` (#2978)
179+
- [372222d](https://github.com/ACINQ/eclair/commit/372222d9f86e6279c93a54213d73405b91697e43) Check peer features before attempting wake-up (#2979)
180+
- [3aac8da](https://github.com/ACINQ/eclair/commit/3aac8da14655886a016aa92055bd8289bf4e3e0d) Implement `option_simple_close` (#2967)
181+
- [194f673](https://github.com/ACINQ/eclair/commit/194f67365fd257169e241586a29e7d785ae85113) Update Bitcoin Core to v28.x (#2962)
182+
- [67e896b](https://github.com/ACINQ/eclair/commit/67e896b37d14b419dd41784bb6c75d695560b721) Use default confirmations for single-funded channel (#3013)
183+
- [00de49f](https://github.com/ACINQ/eclair/commit/00de49f750e3de7ac30b1734186178295b4d02ca) Better handling of invalid public keys in codecs (#3012)
184+
- [22bc4a7](https://github.com/ACINQ/eclair/commit/22bc4a7d16682ace4121570dbea609d7bad6d1b5) (Minor) Fix capturing logs in tests (#3011)
185+
- [8c83a30](https://github.com/ACINQ/eclair/commit/8c83a302f4bc961f2b3241fdc8023e570ff04cd4) Make wallet resolution independent of wake-up config in `NodeRelay` (#3014)
186+
- [4ad2f99](https://github.com/ACINQ/eclair/commit/4ad2f99370ae8f1306f21a1693f90a4a25377dc9) Update bitcoin lib (#3015)
187+
- [9456236](https://github.com/ACINQ/eclair/commit/945623643f885b9a22bacfb0bfb977b78f51bcd8) Allow recipient to pay for blinded route fees (#2993)
188+
- [cae22d7](https://github.com/ACINQ/eclair/commit/cae22d71be0481318cfad9d73456ae2f2d5b09f2) Add scripts for taproot channels (#3016)
189+
- [f6b051c](https://github.com/ACINQ/eclair/commit/f6b051cf7344ede29d0197d9967004f07391b766) Prioritize remote commitment instead of local one (#3019)
190+
- [21917f5](https://github.com/ACINQ/eclair/commit/21917f55dd157dad5fc62c2013f9b5141fc39db1) Add support for your_last_funding_locked and my_current_funding_locked tlvs in channel_reestablish (#3007)
191+
- [37a3f9d](https://github.com/ACINQ/eclair/commit/37a3f9d56c9415d0a869327250985eddd91e6b1a) Allow override peer storage write delay (#3022)
192+
- [c7a288b](https://github.com/ACINQ/eclair/commit/c7a288b91fc19e89683c531cb3e9f61e59deace9) Sort amounts in the balance check (#3023)
193+
- [4729876](https://github.com/ACINQ/eclair/commit/4729876cac776d7817c0aa45640d8009e3afb81a) Add advanced api control methods (#3024)
194+
- [939e25d](https://github.com/ACINQ/eclair/commit/939e25da66ccc205948d642fbd0e4f23c385a985) Add path finding for blinded routes (#3027)
195+
- [95bbf06](https://github.com/ACINQ/eclair/commit/95bbf063c9283b525c2bf9f37184cfe12c860df1) Use channel_reestablish tlv when sending channel_ready (#3025)
196+
- [7ef55a6](https://github.com/ACINQ/eclair/commit/7ef55a6abbdd53bb2bbd1e9703a4a110bb265579) Use confirmed inputs for anchor transactions (#3020)
197+
- [e3b3261](https://github.com/ACINQ/eclair/commit/e3b3261c2cc19e21f70ec4be56f5a851e98625bb) Remove ln explorer links from README.md (#3029)
198+
- [722c9ff](https://github.com/ACINQ/eclair/commit/722c9ffac45dda98c0ae6f6d078674e65e9900be) Manage Bolt 12 offers without extra plugin (#2976)
199+
- [26f06c9](https://github.com/ACINQ/eclair/commit/26f06c955ba00a8346f26cdb6adfe4feeff60106) Gate new splice tlvs on remote support for splicing (#3031)
200+
- [6a8df49](https://github.com/ACINQ/eclair/commit/6a8df49a9bf006a0826b828020f551ecb6c7a33e) Remove spurious interactive-tx `commit_sig` retransmission (#2966)

docs/release-notes/eclair-vnext.md

Lines changed: 0 additions & 124 deletions
This file was deleted.

0 commit comments

Comments
 (0)