近日,全球著名会计事务所“德勤”公布的《Evolution of Blockchain Technology》调研报告显示:2016 年在 GitHub 上推出的超过 2.6 万个基于区块链技术的新项目中。目前已有超过 92% 的项目长期处于不活跃状态,濒临死亡,只有 8% 处于活跃状态(在过去六个月至少更新过一次)。基本上,这些项目的寿命只有短短一年,多数项目不过半年就已胎死腹中。 在 GitHub 上区块链项目的现实情况是,多数项目被放弃或者也没有达到较大的规模。单纯依靠开源社区的区块链项目在未找到合适的土壤盲目落地,很容易陷入死亡的命运。 一、何人推动? 区块链,因为开源而为大众所知,也因开源成为 2016 年最受人关注的技术。从 2009 年比特币的源代码公开后,数据显示平均每年有 8600 多个区块链项目加入 GitHub,年综合增长率超过 20%。其中,9375 多个项目来自企业、初创公司和研究组织。 从数量上来看,在 2010 年,由企业组织开发的项目不到 1%,到 2017 年,则达到 11%。但从项目活跃度上来看,由组织开发的项目往往比个人用户开发更为频繁,且被复制的可能性要高出五倍。数据显示,来自组织开发的项目活跃度为 15%,个人用户开发的项目活跃度仅为 7%。相比来说,由组织推动开发的项目更容易存活下来。 二、谁的问题? 德勤认为,区块链开源项目失败的原因可以主要归结为以下三点: 第一,个人用户开发的项目往往寿命更短,且是独立开发的区块链技术应用,而非创建多个应用的基础库。作为个人用户,他们更倾向于修改、开发、设计原型,而这些设计通常不会获得很高关注度。 第二,项目贡献的集中程度。死亡率高的项目大多是一个开发者包揽几乎所有内容产出的项目。而基本上,一个项目也只有一个开发者,所以他对这个项目的注意力往往会被分散或者打断。另一方面,多数存活下来的项目往往会有多个开发者,其中一名为主要推动者。基本上,多数组织项目的推动是以这种方式进行的。 第三,有着高复制量的项目也往往可以存活下来,而复制量少或基本没有复制的项目容易死亡。此外,项目的复制版本如果没有新的开发者介入的话同样也会死亡。 三、用什么语言? 从区块链开发人员最常用的编程语言进一步分析发现,从区块链代码库数量来分析的话,德勤指出,C++并非最流行的语言,但 C++在区块链生态系统的中心储存库中应用最多。尤其是在金融行业,C++往往被用来开发高效内存管理、高速度和高可靠性的应用。同时,谷歌在 2009 年开发的 Go 语言也逐渐发展成为区块链项目中欢迎程度第二位的编程语言。 四、哪些地区使用最高? 从 GitHub 上区块链项目数量的区域分布上,可以看到,旧金山、伦敦、纽约占据前三名。德勤指出,来自旧金山的项目是多种类型的,包括交易解决方案、加密货币钱包、不同区块链接口、以及加密货币的支付工具等。而在伦敦和纽约,作为重要的金融交易中心,伦敦的项目主要来自以太坊社区,如围绕技术相关的数字身份、智能合约、开放式 API 等。 值得一提的是,中国北京和上海同样在区块链项目数量上排名靠前。在这两个城市中,大部分项目都设计加密货币和加密货币交易,重点在于可扩展性。 五、区块链该何去何从? 2008 年,区块链的概念首次在《Bitcoin: A Peer-to-Peer Electronic Cash System》中由中本聪提出。发展到如今,以区块链为底层技术架构应用的分布式账本技术体系有比特币(Bitcoin)、以太坊(Ethereum)、瑞波币(Ripple)、比特股(Bitshares)、超级账本(HyperLedger)等。简单来说,区块链就是一种去中心化的分布式记账方法。 然而,自今年 9 月 4 日,ICO 被国家监管部门仅紧急叫停之后,媒体铺天盖地的负面报道席卷而来,整个区块链创业圈顿时进入一片萧条,众人惶惶不安,一场针对虚拟货币的打击风暴似乎才刚刚开始。不是因为技术和应用,区块链技术的应用在利益追逐者的嘴中变了味道,也被人戴上了“骗局”的帽子。但作为对传统编程范式的颠覆,区块链技术的存在依然有其合理之处。 在《程序员》杂志《关于区块链,程序员需要了解些什么?》中,SAP 公司咨询服务部架构师曹严明从去中心和去中介、隐私保护、时间戳三方面特性进行了探讨: 思考一:随着几乎所有的应用,都开始有相应的基于区块链技术的去中心化版本,应用是否需要去中心或者去中介?常见的几种去中心或去介质技术如点对点网络( P2P network)、去中心化数据库、去中心化应用(Decentralized App)、共识算法。 思考二:基于传统应用架构对隐私保护或安全性设计的优先级并不高,架构师如何从技术上加强对个人隐私的保护?如何通过哈希算法、公钥加密、默克尔树等加密技术的应用为隐私信息提前上好一把锁? 思考三:区块链在 P2P 网络上通过节点间的共识算法实现了一个分布式的时间戳服务,但对于一个普通的应用,如何实现这样的一个时间戳服务呢?哪些数据、在何时又需要时间戳呢? 目前来看,区块链仍处于初始阶段。本文引用的德勤关于 GitHub 上区块链开源项目的数据引用,也可以看到:一方面由企业组织推动的区块链项目成为未来开源社区主要活跃的对象,相比个人,组织对项目的推动要有一定的目的性。一旦组织实施资源,通常会有更多的动力来确保项目成功。而另一方面是开源本身就具有一定的难度。如果开源仅凭个人用户的兴趣来维持,不同想法和思路也会给开源造成一定影响,加之开源项目因为功能性,在宣传和预期方面很难到位,也很难吸引更多的开发者参与。 与此同时,对于目前多数区块链技术落地来看,多数仍在探索区块链使用案例、且很难找到用户,而这恰恰是该行业成熟的迫切要求。 |