Hyperledger Fabric的共识

时间:2018-04-27 16:28:10

标签: hyperledger-fabric consensus

我是Hyperledger Fabric的新手。我正在阅读Fabric最新版本的文档,但我不清楚Fabric的共识。 Fabric使用的共识是什么?它是如何工作的?请解释一下。

3 个答案:

答案 0 :(得分:5)

我假设您了解区块链上下文中的共识基础知识。 Hyperledger Fabric的共识可以视为一个特殊情况,可能是一个功能强大的。它可以在多个阶段检查事务,以确保写入分类帐的更改的权限,顺序和正确性。

在Fabric中,当您执行事务时,如果没有出错,您可能希望此事务提交到分类帐,即以正确的顺序将事务写入分类帐中的块。然后通过协作过程在网络中的所有参与者之间保持一致。因此,这个确保顺序和数据同步正确性的过程称为共识

HLF标准定义

  

保持分类账交易在整个网络中同步的过程 - 确保分类账仅在交易被相应参与者批准时更新,并且当分类账更新时,它们以相同的顺序更新相同的交易 - 被称为共识

这是通过以下方式在整个交易周期内完成的

  1. 当您提交交易时,即当您在智能合约中调用某个功能时,您使用的客户端SDK必须将该交易提议发送给代言人(特定于该特定渠道中的智能合约)交易提案获取用户的加密凭据以生成唯一签名
  2. 支持同行执行支票份额,提案有效,尝试交易的用户在该渠道中具有相同的权限等。然后他们将模拟交易 - 并创建响应和R / W集。这是作为提案回复发送的,返回SDK。
  3. SDK会累积它们并检查它们,然后将它们发送给订购者。 Orderer将按时间顺序订购交易并创建一个块并将该块发送给相关渠道中的所有同行
  4. 接收块的对象开始检查块中的每个事务(使用Validation System Chaincode),以查看对所有这些事务的认可。 r / w设置正确(MVCC检查)。根据检查,交易可能被标记为有效或无效
  5. 因此,一旦所有检查都正常,则事务被标记为有效并且当前状态被更新,最后写入块并相应地生成事件。这样就可以在Hyperledger结构中的多个阶段实现共识。如果您参考Hyperledger Fabric Transaction Flow

    下面的链接,我想您会更好理解

答案 1 :(得分:0)

Hyperledger Fabric中的共识分为三个阶段:认可,订购和验证。

认可是由参与者认可交易的政策(n个签名中的m个)决定的。(由我们定义)。

订购阶段将获得认可的交易并同意将交易提交到分类帐。(我们可以使用独奏,Kafka和Raft之外的任何订购服务。

验证采用一组已排序的交易并验证结果的正确性。在验证对等期间,对等方将验证订购者发送的交易(成块)是否有效。

答案 2 :(得分:0)

根据Hyperledger Fabric v1.4

  

该平台最重要的差异因素之一是   支持可插入共识协议,使平台能够   更有效地定制以适合特定的用例和信任   楷模。例如,当部署在单个企业中时,或   由受信任的机构操作,完全拜占庭容错   共识可能被认为是不必要的,并且拖累了   性能和吞吐量。在这种情况下,当机   容错(CFT)共识协议可能绰绰有余   而在多方,分散的用例中,更传统的   可能需要拜占庭式容错(BFT)共识协议。

将交易的顺序委托给模块化组件以达成共识,该组件在逻辑上与执行交易并维护分类帐的对等方分离。具体来说就是订购服务。由于共识是模块化的,因此可以根据特定部署或解决方案的信任假设量身定制其实现。这种模块化的体系结构允许平台依赖完善的工具包来进行CFT(崩溃容错)或BFT(拜占庭容错)排序。

Fabric当前提供两种CFT订购服务实现。

  1. 第一个基于Raft协议的etcd库。
  2. 另一个是Kafka(内部使用Zookeeper)。