xeroc / piston-lib

Python Library for Steem
MIT License
40 stars 33 forks source link

blockchain.py "get_block_from_time" #28

Closed ArtGenesis closed 6 years ago

ArtGenesis commented 7 years ago

I think in function get_block_from_time little bug https://github.com/xeroc/python-steem/blob/master/steem/blockchain.py

guess_block = known_block - block_delta (guess_block = object - float)

now i use, maybe not good idea, but just for func work

known_block_num = self.get_current_block_num() guess_block = known_block_num - block_delta

def get_block_from_time(self, timestring, error_margin=10):
        """ Estimate block number from given time
            :param str timestring: String representing time
            :param int error_margin: Estimate block number within this interval (in seconds)
        """
        known_block = self.get_current_block()
        known_block_num = self.get_current_block_num()
        known_block_timestamp = self.block_timestamp(known_block)
        timestring_timestamp = parse_time(timestring).timestamp()
        delta = known_block_timestamp - timestring_timestamp
        block_delta = delta / 3
        guess_block =  known_block_num - block_delta
        guess_block_timestamp = self.block_timestamp(guess_block)
        error = timestring_timestamp - guess_block_timestamp
        while abs(error) > error_margin:
            guess_block += error / 3
            guess_block_timestamp = self.block_timestamp(guess_block)
            error = timestring_timestamp - guess_block_timestamp
        return int(guess_block)