Weekly Edition for Thursday, Jul 22


project release date
eclair v0.6.1

Eclair v0.6.1

This release makes major performance improvements, includes a few bug fixes and several new features. It is fully compatible with 0.6.0 (and all previous versions of eclair).

Major changes

Performance improvements


Eclair now uses write-ahead logging in Sqlite (#1871). WAL is better suited to our DB access patterns, and is both much more performant and safer than the default rollback journal that we were using previously. > 1. WAL is significantly faster in most scenarios. > 2. WAL provides more concurrency as readers do not block writers and a writer does not block readers. > 3. Disk I/O operations tends to be more sequential using WAL. > 4. WAL uses many fewer fsync() operations.

This small change improves performance by more than 5x.

Payment Handling

Invoice generation (#1878) and handling of incoming payments (#1880) are now processed in parallel, resulting in a higher throughput under load.

Improved Postgres support

This is the continuation of an effort to make PosgreSQL production-ready. The database schema has been reworked (#1866) and is now better organized, with appropriate types for timestamps (#1862). There have been several concurrency-related bug fixes.

We have also added JSONB columns for local channels and for network announcements (#1865). All individual data fields can now be accessed from SQL and indexed, which is very convenient for advanced analysis and tuning of a routing node.

Upfront shutdown script

This release adds support for option_upfront_shutdown_script (feature bits 45). This feature lets you specify a closing address when you open a channel: your peer will ensure that when you close, your funds can only go to that address.

It can be useful to protect against future hacks of your node, because the attacker won't be able to close your channels and send the funds to an address that he controls. However, it doesn't prevent the attacker from exfiltrating funds by paying lightning invoices, so you shouldn't rely on this feature alone to make your node hack-proof.

This option is disabled by default, but can be enabled in your eclair.conf. Note that if you enable it, the closing address will be automatically generated by your bitcoind node.

Transaction publishing improvements

This release reworks our internal transaction publishing architecture (see #1844 for details). The new architecture is more flexible, provides better logging and makes it easy to add dynamic fee bumping in the future for anchor output channels. It will also make it easier to automatically use CPFP to ensure funding transactions confirm before the 2016 blocks timeout is reached.

API changes

This release updates a few APIs:

  • parseinvoice displays Bolt 11 invoices routing hints (#1833)
  • Plugins can inject their own routes into the API instead of spawning a separate HTTP server (#1805 and #1819)

Miscellaneous improvements and bug fixes

  • Eclair now uses Bitcoin Core 0.21.1 by default (#taproot)
  • Eclair now supports warning messages
  • Eclair uses additional entropy on top of the operating system RNG to mitigate random number generation failures (#1774)

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


Eclair builds are deterministic. To reproduce our builds, please use the following environment (*):

  • Ubuntu 20.04
  • AdoptOpenJDK 11.0.6
  • Maven 3.8.1

Use the following command to generate the eclair-node package:

mvn clean install -DskipTests

That should generate eclair-node/target/eclair-node-0.6.1-XXXXXXX-bin.zip with sha256 checksums that match the one we provide and sign in SHA256SUMS.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.


This release is fully compatible with eclair v0.6.0. You don't need to close your channels, just stop eclair, upgrade and restart.


a658fa26f Set version to 0.6.1-SNAPSHOT (#1813) 76894bd2e Add additional PRNG (#1774) 9a20aade0 Allow plugins to inject their own routes into API (#1805) d437ea1ed Improve API plugin support (#1819) 98cae455f Rename pending_relay to pending_commands (#1822) e8c33baf5 Various improvements and fixes (#1817) f829a2e8c Add json type hints on channel data (#1824) 4dc2910c4 Make result set an iterable (#1823) 6f6c458a2 Add metrics on channels processing time (#1826) 43a89f865 Add a random delay before processing blocks (#1825) af618bc44 Symmetrical HTLC limits (#1828) dbecb28d9 Include routing hints in parseinvoice API call response (#1833) 2b6d564d2 Expose eclair datadir to plugins (#1837) bd6bad1bf Fix eventually statements (#1835) a7bb2c2b2 Do not store CannotAffordFees errors (#1834) d4b25d565 Udpate to Bitcoin Core 0.21.1 (#1841) e750474c7 Use bitcoin-lib 0.19 (#1839) bbfbad597 Validate payment secret when decoding (#1840) afb1b41ea Update bolt 3 spec test vectors (#1669) d43d06f6e Rework TxPublisher (#1844) 45204e238 Schedule backup at regular interval (#1845) 85ed4338a Reject 0-value trampoline payments (#1851) f857368ea Make trampoline payments use per-channel fee and cltv (#1853) f52c3dd3f Decode warning messages (#1854) 516929b1a Fix default file backup config (#1857) 4ca5c62ab Remove println in tests (#1861) 291c128ca Reduce some log levels (#1864) d9a03a52b Use warning messages for connection issues (#1863) af8394a28 Add support for dual db backend (#1746) 3a573e267 Improve message for CannotRetrieveFeerates error (#1859) bd57d41ef Add a globalbalance api call (#1737) 08faf3b7f Add json columns in Postgres (#1865) f8feb1959 Use schemas in Postgres (#1866) cea3fc026 Use proper data type for timestamps in Postgres 2 (#1862) 95fffe348 Reduce pg transaction isolation (#1860) 547d7e700 Create chain directory (#1872) e9df4eece Channels data format migration (#1849) 733c6e768 Refactor global balance tests (#1874) ca51a2d16 Enable WAL mode on Sqlite (#1871) 3ae9a4ae3 Additional reestablish test (#1875) d02760d96 Fail unsigned outgoing htlcs on force-close (#1832) 3bb7ee8a3 Parallel payment request generation (#1878) 51824028b Fix flaky channel integration tests (#1879) b4183edfa Fetch incoming payments in parallel (#1880) 8c49f779a Fix payment handler tests (#1882) 01b40730f Implement option-upfront-shutdown-script (#1846) 79729c78c Update README (#1881) c22596bb9 Update dependencies and enable fatal warnings (#1885) adf36de0e Fix yet another flaky test (#1886) 3f1c2506a Fix watcher flaky test (#1883) c8c5e76d2 Update akka-http-json4s dependency (#1889) 5fa8fedb9 Set version to 0.6.1 (#1887)

ledger-live-common v20.7.0
  • disabled work of {LL-6084 - Filter ANN by Live versions (#1310)}. (meaning QA don't need to test on the live-common bump itself)
ledger-live-common v20.6.0

BSC support (#1306)

Generalisation of ethereum family implementation to easily integrate BSC support.


  • test Ethereum and erc20 support
  • test Ethereum Classic support
  • BSC support itself


  • LL-6408 [Polkadot] Handle minimum bond balance for unbond and rebond
  • LL-6299 add displayName to App (#1309)
  • LL-5794
  • LL-6020 remove Zcoin install key (#1311)
  • added lido dependency (#1312) (installing Lido will install Ethereum)
ledger-live-desktop v2.31.1

🚀 Features

  • View your NFTs on rainbow.me integration on the Discover section
  • Zerion now on Live's Discover section as well
  • Update banner available globally throughout the application
  • Support URI scheme on Linux

🐛 Fixes

  • Polkadot operations better handled
ledgerjs v6.2.0

Add BSC support

  • the crypto currencies
  • the tokens


  • node-hid package: LL-4600 Map HID errors to DisconnectedDeviceDuringOperation (#620)
lnd v0.13.1-beta

This marks the first minor release of the 0.13.x cycle. This release is primarily a maintenance release including several bug fixes that didn't make it into 0.13.0, a series of fixes for introduced regressions, and a few small optimizations.

Database Migrations

This release does not contain any database migrations.

Verifying the Release

In order to verify the release, you'll need to have gpg or gpg2 installed on your system. Once you've obtained a copy (and hopefully verified that as well), you'll first need to import the keys that have signed this release if you haven't done so already:

curl https://keybase.io/bitconner/pgp_keys.asc | gpg --import
curl https://keybase.io/roasbeef/pgp_keys.asc | gpg --import

Once you have the required PGP keys, you can verify the release (assuming manifest-roasbeef-v0.13.1-beta.sig and manifest-v0.13.1-beta.txt are in the current directory) with:

gpg --verify manifest-roasbeef-v0.13.1-beta.sig manifest-v0.13.1-beta.txt

You should see the following if the verification was successful:

gpg: Signature made Wed Sep 30 17:35:20 2020 PDT
gpg:                using RSA key 4AB7F8DA6FAEBB3B70B1F903BC13F65E2DC84465
gpg: Good signature from &#34;Olaoluwa Osuntokun <laolu32@gmail.com>&#34; [ultimate]

That will verify the signature of the manifest file, which ensures integrity and authenticity of the archive you've downloaded locally containing the binaries. Next, depending on your operating system, you should then re-compute the sha256 hash of the archive with shasum -a 256 <filename>, compare it with the corresponding one in the manifest file, and ensure they match exactly.

Verifying the Release Timestamp

From this new version onwards, in addition time-stamping the git tag with OpenTimeStamps, we'll also now timestamp the manifest file along with its signature. Two new files are now included along with the rest of our release artifacts: manifest-roasbeef-v0.13.1-beta.txt.asc.ots.

Assuming you have the opentimestamps client installed locally, the timestamps can be verified with the following commands:

ots verify manifest-roasbeef-v0.13.1-beta.sig.ots -f manifest-roasbeef-v0.13.1-beta.sig

Alternatively, the open timestamps website can be used to verify timestamps if one doesn't have a bitcoind instance accessible locally.

These timestamps should give users confidence in the integrity of this release even after the key that signed the release expires.

Verifying the Release Binaries

Our release binaries are fully reproducible. Third parties are able to verify that the release binaries were produced properly without having to trust the release manager(s). See our reproducible builds guide for how this can be achieved. The release binaries are compiled with go1.16.3, which is required by verifiers to arrive at the same ones. They include the following build tags: autopilotrpc, signrpc, walletrpc, chainrpc, invoicesrpc, routerrpc, watchtowerrpc and monitoring. Note that these are already included in the release script, so they do not need to be provided.

The make release command can be used to ensure one rebuilds with all the same flags used for the release. If one wishes to build for only a single platform, then make release sys=<os-arch> tag=<tag> can be used.

Finally, you can also verify the tag itself with the following command:

$ git verify-tag v0.13.1-beta
gpg: Signature made Mon 19 Jul 2021 06:04:34 PM UTC using RSA key ID 9B280306
gpg: Good signature from &#34;Olaoluwa Osuntokun <laolu32@gmail.com>&#34;

Verifying the Docker Images

To verify the lnd and lncli binaries inside the docker images against the signed, reproducible release binaries, there is a verification script in the image that can be called (before starting the container for example):

$ docker pull lightninglabs/lnd:v0.13.1-beta
$ docker run --rm --entrypoint=&#34;&#34; lightninglabs/lnd:v0.13.1-beta /verify-install.sh
$ OK=$?
$ if [ &#34;$OK&#34; -ne &#34;0&#34; ]; then echo &#34;Verification failed!&#34;; exit 1; done
$ docker run lightninglabs/lnd [command-line options]

Building the Contained Release

Users are able to rebuild the target release themselves without having to fetch any of the dependencies. In order to do so, assuming that vendor.tar.gz and lnd-source-v0.13.1-beta.tar.gz are in the current directory, follow these steps:

tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.13.1-beta.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.13.1-beta&#34; ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.13.1-beta&#34; ./cmd/lncli

The -mod=vendor flag tells the go build command that it doesn't need to fetch the dependencies, and instead, they're all enclosed in the local vendor directory.

Additionally, it's now possible to use the enclosed release.sh script to bundle a release for a specific system like so:

make release sys=&#34;linux-arm64 darwin-amd64&#34;

⚡️⚡️⚡️ OK, now to the rest of the release notes! ⚡️⚡️⚡️

Release Notes

https://github.com/lightningnetwork/lnd/blob/master/docs/release-notes/release-notes-0.13.1.md /laolu32@gmail.com/laolu32@gmail.com



type rfc # title date status
bip bip-0371 BIP 371: Taproot Fields for PSBT 2021-07-20 Merged
bip bip-0009 Update bip-0009.mediawiki 2021-07-20 Closed
bip X remove int_from_bytes in lift_x call since it is done internally 2021-07-20 Merged
bolt X clarification: when does max_accepted_htlcs apply? 2021-07-20 Update
bolt peer protocol BOLT 2: quiescence protocol. 2021-07-19 Update
bolt X Lightning Specification Meeting 2021/06/21 2021-07-16 Closed
bolt X Funding nodes 2021-07-22 Closed
slip slip-0010 SLIP-0010: Clarification required on conflicting instructions regarding the seed 2021-07-22 Closed
slip slip-0010 SLIP10 v2? 2021-07-22 Update
slip X Remove that CJ must be P2WPKH 2021-07-22 Update