code: def import_block(self, block: BaseBlock) -> BaseBlock:
          
          if self.block.number != block.number:
              raise ValidationError(
                  "This VM can only import blocks at number #{}, the attempted block was #{}".format(
                      self.block.number,
                      block.number,
                  )
              )
  
          self.block = self.block.copy(
              header=self.configure_header(
                  coinbase=block.header.coinbase,
                  gas_limit=block.header.gas_limit,
                  timestamp=block.header.timestamp,
                  extra_data=block.header.extra_data,
                  mix_hash=block.header.mix_hash,
                  nonce=block.header.nonce,
                  uncles_hash=keccak(rlp.encode(block.uncles)),
              ),
              uncles=block.uncles,
          )
          # we need to re-initialize the `state` to update the execution context.
          self._state = self.build_state(self.chaindb.db, self.header, self.previous_hashes)
  
          # run all of the transactions.
          new_header, receipts, _ = self.apply_all_transactions(block.transactions, self.header)
  
          self.block = self.set_block_transactions(
              self.block,
              new_header,
              block.transactions,
              receipts,
          )
  
          return self.mine_block()
docs: Import the given block to the chain.