Ubuntu 22.04 (其他版本不知道有没有)可以自动为你选择一个最好的镜像源,这样不用挂加速去,也可以解决下载过程中下载失败的问题。(当然还是用加速器会快得多就是了)
在终端中输入如下指令:
sudo apt-get install git
在终端中输入如下指令:
sudo apt-get install curl
在终端中输入如下指令:
sudo apt-get -y install docker-compose
可输入以下指令查看docker和docker-compose版本:
$ docker --version
Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1
$ docker-compose --version
docker-compose version 1.29.2, build unknown
启动docker服务:
sudo systemctl start docker
将你的用户添加到docker用户组中:
sudo usermod -a -G docker
可选项:可使用以下指令使系统开机时自动开启docker服务:
sudo systemctl enable docker
在终端中输入如下指令:
sudo apt install golang-go
在终端中输入如下指令:
sudo apt install jq
创建一个工作区。对于Go项目,推荐以下的工作路径。
mkdir -p $HOME/go/src/github.com/
进入该路径。
cd $HOME/go/src/github.com/
获取安装脚本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仓库(这个过程会比较久,要下载的东西有点多):
sudo ./install-fabric.sh docker samples binary
可以在工作目录下看到刚下好的文件。
通过使用测试网络来验证是否安装成功:
测试网络有两个联盟成员,Org1和Org2。 该网络还包括一个维护网络排序服务的排序组织。
网络所在路径为:/fabric-samples/test-network
进入路径:
cd fabric-samples/test-network
启动网络:
./network.sh up
测试组成部分:
docker ps -a
创建用于在Org1和Org2之间进行交易的Fabric通道。
**创建一个默认名称为“ mychannel”的通道。**执行成功,会显示Channel 'mychannel' joined
。
./network.sh createChannel
或者创建一个名为channel1的通道:
./network.sh createChannel -c channel1
创建通道后,可以开始使用智能合约与通道账本交互。
使用以下命令在通道上启动链码:
./network.sh deployCC -ccn basic -ccp ../asset-transfer-basic/chaincode-go -ccl go
如果第一次部署一套链码,脚本将安装链码的依赖项。可以使用语言便签 -ccl
,用于安装 Java 或 javascript 版本的链码,默认安装的是go的链码。 可以在 fabric-samples
目录的 asset-transfer-basic
文件夹中找到 asset-transfer (basic) 链码。
使用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/[email protected]/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"]}'
设置环境变量以操纵Org2:
export CORE_PEER_TLS_ENABLED=true
export CORE_PEER_LOCALMSPID="Org2MSP"
export CORE_PEER_TLS_ROOTCERT_FILE=${PWD}/organizations/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org2.example.com/users/[email protected]/msp
export CORE_PEER_ADDRESS=localhost:9051
关闭网路:
./network.sh down