Skip to content

Latest commit

 

History

History
208 lines (155 loc) · 16.4 KB

eclair-v0.11.0.md

File metadata and controls

208 lines (155 loc) · 16.4 KB

Eclair v0.11.0

This release adds official support for Bolt 12 offers and makes progress on liquidity management features (splicing, liquidity ads, on-the-fly funding). We also stop accepting channels that don't support anchor outputs and update our dependency on Bitcoin Core.

We're still actively working with other implementations to finalize the specification for some of these experimental features. You should only activate them if you know what you're doing, and are ready to handle backwards-incompatible changes!

This release also contains various performance improvements, more configuration options and minor bug fixes.

Major changes

Bolt 12

After years of development, Bolt 12 was finally accepted to the BOLTs! Eclair had always stayed up-to-date with specification changes: this release thus contains full support for Bolt 12 payments.

If you'd like to pay a Bolt 12 offer, simply use the payoffer API:

./eclair-cli payoffer --offer=<lno...> --amountMsat=<amount> --blocking=true

If you want to generate a Bolt 12 offer, this is slightly more complicated. Bolt 12 uses blinded paths to guarantee that your identity doesn't leak when receiving payments. However, we haven't yet figured out how to create default blinded paths that work for any topology, so instead of providing unsafe defaults, we let node operators dynamically configure their blinded paths using plugins. The bolt 12 tipjar plugin is a good example of how to configure your node.

We will add more API support in the next versions of eclair to simplify this process for standard use-cases.

Splicing

We've improved our implementation of splicing, by relying on the now official quiescence feature and adding RBF support (#2887).

We're still using experimental feature bits and messages in this release, as we're missing support for splicing on public channels and are waiting for other implementations to be ready for cross-compatibility tests. We hope that splicing will officially be supported in the next release. Meanwhile, you can experiment with splicing between eclair nodes on unannounced channels.

Liquidity Ads

This release includes an early prototype for liquidity ads. Liquidity ads allow nodes to sell their liquidity in a trustless and decentralized manner. Every node advertises the rates at which they sell their liquidity, and buyers connect to sellers that offer interesting rates.

The liquidity ads specification is still under review and will likely change. This feature isn't meant to be used on mainnet yet and is thus disabled by default.

Update minimal version of Bitcoin Core

With this release, eclair requires using Bitcoin Core 27.2. Newer versions of Bitcoin Core may be used, but have not been extensively tested.

This version introduces a new coin selection algorithm called CoinGrinder that will reduce on-chain transaction costs when feerates are high.

To enable CoinGrinder at all fee rates and prevent the automatic consolidation of UTXOs, add the following line to your bitcoin.conf file:

consolidatefeerate=0

Incoming obsolete channels will be rejected

Eclair will not allow remote peers to open new static_remote_key channels. These channels are obsolete, node operators should use option_anchors channels now. Existing static_remote_key channels will continue to work. You can override this behaviour by setting eclair.channel.accept-incoming-static-remote-key-channels to true.

Eclair will not allow remote peers to open new obsolete channels that do not support option_static_remotekey.

HTLC endorsement for channel jamming

Channel jamming mitigations have been under active research for the past year, leading to a proposal based on local per-node reputation. A first step towards evaluating the reputation algorithms is to relay an "endorsement" field on outgoing payments, as detailed in bLIP 4. Eclair implements bLIP 4 and will relay endorsement signals, which will allow network-wide experimentation of reputation algorithms in the future.

See #2884 for more details.

On-the-fly funding

Payments sent to mobile wallets often fail because the recipient doesn't have enough inbound liquidity to receive it. This release contains an implementation of our proposed protocol to negotiate an on-the-fly liquidity purchase when receiving such payments. This protocol builds on top of experimental BOLT features such as splicing and liquidity ads and is used in production in the latest version of Phoenix.

This isn't meant to be activated by default on eclair nodes, but if you want to run an LSP for mobile wallets, you may be interested in this feature. This is still experimental at this point and is waiting for other implementations, so use at your own risk!

API changes

  • channelstats now takes optional parameters --count and --skip to control pagination. By default, it will return the first 10 entries (#2890)
  • createinvoice now takes an optional --privateChannelIds parameter that can be used to add routing hints through private channels (#2909)
  • nodes allows filtering nodes that offer liquidity ads (#2848)
  • rbfsplice lets any channel participant RBF the current unconfirmed splice transaction (#2887)

Miscellaneous improvements and bug fixes

This release contains multiple performance improvements related to RPC calls made to bitcoind, mostly when many channels are being force-closed.

We also update our secp256k1 library to the 0.6.0 release.

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 22.04
  • AdoptOpenJDK 11.0.22
  • Maven 3.9.2

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

That should generate eclair-node/target/eclair-node-<version>-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 previous eclair versions. You don't need to close your channels, just stop eclair, upgrade and restart.

Changelog

  • 145d0f4 Back to dev (#2832)
  • 82dbbdb Use bitcoin-lib 0.33 (#2822)
  • c866be3 Fix flaky test (#2833)
  • 1b3e4b0 Allow relaying messages to self (#2834)
  • 40ef365 Fixup quiescence timeout when initiating splice (#2836)
  • c8184b3 Update the CLI tools (#2837)
  • 7ab42bf Remove redundant check on remoteScriptPubkey (#2844)
  • c6e586a Relax assumptions about gossip_queries (#2842)
  • 35295af Update Bitcoin Core to v26.1 (#2851)
  • c493493 Implicit node id in offers with blinded paths (#2852)
  • bbd52fa Fix TransactionsSpec tests (#2857)
  • b73a009 Cleanup of RouteBlinding feature (#2856)
  • 414f728 Accept onion failure without a channel_update (#2854)
  • 3bb5f3e Unwrap blinded routes that start at our node (#2858)
  • 40f13f4 (Minor) Log local inputs in interactive-tx (#2864)
  • f0e3985 Add paysCommitTxFees flag to LocalParams (#2845)
  • 741ac49 Register can forward messages to nodes (#2863)
  • 3277e6d Add EncodedNodeId for mobile wallets (#2867)
  • d960266 Fix flaky test for punishing a published revoked commit (#2871)
  • 71bad3a Update Bitcoin Core to v27.1 (#2862)
  • c53b32c Reject unspendable inputs in interactive-tx (#2870)
  • 791edf7 Improve Origin and Upstream (#2872)
  • 9762af8 Update test vector for onion messages (#2876)
  • 47c7a45 Monitor onion messages (#2877)
  • eaa9e40 Activate route blinding and quiescence features (#2878)
  • 14a4ea4 Upgrade kamon to 2.7.3 (#2879)
  • f8d6acb Add logs to onion message relay (#2880)
  • 86373b4 Reject new static_remote_key channels (#2881)
  • 83d790e Add incoming peer to Hot.Channel (#2883)
  • e298ba9 Offer test vectors (#2723)
  • 7aacd4b Add HTLC endorsement/confidence (#2884)
  • c45d278 Pagination for the channelstats RPC (#2890)
  • c440007 Fix failure to launch from directory with space in it (#2886)
  • fcd88b0 Wake up wallet nodes before relaying messages or payments (#2865)
  • 8370fa2 Reduce the number of RPC calls to bitcoind during force-close (#2902)
  • d726ca1 Update CI test with latest bitcoin core (switch from autotools to cmake) (#2906)
  • 1ff5697 Use bitcoin-lib 0.34 (#2905)
  • a710922 Ignore LND mutual close errors instead of force-closing (#2907)
  • 7b25c5a Include faulty TLV tag in InvalidOnionPayload error (#2908)
  • 885b45b Allow including routing hints when creating Bolt 11 invoice (#2909)
  • cfdb088 Extensible Liquidity Ads (#2848)
  • db8290f Add recommended_feerates optional message (#2860)
  • de42c8a Implement on-the-fly funding based on splicing and liquidity ads (#2861)
  • f11f922 Add support for funding_fee_credit (#2875)
  • 5e9d8c3 Don't drop wallet_node_id when wake-up is disabled (#2916)
  • 11b6a52 Take min feerate into account for recommended fees (#2918)
  • 2a3d7d7 Update Bolt 12 test vectors (#2914)
  • 1b749e1 Remove support for splicing without quiescence (#2922)
  • cf6b4e3 Add basic liquidity purchase information to funding txs (#2923)
  • b8e6800 Enforce recommended feerate for on-the-fly funding (#2927)
  • e09c830 Automatically disable from_future_htlc when abused (#2928)
  • f1e0735 Fix comment (#2930)
  • 13d4c9f Add support for RBF-ing splice transactions (#2925)
  • 96d0c9a Add detailed error message when splice feerate is incorrect (#2920)
  • 4ca8ea0 Use shared input's txOut in shouldSignFirst (#2934)
  • f4efd64 Don't relay buggy extra payments (#2937)
  • f02c98b Make cluster serialization support unknown messages (#2938)
  • 5410146 Add force-close notification (#2935)
  • 51defce Add logs for balance estimate (#2939)
  • a0b5834 Update Bitcoin Core to 27.2 (#2940)
  • 47fdfae Simplify trampoline test helpers (#2942)
  • 02abc3a Allow plain outgoing_node_id in blinded payment_relay (#2943)
  • a624b82 Use bitcoin-lib 0.35 (#2950)
  • ab94128 Refactor trampoline-to-legacy payments (#2948)
  • 0d2d380 Rename blinding to pathKey (#2951)
  • 304290d Various refactoring for trampoline blinded paths (#2952)
  • f47acd0 Check HTLC output status before funding HTLC tx (#2944)