HyperLedger Fabric基础:搭建Fabric测试网络

作者:有好多问题2024.02.16 05:46浏览量:32

简介:本文将指导你如何搭建一个基本的HyperLedger Fabric测试网络,包括安装必要的软件、设置网络组件以及执行chaincode操作。通过这个测试网络,你可以学习Fabric的基本原理,以及如何在实际环境中部署和操作区块链应用。

在开始搭建HyperLedger Fabric测试网络之前,我们需要确保你的系统已经安装了以下软件:Git、Docker、Docker-Compose和Go。这些软件将用于获取Fabric代码、构建Docker镜像以及启动网络组件。

一、获取Fabric代码
首先,通过Git克隆Fabric的GitHub仓库。在终端中运行以下命令:

  1. git clone https://github.com/hyperledger/fabric.git

这将下载Fabric源代码到你的本地计算机。

二、安装Docker和Docker-Compose
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化。

Docker-Compose是一个工具,用于定义和运行复杂的Docker应用程序。它允许你使用YAML文件来配置应用程序的服务,然后使用单个命令在Docker中创建和管理多个容器的应用程序。

你可以根据你操作系统的要求,从Docker的官方网站下载并安装最新版本的Docker。同样,你可以从Docker-Compose的GitHub仓库下载并安装最新版本的Docker-Compose。

三、安装Go语言环境
Go语言是HyperLedger Fabric项目的主要编程语言。你可以从Go的官方网站下载并安装最新版本的Go语言环境。

在安装完以上软件后,我们需要设置网络组件。首先,进入Fabric源代码目录,然后运行以下命令来生成必要的配置文件和证书:

  1. cd fabric/peerdev

在peerdev目录下运行以下命令:

  1. ./devenv.sh up

这将启动一个基本的Fabric网络,包括组织、对等节点和证书。这个网络可以用于开发和测试目的。如果你需要更多的对等节点或组织,你可以修改docker-compose.yaml文件来增加它们。

四、执行chaincode操作
在设置好网络后,我们可以开始执行一些基本的chaincode操作。Chaincode是一种智能合约,它可以被部署在Fabric网络上,并通过链上执行来验证交易的有效性。在这个测试网络中,我们将实现一个简单的chaincode,用于初始化两个账户a和b,分别拥有100和200的余额,并可以执行查询和转账操作。

首先,我们需要安装chaincode的依赖包。在peerdev目录下运行以下命令:

  1. cd ../chaincode/fabcar/javascript
  2. npm install

这将安装chaincode需要的Node.js依赖包。接下来,我们需要构建并打包chaincode的镜像。运行以下命令:

  1. npm run package

这将生成一个名为fabcar.js的chaincode文件和一个名为fabcar.tar.gz的压缩包。我们将使用这个压缩包来部署chaincode到Fabric网络中。在部署之前,我们需要对压缩包进行签名,以验证它的身份。运行以下命令:

```bash
cd ../../peer/crypto/node/tools/packageChaincode.sh
./packageChaincode.sh -s -p ../chaincode/fabcar/javascript -v 1.0 -l javascript -i ./chaincode_example02/chaincode_example02.js -t ./chaincode_example02/chaincode_example02.js -r ./chaincode_example02/chaincode_example02.json -p ../chaincode/fabcar/node_modules -f ./chaincode_example02/fabcar.js -o ./chaincode_example02/fabcar.tar.gz -t ./chaincode_example02/package.json -t ./chaincode_example02/package-lock.json -c ./chaincode_example02/config.json -t ./chaincode_example02/script.js -c ./chaincode_example02/chaincode_example02.js -s -l javascript -f ./chaincode_example02/script.js -f ./chaincode_example02/package.json -f ./chaincode_example02/package-lock.json -f ./chaincode_example02/config.json -o ./chaincode_example02/fabcar.tar.gz -r ./chaincode_example02/fabcar.js -l javascript -f ./chain