作者:0xB10C翻译:阿剑要想完全理解比特币开发现状背后的原因,就不能不了解一些历史事件。本文着重列举了中本聪离开这个项目前后的历史事件、软件发布和漏洞修复;还额外添加了一个章节叙述比特币开发的现状。文章后附的时间线为每一个事件提供了额外的细节。对于这里的大部分事件,我都不是亲历者。所以这份时间线的一大部分引自JohnNewbery的一次名为“比特币开发的历史与哲学”的演讲。本文的标题也写得很清楚了,本文没有,也做不到包含每一个重要事件。历史总在不断变化,如果你认为我遗漏了什么事件,或想提议我作一些修改,请在开源项目bitcoin-development-history中提交一个issue,这也是我用来附加更多时间线的办法。中本聪仍在的时候
这份时间线的起点是2007年早期。中本聪开始开发比特币。这个点对点的电子现金系统没有受信任的地方。整个系统完全由用户运行的软件来控制。早期,有贡献者加入了中本聪的工作。除了软件的开发,这些新来的贡献者还为软件添加了Linux和maxOS操作系统的支持。到了2010年夏天,中本聪给软件做了一些关键的修改。比如,引入了“检查点”作为一项安全措施,来对抗传播低难度链的攻击。使用了这些检查点的节点会拒绝那些特定高度与特定区块不符的链。检查点是由中本聪独自硬编码的,理论上来说,这让中本聪可以自己决定整个网络要跟随哪条链。加入检查点的几天后,中本聪在版本v0.3.3的软件中放出了第一个共识机制变更。中本聪敦促用户升级。在接下来一个月里,多个小版本更新陆续放出。其中一个修复了一个致命的溢出漏洞。这个漏洞被利用来创造了两个高价值的UTXO。中本聪建议矿工们重组包含了恶意交易的区块。一周以后,中本聪加入了一个警报系统,来提醒节点运营者网络中出现的类似bug和问题。这个警报系统有一个安全模式。这个安全模式一旦触发,就会禁用整个网络的所有关于货币处理的RPC方法。只有中本聪能够用一个私钥签名来创建有效的网络警报。一些用户开始提出质疑:如果其他人,比如某个政府,拿到了这个私钥,那网络会变成什么样呢?这个时候,中本聪对比特币网络有太大的权力。但大家主要担心的不是中本聪会变坏、会摧毁整个网络,而是一个去中心化的网络中不应该存在一个单点故障。到了2010年10月,中本聪在bitcointalk论坛上发布了他的最后一个帖子,宣布移除这个安全模式。中本聪在他最后留下的电子邮件之一里面写道:“我准备到别的地方去了。有了Gavin和大家,这个项目会得到很好的维护。”一些人主张,中本聪离开比特币世界,是他最伟大的贡献之一。中本聪离开之后
几乎同一时间,整个开发流程从SVN转移到了GitHub上。BlueMatt、sipa、laanwj和gmaxwell加入了这个项目。在2011年中,BIP流程应运而生。在2011年的最后一个季度和2012年的第一个月,社区讨论了允许交易的接收者指定花费条件的多个提案。由此,P2SH交易引入了比特币。在2012年末,比特币基金会宣告成立。比特币基金会模仿的是Linux基金会。在公告帖子下面,一些人留言表示担心开发会变得中心化。Bitcoinv0.8.0在2013年春天发布。两周以后,一场意料之外的硬分叉在网络中升级了和没升级的节点间爆发。硬分叉很快就被解决了,矿工们都把挖矿算力切换到了对已升级和未升级节点都有效的链上。在2013年末,Bitcoin软件更名为BitcoinCore。在接下来几年里,包括Chaincode和Blockstream在内的公司成立。后来,MITDigitalCurrencyInitiative加入了Chaincode和Blockstream,为开发比特币的开发者和研究者提供报酬。在2015年二月,JosephPoon和TadgwDryja放出了闪电网络白皮书的第一份草稿。第二年,LukeDashjr通过BIP2修订了BIP流程;BitcoinCore放出了v0.13.0,加入了SegWit作为软分叉。在2016年11月,警报系统完全弃用。到了2017年8月,SegWit在比特币网络上激活。2019年,又一家公司SquareCrypto开始资助比特币开发。在2019年5月,PieterWuille提出了BIPtaproot。比特币开发的现状
Compound创始人称8000万美元的Bug给DeFi用户带来了“道德困境”:10月2日消息,Compound的代码中一个Bug导致了COMP代币的错误发放,而COMP代币的目的是用于长期的流动性挖掘奖励。Compound的推特账号在不久后承认了这个Bug,并表示没有用户的资金受到威胁。该Bug只适用于Compound的Comptroller合同,该智能合约负责分配随着时间的推移而获得的流动性采矿奖励。
在8000万美元的Bug发生后,Compound创始人Leshner称,这给DeFi用户带来了“道德困境”,现在几乎所有的Comptroller合约都被耗尽了,有28万个COMP错误地分配给了用户。(Coindesk)[2021/10/2 17:20:35]
在过去几年中,比特币的开发文化日益去中心化、目标明确而且严格。现在BitcoinCore代码库有6名维护者,分布在三个国家。只有他们能够合并由贡献者提出的代码更改。不过,在内容合并之前,更改的内容还需经过一个审议流程,这个流程也变得严格得多。举个例子,在比特币早期,有个与P2SH相竞争的提议,叫做“OP_EVAL”。有个实现了OP_EVAL的pullrequest在2011年底被合并到了代码库中。即便是这样对共识有重大变更的代码,它也只有一个审核人。RussellO’Connor开了一个issue批评了这个实现的一部分,并主张这么大的、对共识极为关键的变更应该得到更多的审核和测试。这件事推动了如何通过更多的测试和审核来实现更高质量的代码的持续讨论。到了今天,每一个合并请求都有多个开发者来审核。如果某个改变触及到了对安全性甚至共识的关键部分,审核的流程还需要通过更多的审核员审核,需要大量的测试,通常会花费几个月的时间。活跃的BitcoinCore贡献者JohnNewbery告诉我,“只需一个审核人员首肯就能合并影响共识的代码的事情,已经一去不复返”。人们也投入了很多精力到自动化的测试中,比如,有C++语言编写的单元测试和Python语言编写的功能性测试。每一个不简单的变更都要相应更新现有的测试或者在框架中加入新的测试。在单元测试和功能测试以外,还要在BitcoinCore上做模糊测试,以及建立基准测试框架来度量代码的性能。举个例子,bitcoinperf.com网络提供了Grafana和codespeed接口来可视化周期性的基准测试的结果。多年努力下来,BitcoinCore软件已经形成了一个清晰的发布流程。BitcoinCore的大版本每6个月发布一次。发行计划包括一个翻译流程,一个特性冻结流程,还通常有多个候选版本。近期CoryFields和CarlDong还致力于提高BitcoinCore构建过程的安全性,使用确定性和可引导的构建包。这个新的构建系统可能还没准备好支持即将在今年秋天发布的BitcoinCorev0.19.0,但未来可以提供更好的构建过程安全性。时间线
Brian Quintenz:加密货币和DeFi领域并不是“狂野西部”:对加密友好的美国商品期货交易委员会(CFTC)委员Brian Quintenz发推表示, 加密货币和DeFi领域并不是“狂野西部”,相反,这些领域更接近所谓的全球金融“全新前沿”。著名交易员Jim Iuorio在接受CNBC采访时称比特币和加密货币领域为“狂野西部”。8月19日,Brian Quintenz宣布他将于8月31日离职。他补充说,他的下一个职业生涯将进入私营部门。但是,他的职业将与加密和DeFi领域相关。(U.Today)[2021/8/23 22:31:01]
2007年早期:中本聪开始开发比特币
中本聪开始写比特币的代码。这是根据中本聪在Cryptography邮件列表中一份写于2008年11月17日的邮件中得出的:“我确信自己已经在过去一年半的编程工作中解决了所有这些细节问题。”见:e-mail(metzdowd.com)以及e-mail(nakamotoinstitute.org)2008年11月1日:比特币白皮书发布
中本聪在Cryptography邮件组中公布了白皮书:“我一直在开发一个全新的数字现金系统,它是完全点对点的,没有需要用户信任的第三方。”见:e-mail(metzdowd.com)以及e-mail(nakamotoinstitute.org),以及白皮书2009年1月3日至9日之间:比特币的创世区块挖出
创世区块的时间戳是1月9日。这个区块的coinbase交易包含了著名的一段话:“TheTimes03/Jan/2009Chancelloronbrinkofsecondbailoutforbanks”见:区块浏览器、百科词条2009年1月9日:Bitcoinv0.1软件发布
中本聪在Cryptography邮件组中写道:“我发布了Bitcoin软件的第一个版本。比特币是一种新的电子现金系统,使用点对点网络来防止多重支付。它是完全去中心化的,没有服务端,也没有中心化的权威。”见:e-mail2009年12月16日:Bitcoinv0.2软件发布
MarttiMalmi(sirius-m)加入了对Linux系统的初步支持。其它新功能包括在利用CPU的多个核心来挖矿以及初步支持使用代理。见:bitcointalk.org2010年7月6日:Bitcoinv0.3软件发布
LaszloHanyecz(Bitcoinpizzaguy)加入了对macOS的支持。其他新特性包括JSON-RPC接口,以及一个新的daemon模式。用户帮助把软件的图形界面翻译成了德语、荷兰语和意大利语。见:bitcointalk.org2010年7月15日:Bitcoinv0.3.1软件发布
DeFi 概念板块今日平均涨幅为3.40%:金色财经行情显示,DeFi 概念板块今日平均涨幅为3.40%。47个币种中42个上涨,5个下跌,其中领涨币种为:AKRO(+12.21%)、IDEX(+10.53%)、MLN(+8.63%)。领跌币种为:KNC(-5.86%)、NMR(-5.38%)、YFV(-2.01%)。[2021/6/4 23:10:30]
修复了各种各样的bug。GavinAndresen开始作贡献。见:bitcointalk.org2010年7月17日:Bitcoinv0.3.2软件发布
中本聪加入了检查点作为一项安全措施。检查点就是锁定某个高度的区块哈希值必须是某个,否则就拒绝。中本聪写道:“我可能会从现在开始,每发布一个新版本就增加一个检查点。如果软件已经决定了哪个是被普遍接受的区块链,就没有必要留下一个徒增困扰的、可能在几个月后发生逆转的机会。”见:bitcointalk.org、checkpointsadded(diffonGitHub)2010年7月25日:Bitcoinv0.3.3软件发布
这个版本加入了第一个共识层面的变更。比特币软件开始跟随累积工作量最多的链。在此之前,是跟随字面意义上的最长链。见:bitcointalk.org、consensuschange(diffonGitHub)整个2010年夏天
Bitcoinv0.3.xx的多个版本在此期间放出2010年8月15日:致命的溢出漏洞得到修复
中本聪在v0.3.9(ish)中放出一个补丁,告诉用户和矿工要重组带有溢出错误交易的区块。见:bitcointalk.org2010年8月22日:警报系统引入
中本聪开始开发一个警报系统,计划在v0.3.11加入。他写道:“我一直在编写一个警报系统。警报会在网络中广播,并在一些版本的软件中生效。警报消息要用只有我知道的一把私钥签名。”“节点偶尔陷入暂时的停机可能给你惊吓,但总好过你发现自己的钱被全部吸走的惊吓。”“等什么时候我们很长一段时间都没有再发现新bug、透彻的安全检查也没有发现任何问题时,这个系统可以缩减。我并不主张我们会永远使用它。但比特币还是一个beta阶段的软件。”见:bitcointalk.org2010年12月12日:中本聪发出最后一个帖子
中本聪在bitcointalk.org上发表他自己的最后一个帖子。他加入了一些DoS限制,并移除了前述的警报系统安全模式。“在DoS保护上还有许多工作要做,但我正在开发一个备份的快速构建包,以备不测;更复杂的主意则以后再说。这个包所构建的软件是v0.3.19。”见:bitcointalk.org2010年12月19日:开发工作转移到GitHub上
Celer提出无需迁移DeFi应用的扩容方案Layer2.finance,计划一季度上线:以太坊二层扩容项目CelerNetwork推出基于OptimisticRollup的DeFi扩容提速解决方案Layer2.finance,旨在以不同的方式使用Layer2rollup,类似于任何rollup,用户可以通过对Layer1上的rollup合约进行存款交易来将资金存入Layer2.finance的rollup链,但是Layer2.finance不会将DeFi协议本身迁移到Layer2。Layer2.finance构建了一个类似去中心化中介的模型。用户将资金存在Layer2链上,并且通过特殊的Layer2交易(transaction)形式,指明自己的资金希望被放在哪DeFi协议中去。Layer2.finance计划在2021年第一季度推出1.0版本,在迭代初始阶段之后升级到ZKRollup,将在1.0版本支持例如Curve、yEarn、Compound和Aave等协议。[2021/2/19 17:29:29]
Bitcoin软件的活跃开发和issue跟踪转移到了GitHub上。见:GitHub记录的第一个issue2011年4月23日:中本聪最后一次发声
据称来自中本聪给MikeHearn的最后一份电邮:“我已经做别的事情去了。Gavin和大家会把这件事做好。”见:pastebin.com上的电子邮件对话2011年3月至6月:新的贡献者加入
多位新的贡献者加入:TheBlueMatt、sipa、laanwj和gmaxwell。他们的第一次合并请求见:TheBlueMatt、sipa、laanwj、gmaxwell2011年8月19日:第一个BIP
第一个BIP“BIP1:BIP的目的和指南”出现。见:BIP1onGitHub2011年9月23日:Bitcoinv0.4推出
v0.4放出,主要的新功能是钱包加密。见:更新说明2011年11月21日:Bitcoin-QTv0.5发布
新特性是新的qt图形界面以及钱包加密功能的一个重大补丁见:更新说明、CVE-2011-44472011年11月~2012年4月:P2SH和其他提议上的工作
多个提议都旨在允许交易的接收者可以指定花费资金的脚本。P2SH在Bitcoin-Qtv0.5.4上实现。另外两个则都被放弃了。见:BIP12:OP_EVAL、OP_EVAL合并请求、OP_EVAL递归问题、BIP16:P2SH、BIP17:OP_CHECKHASHVERIFY2012年3月30日:Bitcoin-QTv0.6发布
新特性包括地址二维码,BIP30的一个实现,以及修复内存相关的拒绝服务攻击向量。见:更新说明2012年9月17日:Bitcoin-QTv0.7发布
包括了BIP22、BIP34和BIP35的实现,以及图形界面上的许多变更,还有联网的RPC代码。见:更新说明2012年9月27日:BitcoinFoundataion宣布成立
GavinAndresen宣布成立BitcoinFoundation。见:bitcointalk.org上的帖子2013年2月19日:Bitcoin-QTv0.8发布
本版更新将区块链的存储从BerkleyDB数据库格式迁移成LevelIDB数据库。“Ultraprune”功能由sipa(PieterWuille)实现了,他将UTXO集合从区块链数据库中分离了出来。见:更新公告2013年3月11日:意料之外的硬分叉
一次意料之外的硬分叉发生,将v0.8的节点与更老版本的节点分离了开来。见:BIP50:2013年3月链分裂事件的事后报告,bitcoin.org网络警报2013年12月12日:软件品牌重新包装
Bitcoin-Qt软件重新包装,使用BitcoinCore的新名称。见:GitHub上的PR2014年3月19日:BitcoinCorev0.9发布
新特性包括:OP_RETURN操作码可以在区块链中写入数据,但也会让相关的UTXO变成不可使用的状态。此外,autotools用作构建系统,而bitcoin-cli作为一个RPC客户端引入。见:更新说明2014年某个时间:ChaincodeLabs成立
AlexMorcos和SuhasDaftuar在2014年成立了ChaincodeLabs以打造一个工程师和科学家能够支持去中心化数字货币开发的空间。2014年10月23日:Blockstream成立
AdamBack、MattCorallo、GregMaxwell、PieterWuille等人创立了Blockstream公司并放出了他们的侧链白皮书。见:为什么我们要成立Blockstream?2015年2月16日:BitcoinCorev0.10.0发布
重要的更新包括:首先同步区块头的同步方法,REST接口以及用来创建和操控交易的bitcoin-tx模块。见:更新说明2015年2月:闪电网络白皮书发布
JosephPoon和ThaddeusDryja发布了LightningNetwork白皮书第一版草稿见:闪电网络白皮书2015年4月15日:MITDCI成立
MITMediaLab启动了DigitalCurrencyInitiative。DCI是一个研究社区,聚焦密码货币和区块链技术。见:DCI启动公告2015年7月12日:BitcoinCorev0.11.0发布
这一版软件将区块文件修剪当成一个主要的特性。见:更新说明2016年2月3日:BIP2
LukeDashjr起草了BIP2,提出了一个定义更清晰的BIP流程。这个提议被社区接受见:BIP2:BIP流程修订2016年2月23日:BitcoinCorev0.12.0发布
主要更新是引入了libsecp、sendheader,选择进入的RBF以及交易内存池限制。见:更新说明2016年4月15日:BitcoinCorev0.12.1发布
这一版本包含了BIP9以及OP_CHECKSEQUENCEVERIFY软分叉的定义。见:更新说明2016年8月23日:BitcoinCorev0.13.0发布
包含了为segwit预备的变更、压缩区块功能,交易池基于手续费价格的筛选,HD钱包的迟滞,以及CPFP交易选择算法。见:更新说明2016年10月27日:BitcoinCorev0.13.1发布
这个版本包含了SegWit软分叉。见:更新说明2016年11月1日:警报系统退休
网络层的警报系统代表着比特币的一个很大的中心化力量,如今走入历史。见:公告2017年3月8日:BitcoinCorev0.14放出
本版软件大幅提高了初次下载区块的速度。见:更新说明2017年8月24日:SegWit激活
SegWit在比特币主网上激活。2017年9月14日:v0.15放出
本版软件加入了一个更好的手续费预估功能,可在图形界面追加手续费,还有多钱包功能以及脚本缓存功能。见:更新说明2017年11月11日:v0.15.1放出
这个版本着力于P2P网络的安全性,以预防未来可能的网络分叉,也修复了一些bug,为0.15.x系列做了优化和升级。见:更新说明2018年2月26日:BitcoinCorev0.16放出
这一版主要是为BitcoinCore钱包增加了SegWit支持。见:更新说明2018年10月3日:BitcoinCorev0.17放出
这一版本为钱包增加了一些功能。其中一个是支持部分签名的比特币交易。见:更新说明2019年3月20日:SquareCrypto成立
JackDorsey宣布SquareCrypto将招聘3~4名工程师和1位设计师来全职为比特币生态作开源的贡献。见:tweet2019年5月2日:BitcoinCorev0.18放出
本版更新包括了大量新功能和一些小变更。见:更新说明2019年5月6日:Taproot提出
PieterWuille提出了多个BIP以在比特币中实现Schnorr签名以及taproot,以提高比特币智能合约的隐私性、效率和灵活性。见:邮件组帖子2019年8月9日:BitcoinCorev0.18.1放出
这个小版本加入了新功能,多个补丁以及性能升级,还更新了翻译。见:更新说明2019年8月19日:Miniscript推出
PieterWuille提出了Miniscript,让比特币脚本的编程更友好的语言。见:邮件组帖子,项目页面2019年11月24日:BitcoinCorev0.19.0.1发布
这个版本加入了新功能,多个补丁以及性能升级,还更新了翻译。见:更新说明2020年3月9日:BitcoinCorev0.19.1发布
这个版本修复了多个bug,提高了性能。见:更新说明2020年6月3日:BitcoinCorev0.20.0发布
这个版本修复了多个bug,提高了性能。见:更新说明2020年8月1日:BitcoinCorev0.20.1发布
这个小版本的更新包括应对不轨对等节点的方式不同,钱包提醒以及PSBT支持带witness和不带witness的UTXO。见:更新说明2020:为比特币项目和个人贡献者设置的开发奖
包括BitMEX、SquareCrypto、OKCoin、BTSE、Kraken在内的公司,以及HumanRightsFundation、Paradigm和Coinbase交易所,为比特币项目和个人贡献者设立了多个开发奖项。见:SquareCryptoGrants、BitMEXGrants、OKCoinGrants、CoinbaseGrants、PolylunarGrantTracker、BitcoinWordsGrantTracker所有的文字和图片都遵循自由创作和分享协议4.0,作者保留署名权,允许自由分享和改编,后续使用应维持同样的使用条件。结论
十年间,比特币的开发文化沧海桑田,从围绕中本聪的高度中心化,变为围绕几千名GitHub贡献者的去中心化。显然,代码审核、代码质量和安全性的高标准都是有必要的。这些标准得到了遵循和持之以恒的提高。我认为,要完全理解比特币开发现状背后的哲学,了解这些历史事件是必不可少的。所以我做了一个把更多事件串起来的时间线。若有进一步的研究需求,建议阅读AlexB.写的TheTaoOfBitcoinDevelopment、EricLombrozo写的TheBitcoinCoreMergeProcess以及JamesonLopp的大作WhoControlsBitcoinCore?。致谢
感谢JohnNewbery帮助我梳理并审核这篇文章。他在自己的演讲HistoryandPhilosophyofBitcoinDevelopment中做了很多历史考证工作,该演讲也是我这篇文章的基础。此外,我非常感激ChaincodeLabs,他邀请我参加他们的2019夏令营,在那里我遇见了很多有意思的人,学到了很多东西,也正是在那里,我开始着手整理时间线和撰写这篇文章。原地址:https://b10c.me/blog/004-the-incomplete-history-of-bitcoin-development/
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。