本文基于 Fabric v2.0.1
,与 v1.x
版不同,v2
版将 protos
定义放到一个独立仓库 fabric-protos 进行管理,并且使用 protoc
工具生成的具体语言代码也使用独立的仓库存放,如 golang
版 fabric-protos-go。
一、 Orderer
1. AtomicBroadcast
服务定义于 orderer/ab.proto
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);
}
1.1 Broadcast
Broadcast
接口用于接收待排序的消息,包括普通事务 tx
消息和 channel
配置消息。
客户端将事务消息提交到 endorsing peers
预执行 chaincode
并背书读写集结果,由客户端将返回结果提交到 Orderer
进行排序。
1.2 Deliver
Deliver
接口用于向 peers
分发已经过排序 block
数据,peer
节点通过 join channel
从 Orderer
获取已排序的 block
。
2. Cluster
服务定义于