pub fn transaction<Mode: ExecutionMode>(
    env: &Env<'_, '_, '_, '_>,
    ast: &mut Transaction,
) -> Result<(), ExecutionError>