热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于区块链:Hyperledger-Fabric-核心概念

一、阐明区块链是一个通明的,基于不可变模式的去中心化零碎,外围就是一个分布式账本,记录网络上产生的所有交易。区块链网络次要有三种类型:公共区块链、

一、阐明

区块链是一个通明的,基于不可变模式的去中心化零碎,外围就是一个分布式账本,记录网络上产生的所有交易。

区块链网络次要有三种类型:公共区块链、联盟区块链,以及公有区块链;咱们熟知的比特币、以太坊这些数字货币其实就是属于公共区块链平台;

而明天要介绍的 Fabric 则是属于联盟链类型的;Fabric是一个企业级的分布式账本技术平台,也是目前利用最宽泛的区块链我的项目。

本文将梳理区块链技术平台 Fabric 的外围概念与要害性能。

 

二、特点

Fabric与其余区块链平台比照有以下几个特点:

  • 开源:它是Linux基金会旗下的一个重量级区块链平台。
  • 身份治理:fabric和其余区块链零碎的不同之处在于它是公有的,有准入资格受权的,并非一个公开的容许不明身份参与者进入网络的零碎;它提供了一个成员身份服务,用于管理网络上的所有参与者和权限。
  • 隐衷和窃密:有一个通道的概念提供了交易隐衷和机密性,一个Fabric的网络能够创立多个通道,任何未正式受权的网络成员都没方法看到或者拜访通道上的任何数据;能够了解为就是反对多租户,通道与通道之间的数据都是隔离的。
  • 链码性能:智能合约在Fabric 中称之为链码,用于对账本的拜访,例如写入交易信息,查问数据等等。
  • 模块化设计:Fabric实现了模块化架构,例如身份、排序、链码等服务和性能,都是可选的可插拔的非常灵活。

 

三、零碎性能

Fabric的一个性能架构图:

  • 身份治理性能是通过PKI体系和CA模块来实现成员、权限还有证书的治理。
  • 分布式账本就是区块链网络的外围性能,记录着所有的交易信息。
  • 排序服务,相似一个裁判的角色,因为不同的交易程序对最终的交易后果是有很大的影响的,所以这个排序服务次要是为了让所有的节点达成对立的共识,最终实现数据的一致性。
  • 网络通信方面,节点与节点之间的点对点通信是基于grpc协定,而后再通过gossip算法来实现去中心化的播送,意思就是不须要核心节点,通过任意一个节点以一传十,十传百的形式来把音讯散播到全网。
  • 背书验证指的是背书策略,背书策略有很多种,例如我指定策略为大多数节点批准,意思就是一笔交易必须超过半数的节点都认证通过了,能力实现,这样就能无效的进攻一些歹意的交易。
  • 链码服务是一个独立的应用程序,运行在隔离的Docker容器中,在链码部署的时候会主动生成链码的Docker镜像。

 

四、组件逻辑关系

  1. 图中的浅蓝色方块 N 代表整个区块链网络;
  2. 网络底部的 C通道 相当于是一个子链,一个区块链网络能够创立多个通道,通道与通道之间是数据隔离的,能够了解为是一个多租户零碎;
  3. 一个通道下面能够部署多个 Peer 节 点为图中蓝色方块 P1P2,区块链网络次要由 Peer 节 点组成;
  4. 每个 Peer 节 点上都有一份 账本 的全量正本为红色的 L1,而后 智能合约 是部署在每个节点上的为黄色 S1,一个节点能够部署多个 智能合约
  5. 最初区块链网络里面的红色方块A指的是拜访区块链的 利用,利用是通过通道来与节点上的账本进行交易的。

 

五、账本

账本是 Hyperledger Fabric 中的一个重要概念,它存储了无关业务对象的重要事实信息,其中既包含对象属性的以后值,也包含产生这些以后值的交易的历史。

账本由一个区块链(链)形成,并将不可变的、有序的记录寄存在区块中;同时蕴含一个状态数据库来记录以后的Fabric状态。每个 通道 中各有 一个账本。各个节点对于它所属的每个通道,都会保留一份该通道的 账本正本

如下图所示,Hyperledger Fabric 中的账本由“世界状态“和”区块链“这两局部组成:

世界状态:世界状态是以数据库的模式实现,默认应用的是LevelDB,这是一个KeyValue数据库;外面记录的是业务对象的最新值;智能合约次要与账本中的世界状态进行交互。

区块链:以文件模式实现的,记录交易日志明细,相当于是一个交易的台账表。

例如有一个银行账户,产生一次贷款和三次取款操作,则最终区块链外面会记录四条记录的日志,而世界状态则只记录一条记录,就是以后账户最新的余额。

 

六、智能合约

智能合约 是一个运行在账本上的应用程序,它能够对资产进行编码,其中的交易指令(或者叫业务逻辑)也能够用来批改资产。

Fabric2.0 当前引入了新的生命周期来治理合约:

  1. 首先第一步开发合约:须要依赖原生的合约 sdk,反对包含 Java、js 和 Golang 三种开发语言。
  2. 开完合约后,管理员能够应用 package 子命令来打包合约,并生成打包文件。打包命令默认程序是 golang 语言,能够应用 -l 参数来指定其余语言。
  3. 一次打包能够屡次装置,而后接着应用 install 命令在指定的 peer 节点上装置合约。
  4. 装置胜利后,接着应用 approveformyorg 命令代表所在机构审批合约,并且指定背书策略。
  5. 最初应用 commit 命令向指定的通道提交合约定义,执行完这一步智能合约就部署胜利,正式失效了。
  6. 接下来咱们就能够编写应用程序来与区块链网络进行交易了,Fabric 封装了一套网关 SDK 给应用程序应用,通过一系列的简略 API 就实现和区块链网络进行交互。

对于 Java 智能合约的开发能够看我之前的文章《Hyperledger Fabric 2.x 自定义智能合约》

 

七、交易流程

  1. 首先区块链利用发动一笔交易;
  2. 而后 背书节点 对交易进行签名验证,返回验证后果;
  3. 客户端将背书后果封装发给 Peer 节点,而后再提交给 Order 节点进行数据同步;
  4. Order 节点按程序把交易信息同步给其余的 Peer 节点进行验证和提交;
  5. 最初账本更新,实现整个交易。

 

扫码关注有惊喜!


推荐阅读
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
  • mac php错误日志配置方法及错误级别修改
    本文介绍了在mac环境下配置php错误日志的方法,包括修改php.ini文件和httpd.conf文件的操作步骤。同时还介绍了如何修改错误级别,以及相应的错误级别参考链接。 ... [详细]
  • 从Oracle安全移植到国产达梦数据库的DBA实践与攻略
    随着我国对信息安全和自主可控技术的重视,国产数据库在党政机关、军队和大型央企等行业中得到了快速应用。本文介绍了如何降低从Oracle到国产达梦数据库的技术门槛,保障用户现有业务系统投资。具体包括分析待移植系统、确定移植对象、数据迁移、PL/SQL移植、校验移植结果以及应用系统的测试和优化等步骤。同时提供了移植攻略,包括待移植系统分析和准备移植环境的方法。通过本文的实践与攻略,DBA可以更好地完成Oracle安全移植到国产达梦数据库的工作。 ... [详细]
  • 本文介绍了MVP架构模式及其在国庆技术博客中的应用。MVP架构模式是一种演变自MVC架构的新模式,其中View和Model之间的通信通过Presenter进行。相比MVC架构,MVP架构将交互逻辑放在Presenter内部,而View直接从Model中读取数据而不是通过Controller。本文还探讨了MVP架构在国庆技术博客中的具体应用。 ... [详细]
  • 解决php错误信息不显示在浏览器上的方法
    本文介绍了解决php错误信息不显示在浏览器上的方法。作者发现php中的各种错误信息并不显示在浏览器上,而是需要在日志文件中查看。为了解决这个问题,作者提供了一种解决方式:通过修改php.ini文件中的display_errors参数为On,并重启服务。这样就可以在浏览器上直接显示php错误信息了。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 出现_史上最大漏洞出现,你的安卓iPhone电脑都不安全了!
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了史上最大漏洞出现,你的安卓iPhone电脑都不安全了!相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
萝莉莲籽芯
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有