Eclair v0.4.1 Release Notes

Release Date: 2020-07-15 // almost 4 years ago
  • ๐Ÿš€ This release includes many exciting new features, API changes as well as several bug fixes and improvements.
    Its is fully compatible with 0.4 (and all previous versions of eclair).

    Major changes

    Static Remote Key

    This release adds support for option_static_remotekey.
    โšก๏ธ This removes the key rotation at each update of the commitment, and allows simpler funds recovery in case of backup loss: channel outputs will directly pay to one of your bitcoin wallet addresses.

    0๏ธโƒฃ This option is disabled by default, and will only be available for new channels when both peers activate the feature.
    To enable it, add the following lines to your eclair.conf:

    eclair.features {
        option_static_remotekey = optional
    }
    

    You can verify that this is activated with the getinfo API, which now returns the list of features:

    "features": { "activated": [{ "name": "basic\_mpp", "support": "optional" }, { "name": "initial\_routing\_sync", "support": "optional" }, { "name": "option\_data\_loss\_protect", "support": "optional" }, { "name": "gossip\_queries\_ex", "support": "optional" }, { "name": "payment\_secret", "support": "optional" }, { "name": "var\_onion\_optin", "support": "optional" }, { "name": "gossip\_queries", "support": "optional" }], "unknown": [] }
    

    ๐Ÿ‘Œ Improvements to path-finding and MPP

    We've made several improvements to the path-finding algorithm. It now takes into account your channel's current balance more accurately when selecting a route.

    ๐Ÿš€ The MPP split algorithm has been rewritten from the ground up, inspired by flow algorithms (see #1427 for details). MPP is now enabled by default (it was introduced in eclair v0.3.3 but was opt-in) for all eclair nodes and will soon be available on eclair-mobile (note that Phoenix has had MPP support since its first release).

    MPP synergizes well with trampoline: trampoline nodes aggregate incoming MPP and re-split them more efficiently on outgoing channels.

    ๐Ÿ‘ PostgreSQL beta support

    ๐Ÿ‘ Thanks to @rorp, eclair now supports PostgreSQL as a database backend!

    0๏ธโƒฃ By default eclair still uses SQLite, but you can follow the instructions here to use PostgreSQL instead.

    We're looking for feedback on how well this is working for you, so don't hesitate to try it out and let us know!

    Human-readable features

    Say goodbye to hex-encoded features: we've changed the format to be human-readable.

    ๐Ÿ”ง Here is how they are configured by default:

    eclair.features {
      initial_routing_sync = optional
      option_data_loss_protect = optional
      gossip_queries = optional
      gossip_queries_ex = optional
      var_onion_optin = optional
      payment_secret = optional
      basic_mpp = optional
    }
    

    Note that if you want to disable features, there is a trick. You need to first set the features to null and then provide your set of chosen features, for example (in your eclair.conf):

    eclair.features : null
    eclair.features {
      option_data_loss_protect = optional
      var_onion_optin = optional
      payment_secret = optional
      basic_mpp = optional
      option_static_remotekey = optional
    }
    

    You can verify what features have been set with the getinfo API:

    eclair-cli getinfo { "version": "0.4.1-SNAPSHOT-xxxxxxx", "nodeId": "...", "alias": "...", "color": "...", "features": { "activated": [{ "name": "basic\_mpp", "support": "optional" }, { "name": "initial\_routing\_sync", "support": "optional" }, { "name": "option\_data\_loss\_protect", "support": "optional" }, { "name": "gossip\_queries\_ex", "support": "optional" }, { "name": "payment\_secret", "support": "optional" }, { "name": "var\_onion\_optin", "support": "optional" }, { "name": "gossip\_queries", "support": "optional" }], "unknown": [] }, "chainHash": "...", "network": "...", "blockHeight": 1, "publicAddresses": [], "instanceId": "..."}
    

    Feerate mismatch

    When you disagree with your peer about on-chain fee rates, your funds may be at risk if your peer is malicious.
    For this reason, eclair has always been closing channels on your behalf before the situation gets too dangerous.

    ๐Ÿ”ง Your tolerance to fee rate mismatch was previously configured via eclair.on-chain-fees.max-feerate-mismatch.
    ๐Ÿ”ง You can now independently configure your tolerance to either lower or higher fee rates:

    eclair.on-chain-fees.feerate-tolerance {
      ratio-low = 0.5 // will allow remote fee rates as low as half our local feerate
      ratio-high = 10.0 // will allow remote fee rates as high as 10 times our local feerate
    }
    

    0๏ธโƒฃ It's less dangerous if your peer overestimates the fees than if she underestimates it, hence the different default values.

    We've also made changes to reduce the number of unnecessary close, by only closing channels when there are funds at risk in pending HTLCs. If your channel doesn't have pending HTLCs, eclair will safely ignore the remote fee rate and won't close the channel.

    API changes

    ๐Ÿš€ This release is packed with new APIs and improvements to existing ones:

    • โšก๏ธ batch channel updates (updaterelayfee, close, forceclose)
    • nodes to lookup node announcements
    • ๐Ÿ‘ better channelstats
    • onchainbalance, sendonchain and onchaintransactions to interact with layer-1
    • more data returned in most API responses

    ๐Ÿ“š Head over to our API documentation for more details.

    ๐Ÿ›  Miscellaneous improvements and bug fixes

    • ๐Ÿ‘ More metrics for an even better monitoring experience with Kamon.
    • Various improvements to connection handling and reconnection logic.
    • โšก๏ธ Updates to security parameters default values.
    • Various improvements on fee estimation.
    • ๐Ÿ‘ Better errors for trampoline payments.
    • ๐ŸŒฒ Logging improvements.

    ๐Ÿ‘Œ 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.1-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.4. You don't need to close your channels, just stop eclair, upgrade and restart.

    ๐Ÿ”„ Changelog