Each transaction is ordered by an ordering service node, where it uses its internal implementation-specific consensus mechanism.
Hyperledger Fabric v1.0 comes with 2 ordering service implementations:
- Solo orderer -- mainly used for development and testing; has 1 node and simply batches the transactions into blocks
- Kafka based orderer -- the orderer nodes send the transactions to a kafka queue from which all orderer nodes "pull" the transactions in the same order, and then cut the same blocks; each orderer sends into the queue a "time to cut a block" message, and then when the first message reaches the queue, a block is cut by all ordering service nodes