Changelog History
Page 1
-
v0.4.6-android
November 30, 2020 -
v0.4.5-android
November 13, 2020 -
v0.4.4-android
November 12, 2020 -
v0.4.3-android
November 10, 2020 -
v0.4.2 Changes
October 19, 2020๐ 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
andchannel-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:- 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
๐ 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 inSHA256SUMS.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
- ๐จ ebfca8c Bitcoin Core Wallet small refactoring (#1482)
- e06325e fixup! Split the
Peer
in two (#1347) (#1487) - ๐ 65facab Add debug logs to transport handler (#1488)
- ๐ ea57bb2 Release 0.4.1 (#1481)
- 92a094c Anchor output transaction format (#1484)
- aca7499 Use github action for scoverage (#1490)
- โก๏ธ 625e996 Update MinFinalCltvExpiryDelta default value and activate wumbo (#1483)
- ab4831f Use file filter for scoverage upload (#1492)
- e6909cf Implement the KeySend feature, spontaneous payments (#1485)
- a3dd365 Revive codecov.yml (#1493)
- bc81cd5 Add delay before setting watches at startup (#1489)
- ๐ 8cd2644 Do not merge user provided features with defaults (#1435)
- 3d4e00f Activate anchor output in channels (#1491)
- 6f9edec Relax relaying requirement on expiry (#1497)
- 5a5a0b9 Verify feature graph in Init (#1495)
- 01f924a Add API commands to sign & verify arbitrary messages (#1499)
- 1b21e14 Fix typo related to pico-bitcoin conversion (#1503)
- daddfc0 Type fee rates info (#1504)
- ๐ 3d168a5 Remove semaphore build (#1517)
- โ 2c43742 Show reminder of failed tests at the end (#1521)
- ๐จ 153f82c Refactor integration tests (#1494)
- ef1bf0b Use the
replyTo
pattern for Register messages (#1514) - ๐ e54066b Remove
Status.Failure
in register responses (#1516) - 14a69b8 Trampoline relay exhausted liquidity (#1523)
- 77e972b Improve blockchain watchers (#1500)
- ea72023 Set the channel version in the init msg for the fundee (#1518)
- โ e34b74f Fix flaky integration test (#1524)
- 6b05099 Use the
replyTo
pattern for Channel messages (#1520) - โก๏ธ b954def Update to Bitcoin Core 0.20.1 (#1526)
- d001100 Migrate relayers to akka typed (#1525)
- 2fc118c Do not reply to htlc settlement commands (#1527)
- ๐ f264235 Improve relayer logs (#1529)
- โ 3158c26 More leeway in tests (#1530)
- โก๏ธ eed82e2 Update to scala 2.13.3 and akka 2.6.9 (#1532)
- 750b372 Minor improvements to the watcher (#1531)
- 662e0c4 Anchor output: handle unilateral close (#1501)
- โ 6ef72a0 Set a timefactor for typed actors tests (#1541)
- ๐ 3a773c1 Allow plugins to handle custom messages and features (#1528)
- 483cce4 Split IntegrationSpec (#1535)
- 42481c6 Add some channel events to websocket (#1536)
- ๐ง 36c9b9b Configure bitcoin wallet (#1540)
- 8a27b4c Fixup funder fee buffer (#1364)
- 0ab7ec6 Add DB entry for payment router error (#1513)
- 1274168 Make all commands extend
Has*ReplyToCommand
(#1543) - 382868d [ChannelRelay] Prioritize lowest capacity channels (#1539)
- ๐ง 56d216b Separate configuration for peer-connection (#1548)
- ๐ 8885ed7 (minor) Improve logs in channel relayer (#1550)
- 428349a Send to channel route (#1537)
- 20e0b4b Fix override-features implementation (#1549)
- ed61750 Nits (#1553)
- b728520 Prevent disabling
var_onion_optin
(#1552) - โ eea1ba9 Add backward-compatibility tests on some database codecs (#1554)
- 5036356 Fix forceclose API (#1555)
- โ 135ce6c Use maven plugin to include tests (#1557)
- a76db1c Fix channel CMD_SIGN (#1556)
- 3da76c0 Allow mandatory static-remotekey (#1558)
- 4b55d3e Fix typo in startup script (#1559)
- ๐ณ 3e3397c Fix Docker JAVA_OPTS expansion (#1561)
- โ Add
-
v0.4.2-android
October 14, 2020 -
v0.4.1 Changes
July 15, 2020๐ 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.0๏ธโฃ 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 youreclair.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!
0๏ธโฃ 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 youreclair.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 }
0๏ธโฃ 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
andonchaintransactions
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:- 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
๐ 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 inSHA256SUMS.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
- โก๏ธ 3f127fb Update kamon (#1411)
- ๐ 430f04a BUILD: document mvn clean command (#1413)
- ba4cca2 Use channel balance in path-finding (#1395)
- ๐จ c4d0604 Payment lifecycle refactor (#1414)
- f22ec21 Feerate provider improvements (#1415)
- โ 8629d20 Skip executing some plugins when skipping tests (#1418)
- ff5362e Fix eclair-node.sh for OSX (#1424)
- bfd25fa Atomically switch to new connection (#1419)
- 4e4c7c9 Put shebang in first line of launcher scripts (#1423)
- 24b43e9 Use actor system as conf container (#1420)
- ๐ฒ 9faaf24 Reduce log level of backup handler (#1429)
- c010317 Fix race condition on early connection failure (#1430)
- ๐ง 029cafe Use human readable features in configuration (#1385)
- ad44ab3 Path finding standard collections (#1428)
- ce3629c Compute max fee before route calculation (#1417)
- ๐ e0320da Electrum: stop spamming logs (#1433)
- 2e79cca Correctly set new channel balance (#1431)
- c04a4ce Accept multiple channels for some API (#1440)
- dc364a1 Implement option_static_remotekey (#1141)
- 4cfb7d9 Fix edges with empty capacity in the routing graph (#1446)
- 2461e3a Fix channelstats API (#1451)
- 50290d9 Monitor on-chain feerate mismatch (#1453)
- 59ea4cd Put back DATA_CLOSING constraints (#1462)
- 570fe57 Add friendly network name to GetInfo response (#1456)
- 676a45c Add on-chain APIs (#1461)
- c52508d Find multi part route (#1427)
- ๐จ e07a8ec Static key refactoring (#1463)
- d5ec6a5 Increase fulfill safety window (#1466)
- 6c81f95 Use length-delimited byte-aligned codecs (#1442)
- 928d47c Add a fee provider saving feerates to database (#1450)
- d9f257a Multipart FSM v2 (#1439)
- 4199128 MPP preimage received event (#1445)
- 365d091 More aggressive channel exclusion (#1441)
- 88cb24d Routing hints balance (#1443)
- โก๏ธ 0563d6d Update allnodes API (#1468)
- 0619b20 Clarify trampoline route not found error (#1455)
- ๐ฐ 6d9dbb8 Onion payload and HTLC in-flight metrics (#1464)
- ๐ฒ 85163cb Add context logging to route request (#1469)
- โ 5a83d2f Fix transaction fee test (#1454)
- 7ec3ba8 Fix channelstats (for real?) (#1470)
- 68dfc6c Rework feerate mismatch (#1473)
- ๐ b63c4aa Postgresql support (#1249)
- ๐ ae3d396 Remove the command buffer (#1476)
- โก๏ธ 26fdc62 Update backup handler and add DB metrics (#1475)
- โ 23b5fb9 Fix commitments fuzz test (#1479)
- d22f840 Replace Travis by Github Action (#1477)
- adf4da6 Handle invoices with 0 amount (#1480)
- โก๏ธ batch channel updates (
-
v0.4 Changes
July 15, 2020๐ 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 withsendrawtransaction
. 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 basicallymvn install -DskipTests
is enough to buildeclair-node
andeclair-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:- 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
๐ 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 inSHA256SUMS.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)
-
v0.3.10-android
July 16, 2020 -
v0.3.9-android
June 24, 2020