lnd v0.4.1-beta
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 <[email protected]>" [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.
RPC
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.
Configuration
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.
Litecoin
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 lnd
s 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
Changelog
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