在windows上部署hyperledgerFabric超级账本(使用WSL而非虚拟机)
在 17063 之前,WSL 只能访问 Windows 环境变量 PATH。17063 之后,WSL 和 Windows 共享一个特殊环境变量WSLENV(为了桥接 Windows 和 WSL 上运行的 Linux 分发版而创建),相关链接。WSL 可以使用直接从 WSL 命令行运行 Windows 工具。Windows 工具必须包含文件扩展名,匹配文件大小写,并且可执行。比如你可以使用windo
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 --install
命令安装的 Linux 默认设置为 WSL 2。
如果出现报错:‘‘wsl: 检测到 localhost 代理配置,但未镜像到 WSL。NAT 模式下的 WSL 不支持 localhost 代理。’’
在Windows中的C:\Users\<your_username>目录下创建一个.wslconfig文件,然后在文件中写入如下内容
[experimental]
autoMemoryReclaim=gradual
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
然后在windows的命令行中用wsl --shutdown
关闭WSL,之后再重新打开WSL,提示就消失了。
1.3 WSL相关介绍
在 17063 之前,WSL 只能访问 Windows 环境变量 PATH。 17063 之后,WSL 和 Windows 共享一个特殊环境变量 WSLENV
(为了桥接 Windows 和 WSL 上运行的 Linux 分发版而创建),相关链接。
WSL 可以使用 [tool-name].exe
直接从 WSL 命令行运行 Windows 工具。Windows 工具必须包含文件扩展名,匹配文件大小写,并且可执行。比如你可以使用windows中的记事本来编辑WSL中的一个文本文件。
若要在 Windows 文件资源管理器中打开 WSL 项目,请输入:(注意末尾有句点)
explorer.exe .
或者直接打开文件浏览器,你会发现多了一个Linux选项,直接点击也行。
2. 配置Docker Desktop
打开Docker Desktop然后点击设置,选择 Resources
再选择 WSL Integration
,确保 enable integration 选项被打开。然后选择你的WSL2 Linux 发行版。(如果你没看到的话,说明你的是WSL1,应该升级为WSL2),点击 Apply & Restart 。
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>
获取安装脚本install-fabric.sh
:
curl -sSLO https://raw.githubusercontent.com/hyperledger/fabric/main/scripts/install-fabric.sh && chmod +x install-fabric.sh
用-h
选项来运行刚刚下载的安装脚本,可以看到一些信息。比如fabric和fabric-ca的版本。
./install-fabric.sh -h
获取 Docker 容器并克隆Samples仓库(这个过程会比较久,要下载的东西有点多,期间会看到connection denied之类的,可以多试几次):
./install-fabric.sh docker samples binary
可以在工作目录下看到刚下好的文件。
4. 使用Fabric Sample中的测试网络
通过使用测试网络来验证是否安装成功:
4.1 启动网络
测试网络有两个联盟成员,Org1和Org2。 该网络还包括一个维护网络排序服务的排序组织。
网络所在路径为:/fabric-samples/test-network
为了确保测试网络正常运行,还需要安装一些必要的软件
安装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”的通道。**执行成功,会显示Channel 'mychannel' joined
。
./network.sh createChannel
4.3 在通道启用一个链码
创建通道后,可以开始使用智能合约与通道账本交互。
使用以下命令在通道上启动链码:
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
如果第一次部署一套链码,脚本将安装链码的依赖项。使用语言便签 -ccl
,用于指定安装go、 Java 或 javascript 版本的链码依赖,默认安装的是go的链码。
4.4 与网络交互
使用peer
CLI与网络进行交互。 peer
CLI允许调用已部署的智能合约,更新通道,或安装和部署新的智能合约。
将二进制文件添加环境变量:
export PATH=${PWD}/../bin:$PATH
将fabric-samples
代码库中的FABRIC_CFG_PATH
设置为指向其中的core.yaml
文件:
export FABRIC_CFG_PATH=$PWD/../config/
设置环境变量,以允许作为Org1操作peer
CLI:
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=localhost:7051
**初始化一些资产:**成功会输出:Chaincode invoke successful. result: status:200
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) 链码改变账本上的资产所有者:**需要使用 --peerAddresses
标签来指向 peer0.org1.example.com
和 peer0.org2.example.com
。因为网络的 TLS 被开启,指令也需要用 --tlsRootCertFiles
标签指向每个 peer 节点的 TLS 证书。
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使用起来大致没问题,安装成功了。
更多推荐
所有评论(0)