The header indexes are simple arrays of pointers to headers, organized by height. This provides height-based recovery of blocks in constant time. All other data is within hash tables, which also (nominally) provide constant time recovery by block, transaction, or output hash. The hash table does not use the object's natural hash as the hash table (natural) key. The hash table uses a much faster (foreign) key system. The collision rate is ultimately determined by the configured size of the hash table headers.