def delete_chronological_block_window(self, timestamp): validate_uint256(timestamp, title='timestamp') if timestamp % TIME_BETWEEN_HEAD_HASH_SAVE != 0: raise InvalidHeadRootTimestamp("Can only save or load chronological block for timestamps in increments of {} seconds.".format(TIME_BETWEEN_HEAD_HASH_SAVE)) self.logger.debug("deleting chronological block window for timestamp {}".format(timestamp)) chronological_window_lookup_key = SchemaV1.make_chronological_window_lookup_key(timestamp) try: del(self.db[chronological_window_lookup_key]) except KeyError: pass
def save_chronological_block_window(self, data, timestamp): validate_uint256(timestamp, title='timestamp') if timestamp % TIME_BETWEEN_HEAD_HASH_SAVE != 0: raise InvalidHeadRootTimestamp("Can only save or load chronological block for timestamps in increments of {} seconds.".format(TIME_BETWEEN_HEAD_HASH_SAVE)) chronological_window_lookup_key = SchemaV1.make_chronological_window_lookup_key(timestamp) encoded_data = rlp.encode(data,sedes=rlp.sedes.FCountableList(rlp.sedes.FList([f_big_endian_int, hash32]))) self.db.set( chronological_window_lookup_key, encoded_data, )
def load_chronological_block_window(self, timestamp: Timestamp) -> Optional[List[Union[int, Hash32]]]: validate_uint256(timestamp, title='timestamp') if timestamp % TIME_BETWEEN_HEAD_HASH_SAVE != 0: raise InvalidHeadRootTimestamp("Can only save or load chronological block for timestamps in increments of {} seconds.".format(TIME_BETWEEN_HEAD_HASH_SAVE)) chronological_window_lookup_key = SchemaV1.make_chronological_window_lookup_key(timestamp) try: data = rlp.decode(self.db[chronological_window_lookup_key], sedes=rlp.sedes.FCountableList(rlp.sedes.FList([f_big_endian_int, hash32])), use_list = True) data.sort() return data except KeyError: return None