fabricpath配置及搭建(Fabric 2.x 环境搭建)

更新时间:2022-11-15 16:40:23 阅读: 评论:0

fabricpath配置及搭建(Fabric 2.x 环境搭建)

  T3k动博网

T3k动博网

  一、说明T3k动博网

  一个区块链网络的核心是一个分布式账本,在这个账本中记录了网络中发生的所有交易信息。T3k动博网

  Hyperledger Fabric是一个是开源的,企业级的,带权限的分布式账本解决方案的平台。Hyperledger Fabric由模块化架构支撑,并具备极佳的保密性、可伸缩性、灵活性和可扩展性。Hyperledger Fabric被设计成支持不同的模块组件直接拔插启用,并能适应在经济生态系统中错综复杂的各种场景。T3k动博网

  本文分享在 Centos 7.5 下搭建 Hyperledger Fabric 2.4 环境并进行简单的测试。T3k动博网

  二、环境准备T3k动博网

  2.1. 环境依赖T3k动博网

  Git 客户端T3k动博网

  Golang 1.17.5以上版本T3k动博网

  Docker 18.03以上版本T3k动博网

  2.2. 检查环境T3k动博网

  「Docker版本」T3k动博网

  docker -vT3k动博网

  T3k动博网

T3k动博网

  「Golang语言环境」T3k动博网

  go versionT3k动博网

  T3k动博网

T3k动博网

  三、Fabric 源码安装T3k动博网

  3.1. 创建目录T3k动博网

  在 GOPATH 目录下创建 Fabric 的文件夹:T3k动博网

  mkdir -p $GOPATH/src/github.com/hyperledgerT3k动博网

  3.2. 下载源码T3k动博网

  cd $GOPATH/src/github.com/hyperledgerT3k动博网

  git clone https://gitee.com/hyperledger/fabric.gitT3k动博网

  这里使用国内的码云的镜像仓库T3k动博网

  T3k动博网

T3k动博网

  3.3. 修改安装脚本T3k动博网

  如果本地网络访问github顺畅可以忽略该步骤T3k动博网

  编辑 bootstrap.sh 文件T3k动博网

  vim $GOPATH/src/github.com/hyperledger/fabric/scripts/bootstrap.shT3k动博网

  把 https://img.nbwxtz.com/imgs/006/2022/11202275838 修改为 https://gitee.com/hyperledger/fabric-samples.gitT3k动博网

  T3k动博网

T3k动博网

  注释 pullBinariesT3k动博网

  T3k动博网

T3k动博网

  3.4. 执行安装脚本T3k动博网

  ./bootstrap.shT3k动博网

  如下图所示,脚本执行成功之后会下载一个 fabric-samples 工程和一堆fabric的docker镜像:T3k动博网

  T3k动博网

T3k动博网

  T3k动博网

T3k动博网

  分别手动下载 fabric 和 fabric-ca 编译后的压缩包,存放在 fabric/scripts/ 目录下:T3k动博网

  由于码云镜像仓库的发布包只有源码,我们需要编译后的所以只能想办法去github下载。T3k动博网

  https://github.com/hyperledger/fabric/releases/download/v2.4.1/hyperledger-fabric-linux-amd64-2.4.1.tar.gzT3k动博网

  https://github.com/hyperledger/fabric-ca/releases/download/v1.5.2/hyperledger-fabric-ca-linux-amd64-1.5.2.tar.gzT3k动博网

  T3k动博网

T3k动博网

  压缩压缩包,得到 bin 与 config 两个文件夹:T3k动博网

  tar -zxvf hyperledger-fabric-linux-amd64-2.4.1.tar.gzT3k动博网

  tar -zxvf hyperledger-fabric-ca-linux-amd64-1.5.2.tar.gzT3k动博网

  执行一下命令复制 fabric-samples 目录中T3k动博网

  cp -r bin fabric-samples/T3k动博网

  cp -r config fabric-samples/T3k动博网

  四、启动test-network测试网络T3k动博网

  进入test-network目录T3k动博网

  cd $GOPATH/src/github.com/hyperledger/fabric/scripts/fabric-samples/test-networkT3k动博网

  执行以下命令:T3k动博网

  ./network.sh upT3k动博网

  如果出现下图的报错:T3k动博网

  T3k动博网

T3k动博网

  则需要修改 docker-compose 的版本,在test-network目录下分别编辑以下文件:T3k动博网

  vim docker/docker-compose-test-net.yamlT3k动博网

  vim docker/docker-compose-couch.yamlT3k动博网

  vim docker/docker-compose-ca.yamlT3k动博网

  vim addOrg3/docker/docker-compose-couch-org3.yamlT3k动博网

  vim addOrg3/docker/docker-compose-org3.yamlT3k动博网

  其中把 version: '3.7' 修改为 version: '3.6' 如下图所示:T3k动博网

  T3k动博网

T3k动博网

  修改完配置后,重新执行:T3k动博网

  ./network.sh upT3k动博网

  如下图所示,已成功启动一个 orderer节点 和两个 peer节点:T3k动博网

  T3k动博网

T3k动博网

  至此一个基于 Hyperledger Fabric 的测试网络就搭建完成了。T3k动博网

  五、测试网络使用T3k动博网

  可以执行以下命令打印脚本的帮助文本:T3k动博网

  ./network.sh -hT3k动博网

  5.1. 创建ChannelT3k动博网

  现在我们的机器上正在运行对等节点和排序节点, 我们可以使用脚本创建用于在Org1和Org2之间进行交易的Fabric通道。T3k动博网

  Fabric channel 是特定网络成员之间的专用通信层,通道只能由被邀请加入通道的组织使用,并且对网络的其他成员不可见。 每个通道都有一个单独的区块链账本,被邀请的组织“加入”他们的对等节点来存储其通道账本并验证交易,建立一个通道相当于建立了一个子链。T3k动博网

  使用network.sh脚本在Org1和Org2之间创建通道并加入他们的对等节点,执行以下命令创建一个通道:T3k动博网

  ./network.sh createChannelT3k动博网

  如下图所示创建成功后默认名称为 mychannelT3k动博网

  T3k动博网

T3k动博网

  可使用 -c 来指定通道名称,以下命令将创建一个名为 channel1 的通道:T3k动博网

  ./network.sh createChannel -c channel1T3k动博网

  5.2. 在通道启动一个链码T3k动博网

  创建通道后,可以开始使用智能合约与通道账本交互。智能合约包含管理区块链账本上资产的业务逻辑,由成员运行的应用程序网络可以在账本上调用智能合约创建,更改和转让这些资产,应用程序还通过智能合约查询,以在分类帐上读取数据。T3k动博网

  在Fabric中,智能合约作为链码以软件包的形式部署在网络上。链码安装在组织的对等节点上,然后部署到某个通道,然后可以在该通道中用于认可交易和区块链账本交互。在将链码部署到通道前,该频道的成员需要就链码定义达成共识,建立链码治理。何时达到要求数量的组织同意后,链码定义可以提交给通道,并且可以使用链码了。T3k动博网

  创建频道后,可以使用network.sh脚本在通道上启动链码:T3k动博网

  ./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-java -ccl javaT3k动博网

  「-ccn」:为指定链码名称T3k动博网

  「-ccl」:为指定链码语言T3k动博网

  deployCC 子命令将在 peer0.org1.example.com 和 peer0.org2.example.com 上安装 asset-transfer-basic 链码,如果第一次部署链码,脚本将安装链码的依赖项。默认情况下,脚本安装Go版本的 asset-transfer-basic 链码,可以通过参数 -ccl 来安装 Java 或 javascript 版本的链码。T3k动博网

  5.3. 与网络交互T3k动博网

  在启用测试网络后,可以使用 peer cli 客户端与网络进行交互,通过 peer cli 客户端可以调用已部署的智能合约,更新通道,或安装和部署新的智能合约。T3k动博网

  首先确保操作目录为test-network目录,比如我的目录是:T3k动博网

  以下操作需确保在 test-network 目录中进行操作:T3k动博网

  T3k动博网

T3k动博网

  执行以下命令将cli客户端添加到环境变量中:T3k动博网

  export PATH=${PWD}/../bin:$PATHT3k动博网

  还需要将fabric-samples代码库中的FABRIC_CFG_PATH设置为指向其中的core.yaml文件:T3k动博网

  export FABRIC_CFG_PATH=$PWD/../config/T3k动博网

  设置允许org1操作peer cli的环境变量:T3k动博网

  export CORE_PEER_TLS_ENABLED=trueT3k动博网

  export CORE_PEER_LOCALMSPID="Org1MSP"T3k动博网

  export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crtT3k动博网

  export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/mspT3k动博网

  export CORE_PEER_ADDRESS=localhost:7051T3k动博网

  CORE_PEER_TLS_ROOTCERT_FILE 和 CORE_PEER_MSPCONFIGPATH 环境变量指向Org1的 organizations 文件夹中的的加密材料。T3k动博网

  执行以下命令用一些资产来初始化账本:T3k动博网

  peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"InitLedger","Args":[]}'T3k动博网

  执行成功会返回 Chaincode invoke successful. result: status:200 如下图所示:T3k动博网

  T3k动博网

T3k动博网

  执行以下指令来查询通道账本中的资产列表:T3k动博网

  peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'T3k动博网

  T3k动博网

T3k动博网

  六、关闭网络T3k动博网

  使用完测试网络后,可执行以下命令关闭网络:T3k动博网

  ./network.sh downT3k动博网

  该命令将停止并删除节点和链码容器,删除组织加密材料,并从Docker Registry移除链码镜像,另外还会删除之前运行的通道项目:T3k动博网

  T3k动博网

T3k动博网

  七、使用认证机构创建网络T3k动博网

  Hyperledger Fabric使用公钥基础设施(PKI)来验证所有网络参与者的行为。 每个节点,网络管理员和用户提交的交易需要具有公共证书和私钥以验证其身份。T3k动博网

  默认情况下,脚本使用cryptogen工具创建证书和密钥,该工具用于开发和测试,并且可以快速为具有有效根信任的Fabric组织创建所需的加密材料。T3k动博网

  测试网络脚本还提供了使用证书颁发机构(CA)的网络的启动选项。在网络中每个组织操作一个CA(或多个中间CA)来创建属于他们的组织身份,所有由该组织运行的CA创建的身份享有相同的组织信任根源。T3k动博网

  首先运行以下命令关停所有正在运行的网络:T3k动博网

  ./network.sh downT3k动博网

  使用CA参数启动网络:T3k动博网

  ./network.sh up -caT3k动博网

  执行命令成功后,通过打印的docker容器可以看到启动了三个CA,每个网络中的组织一个:T3k动博网

  T3k动博网

T3k动博网

  可以通过 tree 命令来查看Org1管理员用户的MSP文件夹结构和文件:T3k动博网

  tree organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/T3k动博网

  T3k动博网

T3k动博网

  其中 signcerts 文件夹中存放着管理员用户的证书,keystore 文件夹中存放着私钥。T3k动博网

T3k动博网

本文发布于:2022-11-15 16:40:23,感谢您对本站的认可!

本文链接:https://www.mbdongbo.com/sports/8/399511.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:
相关文章
Copyright ©2019-2022 Comsenz Inc.Powered by © 动博网 京ICP备13042020号-1