def test_top_blocks(self): block1 = Block() block1.prev_hashes = [self.genesis_block().get_hash().digest()] block1.timestamp = 32452345234 block1.randoms = [] signed_block1 = SignedBlock() signed_block1.set_block(block1) self.add_signed_block(1, signed_block1) block2 = Block() block2.prev_hashes = [block1.get_hash().digest()] block2.timestamp = 32452345 block2.randoms = [] signed_block2 = SignedBlock() signed_block2.set_block(block2) self.add_signed_block(2, signed_block2) block3 = Block() block3.prev_hashes = [block1.get_hash().digest()] block3.timestamp = 1231827398 block3.randoms = [] signed_block3 = SignedBlock() signed_block3.set_block(block3) self.add_signed_block(3, signed_block3) for keyhash in self.blocks_by_hash: print(binascii.hexlify(keyhash)) top_hashes = self.get_top_blocks() print("tops") for keyhash in top_hashes: print(binascii.hexlify(keyhash))
def sign_block(self, private): #TODO move somewhere more approptiate block = Block() block.prev_hashes = [*self.get_top_blocks()] block.timestamp = int(datetime.datetime.now().timestamp()) block.randoms = [] block_hash = block.get_hash().digest() signature = private.sign(block_hash, 0)[ 0] #for some reason it returns tuple with second item being None signed_block = SignedBlock() signed_block.set_block(block) signed_block.set_signature(signature) current_block_number = self.get_current_timeframe_block_number() self.add_signed_block(current_block_number, signed_block) print(block_hash.hex(), " was added to blockchain under number ", current_block_number) return signed_block