MacOS bigSur 搭建fabric2.1环境

一、准备工作

  • 安装docker

阿里云镜像下载:http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/

换源成网易源:

  "registry-mirrors": [
    "https://hub-mirror.c.163.com"
  ]

image

docker info确认:

image

  • 安装nodejs

  • 安装go

去go语言中文网

https://studygolang.com/dl

执行go env查看GOPATH,将其添加到.zshrc或者你当前shell的配置文件中:

image

二、fabric环境搭建

参照

Ubuntu Server搭建Hyperledger Fabric 2.1学习环境

以下为原文内容:

02 fabric环境搭建

现在网上关于fabric的教程大部分是基于1.4版本的,今天来演示下搭建2.1版本的Fabric环境进行学习。

2.1 下载fabric源码

进入GO的目录创建hyperledger文件夹:

mkdir -p $GOPATH/src/github.com/hyperledger
 
cd $GOPATH/src/github.com/hyperledger/

然后下载fabric的源码,注意这里用码云Gitee的链接,GitHub的太慢了得下到明年去:

git clone https://gitee.com/mirrors/fabric.git

图片

不知道为啥我这gitee也好慢啊。。。

将 fabric 切换至 2.1 版本:

cd fabric/
 
git branch -a
 
git checkout release-2.1

图片

图片

记得加个sudo,没有管理员权限啥都干不了。

2.2 下载fabric-samples源码、fabric镜像

cd scripts/
 
sudo ./bootstrap.sh

图片

然后就进入了漫长的等待了。fabric-samples是从GitHub上下载的,可能会比较慢。下载完成后会列出所有下载的docker镜像。

图片

2.3 网络测试

上面的工作完成后,当前目录多了一个fabric-samples文件夹,我们进去该目录下的test-network目录测试下搭建的环境是否成功:

cd fabric-samples/

cd test-network/

然后启动我们的测试网络:

sudo ./network.sh up

记得加sudo保平安哦。开始了一堆代码之后出现:

图片

说明创建成功了。

03 Fabcar测试

fabcar是一个小demo,我们这里运行它测试下看看。我们回到fabric-samples目录下,然后进入/fabcar目录中,先把网络给清理一下,然后启动:

sudo ./networkDown.sh

sudo ./startFabric.sh

图片

可能存在的问题

问题1

当然了你可能会遇到问题,比如找不到go命令等,这是因为sudo命令会重置当前的环境变量,导致设置go找不到。

Error: failed to normalize chaincode path: failed to determine module root: exec: "go": executable file not found in $PATH
!!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed !!!!!!!!!!!!!!!!

根据网上解决sudo环境变量问题的方法,在自己的shell配置文件中如下设置

vim ~/.bashrc 添加如下

alias sudo='sudo env PATH=$PATH LD_LIBRARY_PATH=$LD_LIBRARY_PATH'

图片

然后刷新下让配置生效:

source ~/.bashrc

问题2

安装golang fabric api依赖包的时候,长时间无响应,最后报如下错误:

go: github.com/hyperledger/fabric-contract-api-go@v1.0.0: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout ~/fabric-samples/test-network Finished vendoring Go dependencies ++ peer lifecycle chaincode package fabcar.tar.gz --path ../chaincode/fabcar/go/ --lang golang --label fabcar_1 ++ res=1 ++ set +x Error: failed to normalize chaincode path: 'go list' failed with: go: github.com/hyperledger/fabric-contract-api-go@v1.0.0: Get https://proxy.golang.org/github.com/hyperledger/fabric-contract-api-go/@v/v1.0.0.mod: dial tcp 172.217.27.145:443: i/o timeout: exit status 1 !!!!!!!!!!!!!!! Chaincode packaging on peer0.org1 has failed !!!!!!!!!!!!!!!!

ERROR !!! Deploying chaincode failed

解决办法:

golang1.13.x 可以直接执行:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

finally,终于成功了:

图片

04 SDK交互

在上一步执行成功后,会输出各个语言环境下的SDK交互实例,比如JavaScript是这样的:

JavaScript:

  Start by changing into the "javascript" directory:
    cd javascript

  Next, install all required packages:
    npm install

  Then run the following applications to enroll the admin user, and register a new user
  called appUser which will be used by the other applications to interact with the deployed
  FabCar contract:
    node enrollAdmin
    node registerUser

  You can run the invoke application as follows. By default, the invoke application will
  create a new car, but you can update the application to submit other transactions:
    node invoke

  You can run the query application as follows. By default, the query application will
  return all cars, but you can update the application to evaluate other transactions:
    node query

可以选择javascript,typescript,javago语言与网络交互,这里用javascript试试。进入fabcar中的javascript目录中,这里得切换到root用户,我也不知道sudo为什么还存在权限问题,执行:

cd javascript/

su

npm install

图片

安装相关的依赖。完成后我们按照合约流程依次启动:

注册管理员账号:

sudo node enrollAdmin.js

图片

注册用户:

sudo node registerUser.js

我们接下来,执行一笔交易

sudo node invoke.js

图片

查询交易后的状态:

sudo node query.js

图片

完成啦!!!至此,Fabric的环境已经搭建完成。大家可以在上面愉快的学习了。

参考资料

最新超详细的 Hyperledger Fabric2.2 环境搭建部署

https://blog.csdn.net/shengsikandan/article/details/107656060

fabric2.1.0 打包chaincode 报错

https://blog.csdn.net/qq_32247229/article/details/108860823

go 提示failed to normalize chaincode path

https://www.jason-z.com/post/165

ubuntu16.04下搭建fabric 1.4.3环境 

https://blog.csdn.net/Sun_Hui_/article/details/100928155

!!! 以下一步看情况,如果下载速度可以就不用换了。

编辑bootstrap.sh文件:

更改hyperledger-fabric-darwin-amd64-2.1.1.tar.gz下载地址

源GitHub下载地址:https://github.com/hyperledger/fabric/releases/download/v2.1.1/hyperledger-fabric-darwin-amd64-2.1.1.tar.gz

更改hyperledger-fabric-ca-darwin-amd64-1.4.7.tar.gz文件下载地址

源GitHub下载地址:https://github.com/hyperledger/fabric-ca/releases/download/v1.4.7/hyperledger-fabric-ca-darwin-amd64-1.4.7.tar.gz

其他需要注意的地方

go代理设置:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

https://goproxy.cn 好像挂了。。。所以设置这个。

出现错误:

Error: chaincode install failed with status: 500 - failed to invoke backing implementation of 'InstallChaincode': could not build chaincode: docker build failed: docker image inspection failed: Get "http://unix.sock/images/dev-peer0.org1.example.com-fabcar_1-762e0fe3dbeee0f7b08fb6200adeb4a3a20f649a00f168c0b3c2257e53b6e506-5016f400ec9078b1e7c00626e70b0094ec48651ea7f49e14b46a6995345e2431/json": dial unix /host/var/run/docker.sock: connect: no such file or directory
!!!!!!!!!!!!!!! Chaincode installation on peer0.org1 has failed !!!!!!!!!!!!!!!!

此问题是由适用于macOS的Docker Desktop的较新版本引起的。

要解决此问题,请在Docker Desktop首选项中,取消选中该框Use gRPC FUSE for file sharing, 以使用旧版osxfs文件共享,然后单击Apply&Restart 。

image

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值