3 个稳定版本
5.0.0 | 2024 年 4 月 4 日 |
---|---|
3.0.0 | 2023 年 11 月 3 日 |
2.0.0 | 2023 年 9 月 11 日 |
#497 in 魔法豆
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-bin
或yay -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.zip
和Liana.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