概述

路线图中包含哪些具体技术,我们何时可以期待它们?

新技术将在准备好并经过测试后部署。但是,我们认为以下时间表是 路线图 中描述的具体改进的合理时间表。

2015 年 12 月   部署隔离见证测试网 delivered
2016 年 2 月 0.12.0 libsecp256k1 验证 delivered
2016 年 2 月   隔离见证功能完整并准备进行一般审查 delivered
2016 年 3 月 0.12.1 部署 OP_CHECKSEQUENCEVERIFY(BIP 68112)+ BIP113 作为第一个 BIP9 版本位软分叉 delivered
    隔离见证拉取请求 delivered
2016 年 10 月 0.13.1 部署隔离见证(包括区块大小增加) delivered
2017   弱块和 IBLT、闪电网络或两者  
  • 隔离见证测试网:一个独立的测试网(不是常规测试网的一部分),它为比特币核心贡献者提供了测试隔离见证的机会,并为钱包作者提供了开始使用它的机会。

  • Libsecp256k1 验证:在验证期间,x86_64 硬件上的速度提升 500% 至 700%,帮助新的完整节点加入网络,并减轻现有节点的负担。

  • OP_CHECKSEQUENCEVERIFY通过允许用户根据需要保持通道开启,双向 支付通道效率 提高 25,000%。

  • 版本位将能够同时部署的软分叉的最大数量从 1 增加到 29,允许更快速和更去中心化的未来网络升级。

  • 隔离见证直接容量升级 175% 至 400%,通过合并通道开启和关闭操作,双向通道效率额外提高 66%,结束影响智能合约部署的第三方可变性,欺诈证明允许轻量级客户端更好地参与经济执行,以及更容易升级比特币脚本语言,以便可以设计出新的、更强大的无信任合约。

  • IBLT 和弱块:减少 90% 或更多用于中继由希望快速传播其区块的矿工创建的区块的关键带宽,并以 少量总带宽增加 为代价,将 比特币中继网络 的许多优势带给所有完整节点。此改进是通过将完整节点的带宽使用分散到时间来实现的,这意味着 IBLT 和弱块可以允许将来更安全地提高最大区块大小。

隔离见证软分叉相当于 4 MB 区块大小增加、2 MB 增加、1.75 MB 增加,还是其他?我总是听到不同的数字。

对于软分叉隔离见证 (segwit) 的 当前提案,用新的区块成本限制替换了区块大小限制,将每个字节的见证数据计为 1 个成本单位,将 UTXO 交易数据计为 4 个单位;因此,区块的最大大小变为略小于 4 MB。

但是,预计区块不会完全由见证数据组成,因此大小接近 4 MB 的区块不太可能出现。

根据 Anthony Towns 进行的一些 计算,一个充满标准单签名 P2PKH 交易的区块大约为 1.6 MB,一个充满 2-of-2 多签名交易的区块大约为 2.0 MB。更可能的是,未来的扩展改进(例如闪电网络)可能会略微改善比率,使得充满的区块变得大于 2 MB。

隔离见证听起来很复杂;生态系统是否已准备好部署它?

有些想法很容易解释,但很难执行。其他想法很容易执行,但很难解释。隔离见证 (segwit) 似乎属于后者。

Segwit 可以逐步部署,不会破坏兼容性,因此不需要对生态系统进行任何重大准备。希望立即获得 Segwit 实践经验的开发人员已开始在 2015 年 12 月部署的 Segwit 测试网上测试他们的软件。

最初,只有希望支持它的矿工需要升级才能激活它并在主网上执行它。现有的应用程序只需要在希望利用新功能和额外区块空间的情况下更改。

隔离见证交易将需要更低的费用,将提供更大的性能优化,并且可以支持多阶段智能合约和协议,例如双向支付通道,这些通道可以在不向区块链写入额外数据的情况下扩展。强烈建议钱包升级,但可以继续在没有修改的情况下运行,因为部署不会破坏向后兼容性。

隔离见证听起来仍然很复杂。为什么不直接提高最大区块大小?

比特币核心中有一行 代码 说最大区块大小为 1,000,000 字节(1 MB)。最简单的代码修改将是硬分叉,将该行更新为例如 2,000,000 字节(2 MB)。

但是,硬分叉远非简单。

  • 我们没有经验:矿工、商户、开发人员和用户从未部署过非紧急硬分叉,因此安全部署它们的技巧尚未经过测试。

    这与软分叉不同,软分叉的部署最初由中本聪管理,我们从 BIP16 部署中的复杂性中获得了经验,我们在 BIP34 部署中完善了我们的技巧,并且我们在 BIP 6665 中获得了足够的经验,以便将来使用 BIP9 版本位管理多个软分叉。

  • 需要升级:硬分叉要求所有完整节点升级,否则所有使用该节点的人可能会损失资金。这包括节点运营商(如果他们使用它来保护他们的钱包),以及从节点获取数据的轻量级客户端。

  • 需要其他更改:即使是增加最大区块大小这样的一行更改也会对代码的其他部分产生影响,其中一些影响是不希望的。例如,现在可以构建一个占用近 1 MB 空间并且需要 30 秒或更长时间才能在现代计算机上验证的交易(包含此类交易的区块已被开采)。在 2 MB 区块中,可以构建一个可能需要超过 10 分钟才能验证的 2 MB 交易,这会打开危险的拒绝服务攻击向量。需要更改其他代码行才能防止这些问题。

尽管存在这些相当大的复杂性,但只要采取足够的预防措施,这些复杂性都不会对硬分叉致命,并且我们确实期望将来进行硬分叉。但有了隔离见证 (segwit),我们有一个软分叉,类似于我们已经执行并获得了部署经验的其他软分叉,它除了允许更多交易添加到区块链之外,还为我们提供了许多好处。

Segwit 确实需要在更高级别的软件堆栈中进行比简单地增加区块大小更多的更改,但如果我们真的想看到比特币扩展,那么无论如何都需要进行更侵入性的更改,Segwit 将会温和地鼓励人们立即升级到更可扩展的模型,而不会强迫他们这样做。

开发人员、矿工和社区已经积累了部署软分叉的丰富经验,我们相信 Segwit 的部署速度至少与增加最大区块大小的硬分叉一样快,甚至可能更安全。

隔离见证实施之前或作为其中一部分,是否会进行硬分叉?

没有。这不是 路线图 的一部分。

如果最终会进行硬分叉,为什么现在不进行?

我们目前拥有通过广泛共识的软分叉来提高系统容量的能力,而不会像 前面问题 中所述的硬分叉那样出现任何复杂情况,因此期望最终会进行硬分叉并不足以成为现在尝试进行硬分叉的理由。

除了为我们提供额外的交易容量外,路线图中提出的改进(结合其他技术,例如双向支付通道)让用户能够减少他们平均使用的区块链空间量——在不增加完整节点带宽使用量的情况下,有效地提高了比特币系统的容量。

例如,

  • BIP68BIP112 允许双向支付通道无限期地保持开启,我们预计这将大大减少需要提交到区块链的支付通道交易数量。

  • 隔离见证允许将支付通道关闭交易与支付通道开启交易合并,将用于更改通道的区块链空间减少约 66%。

  • 隔离见证允许软分叉以可以减少交易平均大小的方式更改比特币脚本语言,例如使用公钥从签名恢复或 Schnorr 组合签名。

  • 隔离见证允许创建紧凑的欺诈证明,这些证明可能会将简化支付验证 (SPV) 轻量级客户端的安全性提高到接近完整节点的水平,这可能会使网络能够在比目前部署的技术下更少的完整节点情况下正常运行。

这些技术的实际效果尚不清楚,但现在使用具有广泛共识的软分叉进行扩展使我们能够获得即时收益,测试和衡量中期可能性,并使用这些数据制定长期计划。

隔离见证交易如何适用于钱包?

当前支持 P2SH 的钱包可以分两阶段迁移到完整的隔离见证

  • 阶段 1:脚本被哈希两次,第一次哈希到 256 位,然后哈希到 160 位。160 位哈希将与现有的 P2SH 地址兼容,因此升级后的钱包将能够向现有的钱包发送和接收比特币。

  • 阶段 2:脚本被哈希一次,哈希到 256 位。此格式将与现有钱包不兼容,但将允许更有效地使用区块空间,并且由于更高的抗冲突性,将提供更好的安全性。

如果没有人被迫升级,为什么有人会费心升级?我听说 P2SH 几乎花了 2 年才广泛部署。

隔离见证 (segwit) 交易的见证部分的每个字节仅计为交易大小的 0.25 个字节。由于交易费用是根据交易的大小计算的,因此这实际上是对交易该部分费用的 75% 折扣——但仅适用于使用 Segwit 的人。

David Harding 提供了一张 预计节省 在不同费用/交易级别时的表格。也就是说,如果一个典型的 250 字节交易的费用为 0.01 美元,使用 segwit 在花费 P2PK-in-P2SH 交易输出时将节省约 0.003 美元。

交易 节省的字节 0.01 美元/250B 0.05 美元/250B 0.25 美元/250B 1.00 美元/250B
P2PK-in-P2SH 79/107 $0.003 $0.015 $0.079 $0.316
1-of-1 P2SH 多重签名 83/112 $0.003 $0.016 $0.083 $0.332
2-of-2 P2SH 多重签名 163/219 $0.006 $0.032 $0.163 $0.652
2-of-3 P2SH 多重签名 189/254 $0.007 $0.037 $0.189 $0.756

(我们预计费用不会达到本表中最高水平;它们仅供参考。)

每天以固定费率(例如免费或每笔支出 1%)发送大量交易的网络钱包和交易所预计将成为早期采用者——即使表格中显示的每笔支出节省的金额很小,如果一天重复数百或数千次,也会累积成可观的金额。

我听说你们要打破零确认交易。扩展路线图中的哪个技术在做这件事?

没有。默认情况下,当前版本的 Bitcoin Core 不会用花费相同输入的另一个交易替换未确认的交易。有些人认为这意味着他们看到的第一个花费特定输入的交易是安全的,但这并不正确。(如果是真的,我们就不需要区块链。)

当前的默认策略确实意味着想要更新未确认交易的人无法做到这一点。比特币的原始版本提供了一种方法让人们表明他们希望能够更新他们的交易,但中本聪不得不在 2010 年禁用它以防止拒绝服务 (DoS) 攻击。

最近的 Bitcoin Core 开发人员意识到他们可以通过要求更新的交易支付额外费用来防止 DoS 攻击,并且他们重新启用了中本聪用来指示何时可以替换交易的机制。此功能计划用于 Bitcoin Core 0.12.0(预计在 2016 年 1 月/2 月),但与中本聪的原始功能一样,它是选择加入的,因此想要能够替换交易的人必须使用支持该功能的钱包。

目前没有钱包提供此功能,但将来提供此功能的钱包可能会将多个交易组合在一起,以减少使用的区块链空间量,并增加他们在确认时间较长的交易上支付的费用,从而有助于防止交易“卡住”(一个已知的可用性问题)。

弱块和 IBLT 在路线图时间表中只说“2016”。这意味着你们不知道它们何时可用吗?

弱块和 IBLT 是两种独立的技术,目前仍在 积极研究 以选择合适的参数,但研究它们的开发人员数量有限,因此很难猜测它们何时会部署。

弱块和 IBLT 都可以作为网络级增强功能进行部署(不需要软分叉或硬分叉),这意味着从测试完成到所有升级节点都可用它们的好处之间可能只有很短的时间。我们希望这会在 2016 年内发生。

部署后,弱块和 IBLT 都可能受益于一个简单的非争议性软分叉(规范交易排序),这应该很容易使用 BIP9 版本位系统进行部署,该系统在本文档的其他地方有描述。

“为什么矿工会采用 SegWit 格式,因为它没有为他们提供任何带宽、存储或处理时间的节省?”

大多数 之前的软分叉 都没有为矿工提供这些好处。例如,

BIP16 (P2SH) 新的交易类型
BIP30 (重复 txid) 需要检查重复 txid
BIP34 (coinbase 中的高度) 将矿工 coinbase 空间减少了 4 个字节
BIP65 (OP_CLTV) 新的操作码

在 2015 年 7 月激活的 BIP66 (严格 DER) 软分叉将很快通过使切换到 libsecp256k1 进行验证成为可能来提供减少的处理时间,如本文档的其他地方所述。减少的验证时间使其在软分叉中很不寻常,因为它为矿工提供了直接的好处。

隔离见证 (segwit) 所做的是为任何使用它创建交易的人提供一些主要好处

对第三方可变性的永久性修复,允许多阶段智能合约蓬勃发展。适度的费用降低。对 Bitcoin Script 的轻松未来升级,使钱包更容易获得新功能。

通过之前的软分叉,以及通过诸如香港扩容比特币大会的 矿工论坛 等对话,矿工反复表明,即使他们没有获得任何直接利益,他们也希望比特币成为最实用的系统。segwit 和路线图中的其他改进提供了显著的可用性增强。

此外,segwit 使矿工能够在他们的区块中放入更多交易,这可能使他们能够增加每区块收入。

我怎样才能帮忙?

首先阅读 Bitcoin.org 上的 Bitcoin Core 贡献者 页面。特别是,代码审查 是部署软分叉的关键部分。

要获得有关如何提供帮助的具体建议,请加入 #bitcoin-dev IRC 频道。