最近有一项新的比特币改进提议(BIP)因其具有非常大的争议性而被社区广泛关注,它就是BIP 148 (隔离见证部署强制激活),其涉及到一种新的软分叉方式——UASF(用户激活软分叉)。根据这一提案的描述显示,如果现有的隔离见证部署在2017年8月1日之前无法激活,那么该BIP将在2017年8月1日至2017年11月15日午夜之间的一个时间点激活。但如果现有的隔离见证部署激活,那这个BIP将停止被激活。
对此,社区内就有人将其解读为:CORE已经放弃95%算力投票共识,将在8月1号无条件强制激活隔离验证。
这里就有一个误区,会有人把草案阶段的提案理解成CORE的共识,也就是Final(落地)阶段。
为了避免让大家产生不必要的误会,这里王司徒有必要科普一下BIP从提出到落地需要经历的步骤,以及当前究竟有哪些BIP。
1.BIP提交及审核过程是怎样的?
想要提交BIP,首先应该把自己的想法或文件发布到邮件列表。在经过讨论之后,发起者需要通过电子邮件联系Luke Dashjr <
[email protected]>。经过Luke Dashjr的编辑和通过之后,BIP就会在
https://github.com/bitcoin/bips 发布了。
根据规则,任何人都是可以提交BIP的,注意,在
https://github.com/bitcoin/bips 页面上发布一个BIP,并不代表它已被正式接受,当其状态变为激活(Active)时才算正式被接受。而想要让一个BIP正式激活,这需要经过开发者社区的协商同意。
而当前BIP的状态一共可分为9种,它们分别是Proposed (提出)、Draft(草案)、Active(激活)、Final(落地)、Replaced(被替代)、Withdrawn(撤掉)、Deferred(推迟)、BIP number allocated (BIP编号被分配)、Rejected(拒绝)。
巴比特论坛版主玛雅则根据他自己的理解将这个过程分为了7步:
第1步:想法,任何一个人都可以通过任何途径渠道,如论坛,推特等等,提出自己改进初步想法,来争取更多人支持认同。
第2步:提案,可以汇总社区讨论的建议,以较规范的格式,详细地描述方案,形成一个BIP提案文件提交。
第3步:正式提案,对较重要或者认可的人较多的BIP提案分配序号。以便方便大家讨论区分这个提案,有序号的提案算是正式提案。
第4步:落实代码,一些开发者会依据BIP正式提案的构思,落实成具体的代码。并且在测试网络上进行严格的测试。以确保代码尽量没有Bug。
第5步:激活设定,代码没有问题后,根据《BIP9升级规范》,设定激活门槛,分配激活标记位,缓冲时间等。
第6步:发布版本,若足够多的人签名同意,那么会吸纳此BIP代码在最新版本中发布包含这个BIP代码的版本,但是处于未激活状态。
第7步:激活,等待达到BIP9设的激活门槛后,方案正式激活生效。实测是否方案成功。若出现问题可能回到上一版本。
而当前极具争议的BIP 148,目前只是处在草案阶段(Draft),并且根据多位开发者的反应,这一草案能够激活的可能性非常低。
目前落地(Final)的 BIP有哪些?
附当前已落地(Final)应用的BIP列表:
BIP 支持软件版本 标题
9 v0.12.1 版本位超时与延迟(Version bits with timeout and delay)
作者:(Pieter Wuille, Peter Todd, Greg Maxwell, Rusty Russell)
11 v0.6.0 M-of-N标准交易(M-of-N Standard Transactions)
作者:(Gavin Andresen)
13 v0.6.0 pay-to-script-hash 地址格式(Address Format for pay-to-script-hash)
作者:(Gavin Andresen)
14 v0.6.0 协议版本及用户代理(Protocol Version and User Agent)
作者:(Amir Taaki, Patrick Strateman)
16 v0.6.0 Pay To Script Hash
作者:(Gavin Andresen)
21 v0.6.0 URI计划(URI Scheme)
作者: (Nils Schneider, Matt Corallo)
22 v0.7.0 getblocktemplate
作者:(Luke Dashjr)
23 v0.10.0 getblocktemplate – Pooled Mining
作者:(Luke Dashjr)
30 v0.6.0 重复交易(Duplicate transactions)
作者:(Pieter Wuille)
31 v0.6.1 PONG消息(Pong message)
作者: (Mike Hearn)
34 v0.7.0 v2版区块,coinbase高度(Block v2, Height in coinbase)
作者: (Gavin Andresen)
35 v0.7.0 内存池消息(mempool message)
作者:(Jeff Garzik)
37 v0.8.0 布鲁姆过滤(Bloom filtering)
作者: (Mike Hearn, Matt Corallo)
42 v0.9.2 比特币有限货币供应(A finite monetary supply for Bitcoin)
作者: (Pieter Wuille)
61 v0.9.0 “拒绝”P2P消息(“reject” P2P message)
作者:(Gavin Andresen)
65 v0.10.4 OP_CHECKLOCKTIMEVERIFY
作者:(Peter Todd)
68 v0.12.1 使用共识执行序列号的相对锁定时间(Relative lock-time using consensus-enforced sequence numbers)
作者: (Mark Friedenbach, BtcDrak, Nicolas Dorier, kinoshitajona)
66 v0.10.0 Strict DER签名(Strict DER signatures)
作者: (Pieter Wuille)
70 v0.9.0 支付协议(Payment protocol)
作者: (Gavin Andresen, Mike Hearn)
71 v0.9.0 支付协议MIME类型(Payment protocol MIME types)
作者: (Gavin Andresen)
72 v0.9.0 支付协议的URI扩展(URI extensions for Payment Protocol)
作者: (Gavin Andresen)
111 v0.12.0 节点_布鲁姆服务位(NODE_BLOOM service bit)
作者:(Matt Corallo, Peter Todd)
112 v0.12.1 OP_CHECKSEQUENCEVERIFY
作者:(BtcDrak, Mark Friedenbach, Eric Lombrozo)
113 v0.12.1 过去中位时间(Median Time Past)
作者:(Thomas Kerin, Mark Friedenbach)
125 v0.12.0 Opt-in Full 费用替代Opt-in Full Replace-by-Fee Signaling
作者:(David A. Harding, Peter Todd)
130 v0.12.0 Sendheaders消息(Sendheaders message)
作者: (Suhas Daftuar)
141 v0.13.0 隔离见证 (共识层)
作者: (Eric Lombrozo, Johnson Lau, Pieter Wuille)
143 v0.13.0 用于Version 0见证程序的交易签名验证(Transaction Signature Verification for Version 0 Witness Program)
作者: (Johnson Lau, Pieter Wuille)
144 v0.13.0 隔离见证(对等服务——Peer Services)
作者:(Eric Lombrozo, Pieter Wuille)
145 v0.13.0 用于隔离见证的getblocktemplate更新 (getblocktemplate Updates for Segregated Witness)
作者: (Luke Dashjr)
147 v0.13.1 处理虚拟栈元素的可塑性 (Dealing with dummy stack element malleability)
作者:(Johnson Lau)
按开发者参与的BIP进入Final阶段次数从高到低进行排序,那么Top 5依次分别是 Gavin Andresen (8次)、Pieter Wuille(7次)、Peter Todd(4次)、Luke Dashjr(3次)以及Johnson Lau(3次)。
当前有哪些BIP?
附当前所有BIP的列表:
BIP编号 Layer 标题 作者 类型 状态
1
BIP Purpose and Guidelines Amir Taaki Process Replaced
2
BIP process, revised Luke Dashjr Process Active
9
Version bits with timeout and delay Pieter Wuille, Peter Todd, Greg Maxwell, Rusty Russell Informational Final
10
Applications Multi-Sig Transaction Distribution Alan Reiner Informational Withdrawn
11
Applications M-of-N Standard Transactions Gavin Andresen Standard Final
12
Consensus (soft fork) OP_EVAL Gavin Andresen Standard Withdrawn
13
Applications Address Format for pay-to-script-hash Gavin Andresen Standard Final
14
Peer Services Protocol Version and User Agent Amir Taaki, Patrick Strateman Standard Final
15
Applications Aliases Amir Taaki Standard Deferred
16
Consensus (soft fork) Pay to Script Hash Gavin Andresen Standard Final
17
Consensus (soft fork) OP_CHECKHASHVERIFY (CHV) Luke Dashjr Standard Withdrawn
18
Consensus (soft fork) hashScriptCheck Luke Dashjr Standard Proposed
19
Applications M-of-N Standard Transactions (Low SigOp) Luke Dashjr Standard Draft
20
Applications URI Scheme Luke Dashjr Standard Replaced
21
Applications URI Scheme Nils Schneider, Matt Corallo Standard Final
22
API/RPC getblocktemplate – Fundamentals Luke Dashjr Standard Final
23
API/RPC getblocktemplate – Pooled Mining Luke Dashjr Standard Final
30
Consensus (soft fork) Duplicate transactions Pieter Wuille Standard Final
31
Peer Services Pong message Mike Hearn Standard Final
32
Applications Hierarchical Deterministic Wallets Pieter Wuille Informational Final
33
Peer Services Stratized Nodes Amir Taaki Standard Draft
34
Consensus (soft fork) Block v2, Height in Coinbase Gavin Andresen Standard Final
35
Peer Services mempool message Jeff Garzik Standard Final
36
Peer Services Custom Services Stefan Thomas Standard Draft
37
Peer Services Connection Bloom filtering Mike Hearn, Matt Corallo Standard Final
38
Applications Passphrase-protected private key Mike Caldwell, Aaron Voisine Standard Draft
39
Applications Mnemonic code for generating deterministic keys Marek Palatinus, Pavol Rusnak, Aaron Voisine, Sean Bowe Standard Proposed
40
API/RPC Stratum wire protocol Marek Palatinus Standard BIP number allocated
41
API/RPC Stratum mining protocol Marek Palatinus Standard BIP number allocated
42
Consensus (soft fork) A finite monetary supply for Bitcoin Pieter Wuille Standard Draft
43
Applications Purpose Field for Deterministic Wallets Marek Palatinus, Pavol Rusnak Informational Draft
44
Applications Multi-Account Hierarchy for Deterministic Wallets Marek Palatinus, Pavol Rusnak Standard Proposed
45
Applications Structure for Deterministic P2SH Multisignature Wallets Manuel Araoz, Ryan X. Charles, Matias Alejo Garcia Standard Proposed
47
Applications Reusable Payment Codes for Hierarchical Deterministic Wallets Justus Ranvier Informational Draft
49
Applications Derivation scheme for P2WPKH-nested-in-P2SH based accounts Daniel Weigl Informational Draft
50
March 2013 Chain Fork Post-Mortem Gavin Andresen Informational Final
60
Peer Services Fixed Length “version” Message (Relay-Transactions Field) Amir Taaki Standard Draft
61
Peer Services Reject P2P message Gavin Andresen Standard Final
62
Consensus (soft fork) Dealing with malleability Pieter Wuille Standard Withdrawn
63
Applications Stealth Addresses Peter Todd Standard BIP number allocated
64
Peer Services getutxo message Mike Hearn Standard Draft
65
Consensus (soft fork) OP_CHECKLOCKTIMEVERIFY Peter Todd Standard Final
66
Consensus (soft fork) Strict DER signatures Pieter Wuille Standard Final
67
Applications Deterministic Pay-to-script-hash multi-signature addresses through public key sorting Thomas Kerin, Jean-Pierre Rupp, Ruben de Vries Standard Proposed
68
Consensus (soft fork) Relative lock-time using consensus-enforced sequence numbers Mark Friedenbach, BtcDrak, Nicolas Dorier, kinoshitajona Standard Final
69
Applications Lexicographical Indexing of Transaction Inputs and Outputs Kristov Atlas Informational Proposed
70
Applications Payment Protocol Gavin Andresen, Mike Hearn Standard Final
71
Applications Payment Protocol MIME types Gavin Andresen Standard Final
72
Applications bitcoin: uri extensions for Payment Protocol Gavin Andresen Standard Final
73
Applications Use “Accept” header for response type negotiation with Payment Request URLs Stephen Pair Standard Final
74
Applications Allow zero value OP_RETURN in Payment Protocol Toby Padilla Standard Draft
75
Applications Out of Band Address Exchange using Payment Protocol Encryption Justin Newton, Matt David, Aaron Voisine, James MacWhyte Standard Draft
80
Hierarchy for Non-Colored Voting Pool Deterministic Multisig Wallets Justus Ranvier, Jimmy Song Informational Deferred
81
Hierarchy for Colored Voting Pool Deterministic Multisig Wallets Justus Ranvier, Jimmy Song Informational Deferred
83
Applications Dynamic Hierarchical Deterministic Key Trees Eric Lombrozo Standard Draft
90
Consensus (hard fork) Buried Deployments Suhas Daftuar Informational Draft
99
Motivation and deployment of consensus rule changes ([soft/hard]forks) Jorge Timón Informational Draft
101
Consensus (hard fork) Increase maximum block size Gavin Andresen Standard Withdrawn
102
Consensus (hard fork) Block size increase to 2MB Jeff Garzik Standard Draft
103
Consensus (hard fork) Block size following technological growth Pieter Wuille Standard Draft
104
Consensus (hard fork) ‘Block75′ – Max block size like difficulty t.khan Standard Draft
105
Consensus (hard fork) Consensus based block size retargeting algorithm BtcDrak Standard Draft
106
Consensus (hard fork) Dynamically Controlled Bitcoin Block Size Max Cap Upal Chakraborty Standard Draft
107
Consensus (hard fork) Dynamic limit on the block size Washington Y. Sanchez Standard Draft
109
Consensus (hard fork) Two million byte size limit with sigop and sighash limits Gavin Andresen Standard Rejected
111
Peer Services NODE_BLOOM service bit Matt Corallo, Peter Todd Standard Proposed
112
Consensus (soft fork) CHECKSEQUENCEVERIFY BtcDrak, Mark Friedenbach, Eric Lombrozo Standard Final
113
Consensus (soft fork) Median time-past as endpoint for lock-time calculations Thomas Kerin, Mark Friedenbach Standard Final
114
Consensus (soft fork) Merkelized Abstract Syntax Tree Johnson Lau Standard Draft
120
Applications Proof of Payment Kalle Rosenbaum Standard Draft
121
Applications Proof of Payment URI scheme Kalle Rosenbaum Standard Draft
122
Applications URI scheme for Blockchain references / exploration Marco Pontello Standard Draft
123
BIP Classification Eric Lombrozo Process Active
124
Applications Hierarchical Deterministic Script Templates Eric Lombrozo, William Swanson Informational Draft
125
Applications Opt-in Full Replace-by-Fee Signaling David A. Harding, Peter Todd Standard Proposed
126
Best Practices for Heterogeneous Input Script Transactions Kristov Atlas Informational Draft
130
Peer Services sendheaders message Suhas Daftuar Standard Proposed
131
Consensus (hard fork) “Coalescing Transaction” Specification (wildcard inputs) Chris Priest Standard Draft
132
Committee-based BIP Acceptance Process Andy Chase Process Withdrawn
133
Peer Services feefilter message Alex Morcos Standard Draft
134
Consensus (hard fork) Flexible Transactions Tom Zander Standard Draft
140
Consensus (soft fork) Normalized TXID Christian Decker Standard Draft
141
Consensus (soft fork) Segregated Witness (Consensus layer) Eric Lombrozo, Johnson Lau, Pieter Wuille Standard Draft
142
Applications Address Format for Segregated Witness Johnson Lau Standard Deferred
143
Consensus (soft fork) Transaction Signature Verification for Version 0 Witness Program Johnson Lau, Pieter Wuille Standard Draft
144
Peer Services Segregated Witness (Peer Services) Eric Lombrozo, Pieter Wuille Standard Draft
145
API/RPC getblocktemplate Updates for Segregated Witness Luke Dashjr Standard Draft
146
Consensus (soft fork) Dealing with signature encoding malleability Johnson Lau, Pieter Wuille Standard Draft
147
Consensus (soft fork) Dealing with dummy stack element malleability Johnson Lau Standard Draft
148
Consensus (soft fork) Mandatory activation of segwit deployment Shaolin Fry Standard Draft
150
Peer Services Peer Authentication Jonas Schnelli Standard Draft
151
Peer Services Peer-to-Peer Communication Encryption Jonas Schnelli Standard Draft
152
Peer Services Compact Block Relay Matt Corallo Standard Draft
171
Applications Currency/exchange rate information API Luke Dashjr Standard Draft
180
Peer Services Block size/weight fraud proof Luke Dashjr Standard Draft
199
Applications Hashed Time-Locked Contract transactions Sean Bowe, Daira Hopwood Standard Draft
有意思的是,在所有的BIP当中,唯一一个处于Rejected(拒绝)状态的BIP,就是Gavin Andresen提出的BIP109。
讲到这里,读者对BIP也应该有所了解了,关于BIP我们应该要理性对待,只有在进入Active(激活)状态时,我们才认为它是被Core接受的。(本文纯科普,不代表个人立场)
原文出处:
http://www.8btc.com/bitcoin-bip