要想完全理解比特币开发现状背后的原因,就不能不了解一些历史事件。本文着重列举了中本聪离开这个项目前后的历史事件、软件发布和漏洞修复;还额外添加了一个章节叙述比特币开发的现状。文章后附的时间线为每一个事件提供了额外的细节。
对于这里的大部分事件,我都不是亲历者。所以这份时间线的一大部分引自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基金会。在公告帖子下面,一些人留言表示担心开发会变得中心化。
Moelis创始人:不完全相信加密货币:投行Moelis创始人:不完全相信加密货币,不是忠实的加密货币信仰者。70-80%的Meme股票投资者只是在寻找乐趣。 (金十)[2021/6/8 23:22:24]
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。
比特币开发的现状
在过去几年中,比特币的开发文化日益去中心化、目标明确而且严格。现在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,但未来可以提供更好的构建过程安全性。
声音 | Stellar合伙人:未来稳定币可以存在于后端,消费者可能并不完全理解:Stellar合伙人Lisa Nestor近日表示,从消费者的角度来看,电子货币和稳定币已经成为可比较的产品,具有可用于交易的财务价值,并便于向其他实体付款。我们只是刚刚开始看到标价化货币和稳定币将为世界带来什么,未来稳定币可以存在于后端,消费者可能并不完全理解。但是他们的金融资产将在后端进行标记化,经营交易的支付处理机构和金融机构将在结算和处理汇款方面获得重大优势。[2019/8/28]
结论
十年间,比特币的开发文化沧海桑田,从围绕中本聪的高度中心化,变为围绕几千名GitHub贡献者的去中心化。显然,代码审核、代码质量和安全性的高标准都是有必要的。这些标准得到了遵循和持之以恒的提高。
我认为,要完全理解比特币开发现状背后的哲学,了解这些历史事件是必不可少的。所以我做了一个把更多事件串起来的时间线。
若有进一步的研究需求,建议阅读AlexB.写的TheTaoOfBitcoinDevelopment、EricLombrozo写的TheBitcoinCoreMergeProcess以及JamesonLopp的大作WhoControlsBitcoinCore?。
致谢
感谢JohnNewbery帮助我梳理并审核这篇文章。他在自己的演讲HistoryandPhilosophyofBitcoinDevelopment中做了很多历史考证工作,该演讲也是我这篇文章的基础。此外,我非常感激ChaincodeLabs,他邀请我参加他们的2019夏令营,在那里我遇见了很多有意思的人,学到了很多东西,也正是在哪里,我开始着手整理时间线和撰写这篇文章
时间线
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”
现场 | 姜宁:数字货币的交易系统是不完善的:金色财经现场报道,12月26日,在由金色财经主办的金色沙龙上海站现场,加拿大COINSCIOUS联合创始人姜宁参加了圆桌对话环节,他表示,现在资源集中到了头部,但数字货币的交易系统是不完善的,和传统IT有很大不同。我们应该给很多量化团队,去提供一个很好的金融交易环境。[2018/12/26]
见:区块浏览器、百科词条
2009年1月9日:Bitcoinv0.1软件发布
中本聪在Cryptography邮件组中写道:
“我发布了Bitcoin软件的第一个版本。比特币是一种新的电子现金系统,使用点对点网络来防止多重支付。它是完全去中心化的,没有服务端,也没有中心化的权威。”
见:e-mail
2009年12月16日:Bitcoinv0.2软件发布
MarttiMalmi(sirius-m)加入了对Linux系统的初步支持。其它新功能包括在利用CPU的多个核心来挖矿以及初步支持使用代理。
见:bitcointalk.org
2010年7月6日:Bitcoinv0.3软件发布
LaszloHanyecz(Bitcoinpizzaguy)加入了对macOS的支持。其他新特性包括JSON-RPC接口,以及一个新的daemon模式。用户帮助把软件的图形界面翻译成了德语、荷兰语和意大利语。
见:bitcointalk.org
2010年7月15日:Bitcoinv0.3.1软件发布
修复了各种各样的bug。GavinAndresen开始作贡献。
见:bitcointalk.org
2010年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)中放出一个补丁,告诉用户和矿工要重组带有溢出错误交易的区块。
数据:过去24小时全网爆仓1266.69万美元:金色财经报道,数据显示,过去24小时全网爆仓1266.69万美元,其中比特币爆仓379.43万美元,以太坊爆仓251.20万美元。[2023/1/2 22:20:08]
见:bitcointalk.org
2010?年8月22日:警报系统引入
中本聪开始开发一个警报系统,计划在v0.3.11加入。他写道:
“我一直在编写一个警报系统。警报会在网络中广播,并在一些版本的软件中生效。警报消息要用只有我知道的一把私钥签名。”
“节点偶尔陷入暂时的停机可能给你惊吓,但总好过你发现自己的钱被全部吸走的惊吓。”
“等什么时候我们很长一段时间都没有再发现新bug、透彻的安全检查也没有发现任何问题时,这个系统可以缩减。我并不主张我们会永远使用它。但比特币还是一个beta阶段的软件。”
见:bitcointalk.org
2010年12月12日:中本聪发出最后一个帖子
中本聪在bitcointalk.org上发表他自己的最后一个帖子。他加入了一些DoS限制,并移除了前述的警报系统安全模式。
“在DoS保护上还有许多工作要做,但我正在开发一个备份的快速构建包,以备不测;更复杂的主意则以后再说。这个包所构建的软件是v0.3.19。”
见:bitcointalk.org
2010年12月19日:开发工作转移到GitHub上
Bitcoin软件的活跃开发和issue跟踪转移到了GitHub上。
见:GitHub记录的第一个issue
2011年4月23日:中本聪最后一次发声
据称来自中本聪给MikeHearn的最后一份电邮:
“我已经做别的事情去了。Gavin和大家会把这件事做好。”
见:pastebin.com上的电子邮件对话
2011年3月至6月:新的贡献者加入
多位新的贡献者加入:TheBlueMatt、sipa、laanwj和gmaxwell。
他们的第一次合并请求见:TheBlueMatt、sipa、laanwj、gmaxwell
*2011年8月19日:第一个BIP*
第一个BIP“BIP1:BIP的目的和指南”?出现。
见:BIP1onGitHub
2011年9月23日:Bitcoinv0.4推出
v0.4放出,主要的新功能是钱包加密。见:更新说明
2011年11月21日:Bitcoin-QTv0.5发布
新特性是新的qt图形界面以及钱包加密功能的一个重大补丁
见:更新说明、CVE-2011-4447
2011年11月~2012年4月:P2SH和其他提议上的工作
分析 | 中国信通院:图灵完备和图灵不完备的智能合约之间的区别:中国信息通信研究院与可信区块链推进计划共同组织编写了《区块链白皮书》(2018年),白皮书中表示,智能合约可分为图灵完备和非图灵完备。影响实现图灵完备的常见原因包括:循环或递归受限、无法实现数组或更复杂的数据结构等。图灵完备的智能合约有较强的适应性,可以对逻辑较复杂的业务操作进行编程,但有陷入死循环的可能。对比而言,图灵不完备的智能合约不能进行复杂的逻辑操作,但更加简单、高效、和安全。[2018/9/6]
多个提议都旨在允许交易的接收者可以指定花费资金的脚本。
P2SH在Bitcoin-Qtv0.5.4上实现。另外两个则都被放弃了。
见:BIP12:OP_EVAL、OP_EVAL和并请求、OP_EVAL递归问题、BIP16:P2SH、BIP17:OP_CHECKHASHVERIFY
2012年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上的PR
2014年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位设计师来全职为比特币生态作开源的贡献。
见:tweet
2019年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
原文链接:https://b10c.me/blog/004-the-incomplete-history-of-bitcoin-development/
作者:0xB10C
翻译:阿剑
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。