3 个稳定版本

5.0.0 2024 年 4 月 4 日
3.0.0 2023 年 11 月 3 日
2.0.0 2023 年 9 月 11 日

#497 in 魔法豆

Download history 1/week @ 2024-04-12

113 每月下载次数

自定义许可

730KB
14K SLoC

李安娜

比特币的安全网.

关于

李安娜是一个简单的比特币钱包,具有所有硬币的时间锁定恢复路径。也就是说,您的硬币可以像普通钱包一样花费,但如果主密钥不再可访问,则会在可配置的时间后获得一个二级密钥。

李安娜可用于继承、衰减多重签名或更安全的备份。

https://wizardsardine.com/liana

使用方法

TL;DR:如果您只想快速尝试在比特币 Signet 上使用李安娜,请查看 指南

作为比特币钱包,李安娜需要能够连接到比特币网络。该软件已被开发成可以以多种方式连接到比特币网络。但是,目前仅实现了通过 bitcoind 连接。

因此,为了使用李安娜,您需要在您的计算机上运行比特币核心守护进程 (bitcoind) 以连接到所需的网络(主网、Signet、测试网或回归测试)。bitcoind 安装可以裁剪(请注意,这可能会影响区块链重扫描),最大约为 550MB 的区块。

比特币核心的最低支持版本是 24.0.1。如果您还没有在您的计算机上安装比特币核心,您可以从 此处 下载。

安装软件

对于普通用户,推荐的安装方法是下载可执行软件版本。如果您想从源代码构建项目,请参阅doc/BUILD.md

前往发布页面,下载适合您平台的正确可执行文件。如果您不确定您平台上的“正确”可执行文件是什么,如果您使用MacOS,请选择

  • Liana.zip
  • 如果您使用Windows,请选择liana-4.0.exe
  • 如果您在基于Debian的Linux操作系统上(如Ubuntu)运行,请选择liana_4.0.deb。使用root权限(或通过sudo)安装,请使用apt install ./liana_4.0.deb
  • 如果您使用其他Linux发行版,请选择liana-4.0.tar.gz。请注意,如果您在Linux上,您可能需要自己编译软件。请参阅下面的部分

发布页面上每个可用的文件都有一个同名的.asc文件。这是使用Antoine Poinsot的密钥制作的GPG签名:590B7292695AFFA5B672CBB2E13FC145CD3F4304。此密钥在其他地方也可以找到,例如他的Twitter个人资料或他的个人网站。建议您使用此密钥验证您的下载。

对于Arch用户,在AUR上也有一个liana-bin可用。您可以使用您喜欢的包装器(例如paru -S liana-binyay -S liana-bin)安装,或者手动安装。

git clone https://aur.archlinux.org/liana-bin.git
cd liana-bin
cat PKGBUILD # Review the PKGBUILD script
makepkg -si

关于Linux二进制文件和glibc版本的说明

如果您不在Linux上运行,或者不打算使用发布版本的二进制文件,请跳过此部分。

由于我们的可重复构建系统中的技术限制,当前的Linux二进制文件链接到glibc版本2.33。这意味着如果您系统中的glibc版本较旧,则无法运行发布的Linux二进制文件。这种情况最明显的是Ubuntu 20(Focal)及以下版本,以及Debian 11(Bullseye)及以下版本。

最简单的解决方案是自行构建项目。不要担心,如果您是Linux用户,这实际上非常简单。请参阅此处的说明。

有关详细信息,请参阅此问题

Apple、Windows、代码签名和审核的二进制文件

我们同时提供非代码签名和代码签名且已审核的MacOS应用程序(Liana-noncodesigned.zipLiana.zip)。要运行非代码签名的应用程序,请参阅此Apple支持指南(“如果您想打开未签名或来自未知开发者的应用程序”部分)。

目前我们还没有提供Windows的代码签名二进制文件。

钱包使用技巧和窍门

脚本描述符备份

在比特币中,使用脚本来表示花费一定数量硬币的条件。为了能够恢复您的硬币,您需要备份以下内容:

通过这样做,任何理解输出脚本描述符标准的软件都能够恢复您的硬币。使用您的私钥,然后您就能够为这些硬币签署交易。

但是,如果没有描述符,您将无法从备份中恢复。然而,备份描述符的冗余性要简单得多。一旦小偷获取了它,他将能够了解您的余额(以及交易历史),但是将无法窃取您的资金。因此,您可以备份更多描述符,并使用比存储私钥不安全的介质。

关于刷新硬币

您可以使用Liana就像一个普通的钱包。请注意,如果您正在使用相对时间锁(目前支持的唯一类型的时间锁),则时间在您收到付款时开始计时。也就是说,如果要让恢复路径永远不可用,每个硬币至少每N个区块就必须被花费一次。(其中N是时间锁的配置值。)

GUI提供了简单的快捷方式来刷新一个或多个硬币,如果恢复路径即将可用。这是通过向您自己进行交易(如果您不需要进行付款)来实现的。

签名设备和“热”密钥

Liana可以用作热钱包。请注意,助记词将明文存储在您的驱动器上。我们强烈建议对于任何非小额金额都使用硬件签名设备。

目前,以下签名设备受到支持:

  • Ledger Nano S 和 S+
  • BitBox02
  • Specter DIY
  • Coldcard

有关更多信息(例如兼容性和最低支持版本),请阅读签名设备文档

使用守护程序

Liana可以作为无头服务器使用lianad程序运行。

您可以使用liana-cli程序向它发送命令。它需要与守护程序相同的配置路径。您可以在doc/API.md中找到lianad公开的JSONRPC API的完整文档。例如

$ liana-cli --conf ./signet_config.toml getinfo
{
  "result": {
    "block_height": 3083,
    "descriptors": {
      "main": {
        "change_desc": "wsh(or_i(and_v(v:thresh(1,pkh([b883f127/48'/1'/2'/2']tpubDEP7MLK6TGe1EWhKGpMWdQQCvMmS6pRjCyN7PW24afniPJYdfeMMUb2fau3xTku6EPgA68oGuR4hSCTUpu2bqaoYrLn2UmhkytXXSzxcaqt/1/*),a:pkh([636adf3f/48'/1'/2'/2']tpubDFnPUtXZhnftEFD5vg4LfVoApf5ZVB8Nkrf8CNe9pT9j1EEPXssJnMgAjmvbTChHugnkfVfsmGafFnE6gwoifJNybSasAJ316dRpsP86EFb/1/*),a:pkh([b883f127/48'/1'/3'/2']tpubDFPMBua4idthySDayX1GxgXgPbpaEVfU7GwMc1HAfneknhqov5syrNuq4NVdSVWa2mPVP3BD6f2pGB98pMsbnVvWqrxcLgwv9PbEWyLJ6cW/1/*)),older(20)),or_i(and_v(v:pkh([636adf3f/48'/1'/1'/2']tpubDDvF2khuoBBj8vcSjQfa7iKaxsQZE7YjJ7cJL8A8eaneadMPKbHSpoSr4JD1F5LUvWD82HCxdtSppGfrMUmiNbFxrA2EHEVLnrdCFNFe75D/1/*),older(19)),or_d(multi(2,[636adf3f/48'/1'/0'/2']tpubDEE9FvWbG4kg4gxDNrALgrWLiHwNMXNs8hk6nXNPw4VHKot16xd2251vwi2M6nsyQTkak5FJNHVHkCcuzmvpSbWHdumX3DxpDm89iTfSBaL/1/*,[b883f127/48'/1'/0'/2']tpubDET11c81MZjJvsqBikGXfn1YUzXofoYQ4HkueCrH7kE94MYkdyBvGzyikBd2KrcBAFZWDB6nLmTa8sJ381rWSQj8qFvqiidxqn6aQv1wrJw/1/*),and_v(v:pkh([b883f127/48'/1'/1'/2']tpubDEA6SKh5epTZXebgZtcNxpLj6CeZ9UhgHGoGArACFE7QHCgx76vwkzJMP5wQ9yYEc6g9qSGW8EVzn4PhRxiFz1RUvAXBg7txFnvZFv62uFL/1/*),older(18))))))#056xvvp3",
        "multi_desc": "wsh(or_i(and_v(v:thresh(1,pkh([b883f127/48'/1'/2'/2']tpubDEP7MLK6TGe1EWhKGpMWdQQCvMmS6pRjCyN7PW24afniPJYdfeMMUb2fau3xTku6EPgA68oGuR4hSCTUpu2bqaoYrLn2UmhkytXXSzxcaqt/<0;1>/*),a:pkh([636adf3f/48'/1'/2'/2']tpubDFnPUtXZhnftEFD5vg4LfVoApf5ZVB8Nkrf8CNe9pT9j1EEPXssJnMgAjmvbTChHugnkfVfsmGafFnE6gwoifJNybSasAJ316dRpsP86EFb/<0;1>/*),a:pkh([b883f127/48'/1'/3'/2']tpubDFPMBua4idthySDayX1GxgXgPbpaEVfU7GwMc1HAfneknhqov5syrNuq4NVdSVWa2mPVP3BD6f2pGB98pMsbnVvWqrxcLgwv9PbEWyLJ6cW/<0;1>/*)),older(20)),or_i(and_v(v:pkh([636adf3f/48'/1'/1'/2']tpubDDvF2khuoBBj8vcSjQfa7iKaxsQZE7YjJ7cJL8A8eaneadMPKbHSpoSr4JD1F5LUvWD82HCxdtSppGfrMUmiNbFxrA2EHEVLnrdCFNFe75D/<0;1>/*),older(19)),or_d(multi(2,[636adf3f/48'/1'/0'/2']tpubDEE9FvWbG4kg4gxDNrALgrWLiHwNMXNs8hk6nXNPw4VHKot16xd2251vwi2M6nsyQTkak5FJNHVHkCcuzmvpSbWHdumX3DxpDm89iTfSBaL/<0;1>/*,[b883f127/48'/1'/0'/2']tpubDET11c81MZjJvsqBikGXfn1YUzXofoYQ4HkueCrH7kE94MYkdyBvGzyikBd2KrcBAFZWDB6nLmTa8sJ381rWSQj8qFvqiidxqn6aQv1wrJw/<0;1>/*),and_v(v:pkh([b883f127/48'/1'/1'/2']tpubDEA6SKh5epTZXebgZtcNxpLj6CeZ9UhgHGoGArACFE7QHCgx76vwkzJMP5wQ9yYEc6g9qSGW8EVzn4PhRxiFz1RUvAXBg7txFnvZFv62uFL/<0;1>/*),older(18))))))#yl5jehy9",
        "receive_desc": "wsh(or_i(and_v(v:thresh(1,pkh([b883f127/48'/1'/2'/2']tpubDEP7MLK6TGe1EWhKGpMWdQQCvMmS6pRjCyN7PW24afniPJYdfeMMUb2fau3xTku6EPgA68oGuR4hSCTUpu2bqaoYrLn2UmhkytXXSzxcaqt/0/*),a:pkh([636adf3f/48'/1'/2'/2']tpubDFnPUtXZhnftEFD5vg4LfVoApf5ZVB8Nkrf8CNe9pT9j1EEPXssJnMgAjmvbTChHugnkfVfsmGafFnE6gwoifJNybSasAJ316dRpsP86EFb/0/*),a:pkh([b883f127/48'/1'/3'/2']tpubDFPMBua4idthySDayX1GxgXgPbpaEVfU7GwMc1HAfneknhqov5syrNuq4NVdSVWa2mPVP3BD6f2pGB98pMsbnVvWqrxcLgwv9PbEWyLJ6cW/0/*)),older(20)),or_i(and_v(v:pkh([636adf3f/48'/1'/1'/2']tpubDDvF2khuoBBj8vcSjQfa7iKaxsQZE7YjJ7cJL8A8eaneadMPKbHSpoSr4JD1F5LUvWD82HCxdtSppGfrMUmiNbFxrA2EHEVLnrdCFNFe75D/0/*),older(19)),or_d(multi(2,[636adf3f/48'/1'/0'/2']tpubDEE9FvWbG4kg4gxDNrALgrWLiHwNMXNs8hk6nXNPw4VHKot16xd2251vwi2M6nsyQTkak5FJNHVHkCcuzmvpSbWHdumX3DxpDm89iTfSBaL/0/*,[b883f127/48'/1'/0'/2']tpubDET11c81MZjJvsqBikGXfn1YUzXofoYQ4HkueCrH7kE94MYkdyBvGzyikBd2KrcBAFZWDB6nLmTa8sJ381rWSQj8qFvqiidxqn6aQv1wrJw/0/*),and_v(v:pkh([b883f127/48'/1'/1'/2']tpubDEA6SKh5epTZXebgZtcNxpLj6CeZ9UhgHGoGArACFE7QHCgx76vwkzJMP5wQ9yYEc6g9qSGW8EVzn4PhRxiFz1RUvAXBg7txFnvZFv62uFL/0/*),older(18))))))#v3g9rzum"
      }
    },
    "network": "regtest",
    "rescan_progress": null,
    "sync": 1.0,
    "version": "1.0.0"
  }
}

请注意,您也可以将GUI连接到正在运行的lianad。如果GUI检测到守护程序已经运行,它将连接到它并通过JSONRPC API进行通信。

使用恢复路径

您可以使用具有可用时间锁恢复路径的硬币。您将需要使用恢复密钥签署交易,因此请确保连接适当的签名设备。

在GUI中,此选项位于“设置”菜单的“恢复”部分。单击“恢复资金”按钮,输入您想要转移的目的地以及您想要用于转移交易的费率。然后使用恢复密钥签署它并广播。

对于守护程序,请参阅createrecovery命令。它将创建一个带有指定费率的PSBT,并将其填充所有可用硬币,发送到请求的地址。

在其他钱包上恢复Liana钱包备份

您可以使用Liana软件随时恢复Liana钱包备份。在极不可能的情况下,您无法访问Liana软件(所有二进制文件和源代码都被从地球上完全抹去)或无法使用它,我们提供了如何使用Bitcoin Core 25.0及以上版本恢复Liana钱包备份的指南

可重复构建

Liana的版本是可重复构建的。Linux的二进制文件也是可启动的。有关详细信息和使用说明,请参阅contrib/reproducible

master分支上的所有提交都是使用一组受信任的GPG密钥签名的合并提交。我们使用github-merge脚本来实现这一点。给定一组受信任的密钥(基本上是我的和Edouard Paris'的)和受信任的git根提交,您可以使用我们maintainer-tools存储库中的verify-commits脚本来验证master分支的完整性。例如

$ ../maintainer-tools/verify-commits/verify-commits.py liana
...
There is a valid path from "9490159e7ca69678bb6995cd56d09b0a65a5b484" to da9149ccde5bf99cb70769b792fd003b079fc9ed where all commits are signed!

值得注意的是,我们在这里并没有发明什么:我们只是在重用多年来由Bitcoin Core贡献者开发的出色的工具

请注意,您可能无法重新生成代码签名二进制文件。我们可能会在未来提供分离的签名。

关于软件项目

Liana是一个开源项目。它托管在Github上。

非常欢迎贡献。有关指南,请参阅CONTRIBUTING.md

Liana分为两个主要组件:守护程序和图形用户界面。

Liana守护程序

守护程序包含钱包的核心逻辑。它是一个库(一个Rust包),它提供了一个命令界面,也是一个独立的UNIX守护程序,它通过Unix域套接字公开JSONRPC API。

守护程序的代码位于此存储库根目录下的src/文件夹中。

Liana GUI

GUI包含一个安装程序,它引导用户设置Liana钱包,以及使用iced库的图形用户界面。

GUI的代码位于gui/src/文件夹中。

安全性

有关报告安全漏洞或可能影响用户资金安全的任何错误的详细信息,请参阅SECURITY.md

许可

在BSD 3-Clause许可下发布。请参阅LICENCE文件。

依赖项

~49MB
~724K SLoC