当前位置: 首页 > 科技观察

如何在区块链上部署chaincode

时间:2023-03-17 14:40:30 科技观察

本文转载自微信公众号《区块链研究实验室》,作者连三丰。转载本文请联系区块链研究实验室公众号。简介在本文中,我们将部署JAVA、GO、JAVASCRIPT的链代码来运行HyperledgerFabric区块链网络。网络设置HyperledgerFabricv2.3设置与一个应用程序通道。JAVA链码部署。GO链码部署。JAVASCRIPT链代码部署。文件夹结构克隆包含源代码的存储库。chaincodes:包含用JAVA、GO、JavaScript编写的链代码的源代码。deployChaincode:包含链码部署脚本。gitclonehttps://github.com/cmjagtap/Hyperledger-Fabric文件夹结构Fabric区块链设置如果Fiber网络已经在运行,您可以跳过此步骤。让我们创建一个结构网络,执行以下命令:exportPATH=${PWD}/bin:$PATHsudoservicedockerstartcdorg1./1_enrollOrg1AdminAndUsers.sh./2_generateMSPOrg1.shcd../org2./1_enrollOrg2AdminAndUsers.sh./2_generateMSPOrg2.shcd../orderer./1_enrollAdminAndMSP.sh./2_artifact.shcd../org1./3_createChannel.shcd../org2./3_joinChannel.shHyperledger2.3区块链已准备就绪。ChaincodeLifecyclePackagingChaincode:这里我们需要创建一个压缩的chaincodepackagertar.gz文件。由一个组织或每个组织完成,链代码可以打包在一个组织上,然后复制到其他组织或打包在所有其他组织上。安装:这是一个由二进制文件自动触发的事件。每个将使用链码来背书交易或查询分类帐的组织都需要完成此步骤,所有背书节点也是如此。批准:此步骤需要由将使用链代码的每个组织完成。链代码定义需要得到足够多的组织的批准,以满足通道的LifecycleEndorsment策略(大多数是默认设置)才能在通道上启动链代码。提交链码:一旦通道上所需数量的组织获得批准,提交交易必须由一个组织提交,该组织首先从已经批准链码的组织的足够多的同行那里收集背书,然后提交交易以提交链码定义.JAVAChaincode部署让我们导航到deployChaincode目录。在这里我们可以看到各种部署脚本。在目录结构中,我们有deployOrg1_JAVA.sh脚本,其中包含部署链代码所需的生命周期命令。在当前的Fabric网络中,我们有两个组织。首先在组织1上部署chaincode,如下:cddeployChaincodes./deployOrg1_JAVA.shchaincodedeployment上图显示chaincode部署成功,我们成功将汽车记录推入区块链,并成功查询到推车记录,这里make确保您已连接到互联网以解决链码依赖关系。在组织2上部署chaincode如下:./deployOrg2_JAVA.shChaindoeDeployment上图显示chaincode部署成功,我们可以查询汽车数据。在第二家公司,不需要执行所有的生命周期命令,链码的提交和初始化由一个组织完成。JAVAScript链代码部署在一个目录结构中,我们有deployOrg1_JavaScript.sh和deployOrg2_JavaScript.sh来执行它们。./deployOrg1_JavaScript.sh./deployOrg2_JavaScript.sh成功部署链代码后,您将看到与上图相同的输出。GO链代码部署在一个目录结构中,我们有deployOrg1_GO.sh和deployOrg2_GO.sh来执行它们。./deployOrg1_GO.sh./deployOrg2_GO.sh成功部署链代码后,您将看到与上图相同的输出。如何升级链码?假设我们已经在结构网络上部署了链代码。现在,我们要向现有链代码添加新功能。一旦实现,必须遵循相同的链代码生命周期过程来部署链代码,但这里必须升级链代码版本、链代码序列和链代码标签。在部署时,脚本必须将CC_VERSION从1更改为版本2,并将CC_SEQUENCE从1更改为2。我们不需要像更改CC_VERSION和CC_SEQUENCE那样更改标签。清理执行以下脚本以清理所有docker容器和加密材料。./clean.sh至此,我们已经在HyperledgerFabric区块链上成功部署了JAVA、GO、JavaScript链码。