Fabric v1.1
1).安装go 1.9.x
下载地址
http://golang.org/dl/
配置环境
#go的安装根目录
export GOROOT=/usr/local/go
#go的工作路径根目录
export GOPATH=/opt/goroot
2).安装docker 17.06.2-ce or greater
卸载原来的版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
安装依赖包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
设置稳定库
sudo yum-config-manager –add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装docker-ce
sudo yum install docker-ce
如果需要某个特定版本,安装如下:
列出所有可安装的版本
yum list docker-ce –showduplicates | sort -r
安装
sudo yum install docker-ce-
如需要安装 docker-ce-18.03.0.ce
sudo yum install docker-ce-18.03.0.ce
启动 docker
systemctl start docker
设置docker 开机自启
chkconfig docker on
启动docker,错误解决
docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since Wed 2018-07-18 04:12:40 EDT; 15s ago
Docs: https://docs.docker.com
Process: 7850 ExecStart=/usr/bin/dockerd (code=exited, status=1/FAILURE)
Main PID: 7850 (code=exited, status=1/FAILURE)
Jul 18 04:12:40 vmnode1 systemd[1]: Failed to start Docker Application Container Engine.
Jul 18 04:12:40 vmnode1 systemd[1]: Unit docker.service entered failed state.
Jul 18 04:12:40 vmnode1 systemd[1]: docker.service failed.
Jul 18 04:12:40 vmnode1 systemd[1]: docker.service holdoff time over, scheduling restart.
Jul 18 04:12:40 vmnode1 systemd[1]: start request repeated too quickly for docker.service
Jul 18 04:12:40 vmnode1 systemd[1]: Failed to start Docker Application Container Engine.
Jul 18 04:12:40 vmnode1 systemd[1]: Unit docker.service entered failed state.
Jul 18 04:12:40 vmnode1 systemd[1]: docker.service failed.
解决方法
# vim /etc/docker/daemon.json
{
“graph”: “/mnt/docker-data”,
“storage-driver”: “overlay”
}
systemctl restart docker
3).安装docker-compose
curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-
uname -s
-uname -m
> >/usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composecp /usr/local/bin/docker-compose /usr/bin
1).下载Fabric源码 v1.1
mkdir -p /opt/goroot/github.com/hyperledger/
cd /opt/goroot/github.com/hyperledger/
git clone http://github.com/hyperledger/fabric
#切换分支到1.1版本
git checkout -b v1.1
2).下载相应的二进制文件和镜像文件
cd scripts
修改bootstrap如下:
export VERSION=${1:-1.1.0}
export THIRDPARTY_IMAGE_VERSION=1.1.0
执行bootstrap.sh
./bootstrap.sh
执行这步得到以下镜像
REPOSITORY TAG
hyperledger/fabric-ca latest
hyperledger/fabric-ca x86_64-1.1.0
hyperledger/fabric-tools latest
hyperledger/fabric-tools x86_64-1.1.0
hyperledger/fabric-orderer latest
hyperledger/fabric-orderer x86_64-1.1.0
hyperledger/fabric-peer latest
hyperledger/fabric-peer x86_64-1.1.0
hyperledger/fabric-javaenv latest
hyperledger/fabric-javaenv x86_64-1.1.0
hyperledger/fabric-ccenv latest
hyperledger/fabric-ccenv x86_64-1.1.0
hyperledger/fabric-zookeeper latest
hyperledger/fabric-kafka latest
hyperledger/fabric-couchdb latest
并且在当前目前下会得到/bin文件下
configtxgen configtxlator cryptogen fabric-ca-client get-byfn.sh get-docker-images.sh orderer peer
cd examples/e2e_cli
修改base下的peer-base.yaml
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_defaultbash network_setup.sh up
编写crypto-config.yaml
利用cryptogen工具生成
cryptogen generate –config=./crypto-config.yaml –output ./crypto-config
首先为configtxgen工具指定configtx.yaml文件的路径
configtxgen -profile OrgsOrdererGenesis -outputBlock ./orderer.genesis.block
configtx.yaml配置
TwoOrgsOrdererGenesis可以用来生成Ordering服务的初始区块文件
TwoOrgsChannel模板,来生成新建通道的配置交易文件
CHANNEL_NAME=mytestchannel
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./mytestchannel.tx
tx -channelID ${CHANNEL_NAME}
configtxgen -profile OrgsChannel -outputAnchorPeersUpdate >./channel_files/Org1MSPanchors.tx >-channelID CHANNELNAME−asOrgOrg1MSPconfigtxgen−profileOrgsChannel−outputAnchorPeersUpdate>./channelfiles/Org2MSPanchors.tx>−channelID C H A N N E L N A M E − a s O r g O r g 1 M S P c o n f i g t x g e n − p r o f i l e O r g s C h a n n e l − o u t p u t A n c h o r P e e r s U p d a t e > . / c h a n n e l f i l e s / O r g 2 M S P a n c h o r s . t x > − c h a n n e l I D {CHANNEL_NAME} -asOrg Org2MSP
检查启动节点的所有配置是否就绪:
在/etc/hyperledger/fabric路径下放置有编写好的orderer.yaml(可以参考sampleconfig/orderer.yaml)
在/etc/hyperledger/fabric路径下放置生成的msp文件目录、tls文件目录; *
在/etc/hyperledger/fabric路径下放置初始区块文件orderer.genesis.block。
检查启动所有Peer节点的所有配置是否就绪:
在/etc/hyperledger/fabric路径下放置有对应编写好的core.yaml(可以参sampleconfig/core.yaml);
在/etc/hyperledger/fabric路径下放置生成的对应msp文件目录、tls文件目录。
组织管理员身份可以创建应用通道
在客户端使用Org1的管理员身份来创建新的应用通道,需要指定msp的ID信息、msp文件所在路径、Orderering服务的tls证书位置,以及网络中Ordering服务地址、应用通道名称和交易文件。
应用通道所包含组织的成员节点可以加入通道中。
在客户端使用管理员身份将peer节点加入到通道中,需要指定所操作的Peer地址,以及通道的初始块.
在客户端使用了Org1的管理员身份来更新锚节点配置,需要指定msp的ID信息、msp文件所在路径、Ordering服务地址、所操作的应用通道、锚节点配置更新文件,以及Orderering服务tls证书位置.
链码在调用之前,必须先经过安装(Install)和实例化(Instantiate)两个步骤,部署到Peer节点上。