前期准备
1. 安装curl、git、wget
sudo yum -y install curl
sudo yum -y install git
sudo yum -y install wget
2. go环境搭建
官方Demo默认使用Go语言,语言可以更改成Java,在下文会写。依赖Go语言环境,运行项目。
cd /home
mkdir app
cd app
wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz
tar -C /usr/local -zxf go1.14.2.linux-amd64.tar.gz
#配置环境变量
vim /etc/profile
#复制一下代码到profile末尾
#go
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
#使配置生效
source /etc/profile
#查看版本
go version
3. java 环境搭建
在配置之前,最好先去官网下载jdk1.8xx.tar.gz包,然后导入到系统中,解压并安装配置。因为官网需要账户登陆才可以下载,为了方便我已经将已经下好的包上传百度云,永久有效。
https://pan.baidu.com/s/1OIMbuq35W9yjYBe6HPnttQ 提取码:1111
注意:如果使用 yum install openjdk得话,下载的jdk会缺失tool.jar这类编辑工具包,在运行Demo时候会报错:
Could not find tools.jar. Please check that /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.272.b10-1.el7_9.x86_64/jre contains a valid JDK installation.
cd /home
rz #选择要上传的包
tar -zxvf xxx.tar.gz
mv xxx /usr/ #此处,我是将解压的jdk文件,移动到usr文件下,方便管理,可选配置
vim /etc/profile
#在末尾处,添加jdk环境配置
export JAVA_HOME=/usr/java8 #此处jdk配置不在过多叙述
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
#使配置生效
source /etc/profile
#查看版本
java -version
4. maven环境搭建
#下载maven压缩包
wget https://archive.apache.org/dist/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz
#创建安装目录
mkdir /usr/local/maven/
#解压至安装目录
tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local/maven/
#设置环境变量,打开文件
vim /etc/profile
#在末尾添加
export MAVEN_HOME=/usr/local/maven/apache-maven-3.5.4
export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
#使环境变量生效
source /etc/profile
#检查
mvn --version
5. docker环境搭建
#安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
#设置稳定的仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#安装 Docker Engine-Community
yum install docker-ce docker-ce-cli containerd.io
#启动Docker
systemctl start docker
#查看Docker版本
docker version
#设置加速镜像(阿里) 在/etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{
"registry-mirrors": ["https://svaken38.mirror.aliyuncs.com"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
6. docker-compose 环境搭建
#下载解压
curl -L https://github.com/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
赋予权限
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose version
环境搭建
1. 从git上下载源码
git clone https://github.com/hyperledger/fabric.git
当然也可以从码云上克隆,本文我是根据官方文档进行Demo搭建,所以就使用git。
2. 下载fabric samples
cd fabric/scripts
./bootstrap.sh #此处会 clone fabric-samples; 下载 依赖的images; 下载bin
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YQNcyF73-1607409993564)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201208141623238.png)]
3. 进行测试
一般情况下,经过步骤2之后,会在script文件下生成fabric-samples文件
cd fabric-samples/test-network
./network.sh up #启动网络
./network.sh down #关闭网络
./network.sh createChannel #创建通道
./network.sh deployCC #部署订单服务连接链码
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cmaTPt61-1607409993570)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20201208141915325.png)]
但是在运行deployCC时会报错,说找不到fabcar链码,此处官方文档有错误,
#在test-network下
./network.sh down
#进入到fabric-samples 下fabcar文件下
./startFabric.sh #进行初始化
#回到test-network文件下,再控制台直接输入
export PATH=${PWD}/../bin:$PATH
export FABRIC_CFG_PATH=$PWD/../config/
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
运行完上面的就可以使用fabric的命令了,查询账本
peer chaincode -C mychannel -n fabcar -c '{"Args":["queryAllCars"]}'
更新账本属性值:
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 fabcar --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":"changeCarOwner","Args":["CAR9","Dave"]}'
总结
本文是最近公司要求研究区块链,我开始搭建的环境,参考了几位博主的文章,再加上自己实际搭建的经验总结,希望勿喷,再开发的道路上越走越远。
fabric 2.2 安装、测试、以及修改链码
Fabric(二)部署Fabric2.2.0
centos7下安装fabric2.2