作者:ethanlu(ethanlu@mail.ustc.edu.cn)
创建于:2018年7月18日
最后修改:2019年7月11日
【重点:如果之前跑过e2e的sample,在跑这个之前一定要把镜像删掉,官网有这一步操作。】
# 在e2e_cli目录下
docker rm -f $(docker ps -aq)
如果不成功依次删除各个镜像
docker rmi hyperledger-zookeeper
最后清理全部images
docker rmi $(docker images -q)
检查一下在开发区块链应用程序或者Hyperledger Fabric的平台上是否已经安装了预置环境。
1、下载并安装Hyperledger的Fabric-samples
。fabric-samples
文件夹中包含了许多示例:
需要git branch切换到v1.0.2(git checkout v.1.0.2)否则报错。
git clone https://github.com/hyperledger/fabric-samples.git
2、将我们使用first-network
这个例子。现在让我们打开这个子目录。
cd first-network
注意:文档中提供的命令必须运行在fabric-sample
的子目录first-network
。如果你选择从其他位置运行命令,提供的一些脚本将无法找到对应的二进制工具(如bin目录下的crypto)。
3、我们提供一个完全注释的脚本byfn.sh,利用这些docker镜像可以快速引导一个由4个代表2个不同的组织对等以及节点排序一个服务节点的Hyperledger fabric
网络。它还将启动一个容器来运行一个对等节点加入通道,部署实例化链码以及驱动已经部署的链码执行交易的脚本。
./byfn.sh -h
以下是byfn.sh
脚本的帮助文档:
如果你选择不提供信道名称,则脚本将使用默认名称mychannel
.CLI超时参数(用-t标志指定)是一个可选值;如果你选择不设置它,那么CLI容器将会在脚本执行完之后退出。
如图4所示,执行该脚本(会报错,文章的最后问题解答有解决办法):
./byfn.sh -m generate
接下来,可以使用以下命令来启动整个网络再试提示是否继续:
生成工具后会出现如下界面:
第一步生成我们各种网络实体的所有证书和密钥,genesis block
用于引导排序服务,配置以及Channel
所需要的一组交易配置集合。
5,接下来,使用以下命令来启动整个网络:
./byfn.sh -m up
日志将继续然后启动所有容器,驱动一个端到端的应用场景成功以后,在终端窗口中会报告以下内容:
跑通之后会出现如下界面:
6,最后,让我们把它全部停下来,这样我们可以一步一步地探索网络设置。以下操作将关闭你的容器,移除加密材料和4个配置信息,并且从docker库删除chaincode镜像。你将再一次被提示是否继续,回答Y:
./byfn.sh -m down
测试用例说明:
如图1所示,加密生成器
Cryptogen
消费一个包含网络拓扑的crypto-config.yaml
,并允许我们为组织和属于这些组织的组件生成一组证书和密钥。每个组织都配置了ca-cert
唯一的根证书(),它将特定组件(对等体和订单)绑定到该组织。通过为每一个组织分配唯一的CA证书,我们正在模仿一个经典的网络,这个网络中的成员将使用自己的证书颁发机构.Hyperledger Fabric中的交易和通信是通过存储在keystore
中的实体的私人签名,然后通过公司手段进行验证(signcerts
)。
将你在注意到这个文件里有一个count
变量我们将使用它来指定每个组织中。peer
的数量;在我们的例子中,每个组织有两个对等体我们现在不会深入研究X.509证书基础状语从句:公钥设施。的细节如果你有兴趣,你可以在自己的时间细读这些主题。
在运行该工具之前,让我们浏览快速一下这段代码crypto-config.yaml
注意特别在。OrdererOrgs
头下的Name
,Domain
状语从句:Specs
参数:
OrdererOrgs:
#---------------------------------------------------------
# Orderer
# --------------------------------------------------------
- Name: Orderer
Domain: example.com
# ------------------------------------------------------
# "Specs" - See PeerOrgs below for complete description
# -----------------------------------------------------
Specs:
- Hostname: orderer
# -------------------------------------------------------
# "PeerOrgs" - Definition of organizations manag