尝试运行Hyperledger Fabric(适用于v1.4/v1.3/v1.2.1版本)

技术部分的监修和撰写:@shinsa82

Hyperledger Fabric 是什么?

Hyperledger Fabric是一个开源的区块链基础架构,是Linux Foundation管理和运营的Hyperledger项目之一。在Hyperledger项目中,正在开发适用于各个行业的可用于商业用途的区块链基础架构。除了Hyperledger Fabric外,还有Hyperledger Iroha、Hyperledger Indy等多种区块链基础架构存在。

以下是一些可供参考的链接:
– https://www.hyperledger.org/projects/fabric (Hyperledger Fabric的官方网站)
– https://arxiv.org/abs/1801.10228v1 (关于Hyperledger Fabric的学术论文)
– https://hyperledger-fabric.readthedocs.io/en/release-1.3/whatsnew.html (Hyperledger Fabric 1.3版本的更新内容)

关于v1.2的新功能和变更点。

v1.2是在2018年7月发布的。主要的新功能有以下四个。

Private Data Collections
チャネルメンバーのサブセット間で特定のデータ/トランザクションを機密に保つ機能。

Service Discovery
クライアントアプリケーションを簡素化するため、オーダラー、ピア、チェーンコード、エンドースメントポリシーなどのネットワークサービスを動的に発見する機能。

Access Control
チャネルごとにピア機能と相互作用できるクライアントIDを構成する機能。

Pluggable endorsement and validation
チェーンコードごとにプラグイン可能なエンドースメントと検証ロジックを活用する機能。

特别是,私有数据集合是v1.2版本的一个重要功能。在此之前,如果要进行私有数据共享,需要在一个网络中拥有名为“通道”的功能。由于每个共享范围都需要拥有一个通道,所以在设置复杂的共享范围时,需要拥有多个通道。而通过私有数据集合,可以将私有数据与普通的区块分开管理。因此,在同一通道中,只有部分节点能够接收数据,使得共享范围的设置更加便捷。

参考链接:
– https://hyperledger-fabric.readthedocs.io/en/release-1.2/whatsnew.html
– https://www.altoros.com/blog/hyperledger-fabric-v1-2-whats-new-and-roadmap-for-2018/

此外,2018年10月还发布了修复错误版本v1.2.1。

截至2019年2月,最新版本是v1.4。

2018年10月,v1.3版本发布。除了Go和Node.js,还可以使用Java来实现Chaincode。此外,还添加了可以按照状态的键来指定背书策略的功能。请查阅官方文档以获取详细信息。

参考链接:
– https://hyperledger-fabric.readthedocs.io/en/release-1.3/whatsnew.html

另外,2019年1月还发布了v1.4.0版本。

搭建执行Fabric v1.4(v1.3/v1.2.1)样例所需的环境。

试用Fabric时,最方便的方法是运行样本程序。在本文中,我们将针对Fabric v1.4介绍设置Fabric Samples的步骤。

基本上是将官方文档中的《安装示例、二进制文件和Docker镜像》部分进行翻译并进行补充说明。

前提条件 tí

    • MacもしくはLinux系マシン上で試すことを前提とする

Windowsの場合はWin10ならばDockerが使える。それ以外のWindows環境ではVagrant+Virtual BoxでLinux環境を作り、その中で試すこととなる

Docker、curl、git、bashなどの前提ソフトウェアは Prerequisites の内容にしたがってインストールされているものとする。 必ずしも各ソフトの最新バージョンで動くわけではないので注意すること。 例えばPythonはバージョン2でないと動かない。

请注意,如果安装的curl版本过旧,则无法识别-L选项并导致bootstrap.sh执行出错。

设置方法:只需下载并运行脚本即可。

从v1.0开始,Fabric的源代码中包含了一个名为bootstrap.sh的脚本,它会一次性下载所需的脚本、Docker镜像和二进制文件以执行示例。尽管还存在一些错误,但它相对稳定且可靠,因此建议使用。下面的命令是用于下载并执行该脚本。

~$ mkdir fabric-140
~$ cd fabric-140
~/fabric-140$ curl -sSL http://bit.ly/2ysbOFE | bash -s 1.4.0 1.4.0 0.4.14

注意:v1.4是最新版本时,只需运行“bash”命令即可。

请注意,作为bash参数指定的“-s”不是bootstrap.sh的选项,而是bash的选项,意为“从标准输入读取脚本”,请不要混淆。请注意,这个脚本的参数传递方式很巧妙,请注意。详情请见下文。

顺便说一下,如果你想建立1.3.0版本的环境,可以这样做:

~$ mkdir fabric-130
~$ cd fabric-130
~/fabric-130$ curl -sSL http://bit.ly/2ysbOFE | bash -s 1.3.0 1.3.0 0.4.13

如果是v1.2.1版本,就这样处理。

~$ mkdir fabric-121
~$ cd fabric-121
~/fabric-121$ curl -sSL http://bit.ly/2ysbOFE | bash -s 1.2.1 1.2.1 0.4.10 

请阅读末尾的说明,以了解这个脚本的功能。

确认结果

如果目录结构如此,则可以。

~/fabric-140$ tree -F -L 2 .
.
└── fabric-samples/
    ├── CODE_OF_CONDUCT.md
    ├── CONTRIBUTING.md
    ├── Jenkinsfile
    ├── LICENSE
    ├── MAINTAINERS.md
    ├── README.md
    ├── balance-transfer/
    ├── basic-network/
    ├── bin/
    ├── chaincode/
    ├── chaincode-docker-devmode/
    ├── commercial-paper/
    ├── config/
    ├── fabcar/
    ├── first-network/
    ├── high-throughput/
    ├── interest_rate_swaps/
    └── scripts/

如果Docker镜像中包含以下与Fabric相关的镜像,则执行以下命令即可。

$ docker image ls
REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
hyperledger/fabric-javaenv     1.4.0               3d91b3bf7118        4 weeks ago         1.75GB
hyperledger/fabric-javaenv     latest              3d91b3bf7118        4 weeks ago         1.75GB
hyperledger/fabric-tools       1.4.0               0a44f4261a55        5 weeks ago         1.56GB
hyperledger/fabric-tools       latest              0a44f4261a55        5 weeks ago         1.56GB
hyperledger/fabric-ccenv       1.4.0               5b31d55f5f3a        5 weeks ago         1.43GB
hyperledger/fabric-ccenv       latest              5b31d55f5f3a        5 weeks ago         1.43GB
hyperledger/fabric-orderer     1.4.0               54f372205580        5 weeks ago         150MB
hyperledger/fabric-orderer     latest              54f372205580        5 weeks ago         150MB
hyperledger/fabric-peer        1.4.0               304fac59b501        5 weeks ago         157MB
hyperledger/fabric-peer        latest              304fac59b501        5 weeks ago         157MB
hyperledger/fabric-ca          1.4.0               1a804ab74f58        5 weeks ago         244MB
hyperledger/fabric-ca          latest              1a804ab74f58        5 weeks ago         244MB
hyperledger/fabric-zookeeper   0.4.14              d36da0db87a4        4 months ago        1.43GB
hyperledger/fabric-zookeeper   latest              d36da0db87a4        4 months ago        1.43GB
hyperledger/fabric-kafka       0.4.14              a3b095201c66        4 months ago        1.44GB
hyperledger/fabric-kafka       latest              a3b095201c66        4 months ago        1.44GB
hyperledger/fabric-couchdb     0.4.14              f14f97292b4c        4 months ago        1.5GB
hyperledger/fabric-couchdb     latest              f14f97292b4c        4 months ago        1.5GB

你可以通过这个来尝试Fabcar样例。请参考Fabcar样例学习Hyperledger Fabric Node.js SDK(支持v1.2.1版本)。

(文章完)

以下是bootstrap.sh的操作细节。

使用curl命令下载的短网址实际上指向的是https://github.com/hyperledger/fabric/blob/release-1.4/scripts/bootstrap.sh文件。它所做的事情可以总结为以下3个方面:

1. 克隆 Fabric-samples

可以使用git clone命令从GitHub上克隆Fabric的示例代码库fabric-samples(https://github.com/hyperledger/fabric-samples),这些代码是用于设置和演示Fabric的样本代码。

请注意:请注意在这里切换到fabric-samples以检查v1.4的示例。

下载特定平台的二进制文件

下载二进制文件
为了测试样本,必须下载二进制文件(通常称为特定平台的二进制文件),以创建加密密钥和创世区块。

    • これらはFabricのソースからビルドできるが、そうしない人向けにビルド済バージョンを配布している

 

    これはホストのアーキテクチャによって異なるバイナリをダウンロードするので注意

在v1.4版本中,我已经下载了以下二进制文件,并将其存放在fabric-samples/bin目录中。要尝试示例,请将路径设置到这里。

~/fabric-140$ ls -1 fabric-samples/bin/
configtxgen
configtxlator
cryptogen
discover
fabric-ca-client
get-docker-images.sh
idemixgen
orderer
peer

[2] 下载配置文件

    • Fabricネットワークの設定ファイル configtx.yaml

 

    ノード設定ファイル (core.yaml, orderer.yaml)

这些被存储在fabric-samples/config中。这些在运行fabric-samples示例时被使用。

如果在默认情况下(使用fabric-samples进行克隆),下载将在fabric-samples目录中进行,二进制文件将会被提取到/fabric-samples/bin目录,配置文件将会被提取到/fabric-samples/config目录。如果跳过fabric-samples的检出,则它们将在/bin和/config目录中,但需要注意这与预期位置不同。

3. 获取Docker镜像 (pull)

    • Fabric

 

    • Fabric CA

 

    3rd party

正在拉取三种不同的镜像。前两种镜像上附有“Fabric版本”的标签(例如1.4.0),而第三方镜像上附有独立的版本标签(例如0.4.14)。在脚本中,通过使用docker tag命令给拉取的镜像添加了latest标签,因此使用多个版本镜像进行开发的人需要注意。

选项

bootstrap.sh 可以指定选项。但是请注意,如果不熟悉bash选项的指定方法,可能会遇到问题。

-h: ヘルプを表示する。これを指定したい場合には curl … | bash -s — -h とすべし。

-s: fabric-samplesのclone (上記 1.) をスキップする。これを指定したい場合には curl … | bash -s 1.4.0 -s とか curl … | bash -s — -s とすべし。

-b: platform-specific binariesのダウンロード (上記 2.) をスキップする。これを指定したい場合には curl … | bash -s 1.4.0 -b とか curl … | bash -s — -b とすべし。

-d: Dockerイメージのpull (上記 3.) をスキップする。これを指定したい場合には curl … | bash -s 1.4.0 -d とか curl … | bash -s — -d とすべし。

-bash 命令的 -s 选项是为了从标准输入读取脚本而添加的。这不是脚本本身的选项,而是位于参数末尾的选项。另外,如果没有其他参数除了选项的话,无法确定哪些是 bash 的选项,哪些是脚本的选项,所以需要使用 — 告诉 bash。

广告
将在 10 秒后关闭
bannerAds