Eclair v0.5.0
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 thechannel-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:
- from our website: https://acinq.co/pgp/drouinf.asc
- from github user @sstone, a committer on eclair: https://api.github.com/users/sstone/gpg_keys
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
- 131b2e0 Add workaround for lnd sync issue (#1563)
- bffb7a3 Fix race condition in integration test (#1564)
- 90bf08e Update akka to 2.6.10 (#1568)
- 9c16bb7 Manual watching of peer-connection actor (#1567)
- b0716ae Make
Commitments
a trait (#1542) - ad17683 (Minor) Fix
Features.toString
(#1573) - 98508f3 Fix empty replyTo in update_relay_fee (#1572)
- e74f345 Clarify crossSign helper functions (#1578)
- 28f72e4 Remote address in ConnectionInfo (#1579)
- baa2269 Rework features compatibility (#1576)
- 1f90e5b Add per-node feerate tolerance (#1575)
- 366f9be Add a case object to get router data (#1581)
- c556654 Add blockchain watchdog (#1545)
- f32e75b Segregate the node seed from the channel seed (#1584)
- 59449bf Increase docker timeouts for electrumx in tests (#1589)
- c0d465c Fix NodeRelayer flaky test (#1588)
- e5db314 Allow plugins to provide broken HTLCs after a restart (#1586)
- c0e3884 Add a test to ensure
NodeParams.nodeId
always equalsNodeParams.privateKey.publicKey
(#1593) - 54b589c Improve MPP-send for direct channels (#1599)
- 407b330 Remove
timedOutOutgoingHtlcs
from AbstractCommitments (#1604) - 06c95a7 Clarify trampoline to legacy diagram (#1607)
- 6b32fd0 Allow plugins to force reconnect (#1594)
- 8bfb9f0 Clean up bitcoinheaders error logs (#1606)
- 6330e76 [CI] Exclude tests that call external APIs (#1622)
- 848b433 Ack htlc settlement commands after writing state (#1615)
- ed61b57 Improve CustomCommitmentsPlugin methods (#1613)
- ce73ef3 Allow overriding of Tor target (#1617)
- 8cfa3f5 Set the same priority for all routing messages (#1624)
- a2a980c Add channelId to websocket event (#1605)
- 3ebf601 Minor: Less spammy and better logs (#1618)
- 040e6d0 Retrieve bitcoin's mempool-min-fee (#1608)
- a4d1845 Set initial relay fees during channel open (#1610)
- 8d6af35 Add router API for invoice routing hints (#1590)
- 4e56705 Remove old compatibility workaround for eclair mobile (#1625)
- 08c21fa Distribute connection-handling on multiple machines using akka-cluster (#1566)
- c13ae5e Set min-fee-rate to 2 sat/byte (#1626)
- 0e5ec4d Fix bug in enforceMinimumFeerate (#1629)
- e8b47e1 Move fee provider configuration section (#1631)
- 0ce993d fixup! Distribute connection-handling (#1566) (#1634)
- c7cc536 Improve channel exceptions (#1585)
- df7789e Add metrics to track utxos (#1609)
- ade17ec Use a local actorsystem by default (#1636)
- bbbd229 Accept remote's closing fee when we have nothing at stake (#1633)
- 95b34f2 Fix duplicate implicit btc amount conversions (#1637)
- 810323c Settle HTLCs revoked commit (#1630)
- 30735b4 fixup! Settle HTLCs revoked commit (#1630) (#1638)
- 183bdde Activate static_remotekey by default (#1639)
- dae5eee Disable the distibuted pubsub extension by default (#1642)
- 413ee29 Fix htlc origin JSON serialization (#1641)
- 9425fd4 Make PluginParams a simple trait (#1643)
- 370fe41 Measure the distribution of payments across nodes (#1644)
- 5e6c28e ElectrumWatcher: fix for unconfirmed txs (#1647)
- 39d9bfb Add cluster doc, and packaging improvements (#1646)
- d44ff85 (Minor) Improve logs (#1648)