当前位置:首页区块链长推:测试新型自主保管钱包 Liana

长推:测试新型自主保管钱包 Liana

注:原文来自@AurtrianAjian发布长推。昨天下午,@zengmi 老师转发了 Liana 钱包终于正式上线的消息。Liana 这样的钱包算是我们翘首期盼的事物,因为它向更完善的自主保管体验迈出了一步。具体来说,在原本的比特币钱包领域,有单签名和多签名的区别:前者是最常见的、凭单个私钥就能花费的钱包;后者则是需要多个私钥(签名)才能花费的钱包,例如,2-of-3,需提供三个公钥中的两个的签名。 但是,感谢比特币脚本自身的特性,没有理由我们不能将它们合二为一:我们可以让 A 私钥随时可以花费;但 B

注:原文来自@AurtrianAjian发布长推。

昨天下午,@zengmi 老师转发了 Liana 钱包终于正式上线的消息。Liana 这样的钱包算是我们翘首期盼的事物,因为它向更完善的自主保管体验迈出了一步。

具体来说,在原本的比特币钱包领域,有单签名和多签名的区别:前者是最常见的、凭单个私钥就能花费的钱包;后者则是需要多个私钥(签名)才能花费的钱包,例如,2-of-3,需提供三个公钥中的两个的签名。 但是,感谢比特币脚本自身的特性,没有理由我们不能将它们合二为一:

我们可以让 A 私钥随时可以花费;但 B\C\D 三个公钥中的任何两个,可以在资金长期没有动用之时花费。 这就是 Liana 这类钱包背后的理念:允许用户添加多种花费路径,并使用时间锁逐步启用不同的分支,从而允许例如社交恢复(私钥丢失一段时间之后,三个朋友中的两个可以一起帮你恢复资金)这样的功能。

从用户界面可以看出,它允许添加不止一条路径。 如此好东西,当然要先测为快。于是,我约上 @zengmi2140@hu_zhiwei,尝试模拟一种场景:在我弄丢私钥之后,我的两个朋友帮我复原资金。

Liana 本身是一个非常轻量的软件(它在 windows 系统中只有一个 .exe 文件),它使用 Bitcoin Core 来完成跟比特币网络通信(发送交易)的功能。而且,开发团队还提供了一个在比特币 Signet 测试网上测试 Liana 的教程:https://github.com/wizardsardine/liana/blob/master/doc/TRY.md

出于测试和节约时间的目的,我们也选择了使用 Signet:这是一种比较新的测试网;跟比特币 testnet 不同,它是通过一些公钥的签名来出块的。现在整条链的数据量只有 700 多 MB,1 个小时左右就可以同步完。但它也有一个缺点:大部分钱包软件并不支持 Signet。

上午,我们三人各自使用 bitcoin core 同步了 Signet 并安装好了 Liana。下午,刺激的测试正式开始。显然,不出意外的话,就要发生意外了。

Liana 钱包在 UI 上区分了 “主路径” 和 “复原路径”:前者不带时间锁,后者带有时间锁;但不管哪一种路径,都可以设置单签和多签。最初,我的设想是,测都测了,当然得玩点花的,对吧?我准备在主路径放一个 Liana 生成的密钥;而在复原路径放一个 2-of-3 或者 3-of-3 的多签名,使用我(用别的软件生成的密钥)以及 @zengmi2140@hu_zhiwei 的公钥。兴高采烈进入测试,啪的一下遇到两个问题: 1. 我在一开始使用了 Sparrow 钱包的主网模式,生成的是 xpub 或者 zpub 开头的公钥,这个公钥没法放进 Liana 的设置里面去

(因为这是一个 Signet 钱包,它要求填入的公钥必须是 tpub 开头的测试网公钥)。于是,只好还是用上自己在 Liana 钱包生成的公钥,并将复原路径设为 2-of-3 多签名,带上 2 个区块的时间锁(测试嘛)。 2. 上午我玩了一下 Liana 钱包,但下午发现它并不允许我创建多个钱包,那咋办呢?

简单,我知道它存钱包数据的目录,我把它数据全删了。 就在我按照用户界面设置好新钱包、生成钱包描述符(descriptor,描述一个钱包花费条件的可读数据格式)并把它发给 @zengmi@jeffreyhu 之后,我点击界面的 “完成设置按钮”,Liana 啪一下闪退了。为啥呢?

重启之后无法再进入钱包,报错:无法在某目录找到图形界面运行所需的文件(被我删旧钱包数据的时候一并删掉了!)可是我没备份新钱包的私钥啊! 可以的,原本还想,我要用什么办法把我的私钥真的删掉呢?现在好了,我压根没备份,又进不去钱包,这不等于把私钥删了吗。那接下来就看两位老师的了。

率先出问题的是 @zengmi2140 老师。通过描述符得出收款地址后,我们拿一个收款地址去 Signet 水龙头领了钱。但是 @zengmi2140 老师的 Liana 钱包死活不显示到账。 见这笔交易:https://t.co/1WqbNLQOyu

我想,这也没问题,反正 @hu_zhiwei 老师那里显示到账了,只要他创建一个 PT(部分签名的比特币交易,一种数据格式,携带了让签名者签名一笔交易所需的信息),把这个 PT 交给 曾老师 签名,就大功告成了。@hu_zhiwei 老师发出的 PT,@zengmi2140 老师导入 Liana 钱包,啪,不行。

钱包温馨提示:交易所用输出点(outpioint,即 UTXO)是未知的。也就是说,因为 @zengmi 老师的 Liana 钱包不知道到账了,所以花不了这笔钱。事已至此,测试只好中止。 中止之后,我们各自想解决方案,我在想怎么把交易导入 Liana 钱包(貌似这个功能还真的只有 Liana 命令行版本才有,图形界面没有)

@zengmi2140 老师不一会就发现了问题:他的 bitcoin core 没有跟上 Signet。莫名其妙重新同步完成后,Liana 显示到账。我们仨又兴冲冲回到视频聊天,要见证签名完成、交易发出、钱包复原的阿基米德时刻。啪,又撞墙了。

PT 导入 @zengmi2140 的 Liana 钱包之后,看起来似乎是能签名,但是使用签名按钮之后,输出的 PT 并没有变化。将这个 PT 返回给胡老师,也没用,状态栏依然显示 “Not ready(没有准备好)”。眼尖的 @zengmi2140 老师问,这个 not ready 下面的详细信息是啥?

“需要来自指纹为 ’5ef5838d‘ 的公钥的签名。” 那这个 5ef5838d 指纹的公钥是谁的呢?你没猜错,正是在下的。 Unbelivible!怎么回事!明明是一个 2-of-3 的多签名,为什么他们俩一起签名还不行!为什么还需要我签名!我们一度怀疑那个描述符是不是写得有问题(我看了觉得也没问题)。山重水复疑无路,我想起来,钱包的设定界面里有一个 “Recovery(复原)” 选项。“曾老师你试一下用 recovery”。输入收款地址、手续费、生成 PT、曾老师签名,转发给胡老师签名(在界面上的 not ready 信息里已经看出,只需再加上胡老师的公钥签名就可以了),签名完成,ready,广播成功!

一惊一乍的的测试旅途就这么结束了,结果是好的。**,我想放一张图片,就是我们所用的钱包的描述符。连带提出一个问题,在这场社交恢复中我们用到了哪些技术?

第一当然是比特币脚本,它让我们可以叠加多个花费路径;第二,输出描述符(以及 Miniscript),用来描述公钥的信息以及比特币脚本的的信息,凭此就备份了你的钱包,它可以产生地址,并让你的朋友们的(钱包软件)可以理解这个钱包(它不包含私钥);第三,PT,用于在签名者之间传递,协助签名者签名。

这些技术,全部都需要经年累月的开发和完善。大概一年前,我发过这样一条推特:https://twitter.com/AurtrianAjian/status/1524726056028045312

Liana 正是迈向这个未来的一步。虽然它现在还有很多缺点,比如,不允许在本地创建多个钱包;给用户的指引不够清楚;但是,比特币生态在这个方向上不会就此止步。灵活的控制,本就是比特币脚本和 UTXO 的设计初衷,未来,我们会看到更多钱包利用它们,为比特币用户提供更丰富的自主保管体验。

协助保管、社交恢复、遗产规划,全部都可以用脚本实现,并且链上形式仅是一条哈希值。享受它们吧,享受中本聪继承自密码朋克的灵感,享受比特币社区经年累月的耕耘。

PS. 如果你也想测试 Liana 钱包,这里有几点提醒:

1.如果你要在 Windows 系统上运行 bitcoin core(准确来说是 bitcoind),请记住,配置文件必须放在默认路径下 `C:/用户/<你的用户名>/AppData/Roaming/Bitcoin`;

2. 使用 Liana 钱包的恢复路径需要在用户界面左下角的 “设置” 界面中使用 “Recovery”。

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

温馨提示:

文章标题:长推:测试新型自主保管钱包 Liana

文章链接:https://www.btchangqing.cn/534005.html

更新时间:2023年05月17日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

区块链

长推:三大鲸鱼地址加密货币投资跟踪

2023-5-17 14:31:06

区块链

融资 700 万美元的隐私跨链协议 Webb Protocol 产品亮点及交互教程

2023-5-17 14:31:31

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索