Skip to content

Releases: ACINQ/eclair

Eclair v0.3

09 May 18:10
a5debcd
Compare
Choose a tag to compare

This is a major release which includes many improvements and bug fixes, and we recommend that users upgrade.

It is compatible with eclair v0.2-beta9 (i.e you don't have to close your channels) but upgrading may be not as seamless as for previous versions, please check the Upgrading section.

Major changes

Eclair runs on mainnet by default

Default configuration now targets mainnet, but you can still easily run Eclair on testnet or regtest.

New RPC API

Our RPC API has been upgraded and improved and now include calls to retrieve payment information, see our API documentation. You can still choose to use the old API with a configuration option that will be removed in a future release.

Easy channels backup

Making backups of your channels is now simpler: we create an update an eclair.sqlite.bak backup file that is always consistent and safe to use even when your node is running.

Please note that an old backup can be used as a "static" backup: if you restore an old backup, channels open to peers that support Data Loss Protect will be recovered.

Simple Plugin Support

You can now easily write and deploy your own plugins, written in any JVM-compatible language. See the readme for more details.

Bitcoin Core v0.17 or newer is now required

We now require Bitcoin Core v0.17 or newer, meaning that eclair now works with Bitcoin Core v0.18. Eclair will not work anymore with older versions, you will have to upgrade.

Support for Tor Services

You can now run Eclair as a Tor hidden service for increased privacy.

Note that Tor also offers out-of-the-box NAT traversal, which solve the issue of changing ips.

Target JDK is now OpenJDK 11

We switched our target JDK from Oracle JDK8 to OpenJDK 11, and we recommend that you use it to run eclair. You can still use Oracle JDK8 (but it's up to you to check your licensing options).

Performance improvements

Eclair now embeds native JNI bindings for libsecp256k1 for Linux 64 bits, Windows 64 bits and Osx 64 bits, which makes eclair much faster. You can still use your own version of libsecp256k1 if you use a different OS.

Many internal structures and workflows have been optimised and eclair is now even faster (not that it was ever slow to begin with, eclair is used on some of the biggest nodes on LN).

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 compatible with Eclair v0.2-beta9. You don't need to close your channels, just stop eclair, upgrade and restart. However, there are 2 major runtime changes that you need to take into account:

  • If you're using Bitcoin Core v0.16.3, you must upgrade to v0.17 (latest release is 0.17.1). Since we require indexing, you tx index database will be migrated the first time you start your Bitcoin Core, which may take up to a few hours. Please stop eclair, migrate your Bitcoin node, and wait until its index database has been migrated before you start eclair again !

  • Our target JDK is now OpenJDK 11, and we suggest that you use it to run Eclair. You can still use Oracle JDK8 (but it's up to you to check your licensing options). See #846 for more details.

.exe Windows installer has been removed

Starting with this version, we do not release a Windows installer. Windows users must instead run the eclair jar file manually. If you're not sure how to do that, follow the instructions below:

  • Download and install Java with OpenJDK
  • Download the eclair-node-gui-0.3-a5debcd.jar file from this page and put it somewhere on your disk
  • Create a run-eclair-0.3.bat file somewhere on your disk, with the following content:
start /B javaw -Declair.datadir=C:\path\to\node\datadir -jar C:\path\to\eclair-node-gui-0.3-2a89cf7.jar

Replace the C:\path\to\... section with the actual values on your system. Note if you use the default datadir (which is C:\Users\name\.eclair) you can omit the -Declair.datadir=... section.

You can now run eclair by executing this bat file. Alternatively, you can use command line.

Changelog

  • Use bitcoind fee estimator first (#987)
  • Ignore subprojects eclair-node/eclair-node-gui in the codecov report (#991)
  • Accept commit_sig without changes (#988)
  • Add bot support for code coverage (codecov) (#982)
  • Set tcp client timeout to 20s (#990)
  • Set default chain to "mainnet" (#989)
  • Replace UnknownPaymentHash and IncorrectPaymentAmount with IncorrectOrUnknownPaymentDetails (#984)
  • Update bash autocompletion for eclair-cli (#983)
  • API: Support query by channelId or shortChannelId everywhere (#969)
  • Better handling of closed channels (#944)
  • Electrum: make debug logs shorter (#964)
  • ElectrumWallet should not send ready if syncing (#963)
  • Print stack trace when crashing during boot sequence (#949)
  • Live channel database backup (#951)
  • Added simple plugin support (#927)
  • Add channel errors in audit db (#955)
  • Added a timeout for channel open request (#928)
  • Electrum: do not persist transaction locks (#953)
  • Add a proper payments database (#885)
  • Set max payment attempts from configuration (#931)
  • Expose the websocket over HTTP GET to work properly with basic auth (#934)
  • Send events when HTLCs settle on-chain (#884)
  • Electrum: update client name (#930)
  • Add random delay to rebroadcast (#925)
  • Rollback tx if disconnected in WAIT_FOR_FUNDING_SIGNED (#923)
  • Separate cases for bech32 testnet and regtest for BOLT11 fallback address
  • API: use form data instead of JSON-RPC (#894)
  • Deal with channels with fees=0 when computing a route (#905)
  • Check WatchSpent in constant time (#916)
  • Rework database initialization (#911)
  • Use bitcoin-lib 0.11 which embeds libsecp256k1 (#907)
  • Don't send updates if no filter has been set (#912)
  • Upgrade to bitcoin 0.17.1 (#826)
  • Better logic for sending channel_updates (#888)
  • Replace BinaryData by scodec.bits.ByteVector (#896)
  • Better error logs for socks5 proxy (#893)
  • NetworkDb: remove stale channels in batch (#886)
  • Clean channels with unexisting funding tx (#714)
  • Set default to-remote-delay-blocks to 720 (#879)
  • Routing heuristics (#821)
  • Use ypub prefix for Electrum xpub (#875)
  • Update jeromq dependency (#852)
  • Use OpenJDK 11 as default JDK (#846)
  • Electrum fixes and improvements (#873)
  • Fixed computation of available balance (#868)
  • Faster gui startup (#863)
  • Support all-uppercase payment requests (#862)
  • Reimplemented BOLT 11 with scodec (#856)
  • Parametric route search (#844)
  • Increased max-to-local-delay-blocks to 2016 (#853)
  • Stop disconnected peer when it has no channels (#840)
  • Improve Electrum start-up time (#848)
  • Add balance and channel lifecycle events to the audit db (#827)
  • Support for Tor onion services (#736)
  • (Router) Always select direct channel if there is one to the target (#850)
  • Proper handling of gossiped channels being spent (#838)
  • Ignore reconnections requests to the same peer with the same address (#835)
  • Replace initialization futures Future[Boolean] by Future[Done] (#836)
  • Set timestamp filter lower bound to current time (#837)
  • ChannelSelectionSpec: use akka.event.NoLogging (#834)
  • Relay to channel with lowest possible balance (#784)
  • Complete commit logs

Thank you @btcontract @rorp @n1bor @Kukks !

Eclair v0.2-beta9

18 Jan 19:11
eb0e45a
Compare
Choose a tag to compare

This release includes many improvements and bug fixes, and we recommend that users upgrade.

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

Changelog

  • Auto probing of local channels (#762)
  • Routing: use custom implementation for the shortest path algorithm and the graph (#779)
  • Readability improvements in GUI (#801)
  • Make ping less aggressive (#782)
  • Detect broken HTLC links at startup (#757)
  • Set a max value of 2016 blocks for to_self_delay (#795)
  • Disable local channels below reserve (#763)
  • Add exclusive locks to channels sqlite db (#781)
  • Relay fail message after it is cross-signed (#754)
  • Use BOLT specific formatting for short channel id (#793)
  • Optional per-node features in conf (#778)
  • Make maxHtlcValueInFlight checks directional when sending and receiving HTLCs (#768)
  • Update connection-level features at reconnection (#765)
  • Disconnect peer after a timeout when waiting for revocation (#761)
  • Disconnect peer if it does not reply to pings (#755)
  • Watch future remote commit on restore (#766)
  • Switch sttp backend async-http-client -> okhttp (#764)
  • Reject received payments where PaymentRequest Expiry Tag time has been exceeded. (#749)
  • Use sttp lib instead of akka-http-client (#720)
  • Use different ZMQ block and tx subscriptions
  • Always add 1 block to the finalCltvExpiry (#742)
  • Complete commit logs

Thank you @btcontract @jagottsicher @n1bor @rorp !

Eclair v0.2-beta8

20 Oct 20:51
Compare
Choose a tag to compare
Eclair v0.2-beta8 Pre-release
Pre-release

This release fixes a bug in our router module where we would tag signatures for channel_update messages that include an optional htlc_maximum_msat field as invalid and close the channel, even when these signatures were actually valid.

This bug is specific to our server/desktop node and does not affect our mobile wallet.
Our testnet and mainnet nodes have already been patched.
We * strongly * encourage users to upgrade as soon as possible.

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

Eclair v0.2-beta7

15 Oct 16:32
c564f51
Compare
Choose a tag to compare
Eclair v0.2-beta7 Pre-release
Pre-release

This is a maintenance release of eclair, which is now compatible with Bitcoin Core v0.17.0 (see our README).It will also work with Bitcoin Core v0.16.3.

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

Change log

  • Only persist trimmed htlcs (#724)

  • Add instructions for Bitcoin Core 0.17.0 (#732)

  • Update scalatest and remove junit runner (#728)

  • Simplify bitcoind version check (#731)

  • Complete commit logs

Eclair v0.2-beta6

26 Sep 15:59
3fc5da0
Compare
Choose a tag to compare
Eclair v0.2-beta6 Pre-release
Pre-release

This is a maintenance release of eclair, which includes several improvements and bug fixes, including:

  • improved reporting, more readable and parseable logs, with a default rolling policy (one log file per day)
  • support for channel range queries, a feature which will speed-up routing table synchronization. This is an important feature for light nodes (mobile nodes, ...)
  • an audit database which keeps tracks of received/sent/relayed payments and miners fee, and new audit, networkfees and channelstats API calls
  • a "smooth" fee rate estimator, which will prevent channels from being closed when onchain fees change suddenly and peers don't agree on onchain fee rates
  • temporary bans of peers that send too many bad routing info items (such as channels announcements for channels that have already been closed)

We strongly recommend that users upgrade their nodes.

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

Change log

  • Make publishTransaction idempotent (#711)
  • Tests: use bitcoind 0.16.3 (#715)
  • Replace update_fee in commitments (#709)
  • Fix handling of born again channels (#717)
  • Ignore 'origin htlc not found' in CLOSING (#708)
  • Routing sync fixes (#712)
  • Fixed regression in rebroadcast (#713)
  • Set default max-htlc-value-in-flight-msat=50mBTC (#707)
  • Improve integration tests (#710)
  • Remember pruned channels (#706)
  • Ignore bad announcements sent by peers (#705)
  • Added LocalCommitConfirmed event (#701)
  • Improve startup error handling (#696)
  • Correctly handle multiple channel_range_replies (#704)
  • Added catch-all handler for local commit (minor) (#699)
  • Switched commitment log level to info (minor) (#700)
  • Handle overriden htlcs in remote close scenario (#697)
  • Multiple fixes in payment lifecycle (#693)
  • Mention Docker in our build instructions (fixes #669) (#685)
  • Fixed htlc absolute expiry checks (#687)
  • Removed max body size in http client (#686)
  • Add a "smooth" fee provider (#684)
  • Add logging customisation info (#680)
  • (trivial) restore gitter logo color
  • Add an issue template (#683)
  • Use user-provided fee rate for funding tx (fixes #639)
  • Fixed some logs and added ChannelPersisted event (#674)
  • Send query_short_channel_ids sequentially (#672)
  • Handle unknown remote commit in recovery logic (#667)
  • Get full blocks when looking for spending tx (#666)
  • Fail unsigned outgoing htlcs at CLOSING (#660)
  • Audit: Keep track of sent/received/relayed payments and relay/network fees (#654)
  • Fix Bitcoin JSON RPC client's rounding errors (#616)
  • Send an event when an error occurs in a channel (#663)
  • Clean up ExecutionContext/ActorSystem (#652)
  • Use "unsigned long" comparison for short channel ids (#656)
  • Improve initial routing sync (#453)
  • Relay payments to channel with highest balance (#648)
  • Set MIN_CLTV_EXPIRY to 9 as per BOLT 11 (#650)
  • Added context to logs (#638)
  • Electrum: add wallet and watcher tests (via Docker) (#592)
  • Revert "electrum: make docker tests run on windows/mac"
  • electrum: make docker tests run on windows/mac
  • Can generate payment request with extra routing information (#637)
  • Proper parsing of public-ips config parameter
  • Complete commit logs

Thank you @btcontract @gustavonalle @n1bor @nayuta-gondo @rorp !

Eclair v0.2-beta5

20 Jun 11:56
8aa51f4
Compare
Choose a tag to compare
Eclair v0.2-beta5 Pre-release
Pre-release

This is a maintenance release of eclair, which includes several improvements and bug fixes, including:

  • a fix for an unnecessary check on outgoing HTLCs that caused interoperability issues with c-lightning
  • additional BOLT compliance checks
  • the ability to specify payment request expiries from the API

We strongly recommend that users upgrade their nodes.

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

Change log

  • Check when relay fee is insufficient (#634)
  • Add api call to update channel relay fees (#620)
  • Adding ability to set expiry when creating a new invoice (#632)
  • Add missing BOLT 2 checks (fixes #613) (#618)
  • Routing: remove final CLTV expiry check on outgoing HTLCs (#627)
  • Complete commit logs

Thank you @btcontract @n1bor !

Eclair v0.2-beta4

31 May 09:36
e6fe077
Compare
Choose a tag to compare
Eclair v0.2-beta4 Pre-release
Pre-release

This is a maintenance release of eclair, which includes several improvements and bug fixes, including:

  • a fix for a fee estimation bug which sometimes could have produced transactions that could not be relayed
  • a simple scheme for notifying users when a payment has been completed

We strongly recommend that users upgrade their nodes.

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

Change log

  • Filter out non-spendable outputs from bitcoind 'listunspent' call during setup (#605)
  • Set a minimum feerate-per-kw of 253 (fixes #602) (#608)
  • Inform clients about incoming payments via websocket connection (#610)
  • Complete commit logs

Thank you @araspitzu @btcontract !

Eclair v0.2-beta3

18 May 13:52
1dd8aa5
Compare
Choose a tag to compare
Eclair v0.2-beta3 Pre-release
Pre-release

This is a maintenance release of eclair, which includes several improvements and bug fixes, including a few interop-related bugs, and a bug in our electrum wallet (which is used in our Android app, not on server/desktop nodes).

Verifying signatures

You will need gpg and our release signing key E434ED292E85643A. Note that you can get it:

To import our signing key:

$ gpg --import padioupm.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Upgrading

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

Change log

  • Electrum: resolve server address only when connecting (#554)
  • Electrum: correctly extract pubkeyScript from tx witness (#555)
  • Electrum: fix wallet balance issue (#600)
  • Support signing multiple similar/identical HTLCs (#553)
  • Handle IPv4-mapped/tor2/tor3 addresses (#559)
  • Remove utxo lock when call to signrawtransaction fails (#579)
  • Add configurable min funding satoshis limit (#580)
  • Complete commit logs

Thank you @gustavonalle @btcontract @GiorgioRegni @rorp!

Eclair v0.2-beta2

04 Apr 17:48
7598615
Compare
Choose a tag to compare
Eclair v0.2-beta2 Pre-release
Pre-release

This is a maintenance release of eclair, which fixes a bug in our bitcoin fee estimator. We strongly recommend that you upgrade your eclair node.

Verifying signatures

You will need gpg and our release signing key E434ED292E85643A. Note that you can get it:

To import our signing key:

$ gpg --import padioupm.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

Upgrading

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

Change log

Eclair v0.2-beta1

28 Mar 19:41
c39ce69
Compare
Choose a tag to compare
Eclair v0.2-beta1 Pre-release
Pre-release

🎉 This is the first release of eclair that can be configured to run on mainnet (on previous versions, by design, users would have had to change a few lines of code and recompile to run on mainnet).

We've learned a lot from months of deployment on testnet and believe it is mature enough but, as with any beta software, you still need to be careful and not put too much money into it.

Verifying signatures

You will need gpg and our release signing key E434ED292E85643A. Note that you can get it:

To import our signing key:

$ gpg --import padioupm.asc

To verify the release file checksums and signatures:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped

BOLT Compatiblity

Eclair is fully compatible with all Lightning BOLTs and has been tested against other implementations.

Eclair uses Bitcoin Core to monitor the blockchain and will react to "cheating attempts" (the publishing by a peer of an old channel commit tx that is more favourable to them) and publish a penalty transaction which spends the cheating transaction. Previous versions of eclair only stole the offender's main output as punishment, this versions steal all outputs, including HTLCs.

Bitcoin Compatibility

Our server (eclair-node) and GUI applications (eclair-node-gui) do not embed their own wallet but instead call into you bitcoin core wallet using its RPC API. There a few things you need to enable on your bitcoin node (see our README) but eclair's interaction with the wallet are limited (creating funding transactions when you open channel and retrieving wallet addresses to send the funds to when you close channels) and should have a minimal impact on your setup. For example, eclair will work with encrypted bitcoin wallets (of course in that case you will have to temporarily unlock it when you create funding transactions).

Upgrading

⚠️ This release doesn't introduce breaking changes in the database format, but the data directory layout had to be modified to clearly separate data from testnet and mainnet.

If you are upgrading an existing installation of eclair (on testnet of course, since this is the first mainnet version), you don't have to close all your channels. You need to:

  • stop eclair
  • go into your datadir directory
  • create a testnet directory and move all your *.sqlite files into this new directory
  • restart eclair

The layout of you data directory will be:

├── eclair.log # application logs
├── testnet
│   ├── eclair.sqlite # channel database. do not delete if you have open channels !
│   └── network.sqlite # network database
└── seed.dat # node seed

ℹ️ if you want to run different instances of eclair on different chains (testnet, mainnet, regtest...) on the same machine at the same time, we strongly recommend that you use specific data directories for each chain (you can then start eclair with the -Declair.datadir=... option)

Eclair databases are versioned and in the future it will be possible to upgrade eclair without having to close all your channels first.

Routing payments

Eclair can send, relay and receive payments. When sending payments, it will try and calculate the cheapest (but not necessarily shortest) route using its local routing table.

Change log

  • Add support for mainnet (#513)
  • Extend penalty to stealing HTLC outputs (#517)
  • Addition of API calls checkinvoice and findroute (#475) (thanks @n1bor)
  • Eclair now requires Bitcoin Core v0.16.0 or higher
  • In electrum mode, eclair now uses a pool of electrum clients connected to different servers
  • Store db files in a chain-specific subdirectory of datadir
  • Track version of each logical database (#495)
  • Specify that we need at least jdk 1.8u161 to build (#491)
  • Simplified blacklisting of nodes in case of payment failures (#489)
  • Set a configurable maxPaymentFee as safety (#493)
  • Proper clean up of private channels (#488)
  • Update Funding tx id value in GUI when funding is signed (#511) (thanks @natewave)
  • Complete commit logs