<p>In order to guarantee that no party in the channel has tampered data in its own favor you need to present sophisticated endorsement policy to include all required parties and make sure they adequately represented within endorsement policy. Hence making it obligatory for client which issues new transaction to get endorsement from all interested parties, hence ensuring that all have same consistent state. For example if you have two organizations <code>Org1</code> and <code>Org2</code> and they do not trust each other, you would like to create endorsement policy:</p>

<pre><code>AND(Org1.memmber, Org2.member)
</code></pre>

<p>Therefore client will have to collect endorsements from peers of both organization to consider the transaction valid those endorsement have to sign same bytes, which won't be the case if data was forged. You can read more about endorsements in <a href="http://hyperledger-fabric.readthedocs.io/en/release/endorsement-policies.html" rel="nofollow noreferrer">official documentation</a>. There is also a recent <a href="https://arxiv.org/abs/1801.10228" rel="nofollow noreferrer">publication</a> of Fabric architecture which explains it in more details.</p>
Immutability in Hyperledger Fabric
<p>Can someone explain how the immutability is implemented in Hyperledger Fabric? If we have private channel with little amount of peers, how it can be guaranteed, that one side hasn't changed data in it's ledger? </p>