Hyperledger Fabric 链码的介绍

什么是链码

chaincode 简称 链码,一般是用户使用go语言编写的应用代码。

链码被部署在 Fabric 网络节点上,运行在 Docker 容器中,并通过 gRPC 协议与相应的Peer节点进行交互,以操作分布式账本中的数据。

链码生命周期

Fabric提供了 package,install,instantiate, 和 upgrade 4个命令管理链码的生命周期。

通过 install 安装链码,通过 instantiate 实例化链码,然后可以通过 invoke 、query 调用链码和查询链码。

如果需要升级链码,则需要先 install 安装新版本的链码,通过 upgrade 升级链码。

在 install 安装链码前,可以通过 package 打包并签名生成打包文件,然后在通过 install 安装。

安装链码

peer chaincode install -n sacc -v 1.0 -p sacc

实例化链码

peer chaincode instantiate -n sacc -v 1.0 -c '{"Args":["john","0"]}' -P "OR ('Org1.member','Org2.member')"

调用链码

peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA -C mychannel -n mycc -c '{"Args":["invoke","a","b","10"]}'

查询链码

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

升级链码

# 安装新版本的链码
peer chaincode install -n mycc -v 1 -p path/to/my/chaincode/v1

# upgrade 升级链码
peer chaincode upgrade -n mycc -v 1 -c '{"Args":["d", "e", "f"]}' -C mychannel

打包链码和签名

# 打包链码
peer chaincode package -n mycc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02 -v 0 -s -S -i "AND('OrgA.admin')" ccpack.out

# 对打包文件进行签名
peer chaincode signpackage ccpack.out signedccpack.out

你可能感兴趣的:(Hyperledger Fabric 链码的介绍)