巴比特论坛

发表于 2016-1-9 09:45:22 | 显示全部楼层
前言

本文主要讲解技术选型,币圈开源项目使用的开发语言现状,以及被程序员广泛参与的前10个有关比特币的开源项目。

开发一个产品之前,我们总会纠结要选择使用什么样的技术。考虑的因素有几个,其中包括自身所掌握的技能,项目兼容性,软硬件环境,以及应用场景等。

不管怎样,寻找一种通用的语言平台往往是相对合适的。这样做,可以有更多的案例学习,获得更多的社区支持,大大降低技术风险。

开发加密货币,我们计划使用Nodejs,是否可行?需要尽可能的,从各个方面考察一下。

Nodejs在开源社区很流行

在开源社区, Github 大名鼎鼎,我们先看看,在其上托管的项目语言使用情况。

Github上Top20项目情况(这是早期的旧数据,原文网址忘记了)

从图中可以看出,在整个开源社区,javascript被广泛应用。如果你点开其中的链接,仔细审查,会发现他们都建立在Nodejs平台之上,哪怕是纯前端的项目。

这也提醒我们,目前javascript语言所对应的大部分项目都基于Nodejs平台,也就是说,对于成熟的项目,javascript语言大致可以代表Nodejs。

Nodejs在币圈也同样流行Github自带搜索

我们使用Github自带的搜索工具, 在搜索框内输入下面的内容:

bitcoin stars:>100 forks:>50

结果如下:

使用更加复杂的查询条件,比如:

bitcoin OR wallet stars:>100 forks:>50 in:file extension:md

意思是:查询在文件扩展名为.md的文件中,包含关键字bitcoin或wallet,星100以上,fork50以上的全部项目库

其他情况,请自己试验。

自制查询工具

程序员天生就是懒人,为了一劳永逸的获得想要的结果,我专为本文配套设计了一个小工具,看看它给我们的效果吧。

上面两个查询的对应结果如下:

(1)柱状图

查询bitcoin关键字,获得如下柱状图

查询wallet关键字(不一定是加密货币钱包),获得如下柱状图

(2)树形矩阵

查询bitcoin关键字,获得如下矩阵图

(3)更复杂的查询

请自己去体验吧(会与下篇文章一起推出)。

前10个应用简介

我们使用github的搜索功能,并选择forks数量倒序排列,查询:

bitcoin language:JavaScript

注意:每一个fork背后可能就是一个全新的产品,forks代表了程序被二次开发的情况,个人觉得对于技术选型相对更有说服力。

前10个应用如下:

1. bitpay/bitcore 1656颗星,429个分支

源码网址: https://github.com/bitpay/bitcore

第一位,这是bitpay团队的产品,号称下一代PayPal。这算是一个成功案例,足见Nodejs开发加密货币的可行性。巴比特有专栏介绍。

2. startup-class/bitstarter-leaderboard 295颗星,386个分支

源码网址:https://github.com/startup-class/bitstarter-leaderboard

第二位,这是一个基于比特币开发众筹网站的模板程序。巴比特在做众筹,很多人也想进入这个领域,可以参考学习。

3. bitcoinjs/bitcoinjs-lib 980颗星,305个分支

源码网址:https://github.com/bitcoinjs/bitcoinjs-lib

第三位,这是个比特币web钱包开发包,几乎当前市面上所有的基于网站的钱包都在用,牛x吧。

4. askmike/gekko 866颗星,300个分支

源码网址:https://github.com/askmike/gekko

第四位,你也想推出一个像时代、okcoin那样的基于网页的交易市场吗,这个代码不容错过。不过,我个人觉得交易市场不仅仅是技术问题,Gekko也提醒您要自担风险。

5. bitpay/insight-ui 354颗星,267个分支

源码网址:https://github.com/bitpay/insight-ui

第五位,这是bitpay放出的一个开发web钱包的UI包(要基于bitcoin-node),看来当前开发钱包的需求还是比较大的。可以与排行第7位的bitpay/insight-api配合开发。

6. kyledrake/coinpunk 733颗星,249个分支

第六位,该项目是一个本地化的钱包服务程序,已经停止维护,取而代之的就是第3位的bitcoinjs-lib。

7. bitpay/insight-api(略)

8. cjb/GitTorrent 3065颗星,133个分支

源码网址:https://github.com/cjb/GitTorrent

第八位,不过它的好评3065颗星却是最高的。这是一个去中心化的Github,作者写了一篇博客详细解释了为什么Git也要去中心化。我本人觉得,这项目确实有意思,为我们开发去中心化的产品扩展了视野。基于这个项目思路,可以设想很多有价值的应用。

9. bitcoinjs/bitcoinjs-server

源码网址:https://github.com/bitcoinjs/bitcoinjs-server

第九位,已经放弃维护了。

10. untitled-dice/untitled-dice.github.io 26颗星,114个分支

源码网址:https://github.com/untitled-dice/untitled-dice.github.io   第十位,一个基于比特币的赌博网站源码。有意思的是,用户评价26颗星,很低,说明人们的价值观还是不喜欢赌博的。但是拷贝的分支却很多,对于开发者来说,这也算是比特币的一个落地应用。

其实,还有很多应用,没有开源,或半开源,被关注的不多,鲜为人知。比如:crypti,一个类似于以太坊的应用,就在默默开发中。后面,我们详细介绍它,并对它的源码进行解读。

结论

仅就上述数据分析,我们可以得出如下结论:

  • 在整个开源社区,Nodejs当之无愧是最流行的开发平台之一;
  • 在钱包、交易市场等客户端应用领域,Nodejs的应用较为广泛;
  • 在加密货币核心代码开发上,Nodejs的应用较少,远不如python,java,c/c++等开发语言的使用。

不过,由于javascript有着众多的用户群,随着加密货币的发展和普及,会有更多的Nodejs开发者加入。选择Nodejs,就像最初选择了bitcoin,作为第一批实践的用户,我们已经站在时代潮头。

说明

本文数据收集面仍然狭窄,无法完整呈现币圈全貌,仅供参考。后续,如果发现更多更好的应用,我会持续更新,您可以关注本文的电子书形式进行跟踪。

这是一篇软文,写作不难,真正的工作量在于数据统计分析,而这也因为Nodejs变的轻松加愉快。

想知道上述数据和图表怎么来吗?请看下一篇:《Nodejs开发加密货币》之二:Nodejs让前端开发像子弹飞一样,将简单介绍Nodejs的基本使用,教您一个数据挖掘、统计分析的小技巧,并尝试去理解那些交易市场、在线钱包等实时应用的开发过程。

链接

本文源地址: https://github.com/imfly/bitcoin-on-nodejs

电子书阅读: http://imfly.github.io/bitcoin-on-nodejs/



----------------这是隔离线------------------------


第一篇文章,改了2遍,发现还有很多问题,统计工具代码因为办公室网络原因也没有及时传上来,只能在下篇与大家见面了。请大家拍砖。


关于作者

微信:kubying(请注明您是什么地方看到我的)

打赏:请看个人签名档。





补充内容 (2016-1-9 09:55):
【nodejs开发加密货币】开栏的话
http://8btc.com/thread-27448-1-1.html
成败都是积累,攻受都是成长!《Nodejs开发加密货币》

10条回复 跳转到指定楼层

bitbybit | 副船长 | 发表于 2016-1-9 10:43:47 来自手机版 | 显示全部楼层
大牛粗线了,厉害,能不能按照星星和分支的数量给市值前十的币种排名?
fermi | 船长 | 发表于 2016-1-9 12:52:57 | 显示全部楼层
谢谢!太棒了!另外有PDF版吗?不方便保存
maigj | 副船长 | 发表于 2016-1-9 15:38:05 | 显示全部楼层
好好学习!天天向上
imfly | 版主 | 发表于 2016-1-9 19:03:53 | 显示全部楼层
bitbybit 发表于 2016-1-9 10:43
大牛粗线了,厉害,能不能按照星星和分支的数量给市值前十的币种排名?

当然可以,也很简单,而且可以实现即时动态显示,任何一方有变化,图表都可以跟着变化。

最好的方法是找个提供api的交易市场,读取各产品(排名市值后面读),然后将产品缓存起来(变化不大)。剩下的环节就是循环监控github上对应产品的forks和star数据,以及交易市场的市值排名,前者可以长时间循环(变化慢),后者可以短些(变化快),从而提高性能。

当然,这个方法要配合具体api去选择处理,有的api分割很细,用起来方便,有的就是扔给你一堆数据,你要反复处理。
成败都是积累,攻受都是成长!《Nodejs开发加密货币》
imfly | 版主 | 发表于 2016-1-9 19:05:56 | 显示全部楼层
fermi 发表于 2016-1-9 12:52
谢谢!太棒了!另外有PDF版吗?不方便保存

谢谢支持,可以提供pdf等各种电子书格式,只不过目前完成的内容还没有多少,所以暂时没提供,后期会同步提供。。。
成败都是积累,攻受都是成长!《Nodejs开发加密货币》
imfly | 版主 | 发表于 2016-1-9 19:06:49 | 显示全部楼层
maigj 发表于 2016-1-9 15:38
好好学习!天天向上

呵呵,共同学习。。。。
成败都是积累,攻受都是成长!《Nodejs开发加密货币》
cinbit | 船长 | 发表于 2016-1-9 19:32:21 | 显示全部楼层
我是来学习的,谢谢楼主。
bincoin | 持有dash、lisk、lrc、btm的无敌投机海盗王 | 发表于 2016-1-9 19:39:48 来自手机版 | 显示全部楼层
很不错,不过也喜欢Ruby
币圈小宁!~白 | 副船长 | 发表于 2016-12-22 20:23:36 | 显示全部楼层
受益匪浅  谢谢
高级模式
您需要登录后才可以发帖 登录 | 立即注册 | 用新浪微博登录

本版积分规则

搜索

0关注 1粉丝 41主题

作者的其他主题

返回顶部 返回列表

登录

分享 发帖