任何人都可以在不提供任何链接的情况下详细解释PBFT 算法吗?以及它在hyperledger中的工作方式。所以,一旦交易被发送到blockchain
:
谁验证交易?
交易如何达成共识?
交易如何提交到区块链?
任何人都可以在不提供任何链接的情况下详细解释PBFT 算法吗?以及它在hyperledger中的工作方式。所以,一旦交易被发送到blockchain
:
谁验证交易?
交易如何达成共识?
交易如何提交到区块链?
“Hyperledger”是 Linux 基金会旗下的区块链联盟。目前 Hyperledger 下至少有 4 种不同的区块链框架实现:
在 Fabric v0.6 中:
所有验证对等方保持开放连接。您可以将您的交易提交给他们中的任何一个,该交易将被广播给网络中的其他对等方。其中一位同行被选为“领导者”。在将要生成新块的那一刻:
在 Fabric v1.0 中:
此版本仍在开发中。在 v1 中,没有“leader”,单独的服务“ Orderer ”负责一个区块中的交易顺序。该服务是可插拔的,并宣布将提供 3 个不同的选项:
在科尔达:
不使用 PBFT。此实现使用另一种架构方法。
在 Corda 中,共识由公证人提供。公证人使用哪种共识算法取决于公证人。BFT 是一种选择。您可以在此处查看 Corda BFT 公证样本:https ://github.com/corda/corda/tree/master/samples/notary-demo 。
要回答您的问题:
(1)。谁验证交易?
交易由一个或多个公证人组成的集群验证。公证人是唯一目的是消除双花尝试冲突的节点。
(2)。交易如何达成共识?
使用标准的 BFT 算法。公证人集群中的每个节点都会投票决定他们是否认为交易是双花尝试。最终决定基于多数规则,并且可以容忍集群中多达 1/3 的节点是恶意的。
(3)。交易如何提交到区块链?
在 Corda 中,事务提交的信息没有中央存储。公证集群只是将已用状态引用添加到内部数据库表。它将根据该表检查未来花费状态的尝试,如果状态引用已经存储在那里,则拒绝花费尝试。
pbft 是 Barbara Liskov 和 Miguel Castro 在 1999 年为了防止恶意攻击而给出的共识算法,因为恶意攻击和软件错误会导致故障节点表现出拜占庭(即任意)行为。与以前只在同步系统上工作的 bft 算法相比,pBFT 被设计为在异步系统中高效工作。
这是研究论文,其中指出
容忍拜占庭错误的状态机复制的实用算法。该算法提供活性和安全性,最多提供 ⌊n-1 / 3⌋ 在所有副本中同时出现故障。这意味着客户端最终会收到对其请求的回复,并且根据线性化,这些回复是正确的。该算法适用于互联网等异步系统,它包含重要的优化,使其能够高效执行
该算法的工作原理大致如下:
与所有状态机复制技术一样,对副本有两个要求:
鉴于这两个要求,该算法通过保证所有无故障的副本在失败的情况下就执行请求的总顺序达成一致来确保安全性。
pbft 的局限性:
只有当分布式网络中的节点数量较少时,pbft 共识算法才有效。
超级账本结构:
根据 Hyperledger Fabric v1.4,目前使用的共识机制包括 SOLO、Kafka 和 Raft。
超级账本锯齿:
根据 Hyperledger Sawtooth,如何使用 pbft在这里得到了很好的解释
上面缺少来自 Hyperledger Sawtooth 的共识算法,所以它们是:
以下是其他一些共识算法: