问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

分步搭建HF区块链网络:从部署Fabric到加入Channel

创作时间:
作者:
@小白创作中心

分步搭建HF区块链网络:从部署Fabric到加入Channel

引用
CSDN
1.
https://m.blog.csdn.net/2201_76041915/article/details/137921304

本文将详细介绍如何分步搭建Hyperledger Fabric(HF)区块链网络,包括部署Fabric区块链和加入channel的完整流程。文章内容涵盖了网络规划、证书配置、数字证书生成、创世区块创建、网络部署以及通道加入等多个关键步骤,每个步骤都配有具体的命令行操作指导。

一. 搭建网络规划

采用容器环境,搭建1个排序节点(Orderer)、2个对等节点(Peer),另外用 一个fabric-cli容器。实训中的绝大部分命令是通过该容器执行的。

容器名称设置

二. 配置HF网络证书

首先docker ps 检查镜像,确保镜像为空

1. 生成crypto-config.yaml

使用showtemplate显示默认配置信息,并重定向保存到config子目录下的文件crypto-config.yaml。 具体命令如下:

mkdir -p ~/test/config
cd ~/test
cryptogen showtemplate > config/crypto-config.yaml  

2. 用默认配置生成组织身份文件

cryptogen会创建crypto-config文件夹,并将生成的内容输出到crypto-config文件夹中。其中的内容按 照组织进行组织。 具体命令如下:

cryptogen generate --config config/crypto-config.yaml --output crypto-config  

三. 生成系统组织的数字证书

1. 编写排序节点(orderer)配置文件

编写排序配置文件,保存在config目录下,文件名crypto-config-orderer.yaml。

vim config/crypto-config-orderer.yaml  

配置如下内容:

# --------------------------------------------------------------------------- # "OrdererOrgs" - Definition of organizations managing orderer nodes
# ---------------------------------------------------------------------------
OrdererOrgs:
- Name: Orderer
    Domain: example.com
    EnableNodeOUs: true
    Specs:
- Hostname: orderer
        SANS:
- localhost

2. 生成排序节点组织身份文件

使用如下命令:
cryptogen generate --config config/crypto-config-orderer.yaml --output organizations  

3. 编辑生成组织1数字证书的配置文件

编辑配置文件config/crypto-config-org1.yaml

vim config/crypto-config-org1.yaml  
PeerOrgs:
 # ---------------------------------------------------------------------------
 # Org1
 # ---------------------------------------------------------------------------
- Name: Org1
    Domain: org1.example.com
    EnableNodeOUs: true
    Template:
      Count: 1
      SANS:
- localhost
    # Start: 5
    # Hostname: {{.Prefix}}{{.Index}} # default
    Users:
      Count: 1

4. 生成组织1身份文件

使用如下命令:
cryptogen generate --config config/crypto-config-org1.yaml --output organizations  

编辑生成组织2数字证书的配置文件

编辑配置文件config/crypto-config-org2.yaml

vim config/crypto-config-org2.yaml  
PeerOrgs:
# ---------------------------------------------------------------------------
# Org2
# ---------------------------------------------------------------------------
- Name: Org2
    Domain: org2.example.com
    EnableNodeOUs: true
    Template:
      Count: 1
      SANS:
- localhost
    # Start: 5
    # Hostname: {{.Prefix}}{{.Index}} # default
    Users:
      Count: 1

生成组织2身份文件

使用如下命令:
cryptogen generate --config config/crypto-config-org2.yaml --output organizations  

四. 创建创世区块 (applicationchannel.block)

1. 编辑configtx.yaml

Fabric的configtxgen工具生成通道配置,对应的配置文件是configtx.yaml,文件内容可以参考Fabric默认的配置文件。

2. 创建创世区块

执行如下步骤创建创世区块:

export CHANNEL_NAME=applicationchannel
echo ${CHANNEL_NAME}
configtxgen -configPath ./config -profile TwoOrgsApplicationGenesis -channelID${CHANNEL_NAME} -outputBlock channel-artifacts/${CHANNEL_NAME}.block  

执行如下步骤创建创世区块:

ls channel-artifacts/ -al  

执行结果如下:

五. 部署HF区块链网络

1. 编辑Docker-compose文件

在fabric目录下,新建一个fabric-compose.yaml文件,用于创建docker集群。

文件内容为:fabric-compose.yaml

2. 创建docker卷

检查docker卷是否存在,若存在删除:

docker volume ls  
docker volume rm peer0.org1.example.com orderer.example.com olla   
执行以下命令:
docker volume create orderer.example.com
docker volume create peer0.org1.example.com
docker volume create peer0.org2.example.com  

3. 部署fabric容器

在config目录下添加core.yaml
 cp ~/fabric/config/core.yaml config/
执行以下命令:
docker-compose -f fabric-compose.yaml up -d  

查看

docker ps

六. 加入通道

实现orderer和peer节点加入applicationchannel操作:

  1. orderer加入applicationchannel
  2. peer加入applicationchannel

首先查看docker进程docker ps

然后启动fabric-compose.yaml

docker-compose -f fabric-compose.yaml start  

如果要是有报错问题可以用以下处理方式

先停止:

1. 使用docker exec登录fabric-cli

执行以下命令:

docker exec -it fabric-cli bash  

2. orderer节点加入通道

执行以下命令:

//先执行这个
export CHANNEL_NAME=applicationchannel
//在执行这个
osnadmin channel join --channelID $CHANNEL_NAME --config-block ./channel-artifacts/${CHANNEL_NAME}.block -o orderer.example.com:7053 --ca-file "$ORDERER_CA" --client-cert "$ORDERER_ADMIN_TLS_SIGN_CERT" --client-key "$ORDERER_ADMIN_TLS_PRIVATE_KEY"

3. Org1的peer0加入通道

执行以下命令:

export CORE_PEER_TLS_ENABLED=true 
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/tlsca/tlsca.org1.example.com-cert.pem
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
peer channel join -b channel-artifacts/${CHANNEL_NAME}.block

4. Org2的peer0加入通道

执行以下命令:
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/tlsca/tlsca.org2.example.com-cert.pem
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/Admin@org2.example.com/msp
export CORE_PEER_ADDRESS=peer0.org2.example.com:9051
peer channel join -b channel-artifacts/${CHANNEL_NAME}.block  

5. 验证通道加入情况

执行以下命令概览:
peer channel list  

执行以下命令获取详细情况:
peer channel getinfo -c ${CHANNEL_NAME}  
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号