E16·安全无银弹
曾汨: 听众朋友们大家好,欢迎收听《亿聪哲史》第 16 期,我是主播曾汨。
阿剑: 我是主播阿剑。
曾汨: 2023 年的 12 月份,《亿聪哲史》发布了第 6 期播客《挑选比特币钱包的自我修养》。在那一期播客当中,我和阿剑老师聊到了很多关于比特币自我保管的基本概念。以及如何判断一款软件钱包或者硬件签名器是否靠谱的一些标准。那么一年半时间过去了,我们希望沿着这个主题来展开更多的讨论,覆盖到一些当初没有讨论过的话题。今天我们很高兴能够邀请到这一个领域的专业人士,硬件签名器 Keystone 的 CTO 陈东老师来和我们共同探讨这个话题。嗨,陈东老师,请你先和听众朋友们打个招呼,做一下自我介绍吧。
陈东: 大家好,我是陈东,然后目前来讲是在做一个硬件钱包的产品,Keystone。很高兴今天受两位老师的邀请,然后跟大家在这里一起来聊一聊比特币,还有一点钱包相关的一些知识吧,或者说一些我的理解。
曾汨: 好的,谢谢陈东老师。那么首先在开始我们今天一系列关于自我托管的问题之前呢,我想先请你给我们介绍一下你的从业经验,你是因为什么样的机缘成为了一名钱包的工程师的呢?
陈东: 我想一想已经很早以前的一些事了吧。我第一次听说 BTC 或者说比特币是在我上研究生的时候。那个时候的话只是听说过这样一个名词,然后大概看了一看吧,其实并没有太多的关注在这个领域。那再次去真正深入的去研究,我记得那是 2017 年,那时候也听了几个播客,然后那个时候应该是那一轮 BTC 的价格有一个很迅猛的上涨,我相信可能大多数同学吧,或者说大多数朋友最初入这个圈子里头可能也就是因为这些新闻或者说类似的这样的一些消息所吸引。那当时的话我其实就深入的去研究了一下 BTC 以及看了一些 white paper, BTC 的白皮书,还有我当时是在 Coursera 上看了一些关于 Bitcoin 还有 Blockchain 的一些课程。所以当我看完那个比特币的白皮书的时候,其实我是非常的震惊到以及说是被震撼到的。那当时看完以后就觉得这个东西起码是非常有意思的。我也希望说自己以后能在这个领域去做一些事情。就找类似的机会吧。然后最开始就加入 Cobo。也是现在应该大家都知道的一个著名的资产管理的这样的一家公司。然后后来在 Cobo 的话做了 Cobo 的钱包的一些产品,包括 Cobo 的硬件钱包。然后再后续的话就一起去发起了这个 Keystone 这样的一个硬件钱包的产品。就这么一直以来吧,就比较关注在这个自托管,然后硬件钱包,然后以及钱包整个这个领域上面,然后做出了一些产品跟自己的理解吧。这是大概的这样一个经历吧。
曾汨: 好的。那么我们就聊到了你现在所做的这样一个产品,就是硬件钱包。我想先问一下,从你的角度来看,你觉得硬件钱包,或者其实我们管它叫硬件签名器,它给这些希望自主保管比特币的用户带来了什么样额外的价值呢?
陈东: OK,有朋友经常问我就是说你怎么理解 Bitcoin 是一个安全的这样一种资产吧?然后以及说怎么样它代表的所谓的自由。那从我的视角上来看呢,更多是比特币以及说它代表的这样的一个数据的确权实际上是完全是由 self 然后来去控制的。其实从一个普通人的概念上来看,他会反驳你,比如说经常会看到类似于 BTC 被盗或者说 BTC 丢失这样的一些问题。然后他说那如果跟传统的比如说银行账户然后相比,我被盗了,我账户被盗了,我还有办法追回,那 BTC 被盗了为什么就无法追回?我这个时候会回答他实际上是,这是两个维度上的问题。第一个维度其实对于一个传统的比如中心化的系统上来讲的话,你的安全是由中心化保障的。那在 BTC 这样的一个网络上或者说这样的一个系统里头,你的安全是由你自己来保障。也就是说它是由密码学或者由数学的逻辑上来保障。所以说它俩相比所谓的安全实际上是不在一个维度上的比较。那这个就回答曾老师的问题了,就是说为什么要去用硬件钱包。那么好,如果说这个安全是在你自己手里头要去保护的话,那其实。你怎么样去保证它的安全?那么硬件钱包其实就是一个 solution 或者就是一个答案。那硬件钱包能带来的是哪些所谓的安全性的保障呢?从我的划分上来讲,第一个就是存储安全。现在主流的硬件钱包一般都会使用类似于安全芯片,包括加密存储类似的技术,然后来去存储你的信息。那么这个达到的目的就是说你的私钥,包括你的这些密钥,它是被安全的加密的存储在加密的物质里头的。所以如果说它发生了物理上的丢失,外边的人或者黑客以及一些攻击者吧,很难从这个技术的手段上然后来对它进行破解。这是第一点。
然后第二点的话,其实从我的视角上来看叫签名安全。就是说它毕竟是一个软件系统,然后当你使用比特币的话,它是要经历一个签名的过程,那在签名的过程中怎么样去保护用户的这种安全的信息,就是说你怎么样去给用户展示一个安全的数据吧,以及说这个私钥在签名的过程中,就是它在进行逻辑运算的过程中,它的这个过程是安全的。那硬件钱包起的第二个作用就是签名安全的这样一个作用。那由于硬件钱包大部分上来讲,它的物理上的格局以及它的这种特性,尤其是在对于 BTC 这种类型资产上,我觉得如果你是严肃的一个 bitcoiner 或者说严肃的一个 BTC 的投资者,或者说对于这些资产有一些认可的人,那我相信使用一个硬件钱包应该是一个默认的选择。大概这个是我的一个想法。就是总结一下,第一个是存储安全,签名安全,以及从使用上的一些 best practice 吧。就是它会迫使用户去养成一些安全保存的这样的一些习惯。这就是硬件钱包所带来的价值。
曾汨: 但其实很多人有一种观念,当我们使用热钱包的时候会面临很多的安全问题,比如说我联网的设备被黑客入侵之后,他可以从我的设备里面盗走我的助记词,很多人会以为只要我的助记词不联网我使用的硬件钱包,我就一定安全。这种想法是正确的吗?有没有一些专门针对硬件钱包的攻击来损害我的资产安全呢?
陈东: 对,这个是肯定的。硬件钱包不是银弹吧。就是在软件开发中,我们经常讲就是什么东西不是银弹。它的意义就是不是说你用上了硬件钱包,它就是安全的。那首先怎么样去使用硬件钱包,它也是需要一些逻辑上的理解的以及说你需要有一些背景知识的了解吧。比如说我们,当然现在很少了,在早些年间有一个很简单的这样一个攻击方式吧,就是有一些黑客他买了一些硬件钱包,然后他把它拆开了,然后他把他的助记词直接 setup 在这个硬件钱包里头,然后他把它重新包装。包装好了以后呢,他就把这些产品卖给普通的用户。那用户打开这个硬件钱包一看,哦,有一个地址。然后呢,可能他就买了一些 BTC,然后打到这个地址上。那显而易见,这些地址上的这个资产肯定就没了嘛。所以说这是很简单的,也是非常说明问题的一个问题吧。你不可能是拿到一个硬件钱包发现里头有一个 setup 好的这样的一个钱包然后你就会使用的。所以说最早那一批的有的时候比较常见就纸钱包也是有类似的这样的一些攻击方式的。对,所以刚才那个例子也是比较简单嘛。就是说不是说你用了一个硬件钱包,它就是安全的。就是硬件钱包本身它带来的一些攻击点呢,其实也有蛮多的。刚才我那个讲的,如果抽象来看,我们可以把它定义成一个供应链攻击。就是说在硬件钱包本身的这个运输的过程中吧,它可能会被调包,然后会被掺杂进一些非法的这样的一些数据,然后来去对用户进行一些攻击。那么硬件钱包在去使用的过程中,虽然在 99% 的时间上都不是联网的这样一个状态,但是如果在你使用的过程中,它也有可能跟你的计算机,包括跟你的手机可能产生信息的交互。那在这块的话,实际上也是有一些攻击敞口。
比如说某些硬件钱包由于自己软件或者硬件上实现的问题吧,它有可能在跟 PC 连接的时候,比如说会被注入一些数据,然后获得一些高级的权限。这个在硬件钱包发展历史上也是有类似的案例的。这个是个例子。还有来讲的话,比如说在那个 BTC 社区里头经常会讲的这个扳手攻击,就是说你虽然使用了硬件钱包,但是有一些 hacker 会 locate 到你的位置的话,其实他会比如说 hijack 你的信息,然后让你去告诉他密码,就类似于这样的一些攻击手段。所以不是说硬件钱包使用上就万事大吉了,然后反而是你可能更加的要去理解自托管的一些概念以及自托管的一些意义吧。硬件钱包本身而言它只是一个工具,就像我讲的它能提供的价值,第一个是它提供了一个离网的环境,那它的攻击面跟软件钱包相比相对来讲会少一些。然后第二个呢,它提供了这样的一个安全存储的方式。那么你的私钥保存在这个里头的话,与软件钱包相比,或者说以其他形式的钱包相比的话,它就更加的安全。我觉得严肃的 Bitcoiner 或者说 BTC 的这种持有者需要去了解的更多是钱包本身的这样的一些知识,以及说怎么样去安全的 setup 一个钱包。甚至来讲,你可能不太有一些技术的背景的话,有没有一些很简单的方式方法可以来去做一些基础的验证工作?这些我觉得反而是比挑选一个什么家的硬件钱包相比更需要去加深了解跟学习的吧。这是从我的视角上来看这个问题。
阿剑: 其实刚刚陈东老师的用词当中有一个词是非常打动我的,就是习惯。因为我们很多人没有意识到自己的很多,不管是这个公私钥的这个操作,还是自己的计算机操作当中,很多时候都是你日常使用这些设备的习惯的延伸。所以如果你有一台像硬件签名器这样的一个设备专业的这个设备,它可以帮助你去适应乃至纠正一些你的一些习惯的话,实际上对你资产保管安全性是有非常大的好处的。但这个可能大家不会把它直接当成一个有硬件签名器带来的价值。但实际上这种价值我认为是非常宝贵的。它不仅仅是说它能够提供一个安全的存储环境这么简单。实际上使用硬件签名器的话,你的整个使用习惯都会被它改变过来。在这个过程当中,你会自然而然习得一些更加安全的方法。另外一个是陈东老师刚刚提到的就是很多人一直到现在我们依然会面对这样的问题,就是说似乎有一些现有的一些系统也好,或者说正在发展的一些系统也好,它可以给我一些不是我需要为我自己的所有的保管安全性来负责的这样的一个状态,不管是一些中心化的托管方案也好,或者说原本的类似于银行的方案也好。但是我觉得有趣的地方在于,或者说大家可能没有往前再走的一步的地方在于,当你理解了比特币这种资产,它的使用是如何建立在密码学的安全上的时候。你就会意识到其实那些给了你这种保管承诺的人也只是在跟你做一样的事情而已。当你理解到这个点之后,你会天然的会走向说那我为什么不自己来呢?因为其实他跟我做的事情是完全一样的呀。就是那个给你提供保管方案的人并没有什么魔法。他没有魔法。魔法都在开源的密码学里面,对吧?那他做事跟你做是一样的呀。
陈东: 对,是,是。他更多的是提供了一些怎么说打包的解决方案,然后来去帮助你去管理这个私钥。然而这里头最大的问题就是你是不是应该信任他?我觉得 Crypto 以及 Bitcoin 带来的最大的魅力就是 non-trust, verify。这个是我们一直包括在做产品以及说我们自己很多时候坚持的一些理念吧。有的时候你会觉得这种事情比较 tricky 或者说比较难做,尤其是对于开发者而言。就比如说我举一个很简单的例子,就是我们所有的代码其实都在 GitHub open source 开了。那刚进入这个圈子或者刚进入我们公司的有一些我们的小伙伴会不理解就是为什么我们要 open source 它,以及说我们为什么要去把我们做的所有东西都开源出来。那我给他们讲的其实这就是一个思路上的变化。我把它叫 Bitcoin Spirit,就是说你去怎么样去充分地证明你自己是没有问题的。或者说我们甚至写了很多的这种 sample 以及 document,教用户怎么样一步一步地去验证我们的代码,就是跑在你设备上的代码。我觉得这个很少有厂商会这么来去做。当然我觉得我们做的还不够好。包括我们使用的这种非主流的类似于二维码的传输方式,其实也是这样的一些理念吧。一般来讲现在硬件钱包都会使用 USB,或者说用比如说 NFC,或者说是用蓝牙去传输数据。这样可以带来一个更好的用户体验,我们承认。但我们其实在做产品最开始的第一天就用了二维码,然后采取了有一种,有的时候会被人吐槽,我们的用户经常说,我的电脑上没有摄像头怎么办?然后我说那不好意思,要不然你就用手机,要不然你可能配一个摄像头。这听起来……有一些不那么用户友好吧,
但其实也是我们的一种坚持,就是我们认为二维码可以很好的把数据呈现给最终用户,然后他可以不信任我们,他可以用 open source 的方案,甚至我们自己 open source 了很多我们自己写的这个二维码解析的工具以及脚本,然后来帮助他验证他到底这个数据里头包含什么。与之相比,如果你用 USB 或者用蓝牙或者用 NFC,其实很难去做到这一点。所以这个就是我们对于这个行业的一些坚持吧。我们认为是开源的、开放的、可验证的东西,应该是一个更好的方案。
曾汨: 那么陈东老师,其实你刚刚介绍了几种关于硬件签名器的攻击,比如说供应链攻击,比如说签名上的一些攻击,除了五美金扳手攻击,它可能是社会工程学上的,这个今天就暂时不讨论了,那么对于其他的一些攻击听起来非常的技术,可能对于用户来说并不是非常容易理解,作为一个普通用户,我们在使用硬件签名器的过程当中,有哪一些好的安全习惯是可以帮助我们避免这些攻击的呢?
陈东: 对,我觉得这个是个很好的问题,非常非常好。然后以及说我觉得有的时候我甚至想我们可能应该去写一篇文章,然后来去把一些我理解的一些 tricks,然后来去让更多的人知道。就刚好今天有这个机会,然后可能我会聊一聊我自己的一些看法吧。首先呢,我们先把这个问题 narrow down 到比如说去挑选硬件钱包吧,或者挑选钱包的这个方面。首先我觉得第一点尤其对 BTC holder 或者说对 BTC 爱好者吧。第一点是你应该去挑选一个开源的不管是软件钱包还是硬件钱包。这个我觉得必须是第一条要去聊的。因为如果说这个钱包主要在去做比特币,但是它不开源,那我觉得这个就是一个很 tricky 或者说很有意思的这样的一个选择吧。从用户的角度上,开源目的主要是在于可验证性。有可能说 OK,我不是一个开发者,我可能没有办法去读这些 code。但是你要相信,尤其是在 BTC 社区里头,一旦开源的话,会有很多开发者会去看他们的源代码,然后来去审视是不是一个好的这样的一些解决方案,或者是好的这样一个产品。这是第一点。然后呢,开源的也分吧。就是说,源代码开源这是第一步,但是你怎么样证明你的 source code 跟在你买到产品上的这些软件运行的是一个版本,那这个其实你就可以去审视一下是不是这家钱包服务上提供了类似的验证工具,或者说验证的方法吧。如果说在开源之上,然后这个钱包厂商提供了方式,让你可以验证你设备上运行的,或者说你买到设备上运行的代码和它开源出来的代码是一致的。那么这个就是一个很好的这样的一个证明吧。就证明起码在这个时间点上你看到的状态它就是最真实的状态啊。这是第一点。
第二点,当你选定了一个钱包,拿到手里,你应该怎么做呢?不是非常着急的去重新生成助记词,然后就开始去使用,而是说你要去做验证。这个方法我觉得有很多,我这里可能比较推荐的一个方法是你先导入一个测试助记词,比如说是一个 abandon,最后一个 about,这样的一个广为所知的测试助记词,然后到这个钱包里头,然后呢,当然他会 setup 这些钱包,然后产生地址,然后你可以去 verify 他产生的地址。跟市面上通用的工具,比如说 Ian Coleman 的那个 BIP-39 的那个网站上,你去输入同样的数据,然后去看是不是能 generate 一样的地址出来。这里头它背后的意思是什么呢?首先,它验证了整个导入的过程实际上是一个正确的过程。第二个,它验证了地址的生成是一个正常的地址的生成。同时,这家钱包开发商他用的是一个通用的标准。这点非常非常关键。因为去年吧,有一些朋友也会问到我,比如说他在老早以前买了个钱包吧,然后去存了一些比特币,他是把助记词保留了下来,但是呢,过了两三年或者三五年以后,他会发现这个钱包的服务商已经比如说停止运营了,那这个时候他把他的助记词导到其他硬件钱包和软件钱包上,他会惊奇的发现地址不一样。对,这个原因是什么呢?就是要么他没有 follow 最标准的协议,然后来去做实现,或者说他实现的方式是有问题的。那这个就很悲惨了。就是说其实你在早期可能做出了一个比较明智的这样的一个投资的决定,但实际上因为缺乏对安全的去自托管的这样的一个理解吧,那实际上很难去找回你原来那些资产了。所以说我想讲的第二点就是当你 setup 好一个钱包以后,第一步要做的是验证地址。
你甚至可以说你买了个硬件钱包,然后你跟软件钱包进行验证。或者说你选了一个软件钱包,然后你会再去挑一些软件钱包,然后交叉验证。那这就是第二点,就是说你验证它的助记词的保存以及地址生成的逻辑是正确的,以及说是一个标准的流程。那这样,就是自托管的意义了。所谓的自托管就是你的 private key,你的助记词完全是在你手中保持的。以及说它是有密码学保护的,而不是有某家厂商保护的。所以即使 10 年以后或者 15 年以后,这个提供出的厂商可能不再运营了,或者说出了什么问题。依旧你的 BTC 是在你自己控制的。对,这个是第二点。那么第三点呢,也是一个比较好的习惯吧。刚才我们讲的是用测试助记词,然后当你做了这些验证,起码你能证明说这家钱包在地址生成,包括私钥管理那一块起码是可以值得信任或者说可以是做的正确的。那第三步呢,就是你去正经的去做一个钱包 setup 的流程。包括你就是在一个安全的环境底下,所谓安全的环境底下,可能你得注意你身边有没有摄像头。如果说你更 paranoid 一些,就是更神经一些的话,可能有一些电磁上的这样一些考虑吧。就是说选一个比较隐私的这样一个环境,然后来去生成这个助记词,然后把它写在不管是写在纸上还是说把它存在一个助记板上,然后把助记词保存好。那么再去 verify 一下这个地址是不是一致。这里边还有一个 trick,就是说你生成完了以后,你可以把这个钱包 delete,再重新导入,然后去比较这个地址是不是一致的。然后做完这些过程之中呢,你可以稍微的打一些 BTC 进到这个地址上,然后再去验证一下它能不能正常的被签名被转出来。
然后做完这些 setup 以后,如果说这些 checklist 都通过了以后,你可以放心的把你需要放在冷存储上的这些比特币然后打到这个地址上。那么相比而言,这个就是一个可操作的以及说比较安全的这样一个钱包 setup 整个的这样一个流程。总结一个。第一个选一个好的钱包提供商。第二个是验证一下他的私钥的生成以及说地址生成的逻辑。第三个验证一下他的签名的逻辑。那么一般来讲,这三步如果说整体都是没有问题的,那就说明是这个钱包基本上是比较安全的,以及说它是一个可用的这样一个状态吧。就大概是这样的一些想法。
曾汨: 我这边有一个问题是关于一开始的供应链攻击这一块。这一块的话其实是不是一般来说是厂商那边来解决这个问题?
陈东: 这个时候其实怎么讲?我不是说我们做得多好,但是我看到的其实大多数厂商可能没有太多的对于供应链攻击有比较好的这样的一个考量吧。就是可能很多厂商在包装上他会做一些供应链的攻击的这样一个保证。但是相比而言的话,我们可能做的相对思考会多一些。我们会提供一个官网验证的这样的一个功能,就是说当用户收到我们的产品以后,然后他可以进到我们官网,然后去做一次二次验证,以证明说在这个供应链的过程中,他实际上是没有被受到攻击的,也就是说证明这个尤其是封面吧,或者说是硬件上的这样的一些设计,它是一个相对来讲比较初始的这样一个状态。要讲原理的话,其实我们会在我们的设备上去埋一个公私钥对,然后我们的这个网站上会有一个公私钥对,然后我们会做加密跟签名,同时的去 verify 这个设备,实际上是我们的这样的一件设备。如果说它在供应链上,比如说被替换掉了固件,那么它跟我们这个网站进行交互的时候,其实是就通过这样的一个官网验证这样一个过程吧。具体的这个技术的细节,其实我们也写了一些 blog,大家如果有兴趣的话可以去找来看一看。
曾汨: OK,然后关于陈东老师你刚刚分享的很多安全上的习惯,其实后面很多点我觉得用户是比较容易的按照这个习惯来一个一个执行的,但是关于第一点也就是寻找一个开源钱包,这一点我觉得对于很多用户来说并不是一个非常容易的一个事情,因为我们可以看到基本上市面上可以说 95% 的钱包,他们都会在官网上写上两个大字的字开源,但是普通用户其实很难自己有办法去知道你是真的开源还是假的开源,是部分开源还是完全开源,有没有一些比较很容易的方式帮助用户来快速判断。
陈东: OK,我觉得可以用一些简单的方法,比如说官网上它有没有 link 到自己的 GitHub,这是第一点,然后第二点可以做一些简单的搜索,比如说这家硬件钱包厂商在推特上或者说在其他的一些讨论中有没有经常会去聊到它的 source code,甚至说有没有一些值得信赖的开发者,然后会提出一些比如说对于它源代码的这样的一些问题,因为如果说,我不能讲这个事情是百分之百,如果说一个厂商他的 source code 没有被人 challenge 过,那我觉得要么是他做的是完美的,要么是他可能就不是完全 open source 这样的一个状态吧。但我相信没有一家厂商做的是完美的。对,就是你可以做一些 research,看一看这家厂商里头,比如说它的 source code 会被人 challenge 过,会被人讨论过,以及说会被人去了解过。那么他们又是怎么回答怎么应对的?这个我觉得是一个很好的这样的一个讨论的过程吧。然后另外一个就是可以关注一些,比如说在这个社区里头你值得信任的人,尤其是有一些技术背景的,然后看一下他们的一些关注点吧。其实不太有非常简单的 way 然后能去做验证。还有一个很重要的指标,尤其是对硬件钱包而言就是时间。就是如果说一个品牌或者说一个厂商他存活的时间足够长,那起码说明他们是经过时间的验证。
阿剑: 这里我给大家插播一个小的故事,其实是顺着刚刚陈东老师讲的两个点往下讲。一个是陈东老师提到的那个 GitHub 的这个代码库。其实有一些是可以依据这个代码库本身去做一些检查的,比如说你打开它的代码库,这个页面的右上角一般会告诉你它的上一次提交是什么时间,它有一个历史的这个提交时间,你看一下它的那个频次以及它是从什么时候开始提交的,这种细化的调查也会有帮助。但是也有一个很有趣的陈东老师提议是说,你其实可以关注更多的这些,包括他们本身有一些安全背景去做一些测评这样的一些人,然后他们也会促进这种信息的这个共享。这让我想起了一个很著名的也是很有争议的 Bitcoin Core 的开发者叫做 Luke。可能我们的听众都很熟悉他,因为他是一个很著名的被所有的反对阵营归为这个比特币原教旨主义者的一个人。那他曾经在自己的一篇博客当中跟大家分享你怎么去验证你下载到的 Bitcoin Core 的这个软件就是开发者开发的,他没有被篡改过。然后他其中提到了一个很有趣的技巧,叫做去参加开发者的聚会,然后面对面的跟某一些你喜欢的人请求他的公钥。他的意思就是说,是的,我们这个基于密码学的这个验证,它是一整套的,基于哈希值,有哈希值,有电子签名这个东西,那但是有一款就是你怎么获得这些开发者的这个公钥,那有一些办法是说你从网上有一些服务器,就是说这些开发者一般会把自己的公钥公开,但是你也可以去参加现场聚会,就问他,你是那个公钥的那个持有者吗?是的话,你能不能把你的公钥给我一份?就这个点有趣的地方就在于,大家讨论安全的时候,往往把这个事情想得很简单。但是其实安全它是一个一环扣一环的东西,
比如说像陈老师刚刚提到的一个安全的这个隐私的环境,包括有一个开放的讨论这些开源的这个代码的一个氛围,当然也包括一些我们能够比如说去接触到这些开发者有一个开放的这个讨论环境,接触的这个可能性,我觉得这些是大家不应该忽视的,安全是一个一环扣一环的事情,是一个不是那么 easy 的事情,对。
陈东: 对,我觉得再延伸来讲的话,其实你可以找一个你身边的开发者的朋友,然后让他给你看一下,比如说你要选那家服务的 GitHub,它是一个真的 source code 还是不是真的 source code,这个很好验证的,就是即便他不是在这个领域的时候,他只要熟悉 GitHub,就是他能看到,它是不是一个活跃开发的项目?就刚才阿剑老师是通过他的那个 Commit List,然后看,就比如说是一个 repo,如果它就被提交了一次,然后再也没被更新过,那显然它不是一个正常的这样的一个 open source,这样一个状态,对。
曾汨: 我们刚刚其实聊了很多关于硬件钱包以及如何安全使用硬件钱包的一些话题。那么现实情况是,还有很多用户他可能因为经济性上的原因或者他觉得我的比特币太少了,所以我不需要一个硬件签名器。那这种情况下,他们往往会使用软件钱包。对于这些只使用软件钱包的用户来说,有没有哪一些建议能够给到他们的?
陈东: 我觉得是首先第一点就是我现在的观点是可能不仅仅是 Bitcoin 的,就可能任何的一个 Crypto 的 holder 或者说 Crypto 的持有者都应该去使用硬件钱包,因为你是严肃的在去对待这件事情,就是你给你的私钥买了一个家,这个花费如果从投资的角度上来看,它的那个成本和收益是不成比例的。比如说一个硬件钱包可能最便宜的也就是比如说 100 美金吧。但实际上这 100 美金它能给你提供的这样的一个安全的保证,其实我个人认为是是远超这个价值的。这个是第一点。但如果说出于各种各样原因,比如说你就是想先试水一下,然后来去体验一下,那么也 OK。这种方式也比较多。首先选择一个正常的软件钱包。就是刚才我讲的那些验证的过程,不仅仅是硬件钱包上可以去这么验证,软件钱包依旧是可以这么验证。如果说你发现你用的这家软件钱包通过我刚才讲的这种方法发现比如说地址生产的不一致,或者说它跟常见的这种方式方法是有区别的,那我觉得你可能会要考虑把它换一个可能更加广泛去使用这样一些钱包吧。那么比如说你希望用一个软件钱包然后来去存放你的 BTC,你可以完全使用一个比如干净的手机,然后切成这种飞行模式或者说是断网这样状态,然后你就把它当成一个冷钱包去使用。对,这个是一个最简单的方法吧。那可能也只是需要你去淘汰出来的一个比如说你的安卓手机也好或者说你的 iPhone 也好,然后去把它当成一个运行环境吧,然后去选一个好一些的软件钱包,然后拿去使用。这是我的看法吧。
曾汨: 所以其实总结来说还是在有条件的情况下尽可能选择硬件钱包,因为它的安全性是软件钱包永远无法比拟的。
陈东: 对,这是我的观点,就是我一般会跟我的朋友这么来去讲,就是如果你的资产。如果法币计价的话可能 10k 以上吧,你就应该去选一个硬件钱包。比如说一个硬件钱包 100 美金,那 1 万美金的资产实际上就是只是它的 1% 嘛。你投入 1% 然后来去获得一个相对来讲能成倍提高你的安全保证的这样的一个决定,我觉得是一个合理的决定。但如果说你只是用来测试一下,或者说简单的去体验一下,那么用一个软件钱包我觉得也没有问题。
阿剑: 我对陈东老师刚刚的意见提一个小小的意见吧。就我觉得这是陈东老师个人的意见,但我的想法是,如果你认为这件事情是严肃的,那么其实陈东老师说的那个数额完全可以大幅下调。就像陈东老师说的,不管你选择软件钱包还是硬件钱包,有一些验证它的这个流程,其实对你是有非常大的价值的,你应该提前尝试的去了解一下它。据我所知,很多人在面对像尤其是 Bitcoin 这样一种有巨大升值潜力的这个资产的时候,他往往第一时间想到的事情都是我要投入一个比较大的这个金钱,然后去享受它哪怕是短期的波动给自己带来的巨大升值,但是他忽略了资产的这个保管对他的意义。然后这个过程有可能会在日后给你一点不一定大不一定小的挫折让你受挫。所以在此之前去了解一些跟公私钥跟他的这个保管有关的这个知识其实是非常非常重要的。包括选择硬件签名器就一开始上手的时候就给自己提供一个比较好的习惯的这个基础。我觉得是非常非常有意义的。我觉得其实陈东老师说的,就是说他给你带来的这个收益的安全性好处是不成比例的。我非常赞同这句话。你尽可能一开始就把一个习惯养好,把这个基础做好,绝对会给你带来一个非常大的好处的。
曾汨: 对。
陈东: 我觉得核心不是你要不要去用硬件钱包,就是核心还是你怎么样去建立这种自托管的体系,这个是首先需要学习的。第二个是硬件钱包在这个里头它只是一个工具,就是你把体系先建立好了,你可以说我现在不选择硬件钱包,我现在想选择其他的工具,然后来去帮助我去搭建这个体系。那一旦这个体系建立好了,工具只是一个手段吧,就是你可以先选择软件钱包,然后在适当的时候切换到硬件钱包,甚至说你现在选择一家硬件钱包,然后后来你可能会尝试更多的这种高级的方案,比如说像多签,或者说其他的这种方式吧,然后来去管理你的资产。这个都是基于体系然后演化出来的一些更多的这种实践的路径。所以说核心,刚才阿剑老师讲的很对,就是核心还是说你要把体系先建立好,然后再由体系出发去选工具,而不是倒过来,就是你朋友给你推荐,你去买一个硬件钱包,好像这个事情就万事大吉了。那体系如果没有建立好的话,迟早可能会吃一些亏的。
阿剑: 对,还有一个提议是,如果你是纯粹的,像陈老师说的,就是说你纯粹是尝试上手的话,有一个很简单的办法,就是现在的,包括比特币啊,在内很多这些区块链,其实它都有测试网。如果你不太清楚说这个事情到底是怎么回事,你想通过自己上手来在这个过程中学习一下的话,有一些公开的这个我们称之为水龙头的网站,他会给你一些测试网络的这个测试币,你可以拿他在这个软件钱包里面或者硬件签名器这个搭配尝试花费一下,然后在这个过程当中你会了解到更多的。
陈东: 对,测试网是一个非常好的工具,尤其是在 BTC 上。其他链上可能我还不太了解,但是 BTC 上的测试网基本上跟主网它起码验证的这种效果其实基本上是一致的。所以你不管是用测试币还是用其他的方式吧。但我的建议是主网跟测试网都需要去进行一遍,然后去完成这个验证的流程,完成这个 setup 流程吧,包括它的这个验证的过程。
曾汨: 那其实我们刚刚聊了很多单签名钱包的安全性以及安全上建议的分享。但其实除了被广泛使用的单签名钱包之外,现在市面上还有很多。一些自我托管或者半自我托管的解决方案,比如说多签,比如说 Shamir 的资料分割,比如说现在很多厂商在推的 MPC 钱包,对于用户来说这些钱包有什么区别吗?陈东老师能不能给我们简单介绍一下这些方案,它们的出现是为了解决什么样的问题,有哪些差异呢?
陈东: OK,那我可能是先从多签上来讲吧,因为相比来讲我对多签了解的多一些,BTC 上的多签在 Taproot 之前提供了 P2SH 的多签的一些脚本类型。你可以去组建一个多签的 group,比如说我阿剑老师,然后曾老师,我们去 setup 一个多签的 group,然后去创造一个 2-3 的这样的一个多签的地址,然后那么所有的在这个地址之上的这样的一个资产必须是由我们其中三个里头的两个人,然后才能去解锁这个脚本上的这样的一个资产,然后完成比如发送和转移的这样一个动作。那这个其实对于比如说一些高阶的自托管用户其实就带来一个比较好的这样的一个功能。最大的他解决的问题就是单点失败的问题。比如说你如果用一个单签。你助记词丢了,或者说你的设备损坏了,那其实是比较危险的。那么如果在这个维度上来看,你用一个多签钱包,然后做一个 2-3 的备份,那么只要你有两个密钥吧,其实它就会带来一个更高的这样的一个安全保证。这个是对于自托管的普通用户。那么对于一些机构用户来讲,他可以用多签,然后去重新规范他的流程。比如说在一个组织里头,你可能是需要 2-3 或者甚至 3-5 或者更多的人去授权这个签名,然后来去完成这笔交易的这样的一个确认。所以多签我觉得是一个很常见的这样的一个安全保证的这个机制吧。不管是对于个人用户也好,还是对于这种机构用户也好。它是一个高阶的这种安全保证的这种方法。这是第一点。然后什么样的 backup 呢?其实我理解是另外一个维度上的这样的一个关系。就是刚才讲的多签钱包,其实你的 private key 是在你自己手上去管理的。
那怎么去安全的保存助记词以及保存 seed 其实又是一个问题了。就是那什么样的 backup,甚至我们如果说把它局限一些,比如说 SLIP-39 这样的一个协议跟标准的话,实际上是提供了怎么样去做分片助记词去保存的这样的一个方法。举个例子,比如说你有一个钱包,然后的话你可以用什么样的 backup 把你的助记词分成多片。然后把这些多片保存在不同的地理位置上。这样的话也是避免了单点失败的问题。如果说落到一个组织里头来讲,也就是避免了所有的信息掌握在一个人手上的这样的一个问题。那任何人他只去拿一个 shard 的话,其实也是相对来讲风险会比较小的。那当需要多个 shard 合在一起去组装成完整的私钥的话,那就可以去选取不同的人去组织成这样的一个不同的私钥。那么 Shamir Backup 更多是在助记词或者说 Seed 层面然后完成了一个分片保存跟备份的这样一个逻辑。行业里头也有一个通用的标准,就是我刚才说的 SLIP-39 的这样一个协议用于支持。那么在这的话,像市面上的产品包括 Trezor 跟我们其实也都是支持 SLIP-39 的分片保存的这样一个协议的。这是那个什么样的 backup?对于 MPC 钱包上来看的话,我的观点实际上更多的是机构用户提供的一个服务吧。也就是说他可能是提供了一个 MPC 钱包,然后用户自己掌握一把 key,机构掌握一把 key,可能是某一个备份,然后再去掌握一把 key。去风险的这种方式对外提供这样的一个服务。所以说对于 BTC holder 上来说,可能目前来讲更广泛的使用的这样的一个协议跟技术,主要是多签以及 Shamir Backup。
MPC 据我了解是更广义上的,比如说去做一些托管服务,像 Fireblocks,他们会提供 MPC 的这样的一个 service 服务吧,提供给他们的这样一些用户,然后来去使用。对这个就是大概的刚才曾老师提到的三个钱包的这种技术路线吧,或者说高阶的钱包的这种方法。
曾汨: MPC 的话它是开源的吗?
陈东: 它的算法应该说是开源的,或者说是公开的。然后但是每一家其实有不同的实现方式。然后具体来讲,我们如果提到 MPC 其实也是更一个更广泛的这样的一个范围。看具体来讲,可能我们需要去 narrow down 到它具体的一个比如说一个方面是门限签名还是其他的这样的一些方面,然后来去做讨论吧。从学术界来讲,肯定它提供的某些算法都是公开的。一般来讲,这些算法的实现可能都是由某一个厂商来实现的。核心的逻辑以及核心的这些 library,它们一般来讲也是公开的,以证明它们技术的一些可验证性以及它实现的一些细节。
曾汨: 从这个意义上来讲,MPC 它其实属于一种托管型的方案,只不过是让用户有一小部分控制权。
陈东: 这个看你怎么来去理解了,就是提供 MPC 服务的现在来讲更多是这个托管类的服务商,但普通用户也可以说我用 MPC 的方式然后去管理我的资产,这个也是 OK 的。如果你是一个开发者,你当然可以去这么做。如果是一个普通用户的话,你可能得选取某一些 MPC 服务的提供商吧,然后来去做这些服务。比如说我了解到像 Zengo,它就是一个 MPC 钱包,来去管理你的 Crypto 资产吧。这个就是一个典型的 MPC 的方案。那我看到的业界更多的 MPC 方案,更多的还是在托管服务上,比如说刚才说的 Fireblocks,对于他的用户来讲,他就提供了一个 MPC 的解决方案。那这个时候的好处也是显而易见的。就是用户不用百分之百信任 Fireblocks 完全的服务,而是说我自己也有一些控制权。对。
曾汨: 所以其实如果我们用户想要完全自我托管的方案的话,目前其实是只有多签和 Shamir,当然他们两个侧重点不一样,一个侧重于几个私钥来共同签名,一个侧重是如何在私钥的保存上实现冗余。
陈东: 对对对,你可以联合使用,比如说用什么样的 backup 去保护好你的 seed phrase,就是你的助记词,然后用多签去生成一个多签钱包,然后来去提供这种 cosigner 上的冗余。就是我觉得托管这个实际上是一门学问吧,就是说你要理解这个体系以及理解里头的方法,然后再去使用合适的工具。对,就包括多签来讲的话,也有很多这种小的 tricks 需要注意的,比如说你三把 key,你要 verify 这三把 key 生成的地址都是在一个多签钱包里头,然后你的 Change Address 实际上也是属于这个 key 生成的。这个很多了,就是在这个多签钱包里头。所以整个的 setup 过程也是一个需要验证以及需要 verify 的这样一个过程。
阿剑: 对,包括有一个可能很多刚开始尝试多签的朋友可能会忽略的一个小细节就是你使用多签的时候,你的那个输出描述符,这个东西是你需要额外的保存的。在一般你使用单签名钱包的时候,你不太需要考虑这个问题。
陈东: 既然讲到这儿,可能我们就展开稍微讲一讲,就是多签的话,你除了要保存你的 seed phrase,还是要保存刚才阿剑老师讲的叫 wallet descriptor,就是对于这个钱包的描述符,它里头包含了比如说你的多签的脚本,以及说多签的这种 cosigner 的扩展公钥,然后类似的这样一些信息,然后你才能去恢复出来这个多签钱包,然后同时你要保证你的 cosigner 给你保存的是一样的信息,对,这个就是比较重要的一点吧。但好的一点就是 setup 过程一旦结束,然后这些 verify 过程一旦结束,后续是比较安全的。就是我觉得 BTC 的魅力也就在这里,就是很多事情是前置性的,就是前置性的,你只要做好后边的使用,其实就相对来讲是很简单,以及你只要 follow 那个 playbook,基本上就不会有太多的问题。因为它的变化性上会局限一些吧。当然有人也会说这个是不好的地方,但我觉得这个反而是一个比较稳定的地方。如果你严肃对待这个资产的话,那它是个优点。
曾汨: 其实这里有一点忘记给我们听众朋友做背景介绍了,就是陈东老师其实是一个跟多签非常重要的 BIP,也就是 BIP-129 的共同作者之一。
阿剑: 陈东老师的这个个性就是主打一个谦虚,就在自己的这个从业经历里面,对于自己是一个多签钱包发展里程碑的一个 BIP 的这个共同作者,这个是一句都不提。
陈东: 我觉得我做的很有限吧。也是跟其他几个钱包开发者然后一会儿讨论的。那我就提两句这个 BIP 吧。这个 BIP-129 是关于怎么样去 setup 这个多签钱包的这样的一个标准 procedure 的这样一个描述。以及说关于里头的比如说我们有一个两轮的方案以及过程中加密的这样一些选择。就刚才我说到就是说前置条件其实是很重要的。但是在这个 BIP 之前吧,可能很少人去讨论这个过程。那这个 BIP 实际上是定义了这个过程它应该去怎么样去描述数据以及怎么样去传输数据的这样一个方式。那现在我们其实也在尝试的去推广这个在多家钱包里头,然后去采用这种方式。很小的一点贡献,我也很高兴说是能做出这样一个贡献的。
曾汨: 行,那我们既然已经聊到多签了,其实也想借着多签这个东西接着往下聊一聊。最近其实行业里面发生了一个比较大的安全事件。今年 2 月份的时候,一个很著名的中心化的交易所叫 Bybit,他遭到了一个黑客的攻击。那黑客当时就是诱导工作人员转走了使用以太坊上面的一个多签智能合约控制的资金。那这种攻击其实按照我们的理解在比特币上是没有办法发生的,因为比特币的多签跟以太坊或者别的都不太一样,但是还是想听一听陈东老师对这个问题的一些看法。
陈东: 对,刚才曾老师讲的就是本身这种方式在 BTC 上是不可能发生的。就是这个过程如果大家不太了解的话,可以去看之前慢雾有一个推文,描述了一下这个过程是怎么发生的。它更多是一个社会攻击以及说利用了以太坊上的这样一些特点然后来去达到的这样的一个状态吧。那其实我觉得拿 BTC 的多签跟以太坊的多签去对比其实不是一个合适的比较方式。因为两个完全就不是一个东西。以太坊上的多签其实就是一个合约嘛。因为以太坊的特点,它其实提供了一个完备的这个编程方案。所以说我可以去写任何我愿意实现的逻辑。那 BTC 上的多签它就是一个脚本,它定义是比较明确以及直接的。所以没有办法拿一个比如说一个程序跟一个确定性的这样一个脚本做比较,这个是我的理解。那么 Bybit 的那个关键点就是在于这个黑客吧,使用了一些漏洞,这个漏洞可能是流程上的漏洞,也有可能是产品上的漏洞,去骗取了一个签名。然后这个签名呢可以去修改这个多签合约里头的逻辑,然后控制住多签合约,把这个地址上的资产然后做完成了一个转移。那在 BTC 上来讲,你就没有办法通过这种方式然后来对多签脚本进行攻击。但我觉得需要注意一点,就不管在哪个链上来讲,就是骗取签名这个实际上是一个很大的攻击面。这也是我们一直来讲就是以太坊上的盲签问题,然后 BTC 上的这样的一个签名安全的问题其实也是值得大家去注意的吧。所以对于一个 BTC 钱包来讲的话,签名过程的安全确实也是要谨慎去对待的。比如说我就举个很简单的例子。BTC 有一个找零的概念,对吧?你不管是你的单签还是一个多签,你的找零是找零到谁以及找零到哪?确实是一个很需要去 verify 以及验证的过程。
当然我讲的这个是很显而易见的过程。就是你是找零到自己呢?还是找零到 next address?还是找零到一个第三方的地址?这个甚至上来讲的话,有一些钱包可能不太会去标注找零,或者说不太会提示用户说你有几个这个 output script,所以说我觉得这些问题都是需要谨慎去对待的,尤其是对于签名上来讲。那么钱包厂商尤其是需要去验证,比如说这笔交易它会发生什么?比如说它会带来几个 output,然后这些 output 是不是找零到用户自己的地址上?还是一个被攻击的这样一种方法,以及是不是验证手续费,然后就是这些常见的这种 verification 的 point 吧,都是需要仔细地去校验,以及如果发现问题及时地提示出来。对,所以 Bybit 本身这个 case 上来讲在 BTC 上可能不太容易出现,但是签名安全我觉得又确实是值得去注意以及值得去了解的吧。当然不是说把所有的这种责任推给普通用户。那么对于一个钱包开发厂商而言,需要去做更多的这样的一个方式吧。
曾汨: 那其实 Bybit 这个事情让很多人会有一种看法。比如说以太坊上这种智能合约账户是不是太灵活了。比如说在很多标榜自己具有可编程性的区块链上经常会出现类似的攻击。在这个问题上我也想听一听您的看法。大家的这种直觉是否成立?我们所谓的这种由于可编程性更加灵活带来的攻击,它跟这个灵活性真的有关系吗?
陈东: 我的看法是灵活性上肯定会带来风险。所以说每一个 blockchain 你得定位自己到底是在干什么。对于 BTC 上而言,我不认为这个它不提供图灵完备的 script 是一个 bug 或者说是一个错误,而我觉得它是有意为之吧。它把自己定义成一个 money system,不管是最开始中本聪在白皮书上写的点对点的 cash system,还是现在大家更多的把它看成一个数字黄金这样概念的东西。它都是一个需要严肃处理的系统。所以说,那在这个时候,它的这种不灵活性,以及说它的限制,反而是一个 feature 吧。这个是我的观点。但是我们也需要比如说去中心化的计算机或者去中心化的这样的一些编程的平台,这个我觉得我们也是需要的。那如果说是需要的话,那就整个的生态也是需要去做更多。当面对这些攻击的时候也是需要去考虑更多吧。这个就是我的观点,就是大家的目标不一致,所以说的路径也是不一致的。
曾汨: 但其实现在比特币上可以编程的脚本也越来越灵活了。比如说,我们之前播客里也多次提到的,这几年其实越来越多的钱包支持了 Miniscript,它就是可以让用户自己定义自己的一些资产保管逻辑,比如说我可以设置一个时间锁,或者我可以让多个解锁条件同时存在,然后现在也有很多钱包厂商支持类似的自我托管条件的编程,在你看来,这些更加灵活的比特币上的编程会不会也带来类似的风险呢?普通用户应该如何平衡这里面的风险和它带来的好处?
陈东: 非常好的问题。这个我觉得就是钱包厂商要做的事情。你不能把这种灵活性完全开放给用户,然后说 OK 这是社区提供的能力,然后你自己去负责。我觉得一个负责任的厂商是应该去 balance 在这里头。比如说 time lock 或者哈希时间锁这种概念,你可以把它包装成一个更完备的 feature,去提供给用户提供相应的功能,但是完全的开放我觉得是有些不负责任。这个是我的观点。
曾汨: 所以其实按照我的理解的话,比特币上这种灵活性带来的风险它并不是说签名过程中的风险,跟你在网上那种灵活性带来的风险它是不一样的,这种风险更多是在用户使用层面上的风险,而这些风险可以通过钱包厂商的有意的设计,有意的引导来规避掉。
陈东: 我的看法是这样的。BTC 上的 script 其实是它更多是底层的这种一些语言吧。为什么咱们上来讲就是说 BTC 上的开发者会少一些?我觉得更多上来讲是它更难一些。它更偏底层的这种一些脚本语言然后来去设计一些功能其实是比较难使用以及难去理解的。那其他的这样一些区块链系统比如说像以太坊或者说像 Solana 这些其实提供了更高维度的这种编程语言的支持。所以说它上面的灵活性上就更多一些。
阿剑: 其实我觉得陈东老师在之前提到的一个概念对我们理解这个问题很有帮助,就是前置性跟后置性的概念。就好像陈东老师在提到你去组建一个多签钱包的时候,你在一开始为了建立这个多签钱包,你要做大量的工作,你得有一些背景知识,然后你在这个过程当中,你有好多个密钥,那你这些种子的这个保存你都要考虑,然后你要做一些备份啊什么,你要选择一个好的,靠谱的一个软件钱包,你要提前验证一下是不是在每一个签名器上它的这个地址都能正确显示,但这些是前置性的,也就是前置性是这个工作你做完之后的话,后续的话它会给你一个比较强的信心,就是说你知道一个多签的地址,它一旦做好之后,它就是那样的,它不会被第三方或者是某一个乱七八糟什么东西把它干扰掉。那它的负担是前置性的,但是有一些系统的这个设计会把一些风险移到后面去,那就是后置性的,就是说你前面你要建立这个东西好像比较简单,但是一些问题它不会在一开始就暴露出来,不会让你一开始就意识到你需要提前考虑到这种可能性,那它会是一个后置性的这个东西,那我觉得从安全的角度上来说,让事情变成前置性的会是一个比较好的一个状态。就是说,如果这条路走不通,你应该尽快地让我知道它走不通,它不能这样做。而不是说等到事情发生了,然后再来处理,或者说不要给用户一个很大的这个惊吓。我觉得这个是一个关键的这个原则。那在这个角度上,其实我的个人看法就是,因为我自己也稍微研究这些区块链系统上的可编程性的问题。比特币它有一个很重要的特性,我们叫做无状态验证,或者叫 self-contained。它的意思就是说,如果我要动哪一笔资金的话,这笔资金一定要作为一个输入,变成一个交易的一部分。
那么也就是说当一个地址或者说一个脚本它一旦建立好之后的话,它就是那样的,它不能突然间被它更改掉。你只能说我把它放在交易当中,把它再发出去,我才能够变更它的这个状态。那这一点上它本身是提供了一些安全性上的好处的,就是说你的负担是发生在前面,然后你建完这个之后,那你大概可以知道了,就它的工作这个流程是很确定的,会给你比较强的这个信心。那我们去分析比如说 Miniscript 和未来会出现的这些可以定制化的这些比特币钱包的时候,其实也可以用这个角度,就它会不会给用户很多的这种惊吓,还是说大体上你依然只是在前面要做的事情更多,但是它依然还是可靠的。我觉得这个角度是刚刚听陈东老师的这个分析会给我的一个启发。
陈东: 对对。提一点就是刚才阿剑老师讲到这个无状态。这也是我刚才开头介绍,我是看白皮书以及说初次了解 BTC 系统最 impress。我一点就是说在这么一个 Ledger 系统里头,用这种 UTXO 的模型达到无状态的方式是我非常喜欢的。当然是我的个人癖好,或者说我个人爱好,作为一个软件开发者,我对于无状态,因为我知道有的时候你在去设计传统软件的时候,状态都会带来 Bug。或者说它确实会引发一些意想不到的这样的一些问题。但是无状态那么就非常的干净,以及非常的确定性。这就是作为一个有一点洁癖的这样一个工程师,然后再看到无状态的系统,天生他就是会非常喜欢。所以这块刚才阿剑老师讲的这个无状态,我觉得是非常好的这样的一个特点吧。对,这个是我的一些看法。
曾汨: 好的,那么感谢陈东老师今天的精彩分享。我想听众朋友们通过今天这期播客应该对如何安全保管自己的比特币有了更多启发。如果听众朋友们对这个话题有更多兴趣,我们在《亿聪哲史》的第二期和第六期关于硬件钱包和自我托管也有很多的讨论,欢迎大家收听。那么我们下期再见,拜拜。
