Hyperledger Fabric

Hyperledger Fabc提供分布式账本管理方案,针对区块链业务开发,可以帮助企业建立区块链业务管理平台,可以在平台管理交易、管理订单,管理资产,管理分类账,这款软件功能非常丰富,针对企业开发,支持在软件查询分类账,支持查看历史数据,支持创建交易平台,帮助开发人员快速构建符合企业业务需求的区块链管理系统,如果您使用区块链办公就可以通过这款框架开发相关的业务管理系统,结合软件提供的插件、组件、API等资源就可以部署新的工作系统!

Hyperledger Fabc软件功能

Hyperledger Fabc是分布式账本解决方案的平台,其模块化架构提供了高度的机密,灵活,灵活和可扩展。它旨在支持不同组件的可插拔实现,并适应整个经济生态系统中存在的复杂和复杂。

Hyperledger Fabc提供了独特的弹和可扩展架构,将其与其他区块链解决方案区分开来。规划企业区块链的未来需要在经过全面的开源架构的基上进行构建。Hyperledger Fabc是您的起点。

Hyperledger Fabc是一个开放源代码企业级许可分布式账本技术(DLT)平台,设计用于企业环境,与其他流行的分布式账本或区块链平台相比,它提供了一些关键的区分功能。

差异化的一个关键点是Hyperledger是在Linux基金会下建立的,它本身有着悠久而成功的历史,它在开放式治理下培育了开源项目,这些项目发展了强大的可持续社区和繁荣的生态系统。Hyperledger由多元化的技术指导委员会管理,Hyperledger Fabc项目由来自多个组织的多元化人员管理。自最早成立以来,它的开发社区已发展到35个以上的组织和近200个开发人员。

Fabc具有高度模块化和可配置的体系结构,可针对银行,金融,保险,医疗保健,人力资源,供应链甚至数字音乐交付等广泛的行业用例进行创新,多功能和优化。

Fabc是第一个支持以通用编程语言(例如Java,Go和Node.js)而非受约束的领域特定语言(DSL)编写的智能合约编写的分布式分类帐平台。这意味着大多数企业已经具备开发智能合约所需的技能,并且不需要额外的培训来学习新的语言或DSL。

Fabc平台也是经过许可的,这意味着,与公共的未经许可的网络不同,参与者是彼此了解的,而不是匿名的,因此是完全不受信任的。这意味着,尽管参与者之间可能不会完全信任对方(例如,他们可能是同一行业的竞争者),但网络可以在治理模型下运行,该治理模型是基于参与者之间确实存在的信任而建立的,例如处理争议的法律协议或框架。

Hyperledger Fabc软件特色

Hyperledger Fabc专门设计为具有模块化体系结构。无论是可插拔共识,可插拔身份管理协议(例如LDAP或OpenID Connect),密钥管理协议还是密码库,该平台的核心都经过了配置,可以满足企业用例需求的多样。

在较高的层次上,Fabc由以下模块化组件组成:

可插拔的订购服务在交易顺序上达成共识,将区块广播给同级。

可插拔成员资格服务提供商负责将网络中的实体与密码身份相关联。

可选的对等八卦服务通过向其他对等点订购服务来分发输出的块。

智能合约(“链码”)在容器环境(例如Docker)中运行以进行隔离。它们可以用标准编程语言编写,但不能直接访问分类帐状态。

账本可以配置为支持各种DBMS。

可插拔的认可和验证策略实施,可以针对每个应用程序进行配置。

Hyperledger Fabc教程

使用结构测试网络

下载Hyperledger Fabc Docker映像和示例后,可以使用fabc-samples存储库中提供的脚本来部署测试网络 。提供测试网络是为了通过在本地计算机上运行节点来了解Fabc。开发人员可以使用网络来测试其智能合约和应用程序。该网络只能用作教育和测试的工具,而不能用作建立网络的模型。通常,不建议对脚本进行修改,否则可能会网络。它基于有限的配置,不应用作部署生产网络的模板:

它包括两个对等组织和一个订购组织。

为简单起见,配置了一个单节点Raft订购服务。

为了降低复杂,未部署TLS证书颁发机构(CA)。所有证书均由根CA颁发。

该示例网络使用Docker Compose部署了一个Fabc网络。由于节点在Docker Compose网络中是隔离的,因此未将测试网络配置为连接到其他正在运行的Fabc节点。

要了解如何在生产中使用Fabc,请参阅部署生产网络。

注意:这些说明已通过验证,可与提供的tar文件中的最新稳定Fabc Docker映像和预编译的设置实用程序一起使用。如果使用当前master分支中的图像或工具运行这些命令,则可能会遇到错误。

在你开始之前

在运行测试网络之前,您需要克隆fabc-samples 存储库并下载Fabc映像。确保已安装前提条件并安装了示例,二进制文件和Docker映像。

注意:测试网络已通过Docker Desktop 2.5.0.1版成功验证,目前是推荐的版本。更高版本可能无常工作。

建立测试网络

您可以test-network在fabc-samples存储库目录中找到用于启动网络的脚本。使用以下命令导航到测试网络目录:

cd fabc-samples/test-network

在此目录中,您可以找到带注释的脚本,network.sh该脚本使用本地计算机上的Docker映像站立在Fabc网络上。您可以运行 以打印脚本帮助文本:./network.sh -h

从test-network目录内部,运行以下命令以从以前的任何运行中删除任何容器或工件:

./network.sh down

,您可以通过发出以下命令来启动网络。如果尝试从另一个目录运行脚本,则会遇到问题:

./network.sh up

此命令创建一个结构网络,该结构网络由两个对等节点(一个订购节点)组成。您在运行时不会创建任何渠道,尽管我们将在以后的步骤中实现。如果命令成功完成,您将看到正在创建的节点的志:./network.sh up

测试网络的组成部分

部署测试网络后,您可能需要一些时间来其组件。运行以下命令以列出您的计算机上运行的所有Docker容器。您应该看到该network.sh脚本创建的三个节点:

docker ps -a

与Fabc网络交互的每个节点和用户都必须属于一个组织才能参与网络。测试网络包括两个对等组织,Org1和Org2。它还包括网络订购服务的单个订购者组织。

对等是任何Fabc网络的基本组成部分。对等方存储区块链分类帐并在将交易提交到分类帐之前对其进行验证。对等方运行包含业务逻辑的智能合约,该业务逻辑用于管理区块链分类账上的资产。

网络中的每个对等方都必须属于一个组织。在测试网络中,每个组织各自一个对等方,peer0.org1.example.com 并且peer0.org2.example.com。

每个Fabc网络还包括订购服务。当对等方验证交易并将交易块添加到区块链分类账中时,他们并不确定交易的顺序或将其包括在新的块中。在分布式网络上,对等点可能彼此相距很远,并且对创建事务的时间没有共同的看法。在交易顺序上达成共识是一个代价高昂的过程,这会给对等方造成开销。

订购服务允许对等方专注于验证交易并将其提交到分类账。在订购节点收到客户认可的交易后,他们就交易顺序达成共识,将其添加到区块中。将这些块分发到对等节点,对等节点将这些块添加到区块链分类账中。

示例网络使用由订购者组织作的单节点Raft订购服务。您可以看到正在计算机上运行的订购节点orderer.example.com。尽管测试网络仅使用单个节点订购服务,但是生产网络将具有多个订购节点,这些订购节点由一个或多个订购者组织作。不同的排序节点将使用Raft共识算法来就网络上的事务顺序达成协议。

建立频道

现在,我们的机器上正在运行对等节点和订购者节点,我们可以使用该脚本为Org1和Org2之间的事务创建Fabc通道。通道是特定网络成员之间的专用通信层。频道只能由受邀加入该频道的组织使用,并且对网络的其他成员不可见。每个通道都有一个单独的区块链分类帐。被邀请的组织将其同行“加入”渠道以存储渠道分类帐并验证渠道上的交易。

您可以使用network.sh脚本在Org1和Org2之间创建频道,并将其对等方加入该频道。运行以下命令以使用默认名称创建频道mychannel:

./network.sh Channel

如果命令成功执行,则可以在志中看到以下消息:

========= Channel succesully joined ===========

您也可以使用channel标志创建具有自定义名称的频道。例如,以下命令将创建一个名为的通道channel1:

./network.sh Channel -c channel1

通道标志还允许您通过指定不同的通道名称来创建多个通道。创建mychannel或后channel1,您可以使用以下命令创建另一个名为的频道channel2:

./network.sh Channel -c channel2

如果要一步一步建立网络并创建频道,可以将up和Channel模式一起使用:

./network.sh up Channel

通道配置(configtx)

笔记

本主题描述了当尚未使用系统通道发生块自举网络时如何配置通道。有关配置结构(包括系统通道的配置)的,请 从v2.2文档中查看“ 通道配置(configtx) ”。

Hyperledger Fabc区块链网络的共享配置存储在一个配置事务中,每个通道一个。通常,每个配置事务都使用简称 configtx来引用。

通道配置具有以下重要属:

1、版本化:配置的所有元素都有一个关联的版本,每次修改都会对其进行升级。此外,每个提交的配置都会接收一个序列号。

2、允许的:配置的每个元素都有一个关联的策略,该策略控制是否允许对该元素进行修改。拥有先前configtx副本(并且没有其他)的任何人都可以基于这些策略来验证新配置的有效。

3、层次结构:根配置组包含子组,层次结构的每个组都有关联的值和策略。这些策略可以利用层次结构从较低级别的策略中一级导出策略。

配置剖析

配置作为类型的事务存储HeaderType_CONFIG 在一个块中,没有其他事务。这些块称为 配置块,第一个称为 Genesis块。

用于配置的原型结构存储在中 fabc-ptos/common/configtx.pto。类型的信封HeaderType_CONFIG将ConfigEnvelope消息编码为 Payload data字段。的原型ConfigEnvelope定义如下:

该last_update字段在下面的“更新到配置”部分中定义,但仅在验证配置而不读取时才是必需的。而是将当前提交的配置存储在config包含Config 消息的字段中。

sequence对于每个已提交的配置,该数字将增加一。该channel_gup字段是包含配置的根组。该ConfigGup结构是递归定义的,并构建了一个分组树,每个分组都包含值和策略。它的定义如下:

由于ConfigGup是递归结构,因此具有层次结构。为了简化Go语法,表达了以下示例。

每个组在配置层次结构中定义一个级别,每个组具有一组关联的值(由字符串键索引)和策略(也由字符串键索引)。

请注意,值,策略和组都有一个version和一个 mod_policy。的version元素的是,元件被修改的每个时间递增。将mod_policy被用来管理所需的签名修改该元素。对于组,修改是在“值”,“策略”或“组”映中添加或删除元素(或更改mod_policy)。对于“值”和“策略”,修改将分别更改“值”和“策略”字段(或更改 mod_policy)。mod_policy在配置的当前级别的上下文中评估每个元素。考虑下面定义的示例mod策略Channel.Gups[“Application”](此处,我们使用Go map引用语法,因此 Channel.Gups[“Application”].Policies[“policy1”]是指基 Channel组的Application组的Policiesmap的 policy1策略。)

policy1 映到 Channel.Gups[“Application”].Policies[“policy1”]

Org1/policy2 映到 Channel.Gups[“Application”].Gups[“Org1”].Policies[“policy2”]

/Channel/policy3 映到 Channel.Policies[“policy3”]

请注意,如果mod_policy引用的策略不存在,则不能修改该项目。

Hyperledger Fabc新增功能

更高的私密:由于以前所有订购节点都已加入系统通道,因此网络中的每个订购节点都知道该订购服务上每个通道的存在。现在,订购节点仅知道其加入的渠道。

可伸缩:当系统通道上定义了大量的订购节点和订购通道时,订购节点要花很长时间才能就所有通道的成员资格达成共识。现在,订购服务可以通过将订购节点连接到特定渠道,以分散的方式水平扩展。

收益

将订购节点加入频道的简单过程。

能够列出订购节点同意的渠道。

从订购节点移除渠道的简单过程,该过程自动清除与该渠道关联的模块。

对等组织无需与系统通道的管理员协调即可创建或更新其MSP。

分类帐快照

现在可以对一个对等方的频道(包括其状态数据库)进行快照,并根据快照将新对等方(在同一组织或不同组织中)加入该信道。

使用分类帐快照具有以下优点:

自从创世块以来,对等方不需要处理所有块:自从创世块以来,对等方可以在不处理所有先前块的情况下加入通道,从而大大减少了将对等方加入现有通道所需的时间。

对等方可以使用最新的通道配置加入频道:由于快照包含最新的频道配置,因此对等方现在可以使用最新的频道配置加入频道。如果自创世以来,关键通道配置(例如订购者端点或TLS CA证书)已更新,则这一点尤其重要。

降低存储成本:自从生成块以来,通过快照加入的对等方不会产生所有块的存储成本。

状态点:对等管理员可以快照当前通道状态,并与同一组织或不同组织中的其他对等进行比较,以验证每个对等上账本的一致和完整。商定的快照可用作新加入对等方的点和基。

上一篇 2022-11-28

相关推荐

  • Hyperledger Fabric

    Hyperledger Fabc提供分布式账本管理方案,针对区块链业务开发,可以帮助企业建立区块链业务管理平台,可以在平台管理交易、管理订单,管理资产,管理分类账,这款软件功能...
正在提交中,请稍等片刻...

发表回复

请登录后评论...
登录后才能评论

评论列表 (0条)