亿聪哲史首页

<亿聪哲史 />

"Bitcoin is the signal. Everything else is noise."

Return to Block E06

E06·挑选比特币钱包的自我修养

曾汨: 听众朋友们大家好,欢迎收听《亿聪哲史》第六期。我是主播曾汨。

阿剑: 我是主播阿剑。

曾汨: 今天这期播客有一些特殊,因为我和阿剑老师既是这期播客的主持人,同时也是这一期播客的嘉宾。没错,这期播客只有我们两个人。我们希望通过两个人的聊天和讨论,来谈一谈如何挑选一款好的软硬件钱包,希望为大家在选择钱包这件事情上提供一些基本的思路。我相信无论正在听播客的你是一个刚刚接触比特币的新手小白,还是在使用硬件钱包的资深 holder,都能从这一期播客中有所收获。

阿剑: 其实大部分用户可能在刚接触到密码货币的时候,他们可能都会是别的一些渠道,而并不是一个按照我们行业的术语来说,称为自主保管钱包的这种形式来去收取和保管自己的密码货币。但是我们始终认为自主保管的钱包对于你的资产的安全性以及你的日常花费的隐私性来说都是至关重要的。有几个方面,首先第一方面是安全性,因为密码货币它跟在密码货币出现以前的所有的数字资产都不一样,它有一个非常特殊的特性。在于你保管这些东西所使用的方法,我们称为数字签名,就是电子签名技术。这种技术实际上在今天的大家的计算机和互联网当中使用得非常非常普遍,但是在密码货币出现之前的话,很少有电子资产是以这种形式来保存的。那么它有一个特性就在于一个私钥生成了你对外生成用来登记你的资产数量的公钥,也就是说公钥实际上是也被称为地址,实际上是我们向外展示的证明自己拥有一定数量的密码货币的方式,但是呢一串秘密的数据,其他人不知道的秘密数据我们称为私钥,才是使得你真正能够花费这些资产的关键。那么在这种情况之下呢,就引出了我们行业里面非常著名的一句话叫做 Not Your Keys,Not Your Coins,就是说如果你自己并没有保管住那个秘密值,如果这个秘密值不是你自己生成的,那么这些币实际上也不是你的。举个例子,如果你把它放在一个托管式的服务,不管这个托管服务是交易所或者是某一种托管服务的话,从一定意义上来说,你拥有的只是这个托管服务对你的债权。你用的不是那种密码货币本身。所以从资产的安全性出发,非常非常推荐你使用这种自主保管的钱包。

另外一方面是隐私性,就是说当你真的在花费它的时候,到底在你花费的这个过程当中,有多少人参与到了你的这个花费行为当中。这个参与者越少,那么你的隐私泄露的也就越少。那么当你使用自主托管钱包的时候,你可以用一系列的这个设置来将这个过程当中涉及到的主体的数量最小化,在这个过程当中也就最好的保护你的隐私。在这方面其实我还想添加一个我自己非常个人的一个理由,当然也跟我们的这个安全性的理由有点关系,就是如果你不尝试自主保管钱包的话,实际上你并不知道我们这个行业是在做什么,也并不知道它为什么存在。在密码货币出现之前,没有任何电子资产是能够允许你这样用自己生成的私钥,自己用私钥生成公钥来去保管的。那么如果你不接触这种形式的话,实际上你也就不能理解为什么密码货币被我们看中,尤其是比特币。我们创造出这样的东西,我们使用一整个网络来去维护它的运行,到底是为了什么?

曾汨: 这是我们的部分。其实阿剑老师刚刚做了一个很好的科普,这也是很多人的一个误区。比特币它并不是存储在钱包里的。大家日常中所说的钱包它本质上是一个帮助我们保管私钥的工具。然后我对于私钥或者助记词我有一个观点就是助记词是一种超能力。比特币赋予了我们自己保管自己资产的权利。但如果我们把自己的私钥交出去或者使用托管的钱包,那么本质上这个部分资产就不属于我们的私有资产。如果我们使用一个自我托管钱包来保管助记词,你有了助记词,你可以在地球上任何一个角落使用工具恢复出自己的资产,而不用受到任何中心化机构的管束,这就是为什么我们需要使用一个自我托管钱包。那么谈到自我托管钱包,其实有两个选项,一个就是软件钱包,一个就是硬件钱包。这两者其实在它的功能上,它的类比上是有很多不一样的。阿剑老师,你能给我们简单科普一下吗?

阿剑: 现在被我们区分为软件钱包和硬件钱包的这个东西,实际上我们可以从刚刚的一个基本介绍当中来去理解它们的这个功能。就是刚刚曾汨老师提到一个非常重要的点,在于什么呢?在于我们现实生活中每个人用的那个皮夹子,那个保存我们纸币或者是其他硬币的那个东西,我们称为钱包。它里面确确实实放着我们的钱,但是在密码货币的世界里面其实并不是这样的。被保存起来的实际上是我们的那个私钥。由这个私钥我们就可以得出一系列的公钥,包括得出它的这个地址。那么每一个地址或者说每个公钥名下到底有哪一些钱,有多少钱,这件事情本身是被保存在我们所谓的这个区块链里面。而这个区块链它会在有很多的计算机组成的网络当中被完整地复制,也就是说每个节点都会保存一个完整的区块链数据的备份,从而使得它能够保存所有人,所有公钥名下到底有多少钱的这些记录。也就是说实际上哪个公钥有多少钱这件事情是由区块链完成的,由构造区块链维护保存区块链的网络来告诉我们的。而能够花费它,就是说操作这些资产的能力是由私钥赋予我们的。在这里面我们就能区分出两种重要的功能,就是说两个重要的部分。一部分是我们需要保管私钥,因为如果我们没有私钥的话,我们就没有办法花费它对应的公钥里面的钱,这是第一部分。而第二部分就是我们需要跟网络通信,需要告诉整个网络我现在要花这笔钱,那么可以基本上分成这两个部分。软件钱包,我们现在称之为软件钱包的这部分,它是两个功能,它都设计的。就是说我们现在看到的软件钱包,它都既能够使用私钥来去签名一些的交易,就是它也能构造交易,它也能使用你的私钥来去帮你签名交易,同时它也能跟网络去通信。帮助你把交易发送到网络当中,然后得到区块链的确认。

但是被我们称为硬件钱包这个东西,实际上它更正确的名字应该称为硬件签名器,或者说专用的签名器。因为为什么呢?因为硬件钱包是我们专门设计成不联网的一种设备。既然它不联网,它就没有办法完成我刚刚所说的第二部分的功能,就是跟网络通信的功能。那它怎么来完成这个功能呢?它只能跟软件钱包去搭配着使用,也就是说借助软件钱包来去把它构造好的,它签名好的这个交易发送到网络当中。这就是大概是我会对软件钱包和硬件钱包做的一个基本的介绍。我们的听众朋友一定要很仔细地分清,其实两者并不是绝对的对立关系。不是说你使用了一款硬件签名器,你就不再需要使用任何软件钱包了。相反,它们应该被理解成一种相互补充的工具。当我们在条件不完备的时候,我们可能需要使用一个软件钱包来完成所有的事情。但是如果你能够得到一台硬件签名器,然后让它跟软件钱包搭配起来使用的话,我们认为这是一种安全性上的提升。两者是有一种功能上的分化。但不是相互对立,不是相互竞争的关系。

曾汨: 我补充一点。硬件钱包其实也是我们大家常说的冷钱包。但其实冷钱包和热钱包与硬件钱包和软件钱包是两个不同的概念。我们平时大家都说你会把钱存在冷钱包里。冷钱包的冷指的是它保管私钥的整个过程是不接触任何互联网的,也就是说你的私钥不会以任何方式通过网络被泄露出去。那么本质上来说,其实你用一个手机,如果不连网,也是可以做一个冷钱包的,只不过硬件钱包在做冷钱包这件事情上更加专业一点。

阿剑: 没错,没错。其实曾汨老师刚刚提到这个点是非常非常重要的,因为所谓的冷钱包跟它有没有用到专用的设备不是必然的关系。什么意思呢?比如说有一些朋友他们会尝试使用老旧的、不再使用的这些手机来去生成和保管私钥。其实你从硬件本身的规格上来说,它的这种安全性会比我们说的专用签名器,也就是专门设计的这种硬件签名器要差一些。但是它也是一种冷钱包的形式,而所谓的热钱包则是指私钥,或者说这些钱包数据,它是持续地放在联网的设备上。它跟软硬件钱包的概念其实没有必然的关系。你需要区分开来,但是其实很简单,就是你知道它们之间没有必然关系,就 OK 了。

曾汨: 所以其实听下来,如果我们作为一个用户,我可以单纯地选择使用一个软件钱包来保管自己的资产来发送交易,我也可以选择使用硬件钱包来保存我的私钥,然后选择一个软件钱包来构造交易并发出去,结合它们两个来实现一个自我托管的目的,没错吧?

阿剑: 对,没错,就是这样的。这个实际上也是我们非常希望我们的听众具有的意识,就是在这种软硬件钱包相互配合的过程当中,软件钱包的这个角色是构造交易,以及得到硬件签名器的签名之后把它广播出去。我们认为本身它也是一种更安全的这个事情,而且它也应该被当成一种基本的理解的这个模式,因为我们相信以后的话,不一定是说每个人都会拥有一个专用的这个硬件签名的这个设备,但是这种包括知晓你自己的地址的余额,构造交易的这部分任务跟这个签名的任务很有可能会分开,而这个实际上是一个更好的一个体验。

曾汨: 其实我觉得大家选择使用软件钱包来保管自己的资产已经是一个很大的进步了,比起把钱比如说放在中心化的机构或者交易所里面,这已经是一个很不错的向前迈了一步。

阿剑: 嗯,没错,没错。实际上是这样的,就是在所有的行业里面,我们行业也不例外,安全性它不是一个绝对,它不是一个 0 跟 1,它不是一个我们说达到了某个情况它就绝对没有问题,相反安全性是一个就像我们所有的这个东西,它是一个可以持续优化的一个概念,就是说我们辨别有一些情况会比另外一些情况它的安全性更高,就相对来说更高,或者说当你有一些条件有一些工具的时候,你可以通过这些工具和条件去优化你的这个安全性,这个也是我们希望我们的听众朋友要理解的一个概念吧。不是说那我只要买到一个硬件钱包,那我就绝对高枕无忧了,或者说软件钱包一定是不安全的,我绝对不要去使用,或者说我在任何情况下我都不应该依赖它,不是这样的。只是说相关的所有的这个环节的这个安全性,其实它都是有提升的空间的。我们对这些东西的这个了解给我的帮助是我们知道什么样的设置会比另外一些设置它是更安全的更好的。但是大家不要认为比如说软件钱包是不可依赖的,不是这样的,只是说当你有条件的时候你可以尝试使用我们所谓的这个硬件签名器来去帮助你优化你的这个保管的这个安全性。

曾汨: 好的,那么听完了上面这些内容以后,我想大家对为什么应该用自我托管钱包来保管资产,以及什么是软件钱包,什么是硬件钱包,有了一个比较清楚的概念。那么下面就进入到我们今天的一个正题的讨论环节了。也就是说,我们如果想要用一个钱包去保管自己的资产,那么应该如何选择这个钱包呢?我们首先先来聊一下软件钱包吧。在我们挑选一个软件钱包的时候,有哪一些特性是我们应该关注的?当然这个问题我想我和阿剑老师应该每个人都有自己的一套标准,然后这套标准里面可能有很多是重复的。所以在接下来讨论这一类话题的时候,我想我和阿剑老师咱们就一人说一个吧,你说一个特性,我说一个特性。当然如果另一个人关于这个特性有想说的可以继续补充。

阿剑: 没问题,没问题,你先来。

曾汨: 我觉得对于软件钱包来说,第一个最关键的就是开源。因为一个钱包如果没有开源,它就是一个黑匣子,你根本不知道这个钱包里面是什么东西。举个最简单的例子,它有没有把你的私钥偷偷摸摸传给它的服务器,你根本不知道。开源给予了每一个用户自己去验证自己所使用的钱包的权利,你可以去验证这个钱包对于你的资产做了哪些事情。在密码学行业里面,开源是一个基本的准则。如果大家在用一款钱包的时候,这个钱包是没有开源的,我建议大家一定不要去使用它。

阿剑: OK,我先补充一下吧,就是所谓开源是什么意思呢?开源是指这个软件它里面的所有代码,所有代码都是公开的,当然有一些项目它会选择部分公开,它可能会认为自己的某一部分代码可能对它的竞争优势比较关键,它不选择公开。当然,曾汨老师最后的推荐是说,如果它不开源的话,你不要去用。我认为这也是一个非常好的一个 tips。这一下就可以剔除掉很多不安全的因素。那么理论上来说,当他把自己的所有的代码都公开之后的话,他就允许公开的审核,就是说每个人不管你来自哪里,不管你在哪个角落,你都可以通过互联网看到他们的代码,然后去审核他们。这个当然就在一定程度上可以帮助我们去避免很多问题,因为如果他有问题的话,那么肯定也会有其他人发现你这里是有问题的。这个实际上也是曾汨老师说的很对,它是密码学本身这个行业,就是说它有个观念叫做不要相信隐藏起来的安全性。什么意思呢?就是你告诉我你有一个东西它可以实现某一种密码学的安全,但是如果你的这个东西里面它是通过隐藏某一部分来达到的话,那么我选择不信任你的这个东西,因为你只是暂时把它隐藏起来了,也就是说它是没有经过分析的,你只是因为隐藏起来而暂时达到了效果,但是因为你没有经过验证,没有经过公开的这个审核,所以你没有证明你真的是 OK 的,是安全的。

曾汨: 大家应该区分一下真开源和假开源。如果一个钱包是开源的,那么它应该是允许你把所有的代码下载起来自己重新构建出来这个软件的。公开了一部分代码,就说自己开源的软件,它其实并不是真正意义上的开源。虽然我知道自己去验证一个钱包是否完全开源有一定的门槛,但是大家在选择钱包之前在这方面一定要多加考虑,因为有很多厂商他都宣称自己是开源的。

阿剑: 对,没错,没错,没错。具体的这个方式曾汨老师已经说了。这意味着你比如说你从一个公开的一个代码的这个存放的这个地点,比如说 GitHub,你可以把他们的源代码下载下来,然后在本地用一种编程语言把它 build 出来,就是说用编程语言重新把它编译一遍,把这些源代码编译成一个可用的这个软件。这个过程相应来说会对我们的听众提出一定的要求,但是我们还是那句话,这件事情实际上是非常非常能够看出一个团队它在这件事情上的态度的,它是否认真的对待了这件事情。曾汨老师的第一个挑选的角度相对来说比较温和,我这边的角度会更刺激性一点。我会建议大家使用 BTC-Only 的钱包。什么意思呢?就是说这种软件钱包它只能用来保存比特币,它不能用来保存任何别的密码货币。我们知道其实结构简单的这个东西它会更加可靠,然后也有一些案例啊,比如说很久很久以前人们发现就是说很多密码货币因为他们的一些内在的技术上的一些相似性会使得他们的这个公钥或者说他们的这个地址在形式上是非常相似的,所以曾经有人会把自己的比特币发到另外一个他用莱特币的钱包生成的那个地址里面。这个过程是你不确定它会是什么后果,因为那个地址如果它的这个脚本是比特币网络当中是完全能够理解的话,而且那个地址刚好是你拥有那个地址的私钥的话,你可能还能找回来。但是这是不一定的事情。曾经我听过有一些人会把自己的以太坊或者是其他的某一种密码货币发到协议非常相似的另外一个网络的地址里面去,也是造成了资产的丢失。

所以当你使用一种 BTC-Only 的钱包的话,你基本上可以杜绝这种事情,因为在这种钱包里面它只有你的 BTC 的这一种资产,并且它也只会帮助你把 BTC 的资产发送到比特币的地址里面。当然这个过程当中还有一方面原因是因为大家不要低估了这种所谓的支持多种密码货币对钱包的开发者造成的负担。实际上这个负担是非常非常重的。当你需要增加一种密码货币的支持,你需要整个团队的工程师要了解非常非常多的知识,并且每一种都可能要在工程上解决很多的问题,导致他们在每一种密码货币上都做不到最好的专业性,因为他们没有那么多时间,因为每一个团队的精力,每一个工程师的精力都是有限的。所以我会推荐大家把这个当成一条标准,就是说这个钱包到底是不是 BTC-Only 的。如果它不是 BTC-Only 的话,这意味着你作为一个用户的话,你可能会面临额外的风险,而且你可能得到的是一个并不是最专业的比特币的钱包。不是所有的密码货币都能够有这么繁荣的钱包的这个生态。但是既然我们已经选择了比特币,请尽情地享受这个网络,这个生态给你提供的这些好的这个东西。而不是说你已经选择了一个更好的东西,但是你要选择一个二流的体验。不要这样做。这是我的一个角度。那曾汨老师继续。

曾汨: 其实我觉得阿剑老师刚刚讲的这个很好理解。你想就是如果一个钱包它既支持比特币,然后又支持其他很多链,它为了后续不断地加入新链,它就不断地往这个钱包里加入新的功能,很难保证这些加入的新功能不会和原有的代码产生冲突,那么本质上你是在增加这个东西的风险。所以这也是我和阿剑老师一直很喜欢 BTC-Only 的钱包的原因。然后其实接下来我们这个播客大部分都是根据 BTC-Only 的钱包来讨论的,但是这些准则也适用于你选择一款多币种钱包,并不是说你一定要选择 BTC-Only 钱包,但如果你在使用多币种钱包的时候支持我们所说的这些特性,那么相对来说是更好的。然后我讲一个点就是关于隐私方面的一个支持。这个点其实可以细化到很多方面,比如说第一点就是地址重用。如果你现在在使用的比特币钱包,你在每一次接收转账的时候,它都给你一个同样的地址。赶紧扔掉这个钱包,换一个钱包。因为对于任何一款比特币钱包来说,地址重用都是一个不能够接受的特性。这个是最重要的一个方面,当然还有很多其他点也体现了一款钱包对于隐私方面是否重视,比如说,有一些钱包它竟然是需要你注册账户的。如果你遇到这类钱包,马上抛弃,不要用。再比如说一个钱包有没有 Coin Selection 这个选项,也就是说你在发送任何一笔交易的时候,你能不能自由地选择我要发送哪一个 UTXO,这个也跟隐私性息息相关。因为你想,如果你在一笔交易里面使用了两个来源不同的 UTXO,那么我其实就是告诉了别人这两个地址都是属于同一个人的。所以一款钱包是否支持在发送交易的时候对 UTXO 的选择也是这款钱包是否在意隐私的一个很重要的点。

另一个跟隐私很相关的点就是你的钱包是否允许你连接自己的比特币节点。这一点非常重要。其实我没有见过不支持这一个功能的 BTC-Only 的钱包,但是有一些多币种的钱包它不一定提供了这个选项。如果你连接了公共的节点意味着什么呢?意味着公共节点它知道了所有跟你相关的地址的交易记录。这对于保护你自己的隐私来说是非常不利的。如果你连接了自己的比特币节点就没有这个问题。另一个关于隐私的就是它是否有给 UTXO 打标签的功能。这个功能在比特币钱包里面也是非常常见的。这个功能什么意思呢?就是说,无论是你接收到的一笔 UTXO 还是你发送的一笔 UTXO,你可以给这个 UTXO 写一个标签,比如说,这个 UTXO 我是从哪个交易所提出来的,这个 UTXO 是谁转给我的。在你下次想要使用这些 UTXO 的时候,你就要知道哪些 UTXO 是我在这笔交易中应该使用的,可以更好地保护自己的隐私。比如说,如果有一笔 UTXO 是阿剑老师转给我的,然后他知道了这个 UTXO 的收款地址是我,那如果在我下一次需要向阿剑老师付款的时候,我也把这笔 UTXO 转回给他,那么他就没有办法得知其他的地址和这个地址相关的关联。但如果我不加区分的随机的构造一笔交易转给阿剑老师,那么他就可以从这笔交易当中分析出来,哎,原来这个地址,这个地址,这个地址都是和你相关的。所以我觉得对于一款注重隐私的钱包来说,给 UTXO 加标签也是一项应该有的功能。其实现在有一个 BIP,我记得是 BIP327 还是多少,我忘了具体数字了。329。对,就是做这件事情的。他希望让给 UTXO 加标签成为一个标准的功能,让大家都支持。

阿剑: 对,曾汨老师刚刚说了非常非常多,基本上差不多把我能说的也都说完了,那我在这边就主要是补充吧。这里面需要解释的第一件事情就是,大家可能会在刚上手比特币的钱包的时候,尤其是我们提到的 BTC-Only 的钱包的时候,会发现有件事情会让你很震惊,就是它一个钱包居然有很多个地址,很多很多很多个,就是你数不清的这个数量的这个地址。这会让一些之前从来没有接触过比特币钱包的一些用户感觉很正经,因为往往你在使用其他的一些密码货币的情况之下,它都只给你一个地址,你自始至终就用这一个地址,用这一个地址收,用这一个地址发,用这一个地址发起你的所有的操作。但是刚刚曾汨老师说了这种其实就是我们说的这个地址的复用,就是你总是重复使用同一个地址,会带来非常非常明确的这个隐私性的这个问题,因为你想想你的所有操作都在一个地址里面所有看到,任何人只要跟你的这个地址有过交互的话,他其实都能知道你的这个所有的这个财务的这个记录,比如说不管是这个你用你的这个钱包给别人支付了一笔,比如说你买一个东西,那人家就知道了你跟这个公钥是有关联的,那这个公钥发起的所有交易,他其实全部都能看到,那这会有一个非常大的这个隐私性问题。那比特币它是怎么做的呢?它是使用我们所说的一系列的这个钱包的标准,最重要的是我们称之为层级确定性钱包这个标准,为用户提供了你只需要备份单个助记词,但是可以给你提供很多很多的这个地址。包括软件也会提醒你,包括帮助你避免重复使用以前已经用过的这个地址,来去帮你解决这个隐私性的这个问题。所以这就是我们所说在一个比特币钱包里面是有,它会有很多很多的地址。

这件事情的由来就很恰好,这个也是我自己的评价的一个点,就是说如果你在用一款钱包的时候,你应该先试一下,就是说我生成一个助记词,我先不管,我就看一下它会不会给我提供这个地址的浏览。就他是不是一下子刷了一下能给我 10 个地址 20 个地址告诉我这些地址你都是可以使用的,包括他会区分。你应该留一个心眼,或甚至说你就不应该去使用它,因为这是一个非常基础的事情,它保证了你自己能够看到自己哪些地址是用过的,以及你随时可以安排某个地址去做某一些事情。这是一个部分,然后的话我还要刚刚这么讲是提到一个很重要的东西叫做 coin selection,就是说一个钱包里面你可能有 5 笔钱 10 笔钱,那么这个时候呢当你要花它们的时候,比如说你要发起支付的时候,就会有一些问题就是你到底使用哪一个 UTXO 来给其他人支付。这个过程会涉及到两个功能,就是说它们常常是分开的,也可以把它们认为是同一种东西。一个叫 Coin Control,就是说你自己选择,你自己选择你要花哪几笔钱去给别人支付,然后形成一个找零。另外一个就是刚刚曾汨老师提到的那个专有名词叫 Coin Selection,就是说钱币的这个选择。有一些钱包它会通过这个钱币的选择,也就是说这个软件它会帮助你做一些事情,比如说什么呢?比如说它会帮助你优化你的交易手续费,因为比如说它可以帮助你挑几个相适当额度的这个 UTXO 去完成这个支付,从而减小你的交易的这个体积。

当然还有另外一方面就是曾汨老师提到的,有一些它会帮助你去说考虑我花这些 UTXO,它会不会产生一些隐私性上的问题,我记得有一些钱包它是会告诉你你的每一个 UTXO 它的一个隐私性的这个得分或者说一个匿名性的一个得分来去帮助你做一个选择的时候的这个参考。我记得好像 Wasabi 好像是有这个功能是吧?我不确定,但是确实是有一些钱包他们会把隐私性看得非常非常重要,所以也会在这些方面去给用户提供一些这个帮助。我自己认为这部分的话呢比较 Coin Control 的这个功能非常基本,但是说提供隐私性得分,包括在 coin selection 上专门为隐私性上去优化就更像是一个加分项。那么还有一个曾汨老师提到的东西就是说你的钱包应该允许你自己配置它跟哪一个全节点通信来去达成这个向网络通信的这个目的。我也认为这是一个非常非常重要的特性。很巧或者很不巧的是,BTC-Only 的这个钱包,我现在接触到的是基本上都支持,都支持你去自己配置,比如说让它跟你自己安装好的一个全节点去通信,然后来完成这个获得余额信息,然后包括构造交易之后发送到网络当中的这个功能。如果它不支持这个功能的话,它的隐私性是会差一点的。我在这边的话,有一个要补充的是,你的钱包是否支持观察钱包的功能?

这个是很多人可能没有关注到的,就是说我们的软件钱包,我们刚刚前面已经提到软件钱包一个用法是说 OK,我生成或者导入一个私钥,然后让他来帮我从区块链上收集到我现在有硬件钱包里面有多少钱,然后让它供我日常的花费,这是一种用法,但还有一种用法是说它可以跟硬件签名器搭配起来使用,也就是说它自己并不要求你导入私钥,它只要求你导入一定的形式的公钥,这个公钥被我们称为 XPUB,XPUB。导入了这个公钥之后呢,它就可以生成出你的所有的这个地址,包括它也能够从区块链上去发现这些地址里面各有多少钱,包括它也能构造交易,但是它不能花费,就是说你在最后一步,当你要构造好这个交易之后,你要签名的时候,它会提醒你,你应该用一个签名器来签名,或者说它会在最后一步提醒你,我这里并没有你的私钥,所以我不能帮你把这笔交易发到这个网络上,你应该把它签名完成之后才能广播。这种观察钱包的支持也是非常非常重要的,因为这其实跟我们 BTC-Only 推崇开源的这个角度是一样的,就是说你的这个钱包开发的时候考虑到底周不周全。你的这个钱包的开发团队对这件事情到底认不认真?如果你认真的话,你会很容易的想到,而且并且会把它当成一个很重要的开发任务,就是支持我们所谓的这种观察钱包。因为如果你不支持这一点的话,你的用户的这个软件钱包和硬件签名器就没有办法充分的分离。没有办法充分地分离的话,它就算得到了硬件签名器,它的安全性的提升也是非常非常有限的,对吧?甚至说你可以说是没有提升,因为它不支持你在别的地方签了名之后再拿过来,去把它广播出去。所以这个是我想补充的。还有一个点是一个很小的 feature,但是我也想提一句。

我不知道大家有没有用过一种功能叫做不设找零。这个特性很有趣,他就是说当你选好要用这几个 UTXO 之后,包括你确定好你的支付额之后,这笔交易就是说不管那个支付额是大是小,是多是少,他都不会用一个找零输出把零钱找回来,他会把零钱全部当成矿工的费用交给矿工。这个特性其实乍一听是有一点反直觉的,就是因为这好像是一种奇怪的不设找零机制的一种功能,但是实际上我认为它会是一些注重隐私性的用户非常喜欢的一个功能。这意味着什么呢?这意味着当你要花费某一个 UTXO 的时候,你可以把它整个花费掉,也就是说让它做完一定的支付之后,剩下这些钱全部会交给矿工,不会再回到你的钱包里面来。也不会再有机会被你拿它跟另外一些 UTXO 一起花费,也就是保障你的隐私性。不设找零的这个功能呢,我知道一些钱包就它们会尝试就是实现,但是我觉得最优雅的这个实现就是可能是 Electrum。我记得 Electrum 它曾经有过这个功能,就明确的是一个选项,你点了之后你就发现 OK。不管你选几个 UTXO,然后你设定支付额之后,它就告诉你这里面是没有找零的,不会再有剩余的这个钱回到你的这个钱包,因此也不会再有这笔钱会跟你现在钱包里面某一些钱再重新花费,这是一个特性。我想起来还有一件事情,就是刚刚曾汨老师提到那个标签的那个功能。现在有一个专门的 BIP 叫做 BIP329,它就是专门做我们刚刚提到的这个事情,就是它可以让你在一个钱包里面给自己的 UTXO 或者是给自己的交易打上的这个标签,可以把它导出来,然后再导入到另外一个钱包里面去。这个也是对你自己个人的隐私性控制以及日常的记账来说也都是非常非常有用的这个功能。我这边就是这样咯。

曾汨: 那我再顺着这个标准化说一下,其实有一个点我们刚刚没提到就是,嗯。就是你所使用的这个钱包是否使用了标准化的助记词标准化的派生路径,因为除非你是一个比特币高手,你知道使用各种复杂的技术,如果你不了解这些技术,你去使用一些非标准的钱包,那么会给你后面恢复你的钱包带来很大的麻烦。比如说你的钱包没有使用标准的 BIP44 的路径,或者相关路径,那么你把同样的助记词导入到标准的钱包里面之后,它很可能找不回原来的地址和上面。所用的那些币,所以,为了避免这种情况,你最好在一开始就使用支持标准化路径的钱包。这是一个点,另外我再补充一些我个人比较看重的一些特性吧,比如说第一个,我可能会看这个钱包它的更新和维护的频率怎么样。其实比特币领域的钱包相当多,但是一直在不断更新新功能,不断开发的钱包其实并不是那么多。所以我个人会比较关注一个钱包它多久更新一次,它每次加了多少新的功能,有没有一直跟着整个社区的脚步往前走。比如说现在很多钱包并不支持 Taproot。但是有少部分钱包已经支持了,所以一款钱包它在这些上面它有多努力也会决定说我使不使用这个钱包,这个是我个人会比较看重的。一个小点。然后另一个点是它是否支持 PSBT。部分签名的比特币交易,这个东西决定了说它在和硬件钱包的交易上,它是否会支持得更好,以及说它在多签上,它是否能得到更好的支持。其实现在主流的桌面端的比特币钱包对这个功能都支持的还不错。

阿剑: 曾汨老师总结的非常非常全面啊。就是我在这边再多提一句吧,就是关于这个标准化,什么是标准的这个标准的路径,以及所有这些大家公认现在的这个比特币的这个钱包的话,它的我们称之为层级确定性钱包,它有几个 BIP 是它的基石,一个是 BIP32,就是说让你可以从单个助记词推导出很多很多的这个私钥和公钥以及地址,然后以及 BIP39,就是助记词标准,就是帮你把最初的那个种子转成一个助记词,这个是助记词标准,还有一个是 BIP44,就是说你的派生路径当中每一层的这个派生的话,它各自具有什么样的这个含义,接下来的话,如果你使用一个就是说现在的这些比特币钱包的话,它基本上都会支持这几个标准,而且当你一旦你选择你要使用某一种地址格式的话,它就会为你提供这个标准的路径来去支持你的这个使用。这些实际上对于普通用户来说,他要知道这么一些事情,但是说实在不用揪得特别仔细。如果你对背后的这个技术感兴趣的话,我推荐你去读一读精通比特币。不管是以前的版本还是现在最新的版本,它对于层级确定性钱包的构造有非常非常详细的说明。这些东西呢,实际上也是整个被我们称为比特币社区的这么一个松散的人群。在过去的这几年间,不是几年啊,从 2014 年有确定性钱包的概念开始,大家一直在经营,一直在开发,一直在补充的一个东西,它最终会形成我们现在所谓的具有互通性的比特币钱包体验。这个就是我们想说的一个点,就是说在现在这个时代,你再接触比特币的这个钱包,应该选择充分支持这些标准的这个钱包来获得这些标准给我们带来的互通性。不支持这些标准的,其实应该要保持一个警惕。就是说它其实体现了我们这个行业的这个特点。

如果你不接受这些特点,也就是说你抗拒了这些价值的话,我们觉得这件事情是可疑的,因为获取用户不需要你抗拒这些价值。

曾汨: 好的,那么我想通过刚刚的对话,大家应该对选择一款好的软件钱包,它应该有哪些特性,有一个比较清楚的认知。那么接下来我们讨论关于软件钱包的第二个问题就是大家在使用和下载软件钱包的时候,有哪些需要注意的基本事项?我先来说第一点吧。如果大家要下载钱包,一定要去官网下载钱包,而不要通过任何第三方的来源。如果你是使用手机钱包的话,比如是安卓,那么可以通过 Google Play,如果是苹果 iOS,你可以通过 App Store。但是我仍然建议你先去他的官网,然后通过官网点击对应的 Google Play 和 App Store 的链接,因为当你单纯地从应用商店里面去搜索软件的时候,还是有概率能够下载到和他同名的钓鱼软件的。这个时候你还得去验证一下这个软件的发布者是不是官方,所以我强烈建议大家首先通过官网去找到这些对应的下载链接。

阿剑: 在这里我觉得有一些可能是需要我们的听众去思考的问题是你在哪一个环境当中使用钱包。很多用户可能他们曾经在浏览器环境当中使用过浏览器插件制作的这个钱包。他们也在自己的手机端使用过钱包,包括有些朋友还在自己的电脑上,就桌面端使用过一些软件钱包。我们认为其实在这些不同的运行环境当中,其实你对钱包的期待是不一样的。包括这些钱包它能做的事情,或者说它本身对它的用户所采取的这些设计上的抉择本身也是不一样的。那么有一些原则是共通的,就是曾汨老师说的,你要尽可能尝试去安全和正式的渠道去下载你想要的软件。当然我在这边的话会推荐一个很极客。但也很有趣的一种下载方式就是如果一个软件钱包它是开源的比如说它是一个手机钱包的话。那么你可以在一个地方找到它的源代码。并且它的这个源代码的页面当中一般也会提供它的这个安装文件。以及开发者对这些安装文件的哈希值的签名。也就是说这个过程当中我们可以运用一个叫做 GPG 的命令行的工具来去验证某一个公钥是否签名了一些哈希值,而你下载到的安装文件的哈希值是否跟这个哈希值列表当中某一条哈希值相对应。通过这种方式来去验证某一个开发者是否真的认为自己就是开发了这个软件,也就是说这个过程当中它是否存在篡改。这个是基本上软件行业里面大家公认的,就是说大家都是使用同样的这种方式来去确定自己下载到的这个软件,就是开发者开发的,这个过程当中没有做过任何篡改。给大家举个例子,就是 Bitcoin Core,大家都知道 Bitcoin Core 是最主流的比特币的全节点的实现。

那么在它的每一次发布的时候,因为它会打包成很多个很多个版本,因为它可能是有些是给 Windows 系统用的安装包,有一些是给 Linux 系统用的安装包,有一些是给其他系统用的安装包,每一个安装包包括它的源代码都会生成一条哈希值,就是有一个专门的文件来保存这些哈希值,并且会有不止一位开发者为这个哈希值文件就包含哈希值的这个文件提供签名,然后大家就选择一个你自己相信的开发者,下载到这个开发者的公钥,然后用这个公钥来去验证开发者有没有签名过这个哈希值文件,然后再看里面包含的哈希值是否跟你下载到的这个文件的哈希值相对应。它的正式的版本会有大概七八位开发者会提供签名,但是它还有专门一个文件夹,大概其中会有三十几位甚至超过这个数字的开发者会给他提供自己的签名。不知道该从何弄起,但是你只要记住几个关键词,命令行,GPG,然后公钥,签名,所有的这些知识其实实际上你都是能够通过公开的这个渠道获得的,所有这些软件也都能够通过公开渠道获得,包括如果你使用的是 Linux 系统的话,这个系统本身已经内置了 GPG 这个验证签名的这个工具。所有的这个过程实际上就好像我们从小开始学习加法一样。一开始你看到这些数字,看到这些符号,你不知道它是什么意思。但是当你尝试加过那么几次之后,OK,你就知道这是加法,这是乘法,这都是一个学习的过程。我们非常鼓励我们的听众也在这个过程当中学习一下这些技巧。它可能不改变很多东西,但是如果从实用的方面来说,它可以让你下载软件的这个过程更加安全。

但是从另外一方面,从务虚的方面来说,它也让你知道了这个行业,就是说一个开源的软件行业,包括一个开源的开发行业,它的存在是有理由的,包括一个开源开放的密码学行业,它存在也是有理由的。

曾汨: 这其实让我想到我们刚刚那个问题,就是一款好的软件钱包的特性,其实很多做得很好的比特币的软件钱包他们在官网上非常显目的位置。都会有很详细的文档告诉你如何一步一步验证你所下载的软件没有被篡改,这其实也是一个钱包它有没有在用心做的一个表现。

阿剑: 是的,是的,是的。当大家下载好软件钱包之后的话,我觉得还有一个点是很重要的,就是你不应该在只了解到一款软件钱包的时候就开始使用它。相反,你可以下载很多个软件,然后的话呢,在某一个钱包你生成一个助记词之后的话呢,然后再把它导入到不同的这个软件当中,然后去看生成的这个地址是否一致。这个是一个非常小的技巧,但我认为是非常非常重要的。就是这里面有几个点。第一,你不要吝啬助记词。私钥的数量是无限的。你不用关心说我生成一个私钥之后,如果不保存它会怎么样。为了测验的用途,你可以生成一个,然后你不需要记录它。当你需要一个正式的钱包的时候,你只要再生成一个就行了。那么其次是这个地址的这个校验可以让你知道说你使用的这个钱包它是否真的遵循了标准,还是说它可能跟其他钱包有点不太一样。它会及早地提醒你,你可能在使用一款相对比较特殊的这个钱包。那你可能要留一个心眼。有一些情况下,你遇到的就是一款不安全的这个钱包了。我给大家举个例子,就是我自己亲身经历过,就是说有一次我在尝试使用一个很不幸的是一款支持多种密码货币的这个钱包之后,我发现它给我的比特币的这个地址,跟我在导入同一个助记词之后,在另外一个钱包当中,甚至这个地址不一样。而且它只给我一个比特币地址,而且它不给我看我能够用多少比特币地址。那么 OK,这就是一个安全警报,对吧?你遇到这个情况,那你就应该拉响你的安全警报,这肯定有问题,对吧?因为如果按照比特币的本身的这个标准的话,如果你遵循了标准,首先你应该提供不止一个比特币地址。其次是你提供的比特币地址应该跟其他钱包提供的这个地址是一样的,因为给定助记词是一样的。OK,几个月之后那款钱包出事了。

这是真人真事啊,这是我自己亲身经历的这个事情。几个月之后那个钱包就出了一些安全上的这个问题。所以还是那句话就是说安全无小事。在这些过程当中就不管你是说通过安全渠道也好,包括自己验签也好,表面上它是给你马上就用上软件,好像是给你增加了一些负担或者增加一些障碍,但实际上对于你的长远的这个使用来说是有非常非常大的好处的。

曾汨: 其实关于这一点我也想到就是说大家在使用任何一款钱包创建完助记词之后一定要二次验证。嗯。就是你把你的助记词抄写下来之后,记下对应的地址,然后把钱包删掉。然后再导入助记词,再看相同的地址是不是一样,这也同时是在检验你的助记词有没有抄对。这一点非常重要,无论你是在使用软件钱包还是硬件钱包的时候,助记词的二次验证都是非常重要的。然后关于使用软件钱包的注意事项我想到一个点就是跟我前面说到的那些隐私相关的特性一一对应就是你如果真的使用了一个软件钱包,那么你最好首先连接你自己的节点。其次,给你的 UTXO 做好标签,然后在转账的时候记得做好口令控制,选择好对应的 UTXO。如果你的钱包支持的话,你甚至可以走洋葱网络。这些都是一些对隐私的基本保护。如果钱包提供给了你这些功能,那么你就好好利用它。另外一个要注意的点就是,你要区分你使用的软件钱包是用来做观察钱包的,还是用来存钱的。如果你的目的不同,其实在这件事情上的选择也是不一样的。比如说如果我是做观察钱包用的,那么我对平台的选择可能不限,我用浏览器端也好,我用桌面端也好,我用移动端也好,但如果我希望我的钱包是用来存私钥的,那么理论上来说,移动端的 APP 钱包,它的安全性会比桌面端的安全性强一些,因为第一个是桌面端它可能遭受到的各种攻击会多一点,比如说 windows 平台。他的攻击会比安卓和苹果的这种移动平台会相对多一点。第二是移动端对于每一个 APP 的权限。它的限制是比较严格的,你不能比如说跨应用去访问另外的 APP 的数据,但是比如说现在 Windows 平台上没有这么多限制。你不知道你某一天下载了某一个软件,然后它把你这个钱包软件里面的私钥它给读取了。

所以如果你只是想选用一款软件钱包来保管私钥的话,我个人更推荐使用移动端的钱包。好的,那么我想我和阿剑老师聊完了关于大家在使用软件钱包和下载软件钱包的时候一些基本思想,我们各自来聊一聊就是你现在在使用什么软件钱包,这个钱包比如说哪些点让你觉得做得很好吧?首先声明一点就是我和阿剑老师都不是技术人员,都不是开发人员,所以我们两个人使用钱包的讨论并不构成为任何一个钱包做背书。我们希望通过我们的讨论让大家知道现有的钱包有哪一些技术,在选择钱包的时候应该挑选哪一些,但并不代表我们推荐这一款钱包,认为它是绝对安全的。

阿剑: 好的,我这边我想提到的第一款钱包是是一款非常非常历史非常非常优秀的钱包叫 Electrum,E-L-E-C-T-R-U-M,就是 Electrum 钱包这个钱包就是它在好多方面其实也基本上都符合或者说都满足我跟曾汨老师之前提到那些特性首先它是 BTC-Only 的就是你用它你只能保管比特币你啥也干不了第二,其实它是开源的,它可能是,如果它不是最早的,它也应该是整个行业当中就是非常非常早,应该可以说肯定是第一批开始,就是说用完全开源的方式购注钱包,就是它的这个钱包里面所有的代码都是完全公开的。然后在这两个的这个基础之上,应该说它的这个出现确确实实是有起到一个可以说近似于标杆的这个作用。比如说当你在安装好一款 Electrum 钱包,当你要开始使用的时候,它会有几个特点,就是首先就是说它会让你创建一个新的这个钱包,创建一个新的这个助记词,然后它会立即问你,你是要打开联网选项吗?就是你要访问公开节点吗?就是你要访问这些在公开网络上提供服务的这个节点吗?没错。他的意思是说,虽然你访问这些节点的话,如果你的这个钱包里面已经有钱了,那你可以很快地就是说从这些服务器上拉取你的这个钱包里面到底有多少钱。但是你这样是会有隐私性风险的。所以他的这个选项就是说,你自己选择你要打开这个联网还是不打开这个联网。如果你不打开这个联网之后,你可以自己先配置好你在本地的一个 EPS,就是跟你的全节点通信的一个服务器之后,然后你再打开它,就是说自己跟自己的全节点搭配使用,然后你再打开这个,就是说只让它跟你自己的这个全节点相连接来获取信息。它偏极客,就是说它的这个用户界面可能不会特别友好,说实在的不会特别友好。

他们开发者数量也不多,然后也基本上应该说是一个把安全性,把整个的开源做得比较充分的一个团队,但是不一定在用户体验上友好。而且还有一些要提醒。第一个点是,它使用的助记词标准不是我们所说的 BIP39 的这个标准。就它自己提出了一套助记词标准。然后在这种助记词当中,它不仅会包含你一开始的这个种子的这个熵值,它还会保存你的这个版本号,它会有一个版本号。那么有这个版本号之后呢,就保证了你只要使用 Electrum,不管你使用多新的版本,都保证你的这个地址是一定能够复原出来的。这是一个方面,然后包括他还有刚刚我跟这位老师提到的 coincontrol 以及这个不设找零这个功能,总的来说,Electrum 钱包就是怎么讲呢?我对他其实有点偏爱,为什么呢?因为他其实是很早就开始开源,可以说是迈出这一步,迈出的非常非常早的一个团队,包括他们现在也依然在开发。但是他们现在还不支持 Taproot 地址。怎么讲呢?它很极客,或者说你可以说它很有代表性。它代表了一群书呆子开发者和一群书呆子用户之间的这种默契。其实这些书呆子,我们称为书呆子用户,就是说这些用户他其实要求的并不是说你的用户界面非常的花哨,并不是说你的这个 UI 一定要把我伺候得舒舒服服。相反,这些用户要求的是你里面的这个东西,引擎盖里面的东西,你要全部打开让我看到,并且给我最大的自主性,而 Electrum 在这一点上是做得很好的。这是顺便提一句嘴,就是 Electrum 他们自己还可以用来做闪电节点,还可以用来做闪电钱包,这是一个比较少见的特性。

曾汨: 听上去就是一款非常极客的钱包。当然,我想它应该也不适用于大部分人。

阿剑: 对,确实,确实,说实在的,是的。

曾汨: 我说一下我在用的两款钱包吧。我用的桌面端钱包叫 Sparrow,S-P-A-R-R-O-W。这款钱包我觉得其实没什么好说的,就是它就是好。我上面介绍的所有特性,它全部都支持。无论是隐私性,功能性,包括它的更新频率,它对新特性的支持都非常快。如果你手上有硬件钱包,你想找一款好的观察钱包来用的话,我个人觉得 Sparrow 应该是我试过的所有桌面上钱包里面最好的选项了。然后我来说一下我使用的移动端钱包吧,那个钱包现在用户量也不多,只是我个人在用,并没有说推荐大家或者给他背书的意思。叫做 Nunchuk。它不仅仅是一款移动端钱包,它的桌面端移动端都有,但是它的手机钱包在我用过的 BTC-Only 的手机钱包里做的是比较精致的,首先就是我前面提到的那些特性它也全部支持,然后它移动端钱包其实有很少有支持那么全面的,比如说各种新特性的支持啊,各种 BIP 的支持,然后它它对于各种硬件钱包的兼容性是我见过最强的,我手上的所有硬件钱包都能跟它很完美的兼容,它还支持各种各样的数据传输方式,比如说第一个是二维码传输,它作为一款移动钱包,它可以跟各种支持光学通信的硬件钱包进行光学交互,使用二维码。第二个,它支持 NFC 传输,有一些支持 NFC 的钱包,比如说 Coldcard,也可以跟它进行很好的交互。第三个就是 USB,你可以通过 USB 往里面导入,比如说 PSBT 的代签名文件,它可以对它进行签名。这些都是他功能上做得很好的点。然后他跟其他钱包很不一样的一点是他在他的界面里面把密钥和钱包这两个概念分开了,因为我们正常在使用一款钱包的时候,我们创建一个钱包就是一个助记词,然后我们就得到了一款钱包,看上去钱包和私钥就是一体的。

但是在 Nunchuk 这款钱包里,他把它们分开了。你在使用这款钱包的时候,你首先需要导入 key,也就是密钥。密钥和钱包不是一一对应的,你可以导入一个助记词,那么你就有一个在软件里面保管的 key,你也可以导入一个硬件钱包,硬件钱包给一个扩展公钥给他也是一个 key,然后你的 Nunchuk 里面有了不同的 key 之后,你再去创建钱包,你可以选择这个钱包是绑定一个 key,两个 key,还是三个 key。这取决于你的钱包是单签还是多签。你想设置的是 2-2 的签名,还是 2-3 的签名。然后呢,你可以创建不同的钱包。这些钱包可以重复使用某一些 key,或者分别选择不同的 key。所以它是把密钥和钱包这两个概念完全给你分开了。我觉得这样的在逻辑上其实才是更合理的。我觉得它代表了一种方向吧。然后就是他的比如说界面设计啊,比如说 CoinControl 这些东西都做的个人比较偏爱他的那种界面,对。

阿剑: 曾汨老师刚刚推荐了两款我自己也认为是非常优秀的钱包,就我补充一下吧,就是第一个是关于 Sparrow,Sparrow 他的介绍的界面里面有一句话特别吸引我,我觉得每一个比特币用户都会被那一句话打动,叫做 Standard Based。基于标准,也就是说 Sparrow 的这个钱包就是说我做的这个事情就是基于比特币的社区现在已经开发出来的这些标准。我基于这些标准之上,我保证兼容这些标准之上,然后我再去做其他的一些东西,比如说所谓的 UI 的这个开发,或者说其他的一些功能的开发。我觉得这个是非常重要的,但是 Sparrow 把它作为一个基石,这个是会非常非常打动我个人的一个点。那还有这个 Nunchuk,其实 Nunchuk 这个钱包我也试用过,其实我也印象非常深刻的是它的这个用户界面,就是刚刚曾汨老师说的你的 key 跟你的 wallet。Key 跟钱包是分离的。这是因为什么呢?这是因为 Nunchuk 他一开始他就想 Key 跟钱包本来确实不是一一对应的关系,因为我们在比特币的这个世界里面会很自然地了解到一个概念,叫做你的钱包是单签名钱包还是多签名钱包?意思就是说你的这个钱包它到底是只需要一把私钥就能控制呢?还是说你需要多个私钥,就不止一把私钥才能控制它?基于这一点的话,那我们就可以知道,就是说如果我们要设计一款本身就面向多签名的这个钱包的话,那自然而然用户放在这个软件里面,就是说被这个软件理解为一个 key 的这个东西,实际上只是组合出最终的这个多签名钱包的一个原料,原材料。

那所以 Nunchuk 的这个思路确实我也认为它代表了一种方向,就是说如果你有意尝试多签名钱包的话,当然 SPARROW 其实本身也可以尝试,因为我们前面提到这些特性当中没有特别强调说你用这个软件钱包到底是拿它来做一个单签名钱包还是多签名钱包。但是我个人的这个提议就是如果你愿意尝试的话。试用一下多签名钱包。有一些钱包它会支持你在测试网上去试用它,就是说你可以在比如说比特币的这个测试网上领一笔钱,把这笔钱放到你的多签名的这个钱包里面,然后尝试去花它,就是说看看这个花费的这个过程。我相信你理解到它之后的话呢,你可能也会选择这种形式,因为它确实是更安全,因为它不用担心单个的这个私钥,因为如果是单签名的钱包的话,你那个私钥丢了,它就彻底丢了。它被别人盗走了,那也就彻底被盗走了。但是多签名的钱包就提供了一些基本的抗性,因此它是安全性更高的。那么在这里我们提到这个 Sparrow 钱包也好,Nunchuk 钱包也好,其实都可以去试用,大家可以去多方观察一下。我还用过一款移动端的这个钱包,也是移动端,用户量比较大。然后声誉也不错的这个钱包叫做 BlueWallet,就是名字很简单 BlueWallet,你会发现它的用户界面也非常简单。就是都是很直接的,那 BlueWallet 的话,它在一些基本的这个特性上,它的支持都还不错,但是我要提出有两个点就是用户需要注意的。第一,它是在你钱包创建的这个时候。它是默认联网的,就是说你第一次打开这个软件的时候,它是默认联网的,它默认会连接到公开的这个节点。

那么在这种情况之下,如果你现在马上就创建一个助记词,或者说你马上就导入一个助记词的话,那么这个公开的节点就会去已经开始搜索你的这些地址里面有没有钱了。这是一个隐私性上你需要考虑的一个点。如果你更希望拿它连接自己的权节点的话,你应该打开这个软件的时候先去它的选项当中把这个联网的这个选项给关掉。这是一部分。你关掉之后,你可以自己在它的网络选项当中去配置自己的节点的网络地址,然后通过自己的节点来获取信息。这是一方面。另一方面是什么?是它默认它打开的时候是没有所谓的口令保护的。那么如果你希望你的钱包不是一打开,就是说任何人得到你的手机解锁之后,打开它马上就可以看到里面东西的话,那么你应该去给他手动设置一个口令,包括这个口令也会在你需要发起比特币交易的时候会需要输入这个口令。不然的话他默认的是不设的,就是说他其实已经为了用户体验的顺滑,已经优化了很多东西,但是如果你是一个更高级的这个用户的话,或者说你本身了解更多,希望有更强的这个控制权的话,你应该去设置一下他的这些东西。

曾汨: 好的,那么我想我们关于软件钱包应该聊得差不多了。其实在聊用软件钱包进行自我托管的时候,闪电网络也是一个不可绕开的话题。但是如果想把闪电网络讲清楚的话,会需要进行很多概念的科普,我们可能又得聊很久很久,所以我们今天在这里就不展开讨论了。如果大家特别感兴趣的话,我们可能再考虑单独做一些。那么我们接下来就讨论一下硬件钱包吧,或者叫硬件签名器。

阿剑: 好的好的,那我们还是按照前面的这个流程来,我们先讨论一下就是说我们会比较看中哪些特性。嗯,那要不我先来吧。毛遂自荐啊,因为我在这个硬件签名器上的这个研究肯定是没有那个曾汨老师这么充分这么丰富的,那我就班门弄斧一下。就是我自己认为一个很重要的这个特性,是它是否允许你自己注入熵。就是说有一些硬件钱包它是允许你自己掷骰子,然后它帮你记录骰子,然后它帮你骰出一个助记词出来。然后还有一些是说它比如说它允许你去拍几个照片,用这几个照片来作为一个熵源,来去生成你的助记词。当然还有一些其他这个方式我们就不说了。我会认为这个允许你自己加入熵源这个点是非常重要的,因为它就意味着它有两个方面,一方面是确确实实它是有安全性上优势的,因为一个硬件钱包它是有很多元件组装起来的嘛,那么任何元件如果它在制造过程当中有缺陷或者说它遭遇了所谓的供应链攻击的话,那么就使得这个硬件签名器可能是不安全的。比如说它可能有一些缺陷使得它总是会撞出某一些随机输出来,也就是说它的熵源实际上比你想象中要小,那这样的话你的钱包就会跟其他人的钱包发生碰撞,或者是有其他的问题,那允许你自己加入熵源的话呢,就本身是对这种供应链攻击的一个很有利的对抗。另外一方面它其实也是一个我们看这个硬件开发的团队,它到底有没有认真做事情,就是什么呢?就是它有没有想象到自己自己自身可能存在这种被供应链攻击的风险。如果他想到了的话,那么他一定会允许用户自己加入这个熵源,来去对抗这种供应链攻击的风险,也让自身可以获得一个更安全的随机数,一个熵。换句话来说,他知道了自身的局限性,然后他就想出一种办法帮用户来去对抗自身的这种局限性。

我认为这是能够相当好的看出这个硬件签名器的这个开发团队到底有没有认真想事情。所以这是我的第一条。曾汨老师。

曾汨: 关于硬件签名器首先开源这一点我们就不说了因为前面已经软件钱包里面已经讲过很多次为什么开源很重要了,所以硬件钱包要选一个开源的。这一点我们就不展开讲了,然后聊聊我比较关注的点,或者我觉得一个硬件钱包最基础最基础最基础的点就是它必须得有一个屏幕。大家不要觉得好像不可思议,不是都有屏幕吗?其实不是的。有一些硬件钱包它是没有屏幕的。有一个屏幕意味着什么呢?意味着你可以在这个硬件上验证你所签名的内容是否是你想签名的内容。而没有一个屏幕意味着你只能够信任电脑或者手机那个观察钱包传递给这个硬件钱包的内容是你想签名的内容。这里就带来一个问题。我选择使用硬件钱包是因为我不信任软件钱包是足够安全的。可是,我使用一个没有屏幕的硬件钱包,又需要我的软件钱包是足够安全的,否则它会传递不安全的信息给硬件钱包,然后我就稀里糊涂签了名。这个在假设上就是不成立的,所以一款硬件钱包想要安全,它有一个最基本最基本的前提就是,它一定得有屏幕。所以大家尽量不要去选择不带屏幕的硬件钱包。

阿剑: 对的,其实 Ledger 它是一个很著名的硬件签名器的厂商,他们其实刚推出的时候让很多人感到激动的,也就是因为它加了一个屏幕。虽然现在我们看来行业是会进步的,现在我们看来一个平平无奇的东西,但实际上它也是需要行业的发展才能够让它变成一个普遍性的事情,变成一个标准性的事情,让每一个普通的用户都能享受到这种东西。那我在这边的话,我就接着那个曾汨老师的这个往下说,有一个特性是我自己很看重的,就是它到底能搭配多少软件钱包去使用它。因为大家知道硬件签名器它自身并不能够完成我们所说的这个一个比特币的这个收款和发送的这个整个生命周期当中的所有事情,实际上硬件签名器它做的事情就只有一件或者两件,一个是保存你的私钥,另外一个呢就是它签名这个交易。在这个过程当中,他可能需要附带的一些能力,比如说他需要能够读取,他需要能够去分析你要我签名的这些数据的含义,也就是说他需要能够理解你要让他签名的这个交易是什么意思,就需要具备的这样的一些读取和验证的一些能力,包括刚刚曾汨老师提到一个很重要的这个东西,它叫 PSBT,其实也是这方面的,那这方面我们接下来再展开。那么,既然他自身不能够完成整个生命周期里面的所有事情,那他是一定要跟软件钱包有搭配使用的。那这个时候,如果我虽然使用了一款硬件钱包,但是我的软件,我在电子设备上对它操作的这个软件的这个界面居然是被锁定的,那这就造成了一个很大的一个单点的这个风险,也就是说虽然我的硬件钱包可能它在生产制造过程当中没有故障,也没有制造缺陷,但是由于它只能搭配某一款软件钱包来使用,而这款软件钱包比如说它运行在我们电脑上,它是有可能受到攻击的。

而且这也意味着当我想恢复我自己的这个钱包的时候,我的签名器一旦连接我的电子设备的话,它又会重新让我回到这个界面,那么我就被这个软件的这个钱包的这个供应商给锁定了。这对你来说实际上是一个很大的一个单点故障。它并不一定立即会变成一个安全风险,但是它可能会给你制造一些不太好的用户体验,就这件事情是有问题的。而且我把这一点也把它当成检验团队有没有认真的一个标准。为什么呢?因为如果你做一款硬件钱包,你获得用户的这个方式一定不包含你要用软件钱包来锁定他们。但凡你想了这条路,你做硬件钱包这件事情都一定会出问题。因为你想做一个硬件签名器的话,就是说我的这个硬件签名器它可以做好它本质的这个事情,剩下的这个事情,包括获取这个余额,包括构造交易,包括这所有这些东西都可以被交给市场上其他基于标准开发出来的软件钱包去完成。你要有这样的这个心态,你才能够去好好的打磨这个硬件钱包,而不是说你要卖给用户一个硬件钱包,同时还给他搭售了一套软件,然后用这个软件去锁定他。我认为这件事情是有问题的。这是我的第二点。

曾汨: 我接着说吧,就是我比较看重的一个点是硬件钱包里面是否有安全芯片。一款硬件钱包如果没有安全芯片的话,在攻击者物理获取了你的硬件钱包的前提下,它是有概率从里面提取到相关的私钥的。这个并不是推演,而是曾经确实发生过类似的事情,也有很多相关的研究。这也是为什么现在绝大部分的硬件钱包都往里面加入了安全芯片。甚至连以前从来不加安全芯片的 Trezor,他以开源著称,他在自己最新版本的 Trezor 里面也加入了安全芯片。当然我这里并不是说没有安全芯片的钱包,它一定不安全。它也有很多其他方式来提高自己的安全性,但是我个人更建议大家在选购钱包的时候,优先选择有安全芯片的硬件钱包,尽管它会带来一部分的不透明度。

阿剑: 这个不透明度是由于安全芯片没有办法完全开源是吗?

曾汨: 对的。

阿剑: 那我在这边还提一个我自己可以说挺喜欢的一个特性叫做 AirGap。是什么意思呢?是说支持 AirGap 的这种设备它是允许你不使用任何线缆跟你的运行软件钱包的这个设备交互的。用什么办法呢?就是用我们用的很普遍的二维码。什么意思呢?就是软件钱包和硬件钱包,我们说它们的功能上有一个分工。软件钱包它负责获取你的这个余额,就获取你的 UTXO,然后包括去构造交易,然后它再把这些交易通过一定的方式传递给硬件签名器,由硬件签名器签名。硬件签名器签完名之后呢,再把这些签好名的这个数据交回给软件钱包,由软件钱包再把你的完整的这个交易广播出去。那在这个过程当中,它就涉及到因为硬件钱包它是被我们明确设计成不联网的一个设备,那么我们就要解决一个问题是它跟我们的运行软件钱包的这个设备怎么通信的这个问题。那么以前比较普遍的一个用法是用 USB,我们知道比如说 Ledger 的话,它在以前的话,往往它会用一个软件,包括是那个浏览器里面的插件,它是能够去了解你的 USB 上传来的这个信息的,它会把数据传给你的 Ledger 的这个硬件签名器,签好名之后再把它传回去,USB 是一种传递的方式,但也有一些人尝试使用过蓝牙,那么 AirGap 的这个意思呢就是说不使用这些方式,因为这些方式它的交互当中的风险会比较大。比如说 USB 传递的这个过程当中,我怎么知道你的这个设备不会通过 USB 给我传递一些别的东西呢,对吧?特别是如果你能够传递给我让我运行的这些东西的话,那我的这个设备实际上是暴露在一个极大的风险之下的。AirGap 这个意思就是单纯使用摄像头和屏幕来去交互。

当你的软件钱包生成好东西之后,你显示成一个二维码或者一个动态二维码,而我的硬件签名器是通过扫码的方式,摄像头扫码的方式来读取这些数据,而它签好名之后的话,它自己也会生成出一个二维码,然后我们再用设备,用摄像头去扫它,来读取它这个签名,然后最终构造出一个完整的交易广播到网络上。AirGap 的这个功能就是它有两方面的提升,一方面是我刚刚所说的安全性,因为当你使用扫码这种方式的话,它毫无疑问你的交互的这个可能性,就是说可以传递的这个数据的话,可能性就已经大大缩小了,就是不是什么数据都能传,而且不是实时能传。USB 的话,你的设备插的 USB 的话,它是时时都在交互数据的,但是扫码的话,我没有打开这个扫码功能的话,你没有办法向我传递数据,对吧?这是一方面。另外一方面是,它也允许你用别的设备,比如说一台完全不是签名器的一个设备,来去扫描软件钱包生成的这些二维码,你去扫一下看它是什么意思,对吧?看它是不是一些危险的东西,或者说它是不是你想要得到的这些东西,也就是说它允许你去验证它,这是安全性方面。那它在使用体验上我认为也是有一个提升的,因为接下来的事情就变成了什么呢?变成了非常简洁清晰的你不用管了,给我二维码,我扫。我生成二维码之后给你扫,对吧?然后就接下来的事情就完成了。所以说 AirGap 的这个功能是我自己非常非常喜欢的功能。那么相应的它这也就要求你的硬件签名器需要有个摄像头,需要有屏幕。但是我认为这不是什么问题,也不是什么难事。现在的这些供应链其实都非常发达,你获得这些东西应该都是很容易的。所以说提供这个 AirGap 支持的话会给你的用户不管是安全性还是便利性上都会有一些好处。

曾汨: 我补充一点,就是 AirGap 除了扫码交互以外,还有一种方式就是通过 SD 卡。它也是一种不需要直接通过线缆的连接的方式。SD 卡和二维码它们共同的特点在我看来,最核心的特点就是它允许用户去验证自己在签名什么内容。抛开交易本身,他们还在一个点上比较有用,就是当我们的硬件钱包想要去升级自己固件的时候,如果支持 AirGap 的钱包,一般是通过你在电脑上下载固件,然后通过 SD 卡拷到你的硬件钱包里面去升级的。在这个过程中,你可以自己去验证下载的这个固件是不是官网上提供的那个固件。你多了一道自己验证的步骤。当然,其实没有 SD 卡的这个过程,其实很多硬件钱包它也会在自己本地去检查签名是否匹配,这是一个硬件钱包的标配,但是有了 AirGap 这个过程,其实给了用户更多的选择。然后我接着往下讲,我接着我那个安全芯片往下讲,就是一个钱包在通过物理攻击的前提下是有概率提取到它的私钥的,安全芯片能解决一部分问题,另外一个选项就是有一些钱包会给自己的硬件加上一个防篡改芯片,也就是说如果一个钱包被暴力摧毁的时候,这个芯片会把钱包里面所有跟私钥有关的信息给销毁掉。这也是一个额外的安全举措。虽然支持它的钱包不多,但我个人觉得它是一个比较好的一个特性。然后我再接着往下讲我喜欢的一些其他的关于硬件钱包的特性吧,是软件方面的,就是说硬件钱包在系统上的一些特性,比如说第一个是 Passphrase,密语。密语给了你一个选择,就是说你除了用助记词保护自己的钱之外,你还可以给这个助记词加一个密语。助记词加上密语就会进入一个完全不同的钱包,然后你可以在那个里面存钱。

如果别人获取到了你的助记词,而没有你的密语,他就没有办法获取到对应的钱包账户里面的钱,这也是一个安全相关的一个措施。当然你可以把它看成一个简单的 2-2 的多签,因为你本身需要一个助记词和一个密语,你凑在一起你才能够把这个钱包里面的所有钱取出来。它在安全性上是很好的,但是它在容错性上比不过真正的比如说 2-3 的多签,因为如果你两个当中任何一个掉了,你的钱就没了。我其实有关注到一些我比较喜欢的比特币社区的人,他也是反对这个功能的,所以大家如果在使用密语 passphrase 这个功能之前,一定要对它有足够的了解,并做好密语相关的备份。另外一个有一些硬件钱包已经支持的功能,我个人比较喜欢的,就是对 PIN 码的创新。我们知道大部分钱包就是你在解锁这个硬件钱包的时候,你需要输入 PIN 码,然后这个硬件钱包就要解锁了。但是有一部分钱包它提供了多套 PIN 码的选项,比如说,有一类 PIN 叫做胁迫 PIN。这个功能的设定是说假如我现在被绑架了虽然这个情况很极端哈嗯。我在这种情况下输入一串我早已经设置好的 PIN 码,就会进入一个完全不同的钱包,这一类钱包厂商他会推荐你在这个钱包里面存一点点比特币,然后来应付这种极端情况的发生。还有一种 PIN,叫做毁灭式 PIN。就是当我在某些情况下,我的硬件钱包不得不给别人的时候,我只要输入一次这个 PIN,我的硬件钱包里面所有相关的信息全部会自我销毁掉。这也是一个在软件功能上的小 feature。其实对于任何硬件,想要支持这些功能都不难。所以我个人是希望有越来越多的硬件能支持这些功能的。

阿剑: 对,曾汨老师还提醒我,因为 BlueWallet 也是支持类似的功能的。当然你要在选项里面打开,就是说你可以设置两个口令,一个口令你输进去之后,它是你的正常使用的钱包,另一个口令输进去之后,它打开的是别的一个钱包,就是你输入不同的口令,它打开的实际上是不同的钱包,也是为了应付刚刚曾汨老师说的这种比较极端的情形。

曾汨: 对,我们两个是不是讨论的有点过于极客了?

阿剑: 还好吧,我觉得应该,我们在这里声明一下,我们在这里声明一下,就是我们很反对一种想法,就是说那种把你的用户,把你的听众当成一些没有思考能力的人,或者是把你的用户当成一些什么都不懂的人,这是我们强烈拒绝的一种价值观念,也是我们在我们觉得真正好用的比特币钱包上没有看到过,没有观察过的一个概念。因为所有的这些极客,实际上我们认为这些极客也好,硬核这些所谓的不方便也好,实际上它背后都有一个共同的因子,它认为它的用户实际上是一些心智健全,有学习能力,并且也有一定的学习意愿的人。他们能够愿意接受一定的这个学习的成本来去提升自己使用工具的时候的这个安全性,来提升自己的这个财产保管的安全性,我们非常看重这一点。如果我们不秉持这样的观念的话,我们就不会做一期播客来去细细的掰扯每一个细节它的设计到底有什么含义。就像某些情况下,直接跟你说几个品牌,你们用就行了。不,这不是我们的做法。这也是我们极度反对的做法。我们相信一个开放的,一个尊重你的用户的一个行业,一定是说,我相信我的用户是一群有辨别能力的人,是一群有学习能力的人。所以我认真做产品是能够得到他们的认可的,认真做事情是能够得到他们的回应的,我也不会尝试通过隐瞒乃至混淆乃至欺诈来去获得他们的信任,来去获得他们的认可。

当你假设你的用户是一群居然没有任何思考,没有任何分辨能力的,没有任何学习能力的人的话,你做的这个产品我相信不会好到哪里去,因为它最终它只是一些玩具,它经不起真正认真的用户的把玩和推敲,那所以我们希望我们在这个播客里面也希望向大家传递的是我们讲了很多的东西,提供了很多这些信息,这些信息也许不是每句话都对你有用,都对你的身处的那个环境有直接的指导作用,但是仔细的分辨这些不同的特性,它们有何安全性的意义,它们有何隐私性的这个意义,这是有意义的,也是我们希望我们的听众应该形成一种习惯,只有这样你才能够在这件事情当中,得到你真正想要的那个安全性,以及得到自己保管这一切控制这一切的个人主权。

曾汨: 其实大家也没有必要听我和阿剑老师聊了这么多觉得选择硬件钱包是一个非常麻烦非常复杂的事情,要考虑这么多东西。其实你只要选择使用的硬件钱包,特别是有了安全芯片的硬件钱包,以后你所获得的自我托管的安全性已经是非常非常非常高的了。我们所做的只是告诉你如何进一步加强自己在硬件钱包这件事情上的安全性。好的,那么我想我们刚刚讨论应该已经把挑选一款硬件钱包该看中哪些特性讲得差不多了。那么接下来就讨论一下大家在购买和使用硬件钱包的时候应该注意哪些东西。那么首先还是我个人觉得还是和软件钱包一样大家在购买任何一款硬件钱包的时候,一定要通过官方的渠道。来购买硬件钱包,而不要通过第三方的商城或者代购之类的渠道。否则你买到的硬件钱包有可能被人家篡改过,但是你并不知道。第二点就是不要选择使用自己的详细的家庭地址来收款。这一点并不取决于你所在的地方它治安怎么样,而是说你在选择购买一款硬件钱包的时候,应该做好对自己隐私的基本保护,无论你身处在哪。当你买到一款硬件钱包,然后自己收货之后要做的第一件事就是验证这款硬件钱包的包装是否被改动过。目前其实市面上我自己接触到的绝大部分硬件钱包,它都有自己的一些防篡改的一些设计。然后你能够很好的来验证你的钱包是不是被人家动过手脚,你可以通过在官网提供的这些手段来验证你的货是不是官方发给你的,然后它是不是正品。然后当你做好这一切之后,你就可以开始使用硬件钱包了。那么使用硬件钱包的第一点就是创建或者导入助记词嘛。关于助记词其实可以和软件钱包一样首先第一点就是你必须要做二次确认你在抄录好自己的助记词之后,你一定要记好这个助记词对应的地址。

然后把助记词删掉,然后重新导入看看这些地址是不是一样的。并且做好助记词相关的备份。当然,关于备份是一个很大的话题,我们就这里不展开讨论了。第二点就是,很多用户会在使用硬件钱包的时候,导入自己之前在软件钱包里面使用的助记词。这样是绝对不可以采取的。因为使用硬件钱包,其实想要的就是私钥的永不触网。你之前在软件钱包上使用的私钥,本质上在概率上它是接触过互联网的。那么你这个时候你把一个软件钱包以前用过的助记词导入到硬件钱包,你使用硬件钱包的意义就不存在了。所以大家在使用硬件钱包的时候,一定要重新创建助记词,或者导入从来没有在移动设备上使用过的助记词。同时,大家在保存助记词的时候,一定不要像保存软件钱包的助记词那样,比如说把它备份到任何跟互联网会产生关联的地方,这些都是最基本最基本的。事情。再就是大家在使用硬件钱包的时候,比如说升级固件的时候,一定要小心,一定要做验证。如果你有能力去验证的话,最好验证你每次升级的固件是不是官方的固件。然后你每次在签名交易的时候一定要在硬件钱包的屏幕上进行确认。这个也是我前面提到的说硬件钱包一定要屏幕,最基本的一点。你只有在硬件钱包的屏幕上确认了这笔交易是你想要签名的交易,它才是真正的交易,否则其他的前面所做的安全相关的措施就白费了。这个是我个人想到的一些关于硬件钱包在使用和购买的过程中应该注意的一些事项吧。阿剑老师有补充的吗?

阿剑: 我们注意到可能很长一段时间来,许多硬件签名器的开发团队,他们都会在这个软硬件钱包的这个交互上去做很多安全措施,就是为了应对刚刚曾汨老师说的,你的软件钱包推给硬件钱包那个东西可能不是你想签的那个东西。包括在这个硬件签名器上实现一些验证功能来帮助用户去对抗这些风险。我们认为这些工作都是毫无疑问是有意义的,当然这里面主要涉及的不是比特币的这个保管。如果有硬件签名器的用户或者是开发者听到这一段的话,我其实希望你们能够在自己的官网上,像曾汨老师说的一样,为你的用户提供更多的这种关于一个硬件签名器,比如说在开包装,在升级固件,在日常操作当中的更加详细的指引。因为软件跟硬件不一样的地方在于硬件是你可以把说明书跟你的产品一起交付的,软件还不一定是那么同步交付的。那么这些说明书实际上对用户来说是非常重要的,因为它本身在操作一种对安全性非常敏感的设备。那么自然而然它会需要你详细地告诉它这个设备它是怎么操作的,就像你日常生活中的电视机电脑所有这些东西一样,你应该尝试为你的用户提供更多的更加清晰的这个指引。如果你是一个用户的话,你应该提醒你使用的那个设备的厂商提供这样的指引。这是这是我想说的。

曾汨: 好的,那么要进入可能今天我们讨论的最后一个话题了,就是讨论一下我们各自现在在使用一些什么硬件钱包,它有什么特性你觉得会特别好的?你先来吧。

阿剑: OK,那我自己目前我最喜欢的一款硬件签名器叫做 SeedSigner,这个硬件签名器大家很少有人听过,它有几个特性,我先帮它劝退一些用户,首先,它违反了曾汨老师刚刚提到的一条,叫做需要有安全芯片,它没有安全芯片。但是与此同时,它的对应措施就是它也不能用来存私钥,就是你不能用来存私钥,这是它的措施,就是说我既然无法提供安全芯片来对抗这种私钥存在内部可能不安全,可能被抽取的问题,那我就不保存私钥,这是它的第一点。撇开这一点的话,其他方面在我看来很多方面都是优点,就是首先它是一个你可以自己组装的一个硬件签名器,没错,它不是一个完整的工业品,就是说它实际上是你自己买一些零件,然后可以把它组装起来,你需要买一个树莓派,最便宜的那种树莓派主板就可以,再加上一个控制板,然后你自己把它的这个固件烧录到 SD 卡里面,插入之后呢,包括再给它配一个树莓派的摄像头,这就可以用了,就是说它是一个你自己组装起来这个东西,包括它是使用一种通用的硬件,因为一般来说,硬件签名器它都是专用硬件,就是实际上都是这些硬件的签名器的开发团队自己跟有能力加工的这些厂商定制化生产,是一种专用设备,但是树莓派是一种通用设备。那么自然而然它就相应的它的供应链攻击的这个风险就相对会小一点,因为没有人期待你会拿它来做这个用途。接下来呢就是那它有什么好玩的那个地方呢?首先它是纯 AirGap 的。

就是它的这个 USB 的这个接口只能给它供电,不能用来传输数据,所以它自始至终都是一个 AirGap 的设备,它也不支持蓝牙,不支持 WiFi,所以你就只能拿它来扫码,获取要签名的这个交易,然后再生成二维码,把它用摄像头扫到你要需要构造交易的这个设备当中去,它是个纯 AirGap 的这个设备,然后其次是它的固件对于现在的这个相应的这个软件钱包,以及各方面的这个支持都做得非常好。而且有一部分是他的这个屏幕啊,他在你需要签名交易的时候,他会用一个跟网上那个 Blockstream 或者 mempool 的那个图一样,就是资金流向图,就他会用资金流向图的这个方式告诉你你的资金从哪个或者哪几个输入进来,然后流到哪几个输出里面去,他会有这样的这个图,所以是非常非常清晰,然后也会对支付的这个数额,找零的这个数额,手续费的这个数额有非常清晰的这个显示,因为他使用的这个屏幕是一个控制板上的这个屏幕嘛,是很清楚的,而且单位是聪,所以没有所谓的这个小数点啊这些那些问题,非常清楚。很好玩,它可以生成助记词,它只不能保存而已,它生成助记词的时候,它是允许你自己加入熵源的,你可以掷骰子,然后你也可以拍照,在你拍照的这个同时,你表面上你是按了一下快门,但是它背后它会连拍几十张,好像几十张还是几百张这个照片,从里面再挑出一些来去生成这个随机数的这个源头,它可以自加熵源,然后包括它的屏幕在验证上是提供了非常好的这个体验。基本上它除了没有安全芯片是一个比较大的缺点之外的话,我觉得它在其他方面都是非常优秀的一个硬件签名器。

曾汨: 好的,那我来讲一下我在用的硬件签名器吧。我目前主要在用的硬件签名器有两款,一款是第二代的 Keystone Pro,不是最新的第三代的,因为第二代的 Keystone Pro 它有一个 BTC-Only 的版本,也就是说刷入那个固件之后你只能够用它来存储和交易比特币。当然这一代现在已经停产了。我个人比较喜欢它的原因首先就是它有一个很大的屏幕和摄像头这个对于我在光学交互扫码交互的时候非常非常便利。因为我用过其他的一些支持光学交互的硬件钱包,由于它的屏幕很小,它的摄像头精度不那么高,所以在跟光学钱包进行交互的时候,都要更费力一些。第二点就是 Keystone Pro 的第二代,我上面提到的很多点,比如说安全芯片,比如说防拆毁的芯片,这些东西它都符合,所以它是我一个比较主力的进行比特币交易的一个钱包。另外一款钱包就是 Coldcard 的 MK3,它现在最新款应该到 MK4 了,但是我用的是 MK3。它也符合我前面说的所有的那些特性。有一点就是它没有摄像头,它是通过 SD 卡来进行 AirGap 的操作的。但是所有相关的比特币钱包应该支持的特性它都支持。而且它是我见过的所有的 BTC-Only 的硬件钱包里面对比特币的功能特性支持最全的。基本上比特币网络上有什么新的功能新的特性它都会加进去比如说最新的比如说 Miniscript 现在支持的硬件钱包其实很少那么它是一款嗯。然后我刚刚提到那些关于 PIN 码的功能,比如说什么胁迫的 PIN 码,毁灭的 PIN 码,它都是很早就支持了。他关于这个 PIN 玩出了非常多的花样。

然后它有一个功能叫做 BIP85 这个功能我个人会比较喜欢,因为我自己是很喜欢体验各种不同的钱包,比如说各种软件钱包,硬件钱包,我都喜欢折腾一番。但是你在折腾这些钱包的时候,第一步就是创建一个助记词。然后你创建一个助记词之后你就需要找一个地方给这个助记词保存一下无论你是手抄还是写在哪里那么 BIP85 是一个什么功能呢?它就是说你有了一个助记词然后通过给助记词加一个序号。就能诞生出一个新的助记词,然后这个过程是确定性的。比如说我的助记词加上序号 1,它就诞生了一套新的助记词。加序号 2,就诞生了一套新的助记词。把这个序号记住,当你有了原本的助记词备份的情况下,你在任何情况下,只需要有了这个序号,你就能恢复出对应的助记词,比如说我今天想试用钱包 A,那么我在 Coldcard 里面。利用他的 BIP85 功能,然后输入序号 1,他就会给我一个助记词。我就把这个助记词导入一个新的钱包,然后就试用就好了。然后哪一天我忘记助记词了,我再在 Coldcard 里面输入序号 1,相应的助记词就出来了。我如果试用了很多款不同的硬件钱包也好,软件钱包也好,有了这个功能,我就能够生成非常多套助记词,同时不需要把它们记下来,只需要记住对应的序号就好了。这个功能在其他产品下也有一定的作用,比如说,我现在想让我的家人也使用比特币钱包,但是他们并不善于保管助记词,那么我通过这个功能派生出来几个助记词给他们用,我只需要备份好对应的序号。我就可以放心地让他们去使用这些助记词了。当然,他们也需要遵守一些基本的安全原则,这里就不展开了。

那么对于我来说,我的备份工作就只有我自己的助记词和这些序号,甚至往极端的一点说,你这些序号不记得也没有太大关系。因为你反正 12345 往下枚举,你用到的序号也就那么多,总是能推导出来的。所以这个功能我个人觉得是一个比较吸引我的点吧。现在我知道支持 BIP85 的硬件钱包好像也就 Coldcard 和 Blockstream Jade。我知道的也就这两款钱包,所以我个人目前在用的主要是 Keystone Pro 的 BTC-Only 版本和 Coldcard,这两款钱包我个人觉得还是很不错的。当然我们,我和阿剑老师在这里说我们自己使用的硬件钱包,也并不是给他们背书或者鼓励大家去买这些东西,只是说提供一些我们自己的视角。

阿剑: 没错,没错,到了节目的尾声,还是想补充一点东西,就是这一段播客是在 2023 年的 12 月完成的,那么如果再过一年或者是再过两年,再重新回到这个话题的话,也许我们会增加一些内容,或者说提出更多的需要注意的点,甚至是一些可以吸引用户的特性,因为整个行业是在不断地发展的。那我们也非常鼓励用户在听完这期播客之后考虑如下这些事项。其中有一个我们认为非常重要的点是考虑多签名钱包。为什么呢?因为在我们之前提到软硬件钱包的时候,基本上很少说这个钱包是应该为单签名设计还是为多签名设计。其实实际上我们提出的这些原则的话是可以帮助你挑选,但是很多用户可能都会把它们当成一个单签名的钱包来使用。但是单签名钱包跟多签名钱包相比,它在容错性上和安全性上都是要更差一些的。用户应该考虑的有几点。第一点是,这种安全性上的差异是否足以盖过你在精挑细选软件钱包上产生的差异。也就是说,当我使用一款基本上靠得住的软件钱包,和你去挑选一款可能它差一些,但是你本身就把它搭配成一个多签名钱包,这两件事情,虽然它思考起来有点困难,但是我们推荐给我们的听众,可以从这个角度考虑一下这个问题。另外一方面是,整个行业会发展。我们也预期越来越多的用户使用比特币提供的原生的这些功能,包括多签,包括带有时间锁的一些复杂的这个功能来去改善他们的自主保管的这个体验。这些就要求我们用一种新的视角。来去衡量我们看到的软件钱包产品和硬件签名器产品。我们非常推荐,非常鼓励我们的听众从多签的这个角度上尝试使用多重签名的这个钱包,并且也把对多重签名钱包的支持作为评估乃至挑选软件钱包硬件签名器的其中一个维度,因为这是面向未来。

我们希望比特币的软件钱包的产品的开发者在这些事情上做出的努力,得到的这个进步,能够为我们的听众提供更好的自主保管的体验,更安全的体验,以及更好的个人主权。

曾汨: 好的,那么我想我们今天关于如何选择钱包这个话题应该已经讨论得差不多了。当然鉴于我和阿剑老师两个人知识的局限性,我们讨论的过程中一定会有错误的存在,也欢迎大家指正。同时我们也不是钱包行业的非常专业的人士,我们所说的只是提供给大家一个选择的思路。如果还有遗漏的,也欢迎听众朋友们在我们的推特上给我们留言补充。那么本期播客到此结束,感谢你的收听,再见。

阿剑: 谢谢。

Follow us:
RSS Feed:

Vires in Numeris
// 以数字铸就力量

Libertas in Cryptographia
// 以密码学捍卫自由