Skip to content

Commit

Permalink
Merge branch 'docs/availability' into 'dev'
Browse files Browse the repository at this point in the history
doc: update docs related to availability

Closes #31

See merge request ergo/rosen-bridge/rosenet!26
  • Loading branch information
vorujack committed Apr 30, 2024
2 parents 2d57c80 + 0975208 commit f094d2c
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 28 deletions.
2 changes: 2 additions & 0 deletions .changeset/warm-turtles-thank.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
---
---
52 changes: 24 additions & 28 deletions specs/system-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ design principles, assumptions, and features of RoseNet.

| Status | creation date | last update date | version |
| ------ | ------------- | ---------------- | ------- |
| Draft | 25 Dec 2023 | 17 Feb 2024 | Draft-2 |
| Draft | 25 Dec 2023 | 30 Apr 2024 | Draft-3 |

Author: @mkermani144
Contributors: N/A
Expand All @@ -19,8 +19,6 @@ RoseNet serves as a critical component in enabling secure communication between
Rosen Bridge guards. This section provides a high-level overview of RoseNet's
purpose and its role within the broader system.

_TODO: RoseNet use case in guards_

## RoseNet in action

The current RoseNet implementation utilizes libp2p internally. Before delving
Expand Down Expand Up @@ -49,37 +47,31 @@ involving NodeA connecting to RoseNet through RelayR:
seamlessly.
4. _TODO: messaging_

## ZeroLayer vs RoseLayer

_TODO_

## Features Summary

Implementation status:
🏁 Not started
🚧 Under development
βœ… Finished

| Status | Feature | Current State |
| ------ | ----------------------- | ------------------------------------------------------------------ |
| 🚧 | Topology (ZeroLayer) | Starts as a star, upgrades to partially-connected mesh |
| 🚧 | Topology (RoseLayer) | Gossip-based partially-connected mesh |
| 🏁 | Message Delivery | Guaranteed within a 5-minute latency window |
| βœ… | Whitelisting | Configurable for both relays and nodes, being mandatory for relays |
| βœ… | Communication Security | All messages are end-to-end encrypted |
| βœ… | Sybil Attack Mitigation | Relays only accept connections from whitelisted nodes |
| 🏁 | Network Availability | At least 60% of the network is expected to be available |
| 🏁 | Scalability | Up to 100 non-relay nodes |
| 🏁 | Message Sending Latency | 1-second latency for dequeuing |
| N/A | Decentralization | Mostly decentralized, but some relay nodes are required |
| 🚧 | Discoverability (Nodes) | Achieved after connecting to the relay |
| 🚧 | NAT Traversal | Supports both public and private nodes |
| 🏁 | Monitoring & Analytics | Tracks connected nodes, relays, messaging rates, etc. |
| 🏁 | Node Availability | [To be determined] |
| 🏁 | Message Routing | [To be determined] |
| 🏁 | Upgradability | [To be determined] |
| 🏁 | Burst Messaging | [To be determined] |
| 🏁 | Idle Network State | [To be determined] |
| Status | Feature | Current State |
| ------ | ----------------------------- | ------------------------------------------------------------------ |
| 🚧 | Topology (ZeroLayer) | Starts as a star, but the final topology is to be determined |
| 🚧 | Topology (RoseLayer) | [To be determined] |
| 🏁 | Fast Message Delivery | Guaranteed within a 5-minute latency window |
| 🏁 | Message Delivery Verification | Message delivery is verified through an ack mechanism |
| βœ… | Whitelisting | Configurable for both relays and nodes, being mandatory for relays |
| βœ… | Communication Security | All messages are end-to-end encrypted |
| βœ… | Sybil Attack Mitigation | Relays only accept connections from whitelisted nodes |
| 🏁 | Network Data Availability | Support planned in case of introducing state to the network |
| 🚧 | Scalability | Up to 40 non-relay nodes |
| - | Decentralization | Mostly decentralized, but some relay nodes are required |
| βœ… | Discoverability (Nodes) | Achieved after connecting to the relay |
| 🚧 | NAT Traversal | Supports both public and private nodes |
| 🏁 | Monitoring & Analytics | Tracks connected nodes, relays, messaging rates, etc. |
| 🏁 | Message Routing | [To be determined] |
| 🚧 | Burst Messaging | [To be determined] |
| 🏁 | Idle Network State | [To be determined] |

### Unsupported Features:

Expand All @@ -91,6 +83,7 @@ Implementation status:
| Relays count constraints support | Not planned, new relays must be added on demand |
| Persistence | Not planned |
| Discoverability (relays) | Relays are not meant to be well-known ip addresses and don't need to be discovered |
| Backward-compatibility | All RoseNet nodes and relays must use the same version of RoseNet protocol |

## RoseNet design principles

Expand Down Expand Up @@ -140,4 +133,7 @@ This enhanced approach to whitelisting not only ensures the smooth operation of

## TODO

_Describe the features in detail_
- [ ] Describe the features in detail
- [ ] Stateful vs Stateless
- [ ] RoseNet use case in Rosen Bridge guards
- [ ] ZeroLayer vs RoseLayer

0 comments on commit f094d2c

Please sign in to comment.