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