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最关键的技术 ...
随机推荐
- 双击防止网页放大缩小HTML5
幕双击放大或缩小.即相当于这样设置 <meta name="viewport" content="width=device-width, initial-scale ...
- System.DateTimeOffset 中新增的Unix 时间戳方法
// System.DateTimeOffset [__DynamicallyInvokable] public static DateTimeOffset FromUnixTimeMilliseco ...
- 将SQL SERVER数据库改成MySql
(www.helpqy.com) 架构在阿里云上,最先想采用SQL SERVER,想大家都是微软家族的嘛.但是发现SQL SERVER需要的配置比较高,需要的银子也比较多,最后在纠结之下换成了MySq ...
- 关于CAP定理的个人理解
CAP定理简介 在理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点: 一致性(C ...
- s3c2440笔记1(启动)
s3c2440启动方式 1. 从nand flash 启动 1.1 上电后将nand flash中的前4KB数据复制到“Stepping Stone”: 1.2 CPU 执行“Stepping Sto ...
- C#中的线程三 (结合ProgressBar学习Control.BeginInvoke)
C#中的线程三(结合ProgressBar学习Control.BeginInvoke) 本篇继上篇转载的关于Control.BeginInvoke的论述之后,再结合一个实例来说明Cotrol.Begi ...
- Html做三个平台原生APP啦
DeviceOne之前介绍过了,现在来介绍一下DeviceOne快速开发到什么程度 使用js只需要5分钟就可以打出垮Android.ios.windows三大平台的纯原生UI的安装包. 只需要6个小时 ...
- html5 Web Workers
虽然在JavaScript中有setInterval和setTimeout函数使javaScript看起来好像使多线程执行,单实际上JavaScript使单线程的,一次只能做一件事情(关于JavaSc ...
- Atitit 图像处理30大经典算法attilax总结
Atitit 图像处理30大经典算法attilax总结 1. 识别模糊图片算法2 2. 相似度识别算法(ahash,phash,dhash)2 3. 分辨率太小图片2 4. 横条薯条广告2 5. 图像 ...
- Netty权威指南
Netty权威指南(异步非阻塞通信领域的经典之作,国内首本深入剖析Netty的著作,全面系统讲解原理.实战和源码,带你完美进阶Netty工程师.) 李林锋 著 ISBN 978-7-121-233 ...