本文共 3137 字,大约阅读时间需要 10 分钟。
解读区块链,区块链框架分析+超级账本(Hyperledger Fabric)基础
写了几篇区块链基础知识点的文章,自己也在尝试搭建环境,本人不是区块链从业者、区块链技术只是出于个人兴趣,现在开始文章分两部分,一部分继续区块链概念的解读,另一部分记录自己实践操作。 区块链框架: 目前对区块链的框架有很多不同的认识,比较得到共识的一般有四层或者五层架构。 五层架构: 来源于: 应用层:主要客户端完成记账转账验证的功能。 激励层:这一层个人感觉完全是为比特币的挖矿定义的,块的生产有一定的奖励,也就是数字货币发行方式,另外区块链中环境中也认为是一种交易费,类似ETH中的GAS。 共识层:这一层主要为了保证分布式系统的一致性,保证网络中即使有恶意节点也能达成共识,同时避免“双花”问题和保证区块生成时间。 网络层:P2P网络点对点技术,这个不是个新鲜事物,很多年前的BT电影下载就是用的这个技术。 数据层:这一层包含了区块数据、链结构、数字签名、哈希函数、merkle树等一系列加密和存储技术。四层架构中有两种定义:
四层架构一: 来源于: 作者是定义为三层架构,协议层、扩展层、应用层。然后协议层再分为存储层和网络层,我这里简单就把归纳为四层。 协议层:最底层技术理解为底层操作系统、技术归纳在一个层中,包含了网络和存储的,大致主要有P2P网络、网络编程、分布式算法、加密签名、数据存储。 扩展层:这一层理解为操作系统中的驱动,包换一些智能合约、侧链,图片、文档等、主要区块链产品开发在依托协议层在扩展层具体实现。 应用层:这个和上面的五层中的应用层定义类似。 还有一种四层架构,比较官方,软件工程与评估中心出的《区块链 参考架构》 原文: 里面定义了“四横四纵”的层级结构(包括用户层、服务层、核心层、基础层,以及包含开发、运营、安全、审计和监管的跨层功能)描述了区块链系统的典型功能组件。 笔者个人认为区块链的架构从初学者来看,其实可以简化五层架构,就分为应用层、共识层、网络层、数据层。 应用层:各种业务是操作,包括智能合同,数字货币以及将来的各行业的应用。 共识层:区块链中是分布式系统,共识机制尤为重要,这一层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用户作为了操作用户。安装完成后查看版本:docker version
接下来安装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系统)安装python-pip
安装完成后,清除cache
安装docker-compose并添加执行权限
uname -s
-uname -m
> /usr/local/bin/docker-compose安装完成后查看版本信息:#docker-compose -v
如果出现权限不对:docker-compose用到了docker,docker的操作需要sudo权限,把docker加入用户组下载一个compose模板
安装GO环境
解压到/usr/local #tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz
配置环境变量 /etc/profile查看go版本和env信息:
拉取Fabric源码:
git clone cd $GOPATH/src/github.com/hyperledger/fabric make configtxgensudo apt install libtool libltdl-dev
make configtxgen
为了快速部署通过脚本执行配置过程 直接进入/examples/e2e_cli目录之前有一个环境搭建完成,后来由于电脑硬盘出了点小问题,所以环境重新开始弄了,不知道为什么,我在下载镜像的时候比较慢,写完本文的时候还没有拉取完成,故接下来的步骤在以后的文章中再分享。
笔者初学区块链,很多东西也是慢慢摸索,之所以写下这些基本概念一方面作为自己学习的整理,另一方面也希望更多交流学习的机会。有兴趣可以关注我公众号或者加我微信交流