你为什么需要BIP?
在比特币发展的早期,并没有社区成员讨论、提出有效建议、得到认可和执行的制度。
比特币的维护和迭代更新落到了核心开发者身上。在初始阶段,中本聪为比特币编写了基本框架,但系统可能出现的操作问题以及为满足实际需求而进行的升级是不可避免的。在早期,这些情况经常由中本聪自己处理。当中本聪退出后,维护和迭代更新的任务就落到了最初的比特币核心开发者身上。
由于社区的扩大,社区讨论会导致技术上的差异。当时比特币的核心开发者只是一个很小的群体,如果有什么变化要做,直接在内部讨论发布。然而,当社区变得更强大时,这种方法很容易导致技术差异。一些开发者认为比特币的核心团队对比特币协议控制过多,这将是比特币失败的最终原因。因此,BIP (Bitcoin)提出了改进建议。
BIP的两个版本
BIP0001于2011年8月19日实施。BIP(bit coin Improvement Proposals),这个概念最早是由Amir Taaki在2011年8月19日提出的,这个建议成为了第一个BIP。BIP0001定义了BIP的基本流程。
2016年2月3日,卢克达什jr提出BIP0002。BIP0001基本满足了当时社区对开发过程形式化的需求,但由于很多细节没有详细描述,而且有些规范已经过时,BIP0002在此基础上迭代,最终实现并取代BIP001成为目前使用的BIP规范。
提交BIP之前我应该做什么?
当你对比特币有了具体的新想法时,确保你的想法适用于BIP。一些小的更新或者bug修复可以直接提交给具体的项目开发,不足以成为BIP。
首先,在相关论坛公开验证想法,节省时间。在写BIP之前,先把自己的想法公开在一个合适的地方,比如比特币邮箱列表(bitcoindev@lists.linuxfoundation.org)或者Bitocoindev IRC或者相关的技术论坛,让大家发表评论。这样做的好处是可以节省你潜在的时间,在大量工作之前发现你的想法是否有问题。
另外,有必要问一下这个想法以前是不是没有提出过。很多人提出过很多关于比特币的想法,但最后都因为各种原因被否决了。所以你的想法可能之前提过,但是没有成功实现。如果有这种情况,找出原因是什么,如果解决不了,就不要在注定被拒绝的事情上花太多时间。
同时,你需要确保你的想法适用于整个社区。有时候这个想法本身看起来很好,但并不适用于比特币社区的大多数人。这个想法最终会被否决。
BIP的格式要求
当你在社区中发表这个想法,并且觉得有可能被接受时,你就可以开始写BIP草案了。但BIP有严格的格式要求,不按格式写,直接退回。
一份合格的BIP草案需要包含以下内容:
前言:包含BIP基本数据的前言,需要以特定格式书写。
拟解决技术问题的简要说明(200字左右)
版权:你需要根据特定的版权条款获得明确的许可。
动机:解释清楚为什么现有的协议不足以解决这个BIP要解决的问题。
规范:技术规范应该足够详细地描述任何新功能的语法和语义。
原则:描述设计的动机以及为什么要做出这个特定的设计决策来补充规范。
向后兼容性:所有引入向后不兼容性的bip必须包含一个描述这些不兼容性及其严重性的部分。BIP必须具体说明作者打算如何处理这些不相容的问题。如果没有足够的关于向后兼容性的讨论,BIP提交可能会被直接拒绝。
参考实现:参考实现必须在给出“最终”状态之前完成,但是不需要在接受BIP之前完成。
一份合格的BIP草稿也需要注意格式。
序言的格式需要注意:
BIP:
*图层:
标题:
作者:
*讨论-收件人:
*注释-摘要:
评论-URI:
状态:
撤回|最终|替换|废弃//表示当前BIP处于什么状态。
类型:
创建时间:
许可证:
*许可证代码:
*后期历史:
*需要:
*替换:
*替代者:
除了标有*的都是必填项。
BIP的附件格式需要注意。BIP可能包含图表等附件,这些附件应包含在此BIP的子目录中,必须命名为BIP-XXXX-Y.ext,其中“XXXX”是BIP号,“Y”是序列号(从1开始),“ext”由实际文件扩展名替换(例如,“png”)。
BIP的审查过程
BIP草案完成后,你需要将完整的文档提交给比特币开发邮件列表。所有订阅邮件列表的人都能收到你的提议。
在社区中公开BIP草案,并再次讨论完整的提案。在这一点上,你需要再次在社区中公开讨论这个BIP草案。上一次公开讨论只是一个想法。这一次,我们讨论了完整的提案。
再次修改BIP的草稿,并把它送给编辑。尝试引导社区成员成为你的BIP的支持者并积极听取他们的意见,然后再次修改你的BIP。当你觉得准备好了,你可以把你的BIP寄给BIP编辑。目前的BIP编辑是卢克达什jr,可以通过luke_bipeditor@dashjr.org联系到他。
BIP编辑器的功能
当BIP编辑收到新的BIP草稿时,他将做以下事情:
检查整个BIP是否准备好了。现成的BIP有两个特点:正直和稳健。也就是说,草案内容完整,符合规范,没有漏洞,经得起推敲。
检查标题是否准确描述了内容。
检查是否已提前发送至比特币开发邮件列表供公众讨论。
检查动机是否描述完整,向后兼容性是否解决。
检查前言中的图层标签是否按照规范正确分配。
检查许可证是否在规定的范围内。
如果BIP的编辑认为你的BIP没有准备好,他会解释原因并把它寄回给你。您可以重新编辑和修改BIP编辑给出的说明,然后再次发送。
改进后,您可以拉取请求并提交给BIPs git仓库。在收到拉取请求后,BIP编辑器将做如下操作:
给你的BIP分配一个BIP号码,这样你的BIP就正式诞生了!
标记您的BIP类型(标准跟踪型、信息型、流程型)
合并你的拉动请求,然后BIP将加入BIP仓库。
在README.mediawiki中列出你的BIP,这样每个人都可以方便地查看动态。
到目前为止,您的BIP将再次公开,以获得进一步的社区反馈。
BIP有三种类型:
跟踪BIP:描述影响大多数或所有比特币实施的任何变化,如网络协议的变化,块或交易有效性规则的变化,或影响使用比特币的应用程序的互操作性的任何变化或添加。
信息BIP:它描述了比特币的设计问题,或者向比特币社区提供常规指南或信息,但没有提出新的功能。信息BIP不一定代表比特币社区的共识或建议,因此用户和实施者可以随意忽略信息BIP或遵循其建议。
BIP流程:描述比特币的相关流程,或者提议对流程(或其中的事件)进行修改。BIP的过程类似于“标准追踪BIP”,但它在比特币协议本身之外工作。过程BIP可能会提出实施方案,但不会针对比特币的代码库;他们往往需要社区的共识;与信息BIP不同,它们不仅仅是建议,用户通常不能随意忽略它们。对流程、指导方针、决策过程的更改,以及对比特币开发中使用的工具或环境的更改,都属于流程BIP。
BIP的最终实现过程
当您的BIP获得批准并纳入BIP仓库时,请花时间推广您的BIP。毕竟,如果你的想法被实现并应用到社区中,会给你带来巨大的成就感。
该进程BIP和信息BIP将讨论剩余的几个月,如果没有异议,它将生效。那么,如果是进程BIP和信息BIP,只要在邮件列表上经过一个多月的讨论没有未解决的异议,就可以判断这个BIP已经达成多数共识,这个BIP的状态将改为“已激活”,真正作用于比特币社区。
对BIP的标准跟踪将更加复杂和谨慎。您的目标是将BIP状态从“草案”更改为“最终实现”。
在BIP123中,标准BIP分为四层五类:
共识层
软分叉
硬分叉
对等服务层
API/RPC层
应用层
不同的bip达到“最终实现”状态需要满足的条件是不一样的。
软岔BIP严格要求矿工的多数票。考虑到矿池的存在,一般情况下需要95%的压倒性多数票。
硬分叉BIP更加严格,需要被整个比特币社区的成员采用,尤其是那些使用比特币买卖商品、存储和交易比特币的人。基本上,比特币社区的所有成员都有必要认识到硬分叉。达成这样的共识极其困难,所以比特币历史上从未出现过真正的比特币硬分叉升级。
对等bips要求至少1%的公共监控节点应被监控以采用BIPs一个月。
API/RPC和应用层BIP由至少两个独立且兼容的软件实现。
以上过程非常复杂漫长,往往是多方博弈的结果。作为BIP的主人,你现阶段要做的就是不断推广你的BIP,接触更多的社区成员,努力宣传你的设计理念,阐述你的BIP将如何对比特币社区产生积极影响,争取更多的社区成员成为你的BIP支持者,一步步实现你的BIP。
将BIP的状态改为“最终实现”将是你最大的奖励。