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 (whereasfindroute
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
andshutdown
, which could lead to channels stuck inshutdown
(#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:
- 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.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
- 923ca26 Set version to 0.5.1-SNAPSHOT (#1651)
- b75f6c3 Fix duplicate commit id in awseb bundle (#1650)
- 5f9d0d9 Relax cltv-expiry-delta requirement when selecting a channel to relay (#1655)
- dd8975a Make ChannelVersion methods public (#1656)
- 7343283 Add test for duplicate temporary channel id (#1660)
- 629c2e6 Fix rare race conditions in integration tests (#1653)
- b477d17 Update build instructions for front (#1658)
- e369ba9 More aggressively re-emit private channel updates (#1671)
- d40b321 Blockchain watchdogs use unique actor name (#1667)
- 9c4ab7d Fix HTLC fulfill race condition in integration spec (#1666)
- 81f15aa Refactor and improve some channel tests (#1654)
- 54ca292 Remove kamon tracing (#1662)
- 34e901d Clarify default relay fee change (#1673)
- c75d914 Fix failing reconnection tests (#1678)
- 0127ace Remote failure updating routing hint (#1675)
- ac054a2 Only sync with channel peers (#1587)
- d053188 Truncate hex strings in front logs (#1679)
- 4902362 Refactor channel test helpers (#1682)
- f241ef9 Remove support for initial_routing_sync (#1683)
- 63d972b Fix a few typos (#1684)
- 5d3958d Fix MPP path-finding edge case (#1685)
- 15c1837 Add tx signing metrics (#1659)
- 72179de PaymentLifecycle handle disconnected peers (#1688)
- fdeb3ce Correctly set gossip sync_complete (#1668)
- 36e8c05 Shutdown and UpdateFee should not be intertwined (#1661)
- 2a359c6 Publish txs with min-relay-fee met (#1687)
- 82e5b59 Sort addresses in node announcement (#1693)
- 3a94a80 Reject unreasonable remote dust limit (#1694)
- fdb57b4 Find route between nodes (#1695)
- 9618a6a Add a maximum fee threshold for anchor outputs (#1672)
- ab89851 Relax single tx input requirements (#1677)
- 0835150 Update funding timeout fundee (#1692)
- d9c0b86 Refactor bitcoin clients (#1697)
- 5163749 [eclair-cli] Use multiplatform escape sequence
- fa759f1 Fix PaymentLifecycle warning (#1703)
- c1bf9bd Optimize watching for spending txs (#1699)
- d02b900 Fix annoying compiler warning (#1704)
- a3c477e Address all intellij warnings for Channel.scala (#1705)
- bf2a35f Relay partially failed htlcs when closing (#1706)
- 5d662fc Set anchor output feerates when force-closing (#1702)
- 8065d0b Add a serializer for
DoSync
(#1708) - 8d4da2f Improve channel state tests (#1709)
- 2646886 fixup! Improve channel state tests (#1709) (#1712)
- 3479669 Disable jdbc instrumentation by default (#1713)
- 98bb7be Set version to 0.5.1 (#1707)