Pre-release

@Roasbeef Roasbeef released this Nov 7, 2017 · 1625 commits to master since this release

Assets 7

This release is the second minor release for the application! Several bugs have been fixed on the backend. Additionally, the UI has received a few minimal updates, making the application much easier to use and understand.

NOTE: the version of lnd packaged includes a breaking change. As a result, before updating we recommend that users close out all their active channels, and also transfer any testnet coins they wish to hold onto to an external wallet before updating.

Before updating, users will need to remove all data from lnd's home data directory. This is required as there have been some breaking changes in neutrino, the light client that lnd uses to interact with Bitcoin's test network. Depending on your operating system, the data directory will be found in a different location on the file system:

  • MacOS: $HOME/Library/Application Support/Lnd
  • Windows: %LOCALAPPDATA%\Lnd
  • Linux: ~/.lnd

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 provoide 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.1.2-alpha.txt and manifest-v0.1.2-alpha.txt.gpg are in the current directory) with:

gpg --verify manifest-v0.1.2-alpha.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):

65bcc48822af6b1ad8ab91847d8b836cc3619950ca0610ba2949eb036066e3f8  Lightning-darwin-x64v0.1.2.zip
f9b1e0d5de8b1e09ca0c50805a704fa5ed87e6aa9beb96854da35708fd4a1645  Lightning-linux-x64v0.1.2.tar.gz
e71fa98c21234a82863f60d75a31a983c67b75ebb97fc3c7b641b095f015099a  Lightning-win32-x64v0.1.2.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.

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

Notable Fixes

UI

Full txid's and public keys are now properly displayed within the UI. Previously, they would be cut off short by a trailing ellipsis, rendering them unable to be properly copied.

Commas have been inserted in all instances where satoshis are displayed for better readability for users. Additionally, minor UI tweaks have been made to ensure the currency units no longer wrap around in certain viewport sizes.

It is now possible to right click on-chain addresses, and payment requests as w'eve added a proper right-click context menu to them. On certain operating systems, the prior "click to copy into paste buffer" would not always properly work. This fix has been extended to the the menu when creating channels, in order to allow users to paste in values for any of the fields.

Authentication

The application will now properly utilize the macaroons feature of lnd when making RPC requests. As a result, the lnd instance started will now automatically fully enforce the presentation of the appropriate macaroon credential when making RPC requests.

Development Tools

When running the application in dev mode, lnd will now properly read the lnd.conf from the default data directory. This allows developers to experiment with different configurations, and even point their dev instance at a local btcd node using the RPC mode.

Security

node.js is now disabled within the rendering process. This reduces the attack suerfce as it is no longer possible to access the main process from the rendering process via arbitrary `node.js code.

Peer Bootstrapping

A DNS fallback has been added which will attempt the DNS query of TCP if UDP initially fails. The DNS resolvers of many users would filter out the response to our SRV record as they were too large for many resolvers. lnd will now detect if the initial request fails, and will fallback to a TCP based DNS resolution instead.

lnd + neutrino

Payment requests have been updated to take into account a recent change within the lightning-rfc set of specifications. The receiver will now manually specify a CLTV expiry delta value to use for the final hop. As a result, if you receive a payment request from an updated receiver, you may be unable to complete the payment as they have a distinct policy.

A bug in the way fees were calculated for multi-hop transactions has been fixed. The existence of this bug would at times render users unable to complete a multi-hop payment with a path length greater than 3.

The state machine that handles channel updates has been modified slightly to use a different scheme to assign identifiers to each HTLC. As a result, users will be unable to complete channel updates on their existing channels, and may also be unable to update newly opened channels, if they're extended to an un upgraded node.

Several possible deadlock scenarios within the peer management logic have been addressed, eliminating a large class of peer related application freezes.

The ChannelRouter within lnd will now properly handle re-orgs on-chain. This means that if a channel is re-org'd out, lnd will no longer interpret it as being active and routable.

neutrino has been updated to a new version which properly implements the new light client protocol as specified within the updated BIP. As a result, if old clients were manually pointed at an un-updated btcd node, then after this update they may not be able to sync, as the protocol messages have changed slightly.

Contributors (Alphabetical Order):

  • Brijan (DaReaper)
  • Bryan Vu
  • Case Sandberg
  • Jason Tanner