Eclair v0.3.4

This release includes many improvements, as well as a few bug fixes. Its is fully compatible with 0.3.3 (and all previous versions of eclair). # Major changes ### Wumbo channels Eclair now supports wumbo channels (see https://github.com/lightningnetwork/lightning-rfc/pull/596). To activate it, update your `eclair.conf` and set `eclair.features = 080a8a` (note that if you chose to enable/disable a different set of features from the recommended ones, that value will be slightly different). You also need to set an upper limit on channels size in `eclair.max-funding-satoshis`. Once that's configured, you can open channels above the previous 0.167 BTC limit (if your peer accepts it). Be cautious though; bigger channels may attract more attackers towards your node. Make sure your node deployment is secure before you start opening many large channels. ### Packaging rework Eclair is now packaged as a `zip` folder (see https://github.com/ACINQ/eclair/pull/1307). This new packaging allows us to provide verifiable builds for `eclair-node` and `eclair-node-gui`. It also brings us one step closer to verifiable builds for `eclair-mobile` and `phoenix`. Note that you won't find a capsule jar as before. To start `eclair` you should now use one of the scripts provided in the package. ### GUI deprecation `eclair-node-gui` is being deprecated and will not be published with future releases. 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 https://github.com/ACINQ/eclair/wiki/Usage#command-line-with-eclair-cli for more information (it works on Windows too). 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 nodes 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. # Miscellaneous improvements and bug fixes We've done a lot of work on our metrics and logs; make sure to leverage those to improve your node's monitoring. We've added support for multiple Bitcoin wallets (see https://github.com/ACINQ/eclair/pull/1334). We've found and fixed a few more gossip bugs; if you previously had issues getting your node's information on explorers, this release should fix it. We've also fixed many small bugs and heavily refactored parts of the codebase, which paves the way for more scalability and performance improvements. # 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.3.4-24aa710-bin.zip` and `eclair-node-gui/target/eclair-node-gui-0.3.4-24aa710-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.3. You don't need to close your channels, just stop eclair, upgrade and restart. # Changelog * Electrum: allow watcher to watch for mempool transactions (#1298) * Notify change in balance when updating network fee (#1301) * Fix AuditDb flaky test (#1304) * Better logging for transport handler (#1303) * Fix networkstats API call (#1309) * Payment request: ignore fields with invalid length (#1308) * Node relayer faster fulfill (#1306) * Electrum: add support for socks5 proxies (#1315) * Re-send ChannelUpdate to private channels (#1317) * Fix random trampoline test failure (#1318) * SendToRoute with routing hints (#1325) * Allow receiving non-standard payments (#1326) * Add log for normal application shutdown. (#1329) * Rework packaging (#1307) * Make Commitments method return Try[] (#1311) * Channel sends typed responses (#1321) * Refactor MultiPartPaymentFSM (#1324) * Make UpfrontShutdownScript a TLV record (#1333) * Wumbo support (#1323) * Avoid illegal reflective operation during startup (#1313) * fixup! Use correct assembly descriptors and use bash explicitly. (#1337) * Send ping if no message received from peer for 30s (#1340) * Payment metrics (#1312) * Update kanela-agent 1.0.1->1.0.5 (#1341) * Allow users to have multiple wallets in bitcoind (#1334) * Add more information to GetInfoResponse (#1344) * Re-send ChannelUpdate on reconnection (fixes 8afc00d) (#1342) * Funder reserve for future fee increase (#1319) * Minor: Reduced some log levels (#1348) * Harden requirements on htlc-minimum-msat (#1339) * Centralize metrics per package (#1350) * Improve AddHtlcFailed (#1349) * Split the `Peer` in two (#1347) * Minor: removed unused code (#1353) * fixup! Support for Tor onion services (#736) (#1356) * BUILD: mention that Docker is needed for tests (#1358) * fixup! Split the `Peer` in two (#1347) (#1357) * Use CLTV as tie-breaker for offered htlc output sorting (#790) * Add wallet balance metric (#1355) * fixup! Use CLTV as tie-breaker for offered htlc output sorting (#790) (#1360) * PostRestartHtlcCleaner handle channel closing (#1338) * fixup! Harden requirements on htlc-minimum-msat (#1339) (#1362) * fixup! Harden requirements on htlc-minimum-msat (#1339) (#1363) * fixup! Split the `Peer` in two (#1347) (#1365)