Skip to content

Commit b5ae48a

Browse files
committed
Eclair v0.13.1 release
1 parent 9771b2d commit b5ae48a

File tree

8 files changed

+149
-99
lines changed

8 files changed

+149
-99
lines changed

.mvn/maven.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
-Daether.trustedChecksumsSource.summaryFile=true
33
-Daether.trustedChecksumsSource.summaryFile.basedir=${session.rootDirectory}/.mvn/checksums/
44
# post processor: trusted checksums
5-
-Daether.artifactResolver.postProcessor.trustedChecksums=true
5+
-Daether.artifactResolver.postProcessor.trustedChecksums=false
66
-Daether.artifactResolver.postProcessor.trustedChecksums.checksumAlgorithms=SHA-256
77
-Daether.artifactResolver.postProcessor.trustedChecksums.failIfMissing=true
88
-Daether.artifactResolver.postProcessor.trustedChecksums.snapshots=false
Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
# Eclair v0.13.1
2+
3+
This release contains database changes to prepare for the removal of pre-anchor channels.
4+
Closed channels will be moved to a new table on restart, which may take some time, but will only happen once.
5+
6+
:warning: Note that you will need to run the v0.13.0 release first to migrate your channel data to the latest internal encoding.
7+
8+
This is the last release of eclair where channels that don't use anchor outputs will be supported.
9+
If you have channels that don't use anchor outputs, you should close them now.
10+
You can list those channels using the following command:
11+
12+
```sh
13+
$ eclair-cli channels | jq '.[] | { channelId: .data.commitments.channelParams.channelId, commitmentFormat: .data.commitments.active[].commitmentFormat }' | jq 'select(.["commitmentFormat"] == "legacy")'
14+
```
15+
16+
If your peer is online, you can then cooperatively close those channels using the following command:
17+
18+
```sh
19+
$ eclair-cli close --channelId=<channel_id_from_previous_step> --preferredFeerateSatByte=<feerate_satoshis_per_byte>
20+
```
21+
22+
If your peer isn't online, you may want to force-close those channels to recover your funds:
23+
24+
```sh
25+
$ eclair-cli forceclose --channelId=<channel_id_from_previous_step>
26+
```
27+
28+
:warning: This release also updates the dependency on Bitcoin Core to v29.x (we recommend using v29.2).
29+
30+
## Major changes
31+
32+
### Move closed channels to dedicated database table
33+
34+
We previously kept closed channels in the same database table as active channels, with a flag indicating that it was closed.
35+
This creates performance issues for nodes with a large history of channels, and creates backwards-compatibility issues when changing the channel data format.
36+
37+
We now store closed channels in a dedicated table, where we only keep relevant information regarding the channel.
38+
When restarting your node, the channels table will automatically be cleaned up and closed channels will move to the new table.
39+
This may take some time depending on your channels history, but will only happen once.
40+
41+
### Remove support for legacy channel codecs
42+
43+
We remove the code used to deserialize channel data from versions of eclair prior to v0.13.
44+
Node operators running a version of `eclair` older than v0.13 must first upgrade to v0.13.0 to migrate their channel data, and then upgrade to the latest version.
45+
46+
### Update minimal version of Bitcoin Core
47+
48+
With this release, eclair requires using Bitcoin Core 29.x.
49+
Newer versions of Bitcoin Core may be used, but have not been extensively tested.
50+
51+
### New MPP splitting strategy
52+
53+
Eclair can send large payments using multiple low-capacity routes by sending as much as it can through each route (if `randomize-route-selection = false`) or some random fraction (if `randomize-route-selection = true`).
54+
These splitting strategies are now specified using `mpp.splitting-strategy = "full-capacity"` or `mpp.splitting-strategy = "randomize"`.
55+
In addition, a new strategy is available: `mpp.splitting-strategy = "max-expected-amount"` will send through each route the amount that maximizes the expected delivered amount (amount sent multiplied by the success probability).
56+
57+
Eclair's path-finding algorithm can be customized by modifying the `eclair.router.path-finding.experiments.*` sections of your `eclair.conf`.
58+
The new `mpp.splitting-strategy` goes in these sections, or in `eclair.router.path-finding.default` from which they inherit.
59+
60+
### Configuration changes
61+
62+
No notable changes.
63+
64+
### API changes
65+
66+
- the `closedchannels` API now returns human-readable channel data
67+
68+
### Miscellaneous improvements and bug fixes
69+
70+
No notable changes.
71+
72+
## Verifying signatures
73+
74+
You will need `gpg` and our release signing key E04E48E72C205463. Note that you can get it:
75+
76+
- from our website: https://acinq.co/pgp/drouinf2.asc
77+
- from github user @sstone, a committer on eclair: https://api.github.com/users/sstone/gpg_keys
78+
79+
To import our signing key:
80+
81+
```sh
82+
$ gpg --import drouinf2.asc
83+
```
84+
85+
To verify the release file checksums and signatures:
86+
87+
```sh
88+
$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
89+
$ sha256sum -c SHA256SUMS.stripped
90+
```
91+
92+
## Building
93+
94+
Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):
95+
96+
- Ubuntu 24.04.1
97+
- Adoptium OpenJDK 21.0.6
98+
99+
Then use the following command to generate the eclair-node packages:
100+
101+
```sh
102+
./mvnw clean install -DskipTests
103+
```
104+
105+
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`
106+
107+
(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 21, we have not tried everything.
108+
109+
## Upgrading
110+
111+
This release is fully compatible with previous eclair versions. You don't need to close your channels, just stop eclair, upgrade and restart.
112+
113+
## Changelog
114+
115+
- [3abc17f](https://github.com/ACINQ/eclair/commit/3abc17f9aa9eb3354e1616ff056f1511015a3ced) Back to dev (#3155)
116+
- [f029584](https://github.com/ACINQ/eclair/commit/f02958467214dbe88cdaeeacbd30bc0a2627d161) Update Bitcoin Core to v29.1 (#3153)
117+
- [ae3e44b](https://github.com/ACINQ/eclair/commit/ae3e44be7066c6ed45b8b8021d5de95e086954da) Remove legacy channel codecs and DB migrations (#3150)
118+
- [a7e57ea](https://github.com/ACINQ/eclair/commit/a7e57ea7c8af1876067af78d98f5abb0e6e6d0fa) Update taproot commit weight to match `lnd` (#3158)
119+
- [d3ac75d](https://github.com/ACINQ/eclair/commit/d3ac75dfb5fb0c07bfb43326ad4c11e77cd209d7) Fix flaky `ReputationRecorder` test (#3166)
120+
- [c13d530](https://github.com/ACINQ/eclair/commit/c13d530f3283d5741c2d6c4efa055896a907a041) Fix flaky test in `OfferPaymentSpec` (#3165)
121+
- [379abc5](https://github.com/ACINQ/eclair/commit/379abc55b76668e83a7144f225e9e9a52c260c88) Resign next remote commit on reconnection (#3157)
122+
- [e351320](https://github.com/ACINQ/eclair/commit/e351320503faf79bc60c48e86a023c6e84436cf7) Increase timeout for flaky onion message tests (#3167)
123+
- [76f8d53](https://github.com/ACINQ/eclair/commit/76f8d53aea564d169e4abc774bc098e21ef53366) Correctly fill PSBT for taproot `interactive-tx` (#3169)
124+
- [9f00ebf](https://github.com/ACINQ/eclair/commit/9f00ebf98923455c53f500c3ba34bd35f0e505cf) Always count local CLTV delta in route finding (#3174)
125+
- [08a1fc6](https://github.com/ACINQ/eclair/commit/08a1fc6603c7614164bb32f2628d5100de5061f2) Kill the connection if a peer sends multiple ping requests in parallel (#3172)
126+
- [fa1b0ee](https://github.com/ACINQ/eclair/commit/fa1b0eef5d5f9a5075860c5868a5cb45b9b3980a) Remove `PaymentWeightRatios` from the routing config (#3171)
127+
- [abe2cc9](https://github.com/ACINQ/eclair/commit/abe2cc9cc38df82394f793e5924f8b802a1095fe) Reject offers with some fields present but empty (#3175)
128+
- [ad8b2e3](https://github.com/ACINQ/eclair/commit/ad8b2e3b36a9e09981fc34710d0ba66a2368fb91) Add "phoenix zero reserve" feature bit (#3176)
129+
- [5b4368a](https://github.com/ACINQ/eclair/commit/5b4368a65bee501c80cb8681da171d704db55888) Fix encoding of channel type TLV in splice_init/splice_ack (#3178)
130+
- [90778ca](https://github.com/ACINQ/eclair/commit/90778ca483746143bcab9cb086bb009cd89a5562) Smaller default value for `peer-connection.max-no-channels` (#3180)
131+
- [d04ed3d](https://github.com/ACINQ/eclair/commit/d04ed3dc34b4a43a912c49e09f47dbf4354b933c) Deduplicate closing balance during mutual close (#3182)
132+
- [2b39bf6](https://github.com/ACINQ/eclair/commit/2b39bf622f14cfe227cfc225c48423145e54e5c6) Update `bitcoin-lib` (#3179)
133+
- [16a309e](https://github.com/ACINQ/eclair/commit/16a309e49e83e094fb02063776a324c6a4f31f9c) Add `DATA_CLOSED` class when active channel is closed (#3170)
134+
- [56a3acd](https://github.com/ACINQ/eclair/commit/56a3acdf625ebb455f1c0cbb06339694f2554b49) Add `zero-conf` test tag for Phoenix taproot tests (#3181)
135+
- [cc75b13](https://github.com/ACINQ/eclair/commit/cc75b135f403ab7b4bb8bf09c75a8c4249fa66d9) Nits (#3183)
136+
- [d1863f9](https://github.com/ACINQ/eclair/commit/d1863f9457988e2b78d0c3460b5bb09ae2d610c1) Create fresh shutdown nonce on reconnection (#3184)
137+
- [3208266](https://github.com/ACINQ/eclair/commit/32082666ecf0bca6d0ab87185ef0f4c32a94bb44) Use bitcoin-lib 0.44 (#3185)
138+
- [51a144c](https://github.com/ACINQ/eclair/commit/51a144c8a231b4fe4df6dfb6f51ce45a1188aed3) Split MPP by maximizing expected delivered amount (#2792)
139+
- [409c7c1](https://github.com/ACINQ/eclair/commit/409c7c17148ef1d18d04a3e74739c2cdd89e87ca) Don't store anchor transaction in channel data (#3187)
140+
- [0baddd9](https://github.com/ACINQ/eclair/commit/0baddd91b1901317dc74e7ebf3cb00fee3499536) Only store txs spending our commit outputs (#3188)
141+
- [711c52a](https://github.com/ACINQ/eclair/commit/711c52ab717a55a87f2ea56d9f8115a61170e1d8) Avoid negative on-the-fly funding fee (#3189)
142+
- [656a2fe](https://github.com/ACINQ/eclair/commit/656a2fe6859d426c6f47afa488ac88cd7cfda440) Update Bitcoin Core to v29.2 (#3190)
143+
- [7372a87](https://github.com/ACINQ/eclair/commit/7372a8779e3b1c2bc14975adcbdd53bb7a216ccb) Update `bitcoin-lib` (#3193)
144+
- [9771b2d](https://github.com/ACINQ/eclair/commit/9771b2d862ec779e6281152a3b93dd0d438a4d91) Configure bitcoind test instances to use bech32m addresses (#3195)

docs/release-notes/eclair-vnext.md

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

eclair-core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<parent>
2222
<groupId>fr.acinq.eclair</groupId>
2323
<artifactId>eclair_2.13</artifactId>
24-
<version>0.14.0-SNAPSHOT</version>
24+
<version>0.13.1</version>
2525
</parent>
2626

2727
<artifactId>eclair-core_2.13</artifactId>

eclair-front/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<parent>
2222
<groupId>fr.acinq.eclair</groupId>
2323
<artifactId>eclair_2.13</artifactId>
24-
<version>0.14.0-SNAPSHOT</version>
24+
<version>0.13.1</version>
2525
</parent>
2626

2727
<artifactId>eclair-front_2.13</artifactId>

eclair-node/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<parent>
2222
<groupId>fr.acinq.eclair</groupId>
2323
<artifactId>eclair_2.13</artifactId>
24-
<version>0.14.0-SNAPSHOT</version>
24+
<version>0.13.1</version>
2525
</parent>
2626

2727
<artifactId>eclair-node_2.13</artifactId>

eclair-node/src/main/scala/fr/acinq/eclair/Boot.scala

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@ import scala.util.{Failure, Success}
3333
*/
3434
object Boot extends App with Logging {
3535
try {
36-
if (!System.getProperty("eclair.allow-unsafe-startup", "false").toBooleanOption.contains(true)) {
37-
throw new RuntimeException("This version of eclair is unsafe to use: please wait for the next official release to update your node.")
38-
}
39-
4036
val datadir = new File(System.getProperty("eclair.datadir", System.getProperty("user.home") + "/.eclair"))
4137
val config = NodeParams.loadConfiguration(datadir)
4238

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
<groupId>fr.acinq.eclair</groupId>
2222
<artifactId>eclair_2.13</artifactId>
23-
<version>0.14.0-SNAPSHOT</version>
23+
<version>0.13.1</version>
2424
<packaging>pom</packaging>
2525

2626
<modules>

0 commit comments

Comments
 (0)