Reputation: 480
I do not understand if read-write sets are working for private data in Hyperledger Fabric.
From what I understand, when peers are receiving blocks from orderer, which contain hashes of private data transactions, the peers might not have the private data.
Doc says:
If the requesting peer is not able to retrieve the private data within the >pullRetryThreshold, it will commit the transaction to it’s blockchain >(including the private data hash), without the private data.
But it means that during validatioin step, such peer without private data will be able only to decide that transaction is invalid in case there was exactly the same transaction before.
But what if there is case, when some other transaction happened which is not exactly the same, but it changed the state of key-value pair we are changing?
In normal case (without private data) it will be marked as invalid using checking by read-write logic.
How does it work in case of private data?
I have read https://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data-arch.html and https://hyperledger-fabric.readthedocs.io/en/release-1.4/private-data/private-data.html on the topic, but still the behavious is not clear;
Upvotes: 0
Views: 171
Reputation: 5140
Endorsement policy validation is done before private data fetching.
The read-write set MVCC checks are done after private data fetching, but they don't care about the private data itself, just the versions.
Upvotes: 1