#### Releases

project release date
libwally-core release_0.8.2
• Update to latest libsecp256k1-zkp
• Expose Sign-to-Contract functions
• Expose Anti-Key-Exfiltration ("Anti-Exfil") functions
• Expose base64 functions
• Allow callers to provide secp contexts to make the library thread-safe

Note: This release is not binary compatible with 0.8.1. See https://github.com/ElementsProject/libwally-core/blob/master/CHANGES.md for details.

2021-02-12
ledger-live-common v18.5.5
• COIN-1372 Bump Polkadot app minimum version to v6.28.0 (#1071)
• COIN-1371 (Polkadot) Align displayed transaction field with device (#1070)
2021-02-22
ledger-live-common v18.5.4
• LL 4390 - fix standalone uppercase bc1 addresses (#1064)
• Don't short circuit cosmos preload (#1067)
2021-02-22
ledger-live-common v18.5.3
2021-02-22
ledger-live-common v18.5.2
• fixes a bug in cosmos implementation regarding LRU cache (impact if you had testnet AND cosmos)
• update apps list to make CI pass
• babel update
2021-02-22
ledger-live-common v18.5.1
• [ATOM] Stargate support
• https://github.com/LedgerHQ/ledgerjs/releases/tag/v5.44.0 new ERC20 list
• LL-3490 - lower case bc1 bitcoin addresses
• LL-4521 Wording change for device repair modal
• @meriadec fixed countervalues to be used by Vault
• Swap: Add min version for stellar app
• VIA and XSN are going out of the “v3 experimental” until they pass our CI again

Libraries update: - @walletconnect/client 1.3.5 -> 1.3.6. (it's a patch, nothing really changes) - babel, typescript, ledgerjs

2021-02-11
ledger-live-desktop v2.22.0 2021-02-16
ledgerjs v5.44.1
2021-02-22
ledgerjs v5.44.0
2021-02-11
lib-ledger-core 4.0.0-rc1
• Stable test environment with libuv and cpp-http implementatioon of services
• Fix and improve keychain discovery during synchronization
• Fix reorgs management during synchronization
• Major synchronization performance improve by reworking the database insertion (~600% improvement)
• Performance improvement on SECP256K1 derivation during synchronization
• Major performance improvement during synchronization thanks to multi-threaded synchronization
• Global performance improvement by moving most part of the code on Thread pools instead of serial execution contexts
• Fix a memory leak in database sessions
• Fix a memory leak on HTTP connections
• Lower memory allocation due to regex compilation in DateUtils
• Minor bug fixes (ripple model, big int improvements…)
• Deprecate BlockchainObserver features for all coins
• Deprecate events NEW_OPERATION and NEW_ERC20_OPERATIONS for UPDATE_OPERATION and UPDATE_ERC
• Fix XRP incremental synchronization
• Improve runtime performances by splitting db connections between Write pool and Read pool
2021-02-12
lnd v0.12.1-beta.rc6

# Database Migrations

There are no database migrations in v0.12.1-beta.rc6.

# 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
curl https://keybase.io/roasbeef/pgp_keys.asc | gpg --import


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

gpg --verify manifest-roasbeef-v0.12.1-beta.rc6.sig manifest-v0.12.1-beta.rc6.txt


You should see the following if the verification was successful:

gpg: Signature made Thu Feb 18 18:01:34 2021 PST
gpg:                using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7
gpg: Good signature from &#34;Conner Fromknecht <conner@lightning.engineering>&#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 Timestamp

From this new version onwards, in addition time-stamping the git tag with OpenTimeStamps, we'll also now timestamp the manifest file along with its signature. Two new files are now included along with the rest of our release artifacts: manifest-roasbeef-v0.12.1-beta.rc6.txt.asc.ots.

Assuming you have the opentimestamps client installed locally, the timestamps can be verified with the following commands:

ots verify manifest-roasbeef-v0.12.1-beta.rc6.sig.ots -f manifest-roasbeef-v0.12.1-beta.rc6.sig


Alternatively, the open timestamps website can be used to verify timestamps if one doesn't have a bitcoind instance accessible locally.

These timestamps should give users confidence in the integrity of this release even after the key that signed the release expires.

## 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.15.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.12.1-beta.rc6 gpg: Signature made Thu Feb 18 17:04:03 2021 PST gpg: using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7 gpg: Good signature from &#34;Conner Fromknecht <conner@lightning.engineering>&#34; [ultimate]  ## Verifying the Docker Images To verify the lnd and lncli binaries inside the docker images against the signed, reproducible release binaries, there is a verification script in the image that can be called (before starting the container for example): $ docker pull lightninglabs/lnd:v0.12.1-beta.rc6
$docker run --rm --entrypoint=&#34;&#34; lightninglabs/lnd:v0.12.1-beta.rc6 /verify-install.sh$ OK=$?$ if [ &#34;$OK&#34; -ne &#34;0&#34; ]; then echo &#34;Verification failed!&#34;; exit 1; done$ docker run lightninglabs/lnd [command-line options]


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

tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.12.1-beta.rc6.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.12.1-beta.rc6&#34; ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.12.1-beta.rc6&#34; ./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=&#34;linux-arm64 darwin-amd64&#34;


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

# Release Notes

## Gossip Propagation Improvements

This release reverts the removal of the premature channel update cache that was removed in 0.12.0-beta. Absence of the cache was seen to cause issues with channel update propagation, so the change is reverted to restore the pre-0.12.0-beta behavior and stability. The current plan is to reschedule the cache's removal for 0.13 after performing more extensive investigation.

In addition, the gossip throttling adding in v0.12.0 has been refactored to be less aggressive with respect to non-keepalive channel updates, i.e. channel updates that differ in more than just the timestamp. Previously lnd would drop all but the first such update that it received over the course of a block, which has reportedly been too restrictive and resulted in degraded propagation of routine channel updates.

The new throttling logic now employs a directional token bucket rate limiter, the same approach used by lnd to rate-limit gossip requests from sync peers. Each token bucket is configured to drop non-keepalive updates arriving faster that once per minute, yet permitting bursts of up 10 updates. This improves on the previous approach in a few ways: - Updates are now limited with respect to a consistent time source, i.e. seconds, rather than block height. This makes it easier to reason about when channel updates might get dropped as an average user, and places a deterministic bound on the next time a normal user can reliably update their channel again. - The rate limits are now applied directionally, so that one end of the channel cannot cause their counterparty's channel updates to be dropped. This has the effect of making the penalization more precise, and better targets individuals that exhibit abusive behavior. - By factoring in bursts, it provides enough tolerance for cases where policy changes that may occur in quick succession, e.g. disable followed by reenable, or modifying a channel policy immediately after open.

## No Gossip Mode

This release includes support for a no-graph sync mode which can be enabled by setting numgraphsyncpeers=0. In prior versions, running lnd in this configuration would still trigger an initial historical sync with the first connected peer on each restart. The behavior was modified under the assumption that users who have already configured lnd to not receive gossip updates probably don't want to sync the graph at all.

This mode is especially helpful to wallet developers that choose to outsource pathfinding via their own service, or purely forwarding nodes that never need to perform pathfinding.

## Pinned Gossip Syncers

Typically lnd performs this historical channel reconciliation periodically, rotating between the set of all active peers, and attempting to keep numgraphsyncpeers (defaults to 3) in a state where they are receiving new gossip messages. Due to the eventually consistent properties of this algorithm (and the gossip protocol in general), there are some cases that lead to long delays in a node receiving newer updates. Notably, if a node has many peers, then it may be a while before the sync rotation algorithm queries a given peer for newer updates.

To provide more control, a new configuration option has been added allowing users to pin their nodes into an ActiveSync with particular nodes. Each time a connection is established with a pinned syncer, lnd will first perform a historical channel reconciliation, followed by a request for the pinned syncer to forward all new gossip messages. Doing so allows users to keep their routing table tightly synchronized with nodes in their list of configured, pinned syncers. Users can add one or more pinned syncers via:

gossip.pinned-syncers=<pubkey1>
gossip.pinned-syncers=<pubkey2>


This can be especially useful for services that run multiple, well-connected lnd nodes, and want their own nodes to maintain similar views of the channel graph. Users can also use gossip.pinned-syncers in combination with numgraphsyncpeers=0 to only sync from a specific peer.

## RPC Changes

• lnd 0.12.1-beta.rc6 now exposes the HTLC attempt_id on response from TrackPayment. Internally, lnd uses attempt_id as a unique identifier for each HTLC it sends out, and to provide a total ordering on all HTLC sent by the daemon. This identifier can be used by developers to better reflect progress of a payment, making it easier to extract per-HTLC state deltas rather than displaying the full payment state every time.
• Adds a new MaxShardSizeMsat argument to SendPayment, allowing users to cap the maximum value of any MPP shard sent out by lnd. Users can now set this from lncli via either the max_shard_size_sat or max_shard_size_msat field.

# Contributors (Alphabetical Order)

Andras Banki-Horvath Carla Kirk-Cohen Conner Fromknecht Eugene Siegel Jake Sylvestre Johan T. Halseth Joost Jager Juan Pablo Civile Olaoluwa Osuntokun Oliver Gugger rockstardev Umar Bolatov Vlad Stan Wilmer Paulino/conner@lightning.engineering/conner@lightning.engineering

2021-02-19
lnd v0.12.1-beta.rc5

# Database Migrations

There are no database migrations in v0.12.1-beta.rc5.

# 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
curl https://keybase.io/roasbeef/pgp_keys.asc | gpg --import


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

gpg --verify manifest-bitconner-v0.12.1-beta.rc5.sig manifest-v0.12.1-beta.rc5.txt


You should see the following if the verification was successful:

gpg: Signature made Wed Feb 17 14:16:06 2021 PST
gpg:                using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7
gpg: Good signature from &#34;Conner Fromknecht <conner@lightning.engineering>&#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 Timestamp

From this new version onwards, in addition time-stamping the git tag with OpenTimeStamps, we'll also now timestamp the manifest file along with its signature. Two new files are now included along with the rest of our release artifacts: manifest-roasbeef-v0.12.1-beta.rc5.txt.asc.ots.

Assuming you have the opentimestamps client installed locally, the timestamps can be verified with the following commands:

ots verify manifest-roasbeef-v0.12.1-beta.rc5.sig.ots -f manifest-roasbeef-v0.12.1-beta.rc5.sig


Alternatively, the open timestamps website can be used to verify timestamps if one doesn't have a bitcoind instance accessible locally.

These timestamps should give users confidence in the integrity of this release even after the key that signed the release expires.

## 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.15.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.12.1-beta.rc5 gpg: Signature made Wed Feb 17 12:59:15 2021 PST gpg: using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7 gpg: Good signature from &#34;Conner Fromknecht <conner@lightning.engineering>&#34; [ultimate]  ## Verifying the Docker Images To verify the lnd and lncli binaries inside the docker images against the signed, reproducible release binaries, there is a verification script in the image that can be called (before starting the container for example): $ docker pull lightninglabs/lnd:v0.12.1-beta.rc5
$docker run --rm --entrypoint=&#34;&#34; lightninglabs/lnd:v0.12.1-beta.rc5 /verify-install.sh$ OK=$?$ if [ &#34;$OK&#34; -ne &#34;0&#34; ]; then echo &#34;Verification failed!&#34;; exit 1; done$ docker run lightninglabs/lnd [command-line options]


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

tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.12.1-beta.rc5.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.12.1-beta.rc5&#34; ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.12.1-beta.rc5&#34; ./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=&#34;linux-arm64 darwin-amd64&#34;


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

# Release Notes

## Gossip Propagation Improvements

This release reverts the removal of the premature channel update cache that was removed in 0.12.0-beta. Absence of the cache was seen to cause issues with channel update propagation, so the change is reverted to restore the pre-0.12.0-beta behavior and stability. The current plan is to reschedule the cache's removal for 0.13 after performing more extensive investigation.

In addition, the gossip throttling adding in v0.12.0 has been refactored to be less aggressive with respect to non-keepalive channel updates, i.e. channel updates that differ in more than just the timestamp. Previously lnd would drop all but the first such update that it received over the course of a block, which has reportedly been too restrictive and resulted in degraded propagation of routine channel updates.

The new throttling logic now employs a directional token bucket rate limiter, the same approach used by lnd to rate-limit gossip requests from sync peers. Each token bucket is configured to drop non-keepalive updates arriving faster that once per minute, yet permitting bursts of up 10 updates. This improves on the previous approach in a few ways: - Updates are now limited with respect to a consistent time source, i.e. seconds, rather than block height. This makes it easier to reason about when channel updates might get dropped as an average user, and places a deterministic bound on the next time a normal user can reliably update their channel again. - The rate limits are now applied directionally, so that one end of the channel cannot cause their counterparty's channel updates to be dropped. This has the effect of making the penalization more precise, and better targets individuals that exhibit abusive behavior. - By factoring in bursts, it provides enough tolerance for cases where policy changes that may occur in quick succession, e.g. disable followed by reenable, or modifying a channel policy immediately after open.

## No Gossip Mode

This release includes support for a no-graph sync mode which can be enabled by setting numgraphsyncpeers=0. In prior versions, running lnd in this configuration would still trigger an initial historical sync with the first connected peer on each restart. The behavior was modified under the assumption that users who have already configured lnd to not receive gossip updates probably don't want to sync the graph at all.

This mode is especially helpful to wallet developers that choose to outsource pathfinding via their own service, or purely forwarding nodes that never need to perform pathfinding.

## Pinned Gossip Syncers

Typically lnd performs this historical channel reconciliation periodically, rotating between the set of all active peers, and attempting to keep numgraphsyncpeers (defaults to 3) in a state where they are receiving new gossip messages. Due to the eventually consistent properties of this algorithm (and the gossip protocol in general), there are some cases that lead to long delays in a node receiving newer updates. Notably, if a node has many peers, then it may be a while before the sync rotation algorithm queries a given peer for newer updates.

To provide more control, a new configuration option has been added allowing users to pin their nodes into an ActiveSync with particular nodes. Each time a connection is established with a pinned syncer, lnd will first perform a historical channel reconciliation, followed by a request for the pinned syncer to forward all new gossip messages. Doing so allows users to keep their routing table tightly synchronized with nodes in their list of configured, pinned syncers. Users can add one or more pinned syncers via:

gossip.pinned-syncers=<pubkey1>
gossip.pinned-syncers=<pubkey2>


This can be especially useful for services that run multiple, well-connected lnd nodes, and want their own nodes to maintain similar views of the channel graph. Users can also use gossip.pinned-syncers in combination with numgraphsyncpeers=0 to only sync from a specific peer.

## RPC Changes

• lnd 0.12.1-beta.rc5 now exposes the HTLC attempt_id on response from TrackPayment. Internally, lnd uses attempt_id as a unique identifier for each HTLC it sends out, and to provide a total ordering on all HTLC sent by the daemon. This identifier can be used by developers to better reflect progress of a payment, making it easier to extract per-HTLC state deltas rather than displaying the full payment state every time.
• Adds a new MaxShardSizeMsat argument to SendPayment, allowing users to cap the maximum value of any MPP shard sent out by lnd. Users can now set this from lncli via either the max_shard_size_sat or max_shard_size_msat field.

# Contributors (Alphabetical Order)

Andras Banki-Horvath Carla Kirk-Cohen Conner Fromknecht Eugene Siegel Jake Sylvestre Johan T. Halseth Joost Jager Juan Pablo Civile Olaoluwa Osuntokun Oliver Gugger rockstardev Umar Bolatov Vlad Stan Wilmer Paulino/conner@lightning.engineering/conner@lightning.engineering

2021-02-18
lnd v0.12.1-beta.rc4

# Database Migrations

There are no migrations in lnd v0.12.1-beta.rc4.

# 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
curl https://keybase.io/roasbeef/pgp_keys.asc | gpg --import


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

gpg --verify manifest-bitconner-v0.12.1-beta.rc4.sig manifest-v0.12.1-beta.rc4.txt


You should see the following if the verification was successful:

gpg: Signature made Tue Feb 16 17:45:05 2021 PST
gpg:                using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7
gpg: Good signature from &#34;Conner Fromknecht <conner@lightning.engineering>&#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 Timestamp

From this new version onwards, in addition time-stamping the git tag with OpenTimeStamps, we'll also now timestamp the manifest file along with its signature. Two new files are now included along with the rest of our release artifacts: manifest-roasbeef-v0.12.1-beta.rc4.txt.asc.ots.

Assuming you have the opentimestamps client installed locally, the timestamps can be verified with the following commands:

ots verify manifest-roasbeef-v0.12.1-beta.rc4.sig.ots -f manifest-roasbeef-v0.12.1-beta.rc4.sig


Alternatively, the open timestamps website can be used to verify timestamps if one doesn't have a bitcoind instance accessible locally.

These timestamps should give users confidence in the integrity of this release even after the key that signed the release expires.

## 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.15.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.12.1-beta.rc4 gpg: Signature made Tue Feb 16 16:35:12 2021 PST gpg: using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7 gpg: Good signature from &#34;Conner Fromknecht <conner@lightning.engineering>&#34; [ultimate]  ## Verifying the Docker Images To verify the lnd and lncli binaries inside the docker images against the signed, reproducible release binaries, there is a verification script in the image that can be called (before starting the container for example): $ docker pull lightninglabs/lnd:v0.12.1-beta.rc4
$docker run --rm --entrypoint=&#34;&#34; lightninglabs/lnd:v0.12.1-beta.rc4 /verify-install.sh$ OK=$?$ if [ &#34;$OK&#34; -ne &#34;0&#34; ]; then echo &#34;Verification failed!&#34;; exit 1; done$ docker run lightninglabs/lnd [command-line options]


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

tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.12.1-beta.rc4.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.12.1-beta.rc4&#34; ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.12.1-beta.rc4&#34; ./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=&#34;linux-arm64 darwin-amd64&#34;


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

# Release Notes

## Gossip Propagation Improvements

This release reverts the removal of the premature channel update cache that was removed in 0.12.0-beta. Absence of the cache was seen to cause issues with channel update propagation, so the change is reverted to restore the pre-0.12.0-beta behavior and stability. The current plan is to reschedule the cache's removal for 0.13 after performing more extensive investigation.

In addition, the gossip throttling adding in v0.12.0 has been refactored to be less aggressive with respect to non-keepalive channel updates, i.e. channel updates that differ in more than just the timestamp. Previously lnd would drop all but the first such update that it received over the course of a block, which has reportedly been too restrictive and resulted in degraded propagation of routine channel updates.

The new throttling logic now employs a directional token bucket rate limiter, the same approach used by lnd to rate-limit gossip requests from sync peers. Each token bucket is configured to drop non-keepalive updates arriving faster that once per minute, yet permitting bursts of up 10 updates. This improves on the previous approach in a few ways: - Updates are now limited with respect to a consistent time source, i.e. seconds, rather than block height. This makes it easier to reason about when channel updates might get dropped as an average user, and places a deterministic bound on the next time a normal user can reliably update their channel again. - The rate limits are now applied directionally, so that one end of the channel cannot cause their counterparty's channel updates to be dropped. This has the effect of making the penalization more precise, and better targets individuals that exhibit abusive behavior. - By factoring in bursts, it provides enough tolerance for cases where policy changes that may occur in quick succession, e.g. disable followed by reenable, or modifying a channel policy immediately after open.

## No Gossip Mode

This release includes support for a no-graph sync mode which can be enabled by setting numgraphsyncpeers=0. In prior versions, running lnd in this configuration would still trigger an initial historical sync with the first connected peer on each restart. The behavior was modified under the assumption that users who have already configured lnd to not receive gossip updates probably don't want to sync the graph at all.

This mode is especially helpful to wallet developers that choose to outsource pathfinding via their own service, or purely forwarding nodes that never need to perform pathfinding.

## Pinned Gossip Syncers

Typically lnd performs this historical channel reconciliation periodically, rotating between the set of all active peers, and attempting to keep numgraphsyncpeers (defaults to 3) in a state where they are receiving new gossip messages. Due to the eventually consistent properties of this algorithm (and the gossip protocol in general), there are some cases that lead to long delays in a node receiving newer updates. Notably, if a node has many peers, then it may be a while before the sync rotation algorithm queries a given peer for newer updates.

To provide more control, a new configuration option has been added allowing users to pin their nodes into an ActiveSync with particular nodes. Each time a connection is established with a pinned syncer, lnd will first perform a historical channel reconciliation, followed by a request for the pinned syncer to forward all new gossip messages. Doing so allows users to keep their routing table tightly synchronized with nodes in their list of configured, pinned syncers. Users can add one or more pinned syncers via:

gossip.pinned-syncers=<pubkey1>
gossip.pinned-syncers=<pubkey2>


This can be especially useful for services that run multiple, well-connected lnd nodes, and want their own nodes to maintain similar views of the channel graph. Users can also use gossip.pinned-syncers in combination with numgraphsyncpeers=0 to only sync from a specific peer.

## RPC Changes

• lnd 0.12.1-beta.rc4 now exposes the HTLC attempt_id on response from TrackPayment. Internally, lnd uses attempt_id as a unique identifier for each HTLC it sends out, and to provide a total ordering on all HTLC sent by the daemon. This identifier can be used by developers to better reflect progress of a payment, making it easier to extract per-HTLC state deltas rather than displaying the full payment state every time.
• Changes the default value of the max-parts argument to SendPayment from 1 to 16. When called without any arguments previously, lnd would only ever attempt paths with 1 HTLC, and give up if it couldn't find such a path. This change makes it so that lnd will attempt to make payments using a small number of shards if it can't be done using a single HTLC.
• Adds a new MaxShardSizeMsat argument to SendPayment, allowing users to cap the maximum value of any MPP shard sent out by lnd. Users can now set this from lncli via either the max_shard_size_sat or max_shard_size_msat field.

# Contributors (Alphabetical Order)

Andras Banki-Horvath Carla Kirk-Cohen Conner Fromknecht Eugene Siegel Jake Sylvestre Johan T. Halseth Joost Jager Juan Pablo Civile Olaoluwa Osuntokun Oliver Gugger rockstardev Umar Bolatov Vlad Stan Wilmer Paulino /conner@lightning.engineering/conner@lightning.engineering

2021-02-17
lnd v0.12.1-beta.rc3

# Database Migrations

There are no migrations in lnd v0.12.1-beta.rc3.

# 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
curl https://keybase.io/roasbeef/pgp_keys.asc | gpg --import


Once you have the required PGP keys, you can verify the release (assuming manifest-bitconner-v0.12.1-beta.rc3.txt.asc is in the current directory) with:

gpg --verify manifest-bitconner-v0.12.1-beta.rc3.txt.asc


You should see the following if the verification was successful:

gpg: Signature made Thu Feb 11 18:44:20 2021 PST
gpg:                using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7
gpg: Good signature from &#34;Conner Fromknecht <conner@lightning.engineering>&#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 Timestamp

From this new version onwards, in addition time-stamping the git tag with OpenTimeStamps, we'll also now timestamp the manifest file along with its signature. Two new files are now included along with the rest of our release artifacts: manifest-roasbeef-v0.12.1-beta.rc3.txt.asc.ots.

Assuming you have the opentimestamps client installed locally, the timestamps can be verified with the following commands:

ots verify manifest-roasbeef-v0.12.1-beta.rc3.txt.asc.ots -f manifest-roasbeef-v0.12.1-beta.rc3.txt.asc


Alternatively, the open timestamps website can be used to verify timestamps if one doesn't have a bitcoind instance accessible locally.

These timestamps should give users confidence in the integrity of this release even after the key that signed the release expires.

## 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.15.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.12.1-beta.rc3 gpg: Signature made Thu Feb 11 18:03:36 2021 PST gpg: using RSA key 9C8D61868A7C492003B2744EE7D737B67FA592C7 gpg: Good signature from &#34;Conner Fromknecht <conner@lightning.engineering>&#34; [ultimate]  ## Verifying the Docker Images To verify the lnd and lncli binaries inside the docker images against the signed, reproducible release binaries, there is a verification script in the image that can be called (before starting the container for example): $ docker pull lightninglabs/lnd:v0.12.1-beta.rc3
$docker run --rm --entrypoint=&#34;&#34; lightninglabs/lnd:v0.12.1-beta.rc3 /verify-install.sh$ OK=$?$ if [ &#34;$OK&#34; -ne &#34;0&#34; ]; then echo &#34;Verification failed!&#34;; exit 1; done$ docker run lightninglabs/lnd [command-line options]


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

tar -xvzf vendor.tar.gz
tar -xvzf lnd-source-v0.12.1-beta.rc3.tar.gz
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.12.1-beta.rc3&#34; ./cmd/lnd
GO111MODULE=on go install -v -mod=vendor -ldflags &#34;-X github.com/lightningnetwork/lnd/build.Commit=v0.12.1-beta.rc3&#34; ./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=&#34;linux-arm64 darwin-amd64&#34;


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

# Release Notes

## Gossip Propagation Improvements

This release reverts the removal of the premature channel update cache that was removed in 0.12.0-beta. Absence of the cache was seen to cause issues with channel update propagation, so the change is reverted to restore the pre-0.12.0-beta behavior and stability. The current plan is to reschedule the cache's removal for 0.13 after performing more extensive investigation.

In addition, the gossip throttling adding in v0.12.0 has been refactored to be less aggressive with respect to non-keepalive channel updates, i.e. channel updates that differ in more than just the timestamp. Previously lnd would drop all but the first such update that it received over the course of a block, which has reportedly been too restrictive and resulted in degraded propagation of routine channel updates.

The new throttling logic now employs a directional token bucket rate limiter, the same approach used by lnd to rate-limit gossip requests from sync peers. Each token bucket is configured to drop non-keepalive updates arriving faster that once per minute, yet permitting bursts of up 10 updates. This improves on the previous approach in a few ways: - Updates are now limited with respect to a consistent time source, i.e. seconds, rather than block height. This makes it easier to reason about when channel updates might get dropped as an average user, and places a deterministic bound on the next time a normal user can reliably update their channel again. - The rate limits are now applied directionally, so that one end of the channel cannot cause their counterparty's channel updates to be dropped. This has the effect of making the penalization more precise, and better targets individuals that exhibit abusive behavior. - By factoring in bursts, it provides enough tolerance for cases where policy changes that may occur in quick succession, e.g. disable followed by reenable, or modifying a channel policy immediately after open.

## No Gossip Mode

This release includes support for a no-graph sync mode which can be enabled by setting numgraphsyncpeers=0. In prior versions, running lnd in this configuration would still trigger an initial historical sync with the first connected peer on each restart. The behavior was modified under the assumption that users who have already configured lnd to not receive gossip updates probably don't want to sync the graph at all.

This mode is especially helpful to wallet developers that choose to outsource pathfinding via their own service, or purely forwarding nodes that never need to perform pathfinding.

## Pinned Gossip Syncers

Typically lnd performs this historical channel reconciliation periodically, rotating between the set of all active peers, and attempting to keep numgraphsyncpeers (defaults to 3) in a state where they are receiving new gossip messages. Due to the eventually consistent properties of this algorithm (and the gossip protocol in general), there are some cases that lead to long delays in a node receiving newer updates. Notably, if a node has many peers, then it may be a while before the sync rotation algorithm queries a given peer for newer updates.

To provide more control, a new configuration option has been added allowing users to pin their nodes into an ActiveSync with particular nodes. Each time a connection is established with a pinned syncer, lnd will first perform a historical channel reconciliation, followed by a request for the pinned syncer to forward all new gossip messages. Doing so allows users to keep their routing table tightly synchronized with nodes in their list of configured, pinned syncers. Users can add one or more pinned syncers via:

gossip.pinned-syncers=<pubkey1>
gossip.pinned-syncers=<pubkey2>


This can be especially useful for services that run multiple, well-connected lnd nodes, and want their own nodes to maintain similar views of the channel graph. Users can also use gossip.pinned-syncers in combination with numgraphsyncpeers=0 to only sync from a specific peer.

## RPC Changes

• lnd 0.12.1-beta.rc3 now exposes the HTLC attempt_id on response from TrackPayment. Internally, lnd uses attempt_id as a unique identifier for each HTLC it sends out, and to provide a total ordering on all HTLC sent by the daemon. This identifier can be used by developers to better reflect progress of a payment, making it easier to extract per-HTLC state deltas rather than displaying the full payment state every time.

# Contributors (Alphabetical Order)

Andras Banki-Horvath Carla Kirk-Cohen Conner Fromknecht Eugene Siegel Jake Sylvestre Johan T. Halseth Joost Jager Juan Pablo Civile Olaoluwa Osuntokun Oliver Gugger rockstardev Umar Bolatov Vlad Stan Wilmer Paulino/conner@lightning.engineering/conner@lightning.engineering

2021-02-12
WalletWasabi v1.1.12.4

# Summary

This silent release contains an updated Tor client that has the fix for the DDoS vulnerability. Users who encountered Tor connection problems should update their Wasabi.

• Tor client update (Tor 0.4.4.7), fixed the DDos vulnerability.
• Best effort node connection strategy, more stable peer connections. This will also solve the v2 onion service deprecation problem.
• Bitcoin Knots v0.21.0

# Newbie Guide

While setting up Wasabi is straightforward, even a Linux wizard with the longest beard can get stuck on the most basic tasks. Consider taking a look at the Installation Instructions guide.

If you want to build Wasabi from source code or update the source code check out these instructions.

From version 1.1.3 Wasabi also introduces reproducible builds: Deterministic Build Guide

Build with .NET Core 3.1.403-win-x64.

## FAQ

• Requirements? x64, Linux, >Win10, >macOS 10.13.

# Release Notes

2021-02-16

#### RFC

type rfc # title date status
bip bip-0039 BIP39 Add German Wordlist 2021-02-22 Update
bip bip-0039 Adding BIP-39 wordlist in German (2nd try) 2021-02-22 Closed
bip bip-0039 Add German word list for BIP0039 2021-02-22 Update
bip bip-0032 Add BIP draft for BIP32 path templates 2021-02-21 Update
bip bip-0008 BIP 8: Elaborate and clarify parameter selection 2021-02-19 Update
bip bip-0008 BIP 8: Make threshold configurable, and reduce recommendation to 90% 2021-02-19 Update
bip X Propagate summary tone of BIP Comments to their applicable BIP preambles 2021-02-19 Merged
bip bip-0047 Finalize BIP-47 2021-02-17 Update
bip bip-0039 bip39: discourage from using localized wordlists 2021-02-16 Merged
bip bip-0047 Reject BIP-0047 (no progress in three years) 2021-02-15 Closed
bip bip-0039 [BIP 39] Create catalan.txt 2021-02-15 Update
bip bip-0039 Add another Rust implmentation of BIP-0039 2021-02-13 Merged
bip bip-0370 Add BIP 370: PSBT Version 2 2021-02-12 Update
bip bip-0039 BIP-0039: Add Python-HDWallet package 2021-02-12 Merged
bip X Reject 136 (expired) 2021-02-12 Update
bip bip-0338 Add BIP 338: Disable transaction relay message 2021-02-12 Merged
bip bip-0123 BIP 123: change "Accepted" to "Proposed" in initial classification table 2021-02-11 Closed
bip bip-0070 BIP-0070: Fix references, link attack paper 2021-02-11 Closed
bip bip-0084 Final BIP-0084 (Derivation scheme for P2WPKH) 2021-02-11 Closed
bip bip-0174 BIP 174: Reformat, reorganize, and mark final 2021-02-10 Merged
bip bip-0155 BIP155: Remove external link 2021-02-10 Merged
bip bip-0350 bip-0350: fix links for reference implementations 2021-02-09 Merged
bip bip-0350 A few lost improvements to BIP350 2021-02-09 Merged
bolt X Lightning Specification Meeting 2021/03/01 2021-02-23 New Issue
bolt transactions BOLT 3: add test vectors for htlc-transactions in case where CLTV is used as tie-breaker for sorting 2021-02-23 Update
bolt X Update closing_signed fee requirement 2021-02-22 Update
bolt onchain BOLT 5: fix up opposing MUST & MUST NOT statements. 2021-02-22 Update
bolt X feature: define option_zero_htlc_tx_fee 2021-02-22 Update
bolt X Drop address descriptor ordering/count limits 2021-02-22 Update
bolt X Additional inputs for HTLC txs RBF considered harmful 2021-02-19 Update
bolt peer protocol BOLT 2: option_shutdown_anysegwit 2021-02-19 Update
bolt X Clarify nonce size for onion cipher 2021-02-18 Update
bolt X Advertize compression algorithms support in init 2021-02-18 Update
bolt X Correct hint for P2WPKH 2021-02-18 Merged
bolt X Add funding expiry to channel open 2021-02-17 Update
bolt X Lightning Specification Meeting 2021/02/15 2021-02-17 Update
bolt X Gossip queries: sync complete is back 2021-02-17 Merged
bolt X reply_channel_range is now too strict. 2021-02-15 Closed
bolt X Lightning Specification Meeting 2021/02/01 2021-02-15 Closed
bolt payment encoding Bolt 11: add distinct HRP prefix for Bitcoin signet 2021-02-15 Update
bolt X Minor indentation fix 2021-02-15 Merged
bolt X Hold fees 2021-02-14 Update
bolt X Trampoline Routing 2021-02-12 Closed
slip X add evrynet coin type 2021-02-23 Merged
slip slip-0044 Update slip-0044.md 2021-02-23 Merged
slip X Request to add NobodyCash to Registered coin types 2021-02-19 Merged
slip slip-0044 slip-0044: add BMK 2021-02-18 Merged