Releases: lightningnetwork/lnd
lnd v0.11.0-beta.rc2
This marks the first major release in the v0.11.0
series!
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
Once you have the required PGP keys, you can verify the release (assuming manifest-v0.11.0-beta.rc2.txt
and manifest-v0.11.0-beta.rc2.txt.sig
are in the current directory) with:
gpg --verify manifest-v0.11.0-beta.rc2.txt.sig
You should see the following if the verification was successful:
gpg: assuming signed data in 'manifest-v0.11.0-beta.rc2.txt'
gpg: Signature made Fri Aug 7 20:08:50 2020 PDT
gpg: using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7
gpg: Good signature from "Conner Fromknecht <[email protected]>" [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.14.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.
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.11.0-beta.rc2
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.11.0-beta.rc2.tar.gz
are in the current directory, follow these steps:
tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.11.0-beta.rc2.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.11.0-beta.rc2" ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.11.0-beta.rc2" ./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="linux-arm64 darwin-amd64"
⚡️⚡️⚡️ OK, now to the rest of the release notes! ⚡️⚡️⚡️
Release Notes
WIP, release will be up shortly!
Wumbo Channel Support
This version of lnd
supports accepting and creating wumbo channels! A wumbo channel is a channel whose total capcity is greater than 0.16 BTC
(the existing channel limit). Activating wumbo channel features is opt in meaning users will need to set a name flag (--protocol.wumbo-channels
) in order to use it. Most users can likely get by w/o wumbo channels, but larger nodes or exchanges/services may really benefit from the ability to manage a fewer set of larger channels.
As is, there's no limit w.r.t the size of a channel that a node will accept. However, nodes may want to limit the size of channel they'll accept in order to limt their exposure. This can be done by using a ChannelAcceptor
call back to reject all in-bound funding requests greater than a certain value.
To coincide with this feature, the existing payment limits have been lifted in the payment related RPC calls. The max payment is now bounded by what the reciever can receive, and what the sender can route over using MPP.
New Autopilot Heuristic
In this version of lnd
, we've added a new autopilot heuristic that is more robust and resistant to manipulation compared to the existing preferential attachment heuristic. This new heuristic is based on the concept betweenness centrality. The betweenness centrality metric is a essentially a measure of the number of shortest paths that pass through a particular node/vertex. The new heuristic uses this value rather than the relative number of channels a node has to make attachment (channel creation) decisions. This new heuristic should be more effective for both clients and routing nodes as as it's more indicative of a nodes potential as a routing node than simply the number of channels it has.
This new mode can be activated by passing a new argument: --autopilot.heuristic=top_centrality:1.0
to lnd. Note that it's possible to blend the old and new heuristics by specifying a another linear combination of heuristics with their total weight summing up to zero. The current heuristic still maintains the stochastic nature of the existing attachment heuristics. In later releases, we aim to improve on this, by doing a mini simulation to identify the best N
new channels a node can add to maximize the gain of its betweenness centrality metrics. Once this is complete, then this metric will actually attempt to actively better position a potential routing node in the network, rather than try to connect to the node w/ the "best" value for a given metric.
Experimental Support for new Storage Backend: etcd
In this release of etcd
, we've added experimental support for etcd
as a
new storage backend for lnd
. etcd
differs from bbolt
(the current default storage backend) in that it's a replicated database which can be run in a clustered manner. The main advantage over bbolt
is that the replicated nature eliminates the current single point of failure that is channel.db
. When activated, lnd
will store data that can be reconstructed easily locally in bbolt
(such as the channel graph), while critical data such as the current state of a channel will be replicated and stored in etcd
.
As this mode is still experimental, in order to test out this new DB mode, users will need to compile lnd
with the new kvdb_etcd
build tag: make install tags=kvdb_etcd
. Before running etcd
, users should check out the new documentation for information concerning the recommended etcd
configuration set up. Future releases will further optimize our usage of the new database backend, eventually adding support to run lnd
in a clustered mode by by using etcd
's leader election APIs.
Protocol/Spec Compliance
Sporadic Force Close Issue Resolution
This release fixes three distinct cases of erroneous force closes. All were related to the code that handles restarting channels, so nodes would regularly hit this if one of them flapped. Nodes should see increased stability across the network with this release.
ChannelAnnouncement
Feature Bit Decoding
Short Channel ID Decoding
A bug has been fixed that would otherwise cuase lnd
incorrectly decode a zero value short channel ID.
Support for Dynamic IPs and Domain Resolution for Node Addrs
In this version of lnd
, a new flag has been added to allow users that either have a dynamic IP or want to advertise the resolved IP address of a domain name: --external-hosts
. This new flag can be set to a series of external hosts. If this flag is set, then lnd
will peridically attempt to resolve the target host, advetising the new IP address. We'll also keep track of the prior IPs reported by that domain name, and will send out a new advertisement with the most up to date IP addresses if we detect a change.
RPC Enhancement and Bug Fixes
New External Coin Selection API
In this release, we've added a new set of calls to the WalletKit
sub-server that allows clients to perform custom coin selection. Along-side the existing SignRPC
sub-server calls, this set of APIs allows clients to manually construct, sign and broadcast custom transactions. This may also be combined with the new PSBT APIs to carry out complex multi-party protocols.
Three new RPC calls have been added:
ListUnspent
: a copy of the existingListUnspent
RPC inLightningClient
, which has been marked as dep...
lnd 0.11.0-beta.rc1
This marks the first major release in the v0.11.0
series!
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
Once you have the required PGP keys, you can verify the release (assuming manifest-v0.11.0-beta.rc1.txt
and manifest-v0.11.0-beta.rc1.txt.sig
are in the current directory) with:
gpg --verify manifest-v0.11.0-beta.rc1.txt.sig
You should see the following if the verification was successful:
gpg: assuming signed data in 'manifest-v0.11.0-beta.rc1.txt'
gpg: Signature made Wed Jul 29 21:21:50 2020 PDT
gpg: using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7
gpg: Good signature from "Conner Fromknecht <[email protected]>" [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.14.6
, 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.
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.11.0-beta.rc1
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.11.0-beta.rc1.tar.gz
are in the current directory, follow these steps:
tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.11.0-beta.rc1.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.11.0-beta.rc1" ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.11.0-beta.rc1" ./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="linux-arm64 darwin-amd64"
⚡️⚡️⚡️ OK, now to the rest of the release notes! ⚡️⚡️⚡️
Release Notes
WIP, release will be up shortly!
Wumbo Channel Support
This version of lnd
supports accepting and creating wumbo channels! A wumbo channel is a channel whose total capcity is greater than 0.16 BTC
(the existing channel limit). Activating wumbo channel features is opt in meaning users will need to set a name flag (--protocol.wumbo-channels
) in order to use it. Most users can likely get by w/o wumbo channels, but larger nodes or exchanges/services may really benefit from the ability to manage a fewer set of larger channels.
As is, there's no limit w.r.t the size of a channel that a node will accept. However, nodes may want to limit the size of channel they'll accept in order to limt their exposure. This can be done by using a ChannelAcceptor
call back to reject all in-bound funding requests greater than a certain value.
To coincide with this feature, the existing payment limits have been lifted in the payment related RPC calls. The max payment is now bounded by what the reciever can receive, and what the sender can route over using MPP.
New Autopilot Heuristic
In this version of lnd
, we've added a new autopilot heuristic that is more robust and resistant to manipulation compared to the existing preferential attachment heuristic. This new heuristic is based on the concept betweenness centrality. The betweenness centrality metric is a essentially a measure of the number of shortest paths that pass through a particular node/vertex. The new heuristic uses this value rather than the relative number of channels a node has to make attachment (channel creation) decisions. This new heuristic should be more effective for both clients and routing nodes as as it's more indicative of a nodes potential as a routing node than simply the number of channels it has.
This new mode can be activated by passing a new argument: --autopilot.heuristic=top_centrality:1.0
to lnd. Note that it's possible to blend the old and new heuristics by specifying a another linear combination of heuristics with their total weight summing up to zero. The current heuristic still maintains the stochastic nature of the existing attachment heuristics. In later releases, we aim to improve on this, by doing a mini simulation to identify the best N
new channels a node can add to maximize the gain of its betweenness centrality metrics. Once this is complete, then this metric will actually attempt to actively better position a potential routing node in the network, rather than try to connect to the node w/ the "best" value for a given metric.
Experimental Support for new Storage Backend: etcd
In this release of etcd
, we've added experimental support for etcd
as a
new storage backend for lnd
. etcd
differs from bbolt
(the current default storage backend) in that it's a replicated database which can be run in a clustered manner. The main advantage over bbolt
is that the replicated nature eliminates the current single point of failure that is channel.db
. When activated, lnd
will store data that can be reconstructed easily locally in bbolt
(such as the channel graph), while critical data such as the current state of a channel will be replicated and stored in etcd
.
As this mode is still experimental, in order to test out this new DB mode, users will need to compile lnd
with the new kvdb_etcd
build tag: make install tags=kvdb_etcd
. Before running etcd
, users should check out the new documentation for information concerning the recommended etcd
configuration set up. Future releases will further optimize our usage of the new database backend, eventually adding support to run lnd
in a clustered mode by by using etcd
's leader election APIs.
Protocol/Spec Compliance
Sporadic Force Close Issue Resolution
This release fixes three distinct cases of erroneous force closes. All were related to the code that handles restarting channels, so nodes would regularly hit this if one of them flapped. Nodes should see increased stability across the network with this release.
ChannelAnnouncement
Feature Bit Decoding
Short Channel ID Decoding
A bug has been fixed that would otherwise cuase lnd
incorrectly decode a zero value short channel ID.
Support for Dynamic IPs and Domain Resolution for Node Addrs
In this version of lnd
, a new flag has been added to allow users that either have a dynamic IP or want to advertise the resolved IP address of a domain name: --external-hosts
. This new flag can be set to a series of external hosts. If this flag is set, then lnd
will peridically attempt to resolve the target host, advetising the new IP address. We'll also keep track of the prior IPs reported by that domain name, and will send out a new advertisement with the most up to date IP addresses if we detect a change.
RPC Enhancement and Bug Fixes
New External Coin Selection API
In this release, we've added a new set of calls to the WalletKit
sub-server that allows clients to perform custom coin selection. Along-side the existing SignRPC
sub-server calls, this set of APIs allows clients to manually construct, sign and broadcast custom transactions. This may also be combined with the new PSBT APIs to carry out complex multi-party protocols.
Three new RPC calls have been added:
ListUnspent
: a copy of the existingListUnspent
RPC inLightningClient
, which has been marked as dep...
v0.10.4-beta
This is the 4th minor release in the v0.10.0-beta-series
. This release is only relevant for Windows users. This release includes a bug fix to the recently modified SCB logic to ensure the SCB file is closed before we attempt to rename it.
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/roasbeef/pgp_keys.asc | gpg --import
Once you have the required PGP keys, you can verify the release (assuming manifest-v0.10.4-beta.txt
and manifest-v0.10.4-beta.txt.sig
are in the current directory) with:
gpg --verify manifest-v0.10.4-beta.txt.sig
You should see the following if the verification was successful:
gpg: assuming signed data in 'manifest-v0.10.4-beta.txt'
gpg: Signature made Tue Jul 14 18:05:39 2020 PDT
gpg: using RSA key 4AB7F8DA6FAEBB3B70B1F903BC13F65E2DC84465
gpg: Good signature from "Olaoluwa Osuntokun <[email protected]>" [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.12
, 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.
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.10.4-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.10.4-beta.tar.gz
are in the current directory, follow these steps:
tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.10.4-beta.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.10.4-beta" ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.10.4-beta" ./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="linux-arm64 darwin-amd64"
⚡️⚡️⚡️ OK, now to the rest of the release notes! ⚡️⚡️⚡️
Release Notes
This release includes a single commit, which is a bug fix for Windows related to the modified SCB logic included in v0.10.4
. On the Windows platform, before a file can be renamed, if it's open, then all handles of the file need to be closed. This latest version now ensures the SCB file is closed before we attempt to rename it.
The full list of changes since v0.10.3-beta
can be found here:
Contributors (Alphabetical Order)
Olaoluwa Osuntokun
v0.10.3-beta
This is the 3rd minor release in the v0.10.0-beta-series
. Unlike v0.10.2-beta
which only includes bug-fixes, this release also includes some refactoring to the main lnd
package that allows lnd
to more easily be embedded as a normal struct (by importing the package) on other Go projects.
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/roasbeef/pgp_keys.asc | gpg --import
Once you have the required PGP keys, you can verify the release (assuming manifest-v0.10.3-beta.txt
and manifest-v0.10.3-beta.txt.sig
are in the current directory) with:
gpg --verify manifest-v0.10.3-beta.txt.sig
You should see the following if the verification was successful:
gpg: assuming signed data in 'manifest-v0.10.3-beta.txt'
gpg: Signature made Mon Jul 6 12:59:00 2020 PDT
gpg: using RSA key 4AB7F8DA6FAEBB3B70B1F903BC13F65E2DC84465
gpg: Good signature from "Olaoluwa Osuntokun <[email protected]>" [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.12
, 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.
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.10.3-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.10.3-beta.tar.gz
are in the current directory, follow these steps:
tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.10.3-beta.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.10.3-beta" ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.10.3-beta" ./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="linux-arm64 darwin-amd64"
⚡️⚡️⚡️ OK, now to the rest of the release notes! ⚡️⚡️⚡️
Release Notes
lnd
Package Refactoring
In prior releases, we've started to refactor the way lnd
is initialized and started to make it easier to emebdd lnd
in other Go applications. The primary consumer of these APIs so far has been our mobile bindings for lnd
. In this release we continue the process to further abstract the lnd
package with a series of PRs that remove a number of global variables, allow external sub-server registration, and external logging hooks.
The full list of changes since v0.10.2-beta
can be found here:
Contributors (Alphabetical Order)
Oliver Gugger
lnd v0.10.2-beta
This marks the second minor release in the v0.10.0
series! This release allows lnd
to be compatible with bitcoind 0.20
, resolves some peer connection instability issues, fixes an issue that can cause payments to hang ina state until a connection is cycled, and fixes an important bug related to an on disk Static Channel Backups (SCB).
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/roasbeef/pgp_keys.asc | gpg --import
Once you have the required PGP keys, you can verify the release (assuming manifest-v0.10.2-beta.txt
and manifest-v0.10.2-beta.txt.sig
are in the current directory) with:
gpg --verify manifest-v0.10.2-beta.txt.sig
You should see the following if the verification was successful:
gpg: assuming signed data in 'manifest-v0.10.2-beta.txt'
gpg: Signature made Mon Jul 6 12:33:41 2020 PDT
gpg: using RSA key 4AB7F8DA6FAEBB3B70B1F903BC13F65E2DC84465
gpg: Good signature from "Olaoluwa Osuntokun <[email protected]>" [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.14.4
, 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.
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.10.2-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.10.2-beta.tar.gz
are in the current directory, follow these steps:
tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.10.2-beta.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.10.2-beta" ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.10.2-beta" ./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="linux-arm64 darwin-amd64"
⚡️⚡️⚡️ OK, now to the rest of the release notes! ⚡️⚡️⚡️
Release Notes
Network Gossip Channel Announcement Feature Bit Encoding
This release fixes an existing bug that would cause us to not carry over the ChannelUpdate
level feature bits when sending a channel announcement suit to a connected node. Some nodes have started to use this space to communicate that they support "wumbo" channels. Before this change, if lnd
was instructed to send the channel announcement for a wumbo channel, it would omit this feature bit information, causing the requesting node to reject the announcement as the signature would fail. This may have cause some peer connection instability since these wumbo channels have started to be more widely propagated across the network.
Synchronous Switch <-> Link HTLC Handoff
This release modifies the way a new payment is sent to the first outgoing channel it needs to traverse before being sent off to the network. Before this commit, the router would hand the payment off to the switch in an asynchronous manner. Recently, it was brought to our attention that this behavior could at times cause a payment to unnecessarily fail later if the target link wasn't online, or not fully available. In this new release, this process is now synchronous. End users should observe that they see less internal payment failures due to out of date bandwidth hints, as is now able to full see through the addition of a new HTLC.
bitcoind Compatibility
With this new release, lnd
can now be used with bitcoind 0.20
as it's full-node chain backend.
SCB Bug Fix
This release includes an important bug fix for static channel backups. Before this release, if a new lnd
node was started with a data directory that contained an existing SCB file, then that existing file would be completely overridden by whatever channel state the new lnd
node started with.
With this new release, of lnd
, we'll fail to start if we're unable to read an existing SCB file on disk. Additionally, we'll always combine the contents of the SCB file with our in-memory channel state.
The full list of changes since v0.10.1-beta
can be found here:
Contributors (Alphabetical Order)
Andras Banki-Horvath
Olaoluwa Osuntokun
Oliver Gugger
Joost Jager
Wilmer Paulino
v0.10.3-beta.rc1
lnd v0.10.3-beta.rc1
lnd v0.10.2-beta.rc4
lnd v0.10.2-beta.rc4
lnd v0.10.2-beta.rc2
lnd v0.10.2-beta.rc2
lnd v0.10.2-beta.rc1
lnd v0.10.2-beta.rc1
lnd v0.10.1-beta
This marks the first minor release in the v0.10.0
series! This release contains no major new features. Instead this release packages a series of bug fixes, a new dry run migration mode (to test out migrations before they're applied permanently), and an enhancement to the channel selection/restrictions in the router sub-server.
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/roasbeef/pgp_keys.asc | gpg --import
Once you have the required PGP keys, you can verify the release (assuming manifest-v0.10.1-beta.txt
and manifest-v0.10.1-beta.txt.sig
are in the current directory) with:
gpg --verify manifest-v0.10.1-beta.txt.sig
You should see the following if the verification was successful:
pg: assuming signed data in 'manifest-v0.10.1-beta.txt'
gpg: Signature made Wed Jun 3 11:32:57 2020 PDT
gpg: using RSA key 4AB7F8DA6FAEBB3B70B1F903BC13F65E2DC84465
gpg: Good signature from "Olaoluwa Osuntokun <[email protected]>" [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.10
, 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.
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.10.1-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.10.1-beta.tar.gz
are in the current directory, follow these steps:
tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.10.1-beta.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.10.1-beta" ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags "-X github.com/lightningnetwork/lnd/build.Commit=v0.10.1-beta" ./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="linux-arm64 darwin-amd64"
⚡️⚡️⚡️ OK, now to the rest of the release notes! ⚡️⚡️⚡️
Release Notes
btcd Compatability
With this release, lnd
is now compatible with the current master branch of btcd
, which included some changes to certain RPCs to sync them up with the latest iteration of them in bitcoind
.
Easier Migration Testing w/ Dry Run Migrations
In this release, a new flag has been added: --dry-run-migration
. As regular users of lnd
are aware, we typically have a set of migrations that are bundled with major releases of lnd
. Testing these new migrations can be tricky at times, since one a migration has been applied, one cannot go back. To make this process easier and less stressful for users (and also developers testing out migrations), the new --dry-run-migration
flag will attempt to apply the migration as normal, but then rather than committing the database transaction, it'll perform an abort, leaving the database in the same state as before the migration.
It's our hope that this new flag will make it easier for existing users to help us test the release candidates of major releases.
RPC Bug Fixes
The ListChannels
command will now properly omit uptime in the response if the server has not yet been started. It's possible to execute this call before the server has been started (backend synced to the chain), but as we don't connect to peers before the server is fully started, the uptime information isn't available.
A bug in the new streaming HTLC forwarding RPC has been fixed which could at times cause a panic if a link failure doesn't come along with the full details as expected.
A bug has been fixed that would cause a panic if a user attempted to use the ChainNotifier
sub-server before the server has been fully started.
In order to make limits across the payment relate RPCs consistent, QueryRoutes
now also allows users to query for routes with a payment value larger than the previous max payment size. Note that the "true' max payment size along a route, is limited by the smallest max_htlc
for a channel along the route.
RPC Enhancements
The SendPayment
method on the new router rpc sub-server has been extended to allow users to specify a set of channels that the outgoing payments must use. This is useful as when doing MPP, the users can ensure that only a set of channels are used, which can be helpful in more precise rebalancing operations, and services such as Lightning Loop. The old outgoing_chan_id
has been deprecated in favor of a new outgoing_chan_ids
field which accepts a series of channel IDs to pin path finding to.
Pathfinding Bug Fixes
The main path finding loop will no longer treat an instance of "bad features" as a terminal error.
Watchtower Bug Fixes
Build Fixes
A change that went into lnd v0.10.0-beta
inadvertently broke the build for those users still using Go 1.12. As we support Go 1.13 and 1.12 primarily, a fix has been made to ensure the project still builds with Go 1.12. We plan to "officially" support Go 1.14 for lnd v0.11.0-beta
, pending some fixes to upstream packages we depend on.
The full list of changes since v0.10.0-beta
can be found here:
Contributors (Alphabetical Order)
Carla Kirkk-Cohen
Conner Fromknecht
Joost Jager
Olaoluwa Osuntokun
Roei Erez
Wilmer Paulino