SELECT
    mutation.value
FROM
    mutation
    JOIN solution_data ON solution_data.id = mutation.data_id
    JOIN block_solution ON block_solution.solution_id = solution_data.solution_id
    JOIN finalized_block ON finalized_block.block_id = block_solution.block_id
WHERE
    solution_data.contract_addr = :contract_ca
    AND mutation.key = :key
    AND (
        finalized_block.block_number,
        block_solution.solution_index
    ) <= (:block_number, :solution_index)
ORDER BY
    finalized_block.block_number DESC,
    block_solution.solution_index DESC
LIMIT
    1;
