Full disclosure, some users have asked about this but the answers have somehow diverted leaving the actual question unanswered.
So, In Hyperledger Fabric:
- Where are the physical block files stored on a peer instance?
- How Often or when is the World State validated against the underlying ledger/blockchain?
I know that LevelDB is used for the World State and it can be switched to CouchDB and I read somewhere that the ledger is also indexed in LevelDB but that again could refer to the World State and no one seems to know the location of the ledger.
I have explored the peer instance and the location /var/hyperledger/production/ledgersData
which further contains directories like chains, historyLeveldb, ledgerProvider, pvtdataStore and the chains directory do contain the channels and then each channel directory has a file blockfile_000000 and based on my current configurations I have executed number of transactions with some delay in between but I don't see any new blocks created under the location I have mentioned.
What freaks me more is that on every peer I have completely removed the ledger directories recursively and my block chain is still working perfectly fine, which begs the question does the world state actually gets validated or do we have to provide our own implementation to validate the world state against the ledger based on our own needs?
My network's relevant configurations:
OrdererType: Kafka
BatchTimeout: 2s
BatchSize:
MaxMessageCount: 10
AbsoluteMaxBytes: 1 MB
PreferredMaxBytes: 512KB
PS: In the logs from Ordering Service I do see logs saying `Going to wait for newer blocks. maxAvailaBlockNumber=[7], waitForBlockNum=[8] and new blocks are created based on the configurations but I don't any file size change in the blockfile_000000 that I mentioned above.