Insight API开源项目介绍
首先,在阅读本文以前假设您已经了解比特币Bitcoin基本原理。 Insight API是一个开源基于比特币Bitcoin blockchain的REST风格的API框架。Insight API运行于NodeJS环境,使用LevelDB做数据存储。使用Insight API可以开发基于Bitcoin的应用程序,如获取blockchain信息的钱包。这里我们介绍此刻最新版本2.7,它还有一个前端项目Insight。生产环境运行在这儿。
安装
以Ubuntu为环境。Windows环境问题较多,我们不介绍。它的依赖项目与组件:
第一步:
bitcoind 下载安装Bitcoin
Node.js v.010.x Node.js
NPM 安装node时应该就有了
第二步:
获取insight-api
$ git clone https://github.com/bitpay/insight-api && cd insight-api
安装依赖组件,从package.json中我们可以看到依赖组件:
"bitcore": "git://github.com/bitpay/bitcore.git#4d8af75ae9916984c52ee2eda1870d5980656341",
"base58-native": "0.1.2",
"async": "*",
"leveldown": "*",
"levelup": "*",
"glob": "*",
"soop": "=0.1.5",
"commander": "*",
"bignum": "*",
"winston": "*",
"express": "~3.4.7",
"buffertools": "*",
"should": "~2.1.1",
"socket.io": "~1.0.4",
"moment": "~2.5.0",
"sinon": "~1.7.3",
"xmlhttprequest": "~1.6.0",
"bufferput": "git://github.com/bitpay/node-bufferput.git"
执行npm install,即可自动安装它们:
$ npm install
注意这一步可以一次不会成功,有时需要换NPM的镜像。
$ npm config set registry http://registry.cnpmjs.org
配置
bitcoind
打开bitcoin的配置文件bitcoin.conf, Linux下这件文件在"~/.bitcoin", 打开编辑,设置txindex为true
配置接入IPaccept incoming connections using 'rpcallowip'
Insight API
Insight api的配置文件config.js在config文件夹中。有一些环境变量定义,如下:
BITCOIND_HOST # RPC bitcoind host
BITCOIND_PORT # RPC bitcoind Port
BITCOIND_P2P_PORT # P2P bitcoind Port
BITCOIND_USER # RPC username
BITCOIND_PASS # RPC password
BITCOIND_DATADIR # bitcoind datadir. 'testnet3' will be appended automatically if testnet is used. NEED to finish with '/'. e.g: `/vol/data/`
INSIGHT_NETWORK [= 'livenet' | 'testnet']
INSIGHT_DB # Path where to store insight's internal DB. (defaults to $HOME/.insight)
INSIGHT_SAFE_CONFIRMATIONS=6 # Nr. of confirmation needed to start caching transaction information
INSIGHT_IGNORE_CACHE # True to ignore cache of spents in transaction, with more than INSIGHT_SAFE_CONFIRMATIONS confirmations. This is useful for tracking double spents for old transactions.
运行
bitcoind必须先运行,并且下载blockchain完成,执行
$ node insight.js
这时默认应该在3001端口,打开浏览器访问以下URL
有返回insight api则正常。
同步
可以手工同步历史的blockchain数据:
util/sync.js
开发
在本地运行Grunt
$ NODE_ENV=development grunt
运行测试
$ grunt test
API
基本REST的API调用是这样的:
Block
/api/block/[:hash]
/api/block/00000000a967199a2fad0877433c93df785a8d8ce062e5f9b451cd1397bdbf62
Transaction
/api/tx/[:txid]
/api/tx/525de308971eabd941b139f46c7198b5af9479325c2395db7f2fb5ae8562556c
Address
/api/addr/[:addr][?noTxList=1&noCache=1]
/api/addr/mmvP3mTe53qxHdPqXEvdu8WdC7GfQ2vmx5?noTxList=1
示例获取特定的地址
http://192.168.1.18:3001/api/addr/1JqA2ZZpNzYrSTVk828fjztWWwRWQxRoYm
返回JSON字符串
{"addrStr":"1JqA2ZZpNzYrSTVk828fjztWWwRWQxRoYm","balance":0.02,"balanceSat":2000000,"totalReceived":29.02
,"totalReceivedSat":2902000000,"totalSent":29,"totalSentSat":2900000000,"unconfirmedBalance":0,"unconfirmedBalanceSat":0
,"unconfirmedTxApperances":0,"txApperances":9,"transactions":["5f9bbe4fa99967a7d2e1e00645c4f31ac18ebf18fa6ffe96a3959c25416b4b08"
,"f6ceaf9edac817d57ad8500ef4f6ff3dce5445b8c4d51f1ef6e5967b80d6f5ce","2f5b0fc3fb46a89f94902fdd695e2ff0d7c12b1dbf4f6bab8b9bcf269a1310b2"
,"7b0924dacaf4b99d0be959b3a98a73904480d0c6af8e561e15cfe0bb149fe7df","691c35ea2a00155aeb8fb3086e434c958941c24b54efc656b6c16a5c7084bfb6"
,"983d3bc5c374ae2ccccf3702f4d0d6648dca295443763c143bbedaf9b9471ae4","07e092af991c72d8ba01fa7c0723635e6708e18c2f569acc6d362f8ee0647845"
,"ff9bd3221259bfaf7a1617ee3d95c5dd1676192111c526a5184661d22dbed7be","c5232b1ea17c905a900066c6d19d7a444a4ac6ca1acd7aa38eb516a6c8bebedd"]}
Web Socket API
基于socket.io实现了web socket api,如下
/socket.io/1/
结论
RESTful风格的架构最近几年比较流行,Insight-API就是一个基于Node.js平台的REST WEB API项目.Insight-API封装了BitCore实现WEB API,BitCore是基于JSON PRC的API,
它服务于Bitcoind.Insight-API也是node.js服务端应用示例之一。 后续有空继续介绍其相关架构设计与开发事项。
希望对您软件开发有帮助。您可能感兴趣的文章:
比特币Bitcoin源代码安装编译
作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog。
Insight API开源项目介绍的更多相关文章
- windows下nodejs express安装及入门网站,视频资料,开源项目介绍
windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件下载地址: ...
- 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器&开源项目介绍
揭开webRTC媒体服务器的神秘面纱--WebRTC媒体服务器&开源项目介绍 WebRTC生态系统是非常庞大的.当我第一次尝试理解WebRTC时,网络资源之多让人难以置信.本文针对webRTC ...
- 6个P2P流媒体开源项目介绍
P2P流媒体开源项目介绍 1. PeerCast 2002年成立,最早的开源P2P流媒体项目.PeerCast把节点按树结构组织起来, 每个频道都是一个树, 直播源是根节点,父节点只给子节点提供数据 ...
- P2P流媒体开源项目介绍
P2P流媒体开源项目介绍1. PeerCast 2002年成立,最早的开源P2P流媒体项目.PeerCast把节点按树结构组织起来, 每个频道都是一个树, 直播源是根节点,父节点只给子节点提供数据.节 ...
- J2EE开发之常用开源项目介绍
主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 1持久层: 1)Hibe ...
- 08_android入门_android-async-http开源项目介绍及用法
android-async-http开源项目可以是我们轻松的获取网络数据或者向server发送数据.使用起来很easy,关于android-async-http开源项目的介绍内容来自于官方:http: ...
- 【Android开发经验】移动设备的“声波通信/验证”的实现——SinVoice开源项目介绍(一)
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在APP市场上,常常有一些充满新意的应用让我们眼前一亮,比方微信的面对面加好友,支付宝的声波支付等等,都是通 ...
- 移动端自动化openatx开源项目介绍,pytest并发测试框架结合
开头 相信不少用过appium的同学,对于使用appium的一些体会与感受是否与我相似 1. appium启动服务和app程序非常慢 2. appium多线程并发需要启动多个服务 3. appium必 ...
- .NET开源项目介绍及资源推荐:数据持久层
在.NET平台下,关于数据持久层框架非常多,本文主要对如下几种做简要的介绍并推荐一些学习的资源: 1.NHibernate 2.NBear 3.Castle ActiveRecord 4.iBATIS ...
随机推荐
- salesforce 零基础开发入门学习(五)异步进程介绍与数据批处理Batchable
本篇知识参考:https://developer.salesforce.com/trailhead/force_com_dev_intermediate/asynchronous_apex/async ...
- python2.7和python3共存
python2.7和python3共存 原本装了python,玩nodejs的时候需要node-gyp来编译依赖,无赖这货需要python2.5<v<3.0,那就弄两个版本吧 转载自 ht ...
- Struts2学习笔记 - HelloWorld总结
相信网上已经有很多关于struts2的HelloWorld可参考,我这里就不重复了,没个学struts2的人都会做过很多个HelloWorld,而我这里就总结一下一个简单的HelloWorld 我在一 ...
- 【原创】NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示
申明:本文由作者基于日常实践整理,希望对初次接触MINA.Netty的人有所启发.如需与作者交流,见文签名,互相学习. 学习交流 更多学习资料:点此进入 推荐 移动端即时通讯交流: 215891622 ...
- 使用uGUI制作游戏内2D动画
在3D的游戏中制作2D的效果是一个很常见的需求,我在很早前玩过一个叫做艾尔之光的游戏,里面就大量的使用了这个技术.就像下面图片中的伤害数字,这些数字往往还是有一些动画效果在里面的,比如大小的变化,颜色 ...
- 使用swoole和websocket结合来制造弹幕
在知乎上无意中看到了一篇有关这个的话题https://zhuanlan.zhihu.com/p/23992890,刚好没事也好久没弄swoole了就自己按照知乎上的那篇文站实操了一下 那个试验中有几个 ...
- java集合框架之Set
Set集合 元素不可以重复,是无序. 方法与list相同 HashSet:不保证set的迭代顺序,不同步,内部数据结构是哈希表 如果存自定义对象则需要覆盖equals和hashCode方法 先比较ha ...
- java中Object.equals()简单用法
/* equals()方法默认的比较两个对象的引用! */ class Child { int num; public Child(int x){ num = x; } //人文的抛出运行时异常的好处 ...
- 献给所有从事IT行业拥有梦想的英语渣们
本文适合读者:从小到大英语都不好,如今选择IT行业需要重拾英语追寻梦想的人,英语大神们请绕行.. 目录 一.背景介绍 二.明确学习目标 2.1 英文文法 2.2 词汇量 三.题外话 3.1 关于本文 ...
- Pure – 赞!轻量的、响应式的 CSS 模块集
Pure 是一组轻量的,响应式的 CSS 模块,您可以使用在任何的 Web 项目中.充分考虑了移动设备中的使用,保持文件体积尽量小,每行 CSS 都进行了仔细的考虑. Pure 基于 Normaliz ...