# Hyperledger Fabric如何構建第一個網絡
## 前言
Hyperledger Fabric作為Linux基金會旗下最重要的企業級區塊鏈框架之一,其模塊化架構和許可制特性使其成為構建聯盟鏈的首選方案。本文將手把手指導您完成Fabric第一個網絡的搭建過程,涵蓋從環境準備到網絡部署的全流程,幫助開發者快速掌握Fabric的核心概念和操作實踐。
---
## 一、環境準備
### 1.1 系統要求
- **操作系統**:Ubuntu 18.04+/CentOS 7+ 或 macOS 10.14+
- **內存**:至少4GB(推薦8GB)
- **存儲**:20GB可用空間
- **Docker**:版本19.03+
- **Docker Compose**:版本1.25+
### 1.2 工具安裝
```bash
# 安裝依賴工具
sudo apt-get update && sudo apt-get install -y \
git curl wget make gcc
# 安裝Docker
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# 安裝Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 驗證安裝
docker --version && docker-compose --version
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples
git checkout v2.4.4 # 使用穩定版本
組件 | 數量 | 說明 |
---|---|---|
Orderer節點 | 1 | 采用Solo共識模式(測試用) |
Peer節點 | 4 | 2個Org各含2個Peer(1錨節點) |
CA節點 | 2 | 每個Org獨立CA |
CLI客戶端 | 1 | 用于執行管理命令 |
graph TD
A[Orderer] --> B[Org1]
A --> C[Org2]
B --> D[Peer0.org1]
B --> E[Peer1.org1]
C --> F[Peer0.org2]
C --> G[Peer1.org2]
編輯docker-compose-ca.yaml
:
services:
ca_org1:
image: hyperledger/fabric-ca:1.5
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_CA_NAME=ca-org1
ports:
- "7054:7054"
啟動命令:
docker-compose -f docker-compose-ca.yaml up -d
使用cryptogen
工具:
# 從模板生成配置文件
cp cryptogen-template.yaml cryptogen.yaml
# 生成密鑰文件
./bin/cryptogen generate --config=cryptogen.yaml
生成的文件結構:
crypto-config/
├── ordererOrganizations
└── peerOrganizations
配置configtx.yaml
后執行:
./bin/configtxgen \
-profile TwoOrgsOrdererGenesis \
-outputBlock ./channel-artifacts/genesis.block
使用docker-compose-cli.yaml
:
docker-compose -f docker-compose-cli.yaml up -d
關鍵容器列表: - orderer.example.com - peer0.org1.example.com - peer1.org1.example.com - cli
# 進入CLI容器
docker exec -it cli bash
# 創建通道
peer channel create \
-o orderer.example.com:7050 \
-c mychannel \
-f ./channel-artifacts/channel.tx
# Org1的Peer加入
peer channel join -b mychannel.block
# Org2的Peer加入(需切換環境變量)
export CORE_PEER_LOCALMSPID=Org2MSP
export CORE_PEER_ADDRESS=peer0.org2.example.com:9051
peer channel join -b mychannel.block
以fabcar為例:
# 打包鏈碼
peer lifecycle chaincode package fabcar.tar.gz \
--path github.com/hyperledger/fabric-samples/chaincode/fabcar/go \
--lang golang --label fabcar_1
# 安裝到各Peer
peer lifecycle chaincode install fabcar.tar.gz
# 批準鏈碼定義
peer lifecycle chaincode approveformyorg \
--channelID mychannel \
--name fabcar \
--version 1.0 \
--package-id $PACKAGE_ID \
--sequence 1 \
--waitForEvent
peer chaincode query \
-C mychannel \
-n fabcar \
-c '{"Args":["queryAllCars"]}'
peer chaincode invoke \
-o orderer.example.com:7050 \
-C mychannel \
-n fabcar \
-c '{"Args":["createCar", "CAR1", "Tesla", "Model3", "Blue", "Tom"]}'
docker logs -f peer0.org1.example.com 2>&1 | grep -i chaincode
Orderer exited with code 1
ORDERER_GENERAL_LOCALMSPDIR
路徑是否正確Error: failed to send transaction
404 Not Found
錯誤docker-compose.yaml
中的COUCHDB_USER
和COUCHDB_PASSWORD
通過本文的實踐,您已經完成了:
? Fabric開發環境搭建
? 多組織網絡拓撲構建
? 智能合約的完整生命周期管理
建議下一步: 1. 嘗試Raft共識模式 2. 探索私有數據集合功能 3. 使用Fabric SDK進行應用集成
注意:生產環境部署需要考慮TLS加密、網絡策略等安全配置,本文示例僅用于開發測試。
附錄: - 官方文檔 - Fabric Samples倉庫 “`
該文檔包含2850字左右,采用標準的Markdown格式,包含: 1. 多級標題結構 2. 代碼塊與命令示例 3. 表格和Mermaid流程圖 4. 故障排查章節 5. 后續學習建議 6. 官方資源鏈接
可根據實際環境調整版本號和配置參數。建議配合fabric-samples倉庫中的first-network示例實踐。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。