美文网首页
nodejs编写链码

nodejs编写链码

作者: 52hz_55ed | 来源:发表于2019-12-14 18:34 被阅读0次

https://github.com/itheima1/hyperledger

安装nodejs环境

在chaincode目录
mycc可以自定义名称

mkdir mycc
cd mycc

安装并初始化npm

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
npm init

将“test”键值对修改为“start”键值对(haha可自定义)

vi package.json
"start": "node haha.js"

下载fabric-shim环境

npm install --save fabric-shim
cat package.json

如果安装fabric-shim报错.则需要安装

sudo apt-get install -y build-essential

查看改js会发现多了以下键值对,说明安装成功

"fabric-shim": "^1.4.4"

生成对应的js文件

touch haha.js
vi haha.js

js文件模板(haha.js)

//导入环境依赖
const shim = require('fabric-shim');
const Chaincode = class{
    //链码初始化操作
    async Init(stub){
        //获取当前方法的名字和参数
        var ret = stub.getFunctionAndParameters();
        var args  = ret.params;
        var a = args[0];
        var aValue = args[1];
        var b = args[2];
        var bValue = args[3];
        await  stub.putState(a,Buffer.from(aValue));
        await  stub.putState(b,Buffer.from(bValue));
        return shim.success(Buffer.from('heima chaincodinit successs'));
    }
    
    async Invoke(stub){
        let ret = stub.getFunctionAndParameters();
        let fcn = this[ret.fcn];
        return fcn(stub,ret.params);
    }
    //查询操作
    async query(stub,args){
        let a = args[0];
        let balance = await stub.getState(a);
        return shim.success(balance);
    }

};
shim.start(new Chaincode());

开发者模式环境搭建

进入basic-network编辑docker-compose-cli.yaml

command:  peer node start
#command: peer node start --peer-chaincodedev=true
ports:
      - 7051:7051
      - 7053:7053

修改为

#command: peer node start
command: peer node start --peer-chaincodedev=true
ports:
      - 7051:7051
      - 7052:7052
      - 7053:7053

修改start.sh文件,在

docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb

修改为

docker-compose -f docker-compose.yml up -d ca.example.com orderer.example.com peer0.org1.example.com couchdb cli

chaincode注册给peer

他们之间通过grcp协议通信(在虚拟机终端输入)

CORE_CHAINCODE_ID_NAME="mycc:v0"  npm start -- --peer.address grpc://192.168.0.1:7052

注意:如果输入ifconfig发现docker0IP不同,需要修改为实际docker0的ip
若修改了nodejs,关闭通信,重复上面代码即可

安装链码

这是peer上chaincode的生命周期(在docker cli的终端输入)

CORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp peer chaincode install -l node -n mycc -v v0 -p /opt/gopath/src/github.com/mycc/

实例化链码(在docker cli的终端输入)

CORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp peer chaincode instantiate -l node -n mycc -v v0 -C mychannel -c '{"args":["init","zzh","100","czbk","100"]}' -o 192.168.0.1:7050

注意:此处ip同样需要通过ipconfig查询docker0的IP地址

测试链码调用(在docker cli的终端输入)

CORE_PEER_LOCALMSPID=Org1MSP CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp peer chaincode invoke -n mycc -C mychannel -c '{"args":["query","zzh"]}' -o 192.168.0.1:7050

停止网络使用

./stop.sh ./teardown.sh

相关文章

  • nodejs编写链码

    https://github.com/itheima1/hyperledger 安装nodejs环境 在chain...

  • 5.7 Hyperledger Fabric - 教程 - 链码

    教程 - 链码 1. 什么是链码? 链码 (chaincode) 是用 Go,node.js 或 Java 编写的...

  • Hyperledger Fabric 链码的介绍

    什么是链码 chaincode 简称 链码,一般是用户使用go语言编写的应用代码。 链码被部署在 Fabric 网...

  • 超级账本04--链码的概念和使用

    概念: Chaincode: 链上代码, 简称链码, 一般是指用户编写的应用代码 链码被部署在Fabric网络节点...

  • Fabric链码开发---helloworld

    一、编写链码 编写helloworld.go,代码如下。把文件放在fabric-samples/chaincode...

  • fabric java链码编写

    1. gradle 文件编写 添加依赖 整体出来的效果: 2.链码文件编写 新建一个类继承自ChaincodeBa...

  • 项目构建---全步骤

    nodeJS安装 1.使用bower必须要安装nodeJS,因为bower就是用nodeJS编写的,nodeJS是...

  • fabric nodejs链码示例2

    0 导言 智能合约是区块链中一个非常重要的概念和组成部分。在Fabric中内成为Chaincode,中文翻译为链码...

  • fabric nodejs链码示例1

    0 导言 智能合约是区块链中一个非常重要的概念和组成部分。在Fabric中内成为Chaincode,中文翻译为链码...

  • gulp项目构建

    bower 的安装,需要nodejs 因为bower就是nodejs编写的,nodejs是他的运行平台。 安装no...

网友评论

      本文标题:nodejs编写链码

      本文链接:https://www.haomeiwen.com/subject/scdggctx.html