刚刚搭建好fabric,安装好之后有一个byfn.sh,就是BYFN(build your first network)的启动脚本。主要有3个操作:generate、up、down。
这个网络有2个组织org,每个org有2个peer,和一个独立的ordering service。
1、sudo ./byfn.sh -m generate
注意generate之前先down一下.
generate之前的文件夹是这样的:
再sudo ./byfn.sh -m generate 文件夹内容变这样:
多了两个文件:crypto-conf和docker-compose-e2e.yaml
生成网络的初始化配置:MSP证书、私钥、创世块、配置交易等文件。MSP相关的信息在crypto-config文件夹,创世区块在channel-artifacts文件夹,MSP证书和私钥用于不同的网络实体,创世块用于启动排序服务,配置交易文件用于配置通道。
2、./bysh.sh -m up
启动网络。启动之前检查本地是否有crypto-config文件夹,如果没有则执行generate操作,有就根据$IF_COUCHDB和$COMPOSE_FILE变量来选择对应的docker compose配置文件启动网络。默认的goleveldb数据库对应的配置文件为docker-compose-cli.yaml,若启动参数设置为couchdb则对应的配置文件为docker-compose-couch.yaml。docker compose启动docker-compose-cli.yaml 后最后创建的为cli容器,并执行了fabric-samples/first-network/scripts/script.sh脚本,srcipt.sh脚本完成创建通道、加入通道、更新锚节点、安装-初始化-执行链码等一系列的操作。
3、./byfn.sh -m down
关闭网络,删除容器和不必要的镜像。
4.1、MSP:成员管理服务提供者,成员管理服务是Peer节点、排序服务节点内置的服务,利用KPI体系颁发给成员的X.509数字证书,认证、授权和管理成员数字证书身份,提供授权的区块链操作;
4.2、PKI:公钥基础设施,一种遵循标准并且利用公钥加密技术为电子商务的开展提供一安全基础平台的技术和规范;
4.3、创世区块:Genesis Block,创世区块是初始化区块链网络或者通道的配置区块,也是连上的第一个区块;
4.4、链码:Chaincode,可独立运行的应用程序(Fabric中的智能合约),运行在基于docker的安全容器中,在启动的时候和背书节点建立gRPC连接,在运行过程中通过链码接口和背书节点进行通信,实现和账本的交互;
4.5、锚节点:Anchor Peer,是在通道配置中设置的,一个组织一般会设置一个或者多个锚节点,其它节点能够连接锚节点获取通道上存在的其它节点;
4.6、排序服务节点:Orderer,是接收交易进行排序并广播区块给Peer节点的节点,一般情况下为了避免单点问题,会部署多个排序服务节点;
4.7、通道:Channel,通道实现了数据的隔离和私密性,加入到通道中的所有Peer节点之间共享同一个账本;