1. 前置软件下载
1.1 下载docker desktop
官网:Install Docker Desktop on Windows | Docker Docs
双击下载的.exe程序进行安装。
1.2 下载WSL2
在管理员模式下打开 PowerShell 或 Windows 命令提示符,输入 wsl --install 命令。
wsl --install
此命令将启用运行 WSL 并安装 Linux 的 Ubuntu 发行版所需的功能。
设置Linux用户名和密码:安装好后会要求输入用户名与密码。然后重启计算机。
需要使用WSL时可以在开始菜单中打开:
建议使用发行版的首选包管理器定期更新和升级包。Windows 不会自动更新或升级 Linux 分发版。 大多数 Linux 用户往往倾向于自行控制此任务。
sudo apt update && sudo apt upgrade
将版本从WSL1升级到WSL2
查看 Linux 发行版是设置为 WSL 1 还是 WSL 2,使用命令 :
wsl -l -v
使用
如果出现报错:‘‘wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。’’
在Windows中的C:Users<your_username>目录下创建一个.wslconfig文件,然后在文件中写入如下内容
[experimental] autoMemoryReclaim=gradual networkingMode=mirrored dnsTunneling=true firewall=true autoProxy=true
然后在windows的命令行中用
1.3 WSL相关介绍
在 17063 之前,WSL 只能访问 Windows 环境变量 PATH。 17063 之后,WSL 和 Windows 共享一个特殊环境变量
WSL 可以使用
若要在 Windows 文件资源管理器中打开 WSL 项目,请输入:(注意末尾有句点)
explorer.exe .
或者直接打开文件浏览器,你会发现多了一个Linux选项,直接点击也行。
2. 配置Docker Desktop
打开Docker Desktop然后点击设置,选择
3. 安装Fabric和Fabric Samples
(博主在这个过程中开启了加速器,设置了域名全代和全局代理。如果你再安装过程中出现error,可能是因为网络的原因,可以去查询配置镜像源的相关教程,或者你有加速器的话你也可以直接用加速器)
创建一个工作区。对于Go项目,推荐以下的工作路径。
mkdir -p $HOME/go/src/github.com/<your_github_userid>
进入该路径。
cd $HOME/go/src/github.com/<your_github_userid>
获取安装脚本
curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh && chmod +x install-fabric.sh
用
./install-fabric.sh -h
获取 Docker 容器并克隆Samples仓库(这个过程会比较久,要下载的东西有点多,期间会看到connection denied之类的,可以多试几次):
./install-fabric.sh docker samples binary
可以在工作目录下看到刚下好的文件。
4. 使用Fabric Sample中的测试网络
通过使用测试网络来验证是否安装成功:
4.1 启动网络
测试网络有两个联盟成员,Org1和Org2。 该网络还包括一个维护网络排序服务的排序组织。
网络所在路径为:
为了确保测试网络正常运行,还需要安装一些必要的软件
安装jq:
sudo apt install jq
**安装go/java/javascript:**这取决于你想使用什么语言来进行开发。这里我们安装go。
sudo apt-get install golang
进入路径:
cd fabric-samples/test-network
启动网络:
./network.sh up
测试组成部分:
docker ps -a
你也可以在docker desktop中看到所有的docker容器。
4.2 创建一个通道
创建用于在Org1和Org2之间进行交易的Fabric通道。
**创建一个默认名称为“ mychannel”的通道。**执行成功,会显示
./network.sh createChannel
4.3 在通道启用一个链码
创建通道后,可以开始使用智能合约与通道账本交互。
使用以下命令在通道上启动链码:
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
如果第一次部署一套链码,脚本将安装链码的依赖项。使用语言便签
4.4 与网络交互
使用
将二进制文件添加环境变量:
export PATH=${PWD}/../bin:$PATH
将
export FABRIC_CFG_PATH=$PWD/../config/
设置环境变量,以允许作为Org1操作
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/[email protected]/msp export CORE_PEER_ADDRESS=localhost:7051
**初始化一些资产:**成功会输出:
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"InitLedger","Args":[]}'
现在可以用 CLI 工具来查询账本。以下指令获取添加到通道账本的资产列表:
peer chaincode query -C mychannel -n basic -c '{"Args":["GetAllAssets"]}'
**通过调用 asset-transfer (basic) 链码改变账本上的资产所有者:**需要使用
peer chaincode invoke -o localhost:7050 --ordererTLSHostnameOverride orderer.example.com --tls --cafile ${PWD}/organizations/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem -C mychannel -n basic --peerAddresses localhost:7051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses localhost:9051 --tlsRootCertFiles ${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"function":"TransferAsset","Args":["asset6","Christopher"]}'
4.5 关闭网络
关闭网路:
./network.sh down
上面的步骤都执行成功的话,说明Fabric使用起来大致没问题,安装成功了。