341f9406645dd26c7862ae7abe28aed5c7e9185d func test: prevent disconnects when using mocktime (Michael Mallan) b630d46770319dce051c09133a528b1ff322a358 func test: wait for block heights to match (Michael Mallan) ada89c5c56090338554cb8db0e078674798341ac doc: update with electrum info (Michael Mallan) 177dfc46c305ea7ab1c421e9a9d60535327fedff lib: expose BDK's electrum client (Michael Mallan) 72c63148984bc69ff7c4b04cfdc16a12994b2956 ci: add electrs to func tests (jp1ac4) 371e31e3f35ac5054fe2bd7dd04bcdd8790e8988 func test: allow to run using electrs backend (jp1ac4) a85d4887e9efeaada6a1a79f4a35a32cf8444569 func test: allow for different bitcoin backends (jp1ac4) 1b04b294910d1cb65885f17dd266029771b476cf func test: fix min rbf feerate (jp1ac4) c7ee8620204e72bcf990a994c1bdf89652f40c84 bitcoin: add electrum backend (jp1ac4) c4c2424f244fcd4461cf5378f83e9abe4ba12866 bitcoin: expose MempoolEntryFees (jp1ac4) 5011ad929037af294dc471844d8bf5c799040383 bitcoin: return spent block height & time separately (jp1ac4) 689442c2c910ad5967651c0cc9f84bdc71cd0002 bitcoin: allow to store UTXO deriv index (jp1ac4) 4c02b0d43115f5d792908dd30580eaf241e8fc58 bitcoin: use mut ref for start_rescan (Michael Mallan) 69259c12362b2be8da8f210def1d3e338fa8ab00 poller: sync wallet before checking updates (jp1ac4) 89e004d4fdd88324da255bc85aeb8adbb90653b1 bitcoin: add sync_wallet method to interface (jp1ac4) 34b9a49328e7a3313ad6f4a0537ac5b349b54d76 config: add general bitcoin backend option (jp1ac4) e267f66be6ce3bebac413ee9e4901d27e8cbe9df descriptors: allow to get underlying public key (jp1ac4) Pull request description: This is to add the Electrum backend as part of https://github.com/wizardsardine/liana/issues/56#issuecomment-2183063784. This requires the database to be running version 5 following #1180. The migration from a previous DB version must be done using bitcoind. Thereafter, the daemon can be run using an Electrum backend by replacing the `[bitcoind_config]` section in the daemon.toml config file with: ``` [electrum_config] addr = "127.0.0.1:50001" # adjust IP:port as required ``` Remaining tasks: - [x] Include ancestors and descendants when getting a transaction's `MempoolEntry` - [ ] Additional sanity checks, e.g. check Electrum version - [x] Check if logic regarding ongoing rescan needs to be adjusted - [x] Add Electrum backend to functional tests - [x] Add Electrum backend to CI pipline functional tests - [ ] Add unit tests - [x] Update README & other docs ACKs for top commit: darosior: re-ACK 341f9406645dd26c7862ae7abe28aed5c7e9185d Tree-SHA512: dbbb375123cc5c566f5c8535d002ac4491b4be5ab2766845b5b7ab51d19e7e85eafc0097235e1ebc5c5a049bd2222ab5582264314e46c77b5fff8027da31b803
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 src/ folder at the root of this repository.
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 gui/src/ 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.