> For the complete documentation index, see [llms.txt](https://ravenprotocol.gitbook.io/ravenverse/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ravenprotocol.gitbook.io/ravenverse/ravsock.md).

# RavSock

RavSock is the second most crucial building block of the framework. It sits between the developer(who create ops and write algorithms) and the contributor who contribute the idle computing power. It facilitates the efficient distribution of ops and the efficient merging of results.

[Github](https://github.com/ravenprotocol/ravsock.git)

## Setup

### Installation

#### Create a virtual environment with Python 3.8 before you install RDF libraries

```
conda create -n <env_name> python=3.8
```

#### Clone repository

```
git clone https://github.com/ravenprotocol/ravsock.git
```

#### Set up everything and install dependencies

```
sh setup.sh
```

### Configure Paths

Navigate to `ravsock/config.py` and set the `FTP_ENVIRON_DIR` variable to the `bin` folder of your python virtual environment. For instance:

```
FTP_ENVIRON_DIR = "~/miniconda/envs/<env_name>/bin"
```

Note: Set `ENCRYPTION = True` in the same file if a layer of homomorphic encryption needs to be added for Federated Analytics.

Set `RDF_DATABASE_URI` in the same file.

```
RDF_DATABASE_URI = "sqlite:///rdf.db?check_same_thread=False"
```

Create database with tables required for the project.

```
python reset.py  
```

The server is now configured correctly and ready to be fired up.

### Start Ravsock Server

Ravsock is a crucial component of RDF that facilitates both federated and distributed functionalities of the framework.

It sits between the developer(who creates ops and writes algorithms) and the contributor who contributes the idle computing power. Its scheduling algorithm oversees the distribution and statuses of different Ops, Graphs and Subgraphs across multiple Clients.

```
python3 run.py
```
