Bitcoin Optech Newsletter #85
This week’s newsletter announces the release of C-Lightning 0.8.1, requests help testing a Bitcoin Core maintenance release, summarizes a discussion about taproot versus implementing MAST and schnorr signatures separately, describes new ideas for using PoDLEs in LN channel construction, and highlights a new implication of work on privacy-enhanced payments to unannounced LN channels. Also included are our regular sections about notable changes to popular services, client software, and infrastructure projects.
Bitcoin Optech Newsletter #84
This week’s newsletter seeks help testing a Bitcoin Core release candidate and summarizes some discussion about the BIP119 OP_CHECKTEMPLATEVERIFY proposal. Also included is our regular section about notable code and documentation changes.
Bitcoin Optech Newsletter #83
This week’s newsletter announces the release of Eclair 0.3.3, requests help testing a Bitcoin Core maintenance release, links to a new tool for experimenting with taproot and tapscript, summarizes discussion about safely generating schnorr signatures with precomputed public keys, and describes a proposal for interactive construction of LN funding transactions. Also included is our regular section about notable changes to popular Bitcoin infrastructure projects.
Bitcoin Optech Newsletter #82
This week’s newsletter announces the release of LND 0.9.0-beta, asks for help testing a release candidate for a Bitcoin Core maintenance release, describes a proposal to break the linkability between UTXOs and unannounced LN channels, and summarizes a modification to the proposed SIGHASH_ANYPREVOUTANYSCRIPT signature hash that may simplify management of payments in eltoo-based payment channels. Also included are our regular sections for popular Bitcoin StackExchange Q&A and notable changes to popular Bitcoin infrastructure and documentation projects.
Bitcoin Optech Newsletter #81
This week’s newsletter requests help testing a pre-release of the next major version of LND, seeks review of a method for sending payments as part of a chaumian coinjoin mix, links to a work-in-progress protocol specification for discreet log contracts, and includes our regular sections about notable changes to popular services, client software, and infrastructure projects.



project release date
c-lightning v0.8.1

We're pleased to announce 0.8.1, named by @vasild (who last release was a new committer!)

Despite the holiday break and Rusty's month off, commit numbers are only down 20%!

Highlights for Users

  • We now support gifting msat to the peer when opening a channel, via push_msat, providing a brand new way to lose money!
  • Invoice routehints can be overridden using exposeprivatechannels: try setting to [] to eliminate all of them to fit your invoice in twitter messages!
  • Wallet withdraw transactions now set nLocktime, making them blend in more with other wallets.
  • Preliminary support for plugins hooks which can replace the default bitcoin-cli with other blockchain querying methods (API may change in future releases though!).
  • listforwards now records the outgoing short_channel_id, even if it wasn't possible to start forwarding.

Highlights for the Network

  • Plugins can set additional feature bits, for more experimentation.
  • More than one plugin can register for the htlc_accepted hook: others will become multi-user in future releases.
  • Documentation updates, which had lagged recent changes.
  • Prevent a case where grossly unbalanced channels could become unusable.

More details can be found in

Thanks to everyone for their contributions and bug reports; please keep them coming!

Since 0.8.0 we've had 257 commits from 17 different authors, with 5 first-time contributors!

  • Niklas Claesson @NickeZ
  • @minidisk1147
  • Ken Sedgwick @ksedgwic
  • Zoe Faltibà @zoedberg
  • Glen Cooper @GlenCooper

Cheers, Rusty, Lisa, Christian, and ZmnSCPxj.

ledger-live-common v12.0.0
  • live-common now depends on isomorphic-ws and axios and userland no longer have to setNetwork.
  • Better documentation
  • Fixes apps logic and introduce more hooks to be used by desktop and mobile
  • Fixes balanceHistory reconciliation
  • Support of an incoming more performant node bindings of libcore
  • Introduces starred in Account model.
  • Fixes libcore error remapping.
  • Merge TRON complete support.
  • Improve Firmware Update logic to support MCU updates.
  • Drop unused capabilities field in ChildAccount.
  • Drop apps polyfill (was used in early implementation of Manager v2 poc)


  • introduces appsCheckAllAppVersions command
ledgerjs v5.10.0
  • update node-hid
  • release of @ledgerhq/hw-app-trx TRON app bindings
ledgerjs v5.9.0
lnd v0.9.1-beta.rc1

This marks the first minor release in the v0.9.0 series. As this is a minor release, no major features are included in this release, but a number of important bug fixes are present. These bug fixes should eliminate the current known instance of erroneous force closes between nodes, optimize invoice expiry for larger nodes, and fix some accounting issues related to estimating the correct amount of available balance when forwarding.

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 | gpg --import

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

gpg --verify manifest-v0.9.1-beta.rc1.txt.sig

You should see the following if the verification was successful:

gpg: assuming signed data in 'manifest-v0.9.1-beta.rc1.txt'
gpg: Signature made Thu Feb 20 20:38:37 2020 PST
gpg:                using RSA key 4AB7F8DA6FAEBB3B70B1F903BC13F65E2DC84465
gpg: Good signature from &#34;Olaoluwa Osuntokun <>&#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 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.13.7, which is required by verifiers to arrive at the same ones. They include the following build tags: autopilotrpc, signrpc, walletrpc, chainrpc, invoicesrpc, routerrpc, and watchtowerrpc. Note that these are already included in the release script, so they do not need to be provided.

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

git verify-tag v0.9.0-beta

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.9.1-beta.rc1.tar.gz are in the current directory, follow these steps:

tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.9.1-beta.rc1.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X; ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X; ./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 script to bundle a release for a specific system like so:

LNDBUILDSYS=&#34;linux-arm64 darwin-amd64&#34; ./build/release/

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

Release Notes

RPC Configuration

A new flag (--tlsautorefresh) has been added to instruct lnd to re-generate TLS certs if the certs on disk differ from the specified configuration options. An example would be if you add a new TLS domain, but the certs on disk only have localhost as a valid domain for the cert.

We've updated a config on our end to ensure all default values are ALWAYS emitted when using the REST interface. As an example, if the field &#34;f&#34; wasn't set, rather than omitting it in our response, we'll emit: &#34;f&#34;: false&#34;.

Peer to Peer Gossip

We'll now send blank response if a peer sends us a request for channels on a different chain than we advertise.

Invoice Handling

A bug has been fixed that would result in a deadlock with the invoice managing sub-system on a rare occasion.

Batch invoice expiry has been optimized for larger nodes. Before this change, very large nodes (10s of thousands of invoices) may have witnessed very slow start up if they just upgraded to this new version, or had a large number of invoices expire while they were offline.


A bug has been fixed in the wallet where rescans would include more addresses that actually necessary. This would result in slower times to readiness for larger nodes, and also trigger an increased amount of false positives for neutrinos nodes.

Channel State Machine

A number of accounting related fixes have been made to the channel state machine. With these fixes, we'll now more accurately estimate the types of HTLCs that the commitment transaction can carry, properly factoring in things like the added cost of an HTLC, the reserve, and asymmetric dust values across commitments. User affected by this bug might've seen weird retry loops when path finding due to not properly recoding the "available balance" in one's commitment transaction. This bug fixes also preps us for payment splitting, as balance will run lower as we're able to utilize multiple channels to make a single payment.

We now perform stricter accounting w.r.t the maximum number of HTLCs allowed in a single commitment transaction.

A series of fixes in our unit tests will now properly exercise expected behavior between other implementations.

A bug that would at times causes a de-sync that would lead to an inadvertent force close between lnd nodes, and also other implementations.

On-Chain Contract Handling

A new config option has been added to allow mobile clients to give their connected parties a chance to settle/fail an HTLC before we go to chain. This new config option takes the form of --payments-expiration-grace-period=T, where T is a "duration" (1s, 5s, 5m, 5h, etc). Developers deploying lnd for mobile applications may want to set this value as they see fit, if their users are reporting frequent channel force closes due to intermittent connectivity.


The full list of changes since v0.9.0-beta can be found here:

Contributors (Alphabetical Order)

Andras Banki-Horvath Eugene Seigel Johan T. Halseth Joost Jager Olaoluwa Osuntokun Oliver Gugger Roei Erez Wilmer Paulino /



type rfc # title date status
bip bip-0039 Add BIP39 Elixir implementation (mnemo) 2020-02-24 Closed
bip bip-0340 BIP 340 improvements 2020-02-24 Update
bip X Fix "Using a single OP_CHECKSIGADD-based script" 2020-02-24 Update
bip bip-0340 Typo in BIP340 2020-02-23 Update
bip bip-0039 Replace elixir bip39 implementation 2020-02-21 Update
bip bip-0032 BIP-32: fix RFC link 2020-02-20 Update
bip bip-0119 Fix links in bip-0119.mediawiki 2020-02-20 Merged
bip bip-0119 Update bip-0119.mediawiki 2020-02-19 Merged
bip bip-0119 Fix Colorings in BIP-0119 states.svg 2020-02-19 Merged
bip bip-0340 bip-0340: typo change intent to intend 2020-02-19 Merged
bip X [trivial] remove duplicate of 2020-02-19 Merged
bip bip-0340 BIP 340: Recommend synthetic nonces and verifying signing output 2020-02-19 Merged
bip X Fix broken link 2020-02-19 Merged
bip bip-0042 Rewrite BIP-0042 2020-02-19 Closed
bip X Fix typos discovered by codespell 2020-02-19 Update
bolt X Avoid stuck channels after fee increase by dipping into reserve 2020-02-24 Update
bolt X Avoid stuck channels after fee increase with additional reserve 2020-02-24 Update
bolt routing gossip WIP: BOLT 7: Directed message support. 2020-02-24 Update
bolt payment encoding [BOLT11] Feature Bits MUST be required 2020-02-21 Update
bolt X fix typo in 'HTLC Output Handling' section 2020-02-20 New PR
bolt X Add advisory section for wumbo channels confirmations 2020-02-18 Update
bolt X Lightning Specification Meeting 2020/02/03 2020-02-18 Update
bolt X A home for BOLT 2020-02-18 Update
bolt X Clarify numerical comparison of pubkeys 2020-02-18 Merged
bolt X Keep HMAC case consistent 2020-02-18 Merged
bolt messaging BOLT 1: add networks to init message. 2020-02-18 Merged
bolt X Lightning Specification Meeting 2020/02/17 2020-02-18 Update
bolt X Lightning Specification Meeting 2020/03/02 2020-02-18 Update
bolt X Single-option large channel proposal 2020-02-18 Merged
bolt payment encoding BOLT11 additional and negative tests 2020-02-17 Update
bolt X clarification: when does max_accepted_htlcs apply? 2020-02-17 New Issue
bolt X Remove reference to DER encoding for public keys in compressed format 2020-02-17 Merged
bolt X Stuck channels because of small fee increase 2020-02-14 Update
bolt X Fix a typo in `insert_secret` pseudo code 2020-02-14 Merged
bolt X Polish sending node requirements of `update_add_htlc` 2020-02-11 New PR
bolt X Anchor outputs 2020-02-10 Update
slip X Add FCH 2020-02-22 Closed
slip slip-0044 slip-0044.Add FCH 2020-02-22 New PR
slip X Update Desmos 2020-02-21 Merged
slip slip-0044 slip-0044: add AMO 2020-02-18 Closed
slip slip-0044 add BNT to slip-0044 2020-02-18 Merged
slip X Add Newton information 2020-02-17 Closed
slip X Update to add CLX 2020-02-17 Closed
slip slip-0044 add OCEAN to slip-0044 2020-02-17 Merged
slip X Add BCTR (Decentralized Identifier) as 1032 2020-02-13 Merged
slip X Add ndau coin ID 2020-02-11 Merged
slip slip-0013 Extending SLIP 13 and SLIP 17 to accommodate synthesis of keys for certs 2020-02-11 Update