Hyperledger Fabric定制联盟链网络工程实践

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475

前言

总体来看,网络上成体系的可用的 Fabric 教程极少——不是直接在 Fabric 官网复制内容大谈基础理论就是在描述一个几乎无法复现的项目实践,以至于学习 Fabric 的效率极低,印象最深刻的就是我曾经花费几天时间尝试按照官方教程 CA Deployment steps 搭建自己的 CA 服务,却始终无法成功也找不到原因。因此,为了提高生产效率,本项目虚拟了一个工作室联盟链需求并将逐步实现,致力于提供一个易理解、可复现的Fabric学习项目(尽管它比较简单),其中项目部署步骤的各个环节都清晰可见,并且将所有过程打包为脚本使之能够被快速复现在任何一台主机上。

工程介绍

组织架构

有一启明星工作室,其中包含三大组织:软件组、WEB组、硬件组、理事会,不同组织间相互独立,偶尔有业务往来。现理事会决定搭建一个启明星工作室的联盟链网络,使不同组织间加强合作,期望最终实现以下工程架构:

  1. 组织说明
    • council:理事会,负责工作室各组间协调管理,由三组抽调人员共同组成
    • soft:软件组,专注软件开发
    • hard:硬件组,专注硬件开发
    • web:WEB组,专注网站开发
    • orderer:过渡排序组织,为联盟链网络提供排序服务,后期会舍弃
  2. 成员说明
    • council:一个Orderer节点、三个Admin账号,每组拥有一个Admin账号权限
    • soft:一个Orderer节点、一个Peer节点、一个Admin账号、一个User账号
    • hard:一个Orderer节点、一个Peer节点、一个Admin账号、一个User账号
    • web:一个Orderer节点、一个Peer节点、一个Admin账号、一个User账号
    • orderer:一个Orderer节点、一个Admin账号
  3. 根CA服务器(域名)
    • council.fantasy.com:提供/管理组织间TLS证书,又叫TLS CA服务器
    • soft.fantasy.com:提供/管理组织内TLS证书
    • hard.fantasy.com:提供/管理组织内TLS证书
    • web.fantasy.com:提供/管理组织内TLS证书
    • orderer.fantasy.com:提供/管理组织内TLS证书

实验准备

在开始前,如果你对 Fabric 命令知之甚少,可以先学习fabric的test-network启动过程Bash源码详解;此外应准备好 Fabric 的开发环境,具体环境搭建和软件版本可参考基于Debian搭建Hyperledger Fabric 2.4开发环境及运行简单案例。为了方便区分各组织和节点,本工程使用域名的方式进行各节点间的通信,以 web 组织为例,域名分配规范如下:

域名 说明
peer1.web.ifantasy.net web组第一个 peer 节点地址
peer2.web.ifantasy.net web组第二个 peer 节点地址
orderer1.web.ifantasy.net web组第一个 orderer 节点地址

此外,还需要在 \etc\hosts 文件添加 DNS 地址:

bash

echo "127.0.0.1 council.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 orderer.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 soft.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 web.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 hard.ifantasy.net" >> /etc/hosts

echo "127.0.0.1 orderer1.soft.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 orderer1.web.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 orderer1.hard.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 orderer1.orderer.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 orderer2.orderer.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 orderer3.orderer.ifantasy.net" >> /etc/hosts

echo "127.0.0.1 peer1.soft.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 peer1.web.ifantasy.net" >> /etc/hosts
echo "127.0.0.1 peer1.hard.ifantasy.net" >> /etc/hosts

本文工作

本项目主要以学习为主,所以并未期望一次实现所有架构和功能。本文所实现的具体内容为,搭建一个简单的工作室联盟链网络,包含 councilorderersoftweb 四个组织,并将测试链码部署在通道 mychannel ,网络结构为(实验代码已上传至:https://github.com/wefantasy/FabricLearn 的 1_3Org2Peer1Orderer1TLS 目录下):

运行端口 说明
council.ifantasy.net 7050 council 组织的 CA 服务, 为联盟链网络提供 TLS-CA 服务
orderer.ifantasy.net 7150 orderer 组织的 CA 服务, 为联盟链网络提供排序服务
orderer1.orderer.ifantasy.net 7151 orderer 组织的 orderer1 成员节点
soft.ifantasy.net 7250 soft 组织的 CA 服务, 包含成员: peer1 、 admin1
peer1.soft.ifantasy.net 7251 soft 组织的 peer1 成员节点
web.ifantasy.net 7350 web 组织的 CA 服务, 包含成员: peer1 、 admin1
peer1.web.ifantasy.net 7351 web 组织的 peer1 成员节点

其它说明

个人觉得 Fabric 官方示例的证书结构过于冗余,为了便于自己理解,本工程证书结构跟一般 Fabric 有所出入,先将本工程各文件目录说明如下:

mipsasm

1\_3Org2Peer1Orderer1TLS
├── 0\_Restart.sh           # 启动基本 CA 网络脚本
├── 1\_RegisterUser.sh      # 注册账户脚本
├── 2\_EnrollUser.sh        # 登录账户脚本
├── 3\_Configtxgen.sh       # 生成创世区块脚本
├── 4\_TestChaincode.sh     # 链码测试脚本
├── asset-transfer-basic   # 测试链码目录
├── basic.tar.gz           # 打包后的链码包
├── compose                # Docker配置目录
│   ├── docker-base.yaml      # 基础通用配置
│   └── docker-compose.yaml   # 具体 Docker 配置
├── config                 # Fabric 公共配置目录
│   ├── config-msp.yaml    # 节点组织单元配置文件
│   ├── configtx.yaml      # 初始通道配置
│   ├── orderer.yaml      # orderer 节点配置,osnadmin 的配置文件
│   └── core.yaml          # peer 配置
├── data                   # 临时数据目录
├── envpeer1soft           # soft 组织的 peer1 cli环境变量
├── envpeer1web            # web 组织的peer1 cli环境变量
├── orgs                   # 组织成员证书目录
│   ├── council.ifantasy.net  # council 组织目录
│   ├── orderer.ifantasy.net  # orderer 组织目录
│   ├── web.ifantasy.net      # web组织目录
│   └── soft.ifantasy.net     # soft 组织目录
│       ├── assets            # 组织公共材料目录
│       │   ├── ca-cert.pem      # 本组织根证书
│       │   ├── mychannel.block  # mychannel 通道创世区块
│       │   └── tls-ca-cert.pem  # TLS-CA 服务根证书
│       ├── ca             # 本组织 CA 服务目录
│       │   ├── admin      # 本组织 CA 服务引导管理员 msp 目录
│       │   └── crypto     # 本组织 CA 服务默认证书目录
│       ├── msp               # 组织 MSP 目录
│       │   ├── admincerts    # 组织管理员签名证书目录
│       │   ├── cacerts       # 组织 CA 服务根证书目录
│       │   ├── config.yaml   # 组织节点单元配置文件
│       │   ├── tlscacerts    # TLS-CA 服务根证书目录
│       │   └── users         # 空目录,msp 规范所需
│       └── registers         # 本组织注册的账户目录
│           ├── admin1        # 管理员账户
│           └── peer1         # 节点账户
└── README.md              

实验步骤

实验准备

首先将基于Debian搭建Hyperledger Fabric 2.4开发环境及运行简单案例中的/usr/local/fabric/config目录复制到根目录下。如无特殊说明,环境变量FABRIC_CFG_PATH总是默认指向根目录的config目录(建议直接将本案例仓库 FabricLearn 下的 1_3Org2Peer1Orderer1TLS 目录拷贝到本地运行)。

fabric 提供一个 fabric-tools 镜像用于提供操作 peer 节点的命令行,其实现方式是在启动 fabric-tools 时指定 peer 节点的身份证书等环境变量,此外我们也可以直接将这些环境变量写入一个文件中然后通过 source 命令激活。在根目录下创建 envpeer1soft 文件,用于保存 soft 组织的环境变量,写入以下内容:

yaml

export LOCAL\_ROOT\_PATH=$PWD
export LOCAL\_CA\_PATH=$LOCAL\_ROOT\_PATH/orgs
export DOCKER\_CA\_PATH=/tmp
export COMPOSE\_PROJECT\_NAME=fabriclearn
export DOCKER\_NETWORKS=network
export FABRIC\_BASE\_VERSION=2.4
export FABRIC\_CA\_VERSION=1.5

配置TLS服务

  1. 在根目录下创建 compose 文件夹,用于储存 docker-compose 配置文件。
  2. compose 下创建 docker-base.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值