最新Core发布中 比特币P2P如何实现加速
时间:2017-03-14 来源:玩币族 作者:玩币族Wendy
译文:玩币族Wendy “Satoshi留给我们一个巨型代码库。” 比特币开发者Cory Fields如是说,尽管Bitcoin Core总是被认为是创新,但其代码背后是某种混乱。 2015年开始,这个问题Fields等人就开始努力应对,当时他计划移动某一部分代码:对等层。 开发者总是遇到的问题是,不是所有部分都整齐的分散。所以,如果开发者改变某一部分本应该影响比特币功能的结构,那么它无意识地影响另一个功能。比如说,验证、池、钱包或者P2P等。举例来说,这让新的比特币参与者更难入门。 因此,在诸如Fields和libconsensus项目中(libconsensus是一个正在开发的项目,允许可替代方式来保存比特币网络共识),其目标是分散代码到更多不同的块中,让开发者了解各部分如何组合在一起,过程更加简单和快捷。 Fields的工作由麻省理工数字货币项目支助,他一直致力于解决对等代码库问题。 他的大多数工作在Bitcoin Core最新软件发布中亮相。 Fields 告诉CoinDesk: “据我所知,这是首次大规模对等代码改革。” 然而,随着时间推移,许多开发人员,比如Jonas Schnelli和Matt Corallo已经做出了很多相关改变,更重要的是很多已经开始着手审查与测试更改。 对等层涉及到网络中成千上万比特币连接节点的关联(也许超过50000,准确数量很难确定),并且节点还在不断互换“消息”,随着使用者发送比特币或者挖矿者开发新区块,不断传送信息。 漏洞大发现 棘手的问题在于,比特币网络被估值在190亿美元左右,这意味着改变底层代码必须非常仔细。 由于种种原因,重构并不是简单的过程。甚至对于Fields而言,作为Bitcoin Core的积极贡献者之一,这也不容易“我几乎把所有醒来的时间都放在比特币上”。 首先,他尝试从头开始分离层。但这是个“严重失误”。 然后,他致力于提高当前代码库,这比预期的效果好,但也导致了被称为“Satoshi时代”漏洞大发现。 “当我开始拆分各种东西时,我注意到一个奇怪点,在初始下载块时Core宽度的使用问题。” 问题在于,当节点从另一节点下载区块时,这个时间有时快,有时慢,而且不可测。 进一步研究,他和其他开发者确定,节点总是会拒绝同时发送数据和处理数据。节点只会每次进行一个步骤。 速度修复 在最新Bitcoin Core代发发布中,团队的修复方案最终出台,改善了节点间互传信息的速度问题。 “特别是,P2P层速度大大提高。”Fields说。 他将之前比特币版本(0.13.2) 与最新版本(0.14.0)对比,进行了多次试验,节点被布置在亚马逊EC2云端之上,同时拥有2个CPU和4GB的RAM。 这些试验证明速度翻倍,至少在对比两个v0.13.2节点和v0.14.0节点的数据发送情况上。
需要注意的是,在实际网络中,这种性能改进可能会低于2倍,根据Fields. 长期优势 当前,对等层大部分已经与其他分离。 值得再次提及的是,上述性能的改进大多数用户可能不会注意到,但是开发者会感觉很好。 这就是说,他们希望可以产生长期影响。 “我希望我们能够让P2P速度更快。”Fields说。 比如说,如果Fields还未隔离这些代码,这将很难完成最新版本Core的改变。 他说: “与0.14版本相比,这已经是相对简单的改变,之后将会复杂得多。” |