从0开始安装了一次,目前v2.1.0网上教程较少,踩了一些坑,分享&记录以便以后翻阅,有帮助的话请点赞。
本文包含:
1. hyper-v Ubuntu 20.04 虚拟机创建
2. Ubuntu 20.04 + Hyperledger Fabric(超级账本)2.1.0部署
3. 测试网络与部署链码
正文开始:
hyper-v安装ubuntu虚拟机方法见如下教程,非常详细,
https://www.linuxidc.com/Linux/2016-04/129750.htm
ubuntu 20.04下载地址:https://linux.cn/article-12146-1.html
建议下载Ubuntu 20.04 LTS (Torrent)然后用迅雷下载,不然会慢到崩溃。
前半部分和这个外网教程一样:
Install Hyperledger Fabric in Ubuntu 20.04 LTS (https://medium.com/@bibek.poudel/install-hyperledger-fabric-in-ubuntu-20-04-lts-665482204b0d)
后半部分参考官方教程:
https://hyperledger-fabric.readthedocs.io/en/release-2.1/install.html
$sudo adduser newuser //create
$sudo usermod -aG sudo newuser //add to sudo group
$su - newuser //switch to newuser
1. Git, cURL, docker, docker-compose, Node.js , NPM & Python
$sudo apt-get update
$sudo apt-get install git curl docker.io docker-compose nodejs npm python
2. 配置docker
$sudo usermod -a -G docker $USER
$sudo systemctl start docker
$sudo systemctl enable docker
3. 下载配置Golang
建议版本1.14.4
$wget https://dl.google.com/go/go1.13.6.linux-amd64.tar.gz
$tar -xzvf go1.13.6.linux-amd64.tar.gz
$sudo mv go/ /usr/local
$cd ~
$mkdir go
//open .bashrc
$pico ~/.bashrc
//末尾添加
$export GOROOT=/usr/local/go
$export GOPATH= /home/bibek/go
$export PATH=$PATH:$GOROOT/bin
$export PATH=$PATH:$GOPATH/bin
//保存退出
如果Golang版本不对,可以按照以下教程卸载重装:
https://studygolang.com/articles/14812
注销账户重新登入
$exit
$su - bibek
4. 下载 Hyperledger Fabric Binaries, Docker Containers & Samples
建议先新建一个文件夹,在文件夹里操作,方面管理。
(1)网络内外畅通,按照官方教程:
$curl -sSL http://bit.ly/2ysbOFE | bash -s 2.1.0 //2.1.0是版本号,可以修改
有说这个连接已经失效,具体是否能成功要看运气。
若报错,http://bit.ly/2ysbOFE 替换为 https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh
(2)网络不畅通,修改hosts:
个人尝试(1)失败,报错curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused,说明这两个网站都被ban了,替换方法是修改hosts:
$sudo gedit /etc/hosts
//文件中最后一行添加:
//199.232.4.133 raw.githubusercontent.com
教程:https://www.ioiox.com/archives/62.html
然后回到(1)
$curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh | bash -s 2.1.0 //2.1.0是版本号,可以修改
等待一夜就下载完了(非常慢,建议晚上进行)
下载完后,会看到fabric-samples文件夹,组织结构如下,其中first-network和test-network都是测试网络,但是1.4.x用first-network,2.1.x用test-network,千万不要搞错。
进入bin,组织结构如下:
把bin加入PATH:
$export PATH=/bin:$PATH //bin的路径
测试,输入 $orderer version,若出现Fabric版本号则安装成功。
这里按照官方教程测试,2.1.0的所有操作注意务必在“test-network”中进行。
官方教程:https://hyperledger-fabric.readthedocs.io/en/release-2.1/test_network.html
$cd fabric-samples/test-network
$./network.sh down //关闭历史网络
$./network.sh up //开启新的网络
若启动成功则看到如下界面:
$docker ps -a //查看docker内容(可略过):
$./network.sh createChannel -c channelname //创建channel(通道)
若成功则看到如下界面:
$./network.sh deployCC //部署chaincode(链码)
//默认部署在默认的mychannle上
//创建mychannle:$./network.sh createChannel
若成功则看到如下界面:
用peer客户端与链码交互
// 添加环境变量
$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 query -C mychannel -n fabcar -c '{"Args":["queryCar","CAR9"]}'
$peer chaincode query -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'
测试完毕,关闭网络(关闭之后链的历史记录会被清除,如果需要在同一条链上操作请查询超级账本持久化教程)
$./network.sh down //关闭历史网络
END