【视频】超级账本HyperLedger:Fabric nodejs SDK的使用

作者: 李佶澳   转载请保留:原文地址   更新时间:2018/07/29 11:16:07

说明

这是“网易云课堂IT技术快速入门学院”使用的素材。操作、配置文件和代码讲解视频在网易云课堂《HyperLeger Fabric进阶实战课》第五章中。

当前(2018-04-25 11:16:23)fabric的SDK只有java和node是正式的,他倆的文档也是最丰富的,Hyperledger Fabric SDK for node.js。当前支持的node版本是v8.9.0~v9.0,v9.0以上版本不支持(2018-07-15 14:11:01)。

相关笔记,都是一边学习一边记录的,时间紧难免粗糙,有疑惑地方以官方文档为准:

文字介绍:

《超级账本HyperLedger:超级账本工作组旗下项目介绍》

《超级账本HyperLedger:Fabric掰开揉碎,一文解惑》

《超级账本HyperLedger:Fabric的基本概念与基础用法》

《超级账本HyperLedger:FabricCA的基本概念与用法讲解》

《超级账本HyperLedger:FabricCA的级联使用(InterMediateCA)》

《超级账本HyperLedger:Fabric Chaincode(智能合约、链码)开发方法》

《超级账本HyperLedger:Fabric Channel配置的读取转换》

《超级账本HyperLedger:Explorer安装使用》

《超级账本HyperLedger:Cello部署和使用》

视频演示:

《【视频】超级账本HyperLedger:Fabric的全手动、多服务器部署教程》

《【视频】超级账本HyperLedger:使用Ansible进行Fabric多节点分布式部署(实战)》

《【视频】超级账本HyperLedger:Fabric从1.1.0升级到1.2.0》

《【视频】超级账本HyperLedger:Fabric使用kafka进行区块排序(共识)》

《【视频】超级账本HyperLedger:为Fabric的Peer节点配置CouchDB》

《【视频】超级账本HyperLedger:Fabric-CA的使用演示(两个组织一个Orderer三个Peer)》

《【视频】超级账本HyperLedger:Fabric的Chaincode(智能合约、链码)开发、使用示》

《【视频】超级账本HyperLedger:Fabric Go SDK的使用》

《【视频】超级账本HyperLedger:Fabric nodejs SDK的使用》

《【视频】超级账本HyperLedger:Fabric进阶,在已有的Channel中添加新的组织》

问题汇总:

《超级账本HyperLedger:Fabric部署过程时遇到的问题汇总》

《超级账本HyperLedger:Fabric的Chaincode开发过程中遇到的问题》

《超级账本HyperLedger:Fabric Node.js SDK使用时遇到的问题》

《超级账本HyperLedger:Fabric Golang SDK使用时遇到的问题》

《超级账本HyperLedger:Fabric 1.2.0使用时遇到的问题》

准备合适的node版本

当前支持的node版本是v8.9.0~v9.0,v9.0以上版本不支持(2018-07-15 14:11:01)。

在mac上可以用brew安装node8:

$ brew install [email protected]
$ echo 'export PATH="/usr/local/opt/[email protected]/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile
$ node --version
v8.11.3

或者直接下载安装:nodejs download

用npm管理依赖包

创建文件package.json:

$ cat package.json
{
    "dependencies": {
        "fabric-ca-client": "1.1.2",
        "fabric-client": "1.1.2",
        "grpc": "^1.6.0"
    },
    "author": "Anthony O'Dowd",
    "license": "Apache-2.0",
    "keywords": [
        "Hyperledger",
        "Fabric",
        "Car",
        "Sample",
        "Application"
    ]
}

用npm安装依赖包:

npm config set registry https://registry.npm.taobao.org  (设置淘宝提供的镜像源)
npm install

Example

调用mychannel中的mycc合约的query接口,参数为key:

node ./01-query-chaincode.js

代码如下:

/*
 * client.js
 * Copyright (C) 2018 lijiaocn <[email protected]>
 *
 * Distributed under terms of the GPL license.
 */

var fs = require('fs');
var Fabric_Client = require('fabric-client');

//创建一个Client
Fabric_Client.newDefaultKeyValueStore({ path: '/tmp/xx/' }).then((state_store) => {
    client=new Fabric_Client();
    client.setStateStore(state_store)

    //设置用户信息    
    var userOpt = {
        username: '[email protected]',
        mspid: 'peers.member1.example.com',
        cryptoContent: { 
            privateKey: './msp/keystore/09dd09cf530d8f0fa6cb383b5b409ae8e895d32d31f75823f3bdb3c1f3ee180a_sk',
            signedCert: './msp/signcerts/[email protected]'
        }
    }

    return client.createUser(userOpt)

}).then((user)=>{

    //设置要连接的Channel
    var channel = client.newChannel('mychannel');

    //设置要连接的Peer
    var peer = client.newPeer(
        'grpcs://peer0.member1.example.com:7051',
        {
            pem: fs.readFileSync('./tls/ca.crt', { encoding: 'utf8' }),
            clientKey: fs.readFileSync('./tls/client.key', { encoding: 'utf8' }),
            clientCert: fs.readFileSync('./tls/client.crt', { encoding: 'utf8' }),
            'ssl-target-name-override': 'peer0.member1.example.com'
        }
    );

    channel.addPeer(peer);

    //调用chaincode
    const request = {
        chaincodeId: 'mycc',   //chaincode名称
        fcn: 'query',          //调用的函数名
        args: ['key1']         //参数
    };

    // send the query proposal to the peer
    return channel.queryByChaincode(request);

}).then((response)=>{
    console.log('Response is', response.toString());
})

Hyperledger Fabric SDK for node.js中有每个类说明,上面示例的源代码托管在Github上: hyperledger-fabric-sdks-usage

HyperLedger官方源代码中还有更多的例子:fabric node sdk example

使用过程遇到的问题记录在: 《超级账本HyperLedger:Fabric的Node.js SDK使用时遇到的问题》

更多关于超级账本和区块链的文章

参考

  1. Hyperledger Fabric SDK for node.js
  2. Setting up the Application Developer’s Environment
  3. fabric node sdk example
  4. Operation initiated from the Hyperledger Fabric Client SDK for Node.js results in TSI error
  5. 使用Fabric Node SDK进行Invoke和Query
  6. nodejs download
  7. 《超级账本HyperLedger:Fabric的Node.js SDK使用时遇到的问题》
  8. hyperledger-fabric-sdks-usage

本文原创首发于网站:www.lijiaocn.com

QQ交流群

区块链实践互助QQ群:576555864

Kubernetes实践互助QQ群:947371129

Prometheus实践互助QQ群:952461804

Kong/Envoy实践互助QQ群:952503851

Ansible实践互助QQ群:955105412

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作 友情链接: lijiaocn github.com