解读区块链,区块链框架分析+超级账本(Hyperledger Fabric)基础
写了几篇区块链基础知识点的文章,自己也在尝试搭建环境,本人不是区块链从业者、区块链技术只是出于个人兴趣,现在开始文章分两部分,一部分继续区块链概念的解读,另一部分记录自己实践操作。
区块链框架:
目前对区块链的框架有很多不同的认识,比较得到共识的一般有四层或者五层架构。
五层架构:

来源于:http://blog.csdn.net/sportshark/article/details/53364690
应用层:主要客户端完成记账转账验证的功能。
激励层:这一层个人感觉完全是为比特币的挖矿定义的,块的生产有一定的奖励,也就是数字货币发行方式,另外区块链中环境中也认为是一种交易费,类似ETH中的GAS。
共识层:这一层主要为了保证分布式系统的一致性,保证网络中即使有恶意节点也能达成共识,同时避免“双花”问题和保证区块生成时间。
网络层:P2P网络点对点技术,这个不是个新鲜事物,很多年前的BT电影下载就是用的这个技术。
数据层:这一层包含了区块数据、链结构、数字签名、哈希函数、merkle树等一系列加密和存储技术。

四层架构中有两种定义:
四层架构一:

来源于:http://www.8btc.com/ebook-blockchain
作者是定义为三层架构,协议层、扩展层、应用层。然后协议层再分为存储层和网络层,我这里简单就把归纳为四层。
协议层:最底层技术理解为底层操作系统、技术归纳在一个层中,包含了网络和存储的,大致主要有P2P网络、网络编程、分布式算法、加密签名、数据存储。
扩展层:这一层理解为操作系统中的驱动,包换一些智能合约、侧链,图片、文档等、主要区块链产品开发在依托协议层在扩展层具体实现。
应用层:这个和上面的五层中的应用层定义类似。
还有一种四层架构,比较官方,软件工程与评估中心出的《区块链 参考架构》
原文:http://www.cesi.cn/201705/2478.html
里面定义了“四横四纵”的层级结构(包括用户层、服务层、核心层、基础层,以及包含开发、运营、安全、审计和监管的跨层功能)描述了区块链系统的典型功能组件。

笔者个人认为区块链的架构从初学者来看,其实可以简化五层架构,就分为应用层、共识层、网络层、数据层。
应用层:各种业务是操作,包括智能合同,数字货币以及将来的各行业的应用。
共识层:区块链中是分布式系统,共识机制尤为重要,这一层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

接下来安装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=GOROOT/bin #工作目录 export GOPATH=/home/go PATH=PATH:GOPATH:GOPATH:GOBIN:$GOPATH

查看go版本和env信息:

拉取Fabric源码:
git clone https://github.com/hyperledger/fabric.git

cd $GOPATH/src/github.com/hyperledger/fabric
make configtxgen

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

sudo apt install libtool libltdl-dev

然后再运行make

make configtxgen

为了快速部署通过脚本执行配置过程
直接进入/examples/e2e_cli目录

使脚本可执行

chmod +x download-dockerimages.sh

执行脚本

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

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

笔者初学区块链,很多东西也是慢慢摸索,之所以写下这些基本概念一方面作为自己学习的整理,另一方面也希望更多交流学习的机会。有兴趣可以关注我公众号或者加我微信交流

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

  1. 区块链超级账本Hyperledger Fabric架构说明

    翻译自:http://hyperledger-fabric.readthedocs.io/en/latest/arch-deep-dive.html 边学习边翻译,很多地方还不明白,请对照原文学习,转 ...

  2. 区块链相关论文研读3- 关于超级账本Hyperledger Fabric的性能优化

    这是2019年6月发表在顶会Sigmod上面的论文,论文题目为<Blurring the Lines between Blockchains and Database Systems: the ...

  3. 超级账本(Hyperledger Fabric)源码分析之一:总览

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 一.编译 1.环境准备 需要提前在linux或者mac机器上安装如下软件 1)Go,注意设置好gopath(笔者安装的是 ...

  4. 新闻丨超级账本Hyperledger执行董事访问智链万源

    2019年2月22日,全球最大企业级开源区块链项目超级账本Hyperledger执行董事 Brian Behlendorf .亚太区副总裁 Julian Gordon .中国社区经理龙文选.亚太区市场 ...

  5. 基于区块链技术的超级账本(Hyperledger) - 从理论到实战

    什么是区块链?简单来说区块链就是一个分布式的记账本,或者分布式的数据库. 区块链的数据结构是一个链表,交易数据被存储到链表的区块中,区块链的第一个区块叫创世区块,除了创世块以外,每个区块还包含前一个区 ...

  6. 区块链学习8:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名

    ☞ ░ 前往老猿Python博文目录 ░ 在Hyperledger Fabric区块链中,有背书节点进行背书,Hyperledger Fabric 使用背书策略来定义哪些节点需要执行交易. Hyper ...

  7. 区块链必知 -- 超级账本Hyperledger

    比特币.以太坊的成功,推动了区块链行业的飞速发展,从区块链的分类来看,它们都属于公链项目,区块链除了有公链之外.还有私有链和联盟链.公链的完全去中心化是一个美好的未来,但是又和现实存在着很大的冲突,难 ...

  8. 区块链分布式账本Hyperledger Fabric介绍

    简介 数据完整以及数据安全 如何解决现实问题 案例分析 渔业链参与人 channel chaincode 工作流程 术语回顾 项目应用举例 项目分析 合同与租金管理 合同上链 交易数据上链

  9. 超级账本与区块链应用场景

    文章目录 区块链3.0 去中心化应用的新需求 区块链技术在行业应用中的条件 区块链3.0架构与超级账本 区块链3.0架构 超级账本(Hyperledger Fabric) 超级账本的项目 Fabric ...

最新文章

  1. Android被逼学习小例子1
  2. kbmMW功能 - kbmMWProcess单元(转帖)
  3. socket网络编程--epoll小结
  4. jsp+js实现二级级联
  5. 零基础使用pscc 证件照换底色
  6. Python爬虫从入门到精通:(14)验证码识别_Python涛哥
  7. net core webAPI NOPI 导出Excel封装
  8. Android 使用OPENCV实现图像实时对比
  9. 技术中心部门薪酬和考核体系
  10. js打折 (批量计算9折 8折 7折
  11. Ansible使用基础之tags标记
  12. 七日杀 服务器不显示,七日杀进服务器不显示画面 | 手游网游页游攻略大全
  13. MFC中得到2个SYSTEMTIME时间差的函数
  14. GEM5中运行parsec 2.1
  15. 2019年最新《Web 前端开发》等级考试模拟题~以国家 “1+X” 职业技能证书为标准,厚溥推出 Web 前端开发人才培养方案...
  16. 在领悟到什么道理后,你的人生从此轻松了起来?
  17. 从实际性能剖析,为什么MEMS激光雷达才是未来主流?
  18. 恩墨oracle每日工作,DBA日常工作职责 - 我对DBA的七点建议
  19. DW1000 学习笔记1 - 概述简报
  20. python输出星号等腰三角形_python打印直角三角形与等腰三角形实例代码

热门文章

  1. 程序洞穴生成三(Procedural Cave Generation)
  2. 定点数与浮点数的表示方法
  3. Kubernets健康检查——配置存活、就绪和启动探测器
  4. css 锥形渐变实现仪表盘
  5. Mac快捷键与Win快捷键的对应
  6. iOS 图片压缩方法
  7. 招人!招人!这篇推文不要标题,只要你!
  8. html语言中mouse over,javascript中mouseover、mouseout使用详解
  9. css 强制不换行超出显示省略号,自动换行超出显示省略号
  10. linux 如何开启和关闭网口