区块链解读6-区块链框架分析+超级账本(Hyperledger Fabric)基础
解读区块链,区块链框架分析+超级账本(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)基础相关推荐
- 区块链超级账本Hyperledger Fabric架构说明
翻译自:http://hyperledger-fabric.readthedocs.io/en/latest/arch-deep-dive.html 边学习边翻译,很多地方还不明白,请对照原文学习,转 ...
- 区块链相关论文研读3- 关于超级账本Hyperledger Fabric的性能优化
这是2019年6月发表在顶会Sigmod上面的论文,论文题目为<Blurring the Lines between Blockchains and Database Systems: the ...
- 超级账本(Hyperledger Fabric)源码分析之一:总览
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 一.编译 1.环境准备 需要提前在linux或者mac机器上安装如下软件 1)Go,注意设置好gopath(笔者安装的是 ...
- 新闻丨超级账本Hyperledger执行董事访问智链万源
2019年2月22日,全球最大企业级开源区块链项目超级账本Hyperledger执行董事 Brian Behlendorf .亚太区副总裁 Julian Gordon .中国社区经理龙文选.亚太区市场 ...
- 基于区块链技术的超级账本(Hyperledger) - 从理论到实战
什么是区块链?简单来说区块链就是一个分布式的记账本,或者分布式的数据库. 区块链的数据结构是一个链表,交易数据被存储到链表的区块中,区块链的第一个区块叫创世区块,除了创世块以外,每个区块还包含前一个区 ...
- 区块链学习8:超级账本项目Fabric中的背书、背书节点、背书策略、背书签名
☞ ░ 前往老猿Python博文目录 ░ 在Hyperledger Fabric区块链中,有背书节点进行背书,Hyperledger Fabric 使用背书策略来定义哪些节点需要执行交易. Hyper ...
- 区块链必知 -- 超级账本Hyperledger
比特币.以太坊的成功,推动了区块链行业的飞速发展,从区块链的分类来看,它们都属于公链项目,区块链除了有公链之外.还有私有链和联盟链.公链的完全去中心化是一个美好的未来,但是又和现实存在着很大的冲突,难 ...
- 区块链分布式账本Hyperledger Fabric介绍
简介 数据完整以及数据安全 如何解决现实问题 案例分析 渔业链参与人 channel chaincode 工作流程 术语回顾 项目应用举例 项目分析 合同与租金管理 合同上链 交易数据上链
- 超级账本与区块链应用场景
文章目录 区块链3.0 去中心化应用的新需求 区块链技术在行业应用中的条件 区块链3.0架构与超级账本 区块链3.0架构 超级账本(Hyperledger Fabric) 超级账本的项目 Fabric ...
最新文章
- Android被逼学习小例子1
- kbmMW功能 - kbmMWProcess单元(转帖)
- socket网络编程--epoll小结
- jsp+js实现二级级联
- 零基础使用pscc 证件照换底色
- Python爬虫从入门到精通:(14)验证码识别_Python涛哥
- net core webAPI NOPI 导出Excel封装
- Android 使用OPENCV实现图像实时对比
- 技术中心部门薪酬和考核体系
- js打折 (批量计算9折 8折 7折
- Ansible使用基础之tags标记
- 七日杀 服务器不显示,七日杀进服务器不显示画面 | 手游网游页游攻略大全
- MFC中得到2个SYSTEMTIME时间差的函数
- GEM5中运行parsec 2.1
- 2019年最新《Web 前端开发》等级考试模拟题~以国家 “1+X” 职业技能证书为标准,厚溥推出 Web 前端开发人才培养方案...
- 在领悟到什么道理后,你的人生从此轻松了起来?
- 从实际性能剖析,为什么MEMS激光雷达才是未来主流?
- 恩墨oracle每日工作,DBA日常工作职责 - 我对DBA的七点建议
- DW1000 学习笔记1 - 概述简报
- python输出星号等腰三角形_python打印直角三角形与等腰三角形实例代码