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

摘要:
并从官方网站上提供的示例中学习技术规范和api。为了支持信息更新的一致性,区块链网络使用智能合约来限制和规范对账本的访问和更改。智能合约中封装了完整的信息处理方案,所有参与者都可以根据智能合约中的协议自动执行相关的交易处理操作。双方同意,在整个网络中保持分类账中交易的同步,并确保只有在具有决策权的参与者(背书人或符合背书条件的人)批准交易时才更新交易。

介绍

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

HyperLedger Fabric与其它的区块链平台解决方案相比,提供了一种独特的扩展便捷和灵活部署的架构。它更多的适用于联盟链形式,即适合企业级之间的区块链联盟方向,建立在可信任的基础上。如果是企业级区块链部署的话,建议可以采用HyperLedger Fabric提供的方案。

首次接触HyperLedger Fabric的用户可以从下文的具体介绍开始,以了解区块链的工作原理和HyperLedger Fabric特定的特性及组件。

如果通过后续文章熟悉了区块链及HyperLedger Fabric的结构原理,那么就可以开始正式使用HyperLedger Fabric搭建属于你自己的平台,可以参考官网的Getting Started,并且从官网提供的示例中学习技术规范和api等。

什么是区块链?

一个分布式账本

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

区块链中账本会被所有网络中的参与者复制到本地,且每一个参与者都在对账本进行维护协作,因此它是完全去中心化的。

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

除了去中心化外,还使用了加密技术,每一个区块都有唯一的hash,即便是通过网络将账本复制到本地应用服务器中也无法篡改其中的内容。这种不可篡改的特性使得信息具备可追溯的能力,因为所有的参与者在提交信息后都无法改变,都会在区块中留存记录,这也是区块链有时被称作证明系统的原因。

智能合约

为了支持信息更新的一致性,并支持完整的账本功能(包括但不限于交易、查询等),区块链网络通过使用智能合约来约束和规范对账本的访问及变更。

HyperLedger Fabric Introduction——区块链超级账本介绍第2张

在智能合约中封装了信息处理的完整方案,以此来尽量简化整个网络的信息交易。智能合约通过编写可以被升级,通过升级来丰富其功能并增强其对事务的处理能力。所有的参与者都可以按照智能合约中的约定自动执行相关事务处理操作。

例如,一份智能合约可以规定货物运输的成本,成本根据货物到达的时间而变化。在双方同意的条件下,当收到货物时,根据智能合约中约定的资金会自动地转手。

共识

保持账本中发生的交易在整个网络中同步的过程,并确保只有当交易得到拥有决策权力的参与者(背书方或符合背书条件)批准时才会更新,并且当所有网络账本进行更新时,它们以相同的顺序更新相同的事务,这称为共识。

HyperLedger Fabric Introduction——区块链超级账本介绍第3张

通过对区块链的了解更加深入,以后会学到更多关于账本、智能合约和共识的知识。就目前而言,将区块链视为一个共享的、复制的交易系统就足够了,它通过智能合约进行更新,并通过一个叫做共识的协作过程保持一致。

区块链有什么用?

当前系统记录

当今的交易网络只是稍微更新的网络版本,即本地存储记录变更为由第三方中介的多账本记录方案(但各家账本内容仅与自身相关),该记录方式自从商业记录被保存以来就已经存在了。业务网络的成员彼此之间进行交易,但他们保持各自的交易记录。而他们所做的事情——无论是16世纪的佛兰德还是今天的证券——都必须在每次出售的时候确定他们的出处,以确保出售某件物品的企业拥有一串头衔(合法记录)来证明他们的所有权。

如下图所示,即当前系统记录方案:

HyperLedger Fabric Introduction——区块链超级账本介绍第4张

现代科技已经将这一过程从石片、纸质文件升级到硬盘和云平台,但底层结构是一样的。并不存在统一的系统来管理网络参与者的身份,因此对参与者的交易信息建立可靠的来源是一件非常费力且痛苦的事情,就好比证券交易的清理就需要耗费数日的时间来操作(世界上的证券交易量高达数万亿美元)。合同必须手动签署和执行,系统中的每个数据库都包含唯一的信息,因此代表了会出现的一个单点故障。

在当今信息共享的过程中,构建一个跨越商业网络的记录系统是不可能的,尽管可见性和信任的需求是清晰的。

区块链的区别

如果由“现代”交易系统替代哪些的无效率的方式,那么商业网络就有了在网络上建立身份、执行事务和存储数据的标准方法吗?如果想要建立一个资产的来源,并且可以通过查看曾经写过的事务列表,还不允许更改,那么这个来源就是可以被信任的,那该怎么实现呢?

设想中的商业网络如下图所示:

HyperLedger Fabric Introduction——区块链超级账本介绍第5张

这就是一个区块链网络。每一个参与者都有自己本地复制的账本。除了账本信息被共享之外,更新账本的过程也被共享。不同于今天的系统,一个参与者的私人程序被用来更新他们的私人账本,一个区块链系统已经共享程序来更新共享的账本。

由于能够通过共享的账本来协调业务网络,区块链网络可以减少与私人信息和处理相关的时间、成本和风险,同时还能提高信任度和可见度。

通过上文介绍,现在应该大致了解区块链是什么,以及它为什么有用。还有很多其它重要的细节,但是它们都与信息和过程共享的基本思想有关。

HyperLedger Fabric是什么?

Linux基金会在2015年创立了HyperLedger Fabric,以推进跨行业的区块链技术。它没有宣布单一的区块链标准,而是鼓励一种合作的方式,通过社区进程开发区块链技术,知识产权鼓励开放开发,并随着时间的推移采用关键标准。

HyperLedger Fabric是HyperLedger上的区块链项目之一,就如同其它区块链技术一样,它有一个账本,使用智能合约,并且是一个由参与者管理他们的交易的系统。

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

HyperLedger Fabric还提供了几个可插拔的组件。账本数据可以以多种格式存储,一致的机制可以被转换和输出,并且支持不同的MSPs。

HyperLedger Fabric也提供了创建通道(channel)的能力,允许一组参与者创建一个单独的共同维护的交易账本。对于有些参与者可能是竞争对手的网络来说,这是一个特别重要的选择,他们不希望自己的每笔交易都能获得——例如,他们向一些参与者提供了一个特别的价格,而不是其他参与者。如果两个参与者形成一个通道(channel),那么这些参与者——以及其他参与者——都有该渠道的分类账本。

共享账本

HyperLedger Fabric有一个分类子系统,包括两个组成部分:世界状态(world state)和事务日志(transaction log)。每个参与者都有一份账本的副本到他们所属的每一个HyperLedger Fabric的网络上。

在给定的时间点上,世界状态(world state)组件描述了总账的状态。它是账本的数据库。事务日志(transaction log)组件记录所有导致当前世界状态值的事务。这是世界状态(world state)的更新历史。那么,账本是世界状态(world state)数据库和事务日志(transaction log)历史的组合。

该账本为世界状态(world state)提供了可替换的数据存储方案。默认情况下,这是一个LevelDB键值存储数据库。事务日志(transaction log)不需要是可插拔的,它只是记录了区块链网络使用的账本数据库之前和之后的值。

智能合约

HyperLedger Fabric的智能契约是用Chaincode编写的,并且当应用程序需要与账本进行交互时,被应用程序外部的应用程序调用。在大多数情况下, Chaincode只与总账的数据库组件交互,例如世界状态(例如,查询它),而不是事务日志。

Chaincode可以用几种编程语言实现,目前支持的chaincode编写的是GO语言,在今后的发行版中将会逐步新增Java和其它语言的支持。

隐私

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

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

共识

事务必须按照它们发生的顺序写在账本上,即使它们可能是网络中不同的参与者生成的。要做到这一点,必须建立事务的顺序,并且必须在账本中建立一种拒绝错误事务(或恶意的)的方法。

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

HyperLedger Fabric的设计使得网络启动者可以选择一种最能代表参与者之间关系的共识机制。就像隐私一样,需要有一系列的需求;从人际关系高度结构化的网络到更加对等的网络。

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

如何学习HyperLedger Fabric

可以参考Hyperledger Fabric 1.0 从零开始,英文阅读能力好的可以直接通过官网的教程Getting Started

官网中提供了大量的教程,可以帮助了解一个区块链网络中的大多数关键组件,了解它们如何相互作用,还能在官网中得到代码等干货,并针对运行的区块链网络运行一些简单的事务。官网还为提供了一些教程,帮助可以考虑使用HyperLedger Fabric来操作一个区块链网络。

免责声明:文章转载自《HyperLedger Fabric Introduction——区块链超级账本介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇马云最新演讲:我是瞎子骑瞎老虎背上,但活了下来【大话存储】学习笔记(4,5章),RAID下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

端口、系统服务、系统进程概念

 端口    计算机“端口”是英文port的义译,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。 在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,A...

【原】用Java编写第一个区块链(一)

  写这篇随笔主要是尝试帮助自己了解如何学习区块链技术开发。  【本文禁止任何形式的全文粘贴式转载,本文来自zacky31的随笔】 目标: 创建一个最基本的“区块链” 实现一个简单的挖矿系统 前提: 对面向对象编程有一定的基础 注意: 值得注意的是,这不会是一个完整的功能,恰恰相反,这是一个概念证明的实例,可以帮助您进一步了解区块链。 准备:   我将...

精确时间协议PTP研究【转】

转自:http://www.coinv.com/page/pid/492.html 摘要:PTP(Precision Time Protocol)协议基于以太网,能够达到亚微妙级的对时精度,在模态分析和振动测试等领域将有着广阔的应用前景。首先介绍了PTP协议的基本原理及工作流程,接着剖析了关键数据结构及模块,最后给出了测试结果和下一步要作的工作。 关键词...

从零开始学区块链(4)

转自:区块链大师 1. 传统分布式一致性算法和区块链共识过程的异同点 相同点: Append only(只能增加) 强调序列化 少数服从多数原则 分离覆盖的问题:即长链覆盖短链区块,多节点覆盖少数节点日志 不同点: 传统分布式一致性算法大多不考虑拜占庭容错(Byzanetine Paxos除外),即假设所有节点只发生宕机、网络故障等非人为问题,并不考...

TensorFlow利用A3C算法训练智能体玩CartPole游戏

本教程讲解如何使用深度强化学习训练一个可以在 CartPole 游戏中获胜的模型。研究人员使用 tf.keras、OpenAI 训练了一个使用「异步优势动作评价」(Asynchronous Advantage Actor Critic,A3C)算法的智能体,通过 A3C 的实现解决了 CartPole 游戏问题,过程中使用了贪婪执行、模型子类和自定义训练循...

[学习笔记]云计算扫盲

 个人小站,正在持续整理中,欢迎访问:http://shitouer.cn 小站博文地址:[学习笔记]云计算扫盲 何为云计算?最简单最形象的一句话:Anyone, anytime, anywhere, any channel, with any devices, accessing any services. Forrester对云计算的定义:A stan...