写在前面的话
首先你必须已经搭建好了你的fabric环境,且成功运行起来了first-network
参考:
Ubuntu搭建 Hyperledger Fabric
Ubuntu 搭建 Hyperledger Fabric2.0 极简版
cryptogen是干嘛的
cryptogen是bin目录下的工具之一。参考byfn.sh文件我们可以发现他主要执行了一行命令:
cryptogen generate --config=./crypto-config.yaml
打开crypto-config.yaml文件,内容如下(汉化删减了一些东西):
一个fabric 网络可以有多个排序组织 OrdererOrgs,一个排序组织有一个域名,可以有多个排序用的节点(主机),有一个管理员。
一个fabric网络可以有多个记账组织 PeerOrgs,一个记账组织可以有一个域名,可以有多个记账的节点(主机),除了一个管理员外,还可以有多个普通用户。
# ---------------------------------------------------------------------------
# "OrdererOrgs" - 定义fabric的排序管理节点
# ---------------------------------------------------------------------------
OrdererOrgs:
- Name: Orderer
Domain: example.com # 一个管理排序的组织
Specs: #同一个组织域名下创建了五个节点
- Hostname: orderer
- Hostname: orderer2
- Hostname: orderer3
- Hostname: orderer4
- Hostname: orderer5
# ---------------------------------------------------------------------------
# "PeerOrgs" - 定义组织管理的子节点
# ---------------------------------------------------------------------------
PeerOrgs:
# ---------------------------------------------------------------------------
# Org1 子节点1
# ---------------------------------------------------------------------------
- Name: Org1
Domain: org1.example.com
EnableNodeOUs: true
Template:
Count: 2 # 节点数量
# Start: 5
# Hostname: {{.Prefix}}{{.Index}} # 默认
# Specs: # 同一个记账组织创建2个记账节点 自定义节点hostname
# - Hostname: foo
# CommonName: foo27.org5.example.com # 重写
# - Hostname: bar
Users:
Count: 1 # 除admin以外的用户数量
# ---------------------------------------------------------------------------
# Org2: 子节点2
# ---------------------------------------------------------------------------
- Name: Org2
Domain: org2.example.com
EnableNodeOUs: true
Template:
Count: 2
Users:
Count: 1
最终创建出来的网络长这样:
# /first-network/crypto-config
├── ordererOrganizations # 排序组织
│ └── example.com #组织的域名
│ ├── ca
│ │ ├── ca.example.com-cert.pem # 公钥
│ │ └── priv_sk #私钥
│ ├── msp
│ │ ├── admincerts
│ │ ├── cacerts
│ │ └── tlscacerts
│ ├── orderers # 组织中的排序节点
│ │ ├── orderer2.example.com
│ │ ├── orderer3.example.com
│ │ ├── orderer4.example.com
│ │ ├── orderer5.example.com
│ │ └── orderer.example.com
│ ├── tlsca
│ │ ├── priv_sk
│ │ └── tlsca.example.com-cert.pem
│ └── users # 用户 admin
│ └── Admin@example.com
└── peerOrganizations # 记账节点组织
├── org1.example.com # 组织1的域名
│ ├── ca
│ │ ├── ca.org1.example.com-cert.pem
│ │ └── priv_sk
│ ├── msp
│ │ ├── admincerts
│ │ ├── cacerts
│ │ ├── config.yaml
│ │ └── tlscacerts
│ ├── peers # 组织1的两个记账节点
│ │ ├── peer0.org1.example.com
│ │ └── peer1.org1.example.com
│ ├── tlsca
│ │ ├── priv_sk
│ │ └── tlsca.org1.example.com-cert.pem
│ └── users # 组织1的一个管理员和一个普通用户
│ ├── Admin@org1.example.com
│ └── User1@org1.example.com
└── org2.example.com # 组织2的域名
├── ca
│ ├── ca.org2.example.com-cert.pem
│ └── priv_sk
├── msp
│ ├── admincerts
│ ├── cacerts
│ ├── config.yaml
│ └── tlscacerts
├── peers
│ ├── peer0.org2.example.com
│ └── peer1.org2.example.com
├── tlsca
│ ├── priv_sk
│ └── tlsca.org2.example.com-cert.pem
└── users
├── Admin@org2.example.com
└── User1@org2.example.com
现在可以根据自己的需要设置网络中的排序节点和记账节点了,重新执行命令之前,记得删除文件夹crypto-config/。
rm -rf crypto-config
cryptogen generate --config=./crypto-config.yaml