使用Node.JS访问Hyperledger Fabric的gRPC服务
2016-11-26 19:23
696 查看
在即将正式发布的Hyperledger Fabric SDK 1.0中,Hyperledger Fabric通过gRPC提供服务接口以取代现有的REST API。本文介绍了如何使用Node.JS访问Hyperledger Fabric的gRPC服务。
Hyperledger Fabric的gRPC服务接口可以通过安装Hyperledger fabric Client (HFC)获取。
在工作目录下运行如下
gRPC接口定义文件(.proto)都在HFC的
其中的
以下代码使用
以下代码则使用
Hyperledger Fabric的gRPC服务接口可以通过安装Hyperledger fabric Client (HFC)获取。
在工作目录下运行如下
npm命令以安装HFC。
npm install hfc
gRPC接口定义文件(.proto)都在HFC的
lib\protos下
api.proto ca.proto chaincode.proto chaincodeevent.proto devops.proto events.proto fabric.proto server_admin.proto
其中的
api.proto定义了名为
Openchain的服务, 该服务提供了若干个接口以获取Hyperledger Fabric区块网络的具体信息。
// Interface exported by the server. service Openchain { // GetBlockchainInfo returns information about the blockchain ledger such as // height, current block hash, and previous block hash. rpc GetBlockchainInfo(google.protobuf.Empty) returns (BlockchainInfo) {} // GetBlockByNumber returns the data contained within a specific block in the // blockchain. The genesis block is block zero. rpc GetBlockByNumber(BlockNumber) returns (Block) {} // GetBlockCount returns the current number of blocks in the blockchain data // structure. rpc GetBlockCount(google.protobuf.Empty) returns (BlockCount) {} // GetPeers returns a list of all peer nodes currently connected to the target // peer. rpc GetPeers(google.protobuf.Empty) returns (PeersMessage) {} }
以下代码使用
GetBlockCount接口获取区块总数。
var fs = require('fs'); var grpc = require('grpc'); var ProtoBuf = require("protobufjs"); var apiProto = grpc.load("./protos/api.proto").protos; var client = new apiProto.Openchain('192.168.99.100:7051', grpc.credentials.createInsecure()); client.getBlockCount({}, function(err, blockCount) { if (err) { console.log("Error :" + err); } else if (blockCount) { console.dir(blockCount, { depth: null }); } });
GetBlockCount接口返回一个
BlockCount消息, 该消息包含一个
count成员, 也就是当前网络中的区块总数。
message BlockCount { uint64 count = 1; }
以下代码则使用
GetBlockByNumber接口获取某个区块的信息。
function callbackForBlock(blockNumber) { return function(err, block) { console.log("Block[" + blockNumber.number + "]"); if (err) { console.log("Error :" , err); } else if (block) { console.dir(block, { depth: null }); } console.log("======================="); }; } for (var n=0; n<blockCount.count; n++) { var blockNumber = { number : n }; client.getBlockByNumber(blockNumber, callbackForBlock(blockNumber)); }
GetBlockByNumber接口需要一个输入参数, 用于指定区块号码,其返回消息则是一个
Block消息, 其数据结构定义在
fabric.proto中。
总结
本文介绍了一个使用Node.JS访问Hyperledger Fabric gRPC服务的示例程序。相关文章推荐
- 使用HFC SDK for Node.js 开发 Hyperledger Fabric 客户端应用系统
- Hyperledger fabric Client Node.js Hello World示例程序
- Linux使用Node.js建立访问静态网页的服务实例详解
- 在Node.js环境中使用OSS Javascript SDK来访问OSS服务
- Linux环境使用Node.js构建访问静态网页的服务
- Hyperledger Fabric 1.0 实战开发系列 第四课 搭建node.js服务器
- Hyperledger fabric配置node.js
- Hyperledger Fabric 1.0 安装和使用
- 使用Node.js和Redis实现push服务--转载
- 使用nodejs mongodb连接mongodb的shard分布服务
- Hyperledger Fabric 1.0 安装和使用说明
- 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.3.使用Express和Mongoskin实现REST API服务器
- 使用 Cloudsoft AMP 部署 Hyperledger fabric App & Validating Peers & Chaincode
- 第8章-使用Express.js和Hapi构建Node.js-REST-API服务-8.2.项目依赖
- Node.js开发入门—使用AngularJS内置服务
- Node.js中REST API使用示例——基于云平台+云服务打造自己的在线翻译工具
- Node.js开发入门—使用http访问外部世界
- 使用Node.js和Redis实现push服务
- 使用XML-RPC来访问Web服务
- 基于thrift的node.js rpc服务