首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链技术的发展

对全球开源平台GitHub的一项新研究总结了关于区块链开发的经验教训——项目如何发展,未来可能会发生什么,以及对金融服务公司的影响。

理解噪音

我们无法准确预测区块链技术的发展轨迹和影响,但我们也不应该忽视它的早期发展的成败得失。跟踪这一可能潜力最大化的新技术的发展,我们才能捕捉到成功的机会。

要弄清楚互联网或手机等基础技术如何诞生和成长并不容易。新技术经常吸引各种各样的开发者,包括来自世界各地的许多自由职业者。开发人员数量众多,他们试图解决的问题类型以及地理分布等因素各不相同,都很难预测新技术的发展方向。

但是区块链开发的根本区别可能在于它主要是在开源环境中进行策划的。比特币是原始区块链系统,以开源软件为基础。

因此,为了更好地理解区块链及其生态系统的发展,我们在开源环境中对区块链项目进行了广泛的数据分析。我们的研究似乎是首次尝试使用全球软件协作平台GitHub上提供的元数据理解区块链演变的经验。

我们选择GitHub是因为它是世界上最大的已知软件协作平台,拥有超过6800万个项目和2400万参与者(图1)。GitHub似乎也承担了区块链社区最重要的项目。GitHub上的活动提供了一个独特的机会,可以确定区块链开发的背后是谁,支持哪种程序设计,人才在哪里,项目和开发人员的网络和社区的组织方式,以及将资源投入到哪些库。

金融服务公司似乎在区块链适用性方面处于领先地位; 他们目前在市场上拥有最多的区块链商业用例。我们的研究结果可以帮助企业根据区块链生态系统的演变情况提高识别成功项目和机会的能力。

除非另有引用,否则本文中我们在GitHub上报告的区块链活动的所有数据和统计数据都是我们分析GH Torrent项目和GitHub API的结果。

区块链在一个开放的世界中蓬勃发展

虽然在公共论坛上共享软件代码可以追溯到20世纪50年代,但在过去的30年里,开源平台只是少量软件开发的中心(图2)。互联网是扩大规模的重要推动因素:早些时候,开源活动主要是学术领域,但互联网让所有人,业余和专业,个人和商业的爱好者和专家都能接触到。也就是说,开源软件开发的相关性在一段时间内与安全许可和专利保护相关的商业实体围绕软件代码设置了高度限制。然而,颠覆性创新促进了共享经济的不断增长,这将重要的软件开发重新转向开源平台。

开放源代码可能是吸引大量区块链编码工作,人才和共同目标的理想培养皿,这些目标使具有共同标准的生态系统建设加速。它还可以降低企业将资源投入到一项仍然是大部分实验性技术中的成本。在“Intranet”区块链学习平台中开发概念证明似乎不像学习如何在“互联网”区块链上开发业务解决方案那么高效。在当前区块链技术的演进阶段,开发人员可能有兴趣在开源领域开发区块链解决方案或观察开发区块链解决方案。区块链看起来有更好的机会通过开源协作更快速地实现严格的协议和标准化,这可以使开发权限区块链变得更容易和更好。

我们在GitHub上的主要分析单位是存储库。存储库包含项目背后的相关代码和文件,实际的协议和程序的实现驻留在该项目中。在整个报告中,我们互换地使用术语“存储库”和“项目”。我们还将看到两类项目作者:用户——与机构无关的个人(用户); 和组织 ——与金融服务公司,初创公司,研究中心或软件基金会相关的账户。

在接下来的三节中,我们将看看存储库——它们的作者,它们的生存机会,以及它们如何融入社区和社区网络;哪些编程语言流行以及为什么;以及人才在哪里。

存储库揭示了有关组织的有趣趋势

支持比特币的核心代码于2009年4月发布。从那时起,GitHub与区块链相关的项目数量显着增长,平均每年新增8,600多个项目。仅在2016年,就有近27,000个新项目(图3)。

项目数量的增长与用于开发这些区块链技术的内容的快速增长相匹配。

在分析区块链存储库及其内容时,我们注意到越来越多的组织似乎卷入其中。2010年,组织开发的项目不到所有项目的1%。到2017年,他们的区块链项目占11%(组织目前占总数的7%,而不仅仅是GitHub上的区块链软件开发)。最近关于商业组织通过开源获得区块链计划成功率的数据看起来很有希望; 一些备受瞩目的大型商业实体已经这样做了。

特别重要的是,一些组织开发的一些项目已经产生了一些开发人员现在用来构建应用程序的新平台(如以太坊,Ripple,Corda和Quorum)。据称组织拥有的项目往往比用户单独开发的项目更新更频繁,据报道其同质化的可能性高出五倍,这意味着区块链社区认为它们最相关。

复制项目时,复制项目的帐户可以使用所有内容,因此可用作为知识传输机制。这个过程通常被称为引文网络,其中最常被复制的项目在项目网络中占据更重要的地位,我们称之为项目中心性。在这个标题下,一些最核心的项目是由组织开发和维护的:比特币核心,Ethereum的C ++和Go实现,Ethereum的Python客户端以及比特币改进建议。要交互式地探索GitHub中各种网络的描述,请参阅我们的交互式仪表板中的网络可视化。

在探索上述互动图时,请记住,以太坊和比特币的初始项目由组织(基金会)维护,并且GitHub中的大量区块链项目和应用程序实际上都建立在这两个项目之上。简而言之,组织主导的项目是数千个其他项目的主干代码。在受欢迎程度,引用和协作的区块链空间中的20个最重要的项目中,有18个是由组织创建和维护的(见表1)。

开源组织的承诺似乎主宰了区块链的核心发展,因为它最有可能比个人参与开发更具挑战性和目的性。一旦组织实施资源,通常会有更多的动力来确保项目取得成功。鉴于组织参与者彼此联系超出任何特定项目,往往对彼此负有更大的责任,这也推动了持续发展。

区块链的演变主要是关于“社区”

社区开源是一组具有共同兴趣和改进现有内容开发活动。我们在GitHub上确定了772个不同的区块链社区。每个社区通常由这些项目之间的协作模式来定义,这些模式可以产生新的应用程序。例如,以太坊平台最初由比特币项目中的两位核心人物开发; 他们的项目已经演变成GitHub上最大的区块链社区(通过活跃的项目进行衡量)。

在区块链空间中,项目社区至少包括25个项目,其中一些大型集群包括数百个项目。

通过研究社区,我们可以探索开发专业化的项目如何创建新的应用程序。例如,我们发现用于支持众包和初始投币产品(ICO)的工具通常与大型区块链子社区中的项目相关联:为智能合约,托管账户开发内容的项目以及Go语言中以色列背后的核心代码。毫不奇怪,这似乎与以太坊区块链上提供的许多ICO的偏好一致。以太坊允许开发商和初创企业通过智能合约在Etherum区块链上发行自己的货币,包括以ICO的形式,这可以严重降低令牌和加密货币的进入门槛。

2014年创建的Monero加密货币是一个有趣的例子,Monero在私有性(不允许重用地址),可扩展性(无块大小限制)和安全性(更强制权力下放)。但是,包含Monero和相关项目的社区与包含主要比特币存储库的社区有着密切的联系。

区块链开发商可能对密切关注社区潜力尤为重要。我们的分析表明,专注于区块链领域特定行业或类型应用的许多项目正在丰富该生态系统,因此具有强大的社区联系。

解读区块链项目的死亡率

开源项目的严峻现实是,大多数已被放弃或没有达到有意义的规模。不幸的是,区块链不能幸免于这种现实。我们的分析发现,只有8%的项目是活跃的,我们定义为在过去六个月内至少更新一次。在这里,组织是一个积极的区别。而用户开发的项目中有7%是活跃的,15%的组织开发的项目是活跃的。

项目的死亡率往往是理解项目中心性和协议和最佳实践的出现的重要因素。出于商业目的,由于很少有项目可能会存活下来,因此了解导致项目死亡的因素可能是希望搭载成功代码,模拟成功项目或建立内部功能的公司的基本技能。请注意,在GitHub上开发的项目中约有90%变得闲置,项目的平均寿命约为一年,死亡率在头六个月内出现最高。我们的分析揭示了与项目变得不活跃相关的11个变量。在这些变量中,组织尤其应该考虑以下三点:

首先,也许并不奇怪,用户开发的项目往往寿命更短,而且是独立的区块链技术应用程序,而不是创建多个应用程序的基础库。我们发现用户更倾向于鼓励,发展和原型设计,而这些想法通常不会实现。

其次,是项目贡献的集中程度。我们的分析表明,大多数具有高死亡率的项目是其中一个提交者生成绝大多数内容的项目,实际上,中间项目(通过提交者数量衡量)只有一个提交者。通常这个唯一的或者主要的开发者将注意力转移到其他项目上,或者简单地变得脱节。另一方面,大多数生存的项目往往有多个提交者,其活动集中程度较低,归因于某个特定的提交者。可以预见的是,大多数组织都采用后一种方式。

第三,项目热度高,项目的副本(叉)更多,而那些很少或根本没有副本的存在更容易失去活力,如将其拷贝。事实上,就后者而言,项目的副本往往具有较少的提交者,因此死亡率较高。这并不是说没有非常成功的项目是分叉的产品,但是由于缺乏新的提交者,通常分叉的项目往往会有高死亡率。

编程语言倾向于金融服务

对于潜在的开发人员来说,首先经常出现的问题是“我们应该如何开始?”为了帮助回答这个问题,找出现有项目的底线是非常重要的。尽管根据区块链数量来衡量,这并不是最流行的语言,但我们发现C ++在生态系统的中央仓库中使用最多。这并不奇怪,因为C ++已经在金融服务行业用了一段时间来开发需要高效内存管理,速度和可靠性的应用程序。对于加密货币项目背后的重负(包括比特币),C ++仍然是受欢迎的语言。而对于GitHub上最核心的版本库,C ++几乎占所有内容的一半。

但是,我们还发现,谷歌在2009年开发的编程语言Go似乎越来越受到关注。它现在是用于区块链相关项目的第二大语言。Go似乎已经从边缘语言迅速演变为GitHub区块链生态系统的核心之一。就在两年前,在2015年,在Go开发的区块链空间项目中,所有内容的比例不到2%。程序员将Go的崛起归因于它的简单性和可扩展性。据报道,尽管金融服务公司据说依赖于C ++的内存管理,速度和可靠性,但可扩展性似乎也是金融服务公司与多个利益相关者进行交互和交易的高度优先事项。据报道,这似乎也说明了以太坊和Hyperledger项目,这两个项目都涉及将其他技术整合到区块链中,以扩大其在加密货币之外的使用,据报道有利于Go。

通过地理识别区块链人才

鉴于金融机构面临的一个重要问题是雇用必要的人才来开发,实施或维护新技术,我们认为知道GitHub贡献的顶级区块链人才会有帮助。大多数GitHub项目所有者 - 开发仓库的开发人员 - 都住在北美或欧洲,旧金山是最集中的地区。有趣的是,接下来两个最受欢迎的城市是寻找项目业主的两个传统金融服务中心:伦敦和纽约。

我们发现来自旧金山的项目多种多样; 它们包括交换解决方案,加密货币的钱包,不同区块链的接口(例如Ripple,Hyperledger和Ethereum)以及加密货币的支付工具等等。伦敦的生态系统也各不相同,但更多的项目与以太坊社区相连,这也意味着更多的项目围绕伴随的技术,例如数字身份,智能合约和开放式API。纽约的参与者似乎专注于面向传统金融服务的项目。值得注意的是,中国的高水平活动,特别是上海和北京。在这两个城市中,大部分项目都涉及加密货币和加密货币交易所,重点在于可扩展性。

金融服务如何使用GitHub分析?

数据科学家开发并发展了一种分析和组织GitHub数据的方法,以更好地理解年轻的,可能是变革性的技术及其生态系统的演变。我们的总体目标是提供见解,帮助金融机构做出更好,更明智的决策并避免陷阱。

通过这一努力,我们了解到金融服务公司参与了GitHub的区块链开发。GitHub上基本上有两种类型的参与者:提交者和观察者。提交者对代码进行提交或贡献,而观察者在不做出代码贡献的情况下跟踪项目的开发。到目前为止,很少有金融服务公司的员工是代表公司进行项目的提交者。但是,有一些知名金融服务公司不仅承诺实际执行自己的项目,而且还在自己的品牌下进行重大承诺。

尽管如此,金融服务公司似乎主要从事GitHub项目的观察员。这些观察者很难获得实际的号码,因为他们可以在手柄或私人电子邮件地址下观看。无论如何,我们的分析可以为金融服务提供者和观察者提供一个独特的机会,以获得对区块链生态系统的大量细致入微的观点。利用我们的分析方法,企业现在可以针对多个项目进行可能的参与或学习,使用各种指标确定人才,了解协议和趋势的变化如何指向标准化和互操作性,最后,所有这些和更多可以增加他们对区块链演变的理解。

具体来说,我们的分析可能使金融机构和其他公司能够:

为未来的创新寻找机会——投资的地点,数量以及时间

确定竞争对手已经在玩什么,并确定差距

了解并预测哪种语言正在使用哪种类型的应用程序,并据此进行投资

确定人才和专业知识的存在以及如何最好地利用人才的地理分布

评估合作伙伴关系和合作机会

我们希望这些发现能够使金融服务行业掌握可能需要的数据,不仅能够根据区块链生态系统的演变如何更好地确定成功的项目和机会,还能够成为区块链发展过程中有影响力的参与者。

附录

网络分析

我们使用网络分析领域常用的几个指标,如连接数(度),中心性(PageRank评分)和聚类(社区检测)。我们在分析中定义了三种类型的网络连接:

协作衡量项目对彼此的贡献。为了构建这个网络,我们确定了在我们的区块链项目领域彼此合作的存储库,而不是整个GitHub集合。

引文衡量了另一个项目对项目内容的使用。被高度引用的项目往往具有很高的中心性分数(参见下一节)。为了构建网络,我们确定了复制存储库的用户,将他或她的项目与他或她所复制的项目相关联。

追随者衡量一个项目在其他项目中的受欢迎程度。为了构建网络,我们确定了遵循我们的Universe中的特定存储库并加入这些用户项目的用户。

中心分析

为了确定我们网络中最核心的存储库,我们使用了PageRank(PR)分数。PageRank由Google开发,是识别网络中心性的常用指标,并已在多个领域得到广泛应用。我们计算了我们三个网络中每一个的PR分数。一旦我们获得了PR分数,我们就会根据该指标的价值对项目进行排名。我们重复了三个网络的流程,并创建了相应的综合评分:

接近1的Centrality Score值表示网络中更重要的角色。

识别社区

为了识别我们网络中的社区,我们实施了一种常用的社区检测算法,用于大型图表,即快速社区检测算法。该算法遍历不同的网络连接,将项目添加到社区,直到达到本地最优值。该算法重复这个过程直到没有进一步的改进。我们在协作网络中实现了该算法。

项目死亡率

为了确定与一个项目变得不活跃相关的因素,我们实施了两个分类模型:逻辑回归和随机森林。逻辑回归被用来识别有意义的变量,而随机森林被用来识别哪些项目变得闲置。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180516G1LE9M00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券