HyperLedger Fabric2.2环境搭建及官方测试用例部署

1. 前言

发现网上关于最新Fabric教程比较少,记录一下学习使用Fabric过程。

2. 软件及依赖安装

本机环境:VMWare下Ubuntu18

2.1 Go语言安装

首先安装一些必要的依赖:

sudo apt install libtool libltdl-dev

去该网站 https://studygolang.com/dl 下载Go语言的安装包,我下的是目前最新版本go1.15.6.linux-amd64.tar.gz

将压缩包解压到/usr/local目录下

sudo tar -C /usr/local -xzvf go1.15.6.linux-amd64.tar.gz

配置go环境变量,go语言的环境变量配置,需要两个值:

  1. GOROOT是系统上安装Go软件包的位置
  2. GOPATH是工作目录的位置

创建go工作目录 mkdir ~/go

编辑配置文件sudo vim ~/.profile,在最后添加以下内容

export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin

运行一下命令使环境变量生效

source ~/.profile

使用go version 命令查看是否安装配置成功,如果显示了版本号,就说明安装成功: go version go1.15.6 linux/amd64

2.2 Docker及Docker-compose安装

2.2.1 Docker-ce安装

参考阿里云安装docker ce

将当前用户添加到docker用户组

#创建docker用户组(如果没有)
sudo groupadd docker
sudo usermod -aG docker $USER

编辑/etc/docker/daemon.json文件,如果没有自行创建

{"registry-mirrors":[
        "https://9mmbkrkd.mirror.aliyuncs.com",
        "https://hub-mirror.c.163.com/",
        "https://reg-mirror.qiniu.com"
]}

重启服务

sudo systemctl daemon-reload
sudo systemctl restart docker

安装成功后docker -v 查看版本号验证是否安装成功

2.2.2 Docker-compose安装

下载docker-compose的二进制包(发帖时最新版本,新版本请自行更换版本号1.27.4):

sudo curl -L https://github.com/docker/compose/releases/download/1.27.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#添加权限
sudo chmod +x /usr/local/bin/docker-compose

注:若出现bash: /usr/bin/docker-compose: No such file or directory错误,运行以下命令

sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose

docker-compose -v 查看版本号

2.3 git安装

sudo apt install git

2.4 node.js和npm安装

如不需使用js则不必安装。
安装参考Ubuntu18.04 Install Node.js Npm,因为apt安装版本较老 需要更新一下

3 Fabric环境搭建

3.1拉取源码

创建目录并切换

mkdir -p ~/go/src/github.com/hyperledger/
cd go/src/github.com/hyperledger/

从github上拉取fabric的源码:

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

如拉取速度太慢,推荐使用gitee将GitHub项目导入再从gitee下载,速度大大提升。参考教程

#gitee下载示例
git clone https://gitee.com/$USER/fabric.git

3.2 切换版本

切换目录到~/go/src/github.com/hyperledger/fabric
查看版本git branch -a
切换版本为你想要的版本git checkout release-2.2

3.3 启动安装程序

切换到fabric/目录下scripts目录 执行命令

cd scripts/
./bootstrap.sh

如果以上命令速度太慢则分开获取(3.3.1fabric-samples 3.3.2二进制文件 3.3.3镜像)

3.3.1 获取fabric-samples

类似上面gitee方法,编辑bootstrap.sh文件中https://github.com/hyperledger/fabric-samples.git改为你gitee地址,执行./bootstrap.sh -db

3.3.2获取二进制文件

下载hyperledger-fabric-linux-amd64-2.2.1.tar.gzhyperledger-fabric-ca-linux-amd64-1.4.9.tar.gz到本地,复制到fabric-samples目录下,并解压

tar xzvf hyperledger-fabric-linux-amd64-2.2.1.tar.gz
tar xzvf hyperledger-fabric-ca-linux-amd64-1.4.9.tar.gz

解压后生成bin/与config/目录
在这里插入图片描述
将一下环境变量加入~/.profile,执行source ~/.profile

export PATH=$PATH:/home/czh/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/bin
export PATH=$PATH:/home/czh/go/src/github.com/hyperledger/fabric/scripts/fabric-samples/config

3.3.3获取docker镜像

scripts目录下执行命令

./bootstrap.sh -sb

安装完后容器镜像如下所示(不知道为啥会下2.2?如有知情者请留言讨论)

hyperledger/fabric-nodeenv   2.2       8d164f92ca34   2 months ago   294MB
hyperledger/fabric-nodeenv   2.2.1     8d164f92ca34   2 months ago   294MB
hyperledger/fabric-nodeenv   latest    8d164f92ca34   2 months ago   294MB
hyperledger/fabric-javaenv   2.2       f7b2f8cce0e4   3 months ago   407MB
hyperledger/fabric-javaenv   2.2.1     f7b2f8cce0e4   3 months ago   407MB
hyperledger/fabric-javaenv   latest    f7b2f8cce0e4   3 months ago   407MB
hyperledger/fabric-ca        1.4       dbbc768aec79   3 months ago   158MB
hyperledger/fabric-ca        1.4.9     dbbc768aec79   3 months ago   158MB
hyperledger/fabric-ca        latest    dbbc768aec79   3 months ago   158MB
hyperledger/fabric-tools     2.2       e9b802fadb41   3 months ago   519MB
hyperledger/fabric-tools     2.2.1     e9b802fadb41   3 months ago   519MB
hyperledger/fabric-tools     latest    e9b802fadb41   3 months ago   519MB
hyperledger/fabric-peer      2.2       ece149884124   3 months ago   55MB
hyperledger/fabric-peer      2.2.1     ece149884124   3 months ago   55MB
hyperledger/fabric-peer      latest    ece149884124   3 months ago   55MB
hyperledger/fabric-orderer   2.2       78a16ddd2cf4   3 months ago   38.4MB
hyperledger/fabric-orderer   2.2.1     78a16ddd2cf4   3 months ago   38.4MB
hyperledger/fabric-orderer   latest    78a16ddd2cf4   3 months ago   38.4MB
hyperledger/fabric-ccenv     2.2       8e554c280cac   3 months ago   586MB
hyperledger/fabric-ccenv     2.2.1     8e554c280cac   3 months ago   586MB
hyperledger/fabric-ccenv     latest    8e554c280cac   3 months ago   586MB
hyperledger/fabric-baseos    2.2       0b99d26b26ad   3 months ago   6.85MB
hyperledger/fabric-baseos    2.2.1     0b99d26b26ad   3 months ago   6.85MB
hyperledger/fabric-baseos    latest    0b99d26b26ad   3 months ago   6.85MB

4. 用例测试

切换到fabric-samples/test-network目录下

./network.sh up

如果没出现错误,说明你的fabric已经搭建好了。
在这里插入图片描述

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 下面是一个简单的 Hyperledger Fabric 2.0 Go语言链码示例: ``` package main import ( "fmt" "github.com/hyperledger/fabric-chaincode-go/shim" pb "github.com/hyperledger/fabric-protos-go/peer" ) // SimpleChaincode example simple Chaincode implementation type SimpleChaincode struct { } func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response { fmt.Println("ex02 Init") _, args := stub.GetFunctionAndParameters() var A, B string // Entities var Aval, Bval int // Asset holdings var err error if len(args) != 4 { return shim.Error("Incorrect number of arguments. Expecting 4") } // Initialize the chaincode A = args[0] Aval, err = strconv.Atoi(args[1]) if err != nil { return shim.Error("Expecting integer value for asset holding") } B = args[2] Bval, err = strconv.Atoi(args[3]) if err != nil { return shim.Error("Expecting integer value for asset holding") } fmt.Printf("Aval = %d, Bval = %d\n", Aval, Bval) // Write the state to the ledger err = stub.PutState(A, []byte(strconv.Itoa(Aval))) if err != nil { return shim.Error(err.Error()) } err = stub.PutState(B, []byte(strconv.Itoa(Bval))) if err != nil { return shim.Error(err.Error()) } return shim.Success(nil) } func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response { fmt.Println("ex02 Invoke") function, args := stub.GetFunctionAndParameters() if function == "invoke" { // Make payment of X units from A to B return t.invoke(stub, args) } else if function == "delete" { // Deletes an entity from its state return t.delete(stub, args) } else if function == "query" { // the old "Query" is now implemtned in invoke return t.query(stub, args) } return shim.Error("Invalid invoke function name. Expecting \"invoke\" \"delete\" \"query\"") } // Transaction makes payment of X units from A to B func (t *SimpleChaincode) invoke(stub shim.ChaincodeStubInterface, args []string) pb.Response { var A, B string // Entities var Aval, Bval int // Asset holdings var X int // Transaction value var err error ### 回答2: Hyperledger Fabric 是一个开源的区块链平台,可以用于构建企业级的去中心化应用程序。而 Hyperledger Fabric 2.0 是其最新版本,引入了许多新特性和改进。 编写一个 Hyperledger Fabric 2.0 的 Go 语言链码需要按照一定的流程进行: 1. 准备开发环境:首先,需要安装 Go 语言的开发环境Hyperledger Fabric 的相关工具,如 Hyperledger Fabric SDK 和 Hyperledger Fabric CA。 2. 编写链码逻辑:使用 Go 语言编写链码的逻辑,链码是在 Hyperledger Fabric 上运行的智能合约。可以根据项目需求和业务逻辑定义相关的数据结构和函数。 3. 定义链码接口:需要定义链码接口,包括 Init 和 Invoke 两个核心函数。Init 函数用于链码的初始化操作,而 Invoke 函数用于链码的业务逻辑执行。 4. 部署链码:将编写好的链码部署Hyperledger Fabric 网络中。可以使用 Hyperledger Fabric SDK 提供的工具和 API 来进行链码的部署操作。 5. 测试链码:编写相应的测试用例,对链码逻辑进行测试。可以使用模拟的 Fabric 网络进行测试,或者与实际的 Fabric 网络交互进行测试。 6. 部署链码应用程序:将编写好的链码应用程序部署Hyperledger Fabric 网络上。可以使用 Hyperledger Fabric SDK 提供的工具和 API 来进行链码应用程序的部署操作。 Go 语言是一种高性能的编程语言,适合于开发区块链平台和链码。编写 Hyperledger Fabric 2.0 的 Go 语言链码需要熟悉 Go 语言的基本语法和特性,以及了解 Hyperledger Fabric 的相关知识。通过合理的设计和编码,可以实现各种复杂的业务逻辑和功能。 ### 回答3: 编写一个Hyperledger Fabric 2.0的Go语言链码可以分为以下几个步骤: 1. 准备开发环境:首先,需要在开发机器上安装Go语言和Hyperledger Fabric的相关依赖。可以通过配置Golang环境变量,并使用Golang包管理器安装Fabric的Go SDK。 2. 创建链码项目:使用Go语言的IDE或文本编辑器创建一个新的文件夹,作为链码项目的根目录。 3. 定义链码结构:创建一个新的Go文件,并定义链码结构。链码结构应该实现fabric的Chaincode接口,并实现Init和Invoke两个方法。 4. 实现Init方法:Init方法在链码被实例化时调用,并进行初始化设置。可以在该方法中初始化链码的状态数据和其他必要的准备工作。 5. 实现Invoke方法:Invoke方法在链码接收到调用请求时被调用。在该方法中处理具体的业务逻辑,并根据请求中的操作类型执行相应的操作。 6. 将链码打包:使用Fabric提供的命令行工具将链码打包成压缩文件,以便于后续部署安装。 7. 部署安装链码:使用Fabric提供的链码生命周期管理工具,将链码部署到指定的Fabric网络中,并安装到指定的通道上。 8. 实例化链码:在指定的通道上实例化链码,使其可以被其他参与方调用。 9. 调用链码:使用Fabric提供的客户端SDK或命令行工具,向链码发送调用请求,验证链码的功能和逻辑是否正确。 10. 测试链码:编写一些测试用例,用于对链码的功能和性能进行验证。 以上是一个简要的步骤,编写Hyperledger Fabric 2.0的Go语言链码还需要进一步了解链码开发的相关知识和Fabric的API,以有效地实现业务逻辑,并与Fabric网络进行交互。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值