本章没有具体的操作,可以略过或大概了解一下,具体操作请看下一篇
概念介绍
生命周期管理
打包 (package)
-
链码主要包含以下3部分:
- 链码源码
- 实例化策略(可选)
链码的实例化策略会验证链码所有者的身份,进而验证其提交的链码源码、实例化策略是否有效。 - 链码签名
- 链码签名实现了下面3个目标:
- 表明是谁创建的链码;
- 允许验证链码包里的内容
- 可以检测链码包是否被篡改
- 链码签名实现了下面3个目标:
-
链码的创建
- 2中链码的创建方式
- 多个所有者:需要多个所有者对链码进行签名,先创建一个链码包 SignedChaincode
DeploymentSpec,然后发送给多个所有者进行签名 。 - 单个所有者:只有安装链码的节点对链码签名
- 多个所有者:需要多个所有者对链码进行签名,先创建一个链码包 SignedChaincode
- 创建命令(多个所有者,单个所有者不需要该步骤)
具体的参数不多做介绍,可以查看Fabric的文档,或者在命令行下使用–help查看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
- 2中链码的创建方式
安装( install)
链码安装的时候回把链码的源码打包到指定的结构目录中,安装到需要运行链码的Peer节点上。每次安装只对单个节点有效。需要给每个运行链码的倍数节点都安装一遍,具体需要安装到那些节点,可以根据背书策略来选择。
安装链码,-n
安装的名字,-v
指定版本,-l
指定开发的语言
peer chaincode install -n hello -v 1.0.0 -l golang -p github.com/chaincode/hello
实例化( instantiate)
链码实例化之前是和通道无关的,实例化的时候才和通道绑定。链码可以和多个通道绑定,在通道初始化后记录到通道状态数据库中。
链码实例化的时候会检查是否符合链码实例化的策略和通道写入的策略。默认的实例化策略是通道的任何一个管理员,所有链码的实例化交易提交者必须也是通道的管理员。
链码的实例化策略会指定链码的背书策略,用来确定通道上哪些节点执行的交易才能添加到账本中。指定背书策略可以同在添加-p
参数(OR
多选一满足,AND
每个都必须满足):
peer chaincode instantiate -n ChaincodeName -v version -c '{"Args”:[”john”,”。”]}’
-P "OR ( 'Orgl .member·,’ Org2.member·)”
升级( upgrade)
链码安装之后是随时可以升级的,升级的时候需要执行安装
和实例化
两步操作,链码名称不变,所有者和策略可选。链码版本是用字符串表示,并没有指定大小规则,是以更新先后顺序为准的。
停止和启动
链码的停止和启动功能还没有实现,只能手动删除链码的容器和镜像,再删除背书节点本地保存的链码。链码代码默认目录/var/hyperledger/production/chaincodes/<ccname>:<ccversion>
,其中,/var/hyperledger/production
目录是背书节点的环境变量 CORE_PEER_FILESYSTEMPATH
指定的。