客户订购交易时,会将其发送给所有订购者(如PBFT)还是仅发送给一个/几个订购者?
答案 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订购者时,则需要适当配置客户端。