I have several questions regarding Hyperledger-Fabric, for which I did not find a distinct answer in the docs.
1.) World state(s)
The ledger consists of the blockchain (containing the transactions) and the world state (stored in a database). Every transaction is stored in the blockchain forever. Furthermore, it appears like the database does not only store the current value of keys/variables but also past versions (see the following figure from the docs):
So is my understanding correct that the ledger does not only save all transactions but ALSO all world states that ever existed? If so, why save all states from state 0 to the current state? Why not just save a) all transactions and b) only the current world state? Wouldn't that be enough?
****************************
2.) Channels and world state
Assume I have a Hyperledger-Fabric Application, where different members can comment on each other's profile pictures.
Assume further there are three members ("organisations"): Adam, Bob and Sara.
Furthermore, there is a channel between Adam and Bob. And there is a second channel between Adam and Sarah.
Obviously, this means that
- transactions between Adam and Bob are not visible to Sarah
- transactions between Adam and Sarah are not visible to Bob
Assume there is a transaction named "addCommentToProfile", which can be used to add comments to other profiles.
Assume Sarah sends transaction "addCommentToProfile", adding the comment "your hair looks very good!" to Adam's profile.
Obviously, the transaction is not visible to Bob (because it is only part of the channel between Adam and Sarah.)
But is the result of the transaction (a new comment "your hair looks very good!" on Adam's profile) also invisible?
Put differently, given that Adam participates in two different channels - are there also two different world states for Adam - one that is visible to Bob and one that is visible to Sarah?
****************************
3.) "Hyperledger Explorer" versus "Hyperledger Composer Historian"
There is "Hyperledger Composer Historian" (https://hyperledger.github.io/composer/v0.16/business-network/historian) and there is "Hyperledger Explorer" (https://www.hyperledger.org/projects/explorer)
Are they the same thing (i.e. if one uses the Hyperledger Composer Framework, then the "Hyperledger Explorer" is simply called "Hyperledger Composer Historian")? Or are they two different things? In case they are different things:how can I prevent participants from of the business network from accessing "Hyperledger Explorer" records?