总览

我们很高兴地 宣布 比特币核心0.13.0版本正式发布了. 在此版本6个月的开发周期内,数十名贡献者 完成了比特币核心的 几百个显著改进 . 在本轮版本发布的诸多升级当中,下面可能是让矿工、节点运营商和钱包用户特别感兴趣的几点:

  • 为隔离见证做准备 以增加容量、消除不必要的交易延展性,并允许利用软分叉采用新的方法来升级比特币脚本语言。本轮更新版本的代码只为隔离见证做准备;并不支持在交易主网上进行隔离见证,因此想要支持隔离见证的用户将需要升级到未来的版本.

  • 在对等网络上的压缩区块传递下同 用来消除造成中继交易节点间冗余数据传输的一个主要来源,并减少那些节点在下载新生成区块时所使用的带宽的峰值.

  • 基于费率的过滤功能 通过允许节点跳过任何未证实的低费率交易 - 他们知道对等节点肯定也会忽略他们 - 来消除对等网络上另一个不必要的数据传输的来源.

  • 比特币核心内建钱包对BIP32 分层确定性钱包的支持,它允许用户备份伴随钱包生成的每一个私钥,而不是像原来默认的那样仅可以备份下100个私钥.

  • 父子支付方案(CPFP)交易选择 让矿工开采更多的利润(如果可能),并且在用户不能直接增加交易费用的情况下,赋予用户对確認指定交易给予激励的能力.

  • 为运行在ARM芯片组上的Linux操作系统开发的正式比特币核心二进制可执行文件 让这些平台的用户能够使用预编译软件的优势,这些软件都是通过Gitian 确定性编译和多重证明过程保证的.

比特币核心0.13.0版本所做更改的全面列表,请参阅 版本发布声明. 上文罗列的改进点将在以下章节加以详细描述.

隔离见证的准备工作

比特币核心 0.13.0 版本作出的最重要的代码变更是添加了隔离见证(segwit)代码,为即将到来的软分叉做好准备。请注意,此版本将不会激活 segwit,并且即使segwit被激活,此版本也不会有任何不同表现,因此,那些想要使用或执行 segwit 的用户将需要升级到包含激活机制的更高版本.

通过在比特币核心 0.13.0 版本添加 segwit 代码,用户获得几大优点:

  1. 更容易升级到segwit : 这个版本与后续包括segwit的版本的代码差异(“差异”)将会很小 这使得修改了比特币核心版本的用户可以轻松地将他们在比特币核心0.13.0版本上的任何变更转换到包含segwit的版本(预期为0.13.1)上

  2. segwit测试更容易 : 虽然此版本将无法在交易主网上运行segwit代码,但它运行在测试网络并处于回归测试模式(regtest),这让开发人员、管理员和测试人员能够在一个安全的环境里使用segwit,这个环境上运行的版本将非常接近矿工能够激活segwit的第一个版本

  3. 与其他功能完全集成 : 包含在这个版本中的所有其他功能 – 比如交易费过滤、压缩区块傳遞, 下同、父子支付方案,以及为ARM上运行的Linux系统发布的官方二进制可执行文件 – 都与segwit代码集成并将有可能在segwit被激活前的两到几个月内投入生产,为社区评审和测试发现潜在问题提供了额外的时间

更多信息:

压缩区块传递下同

在比特币核心0.13.0版本之前,一个运行的全节点将(默认)两次接收到许多交易:

  1. 在交易被确认之前,作为一个单独的交易正在通过网络中继.
  2. 在交易被确认后,作为交易组的一部分 - 该交易组包含在一个新开采的区块中 - 正在通过网络中继.

如果节点仍然有第一个副本,则它没有必要再次接收交易 。压缩区块传递下同(BIP152)可以通过允许一个节点从对等节点接收一个有序列表消除这种冗余,该有序列表中指明一个新的区块中包含哪些交易。有了这个信息,节点就能利用它已经接收到的交易来部分或完全地为自己重建区块的交易部分。如果节点没有收到完全重建区块所需的所有交易,它会从其对等节点处请求缺少的交易,然后利用它们来完成该区块.

Compact Blocks diagram

压缩区块为网络提供了三个非常重要的好处:

  1. 通过减少交易中继节点使用的带宽量,压缩区块能够帮助抵消当隔离见证容量扩展被矿工启动后所预期的带宽增加. 该抵消应当允许节点在隔离见证后继续在网络上运行, 即使他们现在已经很接近自己的当前带宽上限.

  2. 通过消除节点收到一个新区块时将产生的带宽峰值,压缩区块有可能让节点与有限的峰值带宽连接并保持操作变得更容易。例如,一些用户曾报告过,接收一个新区块会拖慢其网络上其他重要活动的速度,例如视频会议,所以一些用户在开始这些活动之前会关闭比特币核心. 压缩区块有可能消除这些带宽峰值,减少运行比特币核心给这些用户带来的不便.

  3. 在一个新区块被发现后,通过显著减少待传输的数据量,达到快速将区块广播到全网的效果.

更多信息:

  • 版本发布信息

  • 压缩区块传递下同常见问题

  • BIP152, 描述了压缩区块协议

  • Bitcoin FIBRE, 为压缩区块建立的开源协议和实现,以尽量减少新区块在受控网络节点间的公告延迟. FIBRE与压缩区块传递下同 1一起被设计和实现, 并被用来测试那些为压缩区块传递下同后续版本所做的改进.

交易费过滤

几年来,比特币核心节点一直使用最低中继费用率,以帮助确定他们去会处理、中转、并在他们的内存池里存储那些未经确认的交易. 每个节点都能决定自己的最低中继费率,并且如果他们收到了手续费低于该限制的交易,他们不会将其添加到自己的内存池或将其转发给他们的对等节点(虽然历史上另一种被称为 交易优先级 的机制允许一些支付低廉费用的交易被纳入到内存池并被中转.

在比特币核心 0.13.0 版本之前,节点并不告诉对方他们使用的最低费率,这有可能导致带宽浪费. 例如,盼弟 发送给 張三李四 一个交易,但没有意识到交易的手续费低于 張三李四 的最低费率。因为比特币交易的中继方式,鲍勃只有在下载了整个交易之后才知道该交易费用低于他的底限,因为费率太低,他停止处理该交易,最终他的带宽和 盼弟 的带宽都被浪费了.

比特币核心 0.13.0 支持已被添加到对等(P2P)协议中的一个新消息,交易费过滤(feefilter)消息,它被设计来帮助消除这种带宽浪费. 这个P2P消息允许鲍勃告诉盼弟 他正在使用的最小中继费率,因此爱丽丝就不会尝试将任何低于 張三李四 最低费率的交易中继给他.

更多信息

BIP32 分层确定性钱包技术支持

当比特币核心首次启动时,它现在将产生一个BIP32分层确定性(HD)比特币钱包,钱包里的每个私钥都是由一个使用可重复(确定性)处理过程的单一信息得到的 。这意味着备份这一条信息将备份您钱包里生成的每一条私有密钥,确保您可以在未来恢复由这些私钥控制的任何比特币.

正确地备份錢包並不簡單,所以请注意以下信息:

  • 如果您从 Bitcoin 核心 0.13.0 之前的任何版本升级,您会继续使用旧有的钱包风格,每个私钥都是单独生成的,为了让备份更加容易,其中多达(默认)100 个是预生成的- 这意味着您要为每100个交易创建额外的备份,因为每一个默认样式交易都使用一个私钥.

  • 如果您使用 0.13.0 版本(或以上)创建一个新钱包,并从默认的未加密钱包更改为加密錢包,将会为您生成一个新的HD钱包。您仍然有权限获得发送到未加密钱包的任何比特币,但您需要再次备份钱包.

如果您不确定自己是否在使用HD钱包,您可以使用getwalletinfo RPC 查看

  • 如果您使用比特币核心图形用户界面,您可以点击 帮助 菜单,选择 调试 选项,点击 控制台 页,然后输入 getwalletinfo.

  • 如果您使用 bitcoin-cli 命令进入 RPC 界面,您可以输入 bitcoin-cli getwalletinfo.

无论那种情况,如果您看到标有“masterkeyid”的一行,那么您正在使用HD钱包;如果您没有看这句话,那么您使用的是单独生成密钥的钱包.

备份HD钱包确保您将来能够重新生成使用该钱包产生的任何私钥,但这也是您可以在未来的备份中可恢复的唯一信息。您在备份后插入钱包的任何其他信息,比如您发送或接收的交易描述,在您从HD钱包备份恢复时将会丢失, 所以我们建议您,为了保存这些信息,您需要持续进行定期备份您的钱包.

重要的是,如果您手动向钱包内导入任何私钥,他们无法通过导入之前所做的任何备份恢复,所以您将需要新建一个钱包备份并使用这个备份.

更多信息

更智能的挖矿交易选择

祖先费率挖矿是比特币核心 0.13.0 下挖矿的新的默认交易选择方法. 矿工可以用它来选择将哪些交易放到他们下一个区块中,这提供两个重要的好处:

  1. 矿工往往可以从每个区块赚取更多的交易费,因为祖先费率挖矿能够优先选择某些高费率交易.

  2. 对于用户来说,矿工更加智能的选择交易的一个附带好处是,使接收者激励矿工挖掘未确认的交易成为可能.

比特币有一个规定,如果 盼弟 花费一个比特币给 張三李四,,爱丽丝接收到该比特币的交易在在区块链上出现的时间必须早于她支出该比特币给 張三李四 的交易。换句话说,父交易必须先于子交易在区块链上出现,形成一个祖先关系.

子交易和父交易可以出现在同一个区块,但如果出现这种情况,父交易必须早于子交易出现在该区块。这意味着,如果一个未确认的子交易支付高额费用,矿工应该在这个现有比特币规则的激励下去确認该交易未确认的父交易(即使它支付低廉的费用),以获得子交易的高收费.

这个激励方案通常被称为父子支付方案(CPFP)。在最简单的版本里,矿工将一个交易及其所有的祖先交易组合在一起,计算其总的每位元组费率,来确定将他们一起挖掘是否能够支付足够高的费用,以击败矿工希望包括在他下一个区块里的其他单个交易.

祖先费率开采的一个关键优点在于,两个交易不需要由同一人创建。例如,如果 張三李四 正在等待爱丽丝发给他的一个交易的确认,張三李四 可以独立创建一个子交易,用来刺激矿工将他的交易和 盼弟 的交易一起确认.

需要注意的是祖先费率开矿并不保证低费用交易会被开采,即使它具有高费率子交易或其他后代交易,这是非常重要的。特别是,几乎所有的矿工和节点都将忽略费用低于每千位单元费用(具体比例因节点而异)的交易,因此,如果父交易由于它所支付的费用低于这个限制而被忽略,那么不管它的子交易支付多高的费用,都将不会被开采.

更多信息:

运行在 ARM 上的 Linux 操作系统正式编译版本

由多位贡献者通过 Gitian process Gitian 流程 编译并加密签名的比特币核心二进制可执行文件现在包括两个平台:

  • bitcoin-${VERSION}-arm-linux-gnueabihf.tar.gz: 最流行的32-bit ARM 架构下的Linux 二进制可执行文件.
  • bitcoin-${VERSION}-aarch64-linux-gnu.tar.gz: 最流行的64-bit ARM 架构下的Linux二进制可执行文件.

如果您安装了 GNU C 编译器,可以运行以下命令查看您正在使用的平台:

gcc -print-multiarch

或者如果您使用的是基于Debian的系统,可以尝试使用如下命令:

dpkg-architecture -q DEB_HOST_GNU_SYSTEM

这些二进制可执行文件是为使用 GNU libc6的Linux操作系统准备的;他们无法在安卓或者其他操作系统上默认运行.

新编译版本还在试验当中,请 报告使用中遇到的任何问题. 更多信息

总结

欲了解比特币核心0.13.0版本的所有变更详情,请 阅读版本发布说明. 如欲下载,请访问 下载页面 或者 文件目录.

随着比特核心 0.13.0 版本的发布,我们开始了为期六个月的下一个比特币核心版本(预计为 0.14.0)的开发。在社区的参与下,我们还会选择为隔离见证使用BIP9参数并将发布一个完全支持隔离见证的次版本(预计为 0.13.1).

如果您对为比特币核心做出贡献感兴趣,请查看我们的 贡献页面 和这篇文章 如何为比特币核心贡献代码 . 如果您不知道如何开始或还有其他疑问,请登陆我们的 IRC 聊天室,我们将为您提供最好的帮助.

## 哈希验证

这些是所发布文件的SHA-256哈希值:

f94123e37530f9de25988ff93e5568a93aa5146f689e63fb0ec1f962cf0bbfcd  bitcoin-0.13.0-aarch64-linux-gnu.tar.gz
7c657ec6f6a5dbb93b9394da510d5dff8dd461df8b80a9410f994bc53c876303  bitcoin-0.13.0-arm-linux-gnueabihf.tar.gz
d6da2801dd9d92183beea16d0f57edcea85fc749cdc2abec543096c8635ad244  bitcoin-0.13.0-i686-pc-linux-gnu.tar.gz
2f67ac67b935368e06f2f3b83f0173be641eef799e45d0a267efc0b9802ca8d2  bitcoin-0.13.0-osx64.tar.gz
e7fed095f1fb833d167697c19527d735e43ab2688564887b80b76c3c349f85b0  bitcoin-0.13.0-osx.dmg
0c7d7049689bb17f4256f1e5ec20777f42acef61814d434b38e6c17091161cda  bitcoin-0.13.0.tar.gz
213e6626ad1f7a0c7a0ae2216edd9c8f7b9617c84287c17c15290feca0b8f13b  bitcoin-0.13.0-win32-setup.exe
5c5bd6d31e4f764e33f2f3034e97e34789c3066a62319ae8d6a6011251187f7c  bitcoin-0.13.0-win32.zip
c94f351fd5266e07d2132d45dd831d87d0e7fdb673d5a0ba48638e2f9f8339fc  bitcoin-0.13.0-win64-setup.exe
54606c9a4fd32b826ceab4da9335d7a34a380859fa9495bf35a9e9c0dd9b6298  bitcoin-0.13.0-win64.zip
bcc1e42d61f88621301bbb00512376287f9df4568255f8b98bc10547dced96c8  bitcoin-0.13.0-x86_64-linux-gnu.tar.gz