Fabric2.0学习进阶——镜像部署网络(二)

2.1 下载Fabric源码

创建源码存放的目录,本文将源码存放在/usr/local/src/hyperleger目录中,如读者机器上没有该目录需要执行以下命令手动创建:

sudo mkdir -p /usr/local/src/hyperleger

进入到该目录,使用git从github上下载fabric的源码,并切换到release-2.0的分支。

cd /usr/local/src/hyperleger
sudo git clone https://github.com/hyperledger/fabric.git
sudo git checkout release-2.0

在我们刚才下载的源码中,有一个非常重要的脚本bootstrap.sh,它能帮助我们完成后面的下载工作。

在这里插入图片描述

接下来的下载工作有两种方式实现:

(1) 运行bootstrap.sh脚本实现一键下载,但是这种方式由于网络原因导致执行效率不高,可以使用nohup和&不挂断的运行该脚本;

(2) 手动完成后续下载工作,该方式更灵活,而且便于读者了解搭建Fabric平台必要的组件信息。

本节将采用第2种方式完成后面的组件下载工作。

2.2 下载Fabric的docker镜像

本文将以docker的形式启动fabric平台,因此这里需要下载fabric网络各组件的docker镜像。

Fabric的docker镜像下载我们这里仍然使用bootstrap.sh脚本实现(如果对docker操作熟悉的同学也可以直接使用docker命令下载),通过脚本参数设置使该脚本只下载Fabric的docker镜像。执行如下命令:

cd /usr/local/src/hyperleger/fabric/scripts
sudo ./bootstrap.sh 2.0.0 -b -s

查看安装结果,执行命令:

docker images

该下载过程即使设置了阿里云的镜像加速也需要消耗一些时长,镜像下载成功则显示下图中的镜像列表信息。

在这里插入图片描述

2.3 下载Fabric示例代码

Fabric的示例代码包含:测试链码、first-network和test-network两个测试网络及其对应的配置文件和启动脚本,非常具有参考意义。本节将启动first-network网络。

Fabric的示例代码使用git命令下载。

cd /usr/local/src/hyperleger/fabric/scripts
sudo git clone https://github.com/hyperledger/fabric-samples.git
# 切换版本
sudo git checkout v2.0.0

下载成功后,scripts目录下将生成一个fabric-samples目录,如下图所示:

在这里插入图片描述

2.4 下载Fabric部署所需的二进制文件

本节所需的二进制文件实际是可以通过编译fabric源码获得,bootstrap.sh则是直接从github下载压缩包,无论是编译还是从github下载,失败率较高。这里我将提供百度网盘地址,供读者下载,更靠谱一些。

地址:https://pan.baidu.com/s/1pX8Y9p3eBIK6GWi5ISNEZw,提取码:ba2k

把下载的文件解压到/usr/local/src/hyperleger/fabric/scripts/fabric-samples目录中,执行命令:

tar -zxvf hyperledger-fabric-linux-amd64-2.0.0.tar.gz -C /usr/local/src/hyperleger/fabric/scripts/fabric-samples/

解压成功后fabric-samples目录将生成bin和config两个目录,如下图所示:

在这里插入图片描述

bin目录中包含7个可执行程序,当fabric网络启动时将被调用。

在这里插入图片描述

config目录包含3个配置文件,用于对fabric网络的配置。

在这里插入图片描述

2.5 下载Fabric-ca二进制文件

本节所需的二进制文件实际是可以通过编译fabric源码获得,bootstrap.sh则是直接从github下载压缩包,无论是编译还是从github下载,失败率较高。这里我将提供百度网盘地址,供读者下载,更靠谱一些。

地址:https://pan.baidu.com/s/1pX8Y9p3eBIK6GWi5ISNEZw,提取码:ba2k

把下载的文件解压到/usr/local/src/hyperleger/fabric/scripts/fabric-samples目录中,执行命令:

tar -zxvf hyperledger-fabric-ca-linux-amd64-1.4.6.tar.gz -C /usr/local/src/hyperleger/fabric/scripts/fabric-samples/

解压成功后bin目录中将增加2个可执行程序,如下图所示:

在这里插入图片描述

将上述bin目录加入环境变量PATH中,否则在部署通道部署代码时会出现错误。

# 设置环境变量
sudo vim /etc/profile
# 将以下内容追加到文件末尾
export FABRIC_SAMPLE=/usr/local/src/hyperleger/fabric/scripts/fabric-samples
export PATH=$GOROOT/bin:$FABRIC_SAMPLE/bin:$PATH
# 使环境变量生效
source /etc/profile

2.6 启动first-network网络

启动first-network网络,执行如下命令:

cd /usr/local/src/hyperleger/fabric/scripts/fabric-samples/first-network
sudo ./byfn.sh up

Tips:byfn是build your first network的简写。

从脚本执行的日志可以看出,first-network网络由10个容器服务组成,包括:5个排序节点服务,4个peer节点服务和1个cli服务。

容器服务启动之后,休眠15s构建排序节点服务集群,构建完成之后,开始进行链码打包、安装、实例化、调用测试。

命令执行成功显示结果如下图所示:

在这里插入图片描述

查看容器运行情况,执行命令:

docker ps

停止网络,执行命令:

sudo ./byfn.sh down

至此,我们的第一个fabric网络就启动了。各位读者如果有时间一定要仔细阅读byfn.sh脚本,该脚本实现了启动一个网络,并完成链码调用测试的整个过程。

区块链Hyperleger Fabric2.0 总结分享

文章作者:xiaohui249
本文链接:http://javatech.wang/index.php/archives/138/
版本所有 ©转载时必须以链接形式注明作者和原始出处

本文由博客群发一文多发等运营工具平台 OpenWrite 发布

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
### 回答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网络行交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萧十一郎君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值