介绍
网络设置
-
具有一个应用程序通道的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
链码生命周期
-
打包链码:在这里,我们需要创建一个压缩的链码打包器tar.gz文件。由一个组织或每个组织来完成,可将chaincode打包在单个组织上,然后将其复制到其他组织或打包在所有其他组织上。 -
安装:它是二进制自动触发的事件。每个将使用链码认可交易或查询分类帐的组织都需要完成此步骤,所有背书的对等方都需要执行此操作。 -
批准:每个将使用链码的组织都需要完成此步骤。链码定义需要得到足够多的组织的批准,才能满足该频道的LifecycleEndorsment策略(大多数是默认值),才能在该频道上启动链码。 -
提交链代码:一旦批准了通道上所需数量的组织,提交事务就必须由一个组织提交,提交者首先从已经批准链码的组织的足够的同龄人那里收集背书,然后提交交易以提交链码定义。
JAVA链码部署
cd deployChaincodes
./deployOrg1_JAVA.sh
链码部署
./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后,将看到与上图相同的输出。
如何升级链码 ?
假设我们已经在结构网络上部署了链码。现在,我们想为现有的链码添加一个新功能。
实施后,必须遵循相同的链码生命周期过程来部署链码,但这里必须升级链码版本,链码序列和链码标签。
在部署,脚本将不得不改变CC_VERSION从1版本2和CC_SEQUENCE从1到2。
我们不需要更改标签,因为我们已经通过更改CC_VERSION和CC_SEQUENCE进行了更改。
清理
执行以下脚本以清理所有docker容器和加密材料。 ./clean.sh
目前为止,我们已经在Hyperledger Fabric区块链上成功部署了JAVA,GO,JavaScript链代码。
原文始发于微信公众号(区块链研究实验室):如何在区块链上部署链码 | 区块链研究实验室