【超級賬本】first-network -- script.sh原始碼分析
阿新 • • 發佈:2018-12-12
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的四個引數