超级账本HyperLedger:Fabric nodejs SDK的使用(附视频讲解)

作者: 李佶澳   转载请保留:原文地址   发布时间:2018/04/25 11:11:00

说明

这是“网易云课堂IT技术快速入门学院”使用的素材。

操作、配置文件和代码讲解视频在网易云课堂《HyperLeger Fabric进阶实战课》第五章中。

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

Hyperledger Fabric SDK for node.js

准备合适的node版本

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

在mac上可以用brew安装node8:

$ brew install node@8
$ echo 'export PATH="/usr/local/opt/node@8/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 <lijiaocn@foxmail.com>
 *
 * 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: 'Admin@member1.example.com',
        mspid: 'peers.member1.example.com',
        cryptoContent: { 
            privateKey: './msp/keystore/09dd09cf530d8f0fa6cb383b5b409ae8e895d32d31f75823f3bdb3c1f3ee180a_sk',
            signedCert: './msp/signcerts/Admin@member1.example.com-cert.pem'
        }
    }

    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

限时活动,每邀请一人即返回25元!

转载于:https://www.cnblogs.com/lijiaocn/p/9385090.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值