个人认为windows搭建智能合约底层服务不可行
一、背景
在登录 BSN区块链服务网络 后,点击进入联盟链服务——测试网服务,随后在我的测试服务页面点击新建,可以选择的平台类型如下:
二、平台类型及IDE选择
先说一下结论,首先,在 Windows 上直接部署智能合约的底层服务难度很大,不适合初学者,感觉需要很多精力研究,所以我放弃了。
- 还是在 Windows 电脑上安装一下虚拟机软件,再在虚拟机上安装类Unix系统,然后部署智能合约底层服务会更加顺利一些;
- 关于 FISCO-BCOS 和 Hyperledger-Fabric 之间的选择,个人感觉还是有 WeBank + Fisco-Bcos 的组合更好,因为 WeBank 有可视化页面;
2.1 FISCO-BCOS
FISCO BCOS 是一个稳定、高效、安全的区块链底层平台,经过多家机构、多个应用,长时间在生产环境运行的实际检验。
尤其在金融领域应用广泛。
- GitHub 项目地址:https://github.com/FISCO-BCOS/FISCO-BCOS/
- Gitee 镜像项目地址:https://gitee.com/FISCO-BCOS/FISCO-BCOS/
2.1.1 WeBASE
于是,作为一名区块链入门开发者,我了解到 WeBASE 是可以用来写智能合约 的开发工具之一。
- GitHub 项目地址:https://github.com/WeBankBlockchain/WeBASE
WeBASE:一站式开发环境
- 微众银行自主研发并完全开源的区块链中间件平台
- 提供一站式合约开发环境、覆盖合约的生命周期
- 可视化交互,所见即所得
- 提供账户管理、合约管理及数据查询能力
都 2022 年了,你居然没有 bat 脚本,只有 sh 脚本...我蛋疼了,而且这个 build_chain.sh 对于一个新手而言根本绕不过去呀!
环境搭建需要借助 Ubuntu 虚拟机,说实话有点小烦!因此,不推荐 Windows 系统的小伙伴入门时使用。
2.1.2 ChainIDE
注册即用的在线开发平台,可以选择由纯白矩阵开发的 https://chainide.com/ ,可以选择 Fisco 开发在线IDE -> https://fiscoide.com/
说实话,因为是国外的服务器,所以慢得一比,还经常打不开,不推荐!
2.2 Fabric
全称是 Hyperledger Fabric。
- 在 D 盘创建
D:\fabric
文件夹,作为工作目录; - 下载 fabric-samples 源码,在 CMD 中输入以下命令之一:
// 从国外 GitHub 下载
git clone https://github.com/hyperledger/fabric-samples.git
// 或者从国内 Gitee 下载
git clone https://gitee.com/hyperledger/fabric.git
- 访问网站 https://github.com/hyperledger/fabric/releases/tag/v2.3.2,并下载 hyperledger-fabric-windows-amd64-2.3.2.tar.gz:
- 下载完成的 hyperledger-fabric-windows-amd64-2.3.2.tar.gz 放到工作目录
D:\fabric
下,并且用 7-Zip 提取到当前位置; - 再将解压得到的 hyperledger-fabric-windows-amd64-2.3.2.tar 文件,再次用 7-Zip 提取到当前位置,得到 bin 和 config 文件夹;
-
复制 bin 和 config 文件夹到 fabric-samples 文件夹;
-
使用 docker pull 拉取所需镜像:
docker pull hyperledger/fabric-tools:3.2.3
docker pull hyperledger/fabric-orderer:3.2.3
docker pull hyperledger/fabric-peer:3.2.3
访问网站 https://hub.docker.com/search?q=hyperledger%2Ffabric&type=image,
- 修改
D:\fabric\fabric-samples\test-network\network.sh
第 71 行,latest改为 2.3.2:
DOCKER_IMAGE_VERSION=$(${CONTAINER_CLI} run --rm hyperledger/fabric-tools:2.3.2 peer version | sed -ne 's/^ Version: //p')
- 修改
D:\fabric\fabric-samples\test-network\compose\compose-test-net.yaml
,修改:latest
为:2.3.2
image: hyperledger/fabric-orderer:2.3.2
image: hyperledger/fabric-peer:2.3.2
image: hyperledger/fabric-tools:2.3.2
- 修改 D:\fabric\fabric-samples\test-network\compose\docker\docker-compose-test-net.yaml ,修改
:latest
为:2.3.2
image: hyperledger/fabric-peer:2.3.2
image: hyperledger/fabric-tools:2.3.2
-
打开 Git Bash,进入
/d/fabric/fabric-samples/test-network
,运行指令bash network.sh up
-
docker ps
检查: 测试网络包含 2个peer( peer0.org1.example.com 和 peer0.org2.example.com),1个orderer(orderer.example.com),1个cli。
了解更多 Test Network
2.2.1 安装链码
- 在 Git Bash 中运行
./network.sh down
停止服务 - 修改
fabric-samples\test-network\compose\compose-test-net.yaml
,在 volumes 增加一行:
volumes:
- /d/fabric/fabric-samples/chaincode:/opt/gopath/src/github.com/hyperledger/fabric/peer/chaincode/
表示将
fabric-samples\test-network\asset-transfer-basic
挂载到 Docker 容器中。
注意,这种写法只适用于 Git Bash,而不适用于 CMD。
-
在 Git Bash 中运行
./network.sh up createChannel
-
在 cmd 中运行
docker exec -it cli /bin/bash
-
引入环境变量:
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org1MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
export CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- go代理和打包链码
go env -w GOPROXY=https://goproxy.io,direct
go env -w GO111MODULE=on
peer lifecycle chaincode package fabcar.tar.gz --path chaincode/fabcar/go/ --lang golang --label fabcar_go_1
前两步是设置国内go代理,第三步是打包链码。
- 安装链码失败
bash-5.1# peer lifecycle chaincode install fabcar.tar.gz
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: cannot connect to Docker endpoint