零点课堂 | 比特币改进提案的运作流程(1)
比特币是去中心化的和开源的,这意味着没有集中的权限来决定协议升级。因此,任何人都可以参与到其代码修改,变更的议程中。本文介绍了什么是 BIP (Bitcoin Improvement Proposals,比特币改进提案),以及详细展示 BIP 协议的治理是如何运作的?
为什么需要 BIP?
在比特币发展早期,并没有一个让社区成员共同讨论、提出有效建议并得到认可、实施的系统的存在。
比特币的维护与迭代更新落到了核心开发者的身上。中本聪在初始阶段为比特币写下了基础的框架,但系统可能出现的运行问题以及为了适应现实需求所要进行的升级却是无可避免。早期出现这些情况时,往往是中本聪自己进行处理,当中本聪退出后,维护与迭代更新的任务落到了当初的比特币核心开发者身上。
由于社区的扩展,社区讨论将会导致技术分歧。当时比特币核心开发者只是一个小团体,有要修改的地方就直接内部讨论并发布,但当社区发展壮大时,这种方式就容易引发技术分歧,有开发者认为比特币核心团队对比特币协议有过多的控制,这将会是导致比特币失败的最终原因。因此,提出了 BIP (比特币改进建议)。
BIP 的两个版本
2011 年 8 月 19 号 BIP0001 开始实施。BIP (Bitcoin Improvement Proposals,比特币改进提案),这个概念最先由 Amir Taaki 在 2011 年 8 月 19 号提出,这个提案也就成为了第一个 BIP。BIP0001 定义了 BIP 的基本流程。
2016 年 2 月 3 日 Luke Dashjr 提出 BIP0002。BIP0001 基本满足当时社区对于开发流程正式化的需求,但由于其中很多的细节没有描述详细,且有部分的规范已经过时,而 BIP0002 在此基础上进行迭代,最后得到实施并替代了 BIP0001 成为目前在使用的 BIP 规范。
提交 BIP 前应该做什么?
当你有了一个具体的针对比特币的新的想法后,确认你的想法适用于 BIP,一些小的更新或者漏洞修复,直接到特定的项目开发提交问题即可,并不足以成为一个 BIP。
首先,在各大相关论坛上公开验证想法,以节省时间。在编写 BIP 之前,先在适当的地方公开想法,可以是比特币邮箱列表(bitcoindev@lists.linuxfoundation.org)或 Bitocoindev IRC 或相关技术论坛,让大家提出意见。这样的好处在于可以节省自己的潜在时间,能在大量的工作之前发现自己的想法是否存在问题。
另外,需要询问的是这个想法是否是之前没有人提出过的。很多人都提出过很多关于比特币的想法,但最后都因为种种原因被否决了。所以你的想法可能之前就有人提过出类似的内容但没有成功被实现。如果存在这种情况,发掘出没有被实现的原因是什么,如果不能解决则不要花费太多时间在注定要被拒绝的事情上了。
同时,需要确保的是你的想法是适用于整个社区的。有些时候这个想法自己看起来不错,但是并不适用于比特币社区的大部分人,这种想法最终也是要被拒绝的。
BIP 的格式要求
当你在社区发表了这个想法并觉得有被接受的可能性时,你就可以着手撰写 BIP 草案了。但是,BIP 有严格的格式要求,不根据格式撰写会被直接退回。
一个合格的 BIP 草案需要包含以下内容:
- 序言:包 含 BIP 的基本数据的序言,需要按照特定格式写
- 摘要:对要解决的技术问题的简短的描述(约 200 个字)
- 版权:需要根据特定版权条款获得明确许可
- 动机:清楚地解释为什么现有的协议不足以解决本 BIP 要解决的问题
- 规范:技术规范应足够详细地描述任何新功能的语法和语义。
- 原理:描述设计的动机和为什么要做出这个特定的设计决策用以补充规范
- 向后兼容:所有引入向后不兼容的 BIP 都必须包含描述这些不兼容及其严重程度的部分。BIP 必须写明作者建议怎样处理这些不兼容问题。如果没有足够的向后兼容性论述,BIP 提交可能会被直接拒绝。
- 参考实现:参考实现必须在赋予「最终」状态之前完成,但是在 BIP 被接受之前不需要完成。