def compare_journal_blocks()

in pyqldbsamples/validate_qldb_hash_chain.py [0:0]


def compare_journal_blocks(previous_journal_block, journal_block):
    """
    Compare the hash values on the given journal blocks.

    :type previous_journal_block: :py:class:`pyqldbsamples.qldb.journal_block.JournalBlock`
    :param previous_journal_block: Previous journal block in the chain.

    :type journal_block: :py:class:`pyqldbsamples.qldb.journal_block.JournalBlock`
    :param journal_block: Current journal block in the chain.

    :rtype: :py:class:`pyqldbsamples.qldb.journal_block.JournalBlock`
    :return: The current journal block in the chain.

    :raises RuntimeError: If the chain hash on the journal block is broken.
    """
    if previous_journal_block is None:
        return journal_block
    if previous_journal_block.block_hash != journal_block.previous_block_hash:
        raise RuntimeError('Previous block hash does not match!')

    block_hash = join_hash_pairwise(journal_block.entries_hash, previous_journal_block.block_hash)
    if block_hash != journal_block.block_hash:
        raise RuntimeError("Block hash doesn't match expected block hash. Verification failed.")

    return journal_block