Eclair Versions Save

A scala implementation of the Lightning Network.

v0.10.0

2 months ago

This release adds official support for the dual-funding feature, an up-to-date implementation of Bolt 12 offers, and a fully working splicing prototype. We're waiting for the specification work to be finalized for some of those features, and other implementations to be ready for cross-compatibility tests. You should only activate them if you know what you're doing, and are ready to handle backwards-incompatible changes!

This release also contains various on-chain fee improvements, more configuration options, performance enhancements and various minor bug fixes.

The detailed release notes can be found here.

Verifying signatures

You will need gpg and our release signing key 7A73FE77DE2C4027. Note that you can get it:

To import our signing key:

$ gpg --import drouinf.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Building

Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 22.04
  • AdoptOpenJDK 11.0.22
  • Maven 3.9.2

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

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

(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 11, we have not tried everything.

Upgrading

This release is fully compatible with previous eclair versions. You don't need to close your channels, just stop eclair, upgrade and restart.

v0.9.0

10 months ago

This release contains a lot of preparatory work for important (and complex) lightning features: dual-funding, splicing and Bolt 12 offers. These features are now fully implemented in eclair, but we're waiting for the specification work to be finalized and other implementations to be ready for cross-compatibility tests. You should only activate them if you know what you're doing, and are ready to handle potential backwards-incompatible changes! We also make plugins more powerful, introduce mitigations against various types of DoS, and improve performance in many areas of the codebase.

The detailed release notes can be found here

Verifying signatures

You will need gpg and our release signing key 7A73FE77DE2C4027. Note that you can get it:

To import our signing key:

$ gpg --import drouinf.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Building

Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 22.04
  • AdoptOpenJDK 11.0.6
  • Maven 3.9.2

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

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

(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 11, we have not tried everything.

Upgrading

This release is fully compatible with previous eclair versions. You don't need to close your channels, just stop eclair, upgrade and restart.

v0.8.0

1 year ago

This release adds official support for two important lightning features: zero-conf channels and channel aliases. It also adds experimental support for dual-funding and a lot of preparatory work for Bolt 12 offers.

:warning: we also require at least Bitcoin Core 23.0: make sure to upgrade and reconfigure your node (see detailed instructions in the release notes)

The detailed release notes can be found here

Verifying signatures

You will need gpg and our release signing key 7A73FE77DE2C4027. Note that you can get it:

To import our signing key:

$ gpg --import drouinf.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Building

Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 20.04
  • AdoptOpenJDK 11.0.6
  • Maven 3.8.1

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

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

(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 11, we have not tried everything.

Upgrading

This release is fully compatible with previous eclair versions. You don't need to close your channels, just stop eclair, upgrade and restart.

v0.7.0-patch-disconnect

1 year ago

Eclair v0.7.0-patch-disconnect

This is a patch release which adds two commits:

  • Add option to disable sending remote addr in init (#2285)
  • Resume reading after processing unknown messages (#2332)

It addresses unwanted disconnections with peers that use unknown messages.

Verifying signatures

You will need gpg and our release signing key 7A73FE77DE2C4027. Note that you can get it:

To import our signing key:

$ gpg --import drouinf.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Building

Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 20.04
  • AdoptOpenJDK 11.0.6
  • Maven 3.8.1

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

That should generate eclair-node/target/eclair-node-0.7.0-cad88bf-bin.zip with sha256 checksums that match the one we provide and sign in SHA256SUMS.asc

(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 11, we have not tried everything.

Upgrading

This release is fully compatible with previous eclair versions. You don't need to close your channels, just stop eclair, upgrade and restart.

v0.7.0

2 years ago

Eclair v0.7.0

This release adds official support for two long-awaited lightning features: anchor outputs and onion messages. Support for the PostreSQL database backend is also now production ready! This release also includes a few bug fixes and many new (smaller) features. It is fully compatible with 0.6.2 (and all previous versions of eclair).

Because this release changes the default type of channels that your node will use, make sure you read the release notes carefully! The release notes can be found here.

Verifying signatures

You will need gpg and our release signing key 7A73FE77DE2C4027. Note that you can get it:

To import our signing key:

$ gpg --import drouinf.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Building

Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 20.04
  • AdoptOpenJDK 11.0.6
  • Maven 3.8.1

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

That should generate eclair-node/target/eclair-node-0.7.0-a804905-bin.zip with sha256 checksums that match the one we provide and sign in SHA256SUMS.asc

(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 11, we have not tried everything.

Upgrading

This release is fully compatible with previous eclair versions. You don't need to close your channels, just stop eclair, upgrade and restart.

v0.6.2

2 years ago

Eclair v0.6.2

This releases fixes a known vulnerability, makes several performance improvements, includes a few bug fixes and many new features. It is fully compatible with 0.6.1 (and all previous versions of eclair).

This release requires a few actions from node operators when upgrading: make sure you read the release notes carefully!

The release notes can be found here.

Verifying signatures

You will need gpg and our release signing key 7A73FE77DE2C4027. Note that you can get it:

To import our signing key:

$ gpg --import drouinf.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Building

Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 20.04
  • AdoptOpenJDK 11.0.6
  • Maven 3.8.1

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

That should generate eclair-node/target/eclair-node-0.6.2-6817d6f-bin.zip with sha256 checksums that match the one we provide and sign in SHA256SUMS.asc

(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 11, we have not tried everything.

Upgrading

This release is fully compatible with previous eclair versions. You don't need to close your channels, just stop eclair, upgrade and restart.

v0.6.1

2 years ago

Eclair v0.6.1

This release makes major performance improvements, includes a few bug fixes and several new features. It is fully compatible with 0.6.0 (and all previous versions of eclair).

Major changes

Performance improvements

Sqlite

Eclair now uses write-ahead logging in Sqlite (#1871). WAL is better suited to our DB access patterns, and is both much more performant and safer than the default rollback journal that we were using previously.

  1. WAL is significantly faster in most scenarios.
  2. WAL provides more concurrency as readers do not block writers and a writer does not block readers.
  3. Disk I/O operations tends to be more sequential using WAL.
  4. WAL uses many fewer fsync() operations.

This small change improves performance by more than 5x.

Payment Handling

Invoice generation (#1878) and handling of incoming payments (#1880) are now processed in parallel, resulting in a higher throughput under load.

Improved Postgres support

This is the continuation of an effort to make PosgreSQL production-ready. The database schema has been reworked (#1866) and is now better organized, with appropriate types for timestamps (#1862). There have been several concurrency-related bug fixes.

We have also added JSONB columns for local channels and for network announcements (#1865). All individual data fields can now be accessed from SQL and indexed, which is very convenient for advanced analysis and tuning of a routing node.

Upfront shutdown script

This release adds support for option_upfront_shutdown_script (feature bits 4/5). This feature lets you specify a closing address when you open a channel: your peer will ensure that when you close, your funds can only go to that address.

It can be useful to protect against future hacks of your node, because the attacker won't be able to close your channels and send the funds to an address that he controls. However, it doesn't prevent the attacker from exfiltrating funds by paying lightning invoices, so you shouldn't rely on this feature alone to make your node hack-proof.

This option is disabled by default, but can be enabled in your eclair.conf. Note that if you enable it, the closing address will be automatically generated by your bitcoind node.

Transaction publishing improvements

This release reworks our internal transaction publishing architecture (see #1844 for details). The new architecture is more flexible, provides better logging and makes it easy to add dynamic fee bumping in the future for anchor output channels. It will also make it easier to automatically use CPFP to ensure funding transactions confirm before the 2016 blocks timeout is reached.

API changes

This release updates a few APIs:

  • parseinvoice displays Bolt 11 invoices routing hints (#1833)
  • Plugins can inject their own routes into the API instead of spawning a separate HTTP server (#1805 and #1819)

Miscellaneous improvements and bug fixes

  • Eclair now uses Bitcoin Core 0.21.1 by default (#taproot)
  • Eclair now supports warning messages
  • Eclair uses additional entropy on top of the operating system RNG to mitigate random number generation failures (#1774)

Verifying signatures

You will need gpg and our release signing key 7A73FE77DE2C4027. Note that you can get it:

To import our signing key:

$ gpg --import drouinf.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Building

Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 20.04
  • AdoptOpenJDK 11.0.6
  • Maven 3.8.1

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

That should generate eclair-node/target/eclair-node-0.6.1-XXXXXXX-bin.zip with sha256 checksums that match the one we provide and sign in SHA256SUMS.asc

(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 11, we have not tried everything.

Upgrading

This release is fully compatible with eclair v0.6.0. You don't need to close your channels, just stop eclair, upgrade and restart.

Changelog

a658fa26f Set version to 0.6.1-SNAPSHOT (#1813) 76894bd2e Add additional PRNG (#1774) 9a20aade0 Allow plugins to inject their own routes into API (#1805) d437ea1ed Improve API plugin support (#1819) 98cae455f Rename pending_relay to pending_commands (#1822) e8c33baf5 Various improvements and fixes (#1817) f829a2e8c Add json type hints on channel data (#1824) 4dc2910c4 Make result set an iterable (#1823) 6f6c458a2 Add metrics on channels processing time (#1826) 43a89f865 Add a random delay before processing blocks (#1825) af618bc44 Symmetrical HTLC limits (#1828) dbecb28d9 Include routing hints in parseinvoice API call response (#1833) 2b6d564d2 Expose eclair datadir to plugins (#1837) bd6bad1bf Fix eventually statements (#1835) a7bb2c2b2 Do not store CannotAffordFees errors (#1834) d4b25d565 Udpate to Bitcoin Core 0.21.1 (#1841) e750474c7 Use bitcoin-lib 0.19 (#1839) bbfbad597 Validate payment secret when decoding (#1840) afb1b41ea Update bolt 3 spec test vectors (#1669) d43d06f6e Rework TxPublisher (#1844) 45204e238 Schedule backup at regular interval (#1845) 85ed4338a Reject 0-value trampoline payments (#1851) f857368ea Make trampoline payments use per-channel fee and cltv (#1853) f52c3dd3f Decode warning messages (#1854) 516929b1a Fix default file backup config (#1857) 4ca5c62ab Remove println in tests (#1861) 291c128ca Reduce some log levels (#1864) d9a03a52b Use warning messages for connection issues (#1863) af8394a28 Add support for dual db backend (#1746) 3a573e267 Improve message for CannotRetrieveFeerates error (#1859) bd57d41ef Add a globalbalance api call (#1737) 08faf3b7f Add json columns in Postgres (#1865) f8feb1959 Use schemas in Postgres (#1866) cea3fc026 Use proper data type for timestamps in Postgres 2 (#1862) 95fffe348 Reduce pg transaction isolation (#1860) 547d7e700 Create chain directory (#1872) e9df4eece Channels data format migration (#1849) 733c6e768 Refactor global balance tests (#1874) ca51a2d16 Enable WAL mode on Sqlite (#1871) 3ae9a4ae3 Additional reestablish test (#1875) d02760d96 Fail unsigned outgoing htlcs on force-close (#1832) 3bb7ee8a3 Parallel payment request generation (#1878) 51824028b Fix flaky channel integration tests (#1879) b4183edfa Fetch incoming payments in parallel (#1880) 8c49f779a Fix payment handler tests (#1882) 01b40730f Implement option-upfront-shutdown-script (#1846) 79729c78c Update README (#1881) c22596bb9 Update dependencies and enable fatal warnings (#1885) adf36de0e Fix yet another flaky test (#1886) 3f1c2506a Fix watcher flaky test (#1883) c8c5e76d2 Update akka-http-json4s dependency (#1889) 5fa8fedb9 Set version to 0.6.1 (#1887)

v0.6.0

2 years ago

This release makes some core features mandatory, includes a few important bug fixes and several performance improvements. It is fully compatible with 0.5.1 (and all previous versions of eclair).

Major changes

Mandatory payment secrets

This release makes two important features mandatory:

These features have been widely deployed and protect against privacy attacks and stealing payments to 0-value invoices (as described here). You won't be able to connect to nodes that don't support these features nor pay invoices that don't include a payment_secret.

Improved detection of stale blocks

Eclair uses ZMQ to receive blocks and transactions from your bitcoin node. While ZMQ is usually very reliable, we discovered that its pub/sub model has some limitations. If a subscriber encounters network failures, it will silently disconnect without notifying the publisher. This never happens when your bitcoin node is on the same machine as eclair, but may happen when bitcoin is running on a remote machine and a VPN is used between the two machines. Eclair now sets a TCP keep-alive on the ZMQ socket to work around this limitation and quickly reconnect.

The blockchain watchdogs have also been improved to run at fixed intervals if no blocks are received. They will poll secondary blockchain sources (bitcoinheaders.net, blockstream.info, mempool.space and blockcypher.com) to detect that your eclair node is missing blocks.

Electrum support removed

This release removes support for using Electrum instead of Bitcoin Core for your bitcoin wallet. Electrum support was necessary for mobile wallets, but wasn't recommended for server deployments. Wallets are migrating to our Kotlin lightning stack, so eclair can now target exclusively server deployments.

Eclair depends on many low-level bitcoind RPCs for fee bumping which aren't available yet in Electrum.

Improved Postgres support

We previously introduced beta support for using PostgreSQL as database backend in eclair v0.4.1. We've fixed some bugs since then and improved the integration, but please note that PostgreSQL support is still in beta. We're actively working on finalizing this integration and making PostgreSQL production-ready in a future release.

Support for future segwit versions

This release adds support for option_shutdown_anysegwit (spec PR available here). Current segwit bitcoin addresses (P2WPKH and P2WSH) only use segwit version 0, but this change lets nodes use bitcoin addresses with other version numbers (taproot will use version 1).

API changes

This release updates a few APIs:

  • Features are now displayed as a map (feature name -> support) in API responses (#1715)
  • Channel internal state tracking force-close scenarios has been enriched (#1728)
  • A --blocking=<bool> option has been added to the payinvoice API (#1751)

We've also updated our internal API DSL, which paves the way for more plugin integration in a future release. Head over to our API documentation for more details.

Miscellaneous improvements and bug fixes

  • Eclair now defaults to Bech32 addresses (#1717)
  • Anchor output commitment feerate is now configurable (#1718)
  • All outputs of revoked anchor output commitments are claimed (there is a subtle edge case, see #1738)
  • Internal codec packages and database versions have been reworked to improve future backwards-compatibility
  • Several improvements have been made to our path-finding algorithms, improving tail latency
  • A bug affecting reconnections to peers has been fixed (#1760)
  • A bug affecting transaction outputs ordering (which can lead to channel force-close) has been fixed (#1806)

Verifying signatures

You will need gpg and our release signing key 7A73FE77DE2C4027. Note that you can get it:

To import our signing key:

$ gpg --import drouinf.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Building

Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 20.04
  • AdoptOpenJDK 11.0.6
  • Maven 3.8.1

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

That should generate eclair-node/target/eclair-node-0.6.0-XXXXXXX-bin.zip with sha256 checksums that match the one we provide and sign in SHA256SUMS.asc

(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 11, we have not tried everything.

Upgrading

This release is fully compatible with eclair v0.5.1. You don't need to close your channels, just stop eclair, upgrade and restart.

Changelog

  • 163700a23 Set version to 0.5.2-SNAPSHOT (#1714)
  • 844829a9b Features should be a Map (#1715)
  • afa378fbb Fix Bolt 3 spec change that broke our test suite (#1719)
  • c4c0248ee Use bech32 addresses by default (#1717)
  • 92e53dc9a Configurable anchor output max commitment feerate (#1718)
  • ea8f94022 Fix potential race condition in node-relay (#1716)
  • 9ff2f833e Refactor and simplify API dsl (#1690)
  • 6364ae335 Reject trampoline payments with expired outgoing cltv (#1727)
  • 277213875 Better handling of TemporaryChannelFailure (#1726)
  • ded5ce0e1 Add metadata to local_channels table (#1724)
  • 8dc64dbaa Fix API regression (#1729)
  • 4bc2dec66 Reorganize internal codecs (master) (#1732)
  • 6d28cbc8e Rework XxxCommitPublished types (#1728)
  • 6e72785d6 fixup! Rework XxxCommitPublished types (#1728) (#1735)
  • 7819faec3 Move protocol codecs to their own package (#1736)
  • 3d3766ef5 Clarify some comments and add tests (#1734)
  • f39718a38 Add high-level architecture diagrams (#1733)
  • f202587e9 Clarify commit tx fee anchor cost (#1721)
  • c37eb1ad5 Handle aggregated anchor outputs htlc txs (#1738)
  • e5429ebdf Avoid visiting vertices multiple times in Dijkstra's algorithm (#1745)
  • c6a76af9d Introduce actor factories (#1744)
  • 75cb777c6 Prevent loops and improve shortest paths perf (#1747)
  • 936f36b9f Refactor Postgres code (#1743)
  • ac2b78437 Fix flaky relay-htlc-add test (#1752)
  • 5729b2891 Add blocking option to payinvoice API (#1751)
  • 89d248929 Remove Electrum support (#1750)
  • b25e5523e Remove Docker test dependency (#1753)
  • 13217610a Make signing payment requests faster (#1754)
  • 5f68bf922 Database nits (#1755)
  • 1e2abaed0 Index database metrics by backend (#1758)
  • 6518bb47a Posgres: fix concurrency in channels db (#1762)
  • 3da0b80cb Add a list of community plugins (#1763)
  • 48c0c4c98 Extract tx publishing from watchers (#1749)
  • 357f7f994 Catch all connection failures and reconnect (#1760)
  • 205653d09 Make db errors fatal in channels (#1764)
  • ccae92d7d (Minor) Minimize conflicts with feature branches (#1765)
  • eb834e252 Do not explicitly provide address for ServerSocket in tests (#1766)
  • d0e79fa31 Add shorter CI timeout (#1769)
  • 15ddc1718 Add trampoline info to auditDB (#1767)
  • 32a86a476 Ignore tests with ServerSocket (#1776)
  • 33d52b653 More database nits (#1773)
  • e092677b9 Rework the db version management (#1775)
  • 4a1dfd2a2 Reenable ServerSocket tests (#1777)
  • e14c40d7c Use proper data type for timestamps in Postgres (#1778)
  • 62dd3932f Use bouncycastle instead of spongycastle (#1772)
  • 3669428b5 Don't log ClosingType object (#1781)
  • 223a14cb5 Remove bintray (#1785)
  • 9e4042fd4 Migrate ZmqWatcher to akka-typed (#1759)
  • 90fbcd32f Index trampoline payments by hash and secret (#1770)
  • 3079cb4fc Remove unused class (#1792)
  • a8d4e07bd Use less strict isolation level for channel meta (#1790)
  • 55b50ecf4 ZMQ actors should subscribe to a single topic (#1793)
  • c64154938 Fix computation of path weight (#1794)
  • 340fd299b Update default path-finding weight ratios (#1796)
  • 55a629f11 Update instructions for downloading Tor Bundle (#1784)
  • 898c17bc7 Remove ConnectionControlPlugin trait (#1797)
  • 0805d51af Do not retry sending if payment gets confirmed on chain (#1799)
  • ec276f8e7 Use satoshi for htlc ordering (#1806)
  • 9c3ee59cf Check blockchain watchdogs regularly (#1808)
  • 91419980b Make payment_secret mandatory (#1810)
  • 1fbede761 Add TCP keep-alive on ZMQ socket (#1807)
  • 5a92f8474 Add support for option_shutdown_anysegwit (#1801)
  • e2b3b4735 Update Tor doc for Windows (#1811)
  • f746ade34 Set version to 0.6.0 (#1812)

Special thanks to @tompro who reworked our internal API DSL.

v0.5.1

3 years ago

This release includes many bug fixes and improvements, a new API and monitoring updates. It is fully compatible with 0.5.0 (and all previous versions of eclair).

Major changes

Improved startup performance

When eclair starts up and restores channels, it makes a lot of calls to bitcoind to check the status of each channel. We improved our calling pattern to greatly reduce the number of calls made when some channels are closing. This is particularly noticeable when the mempool is quite full and you have many channels.

See #1699 for details.

Gossip sync improvements

Most of the bandwidth consumed by lightning nodes is due to gossip (syncing the network graph). When your eclair node has a lot of peers and doesn't use a sync-whitelist, you may end up syncing with many different peers and obtaining redundant information, thus wasting bandwidth. Eclair now only syncs with peers you have a channel with to reduce bandwidth usage.

Anchor outputs

This release contains a lot of changes for the upcoming anchor outputs commitment format:

  • the feerate of the commitment transaction is kept low to improve off-chain channel usage
  • transactions with multiple inputs and outputs are now supported
  • CPFP and RBF utilities have been added to increase the feerate of commitment and htlc transactions

While you can start experimenting with this commitment format, it is still not safe to activate in production. Anchor outputs is a complex and subtle change that requires re-architecting most of our transaction broadcasting logic and utxo management. We are making steady progress towards that, but we're not there yet.

Monitoring changes

Kamon tracing has been removed in this release. It was too invasive in the codebase, generally unused and was costing some bandwidth. We've found that metrics and logs are enough to correctly monitor your eclair node.

Additional metrics to monitor transaction signing have been added. The rate of transaction signatures is a good indicator of how busy your node is.

API changes

This release adds a new path-finding API:

  • findroutebetweennodes lets you inspect the network graph by looking for routes between two nodes (whereas findroute only allowed finding routes between your node and a remote node)

Head over to our API documentation for more details.

Miscellaneous improvements and bug fixes

  • Correctly sort addresses in its node_announcement (#1693)
  • Allow 2016 blocks before unconfirmed channels are forgotten (#1692)
  • Re-emit private channel updates more frequently, improving payments to mobile wallets (#1671)
  • Correctly handle channel failures in private routing hints, fixing an edge case for payments to mobile wallets (#1675)
  • Drop support for initial_routing_sync: this was bandwidth-heavy and now unnecessary (#1683)
  • Fix an MPP-send edge-case (#1685)
  • Fix race condition between outgoing payment and peer disconnection (#1688)
  • Fix race condition between update_fee and shutdown, which could lead to channels stuck in shutdown (#1661)
  • Ensure transactions we publish always meet bitcoin's min_relay_fee (#1687)
  • Fix an edge case where an HTLC failure was not correctly relayed upstream if revoke_and_ack had not been received (#1706)

Verifying signatures

You will need gpg and our release signing key 7A73FE77DE2C4027. Note that you can get it:

To import our signing key:

$ gpg --import drouinf.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Building

Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 19.10
  • AdoptOpenJDK 11.0.6
  • Maven 3.6.3

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

That should generate eclair-node/target/eclair-node-0.5.1-XXXXXXX-bin.zip with sha256 checksums that match the one we provide and sign in SHA256SUMS.asc

(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 11, we have not tried everything.

Upgrading

This release is fully compatible with Eclair v0.5.0. You don't need to close your channels, just stop eclair, upgrade and restart.

Changelog

  • 923ca26f Set version to 0.5.1-SNAPSHOT (#1651)
  • b75f6c36 Fix duplicate commit id in awseb bundle (#1650)
  • 5f9d0d91 Relax cltv-expiry-delta requirement when selecting a channel to relay (#1655)
  • dd8975ae Make ChannelVersion methods public (#1656)
  • 7343283f Add test for duplicate temporary channel id (#1660)
  • 629c2e69 Fix rare race conditions in integration tests (#1653)
  • b477d179 Update build instructions for front (#1658)
  • e369ba9a More aggressively re-emit private channel updates (#1671)
  • d40b321d Blockchain watchdogs use unique actor name (#1667)
  • 9c4ab7d9 Fix HTLC fulfill race condition in integration spec (#1666)
  • 81f15aab Refactor and improve some channel tests (#1654)
  • 54ca2922 Remove kamon tracing (#1662)
  • 34e901db Clarify default relay fee change (#1673)
  • c75d9143 Fix failing reconnection tests (#1678)
  • 0127ace4 Remote failure updating routing hint (#1675)
  • ac054a2b Only sync with channel peers (#1587)
  • d0531883 Truncate hex strings in front logs (#1679)
  • 49023625 Refactor channel test helpers (#1682)
  • f241ef93 Remove support for initial_routing_sync (#1683)
  • 63d972bd Fix a few typos (#1684)
  • 5d3958dd Fix MPP path-finding edge case (#1685)
  • 15c1837d Add tx signing metrics (#1659)
  • 72179de0 PaymentLifecycle handle disconnected peers (#1688)
  • fdeb3ce7 Correctly set gossip sync_complete (#1668)
  • 36e8c056 Shutdown and UpdateFee should not be intertwined (#1661)
  • 2a359c6a Publish txs with min-relay-fee met (#1687)
  • 82e5b596 Sort addresses in node announcement (#1693)
  • 3a94a804 Reject unreasonable remote dust limit (#1694)
  • fdb57b43 Find route between nodes (#1695)
  • 9618a6a7 Add a maximum fee threshold for anchor outputs (#1672)
  • ab89851c Relax single tx input requirements (#1677)
  • 08351508 Update funding timeout fundee (#1692)
  • d9c0b862 Refactor bitcoin clients (#1697)
  • 5163749a [eclair-cli] Use multiplatform escape sequence
  • fa759f1e Fix PaymentLifecycle warning (#1703)
  • c1bf9bd1 Optimize watching for spending txs (#1699)
  • d02b900a Fix annoying compiler warning (#1704)
  • a3c477e3 Address all intellij warnings for Channel.scala (#1705)
  • bf2a35f7 Relay partially failed htlcs when closing (#1706)
  • 5d662fc3 Set anchor output feerates when force-closing (#1702)
  • 8065d0bb Add a serializer for DoSync (#1708)
  • 8d4da2fa Improve channel state tests (#1709)
  • 26468862 fixup! Improve channel state tests (#1709) (#1712)
  • 34796691 Disable jdbc instrumentation by default (#1713)
  • 98bb7be7 Set version to 0.5.1 (#1707)

Thanks to our new contributors, @tompro and @ariskk!

v0.5.0

3 years ago

Eclair v0.5.0

This release includes many exciting new features, API changes as well as several bug fixes and improvements. It is fully compatible with 0.4.2 (and all previous versions of eclair).

Major changes

Cluster mode

Eclair now allows you to scale up one logical lightning node across multiple servers.

Front servers take care of routing table related gossip and syncing requests from peers, which is cpu/bandwidth intensive. The backend server can focus on core channel management. BOLT 1 and BOLT 7 messages are handled in the frontend, while BOLT 2 messages go through and are processed in the backend.

This new feature is key for robust and scalable enterprise deployments. Head over to the documentation for more details.

Blockchain watchdogs

Eclair now includes a blockchain watchdog, that fetches bitcoin headers from various sources in order to detect whether we're being eclipsed.

The current blockchain sources we use are:

  • blockchainheaders.net (headers over DNS)
  • blockstream.info
  • mempool.space

Seed segregation

Eclair now splits your seed into two distinct parts: node_seed.dat and channel_seed.dat.

It makes sense to separate the keys that are used for connection handling and gossip (and have no impact on your funds) from the keys that are used for channel operations (and have a direct, critical impact on your funds).

This change paves the way for future security improvements, such as using hardware wallets for channel keys.

Per-node feerate tolerance

On-chain feerate spikes have a subtle but important impact on the security of your channel funds. Eclair lets you configure the tolerance you have with your peers via the eclair.on-chain-fees.feerate-tolerance configuration parameter.

With this release, you can now override this configuration for specific nodes. This can be useful when one of your peer is trusted and you know it won't try to cheat you (for example because it's one of your own nodes, a family member's node or a friend). You can configure a higher feerate tolerance with these nodes than with nodes you don't know or trust.

Plugin improvements

More plugins hooks have been added to eclair, to allow custom connection management and custom commitment formats. Hats off to @btcontract who was able to implement hosted channels entirely as an eclair plugin!

API changes

This release contains a few improvements to existing APIs:

  • The channelId field has been added to the channel-state-changed websocket event
  • Initial relay fees can be configured when opening a channel with the open API

Head over to our API documentation for more details.

Miscellaneous improvements and bug fixes

  • #1617 lets you redirect traffic automatically from a tor node to a normal node
  • option_static_remotekey is now optionally activated by default

Verifying signatures

You will need gpg and our release signing key 7A73FE77DE2C4027. Note that you can get it:

To import our signing key:

$ gpg --import drouinf.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Building

Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 19.10
  • AdoptOpenJDK 11.0.6
  • Maven 3.6.3

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

That should generate eclair-node/target/eclair-node-0.5.0-XXXXXXX-bin.zip with sha256 checksums that match the one we provide and sign in SHA256SUMS.asc

(*) You may be able to build the exact same artefacts with other operating systems or versions of JDK 11, we have not tried everything.

Upgrading

This release is fully compatible with Eclair v0.4.2. You don't need to close your channels, just stop eclair, upgrade and restart.

Changelog

  • 131b2e01 Add workaround for lnd sync issue (#1563)
  • bffb7a3f Fix race condition in integration test (#1564)
  • 90bf08e6 Update akka to 2.6.10 (#1568)
  • 9c16bb75 Manual watching of peer-connection actor (#1567)
  • b0716aea Make Commitments a trait (#1542)
  • ad17683b (Minor) Fix Features.toString (#1573)
  • 98508f30 Fix empty replyTo in update_relay_fee (#1572)
  • e74f3458 Clarify crossSign helper functions (#1578)
  • 28f72e41 Remote address in ConnectionInfo (#1579)
  • baa22696 Rework features compatibility (#1576)
  • 1f90e5b8 Add per-node feerate tolerance (#1575)
  • 366f9bef Add a case object to get router data (#1581)
  • c5566540 Add blockchain watchdog (#1545)
  • f32e75b0 Segregate the node seed from the channel seed (#1584)
  • 59449bfc Increase docker timeouts for electrumx in tests (#1589)
  • c0d465c4 Fix NodeRelayer flaky test (#1588)
  • e5db3147 Allow plugins to provide broken HTLCs after a restart (#1586)
  • c0e38841 Add a test to ensure NodeParams.nodeId always equals NodeParams.privateKey.publicKey (#1593)
  • 54b589cb Improve MPP-send for direct channels (#1599)
  • 407b330f Remove timedOutOutgoingHtlcs from AbstractCommitments (#1604)
  • 06c95a7a Clarify trampoline to legacy diagram (#1607)
  • 6b32fd06 Allow plugins to force reconnect (#1594)
  • 8bfb9f08 Clean up bitcoinheaders error logs (#1606)
  • 6330e76d [CI] Exclude tests that call external APIs (#1622)
  • 848b4338 Ack htlc settlement commands after writing state (#1615)
  • ed61b577 Improve CustomCommitmentsPlugin methods (#1613)
  • ce73ef3a Allow overriding of Tor target (#1617)
  • 8cfa3f5c Set the same priority for all routing messages (#1624)
  • a2a980c7 Add channelId to websocket event (#1605)
  • 3ebf601a Minor: Less spammy and better logs (#1618)
  • 040e6d08 Retrieve bitcoin's mempool-min-fee (#1608)
  • a4d18456 Set initial relay fees during channel open (#1610)
  • 8d6af350 Add router API for invoice routing hints (#1590)
  • 4e567053 Remove old compatibility workaround for eclair mobile (#1625)
  • 08c21fa5 Distribute connection-handling on multiple machines using akka-cluster (#1566)
  • c13ae5e1 Set min-fee-rate to 2 sat/byte (#1626)
  • 0e5ec4dc Fix bug in enforceMinimumFeerate (#1629)
  • e8b47e14 Move fee provider configuration section (#1631)
  • 0ce993d6 fixup! Distribute connection-handling (#1566) (#1634)
  • c7cc536b Improve channel exceptions (#1585)
  • df7789ed Add metrics to track utxos (#1609)
  • ade17ecb Use a local actorsystem by default (#1636)
  • bbbd2294 Accept remote's closing fee when we have nothing at stake (#1633)
  • 95b34f27 Fix duplicate implicit btc amount conversions (#1637)
  • 810323ca Settle HTLCs revoked commit (#1630)
  • 30735b40 fixup! Settle HTLCs revoked commit (#1630) (#1638)
  • 183bdde0 Activate static_remotekey by default (#1639)
  • dae5eeed Disable the distibuted pubsub extension by default (#1642)
  • 413ee29d Fix htlc origin JSON serialization (#1641)
  • 9425fd4b Make PluginParams a simple trait (#1643)
  • 370fe416 Measure the distribution of payments across nodes (#1644)
  • 5e6c28e8 ElectrumWatcher: fix for unconfirmed txs (#1647)
  • 39d9bfbe Add cluster doc, and packaging improvements (#1646)
  • d44ff85d (Minor) Improve logs (#1648)