HyperLedger Fabric 1.2 官方End

  • 时间:
  • 浏览:0

network_setup.sh



8.3.3 执行流程

        Fabric基础环境搭建完成后,End-2-End案例的运行先从network_setup.sh文件执行,执行过程中调用generateArtifacts.sh生成公私钥和证书等文件,再根据docker-compose-cli.yaml的配置内容通过docker运行zookeeper、kafka、orderer、peer和cli,最后在cli中运行script.sh文件,批量执行创建通道、加入通道、安装智能合约、实例化智能合约、执行交易和执行查询等功能,以上过程在越来越错误的情况下,自动执行逐行执行,直到提示END-E2E表示成功。执行完全流程如下:

7. Peer配置

还不都上能通过以下网址直接访问下载,地址:https://nexus.hyperledger.org/content/repositories/releases/org/hyperledger/fabric/hyperledger-fabric/,本书使用V1.2版本,对应文件为hyperledger-fabric-linux-amd64-1.2.0.tar.gz,下载完成后解压,获取bin目录。

存放生成的公私钥和证书等文件

存放配置提炼的公有要素,有另一一好几个 多 文件,分别为docker-compose-base.yaml和peer-base.yaml

8.3.5 配置介绍

1. 证书配置:crypto-config.yaml:

图:End-2-End开始英文运行

crypto-config

4. 运行e2e_cli

2. 下载加速镜像

2. 通道配置:

configtx.yaml:

文件(或目录)名称

       另一一好几个 多 工具不都上能通过如下命令最好的辦法 生成,在该End-2-End例子中已集成到generateArtifacts.sh一种生活 文件,运行后自动生成,不想手动命令操作,另一一好几个 多 文件生成到$GOPATH/src/github.com/hyperledger /release/linux-amd64/bin一种生活 目录。

scripts



文件说明:

显示start-e2e表示开始英文运行,如下图所示:

通道配置文件

8.1 End-2-End案例简介

        Fabric官方提供了实现点对点的Fabric网络示例,该网络有另一一好几个 多 组织(organizations),另一一好几个 多 组织一种生活生活生活节点(Peer),通过Kafka最好的辦法 实现排序(Orderer)服务。End-2-End案例的运行前要“cryptogen”和“configtxgen”另一一好几个 多 工具,用于Fabric网络所需的数字证书验证和访问控制功能。

生成的公私钥和证书的配置文件

案例运行的入口文件



crypto-config.yaml

删除镜像:

8.3 End-2-End案例分析8.3.1 案例架构       End-2-End案例由好几个 zookeeper、另一一好几个 多 kafka和另一一好几个 多 orderer实现排序,包括另一一好几个 多 组织,分别为Org1和Org2,每个组织蕴含另一一好几个 多 节点,分别为peer0和peer1,特征图如下所示:

生成公私钥和证书的执行文件

8.2 End-2-End案例运行

1. 配置加速镜像

4. Zookeeper配置

流程说明:1. 在e2e_cli目录执行network_setup.sh up表示开始英文执行,network_setup.sh down表示开始英文执行;2. 执行network_setup.sh up后先判断是否占据 crypto-config目录,肯能不占据 ,则调用generateArtifacts.sh文件生成公私钥和证书;否则通过命令docker-compose -f $COMPOSE_FILE up -d开始英文启动Fabric网络;3. Fabric网络启动成功后,自动执行script.sh文件,按照代码顺序,分别执行如下代码:    1) 显示start-e2e:显示将开始英文执行案例;     2) checkOSNAvailability:执行peer channel fetch 0 0_block.pb -o orderer.example.com:701000 -c "$ORDERER_SYSCHAN_ID" --tls --cafile $ORDERER_CA >&log.txt命令,验证排序(orderer)服务是否可用;    3) createChannel:执行peer channel create -o orderer.example.com:701000 -c $CHANNEL_NAME -f ./channel-artifacts/channel.tx --tls --cafile $ORDERER_CA >&log.txt命令创建通道;    4) joinChannel:执行peer channel join -b $CHANNEL_NAME.block >&log.txt命令好几个 peer节点加入到通道中;    5) updateAnchorPeers 0 1:执行peer channel update -o orderer.example.com:701000 -c $CHANNEL_NAME -f ./channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx --tls --cafile $ORDERER_CA >&log.txt命令更新组织1的锚节点0;    6) updateAnchorPeers 0 2:执行peer channel update -o orderer.example.com:701000 -c $CHANNEL_NAME -f ./channel-artifacts/${CORE_PEER_LOCALMSPID}anchors.tx --tls --cafile $ORDERER_CA >&log.txt命令更新组织2的锚节点0;    7) installChaincode 0 1:执行peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/example02/cmd >&log.txt命令在组织1的节点0上安装智能合约;    8) installChaincode 0 2:执行peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/example02/cmd >&log.txt命令在组织2的节点0上安装智能合约;    9) instantiateChaincode 0 2:执行peer chaincode instantiate -o orderer.example.com:701000 --tls --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc -v 1.0 -c '{"Args":["init","a","1000","b","1000"]}' -P "AND ('Org1MSP.peer','Org2MSP.peer')" >&log.txt在组织2的节点0上实例化智能合约,初始化a值为1000和b值为1000;    10) chaincodeQuery 0 1 1000:执行peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}' >&log.txt命令在组织1的节点0上查询a值,并判断是否为1000;    11) chaincodeInvoke 0 1 0 2:执行peer chaincode invoke -o orderer.example.com:701000 --tls --cafile $ORDERER_CA -C $CHANNEL_NAME -n mycc $PEER_CONN_PARMS -c '{"Args":["invoke","a","b","10"]}' >&log.txt命令从a值中转称10到a值中;    12) installChaincode 1 2:执行peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/example02/cmd >&log.txt命令在组织2的节点1上安装智能合约;    13) chaincodeQuery 1 2 90:执行peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}' >&log.txt命令在组织2的节点1上查询a值,并判断是否为90;    14) chaincodeQuery 1 3 90:执行peer chaincode query -C $CHANNEL_NAME -n mycc -c '{"Args":["query","a"]}' >&log.txt命令在组织3的节点1上查询a值,并判断是否为90;    15) 显示end-e2e:以上代码执行越来越再次出先错误,则显示end-e2e表示成功执行;8.3.4 智能合约介绍      智能合约通过Go语言编写,实现存储a和b值,并在a和b之间数据交易转移,主要包括Init(初始化)、Invoke(交易)、delete(删除)和query(查询)好几个 函数,具体代码如下:



图:文件特征



图:完全流程图

5. Kafka配置

Fabric网络Docker运行配置文件

删除完全镜像

不都上能了另一一好几个 多 script.sh文件,该文件是案例的运行功能的集合,运行后该自动执行完全功能,直到完成



图:End-2-End运行成功

8. Cli配置

configtx.yaml

download-dockerimages.sh

base

generateArtifacts.sh

3. 基础配置:

1) docker-compose-base.yaml:

下载Fabric镜像执行文件

channel-artifacts

存放生成的通道和创世纪块等文件,包括有channel.tx、genesis.block、Org1MSPanchors.tx和Org2MSPanchors.tx



图:End-2-End特征图

显示END-E2E表示运行成功,如下图所示:

3. 查看下载镜像

说明

docker-compose-cli.yaml

       所有的配置也有docker-compose-cli.yaml文件里,配置顺序分别为zookeeper、kafka、orderer、peer和cli,先运行zookeeper集群、再运行kafka集群,最后运行orderer和peer,前要按照以上运行顺序;实现的功能集中写在script.sh文件里,自动运行完全功能,直到显示成功,具体功能如下:   1. 验证排序(orderer)服务是否可用,函数:checkOSNAvailability   2. 创建通道,函数:createChannel   3. 加入通道,函数:checkOSNAvailability   4. 更新组织1的锚节点,函数:updateAnchorPeers   5. 更新组织2的锚节点,函数:updateAnchorPeers   6. 在组织1的节点0上安装智能合约,函数:installChaincode   7. 在组织2的节点0上安装智能合约,函数:installChaincode   8. 在组织2的节点0上实例化智能合约,函数:instantiateChaincode   9. 在组织1的节点0上查询智能合约,函数:chaincodeQuery   10. 从组织1的节点0向组织2的节点0转移数据10的交易,函数:chaincodeInvoke   11. 在组织2的节点1上安装智能合约,函数:installChaincode   12. 在组织2的节点1上查询智能合约,函数:chaincodeQuery8.3.2 文件特征      End-2-End案例的完全文件在fabric/examples/e2e_cli目录下,文件特征如下所示: