今天(1月14日),Bitcoin Core 0.21.0的正式发布,这是中本聪在大约12年前推出的比特币原始软件客户端的第21个重要版本。
在Bitcoin Core首席维护者Wladimir van der Laan的监督下,这个最新的主要版本是由一百多名贡献者在大约六个月的时间里开发的。Bitcoin Core 0.21.0是近几年来最大的Bitcoin Core版本之一,引入了各种新功能,以及隐私和性能的改进,同时向Schnorr/Taproot协议的升级迈出了一大步。
以下是一些比较显著的变化。
当币被发送到比特币地址时,实际上发生的事情是,它们会被 “锁定”在一个未花费的交易输出(UTXO)中,而只有满足UTXO中隐藏条件,才能在以后的交易中被“解锁”(花费)。其中一个典型的条件是包含与特定公钥对应的有效签名。但条件也可以包括像秘密代码、时间锁的失效或签名的组合(多签)。
直到现在, Bitcoin Core的设计都旨在围绕其对应的私钥来管理钱包中的UTXOs——尽管私钥只是花费代币的几个潜在条件之一。此次Bitcoin Core 0.21.0引入了“描述符钱包”(Descriptor Wallets)。描述符钱包能够让用户根据花费UTXO所需的条件类型对其进行分类。(例如:一个钱包用于只需有效签名的UTXOs,另一个钱包则用于多签名的UTXOs)。
描述符钱包对于在Bitcoin Core之上设计软件的应用开发者来说特别有用。现在,一个特定的应用程序可以很容易地被设计成只利用特定类型的UTXO,如多签UTXO,而忽略任何非多签的UTXO。
普通用户可能也会注意到现在描述符钱包实施后的不同。也许最值得注意的是,当启动一个新的Bitcoin Core节点时,将不会创建默认钱包。取而代之的是,只有当用户特别选择创建新钱包时,才会创建新钱包,并允许他们只创建特定需要的钱包类型。此外,描述符钱包也更好地支持 Watch Only钱包:即使节点没有使用它们所需的私钥,也会跟踪某些特定的UTXO。
升级到Bitcoin Core 0.21.0的Bitcoin Core用户目前仍然可以使用他们的传统钱包。(传统钱包最终将被废弃,这意味着用户需要将他们的传统钱包迁移到描述符钱包,但在未来的Bitcoin Core发布之前,这并不是严格意义上的必要。)
“轻客户端”(Light clients)是指不下载和验证整个比特币区块的比特币钱包和应用程序,而只是下载和验证具体涉及的部分区块和交易。这并不是最佳的安全方式,但对资源的消耗要小得多。
其中,一种流行的方式是使用Bloom Filters。简而言之,Bloom Filters是一种加密技巧,用于从网络上或多或少的随机对等节点中请求相关数据。然而,不幸的是,多年来,人们已经清楚地认识到,Bloom Filters对隐私相当不友好:它们基本上将用户的所有地址透露给(或多或少随机的)对等节点,当然,也就可以被侵犯隐私的窥探操作。
与Bloom Filter解决方案相比,一个更新且更能保护隐私的替代方案被称为“紧凑型客户端区块过滤”(BIP 157/158)。它从本质上颠覆了Bloom Filter的技巧。与其说是轻钱包创建过滤器发送给全节点,不如说是全节点为每个区块创建过滤器,并根据请求将这些过滤器发送给轻客户端。然后,轻客户端使用这些过滤器来弄清与他们相关的交易是否可能已经包含在一个区块中。如果是的话,轻钱包将获取整个区块,并从中挑选出任何相关的交易数据。(会有一些误报;即使过滤器建议可能会有相关交易数据的区块,但其中可能并不含有有相关的交易数据。)
现有的Bitcoin Core版本已经可以在本地创建过滤器,并通过远程过程调用(RPC)为运行在节点顶部的应用程序(如钱包)提供过滤器。Bitcoin Core 0.21.0现在还包括了一个选项,可以根据请求在Bitcoin的点对点网络上提供这些过滤器。也就是说,现在操作使用bloom filters的独立轻客户端也成为了可能。
除了Bloom Filters,窥探者还可以通过网络分析破解比特币用户的隐私。如果他们能找出某笔交易来自哪个节点,那么该节点的比特币地址就可以与其IP地址联系起来,而IP地址又可以与现实世界的身份联系起来。
直到现在,当Bitcoin Core节点向比特币网络广播一笔交易时,它们都会试图每隔15分钟重新广播这笔交易,直到这笔交易被包含在一个区块中。这就意味着,如果这些Bitcoin Core节点连接到了一个窥探对等体,那么对于窥探者来说,每隔15分钟试图重播某笔交易的Bitcoin Core 节点也就很明显是该交易的起源节点。
Bitcoin Core 0.21.0大大降低了它试图重播交易的频率:从原先的频率调整到了每12到36小时才重播一次。不得不减少重播的频率,使得交易从最初的广播开始就被确认的可能性大大增加,所以节点根本不需要重播。
在未来的Bitcoin Core版本中,这种隐私泄露将被完全修复。届时,Bitcoin Core节点只会重播应该根据自己的mempool和费用计算确认的交易。此外,它还会重播其他交易,而不仅仅是自己的交易。
由于最近对隐私保护Tor协议的升级,新的V3版本的Tor地址比之前的V2版本地址要长。目前,V2地址仍在使用,但将在大约一年后被废弃。
废弃V2地址会给想要通过隐私网络使用比特币的Bitcoin Core用户带来问题。原本Bitcoin Core节点通过相互分享已知使用Tor的比特币节点的Tor地址来寻找同行。他们通过共享其他节点的常规IP地址的相同信息来共享这个IP地址。虽然Tor V2地址可以“隐藏 ”在常规IP地址格式(IPV6)中,但Tor V3地址太长了,也就是说,目前的消息太有限了,还无法与Tor的升级兼容。
因此,Bitcoin Core 0.21.0引入了一种新的格式来与同行共享IP/Tor地址。这些消息可以大到共享Tor V3地址。
Schnorr/Taproot将成为比特币自2017年8月隔离见证(SegWit)以来的首次协议升级。Schnorr签名算法已经开发了两年多,被认为是对比特币当前ECDSA签名算法的全面改进。结合Taproot(一种巧妙的技巧,在加密哈希树中隐藏各种花费代币的条件),此次升级有望以可扩展和保护隐私的方式提供更多的智能合约灵活性。
Schnorr/Taproot代码现在已经包含在Bitcoin Core 0.21.0中。除非有意外的发展,它不会再有任何变化,也就是说,应用开发者已经可以开始围绕升级设计软件了。此外,Schnorr/Taproot现在已经可以在Signet(测试网的一个更新、更可靠的变体,开发者可以用它来测试新的比特币软件)上使用,而且也有可能在Regtests(额外的本地测试网变体)上使用。
不过,Schnorr/Taproot暂时还不能在比特币主网上使用。为此,升级首先需要激活,而激活就需要激活逻辑。然而这个Bitcoin Core版本中并没有包含激活逻辑,预计可能会在未来几个月的某个时间内包含在Bitcoin Core的一个小版本中。
除了上述变化之外,Bitcoin Core 0.21.0还包括各种bug修复和性能提升,对于普通用户来说,这些变化不会那么明显。
比如Bitcoin Core钱包将从使用Berkeley DB切换到SQLite数据库,后者更适合作为应用数据文件,并且在兼容性、支持和测试方面提供了多项保障。
值得关注的是,Bitcoin Core 0.21.0还包含了交易请求的大修:比特币节点用来了解新交易的新消息协议已经经过了更好的测试,更好的规定,且更容易维护和审查。