HyperLedger Fabric中是否存在挖掘区块的过程?

13
3个回答

34

Hyperledger 验证节点(VP)不挖掘块,也不在它们之间共享块。以下是其工作原理:

  1. 交易发送给一个可信的 VP。
  2. VP 将交易广播给所有其他 VP。
  3. 所有 VP 达成共识(使用 PBFT 算法)以确定执行交易的顺序。
  4. 所有 VP 按照全局顺序“自主”执行交易并构建一个块(主要计算哈希),其中包含已执行的交易。

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


9
好的,我会尽力以清晰简洁的方式翻译以下内容: PBFT 是指实用拜占庭容错(Practical Byzantine Fault Tolerance)算法。该算法的详细信息可以在维基百科上查看:https://en.wikipedia.org/wiki/Byzantine_fault_tolerance - christo4ferris
我认为,在排序中达成共识比比较交易结果要容易得多,因为交易结果可以是多种类型(由于链码允许在链码本身中定义所有操作,或者交易可能只是一个查询交易)。 - Marc Cayuela
@Marc Cayuela Rafols:如果所有的VP都运行相同的交易,那么哪个区块将合并到链中? - Gokula Murthy
@GokulaMurthy 每个VP都有自己的链,因此每个VP将把它合并到自己的链中(由于执行顺序是之前所有VP都同意的,因此所有VP最终将处于相同的区块链状态)。 - Marc Cayuela
1
@MarcCayuelaRafols 但是在所有VP中执行相同的交易是不必要的,对吧?另外我的问题是,“当其他授权用户发起查询来自分类账的某些数据的交易时,它将从哪个VP的链拉取?” - Gokula Murthy
显示剩余3条评论

9
根据Hyperledger Fabric 1.X:
  1. 用户通过Client SDK向背书节点发送交易提案。
  2. 背书节点检查交易并进行背书提案(包含读/写集合(先前值 / 更改后的值)),然后再将其发送回客户端SDK。
  3. 客户端SDK等待所有背书,一旦获得所有背书提议,它将发起一个调用请求并发送给Orderer。
  4. Orderer通过检查定义的策略(共识)验证客户端SDK发送的调用请求,并验证交易,并将其添加到区块中。
  5. 根据块的定义配置,在指定时间或交易数之后,使用交易哈希、元数据和上一个块哈希来形成块的哈希。
  6. Orderer将交易块“分发”到通道上的所有节点。
  7. 所有提交节点验证背书策略,并确保自事务执行以来读取集合变量的分类帐状态没有更改。此后,所有块中的交易都会被更新,并且分类帐将使用新块和资产的当前状态进行更新。
分类账包括:
  • 1)当前状态数据库(LevelDB或CouchDB)
  • 2)区块链(文件)(链接块)
查看Hyperledger Fabric的交易流程 参考图片请见Hyperledger Fabric Transaction Flow

讲解得很清楚,@pavan,谢谢分享。 - Niraj Kumar

2
Hyperledger是一个区块链技术的总称。其中之一是前面提到的Hyperledger Fabric。Hyperledger Sawtooth也不使用挖矿,并添加了这些共识算法:
- PoET:经过时间证明(可选的Nakamoto风格共识算法,用于Sawtooth)。带有SGX的PoET具有BFT,而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密集型的中本聪式共识算法)。通常用于无需许可的区块链。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接