title: Read (query) transaction flow in Hyperledger Fabric
body: <p>I am trying to understand the "Query" transaction flow in Hyperledger Fabric. I understand the "write" flow in Fabric as it is well documented. However, things are not so clear when a read/query transaction is involved.</p>
  
  <p>This is what I have understood so far:</p>
  
  <ol>
  <li>A client using an SDK prepares a transaction proposal for querying a chaincode.</li>
  <li>The proposal is transmitted via a committing peer to the Endorsing peers which validate as well as simulate the transaction in their end. Assuming everything is successful, the endorsing peers return their endorsements for the proposal. Each endorsement contains, among other things, a <strong>readset</strong> of the world state. Since this is just a query transaction, a <strong>writeset</strong> is not added inside each ensorsement. Is my understanding correct here?</li>
  <li>Once the client receives the required amount of endorsement, it prepares a transaction which is sent to the Orderer.</li>
  </ol>
  
  <p>I am not so sure of the flow after this. A write transaction is understandable: the order, after carrying out some checks, will create a block and propagate the block to all peers connected to the corresponding channel. All peers will append the block in the ledger after carrying out the validation of all transactions in the block, this essentially updates the ledger. </p>
  
  <p>But what about a read transaction? What does the orderer will return upon receiving a read transaction? What will be the flow hereafter?</p>
  
  <p>Any help or pointers will be highly appreciated. </p>
  
  <p>Thanks in advance.</p>