主页 > imtoken官方地址 > 开发者 Jameson Lopp:谁控制着比特币核心?

开发者 Jameson Lopp:谁控制着比特币核心?

imtoken官方地址 2023-07-09 05:13:45

第0章介绍

Bitcoin Core在扩容战中曾被批评过于中心化甚至垄断。 最近,开发者 Jameson Lopp 发表了一篇文章《谁在控制比特币核心》来为比特币核心正名。

文章很长,先说他的结论:没有人控制比特币。 没有人控制比特币发展的焦点(focus point,博弈论中人们倾向于在没有沟通的情况下选择)。

第 1 章开发者 Jameson Lopp:谁控制着比特币核心?

谁控制代码合并到比特币核心 GitHub 存储库的问题再次出现。 多年来,比特币协议的焦点控制权一直掌握在各方手中,但我认为这个问题本身就很混乱,因此本文试图解释比特币核心是如何工作的比特币开发者是谁,以及比特币协议是如何演变的。

比特币核心的历史

BitcoinCore 是比特币协议开发的焦点,而不是命令和控制点。 一个焦点消失,一个新的焦点出现。 Bitcoin Core 所依赖的技术交流平台(目前为 Github 仓库)只是为了方便。 事实上,我们已经看到比特币开发的重心转移到平台甚至名称上。

不相信任何人

虽然有几个 GitHub 维护者帐户有权将代码合并到 master 分支中,但这更像是一种防御功能,而不是一种权力地位。 如果大家都能把代码合并到主分支,那很快就会变成“多人混手”的局面。 Bitcoin Core 遵循最小特权原则,任何想滥用权力的人都将被轻易推翻。

从相反的角度来看,GitHub 是不可信任的。 GitHub 员工可能会在未经同意的情况下将恶意代码注入仓库。 然而,GitHub 攻击者不太可能破解比特币核心维护者的 PGP 私钥。

所有合并提交都必须使用受信任的 PGP 密钥签名,Bitcoin Core 有一个持续集成系统来检查每个提交的 PGP 密钥。 虽然我们知道谁持有这些密钥,但它并不完全安全,因为密钥可能被盗或被破解。 因此,需要使用密钥签名的提交并不是一个完美的安全解决方案,它们只会让攻击者更难随意添加代码。

比特币王国的钥匙

截至撰写本文时,这些受信任的 PGP 公钥是:

71A3B16735405025D447E8F274810B012346C9A6

133EAC179436F14A5CF1B794860FEB804E669320

32EE5C4C3FA15CCADB46ABE529D4BCB6416F53EC

B8B3F1C0E58C15DB6A81D30C3648A882F4316B9B

CA03882CB1FC067B5D3ACFE4D300116E1C875A3D

这些键对应的五个人是:

弗拉基米尔范德兰

彼得维耶

乔纳斯施奈利

马可法尔克

塞缪尔多布森 dobsonsa68@gmail.com

这是否意味着我们可以信任这五个人? 不完全的。 钥匙不是身份证明,这些钥匙可能会落入坏人之手。 运行 verify-commits python 脚本,您可以确认:

python3contrib/验证提交/验证提交.py

使用来自 bitcoin/contrib/verify-commits 的验证提交数据

AllTree-SHA512s 匹配到 309bf16257b2395ce502017be627186b749ee749

有一条从“HEAD”到 82bcf405f6db1d55b684a1f63a4aabad376cdad7 的有效路径,所有提交都已签名!

任何开发者都可以使用 verify-commits 脚本来验证。 该脚本检查自 2015 年 12 月 82bcf405 提交以来所有提交的 PGP 签名。该脚本将告诉您从那时起更改的每一行代码以及谁签署了它。 虽然维护者的密钥可能被盗或流氓,但这大大减少了攻击面。

那么这些维护者是谁,他们是如何成为维护者的呢?

多层防御

BitcoinCore代码的完整性不仅仅依赖于几个加密密钥,还有多层安全保护措施提供纵深防御:

拉取请求安全

1-任何人都可以通过Pull Request(简称PR,提交合并代码的请求)提出代码修改,以改进软件。

2 - 开发人员审查所有 PR 以确保它们无害,任何人都可以自由审查 PR 并提供反馈。 在没有任何障碍或入门测试的情况下为比特币代码做出贡献。 如果 PR 没有合理的异议,维护者将合并它。

3-Core 维护者将设置预推送挂钩,以确保没有未签名的提交被推送到仓库中。

4 - 合并提交可以选择通过 OpenTimestamps 加上时间戳。

5-TravisContinuous Integration 系统通常会运行此脚本来检查git树(历史)的完整性,并验证master分支中的所有提交是否由可信密钥签名。

6- 任何人都可以运行此脚本来验证 2015 年 12 月之后所有合并提交的 PGP 签名。我在撰写本文时在笔记本电脑上运行了一次,耗时 25 分钟。

版本安全

1-Gitian的确定性构建系统由多个开发者独立运行,目标是创建同一个二进制文件。 如果有人编译出来的编译版本与其他开发者不匹配,就意味着引入了不确定性,所以不会直接发布最终版本。 开发人员查看出了什么问题,修复它,然后构建一个发布候选版本。 在成功编译确定性版本后,开发人员对生成的二进制文件进行签名,以确保二进制文件和工具链未被篡改并使用相同的源代码。 这种方法消除了构建和贡献过程中的单点故障。 任何精通技术的人都可以运行自己的构建系统,以下是说明:

2- 一旦 Gitian 编译成功完成并由构建者签名,比特币核心维护者使用 PGP 对包含每个编译的 SHA256 哈希的消息进行签名。 如果您决定运行预编译的二进制文件,您可以下载并查看其哈希值,然后使用签名版本信息的哈希值验证其真实性。 以下是说明:

3- 以上所有信息都是开源且可审查的,任何具有技术知识的人都可以访问。

4- 最后,即使上述所有质量和完整性检查都通过了,但提交给比特币核心并最终合并成一个版本的代码并没有被任何中心化实体部署到网络节点。 相反,每个节点的运营商必须有意识地决定是否更新他们运行的代码。 Bitcoin Core 有意不添加自动更新功能,因为这可能会让用户接触到他们没有明确选择运行的代码。

Bitcoin Core项目虽然有这么多的安全措施,但并不完善,理论上可能会被攻破。 比特币核心代码完整性的最后一道防线与其他开源项目相同:时刻保持警惕。 越多的人关注 Bitcoin Core 的代码,恶意代码或错误代码写入比特币版本软件的可能性就越小。

代码覆盖率

BitcoinCore 有大量的测试代码。 有一个针对每个 PR 运行的集成测试套件和一个每晚在 master 分支上运行的扩展测试套件。

您可以通过以下方式自行检查代码覆盖率:

1- 克隆 Bitcoin Core 的 Github 存储库。

2- 从源安装构建所需的依赖项

3-运行这些命令

4- 查看 ./total_coverage/index.html 的报告

另外,还可以查看LCOV生成的代码覆盖率报告(如下图)。

开发比特币的人抓起来了吗_比特币开发者是谁_808比特币创始人颜万卫 炮制比特币风险大

代码覆盖率越高,代码按预期工作的确定性就越高。

测试非常重要,尤其是在进行复杂的更改时,开发人员有时需要进行突变测试(注:一种对程序源代码进行详细改进的软件测试方法)。 Greg Maxwell 在讨论 0.15 版本时对此发表评论:

“测试就是测试软件,但什么是测试中的测试?要进行测试中的测试,你必须破坏软件。- Greg Maxwell”

自由市场竞争

BitMEX 曾发表文章《与比特币核心竞争》概述了比特币实施的生态。 目前有十几种比特币实现,甚至还有更多的“竞争网络”实现。 这就是开源的自由,如果你对比特币核心项目不满意,你可以自由地开始你自己的项目。 您可以从头开始构建或分叉 Bitcoin Core 的软件。

目前,96% 的比特币节点都在运行某个版本的核心软件。 为什么会出现这种情况? 如果切换到其他软件实现所需的努力如此之小,为什么比特币核心会如此近乎垄断? 毕竟,许多其他实现提供了与 BitcoinCore 兼容或至少非常相似的 RPC API。

808比特币创始人颜万卫 炮制比特币风险大_开发比特币的人抓起来了吗_比特币开发者是谁

我相信这是比特币核心成为开发重点的结果。 它有开发人才和开发时间的支持,这意味着Bitcoin Core项目生成的代码往往性能最好、健壮性最强、最安全。 在资金管理方面,节点运营商不想运行二流软件。 另外,考虑到这是一个共识软件,比特币协议没有,也不可能有正式的规范,因为没有人有权限写这样的规范,用focal points来实现会更安全,因为你和网络其余部分的大多数节点都会有更好的容错能力。

谁是核心开发人员?

不熟悉 Core 开发过程的人可能会从外部将 Core 视为一个单独的实体。 离得很远。 核心贡献者之间经常存在分歧,即使是最多产的贡献者也有很多代码没有合并到比特币代码库中。 如果你读过核心贡献指南,你就会知道它们非常宽松,描述这个程序的最好方式是“粗略的共识”。

维护者考虑补丁是否符合一般原则; 符合最低纳入标准; 并判断贡献者之间的普遍共识。

谁是比特币核心的维护者? 他们是在一段时间内做出了高质量的贡献,在项目中积累了足够的社会资本的人。 当现有团队的维护者认为某个贡献者在某一方面表现突出、可靠、积极,能够胜任维护者的工作时,可以授予该贡献者的Github账号commit权限。 首席维护者监督项目的所有方面,并负责协调新版本。 多年来,共有三位首席维护者,他们是:

Bitcoin Core 维护者通常被称为清洁者,因为维护者实际上没有权利做出违背贡献者或用户共识的决定。 然而,由于外界的过度关注,这个角色相当累人。 例如,Gregory Maxwell 在 2017 年出于个人原因放弃了他的维护者身份,这很可能是因为他在扩展期间承受的公众压力。 Wladimir 写了一篇关于作为核心维护者的压力以及为什么 Gavin 的提交权限被删除的文章。

同样,Jeff Garzik 也被从开发团队中除名。 他已经两年没有为 Core 做贡献了。 保留对他的 Github 帐户的访问权限对项目没有好处,只会构成安全风险,并且违反了 Wladimir 在他的文章中提到的最小特权原则。

有些人可能将 Core 视为技术官僚组织或象牙塔,新人很难加入。 但是,如果您与贡献者交谈,情况并非如此。 虽然多年来只有十几个人拥有提交权限,但数百名开发人员做出了贡献。 我自己做了一些小贡献; 虽然我不认为自己是核心开发人员,但从技术上讲我是核心开发人员。 没有人能阻止你做出贡献!

人们似乎最难理解的是,比特币开发的重点不仅仅是由比特币核心 GitHub 帐户定义的组织结构。 虽然 Bitcoin Core 有一些组织结构(使用集中式通信渠道进行协调),但比特币本身并不是由单个参与者控制的——即使是那些在 GitHub 存储库上具有更高权限的人。 虽然维护者政变在技术上有可能劫持网络,审查持不同意见的开发者,甚至抢夺“Bitcoin Core”的名称,但结果将是 Bitcoin Core 将不再是开发的重点。 对维护者行为有异议的开发者可以直接fork,然后转入Core维护者没有管理权限的仓库进行开发。

即使没有“政变”,如果有争议的更改以某种方式合并到 Core 的软装甲中,一些开发人员可以分叉,然后删除有争议的更改,并向用户发布新版本。 例如,当时的 Amaury Sechet 从 Bitcoin Core 中分叉出来,去除了隔离见证,创建了比特币 ABC。 相反,如果 Core 拒绝某人提出的更改,开发人员也可以分叉并添加这些功能。 这样的事情发生过很多次:

分叉代码很容易,但转移比特币开发的重心却很难。 您必须说服开发人员将他们的时间投入到另一个项目中。

也很难让许多用户相信用户不会盲目地追随 Bitcoin Core 的变化。 这可能是一种自我强化的信念,因为如果用户不通过理解他们的选择来参与共识过程,他们就是在将一些权力让给开发人员。 但在 2017 年,用户在 UASF(User Activated Soft Fork)期间行使了权力。 比特币开发者 shaolinfry(化名)提出 BIP148,强制矿工激活隔离见证。 然而,BIP148 因争议太大而无法被 Bitcoin Core 采用,因此 shaolinfry 从 Core 中分叉并创建了比特币 UASF。

在我看来,最好的 Core 贡献者是那些充分行使主权的人,比如 John Newbery。 虽然他没有编译漏洞代码,但他认为自己有责任仔细检查并排除该漏洞被合并到代码中。 而且这个漏洞应该是在测试的时候就发现了。

我们都是中本聪。

为比特币核心做贡献

虽然网上有很多资源,但为 Core 做贡献听起来可能令人望而生畏。 Jimmy Song 写了一篇操作说明“比特币核心开发的简要介绍”,或者您可以在此处查看投稿指南:

Eric Lombrozo 写了一篇文章“The Bitcoin Core Merge Process”,讲述了 Core 存储库如何进行更改。

亚历克斯B。 还写了一篇解释比特币发展背后哲学的文章《比特币发展之道》。

谁控制着比特币核心?

将比特币理解为一个系统是完全不可行的。 定义比特币(控制)就像定义一种语言。 语言是自然产生的,对词义的共识也在演变,而不是字典定义的那样。 正如字典只是描述一种语言现象而不是定义它一样,比特币的实现在代码中描述了比特币的语言。 没有人被迫同意字典中给出的定义,也没有人被迫运行比特币实现并同意比特币实现中的代码。

语言不受民主制约,比特币也不是; 虽然你可能听到人们谈论矿工、节点、开发人员或用户“投票”比特币开发者是谁,但没有任何一种机制可以让任何一种多数都可以迫使少数持不同政见者接受他们不同意的事实。 同意变更。 比特币是无政府状态,没有统治者,但也不是没有规则。 规则由各个网络参与者制定和执行。

虽然比特币协议本身的更改通常是通过提交比特币改进协议来完成的,尽管这是推荐的最佳实践,但并不是每个人都必须遵循。 这只是通过同行评审和建立共识来指导变革的一种更正式的方式。

虽然这很难解释和理解,但它是比特币反脆弱性的一个重要方面,如果有一个控制点,那么也会有一个单点故障,可以被强大的实体利用。 最终,每个节点运营商通过确保没有人违反他们商定的规则来自主管理。 这种安全模型是比特币自下而上治理的基础。

没有人控制比特币。

没有人控制比特币发展的重点。

第二章结语

Jameson Lopp 的论点说服了你吗?

原文链接:

@lopp/who-controls-bitcoin-core-c55c0af91b8a

今天出售 Ledger 硬件钱包

我开了一家周边产品网店,欢迎加入我

808比特币创始人颜万卫 炮制比特币风险大_开发比特币的人抓起来了吗_比特币开发者是谁