示例#1
0
 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
示例#2
0
 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,
     )
示例#3
0
 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