Skip to content

Latest commit

 

History

History
212 lines (181 loc) · 8.56 KB

fabric.md

File metadata and controls

212 lines (181 loc) · 8.56 KB

###整个启动过程

#删除相关文件
sudo rm -r ./ca_conf/fish/*     
sudo rm -r ./ca_conf/rest/*
sudo rm -r ./ca_conf/ordererca/*
rm -r ./org_crypto_conf/organizations/*


#产生相关的密钥文件
cd ./org_crypto_conf
cryptogen generate --config=./crypto-config.yaml  --output="organizations"



#开启CA服务
cd ../compose_conf
docker-compose -f compose_ca.yaml up -d
sleep 3


#向ca注册相关身份
cd ../ca_conf
bash ./enroll.sh


#产生系统通道与应用通道的配置文件
cd ../configtx
configtxgen -profile TwoOrgsChannel -channelID fish-channel -outputCreateChannelTx ./channel-artifacts/channel.tx
configtxgen -profile TwoOrgsOrdererGenesis -channelID fabric-channel -outputBlock ./channel-artifacts/genesis.block


#开启网络
cd ../compose_conf
docker-compose -f compose-couch.yaml -f compose_fish_peer.yaml -f compose_rest_peer.yaml -f compose_fish_orderer.yaml -f compose_fish_cli.yaml up -d

####重要文件目录

.
├── ca\_conf 	ca的配置文件(实际上只需要生成三个ca的空文件夹,ca启动时会自动生成相关的文件,由于启动时不能生成文件夹,所以要自己建立文件夹,具体要看compose文件中ca部分的配置);enroll.sh这个脚本是用来注册身份的
├── chaincode 	链码文件夹于网络搭建无关
├── compose\_conf 	#docker的启动配置
├── configtx 		#核心文件,负责配置通道和网络
├── org\_crypto\_conf 	#主要存放组织的结构
├── scrpt
└── start.sh

####核心文件

  • org_crypto_conf/crypto_config.yaml #用于生成网络的结构(或者说是网络中的组织结构)
  • compose_conf #是各个节点启动的配置
  • config/configtx.yaml #用于生成网络的结构,是大家相互认识的核心

####compose_conf文件夹说明

.
├── compose-couch.yaml 		#couch数据库的配置文件
├── compose_ca.yaml 		#ca的配置文件
├── compose_fish_cli.yaml 	#客户端的配置文件
├── compose_fish_orderer.yaml 	#orderer组织的配置文件
├── compose_fish_peer.yaml 	#fish组织的peer配置文件
├── compose_rest_peer.yaml 	#rest组织的peer配置文件
├── composefile 		#本说明文件
└── peercfg 			#启动peer的配置文件,peer的核心配置(但是不建议修改,官方的方案是使用默认文件,需要改的地方在compose文件中指定环境变量,所以这里是在官网上拷贝下来的,实际上没什么要细说的)
   ├── core.yaml
   └── mspreally
      └── keystore

####删除文件部分 解释:

  • 在ca_conf这个文件夹下面有ca的相关文件
  • 这里的有些文件在注册身份时用的上
  • 这些文件不许要手动生成,他会在docker启动时自动生成(详情见compose_ca.yaml)

####产生相关密钥部分 解释:

cryptogen generate --config=./crypto-config.yaml --output="organizations"

  • cryptogen 是fabric官方提供的一个配置生成工具(直接使用需要下载相关文件并设置环境变量)
  • generate 该工具的子命令
  • --config= 用来指定配置文件(该配置文件需要自己写,配置方法文件中有)
  • --output 指定输出在那个文件夹里面,该文件夹会自动生成

文件结构图如下:

.
├── ordererOrganizations   #orderer组织的相关文件
│  └── fish.com 	   #组织名称
│     ├── ca 		   #后面没有明确使用这个文件夹里面的内容,应该是签发证书用的
│     ├── msp 		   #身份认证文件,主要是认证这个组织内orderer的身份,在启动时会被加载到orderer容器里面(也就是在搭建多机环境是这个文件是需要发给每个orderer的,不然它无法识别同组织的orderer)
│     ├── orderers 	   #里面存放每个orderer节点的相关信息
│     ├── tlsca
│     └── users 	   #用于存放user的身份(orderer组织只有一个ADMIN身份的用户)
└── peerOrganizations
   ├── Peer_fish.com
   │  ├── ca
   │  ├── msp
   │  ├── peers
   │  ├── tlsca
   │  └── users 	   #这里包含一个admin和一个普通的user
   └── Rest.com
      ├── ca
      ├── msp
      ├── peers
      ├── tlsca
      └── users

注意在注册身份(执行enroll.sh这个脚本)之前这些文件都是无用的,上述命令主要产生的是一个文件框架和一些非重要的文件
所以这里先不展开讲文件夹内文件的作用(因为在注册身份时会覆盖掉这些文件)

####开启ca服务

  • 开启每个组织的ca服务端,为下一步的注册提供服务
  • 这一步需要注意的是ca的用户名和密码,具体在compose_ca.yaml这个文件里查看

####向ca注册相关身份

  • 这是最麻烦的一步
  • 相关过程见ca_conf/enroll.sh 内有注释

####注册身份后的的各个组织的文件结构

#该文件目录唯一需要关心的是msp文件夹下面的cacerts文件夹和signcerts文件夹,这两个文件夹是会用于身份的认证与被认证,十分建议使用openssl工具查看一下这两个文件夹下面的pem文件
.
├── ca
│  ├── ca.Peer_fish.com-cert.pem
│  └── priv_sk
├── lsForPeerFis 	#该说明文件
├── msp
│  ├── admincerts
│  ├── cacerts
│  │  └── ca.Peer_fish.com-cert.pem
│  ├── config.yaml
│  └── tlscacerts
│     ├── ca.crt
│     └── tlsca.Peer_fish.com-cert.pem
├── peers 	#peer的身份用来验证网络中各个实体结构的身份
│  ├── peer0.Peer_fish.com
│  │  ├── msp
│  │  │  ├── admincerts 	#这个是1.x版本的遗留,2.x这个文件夹是没用的
│  │  │  ├── cacerts 		#理论上只需要一个文件但于是注册时没有覆盖掉所以这里的localhost-7054-ca-fish.pem是ca.Peer_fish.com-cert.pem的副本(由我手动覆盖),这个文件是用于验证身份
│  │  │  │  ├── ca.Peer_fish.com-cert.pem
│  │  │  │  └── localhost-7054-ca-fish.pem
│  │  │  ├── config.yaml
│  │  │  ├── IssuerPublicKey
│  │  │  ├── IssuerRevocationPublicKey
│  │  │  ├── keystore
│  │  │  │  ├── 505fbe18d5529ae0f91d80bb9a8db1f3019240ee87ab026ef192063b874b59ae_sk
│  │  │  │  └── priv_sk
│  │  │  ├── signcerts 		#用于证明身份(这里也有使用了手动覆盖的手段)
│  │  │  │  ├── cert.pem
│  │  │  │  └── peer0.Peer_fish.com-cert.pem
│  │  │  ├── tlscacerts 	#tls的证书
│  │  │  │  └── tlsca.Peer_fish.com-cert.pem
│  │  │  └── user
│  │  └── tls
│  │     ├── ca.crt
│  │     ├── cacerts
│  │     ├── IssuerPublicKey
│  │     ├── IssuerRevocationPublicKey
│  │     ├── keystore
│  │     │  └── caeaf790e2e14df2a26dbea5818f42153a690a5af83e88df65c41c644731b7ff_sk
│  │     ├── server.crt
│  │     ├── server.key
│  │     ├── signcerts
│  │     │  └── cert.pem
│  │     ├── tlscacerts
│  │     │  └── tls-localhost-7054-ca-fish.pem
│  │     └── user
│  └── peer1.Peer_fish.com 	#与peer0的结构一样
├── tlsca
│  ├── priv_sk
│  └── tlsca.Peer_fish.com-cert.pem
└── users 		#user用来验证对网络的操作的身份
   ├── Admin@Peer_fish.com
   │  ├── msp
   │  │  ├── admincerts
   │  │  ├── cacerts
   │  │  │  ├── ca.Peer_fish.com-cert.pem
   │  │  │  └── localhost-7054-ca-fish.pem
   │  │  ├── config.yaml
   │  │  ├── IssuerPublicKey
   │  │  ├── IssuerRevocationPublicKey
   │  │  ├── keystore
   │  │  │  ├── 5187b6ed5ad2e7514ae078f6444f1dba92d2120d6cfe14dd9b766f66f78e0d89_sk
   │  │  │  └── priv_sk
   │  │  ├── signcerts
   │  │  │  ├── Admin@Peer_fish.com-cert.pem
   │  │  │  └── cert.pem
   │  │  ├── tlscacerts
   │  │  │  └── tlsca.Peer_fish.com-cert.pem
   │  │  └── user
   │  └── tls
   │     ├── ca.crt
   │     ├── client.crt
   │     └── client.key
   └── User1@Peer_fish.com 	#与admin的结构一样

#总结就是:peer的身份会在开启网络的时候使用,user的身份会在部署应用与操作应用的时候使用

####启动网络

  • 这里主要需要了解的是对给个节点的环境配置(详细说明在compose文件中有说明)
  • 建议按照orderer -> peer+couch -> cli这个顺序查看配置说明