在Ubuntu下安装Hyperledger fabric

在Ubuntu下安装Hyperledger fabric

0. 选择镜像源

Ubuntu 22.04 (其他版本不知道有没有)可以自动为你选择一个最好的镜像源,这样不用挂加速去,也可以解决下载过程中下载失败的问题。(当然还是用加速器会快得多就是了)

1. 安装前置应用

1.1 安装GIT

在终端中输入如下指令:

sudo apt-get install git

1.2 安装cURL

在终端中输入如下指令:

sudo apt-get install curl

1.3 安装Docker和Docker-Compose

在终端中输入如下指令:

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

1.4 安装Go

在终端中输入如下指令:

sudo apt  install golang-go

1.5 安装JQ

在终端中输入如下指令:

sudo apt  install jq 

2. 安装Fabric和Fabric Samples

创建一个工作区。对于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

在Ubuntu下安装Hyperledger fabric_第1张图片

获取 Docker 容器并克隆Samples仓库(这个过程会比较久,要下载的东西有点多):

sudo ./install-fabric.sh docker samples binary

可以在工作目录下看到刚下好的文件。

在Ubuntu下安装Hyperledger fabric_第2张图片

在Ubuntu下安装Hyperledger fabric_第3张图片

3. 使用Fabric Sample中的测试网络

通过使用测试网络来验证是否安装成功:

3.1 启动网络

测试网络有两个联盟成员,Org1和Org2。 该网络还包括一个维护网络排序服务的排序组织。

网络所在路径为:/fabric-samples/test-network

进入路径

cd fabric-samples/test-network

启动网络:

./network.sh up

在Ubuntu下安装Hyperledger fabric_第4张图片

测试组成部分:

docker ps -a

在Ubuntu下安装Hyperledger fabric_第5张图片

3.2 创建一个通道

创建用于在Org1和Org2之间进行交易的Fabric通道。

**创建一个默认名称为“ mychannel”的通道。**执行成功,会显示Channel 'mychannel' joined

./network.sh createChannel

在这里插入图片描述

或者创建一个名为channel1的通道:

./network.sh createChannel -c channel1

3.3 在通道启用一个链码

创建通道后,可以开始使用智能合约与通道账本交互。

使用以下命令在通道上启动链码

./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) 链码。

在Ubuntu下安装Hyperledger fabric_第6张图片

3.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/[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.compeer0.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

3.5 关闭网络

关闭网路:

./network.sh down

在Ubuntu下安装Hyperledger fabric_第7张图片

你可能感兴趣的:(ubuntu,fabric,linux)