Skip to content

@sstone sstone released this Jan 31, 2020 · 13 commits to master since this release

This release includes many improvements, as well as a few bug fixes. Its is fully compatible with 0.3.2 (and all previous versions of eclair).

Major changes

Multipart payments

Eclair now supports Multipart Payments (see lightningnetwork/lightning-rfc#643): payments can now be split into smaller sub-payments sent on different channels, the whole process being "atomic" (they will all succeed, or they will all fail). This is a huge UX improvement for the capacity issue that you encounter when you want to send "large" payments over LN and cannot find a single route with enough capacity along all hops.

MPP is disabled by default for this release, but you can easily enable it by changing eclair.features in your eclair.conf file. If enabled, Eclair will support both sending and receiving MPP. A first splitting algorithm has been implemented to automatically split payments based on your channels and network information. You can also use the CLI to decide on how to split yourself.

More details on our wiki on how to use MPP.

Deterministic builds

The core eclair library (used in our server, desktop and mobile nodes) can now be built deterministically from source. This is the first step towards deterministic builds for our Eclair Mobile and Phoenix applications.

Trampoline Routing Preview

Eclair now supports Trampoline Routing (see lightningnetwork/lightning-rfc#654), which allows Lightning Nodes to send payments without having to compute a complete route to the destination, by delegating route computation to some of the "trampoline" nodes that relay payments.

Trampoline is still a proposal that has not been merged in the Lightning BOLTs, and is not activated in Eclair's default configuration.

API changes

The sendtoroute API has changed to accommodate MPP and Trampoline.
The format of the payment events has also slightly changed to include more information.
Head over to our API documentation for more details.

Miscellaneous improvements and bug fixes

A few interop bugs with lnd and c-lightning related to channel range queries have been fixed (see #1292 and #1279).

We've also fixed issues related to the broadcast of public node information where local changes to a node configuration (IP address, fee policy, ...) were not broadcast correctly (and would not be found on Lightning explorers for example).

We've done the groundwork to extend any Lightning message with TLV extensions, which allows easy backwards-compatible experimentation on mainnet. See lightningnetwork/lightning-rfc#714 for more details.

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


Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 19.10
  • AdoptOpenJDK 11.0.6
  • Maven 3.6.3

You should then be able to generate an eclair-core.jar with a sha256 checksum 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.


This release is fully compatible with Eclair v0.3.2. You don't need to close your channels, just stop eclair, upgrade and restart.

However, if your eclair.conf file contained a non-default value for eclair.local-features or, you will need to update your configuration. Those two fields have been merged into a single eclair.features. See Flat features (#1253) for more details.


  • Fix force-close next commit then fulfill (#1299)
  • Trampoline/MPP API changes (#1297)
  • Support deterministic build of eclair-core artifact on ubuntu (#1295)
  • Fix ChannelUpdate rebroadcast (#1294)
  • UpfrontShutdownScript field (#1290)
  • Clarify ChannelsDb htlc info method (#1291)
  • Trampoline/MPP DB changes (#1287)
  • Turn off SSL when custom Electrum server address is a hidden service (#1278)
  • Fix availableForSend/Receive (#1293)
  • Channel queries: Encode empty arrays as UNCOMPRESSED (#1292)
  • Allow deactivating MPP (#1289)
  • Read fee provider timeout from config correctly (#1288)
  • Improve NodeRelayer errors (#1261)
  • Peer: use a minimum reconnection delay of 200 ms (#1285)
  • Add networks to init message (#1254)
  • Better Non-segwit UTXOs assert message. (#1258)
  • Provide solution to "non-segwit UTXO found." (#1256)
  • Make sure that ids chunks strictly cover the requested range, without gaps (#1279)
  • Broadcast gossip regardless of timestamp filters (#1284)
  • MPP: allow using unannounced channels (#1283)
  • Improve error message when invalid funding tx (#1282)
  • Find htlc by id method (#1266)
  • Fix Sphinx privacy leak (#1247)
  • Dependencies: use bitcoin-lib 0.17 (#1277)
  • Electrum improvements (#1164)
  • Add contributing instructions (#1252)
  • Fix how we split channel ids in channel queries (#1274)
  • Always encode empty list of scids as uncompressed (#1276)
  • Avoid sending PaymentSecret/MPP in Init (#1273)
  • Restore missing 'db.close()' methods (#1272)
  • Flat features (#1253)
  • Disable Trampoline-MPP to non-Phoenix recipients (#1271)
  • Remove mockito from switchboard tests (#1267)
  • More consistency in sending messages during sync (#1268)
  • Remove repeated code (#1265)
  • Added some instructions for TOR auth (#1262)
  • Improve CommandSend type (#1260)
  • Relay Trampoline payments (#1220)
  • Update Maven (3.6.3) (#1259)
  • Add synchronization when locking database connection (#1200)
  • Add HasHtlcIdCommand trait (#1245)
  • Better randomization of reconnection delay (#1250)
  • Minor: missing log category in peer (#1241)
  • MPP: don't retry if failure comes from final recipient (#1246)
  • Minor: ignore "disconnecting" message in Channel (#1231)
  • Add a configurable time-out to onchain fee provider requests (#1244)
  • Fix MPP flaky test (#1243)
  • added blank lines to minimize conflicts (#1236)
  • Set akka.loglevel to DEBUG (#1235)
  • Fix outgoing payments order in payments overview (#1232)
  • Added a 'category' in logs (#1227)
  • Handle chain re-org in balance computation (#1228)
  • Fix onion codec test (#1229)
  • High level payments overview method (#1225)
  • Rework truncated integers codecs (#1212)
  • Extended doHandle to other messages in MultiPartHandler (#1226)
  • Avoid incoherent payment request features. (#1222)
  • Fix MPP post-restart HTLC clean-up (#1224)
  • (waiting-since-in-blocks) Improved tracing of single/multi-part payments (#1218)
  • Add networkstats API call to allow display of network stats (#1221)
  • MPP routing improvements (#1219)
  • PaymentLifecycle should tell the router to ignore route prefix (#1217)
  • Fallback ElectrumClient to TLS 1.2 if 1.3 is not supported (#1216)
  • Fix /allupdates API (#1187)
  • Refactor: move channel relaying to a ChannelRelayer actor. (#1215)
  • Update invoice test vectors. (#1213)
  • Add trampoline onion support (#1209)
  • Payment Request: speed up node id computation (#1203)
  • Ignore NPE in tests (#1211)
  • Fixed race condition on payment handler init (#1208)
  • Fixed composition of receive handlers (#1207)
  • Multi part payments (#1153)
  • Minor: fixed format in exception message (#1199)
  • (tag: btcpay) More metrics (#1196)
  • Add 'getnewaddress' API (#1190)
  • Fix codecov unknown tag (#1181)
  • Refactor Upstream/Origin (#1176)
  • Fix ignored duplicate amounts in htlc-value-in-flight (#1180)

Thank you @btcontract @CandleHater !

Assets 6
You can’t perform that action at this time.