6175ca7b58324a19ba7d8309fac4f18e6a07c178 fix doc (edouardparis)
f32b6aa30dc68623361f7884111707edd0bf3b42 fix the reproducible build to include the workspace change (edouardparis)
8973ee0c7c7b8df37378dde3f1a73b2447147200 fix test not building on windows (edouardparis)
f28b40fe8df967364f2201e3bea84c081b18cac6 fix fuzz, build and tests (edouardparis)
2ab6e40c9399942e2ef756f63e07ff76fb1496b9 refac workspace: move files (edouardparis)
Pull request description:
This PR clarifies the rust workspace with its members:
- `liana`: The `lianad` and `liana-cli` crate
- `liana-gui`: The gui crate to build the graphical interface
- `liana-ui`: A crate to quickly iterate on a design system
It allows to have coordination across crates easier, consistent build and shared dependency versions.
As a result the build processes in the guix container and the macos container are way faster as the dependencies are built only once.
The overall MSRV is changed for rust 1.71.1, which is the `liana-gui` MSRV.
Only one rust version is used for all the crates.
This PR is also a change of vision of the project. The liana daemon is not used as it is. It is too much cumbersome. It should be at the service of the future applications and for now at the service of the GUI.
The security aspects of the project should be aware of what the end user is using and in reality it is the `liana-gui` binary.
ACKs for top commit:
pythcoiner:
ACK 6175ca7b58324a19ba7d8309fac4f18e6a07c178
jp1ac4:
ACK 6175ca7b58.
Tree-SHA512: 4b193ed92d3108672d785b28ed54ff95168d365f163235b72cd7e24a7023a7293853ddb458930fb4640d7b1c60a8965e1b38cc060a426474d50b29e2eec4a6d2
About
Liana is a simple Bitcoin wallet. Like other Bitcoin wallets you have one key which can spend the funds in the wallet immediately. Unlike other wallets, Liana lets you in addition specify one key which can only spend the coins after the wallet has been inactive for some time.
We refer to these as the primary spending path (always accessible) and the recovery path (only available after some time of inactivity). You may have more than one key in either the primary or the recovery path (multisig). You may have more than one recovery path.
Here is an example of a Liana wallet configuration:
- Owner's key (can always spend)
- Any 2 keys from the owner's spouse and two kids (after 1 year)
- A third party, in case all else failed (after 1 year and 3 months)
The lockup period is enforced onchain by the Bitcoin network. This is achieved by leveraging timelock capabilities of Bitcoin smart contracts (Script).
Liana can be used for trustless inheritance, loss protection or safer backups. Visit our website for more information.
Usage
Liana is available on Windows, Mac and Linux. To install and start using it see
doc/USAGE.md. A more accessible version of Liana is also available as a web
application here.
If you just want to quickly try out Liana on Bitcoin Signet, see doc/TRY.md.
Hacking on Liana
Liana is an open source project. It is hosted at Github. Contributions are very welcome. See here for guidelines. Most regular contributors hang out on our Discord. Join us there if you have any question about contributing.
Liana is separated in two main components: the daemon and the Graphical User Interface.
Liana daemon
The daemon contains the core logic of the wallet. It is both a library (a Rust crate) that exposes a command interface and a standalone UNIX daemon that exposes a JSONRPC API through a Unix Domain Socket.
The code for the daemon can be found in the liana folder.
Liana GUI
The GUI contains both an installer that guides a user through setting up a Liana wallet, as well as
a graphical interface to the daemon using the iced library.
The code for the GUI can be found in the liana-gui folder.
Security
See SECURITY.md for details about reporting a security vulnerability or any bug
that could potentially impact the security of users' funds.
License
Released under the BSD 3-Clause Licence. See the LICENCE file.