1.在crypto-config.yaml文件中配置好組織信息,使用./cryptogen generate --config=./crypto-config.yaml
命令生成所需要的證書噪径,包含ca證書狰贯,admin證書及通信證書等等歧强。
2.在configtx.yaml文件中配置好聯(lián)盟信息,哪些組織能訪問哪些鏈就在這里配置。使用./configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./config/genesis.block
命令生成系統(tǒng)鏈創(chuàng)始區(qū)塊台盯。-profle參數(shù)指定了一個聯(lián)盟配置存筏,-outputBlock參數(shù)指定了生成的創(chuàng)始區(qū)塊存放目錄宠互。如果出現(xiàn)FABRIC_CFG_PATH沒設(shè)置的問題,設(shè)置一下就行了椭坚,使用export FABRIC_CFG_PATH=xxxxxx
命令指定一下configtx.yaml的路徑即可予跌。執(zhí)行成功后,會在config目錄下生成genesis.block文件善茎。
3.使用./configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./config/mychannel.tx -channelID mychannel
命令通過configtx.yaml中的通道交易配置生成通道交易券册,創(chuàng)建通道。命令執(zhí)行成功后垂涯,會在config目錄下生成mychannel.tx文件烁焙。
4.生成Peer組織中的錨節(jié)點交易。這一步不是必須的操作耕赘,會自動執(zhí)行骄蝇,為了說明流程,還是手動執(zhí)行一下操骡。使用./configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./config/Org1MSPanchors.tx -channelID mychannel -asOrg Org1MSP
命令生成交易九火。-profile和-outputAnchorPeersUpdate參數(shù)不用說了,和前面兩個命令的參數(shù)類似当娱。-asOrg是指定針對哪個組織生成錨節(jié)點交易吃既,這里針對Org1。如果是針對Org2跨细,那么需要把命令中Org1都替換成Org2鹦倚,上面的命令中需要替換兩處。命令成功后冀惭,config目錄中會生成指定的錨節(jié)點配置震叙,Org1MSPanchors.tx掀鹅。Org2同理。
- 進(jìn)入peer節(jié)點媒楼,創(chuàng)建Channel乐尊。使用
peer channel create -o orderer.imocc.com:7050 -c mychannel -f /etc/hyperledger/config/mychannel.tx
創(chuàng)建。-o
表示和哪個orderer通信划址,-c
表示channel的名字扔嵌,-f
表示使用哪一個創(chuàng)世交易。
6.加入通道夺颤。使用命令peer channel join -b mychannel.block
7.設(shè)置主機(jī)節(jié)點痢缎。使用命令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
表示初始化參數(shù)麻养。
10.鏈碼查詢。使用命令peer chaincode query -C mychannel -n badexample -c '{"Args":[]}'
11.命令行模式鏈碼背書策略(不穩(wěn)定诺舔,暫時不要用)回溺,即指定多少個peer確認(rèn)后才有效
背書策略有兩個操作,與和或(AND, OR)混萝。身份有MSP.ROLE遗遵,ROLE有admin和member。
OR('org0MSP.member', 'org1MSP.admin')表示一筆交易有成員或者管理員的簽名就可以發(fā)往orderer進(jìn)行排序了逸嘀。與和或操作可以嵌套
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.鏈碼調(diào)試
開啟鏈碼調(diào)試命令:
peer node start --peer-chaincodedev=true
OR
CORE_CHAINCODE_MODE=dev
開啟后曙强,可以使用go run命令執(zhí)行鏈碼
然后按照之前的方法示损,安裝弊予,實例化鏈碼悦析,運行鏈碼的函數(shù)。如果修改鏈碼司光,需要查看結(jié)果琅坡,不需要重新部署鏈碼,直接退出go run的程序残家,重新go run一下就行了