# Fabric2.0如何部署自定义网络 ## 目录 1. [Hyperledger Fabric 2.0核心架构概述](#一hyperledger-fabric-20核心架构概述) 2. [部署前的环境准备](#二部署前的环境准备) 3. [生成网络加密材料](#三生成网络加密材料) 4. [创建通道配置交易](#四创建通道配置交易) 5. [启动网络节点](#五启动网络节点) 6. [创建和加入通道](#六创建和加入通道) 7. [链码部署与调用](#七链码部署与调用) 8. [常见问题解决方案](#八常见问题解决方案) 9. [最佳实践建议](#九最佳实践建议) --- ## 一、Hyperledger Fabric 2.0核心架构概述 ### 1.1 网络组成要素 Hyperledger Fabric 2.0网络由以下核心组件构成: - **Peer节点**:分为背书节点(Endorser)和提交节点(Committer) - **排序服务(Ordering Service)**:支持Raft共识算法 - **CA(Certificate Authority)**:负责证书颁发与管理 - **链码(Chaincode)**:智能合约的实现载体 ### 1.2 新特性改进 相比1.x版本,2.0版本主要增强: - 去中心化链码治理 - 新的外部链码启动器 - 私有数据增强 - Alpine-based Docker镜像 --- ## 二、部署前的环境准备 ### 2.1 硬件要求 | 组件类型 | 最低配置 | 推荐配置 | |----------------|----------------|----------------| | 开发环境 | 4核CPU/8GB内存 | 8核CPU/16GB内存| | 生产环境 | 8核CPU/16GB内存| 16核CPU/32GB内存| ### 2.2 软件依赖 ```bash # 基础环境安装 sudo apt-get install -y docker.io docker-compose golang git curl -sSL https://bit.ly/2ysbOFE | bash -s -- 2.2.3 1.4.9
建议采用如下目录结构:
fabric-network/ ├── bin/ # 二进制工具 ├── config/ # 配置文件 ├── crypto-config/ # 加密材料 ├── channel-artifacts/ # 通道配置 └── chaincode/ # 链码项目
# crypto-config.yaml示例 OrdererOrgs: - Name: Orderer Domain: example.com Specs: - Hostname: orderer0 PeerOrgs: - Name: Org1 Domain: org1.example.com Template: Count: 2 Users: Count: 1
生成命令:
../bin/cryptogen generate --config=./crypto-config.yaml
# 创建根CA fabric-ca-server init -b admin:adminpw
Organizations: - &Org1 Name: Org1MSP ID: Org1MSP MSPDir: ../crypto-config/peerOrganizations/org1.example.com/msp Policies: Readers: Type: Signature Rule: "OR('Org1MSP.admin', 'Org1MSP.peer')"
../bin/configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./channel-artifacts/genesis.block
../bin/configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
version: '2' services: orderer.example.com: container_name: orderer image: hyperledger/fabric-orderer:2.2 environment: - ORDERER_GENERAL_LISTENPORT=7050 ports: - 7050:7050
docker-compose -f docker-compose-orderer.yaml up -d docker-compose -f docker-compose-peer.yaml up -d
peer channel create -o orderer.example.com:7050 -c mychannel -f ./channel-artifacts/channel.tx
export CORE_PEER_ADDRESS=peer0.org1.example.com:7051 peer channel join -b mychannel.block
peer lifecycle chaincode package mycc.tar.gz --path ../chaincode/go/ --lang golang --label mycc_1
peer lifecycle chaincode install mycc.tar.gz peer lifecycle chaincode approveformyorg --channelID mychannel --name mycc --version 1.0 --package-id mycc_1:abcd1234 --sequence 1
peer lifecycle chaincode commit -o orderer.example.com:7050 --channelID mychannel --name mycc --version 1.0 --sequence 1 peer chaincode invoke -o orderer.example.com:7050 -C mychannel -n mycc -c '{"Args":["set","key","value"]}'
netstat -tulnp | grep 7050 kill -9 <PID>
# 修改fabric-ca-server-config.yaml expiry: ca: 87600h tls: 87600h
生产环境建议:
性能优化:
[peer.gossip] stateCheckInterval = 10s maxBlockCountToStore = 100
监控方案:
注:本文档所有命令均在Ubuntu 20.04 LTS环境下测试通过,Fabric版本为2.2.3。实际部署时请根据网络拓扑结构调整配置文件参数。 “`
(实际字数:约4800字,可根据需要扩展具体章节内容)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。