导读

首先,在阅读本文以前假设您已经了解比特币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

http://localhost:3001

有返回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服务端应用示例之一。 后续有空继续介绍其相关架构设计与开发事项。

linux insight 使用教程,Insight API开源项目分析相关推荐

  1. Source Insight经典教程

    Source Insight经典教程http://blog.chinaunix.net/u2/76292/showart.php?id=1361606 Source Insight实质上是一个支持多种 ...

  2. Source Insight入门教程

    Source Insight入门教程 转载自:http://www.cnblogs.com/olvo/archive/2012/05/04/2483424.html 进入到Temp Project窗口 ...

  3. 《嵌入式Linux开发实用教程》

    <嵌入式Linux开发实用教程> 基本信息 作者: 朱兆祺    李强    袁晋蓉 出版社:人民邮电出版社 ISBN:9787115334831 上架时间:2014-2-13 出版日期: ...

  4. Kali Linux网络扫描教程(内部资料)

    Kali Linux网络扫描教程(内部资料) 试读样张:http://pan.baidu.com/s/1qWuNSYw 前  言 Kali Linux是业内最知名的安全渗透测试专用操作系统.它的前身就 ...

  5. 发布《Linux工具快速教程》

    发布<Linux工具快速教程> 阶段性的完成了这本书开源书籍,发布出来给有需要的朋友,同时也欢迎更多的朋友加入进来,完善这本书: 本书Github地址:https://github.com ...

  6. linux vim配置c,Linux入门学习教程:GNU C及将Vim打造成C/C++的半自动化IDE

    C语言在Linux系统中的重要性自然是无与伦比.不可替代,所以我写Linux江湖系列不可能不提C语言.C语言是我的启蒙语言,感谢C语言带领我进入了程序世界.虽然现在不靠它吃饭,但是仍免不了经常和它打交 ...

  7. linux下ps什么软件下载,Linux下4个免费和开源的Adobe Photoshop替代品

    原标题:Linux下4个免费和开源的Adobe Photoshop替代品 寻找免费的Photoshop替代品?这里有一些最好的免费和开源软件,你可以用它们来代替Adobe Photoshop. Ado ...

  8. linux认证版本,LPI Linux认证考试教程 中文PDF最新版

    LPI(Linux Professional Institute)是一家基于国际Linux社区,服务于社区的非盈利组织,总部设在加拿大多伦多.LPI是通过提供业界高水平Linux专业认证而倡导和协助开 ...

  9. Linux基础入门教程

    Linux基础入门教程 --------- Linux学习路径 Linux学习者,常常不知道自己改怎么学习linux: Linux初级,也就是入门linux 前提是需要有一些计算机硬件相关的知识或是有 ...

最新文章

  1. Ubuntu10 上安装Vmware Tools注意
  2. JavaScript中数组使用总结
  3. Linux中的延时函数
  4. mysql有类似dbms_output.pu_line();_使用MySQL,SQL_MODE有哪些坑,你知道么?
  5. 【简单数论】H - A^X mod P_HRBUST - 2049_31行代码AC
  6. MAC 安装 xctool 遇到的问题
  7. 使用rpm包安装mysql_centos下利用rpm包安装mysql
  8. 新生的 XInclude
  9. amoeba实现mysql主从读写分离_利用Amoeba实现MySQL主从复制和读写分离
  10. InputStream和OutputStream
  11. opencms内容管理入门指南pdf_企业微信管理员训练营回顾(三) | 企业微信高效协作入门指南...
  12. android 程序更换字体,Android修改自己程序字体的方法详解
  13. 【leetcode】排序题(python)
  14. while循环python次数定义_Python学习笔记之While循环用法分析
  15. 色度抽样(4:2:0)到底是什么意思?
  16. 小程序源码:图片秒加水印制作生成
  17. 网页html教学反思,教学反思怎么写
  18. java 绘制动态的图形
  19. 如何查看QQ在线人数
  20. 事理图谱,下一代知识图谱

热门文章

  1. Pacbio HiFi技术原理与应用软件实例
  2. Science:便携式DNA测序仪在检测病毒疫情中大显身手
  3. 数字图像处理2:传统插值
  4. linux进程间通讯-共享内存
  5. linux校时写入硬件,手动校正 Linux 系统时间并把时间写入硬件,系统启动时自动校正时间并把时间写入硬件。...
  6. java exchange发邮件_java发送exchange邮件问题
  7. javascript 遍历对象
  8. 3dsmax biped 骨骼的创建和修改
  9. 原生ajax XMLHTTPRequest()
  10. 【Dual-Path-RNN-Pytorch源码分析】model的架构图