Cool!
ADT here means Abstract Data Type yes?
So block_chain is.. mostly append only?
Just to expand what you said above: block_chain contains these six structures?:
* the index of height of candidate blocks (type: array of record)
* the index of height of confirmed blocks (type: array of record)
* the tx index of tx offsets for a block
* block headers hash table, i guess key = block hash and value = block header data
* transactions slab hash table, i guess key = tx hash and value = raw tx data
* address index: hash table of key = bitcoin address hash, value = linked list