当前位置:主页 > 查看内容

Mac Fabric 安装

发布时间:2021-04-28 00:00| 位朋友查看

简介:1. 前置软件安装 1go 下载压缩包、安装、配置环境变量go version查看是否安装成功 ? 2docker和docker-compose的安装 直接下载的docker桌面版最开始下载的是最新版本但是后面Fabric在安装的时候报错后降级版本 (Docker version 18.09.0、docker-compose versi……

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?

;原文链接:https://blog.csdn.net/nature_ph/article/details/115442403
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐