Mac Fabric 安装

1. 前置软件安装:

1)go:下载压缩包、安装、配置环境变量,go version查看是否安装成功

2)docker和docker-compose的安装

直接下载的docker桌面版,最开始下载的是最新版本,但是后面Fabric在安装的时候报错,后降级版本 (Docker version 18.09.0、docker-compose version 1.23.2)

需要配置镜像加速参考文档:https://blog.csdn.net/kozazyh/article/details/79795559 , 如果目录下没有daemon.json文件,创建一个就好啦

注:之前安装最新docker桌面版本的时候,可以直接打开docker在界面中配置,后来降级版本后,不知道为什么打不开了,就在配置文件里面直接配置了

3)fabric源码下载:直接从GitHub上下载,如果比较慢,可以先拉到码云上在clone,版本切换到release-1.0

两个工具安装:

hyperledger/fabric/common/configtx/tool 运行 go install --tags=nopksc11

/Users/minghuili/go/src/github.com/hyperledger/fabric/common/tools/cryptogen 运行 go install --tags=nopksc11

安装完成后,在$GOPATH/bin目录下,出现 configtxgen和 cryptogen

4)fabric 组件docker镜像:

cd fabric/examples/e2e_cli/
chmod +x download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
sudo ./download-dockerimages.sh

下载完成后,docker images 查看

5)fabric-samples源码下载:和fabric放在一个目录即可,版本切换到release-1.0

$GOPATH/src/github.com/hyperledger/fabric-samples/first-network 目录下,各个文件夹的含义

localhost:first-network xx$ ll -a
total 104
drwxr-xr-x  13 xx  staff    416  4  1 09:31 ./
drwxr-xr-x  15 xx  staff    480  3 26 11:08 ../
-rw-r--r--   1 xx  staff     42  3 26 11:08 .env         #环境变量
-rw-r--r--   1 xx  staff    335  3 26 11:08 README.md 
drwxr-xr-x   4 xx  staff    128  3 26 11:08 base/        #docker-compose的一些公共服务
-rwxr-xr-x   1 xx  staff  15108  3 26 11:08 byfn.sh*     #启动脚本    
drwxr-xr-x   3 xx  staff     96  4  1 09:31 channel-artifacts/ 
-rw-r--r--   1 xx  staff   5013  3 26 11:08 configtx.yaml    #对应channel-artifacts目录
-rw-r--r--   1 xx  staff   3858  3 26 11:08 crypto-config.yaml   #对应crypto-config目录
-rw-r--r--   1 xx  staff   3015  3 26 11:08 docker-compose-cli.yaml   #启动网络
-rw-r--r--   1 xx  staff   4604  3 26 11:08 docker-compose-couch.yaml #启动网络
-rw-r--r--   1 xx  staff   2883  3 26 11:08 docker-compose-e2e-template.yaml  #启动网络
drwxr-xr-x   3 xx  staff     96  4  1 09:17 scripts/  #测试脚本:创建通道、加入通道、安装链码、实例化链码、和链码交互

2.启动网络

1)配置文件分析:

crypto-config.yaml:

OrdererOrgs:
  - Name: Orderer   #名字
    Domain: example.com   域名
    Specs:
      - Hostname: orderer
  - Name: Org1    #组织名字
    Domain: org1.example.com
    Template:
      Count: 2    # 两个peer结点
    Users: 
      Count: 1    # 一个用户

configtx.yaml:

Profiles、Organizations、Application

2)byfn.sh -h 查看 启动网络的命令

byfn.sh -m generate  -c 通道的名字   # yaml配置文件生成peer结点以及order结点相关的MSP证书,以及创世区块等配置

流程分析:

为两个组织org1和org2创建证书:

生成创世区块:

生成通道的配置文件

生成两个组织的锚节点,对外通信

对应crypto-config目录中生成的内容

  crypto-config中是order结点的配置,以及各个组织的peer结点的配置

  ca:根CA的证书以及私钥

  msp:管理员的证书以及中间证书

  peers:每个peer相关的证书

  tlsca:

  users:管理员证书以及普通用户证书

对应channel-artifacts目录中生成的内容:

  创世区块、通道配置、锚节点配置

3)byfn.sh -m up -c mychannel 

 流程:

   创建通道

  peer结点加入通道中

  更新锚节点信息

  安装chaincode

  智能合约初始化

  查询操作

  做了一次交易

  再次查询

4)生成容器  docker ps -a

docker images  生成链码镜像

5)链码分析

调用流程:

script.sh调用链码的位置:

链码实例化

chaincode_example02.go 链码内容分析:

初始化函数:func (t *SimpleChaincode) Init(stub shim.ChaincodeStubInterface) pb.Response,判断参数个数以及接受参数

Invoke函数:func (t *SimpleChaincode) Invoke(stub shim.ChaincodeStubInterface) pb.Response,invoke、delete、query方法

invoke函数:func (t *SimpleChaincode) invoke(stub shim.ChaincodeStubInterface, args []string) pb.Response,转账

delete函数:func (t *SimpleChaincode) delete(stub shim.ChaincodeStubInterface, args []string) pb.Response

query函数:func (t *SimpleChaincode) query(stub shim.ChaincodeStubInterface, args []string) pb.Response
 

【安装问题记录】

1../byfn.sh -m up -c imocc报错

解决:将docker和docker-compose版本降级,降级后出现下面的问题:

解决:rm -rf ~/.docker/config.json

参考: https://blog.csdn.net/whizkidlxh/article/details/9020812

2. ./byfn.sh -m up -c imocc报错

Error: got unexpected status: BAD_REQUEST -- error applying config update to existing channel 'imocc': error authorizing update: error validating ReadSet: proposed update requires that key [Group]  /Channel/Application be at version 0, but it is currently at version 1
!!!!!!!!!!!!!!! Channel creation failed !!!!!!!!!!!!!!!!
========= ERROR !!! FAILED to execute End-2-End Scenario ===========

原因:没有关闭网络,./byfn.sh -m down -c imocc

3.  ./byfn.sh -m up -c imocc报错

!!!!!!!!!!!!!!! Query result on PEER0 is INVALID !!!!!!!!!!!!!!!!
================== ERROR !!! FAILED to execute End-2-End Scenario ==================

解决:https://blog.csdn.net/qq_20513027/article/details/83214782 

猜你喜欢

转载自blog.csdn.net/nature_ph/article/details/115442403