区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础

解读区块链,区块链框架分析+超级账本(Hyperledger Fabric)基础
写了几篇区块链基础知识点的文章,自己也在尝试搭建环境,本人不是区块链从业者、区块链技术只是出于个人兴趣,现在开始文章分两部分,一部分继续区块链概念的解读,另一部分记录自己实践操作。
区块链框架:
目前对区块链的框架有很多不同的认识,比较得到共识的一般有四层或者五层架构。
五层架构:
区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础_第1张图片
来源于:http://blog.csdn.net/sportshark/article/details/53364690
应用层:主要客户端完成记账转账验证的功能。
激励层:这一层个人感觉完全是为比特币的挖矿定义的,块的生产有一定的奖励,也就是数字货币发行方式,另外区块链中环境中也认为是一种交易费,类似ETH中的GAS。
共识层:这一层主要为了保证分布式系统的一致性,保证网络中即使有恶意节点也能达成共识,同时避免“双花”问题和保证区块生成时间。
网络层:P2P网络点对点技术,这个不是个新鲜事物,很多年前的BT电影下载就是用的这个技术。
数据层:这一层包含了区块数据、链结构、数字签名、哈希函数、merkle树等一系列加密和存储技术。

四层架构中有两种定义:
四层架构一:
区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础_第2张图片
来源于:http://www.8btc.com/ebook-blockchain
作者是定义为三层架构,协议层、扩展层、应用层。然后协议层再分为存储层和网络层,我这里简单就把归纳为四层。
协议层:最底层技术理解为底层操作系统、技术归纳在一个层中,包含了网络和存储的,大致主要有P2P网络、网络编程、分布式算法、加密签名、数据存储。
扩展层:这一层理解为操作系统中的驱动,包换一些智能合约、侧链,图片、文档等、主要区块链产品开发在依托协议层在扩展层具体实现。
应用层:这个和上面的五层中的应用层定义类似。
还有一种四层架构,比较官方,软件工程与评估中心出的《区块链 参考架构》
原文:http://www.cesi.cn/201705/2478.html
里面定义了“四横四纵”的层级结构(包括用户层、服务层、核心层、基础层,以及包含开发、运营、安全、审计和监管的跨层功能)描述了区块链系统的典型功能组件。
区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础_第3张图片
笔者个人认为区块链的架构从初学者来看,其实可以简化五层架构,就分为应用层、共识层、网络层、数据层。
应用层:各种业务是操作,包括智能合同,数字货币以及将来的各行业的应用。
共识层:区块链中是分布式系统,共识机制尤为重要,这一层POW、RAFT、POS、CASPER、DPOS等共识机制。
网络层:网络编程、P2P网络传输、数据的验证。
数据层:区块数据、链结构、数字签名、哈希函数、merkle树等一系列加密和存储技术。

超级账本(Hyperledger Fabric)基础
其实写这一块笔者很忐忑,怕有太多理解不到位的东西,首先从搭建Hyperledger Fabric开发环境开始吧,稍后对系统历史和整体架构再作说明。
笔者笔者环境为vmware workstation+redhat7.2 +fabric版本1.0
更新操作系统 yum update
安装docker(docker是个好东西,因为学习区块链接触到docker,接下来准备好好看下docker相关内容。可以的话也会写一些关于docker的东西分享交流)
Docker:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 是 PaaS 提供商 dotCloud 开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于go语言并遵从Apache2.0协议开源。
因为只是搭建环境,故笔者用root用户作为了操作用户。

curl -sSL https://get.daocloud.io/docker | sh 获取docker

安装完成后查看版本:docker version
区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础_第4张图片
接下来安装docker-compose
介绍:先简单理解 docker 的使用过程,它分为镜像构建与容器启动。
镜像构建:即创建一个镜像,它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 dockerfile 来完成的。
容器启动:容器最终运行起来是通过拉取构建好的镜像,通过一系列运行指令(如端口映射、外部数据挂载、环境变量等)来启动服务的。针对单个容器,这可以通过 docker run 来运行。
而如果涉及多个容器的运行(如服务编排)就可以通过 docker-compose 来实现,它可以轻松的将多个容器作为 service 来运行(当然也可仅运行其中的某个),并且提供了 scale (服务扩容) 的功能。
简单总结:
dockerfile: 构建镜像;
docker run: 启动容器;
docker-compose: 启动服务
安装docker-compose前准备:
安装python-pip(pip是一个安装和管理 Python 包的工具)
安装epel扩展源(epel源比官方的源软件更丰富,比源码编译安装简单方便,适合于redhat、centos系统)

sudo yum -y install epel-release

安装python-pip

sudo yum -y install python-pip

安装完成后,清除cache

sudo yum clean all

安装docker-compose并添加执行权限

curl -L https://get.daocloud.io/docker/compose/releases/download/1.9.0/docker-compose-uname -s-uname -m > /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

安装完成后查看版本信息:#docker-compose -v
如果出现权限不对:docker-compose用到了docker,docker的操作需要sudo权限,把docker加入用户组

sudo groupadd docker

sudo usermod -aG docker $USER

这里写图片描述
下载一个compose模板

git clone https://github.com/yeasy/docker-compose-files

安装GO环境

curl -0 https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz

解压到/usr/local #tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz
配置环境变量 /etc/profile

根目录 export GOROOT=/usr/local/go

bin目录 export GOBIN=GOROOT/bin #工作目录 export GOPATH=/home/go PATH=PATH:GOPATH:GOBIN:$GOPATH

查看go版本和env信息:
区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础_第5张图片

拉取Fabric源码:
git clone https://github.com/hyperledger/fabric.git
区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础_第6张图片
cd $GOPATH/src/github.com/hyperledger/fabric
make configtxgen

如果出错:’ltdl.h’ file not found

sudo apt install libtool libltdl-dev

然后再运行make

make configtxgen
区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础_第7张图片
为了快速部署通过脚本执行配置过程
直接进入/examples/e2e_cli目录

使脚本可执行

chmod +x download-dockerimages.sh

执行脚本

./download-dockerimages.sh拉取镜像。

之前有一个环境搭建完成,后来由于电脑硬盘出了点小问题,所以环境重新开始弄了,不知道为什么,我在下载镜像的时候比较慢,写完本文的时候还没有拉取完成,故接下来的步骤在以后的文章中再分享。

笔者初学区块链,很多东西也是慢慢摸索,之所以写下这些基本概念一方面作为自己学习的整理,另一方面也希望更多交流学习的机会。有兴趣可以关注我公众号或者加我微信交流
区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础_第8张图片
区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础_第9张图片

你可能感兴趣的:(区块链)