Eclair v0.4 Release Notes

Release Date: 2020-07-15 // over 3 years ago
  • ๐Ÿš€ This release includes major upgrades to our core libraries (Scala and Akka), as well as several bug fixes and improvements.
    Its is fully compatible with 0.3.4 (and all previous versions of eclair).

    Major changes

    Scala 2.13, Akka 2.6

    โšก๏ธ Update from Scala 2.11 and Akka 2.4 to Scala 2.13 and Akka 2.6.

    Scala 2.13 brings a lot of improvements, among which:

    • ๐Ÿ‘ better performance
    • tons of improvements for standard collections
    • faster compile times
    • ๐Ÿ‘ better support for deterministic builds

    Akka 2.6 contains a couple years of steady improvements over Akka 2.4:

    • ๐Ÿ‘ better performance
    • ๐Ÿ‘ better APIs and the introduction of typed actors
    • production-ready akka-cluster

    โšก๏ธ Eclair will incrementally take advantage of the new features these updates have to offer.

    Bitcoin 0.19.1

    โž• Add support for Bitcoin Core 0.19.1.

    The most notable change impacting eclair is that fundrawtransaction does not fail when providing a too low feerate, but instead bitcoin will fail when broadcasting the transaction with sendrawtransaction. This is correctly handled by eclair v0.4.

    ๐Ÿ—„ GUI deprecation

    ๐Ÿš€ eclair-node-gui is being deprecated and will is not published with this release. Source code will still remain available for some time, and building the GUI is very easy (check BUILD.md for more details, but basically mvn install -DskipTests is enough to build eclair-node and eclair-node-gui).

    ๐Ÿ We strongly encourage people to use the API instead, see here for more information (it works on Windows too). We also added instructions on how to setup a monitoring endpoint, where you can create your own graphs and alerts.

    โœ… Our GUI was built for demonstration and testing purposes, typically with a few nodes on single machine and in regtest mode. Using it as a Lightning wallet or to run routing nodes on mainnet is a very bad fit:

    • if you're looking for a Lightning wallet, consider using Phoenix or Eclair Mobile instead.
    • if you want to run a routing node, then it should be running on a machine that is reliable, secure, maintained, reachable from the internet and online most of the time, i.e probably not your desktop PC.
    • having a "bitcoin-like" GUI is misleading: if your Bitcoin node is offline it has a minimal impact on the Bitcoin network and you can still "receive" funds. When you start it again it catches up on the blocks and transactions that it has missed, so having a Bitcoin wallet or node that is often offline is fine. But when your Lightning node is offline it cannot send, receive or relay transactions. Your channels will be tagged as disabled and other nodes will have to route around you and will likely avoid you in the future because of your unreliability.

    ๐Ÿ›  Miscellaneous improvements and bug fixes

    • ๐Ÿ‘ More metrics for an even better monitoring experience with Kamon.
    • ๐Ÿ‘Œ Improvements to our p2p handling of incoming and outgoing connections.
    • ๐Ÿ›  Fixed some race conditions in tests that were leading to random build failures.
    • โž• Added more tests around mempool introspection to extract preimages early.
    • ๐Ÿ›  UTXOs weren't always correctly unlocked in the Bitcoin Core wallet in case funding failed (fixed in #1404)

    ๐Ÿ‘Œ 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.4-XXXXXXX-bin.zip with sha256 checksums that matches 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.3.4. You don't need to close your channels, just stop eclair, upgrade and restart.

    ๐Ÿ”„ Changelog

    • ๐Ÿ‘‰ Use correct type for parameters in ExtendedBitcoinClient (#1248)
    • ๐Ÿ‘Œ Support additional TLV records in SendPayentRequest (#1367)
    • ๐Ÿšš Move router handlers to separate files (#1352)
    • Do not reconnect immediately if we keep getting disconnected (#1371)
    • ๐Ÿ‘ Better tracking of channels count metric (#1369)
    • โช Revert Electrum Tor disabling SSL check (#1376)
    • โž• Add logback config for eclair-node tests (#1377)
    • Gossip metrics (#1372)
    • โž• Add a rejection for update when channel is pruned (#1378)
    • ๐Ÿ‘‰ Use sender instead of providing actor refs (#1379)
    • โšก๏ธ Send update_fee on reconnection (#1383)
    • ๐Ÿ”จ Refactor transaction generation errors (#1366)
    • ๐Ÿ›  fixup! Use sender instead of providing actor refs (#1379) (#1386)
    • Router channel balance (#1382)
    • โฌ†๏ธ Prepare upgrade to scala 2.13 and akka 2.6 (#1389)
    • โช Revert "Use sender instead of providing actor refs (#1379)" (#1391)
    • ๐Ÿ›  Fix race condition in router tests (#1392)
    • โšก๏ธ Update to scala 2.13 and akka 2.6 (incremental) (#1390)
    • โฌ‡๏ธ Downgrade to scala 2.13.1 (#1394)
    • ๐Ÿ‘Œ Support bitcoin-0.19.1 (#1380)
    • โœ… Test preimage extraction from mempool (#1387)
    • โœ‚ Remove unused attribute in Peer (#1397)
    • โœ… Disable backup handler in tests (#1399)
    • ๐Ÿ›  Fix BitcoinCoreWalletSpec (#1401)
    • Platform.currentTime->System.currentTimeMillis (#1403)
    • Delegate client creation to a specialized actor (#1400)
    • ๐Ÿ“š Monitoring documentation (#1402)
    • Validate channel_announcement sigs early (#1406)
    • Unlock transaction inputs if tx cannot be published (#1404)
    • โšก๏ธ Update README (#1405)
    • Minor: catch harmless unhandled events (#1407)