更新日期:2020.04.03
欢迎大家一起交流,觉得还可以的话,可以给我点个赞或者打赏一下,毕竟有博主辛苦踩坑和整理资料。
目录
零、HyperLedger Fabric 2.0 原版文档链接
一、环境搭建
1.1 安装软件列表
1.2 具体安装
二、Fabric-sample官方例子
2.1 下载Docker镜像和Fabric-sample相关的二进制文件
2.2 创建channel,org和peer
2.3 用Peer CLI去部署Fabcar chaincode到Channel
2.3.1 打包smart contract
遇到一些问题的解决办法:
附加:
(1)docker常用的命令
链接:Hyperledger Fabric 2.0
软件 | 版本号 |
vim | 8.0.1453 |
git | 2.17.1 |
curl |
7.58.0 |
wget | 1.19.4 |
pip | 9.0.1 |
golang | 1.14.1 |
nodejs | 8.10.0 |
npm | 3.5.2 |
docker-ce | 19.03.8 |
docker-compose | 1.17.1 |
(1)我使用的系统是Ubuntu 18.04 LTS,在Windows里使用VMware 15 Pro虚拟该系统。因为往后的开发很多需要Root权限,所以直接用Root登录就免去麻烦了。具体设置可以参考:Ubuntu18.04.1设置root用户登录图形界面
(2)vim,git,curl,wget,pip,nodejs,npm,分别安装。
apt-get update
apt-get install -y vim
apt-get install -y git
apt-get install -y curl
apt-get install -y pip
apt-get install -y wget
apt-get install -y nodejs
apt-get install -y npm
apt-get update
(3)Go
进入:https://golang.google.cn/dl/
下载linux版本:go1.14.1.linux-amd64.tar.gz(自行下载最新版本)
解压到/usr/local/目录中:
tar -xvf /root/Downloads/go1.14.1.linux-amd64.tar.gz -C /usr/local/
环境变量:
\\打开环境变量
vi ~/.bashrc
\\添加
export GOPATH=$HOME/go
export GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
\\保存退出后刷新
source ~/.bashrc
(4)docker
安装可参考链接:【Ubuntu18.04】安装Docker教程
apt-get update
apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
apt-get update
apt-get install docker-ce
(5)docker-compose
apt-get install docker-compose
我们首先跑通Fabric-sample,这是一个官方给的例子,跑通这个再了解其中的原理,接下来就可以开发自己的Fabric了。
开始我们首先下载 Fabric-sample源码。进入/home目录,并新建文件夹:go/src/github.com/hyperledger,把文件放在这里
mkdir -p /go/src/github.com/hyperledger
\\进入该文件夹执行:
git clone https://github.com/hyperledger/fabric-sample.git (耐心等待,最好FQ)
进入fabric-sample的文件夹里面,执行下载相关的Docker镜像和Fabric-sample相关的二进制文件
cd fabric-sample
curl -sSL https://bit.ly/2ysbOFE | bash -s (FQ吧,不FQ下载不到)
最后执行完毕会列出已经安装的Docker镜像:
(1)进入fabric-sample/test-network文件夹
(2)初始化,关闭所有的docker。作用就是关闭那些你不知道之前有没有关闭的docker container。
./network.sh down
(3)运行下面命令开始测试网络
./network.sh up createChannel
(4)知道看到下面logs的时候表示成功了
========= Channel successfully joined ===========
这个阶段做了几件事情:
1、创建一个Channel,并命名为mychannel
2、在这个Channel下加入两个组织Org1和Org2
3、每个组织都加入一个Peer
步骤如下:
1、打包smart contract
2、安装chaincode包
3、批准chaincode definition
4、把chaincode definition提交到channel
这个阶段操作根据你的chaincode用什么语言写来确定,Go,Java和JS。
本文用Go语言,而且在打包chaincode之前,我们需要先安装chaincode依赖。
(1)进入fabcar/go目录
cd fabric-samples/chaincode/fabcar/go
(2)这个例子用一个Go module来安装chaincode依赖。go.mod文件里列出了所需要的依赖。输入下面命令来查看:
cat go.mod
(3)环境变量两个path的添加
export FABRIC_CFG_PATH=$PWD/../config/
export CORE_PEER_MSPCONFIGPATH=${PWD}/organizations/peerOrganizations/org1.example.com/users/[email protected]/msp
(4)进入test-network目录,使用bin中的peer命令来打包smart contract(需要FQ)。
peer lifecycle chaincode package fabcar.tar.gz --path ../chaincode/fabcar/go/ --lang golang --label fabcar_1
(5)如果目录中出现fabcar.tar.gz的文件
每一个peer都要安装一次,不管哪个组织。
安装进Org1的peer
(1)环境变量修改
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
(2)安装命令
peer lifecycle chaincode install fabcar.tar.gz
安装进Org2的peer
(1)环境变量修改
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
(2)安装命令
peer lifecycle chaincode install fabcar.tar.gz
打包完之后需要批准Chaincode definition,它包括管理Chaincode用到的重要参数,例如name, version和chaincode endorsement policy.
(1)遇到curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to raw.githubusercontent.com:443 的问题时候,运行一下代码:
git config --global http.sslVerify false
(2)
1、MSP证书解释
admincerts:管理员证书,它比普通的peer0证书有一些特殊的权限,比如对节点的修改或者配置等操作
cacerts:里面放的是对这个peer0颁发证书的ca是谁,里面放的是ca的公钥
keystore:是peer0这个节点msp的自己的私钥
signcerts:里面放的是这个organization的ca(ca.org1.example.com-cert.pem)给peer0颁发的证书
tlscacerts:里面放的是对这个peer0办法TLS证书的ca是谁,里面放的是TLS ca的公钥
admincerts和signcerts都是签发之后的证书,只是他们的角色不同,admincerts对peer0有一些特殊的管理权限,但signcerts只是一个普通的certs
2、TLS证书解释
ca.crt:TLS安全认证过程的时候验证证书的ca
server.crt:节点本身的TLS证书
server.key:节点本身的TLS私钥
转载原文链接:https://blog.csdn.net/lisemi/article/details/94637264