如何在區塊鏈上部署鏈碼
本文轉載自微信公眾號「區塊鏈研究實驗室」,作者鏈三豐。轉載本文請聯系區塊鏈研究實驗室公眾號。
介紹
在本文中,我們將部署JAVA,GO,JAVASCRIPT的鏈代碼以運行Hyperledger Fabric區塊鏈網絡。
網絡設置
- 具有一個應用程序通道的Hyperledger Fabric v2.3設置。
- JAVA鏈碼部署。
- GO鏈碼部署。
- JAVASCRIPT鏈碼部署。
資料夾結構
克隆包含源代碼的倉庫。
chaincodes:包含用JAVA,GO,JavaScript編寫的鏈代碼的源代碼。
deployChaincode:包含鏈碼部署腳本。
- git clone https://github.com/cmjagtap/Hyperledger-Fabric
文件夾結構
織物區塊鏈設置
如果光纖網絡已經在運行,則可以跳過此步驟。讓我們創建一個結構網絡,執行以下命令:
- export PATH=${PWD}/bin:$PATH
- sudo service docker start
- cd org1
- ./1_enrollOrg1AdminAndUsers.sh
- ./2_generateMSPOrg1.sh
- cd ../org2
- ./1_enrollOrg2AdminAndUsers.sh
- ./2_generateMSPOrg2.sh
- cd ../orderer
- ./1_enrollAdminAndMSP.sh
- ./2_artifact.sh
- cd ../org1
- ./3_createChannel.sh
- cd ../org2
- ./3_joinChannel.sh
超級賬本2.3 blockchain已準備就緒。
鏈碼生命周期
- 打包鏈碼:在這里,我們需要創建一個壓縮的鏈碼打包器tar.gz文件。由一個組織或每個組織來完成,可將chaincode打包在單個組織上,然后將其復制到其他組織或打包在所有其他組織上。
- 安裝:它是二進制自動觸發的事件。每個將使用鏈碼認可交易或查詢分類帳的組織都需要完成此步驟,所有背書的對等方都需要執行此操作。
- 批準:每個將使用鏈碼的組織都需要完成此步驟。鏈碼定義需要得到足夠多的組織的批準,才能滿足該頻道的LifecycleEndorsment策略(大多數是默認值),才能在該頻道上啟動鏈碼。
- 提交鏈代碼:一旦批準了通道上所需數量的組織,提交事務就必須由一個組織提交,提交者首先從已經批準鏈碼的組織的足夠的同齡人那里收集背書,然后提交交易以提交鏈碼定義。
JAVA鏈碼部署
讓我們導航到deployChaincode目錄。在這里,我們可以看到各種部署腳本。
在目錄結構中,我們有deployOrg1_JAVA.sh腳本,其中包含部署鏈碼所需的生命周期命令。在當前的Fabric網絡中,我們有兩個組織。
首先,在組織1上部署鏈碼,如下所示:
- cd deployChaincodes
- ./deployOrg1_JAVA.sh
鏈碼部署
上圖顯示成功的部署了鏈碼,我們成功地將汽車記錄推入了區塊鏈并且成功查詢了推車記錄,這里要確保您的互聯網已連接到以解決鏈碼依賴性。
在組織2上部署鏈碼,如下所示:
- ./deployOrg2_JAVA.sh
Chaindoe部署
上圖顯示了鏈碼的成功部署,我們可以查詢了汽車數據。
在第二家公司中,則不需要執行所有生命周期命令,鏈碼的提交和初始化由單個組織完成。
JAVAScript鏈碼部署
在目錄結構中,我們有deployOrg1_JavaScript.sh和deployOrg2_JavaScript.sh執行它們。
- ./deployOrg1_JavaScript.sh
- ./deployOrg2_JavaScript.sh
成功部署chaincode后,將看到與上圖相同的輸出。
GO鏈碼部署
在目錄結構中,我們有deployOrg1_GO.sh和deployOrg2_GO.sh執行它們。
- ./deployOrg1_GO.sh
- ./deployOrg2_GO.sh
成功部署chaincode后,將看到與上圖相同的輸出。
如何升級鏈碼 ?
假設我們已經在結構網絡上部署了鏈碼?,F在,我們想為現有的鏈碼添加一個新功能。
實施后,必須遵循相同的鏈碼生命周期過程來部署鏈碼,但這里必須升級鏈碼版本,鏈碼序列和鏈碼標簽。
在部署,腳本將不得不改變CC_VERSION從1版本2和CC_SEQUENCE從1到2。
我們不需要更改標簽,因為我們已經通過更改CC_VERSION和CC_SEQUENCE進行了更改。
清理
執行以下腳本以清理所有docker容器和加密材料。
- ./clean.sh
目前為止,我們已經在Hyperledger Fabric區塊鏈上成功部署了JAVA,GO,JavaScript鏈代碼。