Hyperledger Fabric 是一个开源区块链框架实现,也是由 Linux 基金会托管的 Hyperledger 项目 之一。它是一个分布式账本解决方案平台。
本文旨在通过使用 Kubernetes 来简化 Fabric 操作。这个工具非常适合以下原因:
- 使用 Kubernetes 很容易实现高可用性 (HA)。
- Fabric 构建于容器镜像中,而 Kubernetes 在容器的编排、扩展和管理方面非常有用。
- Kubernetes 支持多租户,使得开发和测试区块链应用程序成为可能。
注意:在本文中,我假设读者对 Kubernetes、Helm、Docker 和 Hyperledger Fabric 有基本的了解。
我将部署一个包含一个 peer、一个 orderer、两个组织和一个通道的网络。
Hyperledger Fabric 用例
-
企业对企业 (B2B) 合约:这项技术可以用于以可信的方式自动化业务合约。
-
资产托管:资产可以在区块链网络上非物质化,使得所有资产类型的利益相关者都可以在无需通过中介或中间人的情况下访问每个资产。目前,资产在许多账本中被跟踪,这些账本必须进行核对。Hyperledger Fabric 用一个单一的去中心化账本取代了这些多个账本,提供了透明度并消除了中介。
-
忠诚度:忠诚度奖励平台可以安全地构建在区块链(在本例中为 Hyperledger Fabric)和智能合约技术之上。
-
分布式存储以增加各方之间的信任。
Hyperledger Fabric 的优势
- 许可制成员资格:所有参与者都有已知的身份
- 高性能和可扩展性
- 更高的信任级别
- 数据始终基于按需知情原则
- 支持对不可变的账本进行丰富的查询
术语定义
-
Peer:Peer 是网络上的一个节点,维护账本的状态并管理链码。任何数量的 peer 都可以参与到一个网络中。Peer 可以是背书者或提交者。Peer 形成一个点对点 gossip 网络。
-
Orderer:管理一个可插拔的信任引擎,该引擎执行交易排序。
-
通道:一种数据分区机制,将交易可见性仅限于利益相关者。共识在通道成员的通道内发生。
配置文件
网络的所有配置文件都可以在 GitHub 上找到。
-
configtx.yaml:
configtxgen
工具根据此文件生成创世区块(初始化区块链网络或通道的配置区块),该文件用于启动 orderer 并限制通道创建的权限。创世区块是根据crypto-config.yaml
文件中组织的定义生成的。 -
crypto-config.yaml:cryptogen 工具基于此文件为 Fabric 成员生成证书。
要生成网络工件,请运行 network-artifacts-gen.sh。这将创建 crypto-config 和 channel-artifacts 文件夹。内容将如下所示


-
fabric-ca.yaml:这是 Fabric 的 CA 服务的 Kubernetes 部署模板。它用于组织中的证书管理。
-
fabric-orderer.yaml:orderer 的 Kubernetes 部署模板。
-
fabric-peer.yaml:peer 的部署模板
部署
-
克隆或 Fork 示例配置。
-
将目录更改为 HLF 文件夹。
-
安装 Composer(如果您尚未安装),因为我们将使用它在步骤 4 中生成网络工件期间导入身份:
npm install -g composer@0.13.0
-
如果您想重新生成网络工件,请运行 network-artifacts-gen.sh 文件:
sh network-artifacts-gen.sh
-
如果您重新生成了网络工件,请提交所有内容并推送到 GitHub 仓库。您需要像步骤 1 中所述的那样克隆仓库。
-
修改 org1.example.com.yaml 文件以匹配此任务的仓库详细信息。
-
请记住浏览 templates 文件并进行相应的修改。
-
我将使用 Helm,它是 Kubernetes 的包管理器,来管理部署。Mac 用户可以通过
brew install kubernetes-helm
安装。Linux 用户:curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
-
通过运行此命令启动本地 Kubernetes 环境:
minikube start
-
接下来,使用命令
helm init
初始化 Helm。给它十秒钟来完成 Helm 的配置。然后运行helm install --name test ./fabric-artifacts -f org1.example.com.yaml
这将部署 orderer、peer 和 CA。
通过列出 pod 来确认部署:
kubectl get po

或者只是启动 Kubernetes 仪表板:kubectl proxy,然后访问链接 http://localhost:8001/api/v1/namespaces/kube-system/services/http:kuber…。

现在让我们创建并加入通道。运行 channel.sh (即,sh channel.sh)
。这将创建一个名为 mychannel
的通道,并将我们的 peer 加入到创建的通道。检查日志以确认一切正常。
Orderer 日志

Peer 日志

CA 日志

网络现在已准备好让应用程序处理交易。在您的应用程序中,您将拥有一个客户端,它将通过 Fabric rest 服务器向 Fabric 发出请求。这意味着您的应用程序中的客户端和 Fabric 之间应该有一个网络配置。应用程序可以是移动应用、Web 应用等。在本文中,我只想展示使用 Kubernetes 和 Hyperledger Fabric 是多么简单。
4 条评论