区块链部署之 Fabric1.0.5单机部署(金链团队实操成果)

2018-06-07 05:06:42


第一章、 前言

1. 目的

    主旨为了指引读者简单快速地构建fabric区块链网络,适合初步了解fabric的小伙伴使用,本文主要从环境要求、所依赖软件及fabric网络搭建、维护等方面描述。

2. 概述

  1.  fabric区块链:本文所描述的fabric区块链部署仅适用单机部署,规划1orderer节点 + 4peer节点,orderer节点采用solo排序规则,批处理等待时间2秒,最大批处理数1个(避免同时处理一个ID多笔交易问题);
  2.  fabric部署文档:以fabric1.0.5源码例子examples中的e2e_cli为基础,并集合了预先编译的configtxgenconfigtxlatorcryptogen三个工具,在修改部署命令中依赖于源码目录的部分命令,形成单独完整的部署文档;
  3.  docker镜像:使用国内docker镜像加速服务(daocloud)下载fabric1.0.5版本镜像,自定义命令一键pull所有单机部署需要的镜像;
  4.  fabric命令:优化network_setup.sh命令中updown的逻辑,提供fabric.sh命令操作fabric网络的启动和停止,解决重启fabric会丢失区块的问题;
  5.  部署文档下载地址:链接: https://pan.baidu.com/s/1dzF5gTgpMnqbglQIimGN3A 密码: 7tv3

 

第二章、 环境准备

1. 环境要求

1.1. 操作系统

  • 内核要求:3.10.0-693.17.1.el7.x86_64及以上
  •  查看内核版本uname -r

  • 推荐系统:CentOS 7及以上、Ubuntu16.04LTS及以上,本文使用CentOS 7系统
  • 查看版本cat /etc/os-release

 

1.2. 软件版本

  • docker版本:13.01.0以上;
  • 查看版本命令:docker -v

  • docker-compose版本:1.8.0以上;
  • 查看版本命令:docker-compose -v

  • fabric版本:x86_64-1.0.5
  • 查看版本命令:docker images | grep x86_64-1.0.5

 

2. 软件安装

2.1. 系统安装

2.1.1. 安装CentOS 7

  • ¬ 服务器安装:https://www.cnblogs.com/Yiutto/p/5958301.html
  • ¬ 虚拟机安装:https://jingyan.baidu.com/article/3065b3b6a00892becef8a467.html

 

2.1.2. ssh远程

  • ¬ 获取ip命令:ip a | grep 255

  • ¬ 确认ssh服务:netstat -plnt | grep sshd

 

2.1.3. 客户端

  • ¬ 打开SecureCRT.exe远程工具(如没有该工具请安装),右键新建会话:

  • ¬ 选择SSH2,点击下一步:

  • ¬ 填写ip2.1.2中获取的ip)和用户(root),点击下一步:

  • ¬ 点击完成

  • ¬ 双击建立会话:

  • ¬ 输入密码点击OK登录(可勾选保存密码):

  • ¬ 成功ssh登录:

 

2.1.4. 上传下载

2.1.4.1. 命令安装
  • ¬ 安装:yum install lrzsz –y

  • ¬ 完成安装:

 

2.1.4.2. 上传
  • ¬ 输入命令rz回车,弹出文件浏览框:

  • ¬ 选择文件,点击OK进行上传:

  • ¬ 上传过程中:

  • ¬ 完成上传:

  • ¬ 查看已上传文件

 

2.1.4.3. 下载
  • ¬ 输入命令sz 文件名称 回车,如:sz go1.10.1.linux-amd64.tar.gz

  • ¬ 完成下载:

  • ¬ 查看下载保存目录:
  • ν 右键菜单Properties,在弹框中点击X/Y/Zmodem

  • ν Download目录:

  • ¬ 查看下载的文件:

 

2.2. docker安装

2.2.1. 快速安装

  • ¬ 命令:curl -sSL https://get.daocloud.io/docker | sh
  • ν 过程:更新镜像源

  • ν 建立元数据缓存

  • ν 安装docker-ce

  • ν 查看安装版本:docker -v

 

2.2.2. 添加镜像加速器

  • ¬ 命令:

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://860eaa91.m.daocloud.io

 

2.2.3. 启动docker服务

  • ¬ 命令:service docker start

  • ¬ 查看docker状态:docker info

 

2.2.4. 开机自启动

  • ¬ 命令:systemctl enable docker

  • ¬ 确认是否生效:systemctl is-enabled docker

 

2.3. docker-compose安装

2.3.1. 安装依赖

  • ¬ 命令:yum -y install epel-release python-pip

  • ¬ 完成

 

2.3.2. 下载安装

  • ¬ 命令:

curl -L https://github.com/docker/compose/releases/download/1.17.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

  • ν 下载:

  • ν 完成安装:

  • ¬ 赋予权限命令:chmod +x /usr/local/bin/docker-compose

 

2.3.3. 查看版本

  • ¬ 命令:docker-compose -v

 

第三章、 Fabric部署

1. 下载部署文档

1.1. 网盘

  • ¬ 浏览器直接访问下载,不过多描述:

链接: https://pan.baidu.com/s/1dzF5gTgpMnqbglQIimGN3A 密码: 7tv3

 

1.2. 上传

  • ¬ 创建目录,命令:mkdir -p /home/blockchain

  • ¬ 进入目录:cd /home/blockchain

  • ¬ 上传:rz回车,选择文件点击OK

  • ¬ 完成上传

  • ¬ 查看

 

1.3. 解压

  • ¬ 安装命令:yum install unzip -y

  • ¬ 完成

  • ¬ 解压:unzip fabric_1.0.5_solo.zip

  • ¬ 查看:

  • ¬ 进入部署目录:cd fabric_1.0.5_solo

  • ¬ 查看部署文件:

  • ¬ 赋予权限:chmod +x bin/* scripts/*

 

2. 下载镜像

2.1. 下载

  • ¬ 命令:./bin/download-dockerimages.sh 1.0.5

  • ¬ 下载过程:

  • ¬ 完成镜像pull

 

2.2. 查看镜像

  • ¬ 命令:docker images

 

3. 生成证书

3.1. 生成证书

  • ¬ 命令:./bin/generateCerts.sh

 

3.2. 查看证书

  • ¬ 命令:ll crypto-config

 

4. 创世区块

4.1. 清空目录

  • ¬ 命令:rm -rf channel-artifacts/*

  • ¬ 查看:ll channel-artifacts/

 

4.2. 生成区块文件

  • ¬ 命令:./bin/generateArtifacts.sh mychannel

 

4.3. 查看文件

  • ¬ 命令:ll channel-artifacts

 

5. 部署fabric

5.1. 部署节点

  • ¬ 命令:./bin/network_setup.sh up mychannel 3

 

5.2. 查看节点

  • ¬ 命令:docker ps -a

 

5.3. 部署区块链网络

  • ¬ 命令:docker exec cli bash -c ‘./scripts/script.sh mychannel’ && docker logs -f cli

  • ¬ 启动成功:

 

5.4. 查看节点

  • ¬ 命令:docker ps -a

 

5.5. 停止

  • ¬ 命令:./scripts/fabric.sh stop

  • ¬ 查看:docker ps -a

 

5.6. 启动

  • ¬ 命令:./scripts/fabric.sh start

 

6. 交易及查询

6.1. 确认账户资产

6.1.1. 进入cli

  • ¬ 命令:docker exec -it cli bash

 

6.1.2. 查询A账户

  • ¬ 命令:peer chaincode query -C mychannel  -n mycc -c ‘{“Args”:[“query”,”a”]}’

结果A账户资产为90

 

6.1.3. 查询B账户

  • ¬ 命令:peer chaincode query -C mychannel  -n mycc -c ‘{“Args”:[“query”,”b”]}’

结果B账户资产为210

 

6.2. A交易10B

6.2.1. 执行交易

  • ¬ 命令:peer chaincode invoke -o orderer.example.com:7050 –tls $CORE_PEER_TLS_ENABLED –cafile $ORDERER_CA -C mychannel -n mycc -c ‘{“Args”:[“invoke”,”a”,”b”,”10″]}’

 

6.2.2. 查询A账户

  • ¬ 命令:peer chaincode query -C mychannel  -n mycc -c ‘{“Args”:[“query”,”a”]}’

结果A账户资产为8090-10=80

 

6.3. B交易100A

6.3.1. 执行交易

  • ¬ 命令:peer chaincode invoke -o orderer.example.com:7050 –tls $CORE_PEER_TLS_ENABLED –cafile $ORDERER_CA -C mychannel -n mycc -c ‘{“Args”:[“invoke”,”b”,”a”,”100″]}’

 

6.3.2. 查询B账户

  • ¬ 命令:peer chaincode query -C mychannel  -n mycc -c ‘{“Args”:[“query”,”b”]}’

结果B账户资产为120210+10-100=120

 

7. 卸载fabric

7.1. 卸载

  • ¬ 命令:./bin/network_setup.sh down

 

7.2. 查看

  • ¬ 命令:docker ps –a

 

在线咨询
QQ咨询
邮件咨询
微信咨询
扫一扫,微信聊