Hyperledger fabric Client Node.js Hello World示例程序
简介
Hyperledger fabric Client (HFC)提供了基于Node.js的应用接口来访问Hyperledger区块. 本文介绍了一个使用HFC访问IBM Bluemixr区块服务的Hello World示例程序的开发过程.
第一步 安装HFC
在工作目录下运行如下npm命令从安装HFC, 由于目前IBM Bluemixr提供的Hyperledger区块服务依旧是0.5版本, 对应的HFC版本则是0.5.x。
npm install hfc@0.5.x
第二步 从以下链接下载IBM Bluemixr的CA证书文件 (us.blockchain.ibm.com.cert)
https://blockchain-certs.mybluemix.net/
示例程序源码
var hfc = require('hfc');
var fs = require('fs');
var PEER_ADDRESS = "grpcs://e1bb641577f249a88acca04da0272249-vp3.us.blockchain.ibm.com:30304";
var MEMBERSRVC_ADDRESS = "grpcs://e1bb641577f249a88acca04da0272249-ca.us.blockchain.ibm.com:30304";
var ENROLL_USER_NAME="WebAppAdmin";
var ENROLL_USER_PASSWORD="4258cc884f";
var CHAIN_CODE_ID="e2623e76371a16ca86d97bfb90bdab95885939bf4f2fa40133d65bca4aace27eaf94d8cd10438b80de097442916f6bfef87fb45a6cd678e3cb6ec0bd8dd008c2";
console.log(" **** starting HFC sample ****");
var pem = fs.readFileSync('us.blockchain.ibm.com.cert');
var chain = hfc.newChain("testChain");
var keyValStorePath = "/tmp/hfc_keyValStore";
chain.setDevMode(false);
chain.setECDSAModeForGRPC(true);
chain.setKeyValStore(hfc.newFileKeyValStore(keyValStorePath));
chain.setMemberServicesUrl(MEMBERSRVC_ADDRESS, {pem:pem});
chain.addPeer(PEER_ADDRESS, {pem:pem});
chain.enroll(ENROLL_USER_NAME, ENROLL_USER_PASSWORD, function (err, user) {
if (err) {
console.log("ERROR: failed to register user: %s",err);
process.exit(1);
}
console.log("**** Enrolled ****");
console.log("querying chaincode ...");
var queryRequest = {
chaincodeID: CHAIN_CODE_ID,
fcn: "query",
args: [""]
};
// Issue the query request and listen for events
var tx = user.query(queryRequest);
tx.on('complete', function (results) {
console.log("query completed successfully; results=%j",results);
console.log(results.result.toString());
process.exit(0);
});
tx.on('error', function (error) {
console.log("Failed to query chaincode: request=%j, error=%k",queryRequest,error);
process.exit(1);
});
});
运行结果
C:\work\HFC>node test.js
**** starting HFC sample ****
**** Enrolled ****
querying chaincode ...
query completed successfully; results={"result":{"type":"Buffer","data":[72,101,108,108,111,32,87,111,114,108,100]}}
Hello World
后记
- 使用
npm安装HFC会调用git命令从github下载相关源文件,如果使用代理服务器的话,使用以下命令配置git。
git config --global http.proxy <proxy server host>:<proxy server port>
- 安装HFC时报错: MSBUILD error MSB3428: Could not load the Visual C++ component "VCBuild.exe"
MSBUILD : error MSB3428: Could not load the Visual C++ component "VCBuild.exe". To fix this, 1) install the .NET Framework 2.0 SDK, 2) install Microsoft Visual Studio 2005 or 3) add the location of the component to the system path if it is installed elsewhere.
首先安装Visual C++ Build Tools 2015
然后运行以下命令
npm config set msvs_version 2015 --global
再次安装HFC
- 安装HFC时报错:
win_delay_load_hook.c(31): error C2373: '__pfnDliNotifyHook2': redefinition; different type modifiers
运行以下命令后再次安装HFC
npm -g install npm@next
- 注册用户时报错:
E1105 15:46:35.785000000 6360 handshake.c:215] Read failed.
E1105 15:46:35.785000000 6360 secure_channel_create.c:102] Secure handshake failed with error 1.
添加如下代码
chain.setECDSAModeForGRPC(true);
- 注册用户时报错:
hfc [MemberServicesImpl.enroll] failed to create cert pair: err={"code":12,"metadata":{"_internal_repr":{}}} +992ms
hfc [memberServices.enroll] err=Error: unknown service protos.ECAP, enrollment=undefined +1ms
ERROR: failed to register admin: Error: unknown service protos.ECAP
检查确认MEMBERSRVC_ADDRESS指向CA服务
总结
本文介绍了一个基于Hyperledger fabric Client(HFC)的Hello World示例程序。
Hyperledger fabric Client Node.js Hello World示例程序的更多相关文章
- node.js 接口调用示例
测试用例git地址(node.js部分):https://github.com/wuyongxian20/node-api.git 项目架构如下: controllers: 文件夹下为接口文件 log ...
- node.js前后台交互示例 -- 使用node.js实现用户注册功能
node.js环境自行搭建,参考菜鸟教程的node.js就可以. 1 通过ajax提交index.html中form表单 register.html文件如下: <!doctype html> ...
- 使用免费 mongodb数据库 + 免费node.js服务器搭建小程序接口
由于微信的小程序只支持不带端口的域名接口,不支持IP地址和接口,所以我们需要映射到80端口并绑定备案过的域名才能被微信小程序访问到.简单点就是接口需要 https 协议才行,找了许久的免费的数据库与n ...
- Ubuntu 16.04 下部署Node.js+MySQL微信小程序商城
转载于这篇文章 关于pm2看这篇文章 最近在研究小程序,申请了域名之后,再一次来配置环境,根据作者的步骤基本上完成了网站的架构,但由于环境路径等不同,配置上会有所不同,因此记录下来. 1.更新系统和安 ...
- 记录下使用iis7代理node.js写的网站程序
昨天晚上一个学弟的紧急求救,说了自己接的单子做了一个网站,使用了自己熟悉的技术——node.js+mongdb,但当看到部署环境惊呆了,是 windows+sqlserver.这些都不是关键,关键是服 ...
- CentOS 7.3 下部署基于 Node.js的微信小程序商城
本文档为微信小程序商城NideShop项目的安装部署教程,欢迎star NideShop商城api服务:https://github.com/tumobi/nideshop NideShop微信小程序 ...
- 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
摘要: 全球开源区块链领域影响最为广泛的Hyperledger Fabric日前宣布了1.1版本的正式发布,带来了一系列丰富的新功能以及在安全性.性能与扩展性等方面的显著提升.阿里云容器服务区块链解决 ...
- 使用Node.JS访问Hyperledger Fabric的gRPC服务
在即将正式发布的Hyperledger Fabric SDK 1.0中,Hyperledger Fabric通过gRPC提供服务接口以取代现有的REST API.本文介绍了如何使用Node.JS访问H ...
- HyperLedger Fabric 1.4 关键技术(6.4)
本节介绍从最底层的账本开始,逐一讲解账本的结构和存储.智能合约的编写和部署.通道的操作.节点的背书和提交.排序的共识和客户端SDK的接口调用,与交易流程顺序相反,由里及表的说明Fabric最关键的技术 ...
随机推荐
- 岁末年初3Q大战惊现高潮,360震撼推出Android "3Q" IM即时通讯
岁末年初3Q大战惊现高潮,360震撼推出Android "3Q" IM即时通讯 看过了QQ和360斗争的开端高潮,当然现在还不能说这场斗争已经结束,在我看来这次的事件未尝不是一个适 ...
- 图解集合1:ArrayList
前言 这个分类中,将会写写Java中的集合.集合是Java中非常重要而且基础的内容,因为任何数据必不可少的就是该数据是如何存储的,集合的作用就是以一定的方式组织.存储数据.这里写的集合,一部分是比较常 ...
- js中的console很强大
今天闲来没事,瞎逛, 发现了淘宝首页的这个: 想起来之前在百度的 页面中也曾看到过.于是乎自己试一试. 于是便见识到了console对象其实很强大,用好它对调试真的有很大帮助. 代码: <!DO ...
- 关于Windows高DPI的一些简单总结
我们知道,关于高DPI的支持, Windows XP时代就开始有了, 那时关于高DPI的支持比较简单, 但是从Vista/Win7 到现在Win8 /Win8.1, Windows关于高DPI的支持已 ...
- C++中new和delete的背后
关于 C++中new背后的行为, 以前已经写过一篇了 理解C++中new背后的行为, 但是里面也只是泛泛而谈,没有真凭实据, 下面我们从汇编的角度看C++编译器究竟在背后干了什么? 我们的代码很简单, ...
- Azure China (10) 使用Azure China SAS Token
<Windows Azure Platform 系列文章目录> 本文介绍的是国内由世纪互联运维的Azure China 注意:本文介绍的是Azure China Storage Priva ...
- python Web开发框架-Django (2)
接上篇文章,介绍一些实用的技巧和注意点.首次用MarkDown编辑,感觉行空隙太大,不是那么好看. GET/POST 前后端会有数据交互,使用JQuery来实现get/post请求 GET 方法1:通 ...
- Vue API阅读的小细节
#后面是表达式,下面是参数列表,参数列表每行说明一个参数.每行的参数说明,最后边对应表达式的参数,左边是该参数的类型一类的说明.
- Java基础之I/O和file
五.IO流1.IO流概述 (1)用来处理设备(硬盘,控制台,内存)间的数据. (2)java中对数据的操作都是通过流的方式. (3)java用于操作流的类都在io包中. (4)按照流操作的数据的类型不 ...
- EF架构~对AutoMapper实体映射的扩展
回到目录 AutoMapper在之前我曾经介绍过,今天主要是把它作一下扩展,因为它的调用太麻烦了,呵呵,扩展之后,用着还可以,感觉.net3.5之后,有了扩展方法这个东西,在程序开发速度及表现力上都有 ...