Merge #1034: Prepare v5 release

2dc8cb0d422d2f601c8662df71651c596d15ae36 README: add Coldcard as supported signing device (Antoine Poinsot)
abf15fea3c15ca5f0005417a1490e057d40e6c6b CHANGELOG: release notes for v5 (Antoine Poinsot)
b5c2375d0bb6bef6cd2f0d7534c303fe71118105 doc: update the signing devices compatibility documentation (Antoine Poinsot)
d9337121abe486389514c7b2336e39d2a1f0c8de Bump Liana version (Antoine Poinsot)
de05460ad01145df9bbf63ec58932a72dd1a14d3 doc/BUILD.md: correct MSRV (Antoine Poinsot)

Pull request description:

ACKs for top commit:
  darosior:
    self-ACK 2dc8cb0d422d2f601c8662df71651c596d15ae36 -- not code

Tree-SHA512: b84ea6dabf3ff41ac9b61c6ee8ef7cbbdb5942d13bff83b70e60c93e2f61a14db164b7987129cfde5fd59a667297e2832458f62f0e979d949667d0cc2c168f37
This commit is contained in:
Antoine Poinsot 2024-03-25 16:33:34 +01:00
commit 6d498db5e5
No known key found for this signature in database
GPG Key ID: E13FC145CD3F4304
9 changed files with 106 additions and 20 deletions

View File

@ -1,5 +1,77 @@
# Liana daemon and GUI release notes
## 5.0
This release introduces support for the Coldcard signing device, experimental Taproot support and a
number of user experience improvements.
### Features
#### Liana daemon / library
- Experimental support for Taproot was added.
- It's now possible to configure the connection to `bitcoind` using a user and a password in place
of the cookie file. See the discussion at https://github.com/wizardsardine/liana/issues/356.
- The `getinfo` result now contains the "descriptor's timestamp": that is the oldest date at which
we scanned the blockchain for coins.
- The `createspend` command now doesn't error anymore on insufficient funds, it instead returns the
missing amount in its result.
- The `listspendtxs` command now accepts a new optional parameter to filter the result by txids.
#### Liana GUI
- Support for Coldcard was added. At the time of writing Miniscript support on the Coldcard is only
available on the Edge firmware.
- You can now choose to create a Taproot descriptor in the installer. See
[doc/signing_devices.md](doc/signing_devices.md) for details about the compatibility with hardware
wallets.
- When creating a Spend transaction using automated coin selection (the default), setting the amount
for any recipient to "Max" to sweep all the funds from the wallet to this recipient, minus the
amount set for any other recipients.
- When creating a Spend transaction using manual coin selection, setting the amount of any of the
recipient to "Max" will sweep all the *selected* coins (not all funds in the wallet) to this
recipient, minus the amount set for other recipients.
- The automated coin selection when creating a spend transaction now also considers unconfirmed
coins.
- When creating a Spend transaction, you can now change screen and come back to your draft. The
state does not get cleared as soon as you leave the "Spend" menu anymore.
- We now display warnings to the user when creating a Spend transaction. For instance when the
change output's value was too small that we added it to fees.
- RBF transaction now get automatically labeled.
- Signing a transaction on a hardware device does not hide the transaction details anymore.
- When broadcasting a transaction, the payments are now immediately available on the home page.
- The QR code for deposit address is now shown in a pop-up, which makes it available for all new
addresses a user may generate on the Deposit screen.
- The address QR codes now also contain the derivation index in the URI.
- We now display a warning if a user tries to RBF a transaction whose change output is being spent
by a later transaction. A warning is also displayed when broadcasting a spend if any of the inputs
are currently being spent by another transaction.
- We now directly open the installer when starting Liana on a new datadir.
- The "Backup Descriptor" step was dropped from the installer flow when recovering from a
descriptor.
- A new command line argument was added: `--version`.
- It's now possible to use `<Tab>` to move between text inputs across the GUI.
### Fixes
#### Liana daemon / library
- We now disallow rescanning from timestamps before the genesis block on test networks too.
- A potential crash was fixed when an immature coinbase transaction contains an output which pays to
our *change* address.
- An off-by-one in address usage detection was fixed.
#### Liana GUI
- We now use a user/password to connect to `bitcoind` in the installer, removing the potential for
flakiness due to having to detect the `.cookie` file.
- A crash was fixed in the installer when the user would change the network in step 1 after having
started the managed bitcoind in step 4.
- Errors when triggering a rescan are now correctly displayed.
- In the installer, the details to connect to bitcoind in step 4 are now correctly updated when
changing the network in step 1.
- In the list of PSBTs, the labels are now correctly aligned.
## 4.0
This release introduces support for bumping the fees of a transaction, verifying a deposit address

2
Cargo.lock generated
View File

@ -279,7 +279,7 @@ dependencies = [
[[package]]
name = "liana"
version = "4.0.0"
version = "5.0.0"
dependencies = [
"backtrace",
"bdk_coin_select",

View File

@ -1,6 +1,6 @@
[package]
name = "liana"
version = "4.0.0"
version = "5.0.0"
authors = ["Antoine Poinsot <darosior@protonmail.com>"]
edition = "2018"
repository = "https://github.com/wizardsardine/liana"

View File

@ -136,9 +136,9 @@ For now, the following signing devices are supported:
- Ledger Nano S and S+
- BitBox02
- Specter DIY
- Coldcard
With more signing devices implementing Miniscript capability, support for new ones will be added in
the near future. For more information (such as minimum supported versions) please read the [signing
For more information (such as compatibility and minimum supported versions) please read the [signing
devices documentation](./doc/signing_devices.md).

View File

@ -7,7 +7,7 @@
set -ex
VERSION="${VERSION:-"2.0"}"
VERSION="${VERSION:-"5.0"}"
LIANA_PREFIX="liana-$VERSION"
LINUX_DIR_NAME="$LIANA_PREFIX-x86_64-linux-gnu"
LINUX_ARCHIVE="$LINUX_DIR_NAME.tar.gz"

View File

@ -8,13 +8,13 @@ this repository. They are pinned in a [`Cargo.lock`](../Cargo.lock) file at the
We take security very seriously, and toolchain is a big part of that. We are moderately conservative
with dependencies and aim to target reasonable compiler versions that have had time to mature (ie
that had the chance to be reviewed and distributed by third parties, as well as tested by the
community). The minimum supported Rust version for `lianad` currently is `1.54`.
community). See [`CONTRIBUTING.md`](../CONTRIBUTING.md) for the currently minimum Rust version
supported by `lianad`.
If you want to not only build the daemon but the whole wallet including the GUI, you'll
unfortunately have to use a more recent `cargo`. The minimum version supported by the GUI at the
moment is `1.65`. You will most likely have to [manually download
To build the GUI too, you'll unfortunately need a more recent Rust version. The minimum version
supported by the GUI at the moment is `1.65`. You will most likely have to [manually download
it](#by-manually-downloading-the-latest-stable-version) or [use `rustup`](#through-rustup) to
install such a recent compiler.
install more recent compilers.
## Getting `Cargo`

View File

@ -6,16 +6,30 @@ The connection to the signing devices is implemented in [another
repository](https://github.com/wizardsardine/async-hwi).
## Specter
## [Specter DIY](https://github.com/cryptoadvance/specter-diy)
[Specter DIY](https://github.com/cryptoadvance/specter-diy) version v1.5.0 and above is supported.
Version 1.5.0 and above of the firmware is supported for use in P2WSH descriptors.
## Ledger
Support for use in Taproot descriptors has been implemented but not yet released.
Minimum supported version of the Bitcoin application is 2.1.0 (the first version to have full
Miniscript descriptors support).
## [Ledger](https://github.com/LedgerHQ/app-bitcoin-new)
## BitBox02
The Bitcoin application is supported for use in P2WSH descriptors starting with version 2.1.0. It is
supported for use in Taproot descriptors starting with version 2.2.1.
[BitBox02](https://github.com/digitalbitbox/bitbox02-firmware) version 9.15.0 and above is
supported.
## [BitBox02](https://github.com/digitalbitbox/bitbox02-firmware)
Version 9.15.0 of the firmware is supported for use in P2WSH descriptors.
Support for use in Taproot descriptors is not yet available in the firmware.
## [Coldcard](https://github.com/Coldcard/firmware)
Support for use in both P2WSH and Taproot descriptors has only been released in Beta as of this
writing. It is only supported by the [Edge
firmware](https://github.com/Coldcard/firmware?tab=readme-ov-file#long-lived-branches).
As of this writing, Coldcard on Taproot will only be usable for descriptors which only use a single
key as their primary path. This is due to a discrepancy in how Coldcard derives [deterministically
unspendable Taproot internal
keys](https://delvingbitcoin.org/t/unspendable-keys-in-descriptors/304).

View File

@ -81,7 +81,7 @@ impl fmt::Display for Version {
}
pub const VERSION: Version = Version {
major: 4,
major: 5,
minor: 0,
patch: 0,
};

View File

@ -24,7 +24,7 @@ from test_framework.utils import (
def test_getinfo(lianad):
res = lianad.rpc.getinfo()
assert "timestamp" in res.keys()
assert res["version"] == "4.0.0-dev"
assert res["version"] == "5.0.0-dev"
assert res["network"] == "regtest"
wait_for(lambda: lianad.rpc.getinfo()["block_height"] == 101)
res = lianad.rpc.getinfo()