Fabric实战(11)SDK编程接口

本文章所有操作基于的操作系统版本是:ubuntu16.04 64位
本文章基于的Fabric网络环境是《Fabric实战(2)运行一个简单的fabric网络(容器外)》

1 Fabric接口协议和功能

Fabric的Peer节点和Orderer节点都提供了基于Grpc协议的通信接口,通过这些接口可以和Peer以及Orderer节点进行交互。

1.1Grpc协议简介

Grpc是由Google开发的一款语言中立、平台中立、开源的远程过程调用RPC系统。目前Grpc支持JAVA、GO、C、C++、Node.js、Python、Ruby、Objective-C、PHP、C#等语言。Grpc默认使用protocol buffers作为接口定义语言来描述服务接口和消息结构。

1.2 Fabric的Grpc接口

Fabric一共有5个模块(peer、orderer、cryptogen、configtxgen、configtxlator),其中Peer模块和Orderer模块提供了Grpc相关的接口,但是Orderer模块是Peer模块等调用的,在项目开发中并不需要直接调用orderer模块的GRpc接口,所以这里主要介绍Peer模块的Grpc接口。另外fabric-ca-server项目也是提供了JsonRPC接口共第三方应用程序调用,由于fabric-ca-server在实际项目开发中是不可或缺的,所以这里也会介绍Fabric-ca-server的grpc接口调用方式。

1.3 Peer模块的接口功能

Fabric的Peer模块提供的Grpc接口按照功能大致可以分为两类:系统管理和chaincode操作。

1.3.1 系统管理

Peer模块提供的Grpc接口提供了如下与系统管理相关的功能:

  • 获取当前Peer加入了哪些些Channel
  • 获取当前Peer加入的某个channel的区块数量
  • 通过区块号获取当前的Peer加入的某个Channel的某个区块的详细信息
  • 通过区块hash值获取当前的Peer加入的某个Channel的某个区块的详细信息
  • 通过交易的hash值获取交易的详细信息
  • 获取当前peer服务器中状态为install的chaincode信息
  • 获取当前peer加入的某个channel状态为Instantiate的chaincode的详细信息

1.3.2 chaincode相关操作

Peer模块提供的Grpc接口提供了如下与chaincode相关的功能:

  • 调用chaincode的query方法
  • 调用一个已经部署好的chaincode的invoke方法

2 Fabric Node SDK

2.1 Fabric SDK 安装

2.1.1安装node和npm

必须要安装8.9.x或者更高版本
下载二进制包:https://nodejs.org/dist/latest-v10.x/node-v10.13.0-linux-x64.tar.gz

#解压二进制包
tar zvxf node-v10.13.0-linux-x64.tar.gz -C 

#将可执行文件目录加入环境变量
echo "export PATH=$PATH:$HOME/node-v10.13.0-linux-x64/bin" >> ~/.bashrc

#验证是否安装成功
node -v
npm -v

#安装co库
npm install co

2.1.2安装node sdk

创建一个工程目录,并切换到目录下:

mkdir -p ~/fabric-ws/fabric-node-sdk/node-test

cd ~/fabric-ws/fabric-node-sdk/node-test

编辑一个npm的配置文件,如下:

{
   
    "name": "node-sdk-study",
    "version": "1.0.0",
    "description": "Hyperledger Fabric Node SDK Test Application",
    "scripts": {
   
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "dependencies": {
   
        "fabric-ca-client": "^1.0.0",
        "fabric-client": "^1.0.0"
    },
    "author": "Your name",
    "license": "Apache-2.0",
    "keywords": [
        "Hyperledger",
        "Fabric",
        "Test",
        "Application"
    ]
}

下载依赖模块:

编辑保存好该文件后,我们就可以运行npm install命令来下载所有相关的依赖模块,但是由于npm服务器在国外,所以下载可能会很慢,感谢淘宝为我们提供了国内的npm镜像,使得安装npm模块快很多

运行命令:

npm install --registry=https://registry.npm.taobao.org

运行完毕后我们查看一下nodeTest目录,可以看到多了一个node_modules文件夹。这里就是使用刚才的命令下载下来的所有依赖包。

2.2 编写一个APP

编写一个通过Nodejs sdk调用fabric的例子。

'use strict';

var co = require('co');
var hfc = require('fabric-client'); 
var path = require('path'); 
var sdkUtils = require('fabric-client/lib/utils');
var fs = require('fs'); 
var FabricCAService = require('fabric-ca-client');
var User = require('fabric-client/lib/User.js');
var options = {
    
    channel_id: 'testchannel', 
    chaincode_id: 'r_test_cc6', 
};


var tempdir = "/home/zym/fabric-ws/simple-demo/client-kvs"

var client = new hfc();

var cryptoSuite = hfc.newCryptoSuite();
cryptoSuite.setCryptoKeyStore(hfc.newCryptoKeyStore({
   path:tempdir}));
client.setCryptoSuite(cryptoSuite);

//创建CA客户端
var caClient = new FabricCAService('http://0.0.0.0:7054', null, '', cryptoSuite)

//创建通道客户端代理, 通道名称为:testchannel
var channel = client.newChannel('testchannel');

//创建order,并将order加入到channel中
var order 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值