Merge #358: 0.3 release, part 2: update Liana dependency in the GUI, release 0.3 of the GUI

d24dc06d964bd89f491e483b0d0d3fc15541e03e doc: adapt the try-out guide to non-Linux platforms (Antoine Poinsot)
25760e88b4dc545ad79c29e9c1c45f760e260c7b README: various fixes, especially regarding hot keys now available (Antoine Poinsot)
c66eb430a863153229521f1897e6931a72e694bc doc: update the TRY.md tutorial to use hot keys (Antoine Poinsot)
1449c4865e02f34b72215c886cf4e1a7f0c6ca58 README: update the introduction with the current state of development (Antoine Poinsot)
46a4da38f80d65c3f38f9cdd256b9a82840cc8e1 gui: update Liana to 0.3 and release 0.3 (Antoine Poinsot)

Pull request description:

ACKs for top commit:
  darosior:
    self-ACK d24dc06d964bd89f491e483b0d0d3fc15541e03e -- mostly documentation

Tree-SHA512: 41692c5b2e0fcfe10313bef04280e5b1338e8efd3339980a6b0cb1bb78bba41adf18b8b6b4d216e5699077eda094b295e47343d2f6497dc286e9d2e3424b06cc
This commit is contained in:
Antoine Poinsot 2023-02-27 18:00:51 +01:00
commit 5d5792197d
No known key found for this signature in database
GPG Key ID: E13FC145CD3F4304
5 changed files with 87 additions and 94 deletions

View File

@ -14,10 +14,14 @@ heir the secondary one. It can also be leveraged for recovery where a single per
but different tradeoffs can be made between the backup(s) of the directly accessible and timelocked
keys.
Liana is still under heavy development. Apart from the regular wallet features that are planned, we
intend to implement the possibility to have multiple keys per spending path (multisig) as well as
multiple timelocked paths (for instance for decaying multisigs). We also intend to switch to using
Taproot as soon as possible, for enhanced privacy.
Learn more about Liana from our [announcement blog
post](https://wizardsardine.com/blog/liana-announcement/) and about how it was enhanced with
Multisig from our [second release post](https://wizardsardine.com/blog/liana-0.2-release/).
Liana is still under heavy development. Multisig support was implemented in the second release.
Regular wallet features are also planned. In addition we intend to implement the possibility to have
multiple timelocked paths (for instance for more powerful decaying multisigs). We also intend to
switch to using Taproot as soon as possible, for enhanced privacy.
**As such please consider Liana to be beta software.**
@ -44,8 +48,8 @@ build the project from source, see [`doc/BUILD.md`](doc/BUILD.md) instead.
Head to the [release page](https://github.com/wizardsardine/liana/releases) and download the right
executable for your platform. If you are not sure what is the "right" executable for your platform,
choose `liana-0.2.exe` if you are on Windows, `liana-0.2.dmg` if you are on MacOS and
`liana-0.2-x86_64-linux-gnu.tar.gz` if you are on Linux.
choose `liana-0.3.exe` if you are on Windows, `liana-0.3.dmg` if you are on MacOS and
`liana-0.3-x86_64-linux-gnu.tar.gz` if you are on Linux.
For every file available on the release page, there is an accompanying `.asc` file with the same
name. This is a GPG signature made with Antoine Poinsot's key:
@ -54,8 +58,8 @@ as on [his Twitter profile](https://twitter.com/darosior) or his [personal
website](http://download.darosior.ninja/darosior.pub). It is recommended you verify your download
against this key.
Note that we do not codesign ("notarize") the released binaries for now. Windows or macOS may
prevent you from installing the software. On macOS, you would get a warning saying the developer of
Note that we do not codesign ("notarize") the released binaries for now. Windows or MacOS may
prevent you from installing the software. On MacOS, you would get a warning saying the developer of
this application couldn't be verified. This is because we didn't register with Apple prior to
releasing the application. Make sure you verified the GPG signature of the download, then add an
exception for Liana by following the steps from [this Apple support
@ -103,18 +107,19 @@ timelock (the only type of timelocks supported for now), time starts ticking whe
payment. That is if you want the recovery path to never be available, each coin must be spent
at least once every `N` blocks. (With `N` the configured value of the timelock.)
For now, only the Ledger and Specter DIY signing devices are supported, as Miniscript compatibility
of the signer is a must. We expect more signing devices to implement Miniscript capability. We may
add the possibility to use Liana as a "hot" wallet in the future (i.e. with a private key directly
on the laptop). For more information, please read the
[signing devices documentation](./doc/signing_devices.md).
Liana can be used as a hot wallet. Note that mnemonics would be stored in clear on your drive. We
strongly recommend using a hardware signing device for any non-trivial amount.
If you are using a Ledger device, make sure to install the currently latest version of the Bitcoin
application: `2.1.0`. This is the minimum supported version, as it's the first one to introduce
support for Miniscript.
For now, only the Ledger and Specter DIY signing devices are supported, as Miniscript compatibility
of the signer is a must. We expect more signing devices to implement Miniscript capability. For more
information, please read the [signing devices documentation](./doc/signing_devices.md).
If you are using a Ledger device, the minimum supported version of the Bitcoin application is
`2.1.0`. You may have to tweak with the Ledger Live options in order to install it for now, see the
instructions [here](./doc/signing_devices.md).
If you are using the GUI, it should be intuitive what menu to use depending on your intention. If it
is not, bug report are very welcome so [feel free to report it](https://github.com/wizardsardine/liana/issues)! :)
is not, bug reports are very welcome so [feel free to report it](https://github.com/wizardsardine/liana/issues)! :)
If you are using the daemon, you can use the `liana-cli` binary to send commands to it. It will need
the path to the same configuration as the daemon. You can find a full documentation of the JSONRPC
@ -123,18 +128,18 @@ API exposed by `lianad` at [`doc/API.md`](doc/API.md). For instance:
$ liana-cli --conf ./testnet_config.toml getinfo
{
"result": {
"blockheight": 2406973,
"block_height": 131880,
"descriptors": {
"main": {
"change_desc": "wsh(or_d(pk([92162c45]tpubD6NzVbkrYhZ4WzTf9SsD6h7AH7oQEippXK2KP8qvhMMqFoNeN5YFVi7vRyeRSDGtgd2bPyMxUNmHui8t5yCgszxPPxMafu1VVzDpg9aruYW/1/*),and_v(v:pkh(tpubD6NzVbkrYhZ4Wdgu2yfdmrce5g4fiH1ZLmKhewsnNKupbi4sxjH1ZVAorkBLWSkhsjhg8kiq8C4BrBjMy3SjAKDyDdbuvUa1ToAHbiR98js/1/*),older(2))))#5rx53ql7",
"multi_desc": "wsh(or_d(pk([92162c45]tpubD6NzVbkrYhZ4WzTf9SsD6h7AH7oQEippXK2KP8qvhMMqFoNeN5YFVi7vRyeRSDGtgd2bPyMxUNmHui8t5yCgszxPPxMafu1VVzDpg9aruYW/<0;1>/*),and_v(v:pkh(tpubD6NzVbkrYhZ4Wdgu2yfdmrce5g4fiH1ZLmKhewsnNKupbi4sxjH1ZVAorkBLWSkhsjhg8kiq8C4BrBjMy3SjAKDyDdbuvUa1ToAHbiR98js/<0;1>/*),older(2))))#uact7s3g",
"receive_desc": "wsh(or_d(pk([92162c45]tpubD6NzVbkrYhZ4WzTf9SsD6h7AH7oQEippXK2KP8qvhMMqFoNeN5YFVi7vRyeRSDGtgd2bPyMxUNmHui8t5yCgszxPPxMafu1VVzDpg9aruYW/0/*),and_v(v:pkh(tpubD6NzVbkrYhZ4Wdgu2yfdmrce5g4fiH1ZLmKhewsnNKupbi4sxjH1ZVAorkBLWSkhsjhg8kiq8C4BrBjMy3SjAKDyDdbuvUa1ToAHbiR98js/0/*),older(2))))#d693mvvd"
"change_desc": "wsh(or_d(pk([0bb79a6c/48'/1'/0'/2']tpubDEfKGhwubP97F3gqfvrSHmqEqLTaeBJvyY5byWuzFTuShnj7WWrG4bZMWxAiva2qoGc9DZWERczuvBqbRAB7vEiyEHqjLLctZ7Tif27EGu3/1/*),and_v(v:pkh([0bb79a6c/48'/1'/1'/2']tpubDFYpQER7bt8M2ByvNBmhThcVp5p4QrEV72dHVczXukDbjFPPMFVPy5hYqHKp3TtLaESbYpM2FCH1oECai6GKiMuv5bkomPy9zhtBGgBRkQs/1/*),older(2))))#x0xv2zce",
"multi_desc": "wsh(or_d(pk([0bb79a6c/48'/1'/0'/2']tpubDEfKGhwubP97F3gqfvrSHmqEqLTaeBJvyY5byWuzFTuShnj7WWrG4bZMWxAiva2qoGc9DZWERczuvBqbRAB7vEiyEHqjLLctZ7Tif27EGu3/<0;1>/*),and_v(v:pkh([0bb79a6c/48'/1'/1'/2']tpubDFYpQER7bt8M2ByvNBmhThcVp5p4QrEV72dHVczXukDbjFPPMFVPy5hYqHKp3TtLaESbYpM2FCH1oECai6GKiMuv5bkomPy9zhtBGgBRkQs/<0;1>/*),older(2))))#jqhwaq75",
"receive_desc": "wsh(or_d(pk([0bb79a6c/48'/1'/0'/2']tpubDEfKGhwubP97F3gqfvrSHmqEqLTaeBJvyY5byWuzFTuShnj7WWrG4bZMWxAiva2qoGc9DZWERczuvBqbRAB7vEiyEHqjLLctZ7Tif27EGu3/0/*),and_v(v:pkh([0bb79a6c/48'/1'/1'/2']tpubDFYpQER7bt8M2ByvNBmhThcVp5p4QrEV72dHVczXukDbjFPPMFVPy5hYqHKp3TtLaESbYpM2FCH1oECai6GKiMuv5bkomPy9zhtBGgBRkQs/0/*),older(2))))#eesy8k0q"
}
},
"network": "testnet",
"network": "signet",
"rescan_progress": null,
"sync": 1.0,
"version": "0.2"
"version": "0.3.0"
}
}
```

View File

@ -4,13 +4,11 @@
This document is a short set of instructions for trying out Liana on Bitcoin signet. It does not attempt to
give any nuance, details or describe alternative configurations.
This guide uses an emulator of the Specter hardware signer. (If it is not available on your
platform, checkout the [Ledger "Speculos" emulator](https://github.com/LedgerHQ/speculos).
Documentation [here](https://speculos.ledger.com/).)
This guide mostly assumes you are running a 64-bit Linux.
TODO: adapt the guide to Windows and MacOS.
This guide will make use Liana as a "hot wallet". If you'd like to try out Liana using dummy
hardware signing device you can use the [Specter
simulator](https://github.com/cryptoadvance/specter-diy/blob/master/docs/simulator.md) or the
[Ledger "Speculos" emulator](https://github.com/LedgerHQ/speculos).
## Step 0: preparation
@ -18,11 +16,11 @@ TODO: adapt the guide to Windows and MacOS.
### System dependencies
Here is a list of the system dependencies: the tools and libraries you need to have installed on
your system to follow the guide.
your system to follow the guide if you are running Linux.
TL;DR:
- Debian/Ubuntu: `apt install git libsdl2-dev curl gpg libfontconfig1-dev libudev-dev gcc make`
- Arch Linux: check if you have all the required packages: `pacman -Q coreutils tar git sdl2 curl gnupg fontconfig systemd-libs`.
- Debian/Ubuntu: `apt install curl gpg libfontconfig1-dev libudev-dev`
- Arch Linux: check if you have all the required packages: `pacman -Q coreutils tar curl gnupg fontconfig systemd-libs`.
If any is listed as "was not found", get it with `pacman -Sy [missing package name]`
- Other distribution: see the link to projects below to search for the name of your distribution's packages.
@ -30,11 +28,6 @@ We'll use basic tools which should already be present on your system, such as:
- `shasum`
- `tar`
To run the Specter signing device simulator you will need:
- `gcc` and `make` (On Debian/Ubuntu `apt install gcc make`)
- `git` (On Debian/Ubuntu `apt install gpg`)
- [SDL2](https://wiki.libsdl.org/SDL2/FrontPage) (On Debian/Ubuntu `apt install libsdl2-dev`)
To download and verify binaries you will also need:
- `curl` (On Debian/Ubuntu `apt install curl`)
- `gpg` (On Debian/Ubuntu `apt install gpg`)
@ -46,7 +39,7 @@ To run the GUI you will need some additional libraries:
### Throwaway folder
You can follow the guide from any folder of your choice. We recommend using a dedicated folder you
can wipe easily:
can wipe easily. On Linux:
```
mkdir liana_quicktry
cd liana_quicktry
@ -59,6 +52,10 @@ Liana needs `bitcoind` to communicate with the Bitcoin network. Minimum supporte
### Download
The following instructions are specific to Linux (they may work on MacOS but i'm not sure). For
other platforms refer to
[https://bitcoincore.org/en/download/#verify-your-download](https://bitcoincore.org/en/download).
1. Download the `bitcoind` binary from [the official website of the Bitcoin Core
project](https://bitcoincore.org/bin/bitcoin-core-24.0.1/) according to your platform (in the context
of this guide, it is most likely `bitcoin-24.0.1-x86_64-linux-gnu.tar.gz`), and associated SHA256SUMS and SHA256SUMS.asc verification files.
@ -84,98 +81,89 @@ gpg --verify SHA256SUMS.asc
tar -xzf bitcoin-24.0.1-x86_64-linux-gnu.tar.gz
```
For details on verifying your download, or for verifying the download on a non-Linux machine refer
to
[https://bitcoincore.org/en/download/#verify-your-download](https://bitcoincore.org/en/download/#verify-your-download).
### Start `bitcoind` on signet
Run `bitcoind` in the background on the public signet network.
Run `bitcoind` in the background on the public signet network. On Linux:
```
./bitcoin-24.0.1/bin/bitcoind -signet -daemon
```
If it is the first time you start a signet Bitcoin on this machine it will take a few minutes to
synchronize (depends on your connection and hardware of course, but it shouldn't take longer than a
handful of minutes). You can track the progress using the `getblockchaininfo` command:
handful of minutes). You can track the progress using the `getblockchaininfo` command. On Linux:
```
./bitcoin-24.0.1/bin/bitcoin-cli -signet getblockchaininfo
```
You do not need to wait for full synchronisation before moving on to the next step.
**You do not need to wait for full synchronisation before moving on to the next step.**
## Step 2: setup a dummy signing device
Liana does not support "hot keys" at the moment. It needs a connection to a signing device for
signing transactions.
We will be using a [Specter](https://github.com/cryptoadvance/specter-diy) simulator.
In case the Specter DIY simulator is not usable on your machine (for instance it was reported to us
that >M1 Macs do not support it), you can use the [Ledger simulator
"Speculos"](https://github.com/LedgerHQ/speculos) [Documentation
here](https://speculos.ledger.com/).
```
git clone https://github.com/cryptoadvance/specter-diy
cd specter-diy
git checkout 6a6983e15e4d3c8c03937f8bee040de350ce722f
make simulate
```
This step might take a few minutes at the first launch of the Specter emulator.
A window will pop up. Choose a dummy pin code and generate a new key. Then go to settings, switch
network to signet.
Keep the Specter simulator open and move on to the next step.
## Step 3: start Liana
## Step 2: start Liana
Head to the [release page](https://github.com/wizardsardine/liana/releases) and download the right
executable for your platform. If you are not sure what is the "right" executable for your platform,
choose `liana-0.2.exe` if you are on Windows, `liana-0.2.dmg` if you are on MacOS and
`liana-0.2-x86_64-linux-gnu.tar.gz` if you are on Linux.
choose `liana-0.3.exe` if you are on Windows, `liana-0.3.dmg` if you are on MacOS and
`liana-0.3-x86_64-linux-gnu.tar.gz` if you are on Linux.
For every file available on the release page, there is an accompanying `.asc` file with the same
name. This is a GPG signature made with Antoine Poinsot's key:
`590B7292695AFFA5B672CBB2E13FC145CD3F4304`. This key is available elsewhere for cross-checking, such
as on [his Twitter profile](https://twitter.com/darosior) or his [personal
website](http://download.darosior.ninja/darosior.pub). It is recommended you verify your download
against this key.
website](http://download.darosior.ninja/antoine_poinsot_0xE13FC145CD3F4304.txt). It is recommended
you verify your download against this key.
At startup, you will have the choice between using an existing wallet or setting up a new one. Since
you presumably never installed Liana, choose to set up a new one.
At startup, you will have the choice between starting Liana using an existing configuration or to
set up a new one. Choose to install Liana on a new Bitcoin network.
Choose network Signet. For the primary key we will use the one from the dummy signing device you just started. Do this by simply clicking on the "import" button next to the text input in the Liana installer. For the number of blocks before the recovery key becomes active, you
can choose anything valid. Preferably something small to test the case where coins are soon to
become accessible on the recovery branch.
The next screen allows you to either configure a new wallet, participate in the configuration of a
new wallet (if you are taking part in a multisig for instance), or to recover a wallet from backup.
Choose to create a new wallet.
For the recovery key you could use another simulator but in this guide i'll just use a key generated online at https://iancoleman.io/bip39/. Click the **GENERATE** at the top of the website, then make sure to select **Coin: BTC-Bitcoin Testnet** to generate a tpub. You can then copy the **Account Extended Public Key** and paste it in the recovery path of Liana.
Choose Bitcoin Signet as network. Now you will need to configure the primary key(s), the recovery
key(s), and the time delay before the recovery keys become available (in # of blocks). We'll use
only one key for both the primary and recovery paths. We'll derive both keys from a "hot signer", a
HD wallet whose seed is stored on the laptop.
Make the next step happy by ticking the "I backed up my descriptor" checkbox.
Click on "Set" for the primary key. Click on "This computer" and set an alias for this signer. I'll
name it Alice but choose whatever. Set any timelock you want but preferably something very small if
you want to try the timelocked recovery feature! I'll go for "2" as the timelock. Click on "Set" for
the recovery key, and choose "This computer" again.
Import the descriptor to your Specter by clicking on the `specter-simulator` tile. Accept it on the Specter emulator.
Of course, it wouldn't make sense for a real to use the same signing device to derive both the
primary and recovery keys. Or even to use hot keys at all with a non-trivial amount of coins. We
only do this for convenience in testing Liana on Signet. If you'd like to try out signing with a
hardware wallet you can use the "testnet" mode of a Specter, the "Bitcoin testnet" app of a Ledger,
or the simulator of any of them (see the links at the top of this document).
Click on next. If you want to try restoring from wallet backup later on, make sure to backup the
mnemonic as well as the descriptor in the next two screens. Otherwise just make them happy by
ticking the boxes.
On the "Register descriptor" step you can (confusingly, i know) click on "i have registered the
descriptor on my device(s)". If you are using a simulator make sure to register the descriptor
though!
Finally, configure the connection to `bitcoind`. The default should work for what we did in this
guide. Click sur continue and finalize the installation.
guide. Click on continue and finalize the installation.
## Step 4: have fun
## Step 3: have fun
You can generate a receive address in the "Receive" menu. You can get signet coins from the signet
faucet at https://signet.bc-2.jp/.
If you want to try the timelocked recovery path, receive some coins and wait for some blocks (2 for
my own configuration, but it depends on what you configured previously). Then you can click on
"recover funds" in "Settings" > "Recovery".
Keep in mind that signet coins have no value!
## Cleanup
You need to remove:
- The Bitcoin Core archive and `bitcoind` binary
- The Specter directory
- The `bitcoind` data directory
- The Liana data directory
- The Bitcoin Core archive, binary and data directory
- The Liana binary and data directory
Assuming you used the throwaway folder as advised in step 0 and did not use custom `bitcoind` or
Liana data directories you can wipe everything using these commands:

6
gui/Cargo.lock generated
View File

@ -1657,8 +1657,8 @@ dependencies = [
[[package]]
name = "liana"
version = "0.2.0"
source = "git+https://github.com/wizardsardine/liana?branch=master#200d3777e0fe89d3b73d296eb31c83b6272dc490"
version = "0.3.0"
source = "git+https://github.com/wizardsardine/liana?branch=master#fbde855ede57c2bfebd6e0a53adf396c5c65df30"
dependencies = [
"backtrace",
"base64",
@ -1679,7 +1679,7 @@ dependencies = [
[[package]]
name = "liana_gui"
version = "0.2.0"
version = "0.3.0"
dependencies = [
"async-hwi",
"backtrace",

View File

@ -1,6 +1,6 @@
[package]
name = "liana_gui"
version = "0.2.0"
version = "0.3.0"
readme = "README.md"
description = "Liana GUI"
repository = "https://github.com/wizardsardine/liana"

View File

@ -12,6 +12,6 @@ use liana::Version;
pub const VERSION: Version = Version {
major: 0,
minor: 2,
minor: 3,
patch: 0,
};