1. 前置软件安装:

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

2)docker和docker-compose的安装

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

需要配置镜像加速参考文档:Docker的配置文件 daemon.json 详解_kozazyh的专栏-CSDN博客_docker的daemon.json , 如果目录下没有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.comTemplate: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 ==================

解决:【区块链-HyperLedger】1 快速搭建一个Fabric1.0环境 运行测试e2e_cli项目_猫哆哩o0-CSDN博客

4. curl -sSL https://bit.ly/2ysbOFE | bash -s

问题:curl: (7) Failed to connect to bit.ly port 443: Connection refused

解决:“curl: (7) Failed to connect to xxx port 443: Connection refused”解决办法_Zero的博客-CSDN博客

5. curl -sSL https://bit.ly/2ysbOFE | bash -s 报错

curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

原因:docker镜像源需要修改

解决: 修改docker镜像源的方法_skh2015java的博客-CSDN博客_修改docker镜像源

6. fabric-fample/test-work中,执行 ./network.sh up,报错

Peer binary and configuration files not found..Follow the instructions in the Fabric docs to install the Fabric Binaries:
https://hyperledger-fabric.readthedocs.io/en/latest/install.html

原因:上面错误5导致

7. mac 安装mq

mac 安装jq_nature_ph的博客-CSDN博客_jq mac

【20220212更新 安装Fabric 1.4】

步骤1:curl -sSL http://bit.ly/2ysbOFE | bash -s -- 1.4.12 1.4.9 0.4.22

问题1:命令没有反应

解决1: 打开http://bit.ly/2ysbOFE 下载 bootstrap.sh

解决2:打开bootstrap.sh,在里面直接修改  <fabric_version> <fabric-ca_version>

步骤2:执行 bash bootstrap.sh

问题2:下载fabric和fabric-ca失败

解决2:手动下载  hyperledger-fabric-darwin-amd64-1.4.4.tar.gz hyperledger-fabric-ca-darwin-amd64-1.4.4.tar.gz,可提前在bootstrap.sh中将下载fabric和fabric-ca的命令注释一下

步骤3: 解压hyperledger-fabric-ca-darwin-amd64-1.4.9.tar.gz和hyperledger-fabric-darwin-amd64-1.4.12.tar.gz,生成config和bin两个文件夹,将 bin 和 config 文件夹复制到 fabric-samples文件夹内。

步骤4:进入fabric-samples下的first-network文件夹,产生网络:./byfn.sh -m generate

问题:无法打开“cryptogen”,因为无法验证开发者。

解决:

步骤5:启动网络:./byfn.sh -m up

【参考链接】

Install Samples, Binaries and Docker Images — hyperledger-fabricdocs master documentation

安装fabric二进制文件下载速度慢_oheyec_的博客-CSDN博客

Mac Pro下部署Hyperledger Fabric 1.4.4_yuxinqingge的博客-CSDN博客

【经验】整体过程要按照官方文档走,官方文档说得比较模糊的地方查找资料

【20220214更新】

执行./byfn.sh -m up报错

2022-02-14 07:26:22.638 UTC [channelCmd] InitCmdFactory -> INFO 001 Endorser and orderer connections initialized
Error: got unexpected status: BAD_REQUEST -- error applying config update to existing channel 'mychannel': 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 down直接将docker关闭

解决:./byfn.sh down

Mac Fabric 安装相关推荐

  1. mac下安装python3

    mac下安装python3 1.先用brew search命令查看 brew search python3 结果如下所示: ==> Formulae boost-python3 python3 ...

  2. aac文件损坏修复软件_Mac不能安装非信任应用的解决方法 MAC软件安装必读 打不开身份不明的开发者?文件已损坏?...

    1.mac不能安装非信任应用 的第一种情况 Mac打不开身份不明的开发者?不明开发者,文件已损坏? 提示不明开发者,文件已损坏解决方法 1.打开系统偏好设置-安全性与隐私 2.解锁 3.允许以下位置下 ...

  3. Mac如何安装并永久激活PyCharm以及IntelliJ IDEA

    文章目录 mac如何安装并永久激活PyCharm以及IntelliJ IDEA 一:PyCharm下载激活教程(for mac) (1)下载 (2)安装 (3)激活 二:IntelliJ IDEA软件 ...

  4. MAC YII 安装步骤

    MAC YII 安装步骤 1.下载XAMPP for MAC http://www.apachefriends.org/en/xampp-macosx.html 虽然单独安装apache ,mysq, ...

  5. mac git安装及github配置

    准备下载一个react的demo程序包,需要本地用到git.早就向配置了,那就安装配置一下吧. 首先,原来mac已经安装了git,版本 2.7 ,我用 brew又安装了一份git 版本 2.10.2. ...

  6. (0017)iOS 开发之Mac上安装Eclipse、创建java后台程序访问本地数据库

    Mac 上安装Eclipse 1. Eclipse下载列表: http://www.eclipse.org/downloads/packages/release/Neon/2 2.不同的开发需求下载不 ...

  7. Mac 下安装 ruby 环境解决 brew 安装 yarn 问题

    Mac 下安装 ruby 环境解决 brew 安装 yarn 问题 参考文章: (1)Mac 下安装 ruby 环境解决 brew 安装 yarn 问题 (2)https://www.cnblogs. ...

  8. fot mac matlab_matlab for mac的 安装-亲手实验

    Matlab 2011b/2012a for MAC 安装体验 因为本人的业务需求,需要在 macbook air 13 ' 上面安装 matlab . Mac 上面已经装好了 OS 和 XCODE4 ...

  9. 《Python硬件编程实战》——2.8 在Mac中安装Python

    本节书摘来自华章计算机<Python硬件编程实战>一书中的第2章,第2.8节,作者:李茂 著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.8 在Mac ...

最新文章

  1. SQL With As 用法Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
  2. 用 Python 实现文件查找
  3. Httpd 使用ip可以访问,localhost和127.0.0.1不能访问
  4. 利用批处理程序和excel获取windows文件信息
  5. HackerOne 发布2021年《黑客驱动安全报告:行业洞察》
  6. hadoop longwritable类
  7. 【提前批】22届的同学看过来,百度提前批开始啦~
  8. 桌面怎么新建html文件夹下,创建文件夹的步骤 怎么往新建的文件夹里写东西呀?...
  9. 【MFC开发(2)】新建一个对话框MFC项目(vs2013)
  10. 嵌入式Linux开发细分四个岗位
  11. IFIX组态软件WINCC INTOUCH数据库 日志SQL记录,时班日报神器
  12. 动易CMS 复制word里面带图文的文章,图片可以直接显示
  13. matlab仿真项目心得,Matlab与Simulink系统仿真学习心得
  14. 【论文阅读】MobileNet V2——MobileNetV2: Inverted Residuals and Linear Bottlenecks
  15. 小P的故事——神奇的换零钱 背包
  16. 从逐利到协力 「DAO」阻且长
  17. 有道云笔记linux使用教程,办公必备神器系列五:云笔记:为知笔记、印象笔记、有道云笔记...
  18. php抓取天眼查,python用xpath采集天眼查内容,有反爬,zip拼数据
  19. Steam教育在人文研究领域体现的综合素养
  20. Wilcoxon检验

热门文章

  1. Springboot毕设项目酒店地下停车场管理系统47g66java+VUE+Mybatis+Maven+Mysql+sprnig)
  2. .net core 3.1精伦身份证读卡器IDR210-2(部标版)二次开发
  3. matlab怎么定义矩阵函数,怎么在matlab定义一个函数,而这个函数输入值是矩阵,并且输出的值也是相应的矩阵?...
  4. 以数据赋能业务,qlik为企业搭建透明绩效管理平台
  5. 微信小程序接入微信支付全流程(koa2)
  6. Linux系统安装jdk17
  7. (三十七:2021.01.13)Pre-MICCAI 2019学习(二)《前列腺近距离放射治疗中,检测粒子在CT中的3D位置和方向》
  8. 解决Unity3D使用VRTK时,VR眼镜连接不上的问题
  9. Mac磁盘工具无法将APFS硬盘转化为txFAT格式的解决办法
  10. 期末余额 = 期初余额 + 本期增加发生额 - 本期减少发生额