fabric正式环境搭建及nodejs的chaincode模板

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

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

"fabric-shim": "^1.4.4"

生成对应的js文件

touch haha.js
vi haha.js

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.yml将

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

启动start.sh

chaincode注册给peer

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

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

注意:后面的ip需要通过ipconfig查询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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容