在Hyperledger Fabric中,客户端将事务发送给所有订单还是仅发送给一个订购者节点?

时间:2019-12-19 11:26:23

标签: hyperledger-fabric blockchain consensus

客户订购交易时,会将其发送给所有订购者(如PBFT)还是仅发送给一个/几个订购者?

1 个答案:

答案 0 :(得分:1)

答案是:“取决于”。

在Fabric中,共识机制是可插入的,因此-只要实现AtomicBroadcast gRPC API,任何人都可以实现自己的订购服务:

service AtomicBroadcast {
    // broadcast receives a reply of Acknowledgement for each common.Envelope in order, indicating success or type of failure
    rpc Broadcast(stream common.Envelope) returns (stream BroadcastResponse) {}

    // deliver first requires an Envelope of type DELIVER_SEEK_INFO with Payload data as a mashaled SeekInfo message, then a stream of block replies is received.
    rpc Deliver(stream common.Envelope) returns (stream DeliverResponse) {}
}

如果共识服务属于CFT类型,例如Kafka或Raft,则客户只需将交易发送给单个订购者。

但是,那里有unofficial implementations的针对Hyperledger Fabric的拜占庭容错共识服务,在这些实现中,客户不能假设所选订购者会诚实地包含其交易,因此需要发送请求到PBFT文件中的所有节点。

当Fabric将具有官方的BFT订购者时,则需要适当配置客户端。