这次更新可能会永远改变比特币的发展

原文:Decrypt

作者:Alyssa Hertig

翻译:Claire

来认识一下libbitcoinkernel——这是一个旨在帮助开发者在基于比特币开发时避免无意中修改关键代码的长期项目。 “Libbitcoinkernel”是对比特币代码的一项深远重构,虽然至今尚未广为人知,但它很可能让开发者更加方便地尝试对比特币进行修改。

这个项目的宏伟目标是对比特币核心代码进行解耦,这是支持比特币的主要软件,目的是将大部分“关键安全”代码从其它部分中分离出来。这样一来,它有可能为比特币的新改进铺平道路。 对这些代码进行解耦将使开发者的工作变得更轻松,而这些改变也很可能(最终)影响到用户。开发者能够更快地推出新特性——无论是隐私、安全还是更易用的钱包工具——用户就能更快地使用它们。

Libbitcoinkernel这个名称既长又深奥,因为它最终会成为一种开发者可以使用的库。但即使它主要是针对开发者的,它对整个BTC生态也可能产生广泛的影响。

比特币开发者Carl Dong对Decrypt说:“当我意识到Libbitcoinkernel可能成为解决比特币核心一些社交障碍的技术方案时,我便决定投入时间到这个项目中。”他是这个项目最初的发起人。

自那时以来,Dong已经退后一步,由Spiral支持的开发者Sebastian Kung、资深比特币核心贡献者Cory Fields等人接替了他的位置。Kung对Decrypt表示,他认为目前Libbitcoinkernel是比特币领域中最具影响力的项目之一。

避免“梦魇情景”

要弄懂Libbitcoinkernel,首先得知道什么是“共识”代码。这是比特币核心(Bitcoin Core)的关键安全代码,是比特币网络的基础。它确保网络中所有的节点都遵循相同的规则。 如果网络中一半的节点遵循一套规则,而另一半则遵循稍有不同的规则,网络就有可能发生“硬分叉”,从而一分为二。Dong在一个视频中解释了他在Libbitcoinkernel项目上的工作,他说:“这是让比特币开发者夜不能寐的梦魇情景。”

但问题是,这些共识代码与比特币核心的其它代码紧密相连。这给想要做出改变的开发者带来了困扰,因为他们不总能轻易识别出哪些是关键的安全代码。即便他们能识别出来,要避开这些代码也需要花费一些时间。

Libbitcoinkernel的目标,就是将这些代码逐渐分离,放到一个独立的库中,这样开发者在处理其它代码时就不用再小心翼翼地避开这些关键代码了。

如果开发者在确保不触碰到共识代码上花费的时间减少,他们就能有更多的时间来开发更多有趣的BTC功能或进行错误修复。

Kung对Decrypt表示:“这让开发者能更集中精力审核关键的共识代码,而不用过分担忧比特币核心的其它部分。它还首次让开发者能够将共识代码看作是一个清晰定义的整体来进行讨论。”

"炫目"的目标:多种比特币客户端

Libbitcoinkernel还有一个更为长远的目标。Bitcoin Core是比特币代码的主要实现。用户通过运行它来连接到比特币网络并验证交易。

但如果除了Bitcoin Core之外还有其他选择呢?如果有这样的选择,开发者就能更容易地试验新功能。Dong解释说:“不同的实现还可以依照目标用户的需求,对功能进行不同的优先级排序。”

其次,多种比特币实现可以增加网络的韧性——如果一种实现由于非共识相关的错误而出现问题,另一种实现可能不受同样的错误影响,从而保持比特币的完整性。这可能会加强比特币的去中心化,这也正是BTC的全部目标。

但实现多客户端并非易事。在没有Libbitcoinkernel的情况下,许多BTC开发者都对实现多种实现表示担忧。原因还是回到了共识代码的纠缠。假设“比特币B”试图复制Bitcoin Core的代码。如果比特币B的开发者在重新实现这段代码时出现一点失误,网络可能会因一次非预期的硬分叉而一分为二。

Libbitcoinkernel可能会改变这一点。通过将共识代码提取到一个单独的库中,Bitcoin Core和比特币B可以使用相同的共识代码。两种实现之间因共识细微差异而造成的混乱不再需要担忧。

Dong说:“有了可重用的共识库,人们就能构建替代的比特币实现,而这以前被认为是由于现在已经消除的潜在共识不兼容性而过于危险。”

从过去的尝试中吸取经验

将共识代码与其他代码分离并非新颖之举。在比特币发展的早期,就有过将一部分共识代码分离出来的尝试,但该项目最终未能完工。Dong形容,2016年重新启动该项目的尝试可能是“因过于雄心勃勃而未能承受重压”。

有鉴于此,Dong和Kung采取了更为渐进的策略,逐步将共识代码从其他代码中提取出来,这种方法“充分考虑了庞大的工作量”。

因此,这个项目变成了一个跨年度、分阶段进行的长期工程,对此极度好奇的读者们可以在开源社区GitHub上实时追踪项目进展。项目团队已经提交了许多拉取请求(向Bitcoin Core提出的代码修改建议),而且还有很多工作要完成。

开发者预计,整个项目将会经历数轮发布周期。Dong表示:“这个项目就像一场马拉松,而且是场漫长的马拉松。”