1. 程式人生 > >【超級賬本】first-network -- script.sh原始碼分析

【超級賬本】first-network -- script.sh原始碼分析

script.sh的邏輯非常簡單,只是依次執行了一些測試命令(部分基礎含義定義依賴相同目錄下的utils.sh),主要函式如下:

createChannel
peer channel create -o orderer.example.com:7050 -c 
$CHANNEL_NAME -f ./channel-artifacts/channel.tx >&log.txt

功能:建立一個通道,並在檔案裡寫入對應的創世區塊? 存疑:這裡和之前byfn.sh裡的建立geneis.block有什麼區別? -o : 排序服務節點 -c : 通道名稱 -f : 前期通道配置檔案,參考筆記《07.first-network —

byfn.sh

joinChannel
peer channel join -b $CHANNEL_NAME.block  >&log.txt

功能:將某一個節點加入通道 -b: 儲存該通道創世區塊的檔案

存疑:這裡的命令是登陸到哪臺機器上執行的?是傳送給排序伺服器嗎?其次在這條命令裡沒有peer節點的引數,是如何知道加入的是哪個節點?

updateAnchorPeers
peer channel update -o orderer.example.com:7050 -c $CHANNEL_NAME
-f ./channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx >&log.txt

功能:傳送更新後的通道配置檔案,參見《08.通道的生命週期》

${CORE_PEER_LOCALMSPID}anchors.tx 就是前期生成的Org2MSPanchors.tx檔案。

installChaincode
peer chaincode install -n mycc -v 
${VERSION} -l ${LANGUAGE} -p ${CC_SRC_PATH} >&log.txt

功能:打包並儲存鏈碼到節點上 -n:鏈碼的名字 -l: 鏈碼編寫所採用的語言 -p: 鏈碼儲存的路徑 -v: 鏈碼的版本

instantiateChaincode
peer chaincode instantiate -o orderer.example.com:7050 -C
$CHANNEL_NAME -n mycc -l ${LANGUAGE} -v ${VERSION} -c
'{"Args":["init","a","100","b","200"]}' -P "OR
('Org1MSP.peer','Org2MSP.peer')" >&log.txt

功能:將鏈碼部署到網路上 -o: 排序節點 -C: 通道名稱 -n: 鏈碼名稱 -l: 鏈碼語言 -v: 鏈碼版本 -c: 構造訊息,即鏈碼在執行init時所需要的引數 -P: 鏈碼的背書策略,該策略應由其中任意節點背書

chaincodeInvoke
peer chaincode invoke -o orderer.example.com:7050 -C $CHANNEL_NAME
-n mycc -c '{"Args":["addRecord","1001","1999","college1","bachelo
r1"]}' >&log.txt

功能: 執行鏈碼 -o: 排序節點 -C: 通道名稱 -n: 鏈碼名稱 -c: 執行的引數,該命令表示執行鏈碼中的addRecord方法,後面為addRecord的四個引數