Eclair v0.4

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](https://github.com/ACINQ/eclair/blob/master/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](https://github.com/ACINQ/eclair/wiki/Usage#command-line-with-eclair-cli) for more information (it works on Windows too). We also added [instructions](https://github.com/ACINQ/eclair/blob/master/docs/Monitoring.md) 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](https://phoenix.acinq.co/) or [Eclair Mobile](https://github.com/ACINQ/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](https://kamon.io/). - 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: - 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: ```sh $ gpg --import drouinf.asc ``` To verify the release file checksums and signatures: ```sh $ 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: ```sh 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)