区块是在 HyperLedger Fabric 中开采的吗?

Are blocks mined in HyperLedger Fabric?

我一直在阅读有关 HyperLedger Fabric 项目如何实施开源区块链解决方案的文档:https://github.com/hyperledger/fabric/blob/master/docs/protocol-spec.md

我看到使用了 PBFT 共识算法,但我不明白区块是如何在区块链网络中的所有验证节点之间被挖掘和共享的。

Hyperledger Validating Peers (VPs) 不挖掘块,也不在它们之间共享块。它是这样工作的:

  1. 一笔交易被发送给一位受信任的副总裁。
  2. VP 将交易广播给所有其他 VPs。
  3. 所有 VPs 就执行交易的顺序达成共识(使用 PBFT 算法)。
  4. 所有VPs按照总顺序执行交易"on their own",并用执行的交易构建区块(主要计算哈希)。

所有区块都是相同的,因为:交易执行是确定性的(应该是)并且区块中的 tx 数量是固定的。

根据 Hyperledger Fabric 1.X

  1. 用户通过 Client SDK 将交易提议发送给背书节点。
  2. Endorsing Peer 检查交易并提出交易的背书建议(设置read/write(之前的value/Changed值))并再次发送给客户端SDK。
  3. Client SDK 等待所有背书,一旦它获得所有背书建议,它会发出一个调用请求并发送给 Orderer。
  4. Orderer 通过检查定义的策略(共识)来验证客户端 SDK 的调用请求租金,验证交易并添加到区块。
  5. 根据为区块定义的配置,在指定的时间或数量的交易之后,它通过使用交易哈希、元数据和前一个区块哈希来形成区块的哈希。
  6. 交易块由订购者“交付”给通道上的所有节点。
  7. 所有提交节点验证背书策略,并确保自读取集由事务执行生成以来,读取集变量的分类帐状态没有发生变化。在此之后,区块中的所有交易并使用新区块和当前资产状态更新分类帐。

分类帐包含

  • 1) 当前状态数据库(Level BD 或 Couch DB)
  • 2) 区块链(文件)(链接块)

Read the transaction flow of hyperledger fabric

查看图片以供参考

Hyperledger 是区块链技术的保护伞。上面提到的 Hyperledger Fabric 就是其中之一。 Hyperledger Sawtooth 也不使用挖掘并添加了这些共识算法:

  • PoET 经过时间证明(用于锯齿波的可选中本聪风格共识算法)。带有 SGX 的 PoET 有拜占庭容错。 PoET 模拟器有 CFT。不像 PoW 风格的算法那样 CPU 密集,尽管它仍然可以分叉并有陈旧的块。请参阅 https://sawtooth.hyperledger.org/docs/core/release s/latest/architecture/poet.html
  • 的 PoET 规范
  • RAFT 在任意时间段内选举领导者的共识算法。如果超时则更换领导者。 Raft 比 PoET 快,但不是 BFT(Raft 是 CFT)。 Raft 也不会分叉。
  • 有了不可插拔的共识,无需重新初始化区块链甚至重新启动软件即可更改另一种共识算法。

为了完整起见,比特币(确实使用挖矿)的原始共识算法是:

  • PoW 工作量证明。完成工作(CPU 密集型中本聪风格的共识算法)。通常用于非许可区块链