比特币治理:什么是BIP(比特币改进提案)以及它们如何运作?

我们拒绝:国王,总统和投票。我们相信:粗略的共识和运行代码。 我们拒绝:国王,总统和投票。我们相信:粗略的共识和运行代码。——David Clark以上引用David Clark的话正如摘取自那些比特币自由战士的手册一般。对那些集中管理机构和决策机构的不信任,被内置进了比特币协议中。正如中本聪写给密码学邮件列表(The Cryptography Mailing List)中提到的,“各国政府擅长切断像Napster这样的中央控制网络的智能接口,但像Gnutella和Tor这样的纯粹P2P网络似乎持有自己专属的领地”。但实际上Clark完全没有在谈论比特币:这是与比特币白皮书问世相比还早16年的时候,他在互联网工程任务组(IETF)召开的会议上发表的讲话,该组织致力于开发和维护在开源互联网上建立的标准。比特币是去中心化的和开源的,这意味着没有集中的权限来决定协议升级,以及任何人都可以自由地使用、修正和变更代码。这并不意味着比特币是无政府主义式治理的。相反,比特币遵循开源软件传统的协作治理模式,比特币用于更新其软件的过程,大量借鉴了部分阿帕网(ARPANET)在1969年创建的请求评议(Request for Comments)格式。比特币既是一种技术也是一种货币。虽然比特币交易是不可篡改的并且永久保留在区块链上,但其基础协议正在被不断改进和升级。仅仅因为没有一个控制这种发展的中心机构,并不意味着基础协议也年复一年地保持不变。通过比特币改进提案(BIPs)提出并执行对比特币协议的升级。 BIP为贡献者提供了标准化流程,以便为协议提出新想法、测试这些想法以及对其进行同行评审。这种制衡系统旨在允许对协议进行持续创新,同时确保通过共识和协作实现改进。在本文中,我们将分解用于升级比特币协议的BIP流程,并展示协议的治理是如何运作的。对BIP的需求比特币代码最初完全是由中本聪编写的,用于验证像BTC这样的分布式点对点货币实际上是否是可行的。令许多人惊讶的是,BTC发挥了应有的作用。但这意味着在比特币的早期阶段,是没有协作和开发协议的标准。中本聪自己完成了大部分原始代码的撰写,以及之后的更新和技术改进。他征求了密码学邮件列表的反馈,这是一个密码学家的互联网电子邮件列表,并且他最终创建了BitcoinTalk论坛——一个致力于比特币的网络论坛。然而,最终,协议的控制权掌握在中本聪手中。当有人向中本聪报告了一个比特币代码库中的漏洞使任何人都可以花费其他人的比特币时,中本聪推动了比特币协议的更新,并告诉网络上的每个人升级他们的客户端,而没有解释原因。为了生存,比特币需要开发流程来减少对某一单独个体的依赖,转而依靠更大的开发者社区。中本聪从比特币项目的退出实现了这一点。在早年,中本聪已经获得了Gavin Andresen的帮助,Gavin Andresen是一位积极参与社区活动的开发人员。当中本聪宣布他将于2011年离开该项目时,他将手中的缰绳转交给了Andresen。Andresen不想完全靠自己对代码承担全部责任,因此他征求了其他四位开发人员的帮助:Pieter Wuille、Wladimir van der Laan、Gregory Maxwell和Jeff Garzik。这些开发人员被称为“比特币核心开发人员”,因为他们负责管理着主要的比特币核心客户端执行的开发。从历史上看,比特币核心开发人员一直负责比特币协议的大部分开发工作。他们维护比特币的代码库,是唯一能够将实时代码推送到比特币核心客户端的人。虽然这些年来有数百人为比特币贡献了代码,但只有十几人曾经拥有对代码库的访问权限。虽然这导致人们认为比特币核心开发人员对协议的开发具有专制般的影响力,但事实并非如此。核心开发人员参与的是粗略共识的过程,以确定最终包含在决策内的内容。维护者——拥有访问比特币核心Github代码仓库的开发人员——将考虑是否有补丁:符合项目的一般原则符合最低标准符合贡献者的普遍共识。比特币核心的贡献者Jameson Lopp指出:虽然维护者组织在技术上有可能发动劫持GitHub代码仓库、删改存在异议的开发人员甚至维持“比特币核心”品牌名称的“政变”,但其结果将会导致比特币核心将不再是开发焦点。不同意维护者行为的开发人员只需将代码分叉并将其工作转移到不同的代码仓库,而比特币核心维护者对其没有管理员权限。尽管如此,随着比特币网络多年来的发展,其信徒们的争论一直围绕在扩展、技术改进以及更多的进展,加深了比特币核心对协议实施了绝对控制的看法。比特币核心开发者对开发的影响之深,甚至导致比特币现金社区将原始的比特币区块链称之为“比特币核心”(Bitcoin Core)。比特币改进提案流程的建立是为了围绕比特币的开发过程展开讨论,并让更多社区成员更易理解。它旨在使核心开发者已经使用的许多流程正式化。BIP的剖析比特币改进提案(BIP)是一项提议改进比特币协议的标准,由Amir Taaki于2011年在BIP 0001中提出,并由Luke Dash Jr.在BIP 0002中对其进行了扩展。BIP流程严重依赖于Python改进提案(Python Enhancement Proposal ,PEP 0001),甚至直接复制了其中的一些文本。它还提到了一个名为“On Consensus and Humming in the IETF”的文件,这是一套来自互联网工程任务组的开源协作原则。BIP流程的目标是允许任何人对比特币协议提出改进的想法,但在实施任何可能威胁到网络稳定性的代码之前,还要彻底审查这些想法的安全性和可行性。该流程旨在让社区围绕提出的想法建立粗略的共识。 P. Resnick将粗略共识定义如下:粗略的共识已经在很多方面被定义过了:一个简单的版本是,粗略共识意味着强烈提出的反对意见必须经历辩论,直到大多数人都认为这些反对意见是错误的。赋予社区能够提出想法、同行评审想法以及围绕它们达成共识的能力,对于像比特币这样没有领导者的分布式协议的发展至关重要。自BIP流程建立以来,已经有191个BIP Github代码仓库贡献者。有三种不同类型的BIP:标准追踪BIP提议了对比特币进行更改,包括更改网络协议、区块或交易有效性规则,或影响使用比特币的应用程序互操作性的任何更改。信息BIP描述了协议中的设计问题或向社区提供信息。他们不建议为协议执行新的功能。流程BIP:提出围绕开发比特币的流程,或建议对流程进行更改。它们不直接影响比特币的代码库,但它们可能包括新程序、开发决策的变化或者比特币开发中使用工具的变化。每个BIP必须经过几个不同的阶段才能实施。这是BIP 001中描述该工作流程的图像:要实施到话,BIP必须从草案阶段,到提议阶段,再到最终阶段。草案(Draft):BIP作为草案提交给比特币开发邮件列表和BIP Github代码仓库。提议(Proposed):BIP包括了一个含有部署BIP计划的工作执行方案。最终( Final):BIP符合现实世界的采用标准。且必须客观地验证这一点。在此过程中,BIP可以被社区拒绝、撤回或替换:延期:BIP的提交人可以在没有取得任何进展的情况下将其状态更改为延期。撤回:BIP的提交人也可以选择完全撤回BIP。被拒绝:如果三年内没有取得任何进展,任何人都可以请求将BIP移至被拒绝状态。替换:如果先前的最终BIP变得无关紧要,则将其标记为已替换。例如,这种情况可能发生在,当一个在软分叉中实施的BIP,而在三个月之后却被硬分叉倾覆的时候。下面,我们将详细介绍此过程的两个主要阶段。草案草案阶段的目标是将关于比特币的新想法格式化为标准化的BIP,并尽快开始征求社区的反馈意见。BIP的提交人负责审查社区的想法,以评估该想法的可行性,并围绕它建立社区共识。他们应该与比特币开发者邮件列表以及Bitcoin Talk技术论坛分享想法。这有助于确定该想法是否原创、可行并保证了一个独立的BIP。提交人创建了一份BIP草案,并将其提交给比特币开发邮件列表进行讨论。这允许作者以BIP的标准格式呈现该想法并处理来自社区的其他任何问题。在讨论之后,提交人将提议作为拉取请求提交给BIP github代码仓库。 BIP代码仓库的编辑器为提案分配一个数字,根据类型对其进行标记,然后将其添加到代码存储库中。 BIP编辑只有在不符合特定标准的情况下才能拒绝BIP——例如,如果提出的更新情况不清晰,或者在技术上不合理。为了推动草案进入提议,当提交人处理完社区中存在的任何异议时,BIP会认为草案已经完成并且其中包含了提议的工作执行方案。草案阶段旨在允许提交者征求社区的反馈意见并修改BIP以处理在此阶段提出的任何异议。一旦完成草案阶段并提交BIP后,它将被移至提议阶段。提议当BIP的状态更改为提议时,它现在已准备好从讨论状态转移到实际比特币协议中的部署。为此,每个BIP都需要包含具体标准,概述如何客观地建立起现实世界的采用。通常,这意味着需要通过软分叉或硬分叉将BIP执行到代码中。软分叉引入了向后兼容的协议更改,这意味着运行最新版本软件的节点仍然与运行旧版本的节点兼容。与软分叉不同的是,硬叉引入了不向后兼容的协议更改。这意味着如果大量节点不升级包含新软件的客户端,则链会被一分为二,就像比特币现金(Bitcoin Cash)硬分叉一样。因此,硬分叉是比BIP实施风险更高的方式。BIP 002为确认如何通过软分叉或硬分叉最终确定一个BIP,提供了一些指导原则:一个软分叉BIP需要通过“明显处于多数的矿工”来激活。建立此“多数”的建议指南是说,95%的节点通过升级包含BIP的新软件来批准它。软分叉所激活的BIP必须包含一个BIP将在网络上的活跃时间。另一方面,硬分叉BIP需要整个社区采用。网络上的节点需要升级到包含了BIP的客户端软件。 BIP 002指出硬叉BIP“需要被整个比特币经济中采用”,包括比特币的持有者,以及那些用比特币提供服务的人。它承认这可能难以实现。鉴于难以满足硬分叉BIP的要求,实际上没有一个BIP是通过硬分叉实现的。图表显示了BIP 91的激活,其中获得了超过93%的节点信号支持。(图片来源: Bitcoin Magazine.)只有当BIP成功地通过硬分叉或软分叉发起执行,并且在比特币协议中被实现时,才会被认为是达到了“最终”阶段。在分布式网络上达成共识比特币运行在一个由节点、用户、开发者和矿工们提供支持的分布式网络上。它是在没有任何能够控制协议方向的中心化机构的干预之下运行的。虽然在比特币上进行的交易是永久性的和不可篡改的,但为协议提供支持的底层技术正在持续精进。虽然协议通过工作量证明(PoW)挖矿进行最终交易确认,达成了关于交易的共识,但它也必须就如何随着时间的推移改进和更新协议达成不同类型的社会共识。 BIP流程是开发人员如何以分布式和开源的方式进行协作以及对比特币作出贡献的关键。

我们拒绝:国王,总统和投票。我们相信:粗略的共识和运行代码。 

我们拒绝:国王,总统和投票。

我们相信:粗略的共识和运行代码。

——David Clark

以上引用David Clark的话正如摘取自那些比特币自由战士的手册一般。对那些集中管理机构和决策机构的不信任,被内置进了比特币协议中。正如中本聪写给密码学邮件列表(The Cryptography Mailing List)中提到的,“各国政府擅长切断像Napster这样的中央控制网络的智能接口,但像Gnutella和Tor这样的纯粹P2P网络似乎持有自己专属的领地”。

但实际上Clark完全没有在谈论比特币:这是与比特币白皮书问世相比还早16年的时候,他在互联网工程任务组(IETF)召开的会议上发表的讲话,该组织致力于开发和维护在开源互联网上建立的标准。

比特币是去中心化的和开源的,这意味着没有集中的权限来决定协议升级,以及任何人都可以自由地使用、修正和变更代码。这并不意味着比特币是无政府主义式治理的。相反,比特币遵循开源软件传统的协作治理模式,比特币用于更新其软件的过程,大量借鉴了部分阿帕网(ARPANET)在1969年创建的请求评议(Request for Comments)格式。

比特币既是一种技术也是一种货币。虽然比特币交易是不可篡改的并且永久保留在区块链上,但其基础协议正在被不断改进和升级。仅仅因为没有一个控制这种发展的中心机构,并不意味着基础协议也年复一年地保持不变。

通过比特币改进提案(BIPs)提出并执行对比特币协议的升级。 BIP为贡献者提供了标准化流程,以便为协议提出新想法、测试这些想法以及对其进行同行评审。这种制衡系统旨在允许对协议进行持续创新,同时确保通过共识和协作实现改进。

在本文中,我们将分解用于升级比特币协议的BIP流程,并展示协议的治理是如何运作的。

对BIP的需求

比特币代码最初完全是由中本聪编写的,用于验证像BTC这样的分布式点对点货币实际上是否是可行的。令许多人惊讶的是,BTC发挥了应有的作用。

但这意味着在比特币的早期阶段,是没有协作和开发协议的标准。中本聪自己完成了大部分原始代码的撰写,以及之后的更新和技术改进。他征求了密码学邮件列表的反馈,这是一个密码学家的互联网电子邮件列表,并且他最终创建了BitcoinTalk论坛——一个致力于比特币的网络论坛。

比特币治理:什么是BIP(比特币改进提案)以及它们如何运作?/

然而,最终,协议的控制权掌握在中本聪手中。当有人向中本聪报告了一个比特币代码库中的漏洞使任何人都可以花费其他人的比特币时,中本聪推动了比特币协议的更新,并告诉网络上的每个人升级他们的客户端,而没有解释原因。

为了生存,比特币需要开发流程来减少对某一单独个体的依赖,转而依靠更大的开发者社区。中本聪从比特币项目的退出实现了这一点。

在早年,中本聪已经获得了Gavin Andresen的帮助,Gavin Andresen是一位积极参与社区活动的开发人员。当中本聪宣布他将于2011年离开该项目时,他将手中的缰绳转交给了Andresen。Andresen不想完全靠自己对代码承担全部责任,因此他征求了其他四位开发人员的帮助:Pieter Wuille、Wladimir van der Laan、Gregory Maxwell和Jeff Garzik。这些开发人员被称为“比特币核心开发人员”,因为他们负责管理着主要的比特币核心客户端执行的开发。

从历史上看,比特币核心开发人员一直负责比特币协议的大部分开发工作。他们维护比特币的代码库,是唯一能够将实时代码推送到比特币核心客户端的人。虽然这些年来有数百人为比特币贡献了代码,但只有十几人曾经拥有对代码库的访问权限。

虽然这导致人们认为比特币核心开发人员对协议的开发具有专制般的影响力,但事实并非如此。核心开发人员参与的是粗略共识的过程,以确定最终包含在决策内的内容。

维护者——拥有访问比特币核心Github代码仓库的开发人员——将考虑是否有补丁:

  • 符合项目的一般原则

  • 符合最低标准

  • 符合贡献者的普遍共识。

比特币核心的贡献者Jameson Lopp指出:

虽然维护者组织在技术上有可能发动劫持GitHub代码仓库、删改存在异议的开发人员甚至维持“比特币核心”品牌名称的“政变”,但其结果将会导致比特币核心将不再是开发焦点。不同意维护者行为的开发人员只需将代码分叉并将其工作转移到不同的代码仓库,而比特币核心维护者对其没有管理员权限。

尽管如此,随着比特币网络多年来的发展,其信徒们的争论一直围绕在扩展、技术改进以及更多的进展,加深了比特币核心对协议实施了绝对控制的看法。比特币核心开发者对开发的影响之深,甚至导致比特币现金社区将原始的比特币区块链称之为“比特币核心”(Bitcoin Core)。

比特币改进提案流程的建立是为了围绕比特币的开发过程展开讨论,并让更多社区成员更易理解。它旨在使核心开发者已经使用的许多流程正式化。

BIP的剖析

比特币改进提案(BIP)是一项提议改进比特币协议的标准,由Amir Taaki于2011年在BIP 0001中提出,并由Luke Dash Jr.在BIP 0002中对其进行了扩展。

BIP流程严重依赖于Python改进提案(Python Enhancement Proposal ,PEP 0001),甚至直接复制了其中的一些文本。它还提到了一个名为“On Consensus and Humming in the IETF”的文件,这是一套来自互联网工程任务组的开源协作原则。

BIP流程的目标是允许任何人对比特币协议提出改进的想法,但在实施任何可能威胁到网络稳定性的代码之前,还要彻底审查这些想法的安全性和可行性。

该流程旨在让社区围绕提出的想法建立粗略的共识。 P. Resnick将粗略共识定义如下:

粗略的共识已经在很多方面被定义过了:一个简单的版本是,粗略共识意味着强烈提出的反对意见必须经历辩论,直到大多数人都认为这些反对意见是错误的。

赋予社区能够提出想法、同行评审想法以及围绕它们达成共识的能力,对于像比特币这样没有领导者的分布式协议的发展至关重要。自BIP流程建立以来,已经有191个BIP Github代码仓库贡献者。

有三种不同类型的BIP:

  • 标准追踪BIP提议了对比特币进行更改,包括更改网络协议、区块或交易有效性规则,或影响使用比特币的应用程序互操作性的任何更改。

  • 信息BIP描述了协议中的设计问题或向社区提供信息。他们不建议为协议执行新的功能。

  • 流程BIP:提出围绕开发比特币的流程,或建议对流程进行更改。它们不直接影响比特币的代码库,但它们可能包括新程序、开发决策的变化或者比特币开发中使用工具的变化。

每个BIP必须经过几个不同的阶段才能实施。这是BIP 001中描述该工作流程的图像:

比特币治理:什么是BIP(比特币改进提案)以及它们如何运作?/

要实施到话,BIP必须从草案阶段,到提议阶段,再到最终阶段。

  • 草案(Draft):BIP作为草案提交给比特币开发邮件列表和BIP Github代码仓库。

  • 提议(Proposed):BIP包括了一个含有部署BIP计划的工作执行方案。

  • 最终( Final):BIP符合现实世界的采用标准。且必须客观地验证这一点。

在此过程中,BIP可以被社区拒绝、撤回或替换:

  • 延期:BIP的提交人可以在没有取得任何进展的情况下将其状态更改为延期。

  • 撤回:BIP的提交人也可以选择完全撤回BIP。

  • 被拒绝:如果三年内没有取得任何进展,任何人都可以请求将BIP移至被拒绝状态。

  • 替换:如果先前的最终BIP变得无关紧要,则将其标记为已替换。例如,这种情况可能发生在,当一个在软分叉中实施的BIP,而在三个月之后却被硬分叉倾覆的时候。

下面,我们将详细介绍此过程的两个主要阶段。

草案

草案阶段的目标是将关于比特币的新想法格式化为标准化的BIP,并尽快开始征求社区的反馈意见。

  1. BIP的提交人负责审查社区的想法,以评估该想法的可行性,并围绕它建立社区共识。他们应该与比特币开发者邮件列表以及Bitcoin Talk技术论坛分享想法。这有助于确定该想法是否原创、可行并保证了一个独立的BIP。

  2. 提交人创建了一份BIP草案,并将其提交给比特币开发邮件列表进行讨论。这允许作者以BIP的标准格式呈现该想法并处理来自社区的其他任何问题。

  3. 在讨论之后,提交人将提议作为拉取请求提交给BIP github代码仓库。 BIP代码仓库的编辑器为提案分配一个数字,根据类型对其进行标记,然后将其添加到代码存储库中。 BIP编辑只有在不符合特定标准的情况下才能拒绝BIP——例如,如果提出的更新情况不清晰,或者在技术上不合理。

  4. 为了推动草案进入提议,当提交人处理完社区中存在的任何异议时,BIP会认为草案已经完成并且其中包含了提议的工作执行方案。

草案阶段旨在允许提交者征求社区的反馈意见并修改BIP以处理在此阶段提出的任何异议。一旦完成草案阶段并提交BIP后,它将被移至提议阶段。

提议

当BIP的状态更改为提议时,它现在已准备好从讨论状态转移到实际比特币协议中的部署。为此,每个BIP都需要包含具体标准,概述如何客观地建立起现实世界的采用。

通常,这意味着需要通过软分叉或硬分叉将BIP执行到代码中。

软分叉引入了向后兼容的协议更改,这意味着运行最新版本软件的节点仍然与运行旧版本的节点兼容。

与软分叉不同的是,硬叉引入了不向后兼容的协议更改。这意味着如果大量节点不升级包含新软件的客户端,则链会被一分为二,就像比特币现金(Bitcoin Cash)硬分叉一样。因此,硬分叉是比BIP实施风险更高的方式。

BIP 002为确认如何通过软分叉或硬分叉最终确定一个BIP,提供了一些指导原则:

  • 一个软分叉BIP需要通过“明显处于多数的矿工”来激活。建立此“多数”的建议指南是说,95%的节点通过升级包含BIP的新软件来批准它。软分叉所激活的BIP必须包含一个BIP将在网络上的活跃时间。

  • 另一方面,硬分叉BIP需要整个社区采用。网络上的节点需要升级到包含了BIP的客户端软件。 BIP 002指出硬叉BIP“需要被整个比特币经济中采用”,包括比特币的持有者,以及那些用比特币提供服务的人。它承认这可能难以实现。

鉴于难以满足硬分叉BIP的要求,实际上没有一个BIP是通过硬分叉实现的。

比特币治理:什么是BIP(比特币改进提案)以及它们如何运作?/

图表显示了BIP 91的激活,其中获得了超过93%的节点信号支持。(图片来源: Bitcoin Magazine.)

只有当BIP成功地通过硬分叉或软分叉发起执行,并且在比特币协议中被实现时,才会被认为是达到了“最终”阶段。

在分布式网络上达成共识

比特币运行在一个由节点、用户、开发者和矿工们提供支持的分布式网络上。它是在没有任何能够控制协议方向的中心化机构的干预之下运行的。虽然在比特币上进行的交易是永久性的和不可篡改的,但为协议提供支持的底层技术正在持续精进。虽然协议通过工作量证明(PoW)挖矿进行最终交易确认,达成了关于交易的共识,但它也必须就如何随着时间的推移改进和更新协议达成不同类型的社会共识。 BIP流程是开发人员如何以分布式和开源的方式进行协作以及对比特币作出贡献的关键。

生成图片
8

发表评论

比特币治理:什么是BIP(比特币改进提案)以及它们如何运作?

星期五 2019-04-19 14:14:16

我们拒绝:国王,总统和投票。我们相信:粗略的共识和运行代码。 

我们拒绝:国王,总统和投票。

我们相信:粗略的共识和运行代码。

——David Clark

以上引用David Clark的话正如摘取自那些比特币自由战士的手册一般。对那些集中管理机构和决策机构的不信任,被内置进了比特币协议中。正如中本聪写给密码学邮件列表(The Cryptography Mailing List)中提到的,“各国政府擅长切断像Napster这样的中央控制网络的智能接口,但像Gnutella和Tor这样的纯粹P2P网络似乎持有自己专属的领地”。

但实际上Clark完全没有在谈论比特币:这是与比特币白皮书问世相比还早16年的时候,他在互联网工程任务组(IETF)召开的会议上发表的讲话,该组织致力于开发和维护在开源互联网上建立的标准。

比特币是去中心化的和开源的,这意味着没有集中的权限来决定协议升级,以及任何人都可以自由地使用、修正和变更代码。这并不意味着比特币是无政府主义式治理的。相反,比特币遵循开源软件传统的协作治理模式,比特币用于更新其软件的过程,大量借鉴了部分阿帕网(ARPANET)在1969年创建的请求评议(Request for Comments)格式。

比特币既是一种技术也是一种货币。虽然比特币交易是不可篡改的并且永久保留在区块链上,但其基础协议正在被不断改进和升级。仅仅因为没有一个控制这种发展的中心机构,并不意味着基础协议也年复一年地保持不变。

通过比特币改进提案(BIPs)提出并执行对比特币协议的升级。 BIP为贡献者提供了标准化流程,以便为协议提出新想法、测试这些想法以及对其进行同行评审。这种制衡系统旨在允许对协议进行持续创新,同时确保通过共识和协作实现改进。

在本文中,我们将分解用于升级比特币协议的BIP流程,并展示协议的治理是如何运作的。

对BIP的需求

比特币代码最初完全是由中本聪编写的,用于验证像BTC这样的分布式点对点货币实际上是否是可行的。令许多人惊讶的是,BTC发挥了应有的作用。

但这意味着在比特币的早期阶段,是没有协作和开发协议的标准。中本聪自己完成了大部分原始代码的撰写,以及之后的更新和技术改进。他征求了密码学邮件列表的反馈,这是一个密码学家的互联网电子邮件列表,并且他最终创建了BitcoinTalk论坛——一个致力于比特币的网络论坛。

比特币治理:什么是BIP(比特币改进提案)以及它们如何运作?/

然而,最终,协议的控制权掌握在中本聪手中。当有人向中本聪报告了一个比特币代码库中的漏洞使任何人都可以花费其他人的比特币时,中本聪推动了比特币协议的更新,并告诉网络上的每个人升级他们的客户端,而没有解释原因。

为了生存,比特币需要开发流程来减少对某一单独个体的依赖,转而依靠更大的开发者社区。中本聪从比特币项目的退出实现了这一点。

在早年,中本聪已经获得了Gavin Andresen的帮助,Gavin Andresen是一位积极参与社区活动的开发人员。当中本聪宣布他将于2011年离开该项目时,他将手中的缰绳转交给了Andresen。Andresen不想完全靠自己对代码承担全部责任,因此他征求了其他四位开发人员的帮助:Pieter Wuille、Wladimir van der Laan、Gregory Maxwell和Jeff Garzik。这些开发人员被称为“比特币核心开发人员”,因为他们负责管理着主要的比特币核心客户端执行的开发。

从历史上看,比特币核心开发人员一直负责比特币协议的大部分开发工作。他们维护比特币的代码库,是唯一能够将实时代码推送到比特币核心客户端的人。虽然这些年来有数百人为比特币贡献了代码,但只有十几人曾经拥有对代码库的访问权限。

虽然这导致人们认为比特币核心开发人员对协议的开发具有专制般的影响力,但事实并非如此。核心开发人员参与的是粗略共识的过程,以确定最终包含在决策内的内容。

维护者——拥有访问比特币核心Github代码仓库的开发人员——将考虑是否有补丁:

  • 符合项目的一般原则

  • 符合最低标准

  • 符合贡献者的普遍共识。

比特币核心的贡献者Jameson Lopp指出:

虽然维护者组织在技术上有可能发动劫持GitHub代码仓库、删改存在异议的开发人员甚至维持“比特币核心”品牌名称的“政变”,但其结果将会导致比特币核心将不再是开发焦点。不同意维护者行为的开发人员只需将代码分叉并将其工作转移到不同的代码仓库,而比特币核心维护者对其没有管理员权限。

尽管如此,随着比特币网络多年来的发展,其信徒们的争论一直围绕在扩展、技术改进以及更多的进展,加深了比特币核心对协议实施了绝对控制的看法。比特币核心开发者对开发的影响之深,甚至导致比特币现金社区将原始的比特币区块链称之为“比特币核心”(Bitcoin Core)。

比特币改进提案流程的建立是为了围绕比特币的开发过程展开讨论,并让更多社区成员更易理解。它旨在使核心开发者已经使用的许多流程正式化。

BIP的剖析

比特币改进提案(BIP)是一项提议改进比特币协议的标准,由Amir Taaki于2011年在BIP 0001中提出,并由Luke Dash Jr.在BIP 0002中对其进行了扩展。

BIP流程严重依赖于Python改进提案(Python Enhancement Proposal ,PEP 0001),甚至直接复制了其中的一些文本。它还提到了一个名为“On Consensus and Humming in the IETF”的文件,这是一套来自互联网工程任务组的开源协作原则。

BIP流程的目标是允许任何人对比特币协议提出改进的想法,但在实施任何可能威胁到网络稳定性的代码之前,还要彻底审查这些想法的安全性和可行性。

该流程旨在让社区围绕提出的想法建立粗略的共识。 P. Resnick将粗略共识定义如下:

粗略的共识已经在很多方面被定义过了:一个简单的版本是,粗略共识意味着强烈提出的反对意见必须经历辩论,直到大多数人都认为这些反对意见是错误的。

赋予社区能够提出想法、同行评审想法以及围绕它们达成共识的能力,对于像比特币这样没有领导者的分布式协议的发展至关重要。自BIP流程建立以来,已经有191个BIP Github代码仓库贡献者。

有三种不同类型的BIP:

  • 标准追踪BIP提议了对比特币进行更改,包括更改网络协议、区块或交易有效性规则,或影响使用比特币的应用程序互操作性的任何更改。

  • 信息BIP描述了协议中的设计问题或向社区提供信息。他们不建议为协议执行新的功能。

  • 流程BIP:提出围绕开发比特币的流程,或建议对流程进行更改。它们不直接影响比特币的代码库,但它们可能包括新程序、开发决策的变化或者比特币开发中使用工具的变化。

每个BIP必须经过几个不同的阶段才能实施。这是BIP 001中描述该工作流程的图像:

比特币治理:什么是BIP(比特币改进提案)以及它们如何运作?/

要实施到话,BIP必须从草案阶段,到提议阶段,再到最终阶段。

  • 草案(Draft):BIP作为草案提交给比特币开发邮件列表和BIP Github代码仓库。

  • 提议(Proposed):BIP包括了一个含有部署BIP计划的工作执行方案。

  • 最终( Final):BIP符合现实世界的采用标准。且必须客观地验证这一点。

在此过程中,BIP可以被社区拒绝、撤回或替换:

  • 延期:BIP的提交人可以在没有取得任何进展的情况下将其状态更改为延期。

  • 撤回:BIP的提交人也可以选择完全撤回BIP。

  • 被拒绝:如果三年内没有取得任何进展,任何人都可以请求将BIP移至被拒绝状态。

  • 替换:如果先前的最终BIP变得无关紧要,则将其标记为已替换。例如,这种情况可能发生在,当一个在软分叉中实施的BIP,而在三个月之后却被硬分叉倾覆的时候。

下面,我们将详细介绍此过程的两个主要阶段。

草案

草案阶段的目标是将关于比特币的新想法格式化为标准化的BIP,并尽快开始征求社区的反馈意见。

  1. BIP的提交人负责审查社区的想法,以评估该想法的可行性,并围绕它建立社区共识。他们应该与比特币开发者邮件列表以及Bitcoin Talk技术论坛分享想法。这有助于确定该想法是否原创、可行并保证了一个独立的BIP。

  2. 提交人创建了一份BIP草案,并将其提交给比特币开发邮件列表进行讨论。这允许作者以BIP的标准格式呈现该想法并处理来自社区的其他任何问题。

  3. 在讨论之后,提交人将提议作为拉取请求提交给BIP github代码仓库。 BIP代码仓库的编辑器为提案分配一个数字,根据类型对其进行标记,然后将其添加到代码存储库中。 BIP编辑只有在不符合特定标准的情况下才能拒绝BIP——例如,如果提出的更新情况不清晰,或者在技术上不合理。

  4. 为了推动草案进入提议,当提交人处理完社区中存在的任何异议时,BIP会认为草案已经完成并且其中包含了提议的工作执行方案。

草案阶段旨在允许提交者征求社区的反馈意见并修改BIP以处理在此阶段提出的任何异议。一旦完成草案阶段并提交BIP后,它将被移至提议阶段。

提议

当BIP的状态更改为提议时,它现在已准备好从讨论状态转移到实际比特币协议中的部署。为此,每个BIP都需要包含具体标准,概述如何客观地建立起现实世界的采用。

通常,这意味着需要通过软分叉或硬分叉将BIP执行到代码中。

软分叉引入了向后兼容的协议更改,这意味着运行最新版本软件的节点仍然与运行旧版本的节点兼容。

与软分叉不同的是,硬叉引入了不向后兼容的协议更改。这意味着如果大量节点不升级包含新软件的客户端,则链会被一分为二,就像比特币现金(Bitcoin Cash)硬分叉一样。因此,硬分叉是比BIP实施风险更高的方式。

BIP 002为确认如何通过软分叉或硬分叉最终确定一个BIP,提供了一些指导原则:

  • 一个软分叉BIP需要通过“明显处于多数的矿工”来激活。建立此“多数”的建议指南是说,95%的节点通过升级包含BIP的新软件来批准它。软分叉所激活的BIP必须包含一个BIP将在网络上的活跃时间。

  • 另一方面,硬分叉BIP需要整个社区采用。网络上的节点需要升级到包含了BIP的客户端软件。 BIP 002指出硬叉BIP“需要被整个比特币经济中采用”,包括比特币的持有者,以及那些用比特币提供服务的人。它承认这可能难以实现。

鉴于难以满足硬分叉BIP的要求,实际上没有一个BIP是通过硬分叉实现的。

比特币治理:什么是BIP(比特币改进提案)以及它们如何运作?/

图表显示了BIP 91的激活,其中获得了超过93%的节点信号支持。(图片来源: Bitcoin Magazine.)

只有当BIP成功地通过硬分叉或软分叉发起执行,并且在比特币协议中被实现时,才会被认为是达到了“最终”阶段。

在分布式网络上达成共识

比特币运行在一个由节点、用户、开发者和矿工们提供支持的分布式网络上。它是在没有任何能够控制协议方向的中心化机构的干预之下运行的。虽然在比特币上进行的交易是永久性的和不可篡改的,但为协议提供支持的底层技术正在持续精进。虽然协议通过工作量证明(PoW)挖矿进行最终交易确认,达成了关于交易的共识,但它也必须就如何随着时间的推移改进和更新协议达成不同类型的社会共识。 BIP流程是开发人员如何以分布式和开源的方式进行协作以及对比特币作出贡献的关键。