Skip to content

Commit 0b2ce8e

Browse files
authored
Update README.md
1 parent 080eba9 commit 0b2ce8e

File tree

1 file changed

+19
-63
lines changed

1 file changed

+19
-63
lines changed

README.md

+19-63
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,30 @@
1-
# oblishard
2-
A scalable and fault-tolerant Oblivious RAM (ORAM) data store
1+
# Oblishard [![Github Actions](https://github.com/dsg-uwaterloo/oblishard/actions/workflows/go.yml/badge.svg)](https://github.com/dsg-uwaterloo/oblishard/actions/workflows/go.yml)
2+
Welcome to **Oblishard**, a cutting-edge and highly scalable Oblivious RAM (ORAM) data store designed to provide strong security guarantees by hiding access patterns from the storage server and randomizing client access.
3+
## Key Features:
4+
* **Scalability**: Oblishard is designed with horizontal scalability in mind, enabling scaling the system without leaking security information.
5+
* **Fault Tolerance**: Leveraging the power of Raft consensus algorithm, Oblishard ensures the resilience of your data store even in the face of node crashes or failures, enhancing the overall reliability of your system.
6+
* **High Throughput**: Oblishard achieves high-throughput performance, ensuring that your applications can handle large volumes of data seamlessly and efficiently.
7+
* **Configurable**: Oblishard recognizes the diverse needs of different projects and offers a high level of configurability to adapt seamlessly to your specific requirements.
8+
* **Easy to Deploy**: We've designed the setup of Oblishard to be straightforward, ensuring that you can integrate our secure and high-performance data store effortlessly into your projects.
9+
* **Easy to Extend**: Oblishard's modular architecture makes it easy to extend functionality. You can add new storage layers to Oblishard to support different use cases.
310

4-
The Readme is out of date. Don't use the instructions here! I will fix it soon.
511

6-
## Table of Contents
7-
8-
1. [Protocol Buffers](#protocol-buffers)
9-
2. [Running the Project](#running-the-project)
10-
1. [Running the Router](#running-the-router)
11-
2. [Running the Shardnode](#running-the-shardnode)
12-
3. [Running the ORAM Node](#running-the-oram-node)
13-
4. [Running the Jaeger Backend](#running-the-jaeger-backend)
14-
5. [Running Redis](#running-redis)
15-
6. [Sending Requests](#sending-requests)
16-
3. [Example Execution](#example-execution)
17-
4. [Configurations](#configurations)
18-
19-
---
20-
## Protocol Buffers
12+
## Installation
13+
### Protocol Buffers
2114

2215
The following parts are generated, but if you want to generate them again yourself, you can run the provided script:
2316

2417
```bash
2518
./scripts/generate_protos.sh
2619
```
2720

28-
## Running the Project
29-
### Running the Router
30-
To run the router, use the following command:
31-
```bash
32-
go run -race . -routerid <routerid> -port <rpc port>
33-
```
34-
### Running the Shardnode
35-
To run a shardnode, use the following command:
36-
```bash
37-
go run -race . -shardnodeid <id> -rpcport <rpcport> -replicaid <replicaid> -raftport <raftport>
38-
```
39-
You can provide a `-joinaddr` for the followers to join the leader.
40-
### Running the ORAM Node
41-
To run an ORAM node, use the following command:
42-
```bash
43-
go run -race . -oramnodeid <id> -rpcport <rpcport> -replicaid <replicaid> -raftport <raftport>
44-
```
45-
You can provide a `-joinaddr` for the followers to join the leader.
46-
### Running the Jaeger Backend
47-
To run the Jaeger backend, use Docker Compose:
48-
```bash
49-
docker compose up
50-
```
51-
### Running Redis
52-
Ensure that Redis is up and running on the default port.
53-
### Sending Requests
54-
To send requests, run the following command in the `cmd/client` directory:
55-
```bash
56-
go run -race .
57-
```
58-
It will send the requests that are in the `traces/simple.trace` file.
59-
## Example Execution
60-
Run each of the commands in a new terminal:
61-
```bash
62-
go run -race . -routerid 0 -port 8745 #cmd/router directory
63-
go run -race . -shardnodeid 0 -rpcport 8748 -replicaid 0 -raftport 3124 #cmd/shardnode directory
64-
go run -race . -shardnodeid 0 -rpcport 8749 -replicaid 1 -raftport 3125 -joinaddr=127.0.0.1:8748 #cmd/shardnode directory
65-
go run -race . -shardnodeid 0 -rpcport 8750 -replicaid 2 -raftport 3126 -joinaddr=127.0.0.1:8748 #cmd/shardnode directory
66-
go run -race . -oramnodeid 0 -rpcport 8751 -replicaid 0 -raftport 1415 #cmd/oramnode directory
67-
go run -race . -oramnodeid 0 -rpcport 8752 -replicaid 1 -raftport 1416 -joinaddr=127.0.0.1:8751 #cmd/oramnode directory
68-
go run -race . -oramnodeid 0 -rpcport 8753 -replicaid 2 -raftport 1417 -joinaddr=127.0.0.1:8751 #cmd/oramnode directory
69-
docker compose up #jaeger directory
70-
go run -race . #client directory
71-
```
72-
## Configurations
21+
### Configurations
7322
The configurations can be found in the configs directory.
7423
There are files for endpoint configs, as well as one file for the parameters.
24+
* `*_endpoints.yaml`: These files include the endpoints of the different components in your system. You can specify the endpoints here and Ansible will use these files to deploy the components to their correct hosts and will configure them accordingly.
25+
* `parameters.yaml`: This file holds all the configuration parameters. You can change them as you want to fit your needs.
26+
27+
### Running Oblishard
28+
1. Ensure that you have Ansible installed, and you have ssh access to your deployment hosts.
29+
2. Update the hosts file to include your deployment hosts.
30+
3. Run `ansible-playbook -i /path/to/hosts tasks.yaml` in the deploy directory.

0 commit comments

Comments
 (0)