Releases: ACINQ/eclair
Eclair v0.3
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:
- from our website: https://acinq.co/pgp/drouinf.asc
- from github user @sstone, a committer on eclair: https://api.github.com/users/sstone/gpg_keys
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
andIncorrectPaymentAmount
withIncorrectOrUnknownPaymentDetails
(#984) - Update bash autocompletion for eclair-cli (#983)
- API: Support query by
channelId
orshortChannelId
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
byscodec.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
Eclair v0.2-beta9
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:
- from our website: https://acinq.co/pgp/drouinf.asc
- from github user @sstone, a committer on eclair: https://api.github.com/users/sstone/gpg_keys
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
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:
- from our website: https://acinq.co/pgp/drouinf.asc
- from github user @sstone, a committer on eclair: https://api.github.com/users/sstone/gpg_keys
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
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:
- from our website: https://acinq.co/pgp/drouinf.asc
- from github user @sstone, a committer on eclair: https://api.github.com/users/sstone/gpg_keys
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
Eclair v0.2-beta6
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
andchannelstats
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:
- from our website: https://acinq.co/pgp/drouinf.asc
- from github user @sstone, a committer on eclair: https://api.github.com/users/sstone/gpg_keys
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
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:
- from our website: https://acinq.co/pgp/drouinf.asc
- from github user @sstone, a committer on eclair: https://api.github.com/users/sstone/gpg_keys
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
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:
- from our website: https://acinq.co/pgp/drouinf.asc
- from github user @sstone, a committer on eclair: https://api.github.com/users/sstone/gpg_keys
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
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:
- from our website: https://acinq.co/pgp/padioupm.asc
- from github user @pm47, a committer on eclair: https://api.github.com/users/pm47/gpg_keys
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
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:
- from our website: https://acinq.co/pgp/padioupm.asc
- from github user @pm47, a committer on eclair: https://api.github.com/users/pm47/gpg_keys
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
- Enforce a minimum fee rate (#530)
- Accept bech32 addresses (#531)
- Send
channel_update
once every 7 days instead of every day (#532) - Complete commit logs
Eclair v0.2-beta1
🎉 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:
- from our website: https://acinq.co/pgp/padioupm.asc
- from github user @pm47, a committer on eclair: https://api.github.com/users/pm47/gpg_keys
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
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