转载地址

https://blog.csdn.net/xiaonu123/article/details/81006936

简介

Hyperledger介绍

超级账本(Hyperledger)项目是首个面向企业应用场景的开源分布式账本平台。由linux基金会牵头,包括 IBM 等 30家初始企业成员共同成立的。

Hyperledger Fabric是什么

该项目定位是面向企业的分布式账本平台,引入权限管理,设计上支持可插拔、可扩展,是首个面向联盟链场景的开源项目。

Fabric 基于 Go 语言实现,主要包含 Fabric CA、Fabric SDK 多个相关的子项目。

与其它区块链系统最大的不同点在于HyperLedger Fabric是私有的,而且是被许可的。但并不允许未知身份来参与HyperLedger Fabric网络(要求协议验证事务并确保网络的安全),HyperLedger Fabric组织的成员可以通过一个Membership Service Provider(成员服务提供者即MSP)来注册。

Hyperledger Fabric提供了一个独特的可伸缩、可扩展的架构,这也是Hyperledger Fabric与其他区块链解决方案的显著区别。假如你正在计划部署具备完整审查机制以及开源架构的企业级区块链,Hyperledger Fabric是你的一个不错的起点。

对于初学者,推荐首先阅读下文中的简介,以便于理解区块链的工作原理、具有的主要特点以及Hyperledger Fabric中包含的组件。

HyperLedger Fabric也提供了创建通道(channel)的能力,允许一组参与者创建一个单独的共同维护的交易账本。所以这对于其它竞争对手的网络来说,这是很重要的选择,例如:他们向特定的一组参与者提供了一个特别的价格,其它参与者享受不到这个特别价格。但是如果两个参与者在同一个通道(channel),那么这些参与者,以及其他参与者,都有该渠道的分类帐本。

什么是分布式账本

一个区块链网络的核心是一个分布式账本,在这个账本中记录了网络中发生的所有交易信息。

区块链账本通常被定义为去中心化,这是因为在整个网络中,每个参与者都保存着一个区块链账本的副本,所有参与者通过协作共同维护着账本。接下来我们会看到,去中心化与协作这两个特点在现实世界的商业货物交易和商务服务中展现出的显著优点。

除了去中心化与协作,区块链的另一个显著特点是信息在只能以“附加”的方式记录在区块链中,同时使用加密技术保障了交易一旦被添加进账本中,就无法被篡改。区块链的这种不可篡改性使得信息来源的确认变得异常容易,这是由于参与者可以肯定信息一旦被写入区块链中就几乎不可被篡改。这也是为什么区块链常常也被称为证明的系统的原因。

什么是智能合约

HyperLedger Fabric的智能合约是用Chaincode编写的,为了持续的进行信息的更新,以及对账本进行管理(写入交易,进行查询等),区块链网络引入了智能合约来实现对账本的访问和控制。

智能合约不仅仅可用于在区块链网络中打包信息,它们也可以被用于自动的执行由参与者定义的特定交易操作。

例如,买卖双方可以定义一个智能合约,以保证当卖方发货的商品运送到达时,买方支付的货款会自动转账给卖方。

什么是隐私

根据网络的需要,企业对企业(B2B)网络的参与者可能对他们所共享的信息非常敏感。对其他网络来说,隐私不会成为首要关注的问题。

HyperLedger Fabric支持需要将隐私(使用通道)作为关键操作需求的网络,同时也是相对开放的网络。

什么是共识

保持网络中所有账本交易的同步流程,就是共识。共识保证了账本只会在交易双方都确认后才进行更新。同时在账本更新时,交易双方能够在账本中的相同位置,更新一个相同的交易信息。

这是一个经过彻底研究的计算机科学领域,有很多方法可以实现它,每一个都有不同的权衡。例如:PBFT(拜占庭容错)可以为文件副本提供一种机制,使其能够相互通信,从而保持每个副本的一致性。或者,在比特币中,排序是通过一个名为“挖矿”的过程来实现的,在这个过程中,竞争的计算机竞相解决一个加密难题,该难题定义了所有流程随后构建的顺序。

关于HyperLedger Fabric共享机制,它目前包括SOLO和Kafka,并将很快扩展到SBFT(简化的拜占庭容错)

区块链为什么切实可行

当前的记录系统

自从商业数据记录网络系统诞生以来,直到今天的交易网络并没有发生太大的变化。在商业网络中的成员进行相互交易时,他们各自维护着自己独立的交易记录。同时,人们交易的物品——无论是16世纪佛兰德的挂毯,还是现代的有价证券——都仍然需要在每次卖出交易过程中提供来源信息,以确保卖方拥有所出售商品的所有权。

当前的商业网络就像下图描述的一样:

随着科技的进步,上图中的交易流程不断演化发展,经历了从使用石碑、使用纸质账本、使用硬盘存储器直到使用云计算平台的不同阶段,但流程的底层架构并没有发生任何变化。并不存在一个可以统一管理网络参与者身份的系统,确认商品来源十分费劲,常常会耗费数天的时间明确证券的交易(包含数以万计美元的数量)。人们必须签订合约并手动执行,每一个系统中的数据库都包含着独立的信息并最终代表一个单点的错误。

在今天的信息和过程共享断裂的方法中,建立一个跨越商业网络的记录系统是不可能的,尽管可见性和信任的需求是明确的。

区块链的不同点

那我们为什么不用“现代”的交易系统来替代这种效率低下的网络?新的商业网络可以具有标准的方法建立身份信息,执行交易,并且存储数据。为什么不建立一个可信的交易链条记录?通过查询这个链条上的所有交易,来确定交易商品来源,并且这个链条上的信息一旦被写入,就无法被再次篡改。

以上描述的商业网络就如下图所示:

这就是区块链网络。在区块链网络中,每一个参与者都保有一份账本的副本。在区块链网络中,不仅仅是账本信息会被共享,更新账本的流程也是共享的。不同于目前的系统——参与者使用私有的程序对私有的账本进行更新,而区块链系统使用共享的程序对共享的账本进行更新。

通过使用共享账本协调整个商业网络,区块链网络能够减少时间、成本以及隐私信息泄露的风险,并且能使流程更加可信和透明。

现在你已经明白了什么是区块链以及它的用途。同时还有许多其他的内容也非常重要,他们是信息与流程共享的基础知识。

其它团队贡献的Fabric项目

Hyperledger Sawtooth

该项目由Intel 等企业发起和贡献的分布式账本平台,基于 python 语言实现,包含诺韦尔共识算法,计时验证(PoET), 它针对的是以最小的资源消耗处理大量的分布式验证器。

Hyperledger Iroha

该项目定位是分布式账本平台框架,基于 C++ 语言的实现,设计上类似 Fabric,同时提供了基于 C++ 的区块链开发环境,并考虑了移动端和web端的一些需求。

Hyperledger Burrow

该项目提供了支持以太坊虚拟机的智能合约区块链平台,并支持pos共识机制和权限管理

Hyperledger Indy

该项目致力于打造一个基于区块链和分布式账本技术的数字中心管理平台。该平台支持去中心化,支持跨区块链和跨应用的操作,可实现全球化的身份管理。

Hyperledger 工具篇

Hyperledger Cello

该项目的定位为区块链管理平台,提供区块链即服务实现区块链环境的快速部署,以及对区块链平台的运行时管理。

Hyperledger Composer

Composer 是一个协同工具,用以创建区块链业务网络,加速智能合约及其跨分布式账本部署的发展。

Hyperledger Explorer

该项目定位是区块链平台的浏览器,基于 Nodejs 语言实现,提供 web 操作界面。用户可以使用它来快速查看底层区块链平台的运行信息,如区块个数、交易情况、网络状况等。

Hyperledger Fabric介绍的更多相关文章

  1. HyperLedger Fabric Introduction——区块链超级账本介绍

    介绍 HyperLedger Fabric是一个基于模块化架构的分布式账本解决方案平台,它拥有深度加密.便捷扩展.部署灵活及可插拔等特性.它设计之初的目的是支持不同组件的可插拔实现,并适应整个经济生态 ...

  2. 使用Node.JS访问Hyperledger Fabric的gRPC服务

    在即将正式发布的Hyperledger Fabric SDK 1.0中,Hyperledger Fabric通过gRPC提供服务接口以取代现有的REST API.本文介绍了如何使用Node.JS访问H ...

  3. Hyperledger fabric Client Node.js Hello World示例程序

    简介 Hyperledger fabric Client (HFC)提供了基于Node.js的应用接口来访问Hyperledger区块. 本文介绍了一个使用HFC访问IBM Bluemixr区块服务的 ...

  4. 基于docker的 Hyperledger Fabric 多机环境搭建(上)

    环境:ubuntu 16.04 Docker  17.04.0-ce go 1.7.4 consoul v0.8.0.4 ======================================= ...

  5. Hyperledger Fabric 1.0 从零开始(五)——运行测试e2e

    3:运行测试e2e 3.1.运行fabric-samples的问题说明 该问题说明能够解决6.1.平台特定使用的二进制文件配置第一步的问题.可以选择继续阅读该说明,或者等参考到6.1小节时再反向阅读本 ...

  6. Hyperledger Fabric 1.0 从零开始(四)——Fabric源码及镜像文件处理

    2:Fabric源码及镜像文件处理 2.1下载Fabric源码 下载Fabric源码是因为要用到源码中提到的列子和工具,工具编译需要用到go语言环境,因此需要把源码目录放到$GOPATH下.通过1.3 ...

  7. Hyperledger Fabric 1.0 从零开始(一)——吐槽

    在HyperLedger/Fabric发布0.6的时候,公司就已经安排了一个团队研究这一块,后来也请IBM的专家组过来培训了一批人,不幸的是,这批人后来全走了,然后没过多久1.0就发布了.自从2017 ...

  8. Hyperledger Fabric 1.0 从零开始(十二)——fabric-sdk-java应用

    Hyperledger Fabric 1.0 从零开始(十)--智能合约 Hyperledger Fabric 1.0 从零开始(十一)--CouchDB 上述两章,最近网上各路大神文章云集,方案多多 ...

  9. Hyperledger Fabric 1.0 从零开始(九)——Fabric多节点集群生产启动

    7:Fabric多节点集群生产启动 7.1.多节点服务器配置 在生产环境上,我们沿用4.1.配置说明中的服务器各节点配置方案. 我们申请了五台生产服务器,其中四台服务器运行peer节点,另外一台服务器 ...

随机推荐

  1. C++ RMQ问题

    RMQ问题是区间求最值问题,就是求一个数组第i个到第j个中最大数或最小数的算法. 这个算法有一些倍增思想,也有一些二分思想.具体是一个数组,m[i][j]表示从i开始往后数2的j次方个数的最大值或最小 ...

  2. Trie——解决字符串搜索、异或最值问题

    Trie--解决字符串搜索.异或最值问题 在说到Trie之前,我们设想如下问题: 给我们1e5个由小写字母构成的不重复的字符串,每个字符串长度不超过6,之后是1e5次查询操作,每次给我们一个字符串,要 ...

  3. python怎么自学?今日头条技术大佬的真实经历分享

    大家好,我是武州,27岁,目前在字节跳动担任Python后端工程师一职. (摆拍一下,假装是保安) 在开始今天的文章之前,不知道你们有没有遇到过这样的问题: 大学没学到什么实质技术,毕业后找不到高薪的 ...

  4. 015.Nginx重定向

    一 重定向概述 1.1 重定向介绍 重定向(Redirect)指通过各种方法将各种网络请求重新定个方向转到其它位置(如:网页重定向.域名的重定向.路由选择的变化也是对数据报文经由路径的一种重定向). ...

  5. 题解 洛谷 P3521 【[POI2011]ROT-Tree Rotations】

    给定一棵二叉树,叶子节点有权值,可以进行若干次交换一个节点的左右儿子的操作,使前序遍历叶子的逆序对最少. 考虑一个节点下子树逆序对的产生: ① 只在左子树中产生. ② 只在右子树中产生. ③ 在左子树 ...

  6. Netty 学习笔记(2) ------ 数据传输载体ByteBuf

    Netty中读写以ByteBuf为载体进行交互 ByteBuf的结构 ByteBuf以readerIndex和writerIndex划分为三块区域,废弃字节,可读字节,可写字节.每次从ByteBuf读 ...

  7. 云上自动化 vs 云上编排

    1 摘要 本文介绍了为什么在一个好的公有云或私有云中必须要有一个编排系统来支持云上自动化,以及实现这个编排系统的困难和各家的努力.同时提供了一套实现编排系统的原型,它包括了理论分析及主体插件框架,还给 ...

  8. springboot(12)Redis作为SpringBoot项目数据缓存

    简介: 在项目中设计数据访问的时候往往都是采用直接访问数据库,采用数据库连接池来实现,但是如果我们的项目访问量过大或者访问过于频繁,将会对我们的数据库带来很大的压力.为了解决这个问题从而redis数据 ...

  9. jsp课堂笔记4 javabean

    Javabean是一个可重复使用的软件组件,实际上是一种java类 实现代码重复利用 易编写易维护易使用 jsp页面的主要任务是显示页面,不负责数据的逻辑业务处理 将数据处理过程中指派一个或多个bea ...

  10. Linux系统查看硬件信息神器,比设备管理器好用100倍!

    大家都知道,当我们的 Linux 系统计算机出现问题时,需要对其排除故障,首先需要做的是找出计算机的硬件信息.下面介绍一个简单易用的应用程序--HardInfo,你可以利用它来显示你电脑的每个硬件方面 ...