Eclair v0.4.1 Release Notes
Release Date: 2020-07-15 // almost 4 years ago-
๐ 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 (