当前位置:首页 > 区块链新闻 > 正文

码农们的福利来了:和Bitcoin Core顶级贡献者一起学习比特币代码审查

来源: 互联网时间:2019-07-22 14:59:02

据Coindesk 7月19日报道,6月19日,Chaincode开发者约翰•纽贝里(John Newbery)召集了一组开发人员,以审查比特币代码的一项拟议更改。

bitcoin-503581_960_720


图片来源:pixabay


会议通过互联网中继聊天(IRC)进行,其主题是这一有助于防止流氓矿工膨胀比特币通货的变更是否是积极且低风险的,还是会带来负面影响。

因此,纽贝里的目标是将他所知道的关于审查这些代码的信息传递给其他人。

img1


图片来源:Coindesk


这一能阻止“时间扭曲攻击”(timewarp attack)的变更是否真的可靠?纽贝里在解释攻击矢量时写道:
“时空扭曲攻击利用了这一点,将难度调整块区推到未来,然后将下一个区块推回到现在。”

但纽贝里举办这些会议的事实,可以被视为比特币开发者社区成熟的标志,因为这说明了该项目的顶级程序员一直在努力让项目更具包容性。审查代码的过程以前可能还没有被如此公开和深入地讨论过。

纽贝里成立了Bitcoin Core审查俱乐部(Bitcoin Core Review Club),向程序员们提供一些建议,帮助他们弄清如何审查一项代码更改并确定它是否对该加密货币有益。会议记录现在每周都发布在网站上。

这是有可能的,因为比特币的代码是开源的,其保存在GitHub上,任何人只要有联上网就可以查看甚至更改代码。这一过程将项目从代码人员口中的“monolithic blob”变成了更容易被开发人员阅读的软件,并且具有更少的关键漏洞。人们一直在努力改进它,其崇高的最终目标是使它成为未来货币的一个有价值的代码基础。

所以,任何人都有可能成为比特币代码的贡献者之一。与私有代码不同,比特币的代码任何人都可以查看和使用,这就是所谓的“开源”。

它被称为“可编程货币”的一个原因是,与其他数字货币不同,世界上任何有这方面知识的人都可以尝试为该货币添加新的代码特性。学习代码库的一种方法是审查和测试程序员提交的代码,以确保它确实有效,并且不会引入漏洞或不幸的现实,意外地将比特币网络一分为二。

但是,面对这么多代码页和数百个提议更改,很难知道从哪里开始。该俱乐部网站解释道:

“这个每周举办的IRC俱乐部是为那些想要帮助审查Bitcoin Core的拉取请求(pull request),但发现过程无从下手的人而设的。

审查和测试拉取请求是开始为Bitcoin Core做贡献的最佳方式,但很难知道从哪里开始。比特币代码库有数百个开放的拉取请求,其中许多请求需要大量上下文知识,而且贡献者和审阅者经常使用不熟悉的术语。”


因此,尽管这种数字货币的代码是公开的,任何人都可以查看或更改,但这样做并不一定容易。要想知道审查什么需要练习。

这个过程是这样的。


任何人都能做到


首先,用户可以访问托管各种开源代码项目的网站GitHub,上面有一个专门针对Bitcoin Core这一大多数用户运行比特币软件的底层实现代码库。

您会注意到GitHub有很多功能,但是审查代码基本上就是查看“拉取请求”,即整个生态系统的开发人员提交的供审查的一系列更改。

img2


图片来源:Coindesk


换句话说,上面有300项更改还没有经过足够的审查,它们尚未正式添加到代码库中。这些代码更改范围很广,从使描述代码的文档更容易阅读,到提高比特币的性能等,不一而足。

从这点上讲,开发人员正试图决定是否应该批准这些更改。问题是,只有有限的开发人员有足够的经验来审查代码更改,以确定是否应该将它们正式添加到代码库中。正因为如此,一位Bitcoin Core贡献者曾将拉请求列表描述为“超棒想法的坟场”。

这就是纽贝里试图在这一过程中提供帮助的原因。

那么,一个人实际上是如何审查一项代码更改的呢?正如纽贝里在俱乐部网站上所描述的,可以从几个关键步骤开始,比如浏览“Bitcoin Core贡献指南”并使用比特币核心的编程语言C++进行修改。

接下来就是简单地选择一项要检查的更改。上面有超过300个拉取请求,从哪里开始呢?对于那些还不了解代码库的人来说,最好的选择是那些被明确标记为“优质问题”(good first issues)的代码更改。

当准备工作结束后,开发人员需要“克隆”存储库,或者使用git将代码库复制到他们的计算机上,以便他们可以测试更改是否可以按设计运行。

将整个代码库复制到您的计算机上,只需一个简单的命令就可以了。

img3


图片来源:Coindesk


这样以后,你就可以查看拉取请求了。相关开发人员应该运行所有的“测试”,以确保代码更改不会意外地触发另一段代码,然后再检查其余的代码。


代码审查者的想法


代码审查者需要考虑什么?

首先是应该优先考虑的事情。决定是否应该进行更改,尤其是关键的更改,基本上是基于“粗略的共识”,这意味着大多数活跃的贡献者都会同意应该进行更改。在另一次俱乐部会议上,纽贝里说道:

“我对创建拉取请求的想法是:没有人必须为你作审查。任何审查你代码的人都是在帮助你。如果你创建一个拉取请求,你就在和其他拉取请求一起在争夺审查时间。”

纽伯里还提到了另一个IRC小组,开发人员可以在该小组中问到与Bitcoin Core开发相关的问题。他补充道:
“如果你对其他人对你的拉取请求的用处有疑问,请用# Bitcoin-Core –dev进行提问,或者直接咨询其他贡献者。”

也就是说,开发人员并不总是就某一更改是否值得添加达成一致。有一周,这群开发人员集中讨论了一项有争议的代码更改。一些人认为坏处大开好处,而其他人仍然认为它可能是有用的。

但即使这个想法总体上是好的,也有一些次要的担忧。里面有漏洞吗?代码更改是否附带确保代码更改按计划工作的测试?在审查代码时,这些问题都是需要花费大量时间来回答的。

例如,在5月29日的会议上(你可以在这里找到完整的会议记录),开发人员查看了与比特币节点钱包部分的性能增强有关的代码更改。

一位化名“Ariard”的贡献者主持了这次会议,他回顾了他们多年来形成的审查流程。他说道:

“我首先试着确定这是哪种类型的拉取请求: Doc、代码风格、漏洞修复、新功能,还是测试添加。因为在我看来,知道这个事实将指导你如何第一次阅读提交,你需要多少时间进行审查,以及需要哪些测试。”

另一位审查人员指出,他们注意到,只要检查一下代码运行的时间(之前和之后),就会有改进。另一位名为“jb55”的用户说道,“我的10000个密钥导入时间从8分钟变成了3秒。”

会议记录中还有关于如何简化这一过程并使其更容易审查的各种其他提示,未来还将安排更多的会议。接下来的几个部分将由比特币技术作家兼贡献者大卫•哈丁(David Harding)负责。

免责声明:

1.本文内容综合整理自互联网,观点仅代表作者本人,不代表本站立场。

2.资讯内容不构成投资建议,投资者应独立决策并自行承担风险。