hyperlegerfabric开发——hyperlegerfabric入门(代码片段)

author author     2023-01-10     360

关键词:

HyperLeger Fabric开发(二)——HyperLeger Fabric入门

本文使用RHEL 7.3 workstation版本操作系统。

一、HyperLeger Fabric环境部署

1、Go语言开发环境部署

(1)Go语言环境安装
Go语言环境安装包下载地址:
https://golang.org/dl/
https://golang.google.cn/dl/
将下载的源码包解压至/usr/local目录
sudo tar -C /usr/local -xzf go1.10.1.linux-amd64.tar.gz
将/usr/local/go/bin目录添加至PATH环境变量
export PATH=$PATH:/usr/local/go/bin
(2)GOPATH环境变量设置

GOPATH=/home/user/GoLang:/home/user/dev
export GOPATH

为了使用方便,通常需要将所有工作空间的bin路径添加到PATH环境变量中,如:
export $PATH:$GOPATH/bin
如果$GOPATH有多个工作目录,使用?$GOPATH//://bin:/bin?添加所有的bin目录。
export $PATH:$GOPATH//://bin:/bin

2、Docker工具安装

yum install docker

3、HyperLeger Fabric下载

GitHub地址:https://github.com/hyperledger/fabric
(1)go get下载
使用Go语言工具go get从HyperLeger Fabric项目的GitHub地址下载HyperLeger Fabric:
go get -u -v github.com/hyperledger/fabric
(2)git clone下载
HyperLeger Fabric项目大小约76MB,如果使用go get工具下载速度慢,可以使用git clone下载:
创建hyperledger目录:
mkdir -p $GOPATH/src/github.com/hyperledger
切换到hyperledger目录:
cd $GOPATH/src/github.com/hyperledger
git clone下载:
git clone https://github.com/hyperledger/fabric.git

二、HyperLeger Fabric工具部署

1、HyperLeger Fabric版本切换

进入HyperLeger Fabric项目所在源码目录:
cd $GOPATH/src/github.com/hyperledger/fabric
切换到release-1.0版本:
git checkout release-1.0

2、configtxgen工具安装

configtxgen工具用于生成Fabric的配置构件。
切换到configtxgen目录:
cd common/configtx/tool/configtxgen
编译安装:
go install
报错:
fatal error: ltdl.h: No such file or directory
安装Itdl:
yum install libtool-ltdl-devel
继续编译安装:
go install
目标工具被安装到$GOPATH/bin目录下。

3、cryptogen工具安装

cryptogen工具用于生成Fabric证书和密钥。
切换到cryptogen源码目录:
cd common/tools/cryptogen
编译安装:
go install
目标工具被安装到$GOPATH/bin目录下。

三、部署第一个Fabric网络

1、fabric-samples项目下载

fabric-samples项目包含first-network等HyperLeger Fabric项目的多个示例。
https://github.com/hyperledger/fabric-samples.git
下载fabric-samples项目到$GOPATH/src/github.com/hyperledger:
git clone https://github.com/hyperledger/fabric-samples.git

2、切换到first-network示例源码目录

切换到first-network示例:
cd $GOPATH/src/github.com/hyperledger/fabric-samples/first-network
切换到release-1.0版本:
git checkout release-1.0
first-network源码目录如下:
技术分享图片
first-network示例即BYFN(build your first network),BYFN方案规定了一个由两个组织组成的简单HyperLeger Fabric网络,每个组织维护有两个对等节点和一个solo排序服务。
byfn.sh脚本利用Docker镜像快速引导BYFN(build your first network)示例网络,BYFN网络由代表两个不同组织的4个对等节点和一个排序节点组成。 byfn.sh脚本会启动容器运行一个脚本,脚本用于将对等节点加入一条通道,部署和实例化链码,并驱动在部署的链码上执行交易。

3、生成BYFN示例网络构件

byfn.sh脚本提供了生成网络构件的功能,用于生成不同网络实体的所有证书和密钥,用于引导排序服务的创始块以及配置通道所需的交易配置的集合。命令如下:
./byfn.sh -m generate -c scorpio -i 1.0.0
byfn.sh -m generate:使用cryptogen和configtxgen生成网络构件
-c:指定通道名称
-i:指定版本

[[email protected] first-network]$ ./byfn.sh -m generate -c scorpio -i 1.0.0
Generating certs and genesis block for with channel ‘scorpio‘ and CLI timeout of ‘10‘
Continue (y/n)? y
proceeding ...
/home/user/GoLang/bin/cryptogen

##########################################################
##### Generate certificates using cryptogen tool #########
##########################################################
org1.example.com
org2.example.com

/home/user/GoLang/bin/configtxgen
##########################################################
#########  Generating Orderer Genesis block ##############
##########################################################
2018-10-21 15:52:45.442 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-10-21 15:52:45.467 CST [common/configtx/tool] doOutputBlock -> INFO 002 Generating genesis block
2018-10-21 15:52:45.469 CST [common/configtx/tool] doOutputBlock -> INFO 003 Writing genesis block

#################################################################
### Generating channel configuration transaction ‘channel.tx‘ ###
#################################################################
2018-10-21 15:52:45.479 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-10-21 15:52:45.482 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 002 Generating new channel configtx
2018-10-21 15:52:45.482 CST [common/configtx/tool] doOutputChannelCreateTx -> INFO 003 Writing new channel tx

#################################################################
#######    Generating anchor peer update for Org1MSP   ##########
#################################################################
2018-10-21 15:52:45.494 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-10-21 15:52:45.497 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-10-21 15:52:45.498 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update

#################################################################
#######    Generating anchor peer update for Org2MSP   ##########
#################################################################
2018-10-21 15:52:45.508 CST [common/configtx/tool] main -> INFO 001 Loading configuration
2018-10-21 15:52:45.513 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 002 Generating anchor peer update
2018-10-21 15:52:45.513 CST [common/configtx/tool] doOutputAnchorPeersUpdate -> INFO 003 Writing anchor peer update

cryptogen用于为各种网络实体生成加密材料(x509证书和签名密钥)。x509证书代表身份/标识,允许在实体进行通信和交易时进行签名/验证身份验证。
cryptogen(fabric证书/密钥生成工具)使用一个配置文件crypto-config.yaml(包含网络拓扑)为组织和属于组织的组件(peer/orderer)生成一组证书和密钥。每个组织都配置了一个唯一的根证书(ca-cert),用于将特定组件(peer和orderer)绑定到组织。通过为每个组织分配唯一的CA证书,可以模仿典型的网络,网络中的成员将使用其自己的证书颁发机构。 Hyperledger Fabric中的交易和通信由实体的私钥(密钥库)签名,然后通过公钥(签名)进行验证。
cryptogen工具生成的证书和密钥将保存到crypto-config目录,目录结构如下:
技术分享图片
configtxgen使用一个configtx.yaml文件,configtx.yam定义了一个示例网络,网络中有一个排序服务组织OrdererOrg以及两个对等节点组织(Org1,Org2),每个组织管理和持有2个对等节点。configtx.yam文件还指定了一个SampleConsortium的联盟,由2个对等节点组织构成。需要特别注意文件顶部的Profiles部分,有两个唯一的头部信息,一个是排序节点的创世区块TwoOrgsOrdererGenesis,一个是通道TwoOrgsChannel。这两个头部信息会在创建网络构件时作为参数。
configtx.yaml文件也包含两个需要的额外规格说明。首先,指定了两个对等节点组织的对等节点(peer0.org1.example.com,peer0.org2.example.com);其次,指明了每个成员的MSP目录位置(MSPDir指定),从而允许在排序节点的创世块中存储每个组织的根证书。目前,任何网络实体和排序服务通信都必须要进行数字签名认证。

4、启动BYFN示例

启动first-network,使用-i参数指定版本为1.0.0:
./byfn.sh -m up -c scorpio -i 1.0.0
byfn.sh -m up:启动BYFN示例
首次启动first-network时,会从Docker镜像仓库下载下列三个镜像:

docker.io/hyperledger/fabric-orderer:x86_64-1.0.0
docker.io/hyperledger/fabric-peer:x86_64-1.0.0
docker.io/hyperledger/fabric-tools:x86_64-1.0.0

5、关闭BYFN示例

./byfn.sh -m down -c scorpio
用于关闭BYFN网络,会关闭容器,移除加密材料和4个配置信息,并且从Docker仓库删除链码镜像。

7、故障排除

再次启动BYFN网络示例前,必须先关闭BYFN网络,删除生成的证书、容器、网络构件以及链码镜像等。如果不关闭BYFN网络,将会导致创建通道失败。错误如下:

!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
========= ERROR !!! FAILED to execute End-2-End Scenario ===========

hyperlegerfabric开发——hyperlegerfabric入门(代码片段)

HyperLegerFabric开发(二)——HyperLegerFabric入门本文使用RHEL7.3workstation版本操作系统。一、HyperLegerFabric环境部署1、Go语言开发环境部署(1)Go语言环境安装Go语言环境安装包下载地址:https://golang.org/dl/https://golang.google.cn/dl/将下载... 查看详情

hyperlegerfabric开发——hyperlegerfabric链码开发(代码片段)

HyperLegerFabric开发(七)——HyperLegerFabric链码开发一、链码开发模式1、链码开发模式简介Fabric的链码开发调试比较繁琐。在不使用链码开发模式的情况下,链码不能在本地测试,必须部署到docker,install和instantiate后,Peer节点会... 查看详情

hyperlegerfabric开发——hyperlegerfabric部署实战(单机)(代码片段)

HyperLegerFabric开发(九)——HyperLegerFabric部署实战(单机)系统环境:RHEL7.3操作系统Fabricrelease1.3一、crypto-config.yaml文件1、Orderer节点组织(1)单节点OrdererOrgs:-Name:OrdererDomain:example.comSpecs:-Hostname:orderer(2)多节点OrdererO 查看详情

hyperlegerfabric开发——hyperlegerfabric共识机制

HyperLegerFabric开发(四)——HyperLegerFabric共识机制一、Fabric共识过程1、Fabric共识过程Fabric区块链的网络节点本质上是互相复制的状态机,节点之间需要保持相同的账本状态。为了实现分布式节点的一致性,各个节点需要通过共识... 查看详情

hyperlegerfabric开发——hyperlegerfabric账本存储(代码片段)

HyperLegerFabric开发(五)——HyperLegerFabric账本存储一、HyperLegerFabric账本简介Fabric里的数据以分布式账本的形式存储。账本由一系列有顺序和防篡改的记录组成,记录包含着数据的全部状态改变。账本中的数据项以键值对的形式存... 查看详情

hyperlegerfabric开发——hyperlegerfabric智能合约(链码)(代码片段)

HyperLegerFabric开发(六)——HyperLegerFabric智能合约(ChainCode)一、链码(Chaincode)简介1、链码简介在Fabric中,智能合约也称为链码(chaincode),分为用户链码和系统链码。系统链码用来实现系统层面的功能,包括系统的配置,用... 查看详情

hyperlegerfabric开发——hyperlegerfabric智能合约(链码)(代码片段)

HyperLegerFabric开发(六)——HyperLegerFabric智能合约(ChainCode)一、链码(Chaincode)简介1、链码简介在Fabric中,智能合约也称为链码(chaincode),分为用户链码和系统链码。系统链码用来实现系统层面的功能,包括系统的配置,用... 查看详情

hyperlegerfabric开发——资产交易平台实例(代码片段)

HyperLegerFabric开发(十)——资产交易平台实例一、资产交易平台需求分析1、资产交易平台的功能A、用户开户、销户功能B、资产登记,即资产上链,资产绑定到用户C、资产转让,即资产所有权的变更D、查询功能,包括用户查询... 查看详情

基于hyperlegerfabric区块链的校园化妆品交易平台搭建(代码片段)

基于hyperlegerfabric区块链的校园化妆品交易平台搭建一、大数据与区块链解决方案概述选题背景:目前不少同学在校园里进行二手交易没有一个大众认可的平台,很多都是私下交易,但会存在很多虚假交易,甚至出现诈... 查看详情

hyperlegerfabric安装(代码片段)

安装curl、gityum-yinstallcurlyum-yinstallgit安装docker下载fabricmkdirhyperledgerFabriccdhyperledgerFabricgitclonehttps://github.com/hyperledger/fabric.git安装fabric-samples示例cdfabric/scriptsgitclone-bmainhttps://github.com/hyperledger/fabric-samples.git安装二进制文件,解... 查看详情

如何在没有 hyper v 和模拟器的情况下使用 xamarin 开发 android 应用程序

】如何在没有hyperv和模拟器的情况下使用xamarin开发android应用程序【英文标题】:Howtodevelopandroidappswithxamarinwithouthypervandemulator【发布时间】:2018-05-1404:58:22【问题描述】:我正在使用Windows10家庭版和VisualStudio2017。我想使用xamarin... 查看详情

hyper-v2016系列教程37windows10上的hyper-v简介

...部分取自微软官网:     无论你是软件开发人员、IT专业人员还是技术爱好者,你们中的许多人都需要运行多个操作系统。Hyper-V让你可以在Windows上以虚拟机形式运行操作系统或计算机系统,而不是将物理硬件... 查看详情

微软虚拟化产品hyper-v2.0蓄势待

...的一部分。WindowsServer2008R2是在去年10月份召开的微软专业开发人员大会(PDC)上首次亮相的,预计将会在今年某个时候正式发布。与Hyper-V1.0 查看详情

在我的 BIOS 设置中没有启用 Hyper-V 的选项

...:2014-01-3105:02:16【问题描述】:我是WindowsPhone8应用程序开发的新手。我安装了SDK8.0。当我运行我的应用程序时,它显示一个错误,告诉我启用Hyper-V。在搜索时,我找到了thisMSDNdocumentation在BIOS中提供解决方案。但是当进入 查看详情

如何验证 Android SDK 模拟器是不是在 Hyper-V 中运行

...:2019-07-1816:56:53【问题描述】:我正在使用Xamarin为android开发应用程序。我正在使用VisualStudio2017和VisualStudio安装程序中的X 查看详情

hyper-v2016系列教程13虚拟机监控程序规范

...操作系统组件的外部可见的行为。此规范对来宾操作系统开发人员很有用。此规范根据Microsoft开放规范承诺书而提供。阅读以下内容,进一步了解有关 Microsoft开放规范承诺书的详细信息。下载版本文档WindowsServer2016(修订版B... 查看详情

window11安装docker小白教程(代码片段)

...window10及其以上的系统中可以安装hyper-v(Hyper-V是微软开发的虚拟机)。找到:设置–应用–可选功能–更多windows功能我这里是已经安装hyper-v了所以能找到,没有安装的就需要先安装,具体步骤如下:1、... 查看详情

hyper-v2016系列教程52常见的虚拟机文件格式介绍

...化通用文件格式、XenServer、VMware、Microsoft三大厂商的自已开发的文件格式。 表5-2                &nbs 查看详情