Skip to content
Jun 3, 2021
Release v0.4.12-android-phoenix
  • v0.6.0
  • f89b092
  • Compare
    Choose a tag to compare
    Search for a tag
  • v0.6.0
  • f89b092
  • Compare
    Choose a tag to compare
    Search for a tag

@t-bast t-bast released this May 19, 2021

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

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

Assets 6
  • v0.5.1
  • 98bb7be
  • Compare
    Choose a tag to compare
    Search for a tag
  • v0.5.1
  • 98bb7be
  • Compare
    Choose a tag to compare
    Search for a tag

@t-bast t-bast released this Mar 3, 2021

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

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

Assets 6
Feb 5, 2021
Release v0.4.9-android-phoenix
Jan 25, 2021
Release v0.4.8-android-phoenix
Jan 13, 2021
Release v0.4.7-android-phoenix