code: def validate_chain(
              cls,
              root: BlockHeader,
              descendants: Tuple[BlockHeader, ...],
              seal_check_random_sample_rate: int = 1) -> None:
          
  
          all_indices = range(len(descendants))
          if seal_check_random_sample_rate == 1:
              indices_to_check_seal = set(all_indices)
          else:
              sample_size = len(all_indices) // seal_check_random_sample_rate
              indices_to_check_seal = set(random.sample(all_indices, sample_size))
  
          header_pairs = sliding_window(2, concatv([root], descendants))
  
          for index, (parent, child) in enumerate(header_pairs):
              if child.parent_hash != parent.hash:
                  raise ValidationError(
                      "Invalid header chain; {} has parent {}, but expected {}".format(
                          child, child.parent_hash, parent.hash))
              should_check_seal = index in indices_to_check_seal
              vm_class = cls.get_vm_class_for_block_number(child.block_number)
              try:
                  vm_class.validate_header(child, parent, check_seal=should_check_seal)
              except ValidationError as exc:
                  raise ValidationError(
                      "%s is not a valid child of %s: %s" % (
                          child,
                          parent,
                          exc,
                      )
                  ) from exc
docs: Validate that all of the descendents are valid, given that the root header is valid.
  
          By default, check the seal validity (Proof-of-Work on Ethereum 1.x mainnet) of all headers.
          This can be expensive. Instead, check a random sample of seals using
          seal_check_random_sample_rate.