github ACINQ/eclair v0.3.2
Eclair v0.3.2

latest releases: v0.10.0, v0.4.23-android-phoenix, v0.4.22-android-phoenix...
4 years ago

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 !

Don't miss a new eclair release

NewReleases is sending notifications on new releases.