不完整比特币开发史

要想完全理解比特币开发现状背后的原因,就不能不了解一些历史事件。本文着重列举了中本聪离开这个项目前后的历史事件、软件发布和漏洞修复;还额外添加了一个章节叙述比特币开发的现状。文章后附的时间线为每一个事件提供了额外的细节。

对于这里的大部分事件,我都不是亲历者。所以这份时间线的一大部分引自 John Newbery 的一次名为 “比特币开发的历史与哲学” 的演讲。本文的标题也写得很清楚了,本文没有,也做不到包含每一个重要事件。历史总在不断变化,如果你认为我遗漏了什么事件,或想提议我作一些修改,请在开源项目 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 年末,比特币基金会宣告成立。比特币基金会(Bitcoin Foundation)模仿的是 Linux 基金会。在公告帖子下面,一些人留言表示担心开发会变得中心化。

前以太坊联创抨击以太坊:技术不完善是以太坊社区追求合并的根本原因:9月26日消息,前以太坊联创兼 Cardano 创始人 Charles Hoskinson 在个人社交媒体上发布文章表示,以太坊核心开发者并不能客观看待 Cardano,此行为结果是挫伤整个行业发展、用户采用以及相互协作。

以太坊基金会社区经理 Hudson Jameson 对此做出回应称,Charles 曾在四年前构建 Cardano 时蓄意抹黑以太坊,以太坊开发者忽略 Cardano 是由于 Charles 言行恶劣。Charles 回复称,他承认四年前的言论,当时以太坊技术并不完善,现在也一样。这也是以太坊社区追求合并的根本原因。如果没有大规模链下基础设施,无法实现网络扩张。托管的、非流动性质押不可取。[2022/9/26 22:30:08]

Bitcoin v0.8.0 在 2013 年春天发布。两周以后,一场意料之外的硬分叉在网络中升级了和没升级的节点间爆发。硬分叉很快就被解决了,矿工们都把挖矿算力切换到了对已升级和未升级节点都有效的链上。

在 2013 年末,Bitcoin 软件更名为 Bitcoin Core。在接下来几年里,包括 Chaincode 和 Blockstream 在内的公司成立。后来,MIT Digital Currency Initiative 加入了 Chaincode 和 Blockstream,为开发比特币的开发者和研究者提供报酬。在 2015 年二月,Joseph Poon 和 Tadgw Dryja 放出了闪电网络白皮书的第一份草稿。

第二年,Luke Dashjr ?通过 BIP 2 修订了 BIP 流程;Bitcoin Core 放出了 v0.13.0,加入了 SegWit 作为软分叉。在 2016 年 11 月,警报系统完全弃用。到了 2017 年 8 月,SegWit 在比特币网络上激活。2019 年,又一家公司 Square Crypto 开始资助比特币开发。在 2019 年 5 月,Pieter Wuille 提出了 BIP taproot。

在过去几年中,比特币的开发文化日益去中心化、目标明确而且严格。现在 Bitcoin Core 代码库有 6 名维护者,分布在三个国家。只有他们能够合并由贡献者提出的代码更改。不过,在内容合并之前,更改的内容还需经过一个审议流程,这个流程也变得严格得多。

举个例子,在比特币早期,有个与 P2SH 相竞争的提议,叫做 “OP_EVAL”。有个实现了 OP_EVAL 的 pull request(“合并请求”)在 2011 年底被合并到了代码库中。即便是这样对共识有重大变更的代码,它也只有一个审核人。Russell O’Connor 开了一个 issue 批评了这个实现的一部分,并主张这么大的、对共识极为关键的变更应该得到更多的审核和测试。

这件事推动了如何通过更多的测试和审核来实现更高质量的代码的持续讨论。到了今天,每一个合并请求都有多个开发者来审核。如果某个改变触及到了对安全性甚至共识的关键部分,审核的流程还需要通过更多的审核员审核,需要大量的测试,通常会花费几个月的事件。活跃的 Bitcoin Core 贡献者 John Newbery 告诉我,“只需一个审核人员首肯就能合并影响共识的代码的事情,已经一去不复返”。

声音 | 中国信通院孙克:区块链技术和融合大部分还处在不完善的阶段:据21世纪经济报道消息,关于区块链技术的风险,中国信通院政策与经济研究所数字经济部主任孙克认为,一是去中心化的分布式共享账本带来了治理主体分散的问题;二是自动执行的智能合约带来了其法律有效性的问题;三是区块链难以篡改的特性带来的数据隐私和内容治理问题;四是激励机制与数字资产带来的金融治理问题。此外,区块链还有其技术本身风险如中心悖论、密钥丢失风险等以及融合的风险如经济社会风险、金融融合的风险。现在的技术和融合大部分还处在不完善的阶段。对此,孙克提出建议:技术方面,要多方协同推进,加强关键技术研究,制定人才和标准;应用方面,以点带面探索,加速行业应用推进,引导好应用的真实落地;监管层面,近期远期结合,开展审慎包容监管,防范潜在风险。[2019/12/23]

人们也投入了很多精力到自动化的测试中,比如,有 C++ 语言编写的单元测试和 Python 语言编写的功能性测试。每一个不简单的变更都要相应更新现有的测试或者在框架中加入新的测试。在单元测试和功能测试以外,还要在 Bitcoin Core 上做模糊测试,以及建立基准测试框架来度量代码的性能。举个例子,bitcoinperf.com 网络提供了 Grafana 和 codespeed 接口来可视化周期性的基准测试的结果。

多年努力下来,Bitcoin Core 软件已经形成了一个清晰的发布流程。Bitcoin Core 的大版本每 6 个月发布一次。发行计划包括一个翻译流程,一个特性冻结流程,还通常有多个候选版本。近期 Cory Fields 和 Carl Dong 还致力于提高 Bitcoin Core 构建过程的安全性,使用确定性和可引导的构建包。这个新的构建系统可能还没准备好支持即将在今年秋天发布的 Bitcoin Core v0.19.0,但未来可以提供更好的构建过程安全性。

十年间,比特币的开发文化沧海桑田,从围绕中本聪的高度中心化,变为围绕几千名 GitHub 贡献者的去中心化。显然,代码审核、代码质量和安全性的高标准都是有必要的。这些标准得到了遵循和持之以恒的提高。

我认为,要完全理解比特币开发现状背后的哲学,了解这些历史事件是必不可少的。所以我做了一个把更多事件串起来的时间线。

若有进一步的研究需求,建议阅读 Alex B. 写的 The Tao Of Bitcoin Development(比特币开发之道)(中文译本)、Eric Lombrozo 写的 The Bitcoin Core Merge Process(Bitcoin Core 代码合并流程) 以及 Jameson Lopp 的大作 Who Controls Bitcoin Core?(谁控制着 Bitcoin Core?)。

感谢 John Newbery 帮助我梳理并审核这篇文章。他在自己的演讲 History and Philosophy of Bitcoin Development(比特币开发的历史和哲学)中做了很多历史考证工作,该演讲也是我这篇文章的基础。此外,我非常感激 Chaincode Labs,他邀请我参加他们的 2019 夏令营(Summer Residency),在那里我遇见了很多有意思的人,学到了很多东西,也正是在哪里,我开始着手整理时间线和撰写这篇文章

声音 | 彭博电视主持人:比特币真正的发展成匿名前 仍是不完整的:彭博电视主持人Joe Weisenthal发推表示:每当发生涉及比特币的重大刑事案件,并且人们的身份被泄露时,HODLers就会出来说:“我们从未说过它是匿名的!区块链是公共的。每个人都可以看到它。我们只是声称这是未经许可的!”抱歉,那是垃圾。这就是为什么。 直到比特币真正的发展成匿名(或近似匿名)前,它仍然是不完整的,不能兑现它的承诺。所以说“它本来就不应该是匿名的”是站不住脚的。无稽之谈。没有匿名,就没有审查阻力,也就没有价值储存。[2019/10/17]

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 交易(发行新币的交易类型)包含了著名的一段话:

“The Times 03/Jan/2009 Chancellor on brink of second bailout for banks(泰晤士报 2009 年 1 月 3 日刊 英国财政大臣正在考虑对银行的第二轮纾困计划)”

见:区块浏览器、百科词条

2009 年 1 月 9 日:Bitcoin v0.1 软件发布

中本聪在 Cryptography 邮件组 中写道:

“我发布了 Bitcoin 软件的第一个版本。比特币是一种新的电子现金系统,使用点对点网络来防止多重支付。它是完全去中心化的,没有服务端,也没有中心化的权威。”

2009 年 12 月 16 日:Bitcoin v0.2 软件发布

Martti Malmi (sirius-m) 加入了对 Linux 系统的初步支持。其它新功能包括在利用 CPU 的多个核心来挖矿以及初步支持使用代理。

见:bitcointalk.org

2010 年 7 月 6 日:Bitcoin v0.3 软件发布

Laszlo Hanyecz (Bitcoin pizza guy) 加入了对 macOS 的支持。其他新特性包括 JSON-RPC 接口,以及一个新的 daemon 模式。用户帮助把软件的图形界面翻译成了德语、荷兰语和意大利语。

声音 | Stellar合伙人:未来稳定币可以存在于后端,消费者可能并不完全理解:Stellar合伙人Lisa Nestor近日表示,从消费者的角度来看,电子货币和稳定币已经成为可比较的产品,具有可用于交易的财务价值,并便于向其他实体付款。我们只是刚刚开始看到标价化货币和稳定币将为世界带来什么,未来稳定币可以存在于后端,消费者可能并不完全理解。但是他们的金融资产将在后端进行标记化,经营交易的支付处理机构和金融机构将在结算和处理汇款方面获得重大优势。[2019/8/28]

2010 年 7 月 15 日:Bitcoin v0.3.1 软件(补丁)发布

修复了各种各样的 bug。Gavin Andresen 开始作贡献。

2010 年 7 月 17 日:Bitcoin v0.3.2 软件发布

中本聪加入了检查点作为一项安全措施。检查点就是锁定某个高度的区块哈希值必须是某个,否则就拒绝。中本聪写道:

“我可能会从现在开始,每发布一个新版本就增加一个检查点。如果软件已经决定了哪个是被普遍接受的区块链,就没有必要留下一个徒增困扰的、可能在几个月后发生逆转的机会。”

见:bitcointalk.org、checkpoints added (diff on GitHub)

2010 年 7 月 25 日:Bitcoin v0.3.3 软件发布

这个版本加入了第一个共识层面的变更。

比特币软件开始跟随累积工作量最多的链。在此之前,是跟随字面意义上的最长链。

见:bitcointalk.org、consensus change (diff on GitHub)

整个 2010 年夏天

Bitcoin v0.3.xx 的多个版本在此期间放出

2010 年 8 月 15 日:致命的溢出漏洞得到修复

中本聪在 v0.3.9(ish) 中放出一个补丁,告诉用户和矿工要重组带有溢出错误交易的区块。

2010 ?年 8 月 22 日:警报系统引入

中本聪开始开发一个警报系统,计划在 v0.3.11 加入。他写道:

“我一直在编写一个警报系统。警报会在网络中广播,并在一些版本的软件中生效。警报消息要用只有我知道的一把私钥签名。”

“节点偶尔陷入暂时的停机可能给你惊吓,但总好过你发现自己的钱被全部吸走的惊吓。”

“等什么时候我们很长一段时间都没有再发现新 bug、透彻的安全检查也没有发现任何问题时,这个系统可以缩减。我并不主张我们会永远使用它。但比特币还是一个 beta 阶段的软件。”

2010 年 12 月 12 日:中本聪发出最后一个帖子

中本聪在 bitcointalk.org 上发表他自己的最后一个帖子。他加入了一些 DoS 限制,并移除了前述的警报系统安全模式。

“在 DoS 保护上还有许多工作要做,但我正在开发一个备份的快速构建包,以备不测;更复杂的主意则以后再说。这个包所构建的软件是 v0.3.19。”

分析 | 中国信通院:图灵完备和图灵不完备的智能合约之间的区别:中国信息通信研究院与可信区块链推进计划共同组织编写了《区块链白皮书》(2018年),白皮书中表示,智能合约可分为图灵完备和非图灵完备。影响实现图灵完备的常见原因包括:循环或递归受限、无法实现数组或更复杂的数据结构等。图灵完备的智能合约有较强的适应性,可以对逻辑较复杂的业务操作进行编程,但有陷入死循环的可能。对比而言,图灵不完备的智能合约不能进行复杂的逻辑操作,但更加简单、高效、和安全。[2018/9/6]

2010 年 12 月 19 日:开发工作转移到 GitHub 上

Bitcoin 软件的活跃开发和 issue 跟踪转移到了 GitHub 上。

见:GitHub 记录的第一个 issue

2011 年 4 月 23 日:中本聪最后一次发声

据称来自中本聪给 Mike Hearn 的最后一份电邮:

“我已经做别的事情去了。Gavin 和大家会把这件事做好。”

见:pastebin.com 上的电子邮件对话

2011 年 3 月至 6 月:新的贡献者加入

多位新的贡献者加入:TheBlueMatt(于 3 月 3 日)、sipa(于 3 月 12 日)、laanwj(于 3 月 15 日)和 gmaxwell (于 6 月 18 日)。

他们的第一次合并请求见:TheBlueMatt、sipa、laanwj、gmaxwell

*2011 年 8 月 19 日:第一个 BIP *

第一个 BIP “BIP 1:BIP 的目的和指南” ?出现。

见:BIP 1 on GitHub

2011 年 9 月 23 日:Bitcoin v0.4 推出

v0.4 放出,主要的新功能是钱包加密。见:更新说明

2011 年 11 月 21 日:Bitcoin-QT v0.5 发布

新特性是新的 qt 图形界面以及钱包加密功能的一个重大补丁(CVE-2011-4447)

见:更新说明、CVE-2011-4447

2011 年 11 月 ~ 2012 年 4 月:P2SH 和其他提议上的工作

多个提议(OP_EVAL、P2SH、OP_CHV)都旨在允许交易的接收者可以指定花费资金的脚本。

P2SH 在 Bitcoin-Qt v0.5.4 上实现。另外两个则都被放弃了。

见:BIP 12: OP_EVAL、OP_EVAL 和并请求、OP_EVAL 递归问题、BIP 16: P2SH、BIP 17: OP_CHECKHASHVERIFY

2012 年 3 月 30 日:Bitcoin-QT v0.6 发布

新特性包括地址二维码,BIP30(针对一种涉及复制 coinbase 交易的攻击的安全修复)的一个实现,以及修复内存相关的拒绝服务攻击向量。

2012 年 9 月 17 日:Bitcoin-QT v0.7 发布

包括了 BIP22、BIP34 和 BIP35 的实现,以及图形界面上的许多变更,还有联网的 RPC 代码。

2012 年 9 月 27 日:Bitcoin Foundataion 宣布成立

Gavin Andresen 宣布成立 Bitcoin Foundation。

见:bitcointalk.org 上的帖子

2013 年 2 月 19 日:Bitcoin-QT v0.8 发布

本版更新将区块链的存储从 BerkleyDB 数据库格式迁移成 LevelIDB 数据库。“Ultraprune(极致修剪)” 功能由 sipa (Pieter Wuille) 实现了,他将 UTXO 集合从区块链数据库中分离了出来。

见:更新公告

2013 年 3 月 11 日:意料之外的硬分叉

一次意料之外的硬分叉发生,将 v0.8 的节点与更老版本的节点分离了开来。

见:BIP 50: 2013 年 3 月链分裂事件的事后报告,bitcoin.org 网络警报

2013 年 12 月 12 日:软件品牌重新包装

Bitcoin-Qt 软件重新包装,使用 Bitcoin Core 的新名称。

见:GitHub 上的 PR

2014 年 3 月 19 日:Bitcoin Core v0.9 发布

新特性包括:OP_RETURN 操作码可以在区块链中写入数据,但也会让相关的 UTXO 变成不可使用的状态。此外,autotools 用作构建系统,而 bitcoin-cli(命令行工具)作为一个 RPC 客户端引入。

2014 年某个时间:Chaincode Labs 成立

Alex Morcos 和 Suhas Daftuar 在 2014 年成立了 Chaincode Labs 以打造一个工程师和科学家能够支持去中心化数字货币开发的空间。

2014 年 10 月 23 日:Blockstream 成立

Adam Back、Matt Corallo、Greg Maxwell、Pieter Wuille 等人创立了 Blockstream 公司并放出了他们的侧链白皮书。

见:为什么我们要成立 Blockstream?

2015 年 2 月 16 日:Bitcoin Core v0.10.0 发布

重要的更新包括:首先同步区块头的同步方法,REST 接口 以及用来创建和操控交易的 bitcoin-tx 模块。

2015 年 2 月:闪电网络白皮书发布

Joseph Poon 和 Thaddeus Dryja 发布了 Lightning Network 白皮书第一版草稿

见:闪电网络白皮书

2015 年 4 月 15 日:MIT DCI 成立

MIT Media Lab 启动了 Digital Currency Initiative(DCI)。DCI 是一个研究社区,聚焦密码货币和区块链技术。

见:DCI 启动公告

2015 年 7 月 12 日:Bitcoin Core v0.11.0 发布

这一版软件将区块文件修剪当成一个主要的特性。

2016 年 2 月 3 日:BIP 2

Luke Dashjr 起草了 BIP 2,提出了一个定义更清晰的 BIP 流程。这个提议被社区接受

见:BIP 2: BIP 流程修订

2016 年 2 月 23 日:Bitcoin Core v0.12.0 发布

主要更新是引入了 libsecp、sendheader,选择进入的 RBF(BIP 125)以及交易内存池限制。

2016 年 4 月 15 日:Bitcoin Core v0.12.1 发布

这一版本包含了 BIP 9(版本标识逻辑)以及 OP_CHECKSEQUENCEVERIFY ?软分叉的定义。

2016 年 8 月 23 日:Bitcoin Core v0.13.0 发布

包含了为 segwit(隔离见证)预备的变更、压缩区块功能,交易池基于手续费价格的筛选,HD 钱包的迟滞,以及 CPFP 交易选择算法。

2016 年 10 月 27 日:Bitcoin Core v0.13.1 发布

这个版本包含了 SegWit 软分叉。

2016 年 11 月 1 日:警报系统退休

网络层的警报系统代表着比特币的一个很大的中心化力量,如今走入历史。

见:公告

2017 年 3 月 8 日:Bitcoin Core v0.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 日:Bitcoin Core v0.16 放出

这一版主要是为 Bitcoin Core 钱包增加了 SegWit 支持。

2018 年 10 月 3 日:Bitcoin Core v0.17 放出

这一版本为钱包增加了一些功能。其中一个是支持部分签名的比特币交易(PSBT)。

2019 年 3 月 20 日:Square Crypto 成立

Jack Dorsey 宣布 Square Crypto 将招聘 3~4 名工程师和 1 位设计师来全职为比特币生态作开源的贡献。

见:tweet

2019 年 5 月 2 日:Bitcoin Core v0.18 放出

本版更新包括了大量新功能和一些小变更。

2019 年 5 月 6 日:Taproot 提出

Pieter Wuille 提出了多个 BIP 以在比特币中实现 Schnorr 签名以及 taproot,以提高比特币智能合约的隐私性、效率和灵活性。

见:邮件组帖子

2019 年 8 月 9 日:Bitcoin Core v0.18.1 放出

这个小版本加入了新功能,多个补丁以及性能升级,还更新了翻译。

2019 年 8 月 19 日:Miniscript 推出

Pieter Wuille 提出了 Miniscript,让比特币脚本的编程更友好的语言。

见:邮件组帖子,项目页面

2019 年 11 月 24 日:Bitcoin Core v0.19.0.1 发布

这个版本加入了新功能,多个补丁以及性能升级,还更新了翻译。

2020 年 3 月 9 日:Bitcoin Core v0.19.1 发布

这个版本修复了多个 bug,提高了性能。

2020 年 6 月 3 日:Bitcoin Core v0.20.0 发布

2020 年 8 月 1 日:Bitcoin Core v0.20.1 发布

这个小版本的更新包括应对不轨对等节点的方式不同,钱包提醒以及 PSBT 支持带 witness 和不带 witness 的 UTXO。

2020:为比特币项目和个人贡献者设置的开发奖

包括 BitMEX、Square Crypto、OKCoin、BTSE、Kraken 在内的公司,以及 Human Rights Fundation、Paradigm 和 Coinbase 交易所,为比特币项目和个人贡献者设立了多个开发奖项。

见:Square Crypto Grants、BitMEX Grants、OKCoin Grants、Coinbase Grants、Polylunar Grant Tracker、Bitcoin Words Grant Tracker

原文链接: https://b10c.me/blog/004-the-incomplete-history-of-bitcoin-development/

作者: 0xB10C

翻译: 阿剑

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

[0:0ms0-1:566ms