I am interested in understanding the structure of Monero's database LMDB and using
mdb_stat to extract relevant information from it. I am assuming querying it directly (i.e. via
mdb_stat) for information should be a lot faster and easier than doing so through the wallet, daemon or RPC. Is that the case?
For instance, I was hoping to be able to extract information about blocks, transactions, outputs, rings, Pedersen commitments, range proofs, number of rings that use a given output etc, and I think it would be invaluable to have some sort of specific manual on how to conduct such queries on Monero's LMDB, and what sort of information is actually available in this data structure.
While I was able to follow the examples here and perform the first two queries successfully (for number of outputs and key images, respectively), when I tried to adapt them to queries about the number of transactions it didn't seem to work:
$ mdb_stat -s output_txs ~/.bitmonero/lmdb Status of output_txs Tree depth: 1 Branch pages: 0 Leaf pages: 1 Overflow pages: 0 Entries: 30668498 $ mdb_stat -s spent_keys ~/.bitmonero/lmdb Status of spent_keys Tree depth: 1 Branch pages: 0 Leaf pages: 1 Overflow pages: 0 Entries: 26564596 $ mdb_stat -s txs ~/.bitmonero/lmdb Status of txs Tree depth: 0 Branch pages: 0 Leaf pages: 0 Overflow pages: 0 Entries: 0
Does that mean that I am doing a badly formed search, or is it that
txs is not yet populated with transaction data?
I understand that there exists a manual for
mdb_stat itself, so maybe it is just me, but I figured that everyone could benefit from having a more explicit and comprehensive guide with examples specific to Monero's database.
Thanks in advance!