Skip to content

Releases: ACINQ/eclair

Eclair v0.6.1

19 Jul 14:33
d3ae323

Choose a tag to compare

Eclair v0.6.1

This release makes major performance improvements, includes a few bug fixes and several new features.
It is fully compatible with 0.6.0 (and all previous versions of eclair).

Major changes

Performance improvements

Sqlite

Eclair now uses write-ahead logging in Sqlite (#1871). WAL is better suited to our DB access patterns, and is both much more performant and safer than the default rollback journal that we were using previously.

  1. WAL is significantly faster in most scenarios.
  2. WAL provides more concurrency as readers do not block writers and a writer does not block readers.
  3. Disk I/O operations tends to be more sequential using WAL.
  4. WAL uses many fewer fsync() operations.

This small change improves performance by more than 5x.

Payment Handling

Invoice generation (#1878) and handling of incoming payments (#1880) are now processed in parallel, resulting in a higher throughput under load.

Improved Postgres support

This is the continuation of an effort to make PosgreSQL production-ready. The database schema has been reworked (#1866) and is now better organized, with appropriate types for timestamps (#1862). There have been several concurrency-related bug fixes.

We have also added JSONB columns for local channels and for network announcements (#1865). All individual data fields can now be accessed from SQL and indexed, which is very convenient for advanced analysis and tuning of a routing node.

Upfront shutdown script

This release adds support for option_upfront_shutdown_script (feature bits 4/5).
This feature lets you specify a closing address when you open a channel: your peer will ensure that when you close, your funds can only go to that address.

It can be useful to protect against future hacks of your node, because the attacker won't be able to close your channels and send the funds to an address that he controls. However, it doesn't prevent the attacker from exfiltrating funds by paying lightning invoices, so you shouldn't rely on this feature alone to make your node hack-proof.

This option is disabled by default, but can be enabled in your eclair.conf.
Note that if you enable it, the closing address will be automatically generated by your bitcoind node.

Transaction publishing improvements

This release reworks our internal transaction publishing architecture (see #1844 for details).
The new architecture is more flexible, provides better logging and makes it easy to add dynamic fee bumping in the future for anchor output channels.
It will also make it easier to automatically use CPFP to ensure funding transactions confirm before the 2016 blocks timeout is reached.

API changes

This release updates a few APIs:

  • parseinvoice displays Bolt 11 invoices routing hints (#1833)
  • Plugins can inject their own routes into the API instead of spawning a separate HTTP server (#1805 and #1819)

Miscellaneous improvements and bug fixes

  • Eclair now uses Bitcoin Core 0.21.1 by default (#taproot)
  • Eclair now supports warning messages
  • Eclair uses additional entropy on top of the operating system RNG to mitigate random number generation failures (#1774)

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 20.04
  • AdoptOpenJDK 11.0.6
  • Maven 3.8.1

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

mvn clean install -DskipTests

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

Changelog

a658fa2 Set version to 0.6.1-SNAPSHOT (#1813)
76894bd Add additional PRNG (#1774)
9a20aad Allow plugins to inject their own routes into API (#1805)
d437ea1 Improve API plugin support (#1819)
98cae45 Rename pending_relay to pending_commands (#1822)
e8c33ba Various improvements and fixes (#1817)
f829a2e Add json type hints on channel data (#1824)
4dc2910 Make result set an iterable (#1823)
6f6c458 Add metrics on channels processing time (#1826)
43a89f8 Add a random delay before processing blocks (#1825)
af618bc Symmetrical HTLC limits (#1828)
dbecb28 Include routing hints in parseinvoice API call response (#1833)
2b6d564 Expose eclair datadir to plugins (#1837)
bd6bad1 Fix eventually statements (#1835)
a7bb2c2 Do not store CannotAffordFees errors (#1834)
d4b25d5 Udpate to Bitcoin Core 0.21.1 (#1841)
e750474 Use bitcoin-lib 0.19 (#1839)
bbfbad5 Validate payment secret when decoding (#1840)
afb1b41 Update bolt 3 spec test vectors (#1669)
d43d06f Rework TxPublisher (#1844)
45204e2 Schedule backup at regular interval (#1845)
85ed433 Reject 0-value trampoline payments (#1851)
f857368 Make trampoline payments use per-channel fee and cltv (#1853)
f52c3dd Decode warning messages (#1854)
516929b Fix default file backup config (#1857)
4ca5c62 Remove println in tests (#1861)
291c128 Reduce some log levels (#1864)
d9a03a5 Use warning messages for connection issues (#1863)
af8394a Add support for dual db backend (#1746)
3a573e2 Improve message for CannotRetrieveFeerates error (#1859)
bd57d41 Add a globalbalance api call (#1737)
08faf3b Add json columns in Postgres (#1865)
f8feb19 Use schemas in Postgres (#1866)
cea3fc0 Use proper data type for timestamps in Postgres 2 (#1862)
95fffe3 Reduce pg transaction isolation (#1860)
547d7e7 Create chain directory (#1872)
e9df4ee Channels data format migration (#1849)
733c6e7 Refactor global balance tests (#1874)
ca51a2d Enable WAL mode on Sqlite (#1871)
3ae9a4a Additional reestablish test (#1875)
d02760d Fail unsigned outgoing htlcs on force-close (#1832)
3bb7ee8 Parallel payment request generation (#1878)
5182402 Fix flaky channel integration tests (#1879)
b4183ed Fetch incoming payments in parallel (#1880)
8c49f77 Fix payment handler tests (#1882)
01b4073 Implement option-upfront-shutdown-script (#1846)
79729c7 Update README (#1881)
c22596b Update dependencies and enable fatal warnings (#1885)
adf36de Fix yet another flaky test (#1886)
3f1c250 Fix watcher flaky test (#1883)
c8c5e76 Update akka-http-json4s dependency (#1889)
5fa8fed Set version to 0.6.1 (#1887)

Eclair v0.6.0

19 May 13:05
f89b092

Choose a tag to compare

This release makes some core features mandatory, includes a few important bug fixes and several performance improvements.
It is fully compatible with 0.5.1 (and all previous versions of eclair).

Major changes

Mandatory payment secrets

This release makes two important features mandatory:

These features have been widely deployed and protect against privacy attacks and stealing payments to 0-value invoices (as described here).
You won't be able to connect to nodes that don't support these features nor pay invoices that don't include a payment_secret.

Improved detection of stale blocks

Eclair uses ZMQ to receive blocks and transactions from your bitcoin node.
While ZMQ is usually very reliable, we discovered that its pub/sub model has some limitations.
If a subscriber encounters network failures, it will silently disconnect without notifying the publisher.
This never happens when your bitcoin node is on the same machine as eclair, but may happen when bitcoin is running on a remote machine and a VPN is used between the two machines.
Eclair now sets a TCP keep-alive on the ZMQ socket to work around this limitation and quickly reconnect.

The blockchain watchdogs have also been improved to run at fixed intervals if no blocks are received.
They will poll secondary blockchain sources (bitcoinheaders.net, blockstream.info, mempool.space and blockcypher.com) to detect that your eclair node is missing blocks.

Electrum support removed

This release removes support for using Electrum instead of Bitcoin Core for your bitcoin wallet.
Electrum support was necessary for mobile wallets, but wasn't recommended for server deployments.
Wallets are migrating to our Kotlin lightning stack, so eclair can now target exclusively server deployments.

Eclair depends on many low-level bitcoind RPCs for fee bumping which aren't available yet in Electrum.

Improved Postgres support

We previously introduced beta support for using PostgreSQL as database backend in eclair v0.4.1.
We've fixed some bugs since then and improved the integration, but please note that PostgreSQL support is still in beta.
We're actively working on finalizing this integration and making PostgreSQL production-ready in a future release.

Support for future segwit versions

This release adds support for option_shutdown_anysegwit (spec PR available here).
Current segwit bitcoin addresses (P2WPKH and P2WSH) only use segwit version 0, but this change lets nodes use bitcoin addresses with other version numbers (taproot will use version 1).

API changes

This release updates a few APIs:

  • Features are now displayed as a map (feature name -> support) in API responses (#1715)
  • Channel internal state tracking force-close scenarios has been enriched (#1728)
  • A --blocking=<bool> option has been added to the payinvoice API (#1751)

We've also updated our internal API DSL, which paves the way for more plugin integration in a future release.
Head over to our API documentation for more details.

Miscellaneous improvements and bug fixes

  • Eclair now defaults to Bech32 addresses (#1717)
  • Anchor output commitment feerate is now configurable (#1718)
  • All outputs of revoked anchor output commitments are claimed (there is a subtle edge case, see #1738)
  • Internal codec packages and database versions have been reworked to improve future backwards-compatibility
  • Several improvements have been made to our path-finding algorithms, improving tail latency
  • A bug affecting reconnections to peers has been fixed (#1760)
  • A bug affecting transaction outputs ordering (which can lead to channel force-close) has been fixed (#1806)

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 20.04
  • AdoptOpenJDK 11.0.6
  • Maven 3.8.1

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

mvn clean install -DskipTests

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

Changelog

Special thanks to @tompro who reworked our internal API DSL.

Eclair v0.5.1

03 Mar 12:33
98bb7be

Choose a tag to compare

This release includes many bug fixes and improvements, a new API and monitoring updates.
It is fully compatible with 0.5.0 (and all previous versions of eclair).

Major changes

Improved startup performance

When eclair starts up and restores channels, it makes a lot of calls to bitcoind to check the status of each channel.
We improved our calling pattern to greatly reduce the number of calls made when some channels are closing.
This is particularly noticeable when the mempool is quite full and you have many channels.

See #1699 for details.

Gossip sync improvements

Most of the bandwidth consumed by lightning nodes is due to gossip (syncing the network graph).
When your eclair node has a lot of peers and doesn't use a sync-whitelist, you may end up syncing with many different peers and obtaining redundant information, thus wasting bandwidth.
Eclair now only syncs with peers you have a channel with to reduce bandwidth usage.

Anchor outputs

This release contains a lot of changes for the upcoming anchor outputs commitment format:

  • the feerate of the commitment transaction is kept low to improve off-chain channel usage
  • transactions with multiple inputs and outputs are now supported
  • CPFP and RBF utilities have been added to increase the feerate of commitment and htlc transactions

While you can start experimenting with this commitment format, it is still not safe to activate in production.
Anchor outputs is a complex and subtle change that requires re-architecting most of our transaction broadcasting logic and utxo management.
We are making steady progress towards that, but we're not there yet.

Monitoring changes

Kamon tracing has been removed in this release.
It was too invasive in the codebase, generally unused and was costing some bandwidth.
We've found that metrics and logs are enough to correctly monitor your eclair node.

Additional metrics to monitor transaction signing have been added.
The rate of transaction signatures is a good indicator of how busy your node is.

API changes

This release adds a new path-finding API:

  • findroutebetweennodes lets you inspect the network graph by looking for routes between two nodes (whereas findroute only allowed finding routes between your node and a remote node)

Head over to our API documentation for more details.

Miscellaneous improvements and bug fixes

  • Correctly sort addresses in its node_announcement (#1693)
  • Allow 2016 blocks before unconfirmed channels are forgotten (#1692)
  • Re-emit private channel updates more frequently, improving payments to mobile wallets (#1671)
  • Correctly handle channel failures in private routing hints, fixing an edge case for payments to mobile wallets (#1675)
  • Drop support for initial_routing_sync: this was bandwidth-heavy and now unnecessary (#1683)
  • Fix an MPP-send edge-case (#1685)
  • Fix race condition between outgoing payment and peer disconnection (#1688)
  • Fix race condition between update_fee and shutdown, which could lead to channels stuck in shutdown (#1661)
  • Ensure transactions we publish always meet bitcoin's min_relay_fee (#1687)
  • Fix an edge case where an HTLC failure was not correctly relayed upstream if revoke_and_ack had not been received (#1706)

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.5.1-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 Eclair v0.5.0. You don't need to close your channels, just stop eclair, upgrade and restart.

Changelog

Thanks to our new contributors, @tompro and @ariskk!

Eclair v0.5.0

18 Dec 14:30
35b070e

Choose a tag to compare

Eclair v0.5.0

This release includes many exciting new features, API changes as well as several bug fixes and improvements.
It is fully compatible with 0.4.2 (and all previous versions of eclair).

Major changes

Cluster mode

Eclair now allows you to scale up one logical lightning node across multiple servers.

Front servers take care of routing table related gossip and syncing requests from peers, which is cpu/bandwidth intensive.
The backend server can focus on core channel management.
BOLT 1 and BOLT 7 messages are handled in the frontend, while BOLT 2 messages go through and are processed in the backend.

This new feature is key for robust and scalable enterprise deployments.
Head over to the documentation for more details.

Blockchain watchdogs

Eclair now includes a blockchain watchdog, that fetches bitcoin headers from various sources in order to detect whether we're being eclipsed.

The current blockchain sources we use are:

  • blockchainheaders.net (headers over DNS)
  • blockstream.info
  • mempool.space

Seed segregation

Eclair now splits your seed into two distinct parts: node_seed.dat and channel_seed.dat.

It makes sense to separate the keys that are used for connection handling and gossip (and have no impact on your funds) from the keys that are used for channel operations (and have a direct, critical impact on your funds).

This change paves the way for future security improvements, such as using hardware wallets for channel keys.

Per-node feerate tolerance

On-chain feerate spikes have a subtle but important impact on the security of your channel funds.
Eclair lets you configure the tolerance you have with your peers via the eclair.on-chain-fees.feerate-tolerance configuration parameter.

With this release, you can now override this configuration for specific nodes.
This can be useful when one of your peer is trusted and you know it won't try to cheat you (for example because it's one of your own nodes, a family member's node or a friend).
You can configure a higher feerate tolerance with these nodes than with nodes you don't know or trust.

Plugin improvements

More plugins hooks have been added to eclair, to allow custom connection management and custom commitment formats.
Hats off to @btcontract who was able to implement hosted channels entirely as an eclair plugin!

API changes

This release contains a few improvements to existing APIs:

  • The channelId field has been added to the channel-state-changed websocket event
  • Initial relay fees can be configured when opening a channel with the open API

Head over to our API documentation for more details.

Miscellaneous improvements and bug fixes

  • #1617 lets you redirect traffic automatically from a tor node to a normal node
  • option_static_remotekey is now optionally activated by default

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.5.0-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 Eclair v0.4.2. You don't need to close your channels, just stop eclair, upgrade and restart.

Changelog

Eclair v0.4.2

19 Oct 13:13

Choose a tag to compare

This release includes many exciting new features, API changes as well as several bug fixes and improvements.
Its is fully compatible with 0.4.1 (and all previous versions of eclair).

Major changes

Plugins

Third-party plugins are now able to add new feature bits to eclair and handle unknown custom messages.
This lets plugin developers offer services to their customers that are not available in the Lightning specification (e.g. swap-in/swap-out), while staying fully compatible with the network.

See #1528 for more details.

Anchor Outputs

This release adds experimental support for anchor outputs channels.
The main benefit of this type of channels is that it is possible to bump the on-chain fees of commitment transactions and htlc transactions once they are in the mempool to speed up their confirmation.

Eclair is fully compatible with the anchor output specification, but automatic fee bumping has not been implemented yet, hence we do not recommend activating the feature.
Some attacks that are specific to anchor outputs have also been discovered recently and haven't been fully addressed yet, but will be fixed in future releases.

Keysend

This release adds support for spontaneous payments using keysend.
It is fully compatible with lnd and c-lightning and makes it easy for public LN nodes to receive donations.

API changes

This release contains many new APIs and improvements to existing ones:

  • Add signmessage/verifymessage APIs: this allows signing arbitrary messages with the node's key and is compatible with lnd and c-lightning
  • We publish new channel events to the websocket (channel-opened, channel-state-changed and channel-closed)
  • The sendtoroute API now lets you choose the channels that must be used, making it easy to rebalance your local channels

Head over to our API documentation for more details.

Miscellaneous improvements and bug fixes

  • Many actors have been refactored to use Akka Typed instead of classic actors.
    This leads to a cleaner design, better types and more help from the compiler to detect unhandled messages.
  • We added support for Bitcoin Core 0.20.1.
  • We added support for non-default Bitcoin Core wallets (see #1540 for details)
  • We fixed the override-features configuration parameter, which wasn't overriding features everywhere. This parameter can be very useful for example to sync only from specific nodes, or advertize wumbo support only to nodes that you trust.

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

Changelog

Eclair v0.4.1

15 Jul 11:43

Choose a tag to compare

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.

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!

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
}

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

Read more

Eclair v0.4

15 Jul 11:38
69c538e

Choose a tag to compare

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 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 for more information (it works on Windows too). We also added instructions 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 or 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.
  • 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:

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-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)

Eclair v0.3.4

06 Apr 12:01

Choose a tag to compare

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 lightning/bolts#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 #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 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 or 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 #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:

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.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)

Eclair v0.3.3

31 Jan 18:59
12ac145

Choose a tag to compare

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 lightning/bolts#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 lightning/bolts#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 lightning/bolts#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

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

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.

Upgrading

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 eclair.global-features, 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.

Changelog

  • 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 !

Eclair v0.3.2

15 Oct 16:43
5ad3944

Choose a tag to compare

This release includes many improvements, as well as a few bug fixes.

This release is fully compatible with 0.3.1 (and all previous versions of eclair), but some configuration options have been moved to a new section. This is checked automatically and Eclair will tell you what to do if you use these options, see the Upgrading section below for more details.

Major changes

Backupless Backups :)

Channel keys are now derived from channel's funding public keys, which can be retrieved from the Bitcoin blockchain when a channel is closed. What this means is that even if you don't have any backups, as long as you still have your seed and can find the ids of the nodes you were connected to, you can recover your funds using Lightning's Data Loss Protection feature.

So how does it work ? Just reconnect to the same nodes, they will publish their commit transactions and give you their channel data, watch for it on the Bitcoin blockchain, extract public keys, recompute your channel keys and combine them with the data they gave you to spend your output. Of course we'll release a tool to automate this process, but all new channels created with v0.3.2 will benefit from this feature.

Extended Channel Queries

We implemented an extension to channel queries which makes retrieving and syncing routing information more efficient, which is really good for mobile Lightning nodes which can now sync their routing data faster and using less bandwidth. It is also a first step toward even more efficient strategies (inventory-based gossip, similar to how bitcoin nodes relay blocks and transactions, and potentially more advanced reconciliation algorithms).

Payment API improvements

We've changed the payment API to return more information about received and sent payments (fees, status, route, etc). If you were relying on the format of the previous responses, you may need to slightly update your code. See the API documentation for details.

Configurable transaction confirmation targets (see #1083)

You can now configure the number of confirmations that your node will target for funding, commitment and claim transactions (i.e transactions that spend a commitment transaction, when a channel is closed for example), which has an impact on the fee rate that will be selected in each case. We still provide good default values, and would recommend that you read the description of PR #1083 carefully before you set custom values.

Miscellaneous improvements and bug fixes

We've implemented several new BOLT changes which pave the way for new Lightning features, such as AMP and trampoline payments:

  • variable-length onion (#1087)
  • improved TLV support
  • BOLT 11 invoice feature bits (#1121)

We now run our unit and integration tests against Bitcoin Core 0.18.1, which is our recommended version. Eclair will still work with Bitcoin Core 0.17 but support may be dropped when 0.19 is released.

We've fixed a bug in our Electrum coin selection algorithm, this fix will be included in the next eclair-mobile release (see #1146).

We now allow you to restrict peers you want to sync from (see sync-whitelist #954).

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

Upgrading

This release is fully compatible with Eclair v0.3.1. You don't need to close your channels, just stop eclair, upgrade and restart. There are 2 changes you need to pay attention to though:

  • our target JDK is JDK11 and we don't support JDK8 anymore
  • our Bitcoin Core target is 0.18.1
    If you're still running JDK8 or Bitcoin Core 0.17 we strongly suggest that you upgrade.

The following configuration keys have changed and have been moved to an on-chain-fees section:

Old name new name
default-feerates on-chain-fees.default-feerates
max-feerate-mismatch on-chain-fees.max-feerate-mismatch
update-fee_min-diff-ratio on-chain-fees.update-fee-min-diff-ratio

⚠️ Please note that we changed the hyphen on update-fee-min-diff-ratio to be consistent with other configuration keys.

If you have overridden default values for these keys and have not updated your configuration file, Eclair will not start but instead display a message and tell you which key to update.

For example, if you had overridden max-feerate-mismatch, this is what what you had with 0.3.1:

eclair.max-feerate-mismatch = 10

You must update your configuration file like this:

eclair.on-chain-fees.max-feerate-mismatch = 10

Changelog

  • Check configuration for obsolete keys on startup (#1175)
  • Update assisted channels (#1172)
  • Sqlite: use TEXT type for strings (#1159)
  • Use guava to compute CRC32C checksums (#1166)
  • Activate extended channel range queries (#1165)
  • Add execution time limit (#1161)
  • Update netty dependency to 4.1.32 (#1160)
  • Upgrade new unit tests to bitcoin 0.18.1 API (#1157)
  • Use bitcoin 0.18.1 in the test (#1148)
  • Extend funding key path to 256 bits (#1154)
  • Electrum: improve coin selection (fixes #1146) (#1149)
  • HTTP API: add type hints for payment status (#1150)
  • Commitments: take HTLC fee into account (#1152)
  • Fix and expand channel keypath (#1147)
  • Check if remote funder can handle an updated commit fee when sending HTLC (#1084)
  • Derive channel keys from the channel funding pubkey (#1097)
  • Handle fees increases when channel is OFFLINE (#1080)
  • Improve error handling when we couldn't find all the channels for a supplied route in /sendtoroute API (#1142)
  • Payment lifecycle refactoring (#1130)
  • Update string to match on bitcoind while it's indexing (#1138)
  • Sphinx: accept invalid downstream errors (#1137)
  • Drop support for Java 8 (#1135)
  • Add codecov integration to semaphore CI (#1134)
  • Make tests run in parallel (#1112)
  • Removed Globals class (#1127)
  • Don't hardcode the channel version (#1129)
  • Check funds in millisatoshi when sending/receiving an HTLC (#1128)
  • Add monitoring with Kamon (disabled by default) (#1126)
  • Router computes network stats (#1116)
  • Add Semaphore CI (#1125)
  • Activate support for variable-length onion (#1087)
  • Made sync params configurable (#1124)
  • Reject expired invoices before payment flow starts (#1117)
  • Update docker build (#1123)
  • Implement Bolt 11 invoice feature bits (#1121)
  • Use Long to back the UInt64 type (#1109)
  • Fix maven mirror (#1120)
  • Fix build (#1115)
  • Bolt4: remove final expiry too soon error message (#1106)
  • Fix regression in Commitments.availableForSend (#1107)
  • Move http APIs to subproject eclair-node (#1102)
  • Add a sync whitelist (#954)
  • Use unsigned comparison for 'maxHtlcValueInFlightMsat' (#1105)
  • Add more numeric utilities to MilliSatoshi (#1103)
  • Rework router data structures (#902)
  • Extended queries optional (#899)
  • Typed cltv expiry (#1104)
  • Publish transactions during transitions (#1089)
  • Route computation: fix fee check (#1101)
  • Typed amounts (#1088)
  • Documentation update (#1092)
  • Update list of commands in eclair-cli help (#1091)
  • Use correct cost comparison when evaluating candidate channels (#1090)
  • Configurable transaction confirmation target (#1083)
  • Made using/storing/sending consistent (#1082)
  • Variable-length onion payloads (#976)
  • Handle fulfill not acked upstream (#1079)
  • Replace traits by bitfield for ChannelVersion (#1073)
  • Switch varint codec to big-endian. (#1075)
  • Added a channel version to Commitments object (#1059)
  • TLV improvements and full spec compatibility (#1069)
  • Wrap all routes in toStrictEntity (#1032)
  • Electrum: update checkpoints (#1067)
  • Handle unknown fields in network announcements (#1047)
  • Add a few improvements to tlv. (#1065)
  • Add eclair-cli to eclair's docker image (#1063)
  • Use a RelayResult class instead of an Either (#1064)

Thank you @btcontract !