首页 > 比特币 > 正文

今天,也就是 2019 年 11 月 24 日,标志着比特币核心 0.19.0的正式发布,这是近 11 年前中本聪推出的比特币原始软件客户端的第 19 个主要版本,并且仍然是当今网络上占主导地位的比特币实现。(尽管由于在 Bitcoin Core 0.19.0 发布过程的后期阶段发现的一个问题,发布的可供下载的版本实际上是 0.19.0.1。)由Bitcoin Core主要维护者 Wladimir van der Laan监督,这个最新的专业release 是由一百多名贡献者在大约六个月的时间里开发的。

什么是比特币的核心算法

作为 550 个合并拉取请求的结果,Bitcoin Core 0.19.0 包括一系列性能改进、现代化和错误修复以及其他更改。

以下是其中一些更改的概述。

GUI 中默认的 BECH32 地址

“bech32”地址格式 ( BIP 173 ) 已在 2018 年初发布的Bitcoin Core 0.16.0 中引入,但现在首次设置为 Bitcoin Core 钱包图形用户界面 (GUI) 中的默认选项。

Bech32 地址是以“bc1”开头的地址(与以 1 或 3 开头的地址相反。)这些地址也有点长,但使用的不同字符比当前地址格式少,因为不再有区别介于小写字母和大写字母之间。(这减少了人为错误的可能性,例如,当地址被大声朗读时。)Bech32 地址还旨在限制由拼写错误引起的错误。

此外,bech32 在隔离见证的背景下提供了好处。一些提供隔离见证的钱包——包括迄今为止默认的比特币核心钱包——通过将其“包装”到 P2SH 输出(地址以“3”开头)来实现。要从这样的地址花费比特币,用户必须透露一段代码——“赎回脚本”——以表明比特币确实被锁定在 SegWit 输出中。使用新的 bech32 地址,可以跳过这一步,这意味着从隔离见证输出中花费将需要通过比特币网络传输并包含在区块链中的数据少一点。这使得来自 bech32 输出的交易比来自 P2SH 输出的 SegWit 交易更便宜。

由于并非所有比特币钱包都支持发送到 bech32 地址,Bitcoin Core 0.19.0 用户仍然可以通过 GUI 中的切换选择生成 PS2H 接收地址。

默认情况下额外的两个仅块出站连接

比特币节点连接到其他几个比特币节点,共同形成点对点网络。在这个网络上,节点共享区块、交易和一些额外的交易数据。

但是点对点网络可能会受到攻击,例如“分区攻击”。如果攻击者控制了足够多的比特币节点,它就有可能通过拦截所有流量来“切断”比特币网络的某些部分(甚至特定节点)。例如,网络的分区部分可能会被愚弄,接受少数链——而不是最长的链——是有效的,这反过来可能会打开双花攻击的大门。

如果网络分区部分中的节点与主网络上的诚实节点只有一个连接,那么分区攻击就会被反击。然后它将接收并中继所有交易和区块,并拒绝少数链而支持多数链。

实现这一点并使分区攻击更难实施的一种方法是让节点彼此建立更多连接。然而,更多的连接确实会带来更多的内存和带宽要求;有一个权衡。

Bitcoin Core 0.19.0 将传出连接的默认值增加了两个,但是——巧妙地——这两个额外的连接仅用于中继块——它们不中继交易或额外的交易数据。这最低限度地增加了增加的带宽要求,同时仍然使分区攻击更难以成功实施。

布隆过滤器已弃用

Bitcoin Core 是一个完整的节点实现,这意味着它下载并验证所有比特币区块。虽然这是最安全的,但它并不非常适合低资源计算设备,如移动电话。因此,移动钱包(以及一些桌面钱包)通常是“轻客户端”:它们只下载交易和(部分)与它们相关的区块。

一种方法是使用布隆过滤器,如今已被一些钱包使用。简而言之,布隆过滤器是一种加密技巧,轻客户端使用它来从网络上或多或少随机的完整节点请求相关数据。然而,不幸的是,多年来很明显,布隆过滤器对隐私非常不友好:它们基本上向全节点公开了所有地址。最重要的是,支持 Bloom Filter 请求确实以全节点的 CPU 和磁盘空间为代价——对全节点本身没有直接好处。

特别是后一个原因,Bitcoin Core 0.19.0 默认不再支持布隆过滤器请求。如果愿意,用户仍然可以切换默认设置以支持布隆过滤器。

还值得注意的是,比特币网络作为一个整体几乎肯定会在未来几年继续支持布隆过滤器,即使没有人改变他们的默认设置,仅仅是因为旧的比特币核心节点通常在新版本发布后继续使用多年被释放。

对紧凑型客户端块过滤的更多支持

布隆过滤器的替代方案是一种新的解决方案,称为“紧凑型客户端块过滤”(BIP 158)。紧凑的客户端块过滤本质上颠覆了布隆过滤器的技巧。不是轻钱包创建过滤器以发送到完整节点,而是完整节点为每个块创建过滤器。然后轻客户端可以使用这些过滤器来确定与它们相关的交易是否可能发生在一个块中。如果是这样,轻钱包将获取整个区块并从中挑选任何相关的交易数据。

Bitcoin Core 0.19.0 继续朝着支持紧凑客户端块过滤的方向发展。比特币核心节点已经可以在本地创建过滤器,但比特币核心 0.19.0 用户现在还可以通过远程过程调用 (RPC) 将它们提供给运行在节点之上的应用程序(如钱包)。

但是,过滤器尚不能通过对等网络使用。这意味着比特币核心 0.19.0 节点不会自动向其他比特币用户的钱包发送过滤器。此功能可以添加到未来的比特币核心版本中——或者比特币核心 0.19.0 用户可以选择通过在其比特币核心节点上运行的自定义应用程序来提供该功能。

从 GUI 禁用支付协议支持

支付协议 ( BIP 70 ) 是几年前设计的,旨在改善比特币的支付体验。除了广播到比特币网络的常规付款之外,用户和商家还会传达有关付款的其他详细信息,例如人类可读的目的地地址(商家名称)和退款地址,以防出现问题与购买。

虽然比特币核心在其 GUI 中集成了支付协议,但该标准从未被广泛采用。相反,大多数钱包仍然使用更基本的 URI 方案(BIP 21)来接收付款:例如,可点击链接或可扫描二维码格式,用于传达付款地址和金额。(今天唯一值得注意的例外是支付处理器 BitPay,它不支持 URI 方案,但使用 BIP 70 的修改版本。)

也许比缺乏采用更重要的是,BIP 70 支付协议多年来一直遭受许多安全和隐私漏洞的困扰。因此,一些钱包积极拒绝实施该协议。Bitcoin Core 也曾计划弃用 BIP 70 一段时间,因为它的维护被认为不值得付出努力——但 BitPay 对它的采用使这个过程停滞不前。

在 Bitcoin Core 0.19.0 中,BIP 70 毕竟已经默认从 GUI 中删除了。Bitcoin Core 0.19.0 用户必须使用特殊配置编译他们的节点才能继续使用该功能。

其他…

除了上面提到的变化之外,Bitcoin Core 0.19.0 还附带了一长串较小的改进和现代化。

例如,现在可以从设置中立即启动一个修剪过的节点,这让磁盘空间很小的用户可以轻松启动一个新的比特币节点。Bitcoin Core 0.19.0 还包括部分签名比特币交易 (PSBT) 协议的新功能,这对于多重签名和 CoinJoin 交易非常有用。同样,钱包描述符领域也有一些改进,这对从事比特币应用程序的程序员特别有用。Bitcoin Core 0.19.0 节点还将接受和中继使用未来 SegWit 版本的交易,以确保即将进行的升级顺利进行。

猜你喜欢
发表评论

电子邮件地址不会被公开。 必填项已用*标注

评论信息