30

任何人都可以在不提供任何链接的情况下详细解释PBFT 算法吗?以及它在hyperledger中的工作方式。所以,一旦交易被发送到blockchain

  1. 谁验证交易?

  2. 交易如何达成共识?

  3. 交易如何提交到区块链?

4

4 回答 4

22

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

  • 织物 (IBM)
  • 科尔达 (R3)
  • 伊吕波
  • 锯齿湖(英特尔)

在 Fabric v0.6 中

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

  1. 领导者对应该包含在一个块中的交易候选进行排序,并将这个有序交易列表广播给网络中的所有其他验证对等方。
  2. 当每个 Validation Peers 接收到有序的交易列表时,每个验证 Peers 执行以下操作:
    1. 它开始一一执行有序事务。
    2. 一旦所有交易被执行,它就会计算新创建的区块的哈希码(哈希码包括已执行交易的哈希和世界的最终状态)。
    3. 然后它将其答案(生成的哈希码)广播给网络中的其他对等方,并开始计算来自它们的响应。
    4. 如果它发现所有验证节点中有 2/3 具有相同的哈希码,它会将新块提交到其本地账本副本。

在 Fabric v1.0 中

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

  1. Solo - 单个进程负责排序
  2. Kafka orderer - 利用 Kafka pubsub 系统执行排序
  3. PBFT - 尚未实施。

在科尔达

不使用 PBFT。此实现使用另一种架构方法。

于 2017-01-18T12:47:10.830 回答
4

在 Corda 中,共识由公证人提供。公证人使用哪种共识算法取决于公证人。BFT 是一种选择。您可以在此处查看 Corda BFT 公证样本:https ://github.com/corda/corda/tree/master/samples/notary-demo 。

要回答您的问题:

(1)。谁验证交易?

交易由一个或多个公证人组成的集群验证。公证人是唯一目的是消除双花尝试冲突的节点。

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

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

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

在 Corda 中,事务提交的信息没有中央存储。公证集群只是将已用状态引用添加到内部数据库表。它将根据该表检查未来花费状态的尝试,如果状态引用已经存储在那里,则拒绝花费尝试。

于 2018-02-02T09:01:02.367 回答
2

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

是研究论文,其中指出

容忍拜占庭错误的状态机复制的实用算法。该算法提供活性和安全性,最多提供 ⌊n-1 / 3⌋ 在所有副本中同时出现故障。这意味着客户端最终会收到对其请求的回复,并且根据线性化,这些回复是正确的。该算法适用于互联网等异步系统,它包含重要的优化,使其能够高效执行

该算法的工作原理大致如下:

  1. 客户端向主服务器发送调用服务操作的请求
  2. 主节点将请求多播到备份节点
  3. 副本执行请求并向客户端发送回复
  4. 客户端等待来自不同副本的 1 个具有相同结果的回复;这是操作的结果。

与所有状态机复制技术一样,对副本有两个要求:

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

鉴于这两个要求,该算法通过保证所有无故障的副本在失败的情况下就执行请求的总顺序达成一致来确保安全性。

pbft 的局限性:

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

超级账本结构:

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

超级账本锯齿:

根据 Hyperledger Sawtooth,如何使用 pbft在这里得到了很好的解释

于 2019-11-12T13:04:24.600 回答
0

上面缺少来自 Hyperledger Sawtooth 的共识算法,所以它们是:

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

以下是其他一些共识算法:

  • PoW 工作量证明。完成工作(CPU 密集型 Nakamoto 式共识算法)。通常用于无许可区块链
  • PoS 权益证明。基于最多财富或年龄(stake)的中本式共识算法
  • PBFT实用拜占庭容错。使用状态机的“经典”共识算法。使用领导者和块选举。PBFT 是一种三阶段网络密集型算法(n^2 条消息),因此无法扩展到大型网络
于 2018-08-17T21:53:35.620 回答