当前位置: 首页 > 工具软件 > Bitcore > 使用案例 >

bitcore源码阅读-概览

从焱
2023-12-01

bitcore源码阅读-概览

bitcore是bitpay开发的比特币node.js库,支持用node.js开发区块浏览器,钱包等功能库,该库需要包含一个具有地址索引功能的bitcoin全节点库。

实际上该库只是一个集成库,没有实际的代码,都是依赖其他库实现其功能的,本文会简要说明其构成部分。

使用

bitcore使用较为简单,通过全局安装就可以使用。在使用过程中,在linux系统中采用cnpm安装成功, 在苹果系统上下载苹果版本的全节点失败。不过还是不建议在个人电脑上安装该库(需要大约500G的空间)。
安装好后,就可以启动一个实例,缺省启动insight-ui和insight-api服务,区块浏览器可以通过http://locahost:3001/insight访问。
如果是通过nginx代理,需要配置如下路径:

# insight angularjs服务路径
location /insight {
    proxy_pass http://localhost:3001/insight;
}
# insight-api路径
location /insight-api {
    proxy_pass http://localhost:3001/insight-api;
}
# WebSocket
location /socket.io {
    proxy_pass http://localhost:3001/socket.io;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

依赖库

通过查看bitcore项目路径下的package.json就知道该项目依赖的库了:

  • “bitcore-lib”: “5.0.0-beta.1”,
  • “bitcore-node”: “5.0.0-beta.44”,
  • “insight-api”: “5.0.0-beta.44”,
  • “insight-ui”: “bitpay/insight#v5.0.0-beta.44”

以上四个库分别是:bitcore核心库bitcode-node js的全节点库(提供node.js版本的全节点封装),insight-api库提供insight-ui的API接口,insight-ui是用angularjs实现的前端界面。
bitcore采用服务方式把各组件构建在一起,bitcode-node,insight-api, insight-ui都是一个服务,通过一个Web服务器(Express)构建

需要注意的是,目前(2018.3.15),采用npm安装的节点是4.1.1的版本,采用0.12.0版本的比特币,该版本比bitcoin官方的源代码增加了地址索引功能。而github上的代码是5.0.0版本。

软件架构

看源代码是学习架构的一个很好方法。该项目用javascript语言编写,基于node.js平台,是学习node.js开发和javascript的好地方。
5.0.0在4.1.1版本上做了更细的拆分,总体架构没有太多变化。
bitcore的源码只有bin目录下的两个文件,是用于启动比特币node.js全节点的,他依赖于bitcore-node模块。
bitcore-node模块依赖于bitcore-lib库,还包括bitcored-rpc, socket.io, zmp等库。
bitcore-node采用服务架构实现,4.1.1版本具有四个服务:bitcoind, web, insight-api, insight-ui,web依赖于bitcoind服务,insight-api, insightui依赖于bitcoind和web服务。

服务就是bitcore-node的软件架构,bitcore充分利用了javascript的动态语言的特性,把服务的API方法绑定到自己实例上,这样一个服务调用其他服务是就不需要知道服务的提供者是谁,实现了解耦。一个服务需要实现几个特定的结构,包括构造函数,start函数,getAPIMethods函数, setRoute函数等,具体可以参考服务文档.

Bus是服务件消息系统,订阅一个消息可以无需知道消息有哪个服务模块发布,通过统一的Bus总线就可以实现消息的订阅和发布。Bus文档请看这里.

实现服务的简介文档在这里

 类似资料: