超聚合中的PBFT算法

时间:2017-01-18 03:10:57

标签: blockchain hyperledger corda mining

任何人都可以详细解释 PBFT算法而不提供任何相同的链接。以及它在 hyperledger 中的工作原理。因此,一旦将交易发送到blockchain

(1)。谁验证了交易?

(2)。如何在交易中达成共识?

(3)。交易如何提交给区块链?

4 个答案:

答案 0 :(得分:21)

“Hyperledger”是Linux基金会下的区块链联盟。目前,在Hyperledger下至少有4种不同的区块链框架实现:

  • Fabric(IBM)
  • Corda(R3)
  • 伊吕波
  • Sawtooth Lake(英特尔)

在Fabric v0.6中<​​/ strong>:

所有验证对等体都保持彼此的开放连接。您可以将交易提交给其中任何一个,此交易将被广播给网络中的其他同行。同伴之一被选为“领导者”。在将要生成新块的时刻:

  1. 领导者命令应包含在块中的事务候选者,并将此有序事务列表广播到网络中的所有其他验证对等体。
  2. 当每个验证对等方收到有序的事务列表时,每个验证对等方执行以下操作:
    1. 它开始逐个执行订购的交易。
    2. 一旦执行了所有事务,它将计算新创建的bloc的哈希码(哈希码包括已执行事务的哈希值和世界的最终状态)。
    3. 然后它将答案(产生的哈希码)广播到网络中的其他对等体,并开始计算它们的响应。
    4. 如果发现所有验证对等体中有2/3具有相同的哈希码,则会将新块提交到其分类帐的本地副本。
  3. 在Fabric v1.0中

    此版本仍在开发中。在v1中,没有“领导者”,单独的服务“Orderer”负责一个块中的交易顺序。这项服务是可插拔的,并宣布将有3种不同的选择:

    1. Solo - 单个流程负责订购
    2. Kafka orderer - 利用Kafka pubsub系统执行订购
    3. PBFT - 尚未实施。
    4. 在Corda

      未使用PBFT。此实现使用另一种体系结构方法。

答案 1 :(得分:2)

在Corda,公证人提供了一致意见。公证算子由他们使用的一致性算法决定。 BFT是一种选择。您可以在此处查看Corda BFT公证样本:https://github.com/corda/corda/tree/master/samples/notary-demo

回答你的问题:

<强>(1)。谁验证了交易?

交易由一个或多个公证人的集群验证。公证人是节点,其唯一目的是消除双重花费的冲突。

<强>(2)。如何在交易中达成共识?

使用标准BFT算法。公证集群中的每个节点都会对他们是否认为该交易是双重花费尝试进行投票。最终决定基于多数规则,并且可以容忍群集中最多1/3的节点是恶意的。

<强>(3)。交易如何提交给区块链?

在Corda中,没有交易承诺的中央信息存储。公证集群只是将耗尽的状态引用添加到内部数据库表。它将检查将来对这个表花费状态的尝试,如果状态引用已经存储在那里,则拒绝支出尝试。

答案 2 :(得分:0)

以上内容缺少Hyperledger Sawtooth的共识算法,因此它们是:

  • PoET 经过时间证明(用于锯齿的可选Nakamoto风格共识算法)。 SGX的PoET具有BFT。 PoET Simulator具有CFT。尽管它仍然可以分叉并具有过时的块,但是它不像PoW样式算法那样占用大量CPU资源。请参阅https://sawtooth.hyperledger.org/docs/core/release s / latest / architecture / poet.html上的PoET规范
  • RAFT 共识算法,可在任意时间范围内选举领导者。如果超时,则更换领导者。筏比PoET快,但不是BFT(筏为CFT)。筏也不叉。 Hyperledger Sawtooth具有可拔插共识的优点。无需重新初始化区块链甚至无需重新启动软件即可更改算法。

还有其他一些共识算法:

  • 工作量的工作量证明。完成工作(CPU密集型Nakamoto风格的共识算法)。通常用于无许可的区块链中
  • PoS 权益证明。基于财富或年龄(权益)最多的中本聪风格共识算法
  • PBFT 实用的拜占庭容错能力。一种使用状态机的“经典”共识算法。使用领导者和集体选举。 PBFT是一种三相网络密集型算法(n ^ 2条消息),因此无法扩展到大型网络

答案 3 :(得分:0)

ppft是Barbara Liskov和Miguel Castro在1999年提出的共识算法,目的是防止恶意攻击,因为恶意攻击和软件错误可能导致故障节点表现出拜占庭(即任意)行为。与以前只能在同步系统上运行的bft算法相比,pBFT在异步系统上可以高效工作。

here 是研究论文,其中指出

  

可容忍的状态机复制实用算法   拜占庭断层。该算法既活泼又安全   提供的副本总数中最多不超过n-1 / 3   同时出现故障。这意味着客户最终会收到   对他们的请求的回复,并且根据   线性化。该算法适用于异步系统,例如   互联网,它融合了重要的优化功能,使其能够   高效执行

该算法大致如下:

  1. 客户端向主服务器发送请求以调用服务操作
  2. 主服务器将请求多播到备份
  3. Replicas执行请求并将回复发送给客户端
  4. 客户端使用以下命令等待来自不同副本的1条回复 同样的结果这是手术的结果。

就像所有状态机复制技术一样,副本上有两个要求:

  • 它们必须是确定性的
  • 它们必须以相同的状态开始。

鉴于这两个要求,算法 通过确保所有无故障副本都同意执行的总订单来确保安全性 失败就可以请求。

pbft的限制:

只有当分布式网络中的节点数较少时,pbft共识算法才能有效工作。

超级账本面料:

根据Hyperledger Fabric v1.4,目前使用的共识机制包括SOLO,Kafka和Raft。

超级账本锯齿:

根据Hyperledger Sawtooth,{b3}的使用方法已得到很好的解释here