@Roasbeef Roasbeef released this Apr 3, 2018 · 1866 commits to master since this release

Assets 23

This release marks a minor patch release to the recently released v0.4-beta! No new major features have been added in this release. Instead, this release packages a series of bug fixes in addition to modifications to ensure better cross-implementation compatibility. No database level breaking changes have been made in this release, as a result users should be able to perform a clean update.

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 roasbeef's key if you haven't done so already:

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

The keybase page of roasbeef includes several attestations across distinct platforms in order to provide a degree of confidence that this release was really signed by "roasbeef".

Once you have his PGP key you can verify the release (assuming manifest-v0.4-beta.txt and manifest-v0.4.1-beta.txt.sig are in the current directory) with:

gpg --verify manifest-v0.4.1-beta.txt.sig

That will verify the signature on the main manifest page which ensures integrity and authenticity of the binaries you've downloaded locally. Next, depending on your operating system you should then re-calculate the sha256 sum of the binary, and compare that with the following hashes (which are included in the manifest file):

dd4ca874416f3a261b0e4a88c758585061d1b936d93158f6e7c0a8b0dbca6c05  lnd-darwin-386-v0.4.1-beta.tar.gz
6c46bd9a6ebd27f99eea8324c32c026983359c1d117323d9e42fa3c8ac7e49f5  lnd-darwin-amd64-v0.4.1-beta.tar.gz
0887700ffe7822fed404d6912dcb590b205629b49557edf94c8b9b6fb595b877  lnd-dragonfly-amd64-v0.4.1-beta.tar.gz
390a439efe6cd4c62e58c99415856590ec0ed7cbca6f79f89d9067a73c53017c  lnd-freebsd-386-v0.4.1-beta.tar.gz
8e9c23f71b52a0ebd219445a7d8102072c202042e18605bd95bf905bf90dc226  lnd-freebsd-amd64-v0.4.1-beta.tar.gz
8ef165cf3be3ec9a1f2e03cc305ba2d6a379449552a98d9af3b83fdfeca7f6e5  lnd-freebsd-arm-v0.4.1-beta.tar.gz
5aa9c77506a0fee1060bc88e4cd18f46fd05147ffb14d264b788b0fcd92da724  lnd-linux-386-v0.4.1-beta.tar.gz
f4582cd3ae99488165dee46f2afa7d43842413e1bdd59baba63aafd34a1e3246  lnd-linux-amd64-v0.4.1-beta.tar.gz
4ee088593b611672e51f9c131177d3c50084312ed8c4a78a04c717ed83045bc9  lnd-linux-arm-v0.4.1-beta.tar.gz
03c0b90e71067a86e14555f92071cffc641aa3cb8a11d480816e3448ea690993  lnd-linux-arm64-v0.4.1-beta.tar.gz
ab9d50e3ee784dae2ee5d65bfc0b7c5016dff760222dcc3cf10975b39fe13750  lnd-linux-mips64-v0.4.1-beta.tar.gz
eb2ec3fcaae1fee29c1872e20b8d5cad208902b55dc50e539eb6fe92bfaae9b1  lnd-linux-mips64le-v0.4.1-beta.tar.gz
9659a6713f5c9f7042fead29d046189fd7e16a2381fbbb92f8386fe35e55ea76  lnd-linux-ppc64-v0.4.1-beta.tar.gz
0ea45ca68a76ddd06b71c9897fcb31937f41a553a6276ffbd5fda0405dd30d99  lnd-netbsd-386-v0.4.1-beta.tar.gz
218adf117f4a2f4597f43f5065c67870c90fcfd91d635674d2e30bf310d1d66a  lnd-netbsd-amd64-v0.4.1-beta.tar.gz
3510bcda313017837eb47d9b0345e7a6c5157f19fe4a503649e02be4117b311b  lnd-openbsd-386-v0.4.1-beta.tar.gz
de86c0a401bfc95cb7432758d092fed01ee9af0652407d77736d7dad2d5949f1  lnd-openbsd-amd64-v0.4.1-beta.tar.gz
6c81cfa8fb6459b18a2c86843b47acb49e0325829cfd109d71dcf4b029ec5948  lnd-windows-386-v0.4.1-beta.zip
de22da756a51a298bfe7db83e3d7d5e9b21173f0c74dcaaadfe4a349ec16a786  lnd-windows-amd64-v0.4.1-beta.zip

One can use the shasum -a 256 <file name here> tool in order to re-compute the sha256 hash of the target binary for your operating system. The produced hash should be compared with the hashes listed above and they should match exactly.

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

git verify-tag v0.4.1-beta

You should see the following if the verification was successful:

gpg: Signature made Mon Apr  2 17:10:37 2018 PDT
gpg:                using RSA key 964EA263DD637C21
gpg: Good signature from "Olaoluwa Osuntokun <laolu32@gmail.com>" [ultimate]

This release can also be found in roasbeef's public keybase folder.

Notable Changes

DNS Bootstrapping

Reported issues concerning the initial automatic peer bootrapping via DNS have been resolved. In the case that lnd had to fallback to direct TCP resolution, a bug prevented the DNS name from being fully qualified. This new release ensures we craft a valid DNS query.

Channel Funding

The min channel size that we'll create outbound has been raised to 20k satoshis.

When using the current version of autopilot users can now set the min and max channel sizes. Before this change, as this mode was primarily used on testnet, the default pilot would at times create a single channel using all available funds, which in many cases is undesirable.

Users are now able to set a custom value for the CSV parameter imposed on the remote node using the new --remote_csv_delay argument of the openchannel command. This is useful as peers that have existing business relationships may wish to relax the time-based security parameter in order to allow swift channel force closures.

A rounding error (#943) has been fixed. This would at times be an issue when converting from BTC to satoshis as returned by the various RPC interfaces. With this fix we ensure that we can no longer at times leaks a few satoshis when creating channels. On-chain sends were unaffected.


The ListChannels command now has the ability to filter out active, public, private, and inactive channels (#834). The lncli listchannels command has also gained the ability to filter out these channels with the following new arguments:

  • --active_only
  • --inactive_only
  • --public_only
  • --private_only

A new macaroon type has been added! In this release, lnd will now generate an invoice.macaroon invoice. The capabilities that this macaroon can unlock are restricted only to: listing invoices, generating invoices, subscribing for invoice notifications, and also generating new addresses (#904).

One thing to note is that we'll only generate the invoice macaroon if none of the macaroons are found. This mirrors the existing behavior to allow an instance to be spun up, only having a particular macaroon in its data directory. In order for this new macaroon to be generated, users need to delete their old set of macaroons on disk.

Payment routing

Several cross-implementation payment routing issues have been resolved. Users should find they have an easier time routing directly to another implementation, or taking a route that traverses other implementations. Additionally, we'll now more aggressively route around any faulty channels.nodes based on prior routing failures encountered.


A new --tlsdomain config line option has been added (#864). This allows users to generate RPC certs that themselves bind to a particular domain. With this command, users are now able to expose an lnd RPC service that's accessed directly via a domain over TLS.

A new --minchansize config option has been added. This option allows users to configure the smallest channel size they'll accept as an incoming payment. Using this command, users can start to filter out the set of incoming channel requests in order to ensure their node has a healthy set of usable channels. The default value for this is 20k satoshis.

Channel State Machine

A bug that would at times cause channel desynchronization when channels peers use asymmetric dust values has been resolved (#920).

We'll now ensure that we'll only accept sane commitments. This entails performing a series of quick checks for standardness and context-free consensus rules when we create or accept new commitments. Uncompliant commitments will be rejected.

We'll now accept incoming payments that pay more than the amount stated on the invoice.

Attempted cooperative channel closures while a commitment still has lingering HTLCs are now disallowed.


Several minor bugs have been fixed within lnd's Litecoin mode. The most notable fix is properly using a sane dust value to ensure we only produce easily mineable commitments.

bitcoind Chain Backend

The bitcoind chain backend will now properly reconnect to bitcoind's interface for zmq in the case of a connection drop, or restart by bitcoind (c653b62).

Peer to Peer Networking

We'll no longer disconnect peers that send address types within NodeAnnouncement messages that we don't know of. This caused unnecessary connection flapping in the prior release as there are several nodes on mainnet which forward such messages (which is spec compliant).

A series of bugs have been fixed concerning automatic peer reconnection (#982), exponential backoff when retrying connections to peers. Additionally, we'll now properly perform the brontide handshake asynchronously (#1001). As a result of these fixes, users should see overall lower memory usage and less pending connection manager requests. Subsequent releases will start to introduce dynamic ban/DoS protection to further harden lnds P2P interface.

Build System

This new release of lnd packages an easier to use build system for those that are unfamiliar with go. lnd now has a primary Makefile. A new set of documentation has been added to detail the various commands and arguments of each make directive:

When using the make build command, lnd will compile in the commit hash that it was built against. This is helpful when debugging as it makes it easier to bisect git commits. Additionally, users will be able to easy discern which commit (in addition to latest released version) that they're running:

⛰./lnd --version
lnd version 0.4.1-beta commit=f6faf2c268240789be02a463d31bcb801229e51a


The full list of changes since 0.4-beta can be found here:

Contributors (Alphabetical Order):

  • Adrien Emery
  • Alex Bosworth
  • Alex Gessner
  • Andreas M. Antonopoulos
  • Brenden Matthews
  • bretton
  • Chakib Benziane
  • Conner Fromknecht
  • Corné Plooy
  • François "mably" Masurel
  • ftufek
  • Johan T. Halseth
  • Jonathan Underwood
  • João Mesquita
  • Laurent Raufaste
  • Matt Campbell
  • Matt Drollette
  • Nalin Bhardwaj
  • Olaoluwa Osuntokun
  • Patrick Walters
  • Perdouille
  • Steven Roose
  • Wilmer Paulino
  • yohei okada