async def _open_dbs(self, for_sync, compacting): assert self.utxo_db is None # First UTXO DB self.utxo_db = self.db_class('utxo', for_sync) if self.utxo_db.is_new: self.logger.info('created new database') self.logger.info('creating metadata directory') os.mkdir('meta') with util.open_file('COIN', create=True) as f: f.write(f'ElectrumX databases and metadata for ' f'{self.coin.NAME} {self.coin.NET}'.encode()) if not self.coin.STATIC_BLOCK_HEADERS: self.headers_offsets_file.write(0, bytes(8)) else: self.logger.info(f'opened UTXO DB (for sync: {for_sync})') self.read_utxo_state() # Then history DB self.utxo_flush_count = self.history.open_db(self.db_class, for_sync, self.utxo_flush_count, compacting) self.clear_excess_undo_info() # Read TX counts (requires meta directory) await self._read_tx_counts()
def read_raw_block(self, height): """Returns a raw block read from disk. Raises FileNotFoundError if the block isn't on-disk.""" with util.open_file(self.raw_block_path(height)) as f: return f.read(-1)