1.在crypto-config.yaml文件中配置好组织信息,使用./cryptogen generate --config=./crypto-config.yaml
命令生成所需要的证书,包含ca证书,admin证书及通信证书等等。
2.在configtx.yaml文件中配置好联盟信息,哪些组织能访问哪些链就在这里配置。使用./configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./config/genesis.block
命令生成系统链创始区块。-profle参数指定了一个联盟配置,-outputBlock参数指定了生成的创始区块存放目录。如果出现FABRIC_CFG_PATH没设置的问题,设置一下就行了,使用export FABRIC_CFG_PATH=xxxxxx
命令指定一下configtx.yaml的路径即可。执行成功后,会在config目录下生成genesis.block文件。
3.使用./configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./config/mychannel.tx -channelID mychannel
命令通过configtx.yaml中的通道交易配置生成通道交易,创建通道。命令执行成功后,会在config目录下生成mychannel.tx文件。
4.生成Peer组织中的锚节点交易。这一步不是必须的操作,会自动执行,为了说明流程,还是手动执行一下。使用./configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./config/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
命令生成交易。-profile和-outputAnchorPeersUpdate参数不用说了,和前面两个命令的参数类似。-asOrg是指定针对哪个组织生成锚节点交易,这里针对Org1。如果是针对Org2,那么需要把命令中Org1都替换成Org2,上面的命令中需要替换两处。命令成功后,config目录中会生成指定的锚节点配置,Org1MSPanchors.tx。Org2同理。
- 进入peer节点,创建Channel。使用
peer channel create -o orderer.imocc.com:7050 -c mychannel -f /etc/hyperledger/config/mychannel.tx
创建。-o
表示和哪个orderer通信,-c
表示channel的名字,-f
表示使用哪一个创世交易。
6.加入通道。使用命令peer channel join -b mychannel.block
7.设置主机节点。使用命令peer channel update -o orderer.imocc.com:7050 -c mychannel -f /etc/hyperledger/config/Org1MSPanchors.tx
8.链码安装。使用命令peer chaincode install -n badexample -v 1.0.0 -l golang -p github.com/chaincode/badexample
9.链码实例化。使用命令peer chaincode instantiate -o orderer.imooc.com:7050 -C mychannel -n badexample -l golang -v 1.0.0 -c '{"Args":["init"]}'
。其中-o
表示和哪个orderer通信,-C
表示通道名字,-n
表示链码名字,-l
表示链码编写的语言,-v
表示版本号,-c
表示初始化参数。
10.链码查询。使用命令peer chaincode query -C mychannel -n badexample -c '{"Args":[]}'
11.命令行模式链码背书策略(不稳定,暂时不要用),即指定多少个peer确认后才有效
背书策略有两个操作,与和或(AND, OR)。身份有MSP.ROLE,ROLE有admin和member。
OR('org0MSP.member', 'org1MSP.admin')表示一笔交易有成员或者管理员的签名就可以发往orderer进行排序了。与和或操作可以嵌套
peer chaincode instantiate -o orderer.imooc.com:7050 -C mychannel -n badexample -l golang -v 1.0.0 -c '{"Args":["init"]}' -P "OR('org0MSP.member', 'org1MSP.admin')"
12.链码交互
peer chaincode invoke -C channelname -n chaincodename -c '{"Args": ["functionName", "functionArg1", "functionArg2"]}'
13.链码升级
peer chaincode install -n chaincodename -v 1.0.1 -l golang -p chaincodePath
peer chaincode upgrade -C channelname -n chaincodename -v 1.0.1 -P "OR('org0MSP.member')" -p chaincodePath -c '{"Args":["init"]}'
14.链码调试
开启链码调试命令:
peer node start --peer-chaincodedev=true
OR
CORE_CHAINCODE_MODE=dev
开启后,可以使用go run命令执行链码
然后按照之前的方法,安装,实例化链码,运行链码的函数。如果修改链码,需要查看结果,不需要重新部署链码,直接退出go run的程序,重新go run一下就行了
有疑问加站长微信联系(非本文作者)