diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d2742cd..cbd2bf0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 `` 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 diff --git a/Cargo.lock b/Cargo.lock index 7d057c72..1680010b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -279,7 +279,7 @@ dependencies = [ [[package]] name = "liana" -version = "4.0.0" +version = "5.0.0" dependencies = [ "backtrace", "bdk_coin_select", diff --git a/Cargo.toml b/Cargo.toml index 21c21949..f6d50c16 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "liana" -version = "4.0.0" +version = "5.0.0" authors = ["Antoine Poinsot "] edition = "2018" repository = "https://github.com/wizardsardine/liana" diff --git a/README.md b/README.md index 5ffec061..84689617 100644 --- a/README.md +++ b/README.md @@ -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). diff --git a/contrib/release/release.sh b/contrib/release/release.sh index ce2f4689..db91a6ca 100755 --- a/contrib/release/release.sh +++ b/contrib/release/release.sh @@ -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" diff --git a/doc/BUILD.md b/doc/BUILD.md index 18de1afb..fceca1c7 100644 --- a/doc/BUILD.md +++ b/doc/BUILD.md @@ -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` diff --git a/doc/signing_devices.md b/doc/signing_devices.md index 3052e5f5..fb5d5226 100644 --- a/doc/signing_devices.md +++ b/doc/signing_devices.md @@ -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). diff --git a/src/lib.rs b/src/lib.rs index 19f02a63..3443b0c0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -81,7 +81,7 @@ impl fmt::Display for Version { } pub const VERSION: Version = Version { - major: 4, + major: 5, minor: 0, patch: 0, }; diff --git a/tests/test_rpc.py b/tests/test_rpc.py index e02e0c50..b1ae8815 100644 --- a/tests/test_rpc.py +++ b/tests/test_rpc.py @@ -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()