Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions docs/guides/01-getting-started-cli.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
# Getting Started with mump2p CLI

The `mump2p` CLI is the quickest way to interact with [OptimumP2P](https://github.com/getoptimum/optimum-p2p) without running your own infrastructure.
The `mump2p` CLI is the quickest way to interact with [Optimum Network](https://github.com/getoptimum/optimum-p2p) without running your own infrastructure.

In the next 5 minutes, you'll have:

* A working CLI
* Your first published message
* A subscription feeding you live data

The `mump2p` CLI is your shortcut into `OptimumP2P` — a high-performance, RLNC-enhanced peer-to-peer network.
The `mump2p` CLI is your shortcut into `Optimum Network` — a high-performance, RLNC-enhanced peer-to-peer network.

Instead of:

* Manually locating and connecting to active OptimumP2P nodes
* Manually locating and connecting to active Optimum Network nodes
* Handling low-level peer discovery and connection logic
* Managing complex network and encoding configurations

Expand All @@ -21,7 +21,7 @@ It connects to an `optimum-proxy` and lets you publish and subscribe to real-tim

## Why Optimum Proxy?

OptimumP2P is a **peer-to-peer network** where nodes exchange messages over a `RLNC-enhanced` pubsub mesh.
Optimum Network is a **peer-to-peer network** where nodes exchange messages over a `RLNC-enhanced` pubsub mesh.
If you connect directly to a P2P node, you need to:

* Know node IP/port.
Expand All @@ -31,7 +31,7 @@ If you connect directly to a P2P node, you need to:
The **Optimum Proxies** removes that complexity:

* Acts as **points of entry**.
* Maintains connections to multiple OptimumP2P nodes.
* Maintains connections to multiple Optimum Network nodes.
* Enforces thresholds and applies filters.
* Tracks usage and applies fair rate limits.

Expand Down
38 changes: 19 additions & 19 deletions docs/guides/02-getting-started-docker.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# Getting Started with Docker (Local Deployment)

Running **OptimumP2P** locally with Docker gives you **full control** over configuration, topology, and experiments.
Running **Optimum Network** locally with Docker gives you **full control** over configuration, topology, and experiments.
You can run the network in two primary ways:

**1. OptimumProxy + OptimumP2P** — Clients connect to an **Optimum Proxy**, which manages P2P connections for them.
**1. OptimumProxy + mumP2P** — Clients connect to an **Optimum Proxy**, which manages P2P connections for them.

![OptimumProxy + OptimumP2P Architecture](../../static/img/docker_1.png)
![OptimumProxy + mumP2P Architecture](../../static/img/docker_1.png)

* Simplifies client configuration — only the Proxy address is needed.
* Proxy handles shard reassembly, threshold logic, and node selection automatically.
* Easier scaling and centralized policy control.

**2. Direct OptimumP2P** — Clients connect directly to **OptimumP2P nodes** (each node must run the gRPC API).
**2. Direct mumP2P** — Clients connect directly to **mumP2P nodes** (each node must run the gRPC API).

![Direct OptimumP2P Architecture](../../static/img/docker_2.png)
![Direct mumP2P Architecture](../../static/img/docker_2.png)

* Fewer network hops = potentially lower latency.
* Clients must know node addresses and manage failover logic.
Expand All @@ -32,22 +32,22 @@ local deployment offers:

Choose the deployment mode that best fits your use case:

| **Mode A: Proxy + OptimumP2P** | **Mode B: Direct OptimumP2P** |
| **Mode A: Proxy + mumP2P** | **Mode B: Direct mumP2P** |
|---|---|
| **One endpoint** — simpler client config | **Lowest latency** — fewer network hops |
| **Policy control** — rate limiting, auth | **Direct control** — no proxy overhead |
| **Auto failover** — proxy handles node selection | **Manual failover** — clients manage addresses |

**Quick Decision:**

* **Want simpler setup and client code?** → **[Start with Mode A](#4-mode-a--optimumproxy--optimump2p-recommended)**
* **Need maximum performance and control?** → **[Jump to Mode B](#5-mode-b--direct-optimump2p-advanced--lower-latency)**
* **Want simpler setup and client code?** → **[Start with Mode A](#4-mode-a--optimumproxy--mump2p-recommended)**
* **Need maximum performance and control?** → **[Jump to Mode B](#5-mode-b--direct-mump2p-advanced--lower-latency)**

## 1. Before You Start

### Requirements

* **[Docker](https://docs.docker.com/engine/install/)** — Container runtime for running OptimumP2P components
* **[Docker](https://docs.docker.com/engine/install/)** — Container runtime for running Optimum Network components
* **[Docker Compose](https://docs.docker.com/compose/install/)** — Tool for defining multi-container applications
* **[Go v1.24+](https://golang.org/dl/)** — Required for building custom gRPC clients
* At least **2 GB free RAM** for running multiple nodes locally
Expand All @@ -62,7 +62,7 @@ Choose the deployment mode that best fits your use case:

| Component | Purpose | Docker Images |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- |
| **OptimumP2P Node** | RLNC-enabled mesh peer, encodes/decodes message shards, handles peer discovery and subscriptions. Optional gRPC API for direct clients. | `getoptimum/p2pnode:v0.0.1-rc2` |
| **mumP2P Node** | RLNC-enabled mesh peer, encodes/decodes message shards, handles peer discovery and subscriptions. Optional gRPC API for direct clients. | `getoptimum/p2pnode:v0.0.1-rc2` |
| **Optimum Proxy** | Bridges clients and the mesh, manages subscriptions, shard reassembly, threshold logic, and node selection. | `getoptimum/proxy:v0.0.1-rc3` |


Expand All @@ -84,13 +84,13 @@ We’ll keep identity in `./identity` folder so you can reuse keys across restar

| Recommended mode | Why |
| ----------------------------- | ----------------------------------------------------------------------------------------- |
| **OptimumProxy + OptimumP2P** | One endpoint for clients, proxy handles matching, decoding thresholds, fanout, and policy |
| **Direct OptimumP2P** | Fewer hops, you control connection/retry logic and node selection |
| **OptimumProxy + mumP2P** | One endpoint for clients, proxy handles matching, decoding thresholds, fanout, and policy |
| **Direct mumP2P** | Fewer hops, you control connection/retry logic and node selection |


## 3. Generate a Bootstrap Identity (once)

OptimumP2P nodes need a **P2P identity** (cryptographic keypair) for peer-to-peer communication. The bootstrap node needs a persistent identity so other nodes can discover it reliably.
mumP2P nodes need a **P2P identity** (cryptographic keypair) for peer-to-peer communication. The bootstrap node needs a persistent identity so other nodes can discover it reliably.

**What is P2P Identity?**

Expand All @@ -111,7 +111,7 @@ This script:
* Saves to `identity/p2p.key` with proper checksum format
* Exports `BOOTSTRAP_PEER_ID` environment variable
* Handles existing identity gracefully
* Uses the correct file format expected by OptimumP2P nodes
* Uses the correct file format expected by mumP2P nodes

**Output:**

Expand All @@ -125,7 +125,7 @@ This script:
[SUCCESS] Peer ID: 12D3KooWLsSmLLoE2T7JJ3ZyPqoXEusnBhsBA1ynJETsziCKGsBw
[INFO] To use in docker-compose:
export BOOTSTRAP_PEER_ID=12D3KooWLsSmLLoE2T7JJ3ZyPqoXEusnBhsBA1ynJETsziCKGsBw
[SUCCESS] Done! Your OptimumP2P peer ID: 12D3KooWLsSmLLoE2T7JJ3ZyPqoXEusnBhsBA1ynJETsziCKGsBw
[SUCCESS] Done! Your mumP2P peer ID: 12D3KooWLsSmLLoE2T7JJ3ZyPqoXEusnBhsBA1ynJETsziCKGsBw
```

**What this creates:**
Expand All @@ -142,7 +142,7 @@ This guide covers:
* Connecting via CLI (`mump2p-cli`) or `gRPC clients` (Go examples included).
* Adjusting key parameters for your environment.

## 4. Mode A — OptimumProxy + OptimumP2P (Recommended)
## 4. Mode A — OptimumProxy + mumP2P (Recommended)

### Create the docker-compose file

Expand Down Expand Up @@ -477,7 +477,7 @@ func main() {
}
```

## 5. Mode B — Direct OptimumP2P (Advanced / Lower Latency)
## 5. Mode B — Direct mumP2P (Advanced / Lower Latency)

In this mode, clients connect `straight to node sidecar gRPC`. You’ll manage client-side reconnection, backoff, and which node to hit.

Expand Down Expand Up @@ -571,7 +571,7 @@ For a complete working P2P client that connects directly to nodes, see the full
The client includes:

* **Message publishing and subscribing** with gRPC streaming
* **Protocol trace handling** for both GossipSub and OptimumP2P
* **Protocol trace handling** for both GossipSub and mumP2P
* **Metrics collection** via `MessageTraceGossipSub` and `MessageTraceOptimumP2P` responses
* **Stress testing capabilities** with batch message publishing

Expand Down Expand Up @@ -620,7 +620,7 @@ func main() {
case protobuf.ResponseType_MessageTraceGossipSub:
fmt.Printf("[TRACE] GossipSub trace: %d bytes\n", len(resp.GetData()))
case protobuf.ResponseType_MessageTraceOptimumP2P:
fmt.Printf("[TRACE] OptimumP2P trace: %d bytes\n", len(resp.GetData()))
fmt.Printf("[TRACE] mumP2P trace: %d bytes\n", len(resp.GetData()))
}
}
}
Expand Down
12 changes: 6 additions & 6 deletions docs/guides/03-parameters.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Understanding Key Parameters in OptimumP2P
# Understanding Key Parameters in mumP2P

OptimumP2P nodes can operate in **two distinct protocol modes**, configured via:
mumP2P nodes can operate in **two distinct protocol modes**, configured via:

```sh
NODE_MODE=optimum # RLNC-enhanced gossip
Expand All @@ -11,9 +11,9 @@ Each mode has its own parameter set, with some shared configurations.

We support **two protocol modes** to let developers and researchers compare **performance, reliability, and bandwidth trade-offs** in real-world scenarios — without changing the rest of their infrastructure.

## OptimumP2P (RLNC) Mode — `NODE_MODE=optimum`
## mumP2P (RLNC) Mode — `NODE_MODE=optimum`

OptimumP2P extends the gossip protocol with **Random Linear Network Coding**:
mumP2P extends the gossip protocol with **Random Linear Network Coding**:

* Messages are split into **shards**
* Shards can be forwarded early once a threshold is reached
Expand Down Expand Up @@ -138,7 +138,7 @@ The following table shows the **production defaults**, which are optimized for t

### For Quick Start (Copy-Paste Ready)

**OptimumP2P Mode (`NODE_MODE=optimum`):**
**mumP2P Mode (`NODE_MODE=optimum`):**

```yaml
environment:
Expand Down Expand Up @@ -204,5 +204,5 @@ environment:
| `GOSSIPSUB_MESH_MAX` | 12 | gossipsub | Max peers before pruning |
| `BOOTSTRAP_PEERS` | [] | Both | List of peer multiaddrs for bootstrap |

> **Note:** These are the production defaults used by OptimumP2P nodes. For experimental tuning, see [Common Experiments](./04-experiments.md).
> **Note:** These are the production defaults used by mumP2P nodes. For experimental tuning, see [Common Experiments](./04-experiments.md).

28 changes: 14 additions & 14 deletions docs/guides/04-experiments.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Common Experiments

Once your OptimumP2P network is running (see [Parameters](./03-parameters.md)), you can try different experiments to understand **performance, reliability, and scaling behavior**.
Once your Optimum Network is running (see [Parameters](./03-parameters.md)), you can try different experiments to understand **performance, reliability, and scaling behavior**.

> **Before You Begin:**
> Make sure you’ve read:
Expand All @@ -17,9 +17,9 @@ You can run them using:



## 1. GossipSub vs OptimumP2P
## 1. GossipSub vs mumP2P

**Goal:** Compare standard libp2p gossip to RLNC-enhanced gossip to confirm OptimumP2P is faster.
**Goal:** Compare standard libp2p gossip to RLNC-enhanced gossip to confirm mumP2P is faster.

**How:**

Expand All @@ -29,11 +29,11 @@ You can run them using:

**Observe:**

* **Delivery latency** (primary metric - OptimumP2P should be faster)
* **Bandwidth usage** (OptimumP2P should use less)
* **Delivery latency** (primary metric - mumP2P should be faster)
* **Bandwidth usage** (mumP2P should use less)
* **Success rate** (both should deliver messages successfully)

**Expected Result:** OptimumP2P should show lower latency and bandwidth usage.
**Expected Result:** mumP2P should show lower latency and bandwidth usage.


## 2. Shard Factor Sweep
Expand Down Expand Up @@ -74,29 +74,29 @@ You can run them using:

## 4. Mesh Density Impact

**Goal:** Compare OptimumP2P vs GossipSub with different mesh sizes.
**Goal:** Compare mumP2P vs GossipSub with different mesh sizes.

**How:**

* Test both `NODE_MODE=gossipsub` and `NODE_MODE=optimum`.
* For GossipSub: try `GOSSIPSUB_MESH_TARGET` = 4, 6, 8.
* For OptimumP2P: try `OPTIMUM_MESH_TARGET` = 6, 12, 18.
* For mumP2P: try `OPTIMUM_MESH_TARGET` = 6, 12, 18.
* Run the same publish/subscribe test.

**Observe:**

* **Delivery latency** (primary metric)
* **Bandwidth usage**

**Expected Result:** OptimumP2P should perform better with higher mesh targets (around 12) while GossipSub optimal around 6.
**Expected Result:** mumP2P should perform better with higher mesh targets (around 12) while GossipSub optimal around 6.





## 5. Load Test

**Goal:** Find when OptimumP2P vs GossipSub starts to fail under stress.
**Goal:** Find when mumP2P vs GossipSub starts to fail under stress.

**How:**

Expand All @@ -109,13 +109,13 @@ You can run them using:
* **When delivery starts to fail** (primary metric)
* **Delivery rate degradation**

**Expected Result:** OptimumP2P should handle higher stress levels before failing compared to GossipSub.
**Expected Result:** mumP2P should handle higher stress levels before failing compared to GossipSub.


> **Tip:** Enable protocol traces in the gRPC client to get hop-by-hop delivery info:
>
> * `MessageTraceGossipSub` for GossipSub mode.
> * `MessageTraceOptimumP2P` for OptimumP2P mode.
> * `MessageTraceOptimumP2P` for mumP2P mode.

## Metrics Collection

Expand All @@ -128,7 +128,7 @@ For comprehensive metrics collection during experiments, use the gRPC P2P client
The client automatically captures and displays:

* **GossipSub traces**: Peer routing, message delivery status, hop counts, latency
* **OptimumP2P traces**: Shard encoding/decoding, reconstruction efficiency, redundancy metrics
* **mumP2P traces**: Shard encoding/decoding, reconstruction efficiency, redundancy metrics
* **Message-level data**: Delivery success rates, end-to-end latency, bandwidth usage

**Key trace handlers:**
Expand All @@ -138,7 +138,7 @@ case protobuf.ResponseType_MessageTraceGossipSub:
fmt.Printf("[TRACE] GossipSub trace received: %s\n", string(resp.GetData()))

case protobuf.ResponseType_MessageTraceOptimumP2P:
fmt.Printf("[TRACE] OptimumP2P trace received: %s\n", string(resp.GetData()))
fmt.Printf("[TRACE] mumP2P trace received: %s\n", string(resp.GetData()))
```

Use this client instead of the CLI for detailed performance analysis during experiments.
2 changes: 1 addition & 1 deletion docs/guides/05-faq-glossary.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,4 @@ When something doesn't work:

* **CLI Issues**: [mump2p-cli FAQ](https://github.com/getoptimum/mump2p-cli#faq---common-issues--troubleshooting)
* **Setup Issues**: Check [`optimum-dev-setup-guide/docs/guide.md`](https://github.com/getoptimum/optimum-dev-setup-guide/blob/main/docs/guide.md)
* **Protocol Questions**: See [OptimumP2P Documentation](./p2p.md)
* **Protocol Questions**: See [mumP2P Documentation](./p2p.md)
18 changes: 9 additions & 9 deletions docs/guides/overview.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
# Quick Start

This developer guide is your complete reference for installing, configuring, and operating **OptimumP2P**.
This developer guide is your complete reference for installing, configuring, and operating **Optimum Network**.

This guide walks you through everything you need to **understand**, **deploy**, **run**, and **experiment** with OptimumP2P. It's designed for beginners but complete enough for advanced developers to jump in and integrate.
This guide walks you through everything you need to **understand**, **deploy**, **run**, and **experiment** with Optimum Network. It's designed for beginners but complete enough for advanced developers to jump in and integrate.

Whether you are an application developer, systems engineer, or hackathon participant, this guide will help you:

1. **Install and run** OptimumP2P in different environments
1. **Install and run** Optimum Network in different environments
2. **Connect clients** via gRPC, REST, or CLI
3. **Tune parameters** for performance or reliability
4. **Run experiments** to validate system behavior
5. **Monitor and debug** your deployment

## Start Building

Choose your path to get started with OptimumP2P:
Choose your path to get started with Optimum Network:

### **Try OptimumP2P (≤5 min)**
### **Try mumP2P (≤5 min)**

**[Using mump2p-cli](01-getting-started-cli.md)** — Connect to hosted proxy, no setup required

Expand All @@ -30,7 +30,7 @@ Choose your path to get started with OptimumP2P:

* Complete local network deployment
* Experiment with different parameters
* Compare OptimumP2P vs GossipSub performance
* Compare mumP2P vs GossipSub performance

### **Understanding & Experimenting**

Expand Down Expand Up @@ -62,7 +62,7 @@ This guide is organized into self-contained sections:

## Key Concepts

Before diving deep, familiarize yourself with these terms and how they relate to OptimumP2P's architecture:
Before diving deep, familiarize yourself with these terms and how they relate to Optimum Network's architecture:

| Term | Description |
|--------------|-------------|
Expand All @@ -77,9 +77,9 @@ Before diving deep, familiarize yourself with these terms and how they relate to
| **Direct P2P Mode** | Clients connect directly to P2P nodes via gRPC without going through a proxy. This can reduce latency but requires more configuration. |
| **Mesh Parameters** | Settings such as `MESH_TARGET` that define how many peers a node tries to keep in its topic mesh. |
| **Fanout** | A temporary set of peers a publisher sends messages to when it is not part of the topic mesh. |
| **Control Messages** | Special messages like GRAFT, PRUNE, IHAVE, IWANT used for GossipSub mesh management. OptimumP2P integrates similar control flows for RLNC. |
| **Control Messages** | Special messages like GRAFT, PRUNE, IHAVE, IWANT used for GossipSub mesh management. mumP2P integrates similar control flows for RLNC. |
| **Node Discovery** | The process by which proxies or nodes automatically learn about other nodes to connect to. |
| **gRPC API** | The RPC interface provided by either a P2P node or a proxy for client communication. |

For more technical details, see the **[OptimumP2P Technical Overview](../learn/overview/p2p.md)**.
For more technical details, see the **[mumP2P Technical Overview](../learn/overview/p2p.md)**.

6 changes: 3 additions & 3 deletions docs/learn/overview/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ Powered by [Random Linear Network Coding (RLNC)](./p2p.md#random-linear-network-

## Products

Builders and operators can adopt **OptimumP2P** now for measurable latency gains. DeRAM and DeROM are next to unlock low-latency reads/writes.
Builders and operators can adopt **mumP2P** now for measurable latency gains. DeRAM and DeROM are next to unlock low-latency reads/writes.

### OptimumP2P
### mumP2P

RLNC-accelerated, libp2p/gossipsub-compatible pub/sub for fast, resilient propagation of blocks, blobs, and transactions.
**Get started:** [Overview](../../learn/overview/p2p.md) · [Quickstart](../../guides/01-getting-started-cli.md)
Expand All @@ -40,7 +40,7 @@ A **flexnode** is an operator-run node that participates in Optimum's coded goss

## Start here

* **Try OptimumP2P (≤5 min):** [Using mump2p-cli](../../guides/01-getting-started-cli.md)
* **Try mumP2P (≤5 min):** [Using mump2p-cli](../../guides/01-getting-started-cli.md)
* **Run locally:** [Local Setup with Docker](../../guides/02-getting-started-docker.md)
* **Integrate:** [Publish/Subscribe via Optimum Proxy endpoints](https://github.com/getoptimum/optimum-dev-setup-guide/blob/main/docs/guide.md#proxy-api)

Expand Down
Loading