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
2 changes: 0 additions & 2 deletions content/messaging/furps/application/rate_limit_manager.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,6 @@ tags:

## Performance

1. ...

## Supportability

1. Nim library.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,49 +1,45 @@
---
title: Package SDS in Reliable Channel API
title: Reliable Channel API — Developer Preview
tags:
- messaging-milestone
- messaging-milestone
date: 2025-12-10
---

# Package SDS in Reliable Channel API
> [!NOTE] This file will be renamed to `2026-reliable-channel-api-developer-preview`

**Estimated date of completion**: {Enter date}
# Reliable Channel API — Developer Preview

**Resources Required for 2025H2**:
- {roles and % application to it}
- {external services consumed (Vac/IFT)}
- {infrastructure}
**Estimated date of completion**: June 2026 (Testnet v0.2)

The [[Create Chat SDK MVP]] - developer preview - does include the [Scalable Data Sync](https://github.com/vacp2p/rfc-index/blob/main/vac/raw/sds.md) protocol usage. However, dedicated work is necessary to
fully leverage SDS to:
- identify and retrieved missed messages
- track acknowledge, and resend unacknowledged message
**Resources Required for 2026H1**:
- 2 Delivery engineers
- 1 Chat engineer for integration

The [Reliable Channel API](https://github.com/logos-messaging/specs/pull/89) delivers a simple API that enables those features, as well as:
- message segmentation
- Rate limit management (in preparation to future RLN integration).
- SDS-Repair, an extension to SDS that reduce reliance on Store services, and improves received anonymity from original SDS protocol.
The [Chat — Foundations](2025-create-chat-sdk-mvp.md) milestone does not include the [Scalable Data Sync](https://github.com/vacp2p/rfc-index/blob/main/vac/raw/sds.md) protocol. This milestone delivers dedicated work to fully leverage SDS to:
- Identify and retrieve missed messages
- Track, acknowledge, and resend unacknowledged messages

This milestone focuses on delivering a pre-configured SDS experience. Segmentation and rate limit manager will be delivered at a later stage.
The [Reliable Channel API](https://github.com/logos-messaging/specs/pull/89) delivers a simple API that enables those features, as well as:
- SDS-Repair, an extension to SDS that reduces reliance on Store services and improves receiver anonymity from the original SDS protocol.

Note: Dependency to logos-messaging-nim is to be handled via Nimble, meaning the Chat Logos Module would have libp2p, logos-messaging, etc embedded. It also means that there is no "reliable channel" Logos Core module as part of this milestone.
Moving to an architecture where the Chat module uses the locally available messaging module, is not yet planned.
This milestone focuses on forming the API and delivering a pre-configured SDS experience. Segmentation and rate limit manager will be delivered in the [General Availability](2026-complete-reliable-channel-api.md) milestone.

## FURPS

- [Reliable Channel API](/messaging/furps/application/reliable_channel.md): F1, F2, F3, F4, F5, F6, F7, F8, F9, U1, U2, U3, U4, R1, R3

## Risks

| Risk | (Accept, Own, Mitigation) |
|--------|-------------------------------|
| [Risk] | [how to we address this risk] |
| Risk | (Accept, Own, Mitigation) |
| -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SDS maturity | SDS protocol has not been extensively tested in production. May require tuning of parameters to avoid network saturation. |
| SDS-Repair network overhead | SDS-R can quickly saturate the network with repair requests if parameters are not carefully tuned. Linear backoff should become exponential. |

## Deliverables

### Deliver Reliable Channel API

**Owner**: Nim Messaging Team
**Owner**: Delivery Team

**Feature**: [Reliable Channel API](/messaging/furps/application/reliable_channel.md)

Expand All @@ -65,18 +61,18 @@ Note: No segmentation or rate limit manager in this milestone. SDS messages cach

### Implement SDS Repair

**Owner**: Nim Messaging Team
**Owner**: Delivery Team

**Feature**: [Reliable Channel API](/messaging/furps/application/reliable_channel.md)

**FURPS**:
- F9. Missing messages re-emission is requested from other channel participants

### Use Reliable Channels in Chat SDK
### Use Reliable Channels in Logos Chat

**Owner**: Chat Team

**Feature**: [Reliable Channel API](/messaging/furps/application/reliable_channel.md)

**FURPS**:
- U2. Single cohesive interface wrapping SDS, store queries, segmentation, and rate limits.
- U2. Single cohesive interface wrapping SDS, store queries, segmentation, and rate limits.
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
---
title: Support Discovery Research and Libp2p QUIC
title: QUIC Transport in Logos Delivery
tags:
- messaging-milestone
- messaging-milestone
date: 2025-12-03
---

# Support Discovery Research and Libp2p QUIC
# QUIC Transport in Logos Delivery

**Estimated date of completion**: {Enter date}
**Estimated date of completion**: Testnet v0.2

**Resources Required for 2025H2**: 0.5 Nim Engineer
**Resources Required**: 0.5 Nim Engineer

Proceed with several items to support internal teams.
Replace legacy multiplexers (Yamux, Mplex) with QUIC transport. The old multiplexers are going towards deprecation — Yamux is inefficient, Mplex is outdated. QUIC should be prioritized.

## FURPS

- [{Feature Name}]({path/to/furps/file}): {list of furps: F1, etc}
- [Messaging API](/messaging/furps/core/messaging_sdk.md): S4. QUIC transport is supported for peer-to-peer message routing connections.

## Risks

| Risk | (Accept, Own, Mitigation) |
|--------|-------------------------------|
| [Risk] | [how to we address this risk] |
| Risk | (Accept, Own, Mitigation) |
| -------------------------- | -------------------------------------------------------------------------------------- |
| QUIC maturity in nim-libp2p | QUIC support in nim-libp2p may not be production-ready. Trial and evaluate early. |

## Deliverables
## Deliverables

### [Trial QUIC](https://github.com/waku-org/pm/issues/324)

**Owner**: Nim Messaging Team
**Owner**: Delivery Team

**Feature**: [nwaku](/messaging/furps/application/nwaku.md)
**Feature**: [Messaging API](/messaging/furps/core/messaging_sdk.md)

**FURPS**:
- S4. QUIC transport is supported for peer-to-peer message routing connections.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,91 @@
---
github-milestone: https://github.com/logos-messaging/pm/milestone/64
title: RLN on Logos Blockchain
tags:
- messaging-milestone
date: 2026-02-01
github-milestone: 'https://github.com/logos-messaging/pm/milestone/64'
---

# RLN on Logos Blockchain

https://github.com/logos-messaging/pm/milestone/64

**Estimated date of completion**: Testnet v0.3

**Resources Required**:
- 1 Delivery engineer
- Collaboration with Logos Blockchain team (LEE/LEZ)

Logos Delivery currently supports RLN with a hardcoded Ethereum-based membership backend. This milestone introduces a pluggable RLN membership interface and adds Logos Blockchain (LEE) as a membership backend.

**Pluggable RLN membership interface**: Logos Delivery should support different implementations of RLN membership management through a common interface. This enables:
- **EVM-based** (Ethereum L1/L2, including gasless Status Network)
- **Logos Blockchain** (LEE program)
- **Centralized server** (temporary, for development/testing)
- Any future backend

This is important because Status will use RLN on Status Network (EVM-based, gasless), while Logos Testnet will use RLN on Logos Blockchain. Both must be supported simultaneously.

**Context**:
- LEE (Logos Execution Environment) is the smart contract runtime.
- LEZ (Logos Execution Zone) is the zone implementation running on Logos Blockchain using LEE.
- Currently, RLN contracts are deployed on Ethereum Linea Sepolia.
- AnonComms is developing the RLN membership allocation LEE program
- AnonComms is also researching an RLN on gasless L2 transactions on Status Network.

## FURPS

- [RLN Membership Management](/messaging/furps/application/rln_membership_management.md): adapted for pluggable backends

## Dependencies

- **AnonComms**: RLN membership allocation LEE program deployed and functional
- **AnonComms**: Zerokit 1.0 API stable and public

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

They recently deployed 2.0
We are currently using 0.9.0 and need to bump soon

- **Logos Blockchain**: LEE program model and tooling ready

## Risks

| Risk | (Accept, Own, Mitigation) |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| LEE maturity | LEE is under active development. The program model and tooling may not be stable enough for RLN deployment. |
| Cross-team dependency | Requires coordination between Messaging, AnonComms, and Logos Blockchain teams. Align timelines early. |

## Deliverables

### Implement pluggable RLN membership interface

**Owner**: Delivery Team

Design and implement an interface in Logos Delivery that abstracts RLN membership management. Concrete implementations:
- EVM-based (existing Ethereum contract interaction, including gasless Status Network via RLN Prover)
- Logos Blockchain (LEE program, once AnonComms delivers it)
- Centralized server (for development/testing)

The interface covers:
- Credential generation
- Membership registration, extension, withdrawal
- Proof generation and validation
- Credential persistence and export/import

### Integrate Logos Delivery with RLN on Logos Blockchain

**Owner**: Delivery Team

- Implement the Logos Blockchain backend for the pluggable interface
- Logos Delivery nodes can generate and validate RLN proofs against the LEE-deployed membership
- Transition Logos testnet fleets from Ethereum Sepolia to Logos Blockchain

### Update RLN membership management library

**Owner**: Delivery Team

**Feature**: [RLN Membership Management](/messaging/furps/application/rln_membership_management.md)

**FURPS**:
- F1. Can generate RLN credentials.
- F2. Can insert RLN membership via pluggable backend.
- F3. Can extend RLN membership via pluggable backend.
- F4. Can withdraw deposit via pluggable backend.
- F5. Membership credentials are encrypted by default on local disk.
- U1. RLN membership details can be exported and imported.
- U2. Deployment details (backend type, address/endpoint) are persisted by library and in exports.
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
---
title: Complete Reliable Channel API
title: Reliable Channel API — General Availability
tags:
- messaging-milestone
- messaging-milestone
date: 2025-12-17
---

# Complete Reliable Channel API
> [!NOTE] This file will be renamed to `2026-reliable-channel-api-general-availability`

**Estimated date of completion**: {Enter date}
# Reliable Channel API — General Availability

**Resources Required for 2026H1**:
- {roles and % application to it}
**Estimated date of completion**: Q3 2026 (Testnet v0.3)

The [[Package SDS in Reliable Channel API]] milestone delivers the core SDS experience. This milestone completes the [Reliable Channel API](https://github.com/logos-messaging/specs/pull/89) by adding:
**Resources Required for 2026H2**:
- 2 Delivery engineers
- 1 Chat engineer

The [Developer Preview](2025-package-sds-in-reliable-channel-api.md) delivers the core SDS experience. This milestone completes the [Reliable Channel API](https://github.com/logos-messaging/specs/pull/89) by adding:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't notice that currently ongoing PR and raised that one: logos-messaging/specs#104

I'll merge both in one so that we just handle one PR.

- Message segmentation for large payloads
- Rate limit management (in preparation to future RLN integration)
- Rate limit management (in preparation for future RLN integration)

Also, deprecates store hash queries as they enable linkability of participants in same channel from a store node PoV.
Finally, prepare reliable channel to support de-MLS like encryption.
Also deprecates store hash queries as they enable linkability of participants in the same channel from a store node PoV. Prepares reliable channel to support de-MLS encryption.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we can fully deprecate store-hash queries because SDS offers the option to configure "retrieval hints" so that the app has mechanism to recover lost messages, and one possible hint is by allowing hash-based queries. We will see how the development evolves, though.

@igor-sirotin igor-sirotin Mar 27, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We don't need to remove this from protocol, but ideally in the future we shouldn't rely on Store nodes.
But I agree, perhaps we might not be able to stop querying store nodes in this milestone. Let's see how it goes.


## FURPS

Expand All @@ -26,26 +28,83 @@ Finally, prepare reliable channel to support de-MLS like encryption.

## Risks

| Risk | (Accept, Own, Mitigation) |
|--------|-------------------------------|
| [Risk] | [how to we address this risk] |
| Risk | (Accept, Own, Mitigation) |
| ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Reed-Solomon reconstruction in segementation might be reduntant | Reed-Solomon-based reconstruction in Segmentation might be redundant, because SDS-R already ensures re-transmission of messages. Consider removing, discuss with AnonComms team. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we currently implement or use Reed-Solomon. I didn't see it mentioned on any spec either.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reed-Solomon is part of Segmentation

| Rate limit UX impact | Rate limiting will cause messages to be queued or dropped. UX implications need to be communicated to Chat team and developers. |

## Deliverables

### Create Segmentation Library

https://github.com/logos-messaging/pm/issues/318

**Owner**: Chat Team

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This can be for Chat Team of course but, should its implementation live in logos-delivery? It sounds like a low level feature.

@igor-sirotin igor-sirotin Mar 27, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The segmentation library was already migrated to Nim by Chat team, this milestone was defined quite a while ago.

I will add Delivery team here too, because you will need to move it to one of these repos:


**Feature**: [Segmentation](/messaging/furps/application/segmentation.md)

**FURPS**:
- F1. Outbound messages larger than the maximum message size are partitioned into several messages to fit transport constraints.
- F2. Inbound partitioned messages are reconstructed into a whole message.
- F3. A capping limit is applied to pre-segmented messages (e.g. 100MB).
- F4. Messages under the maximum message size are not modified.

- U1. Only takes a maximum message size as a parameter.

- R1. Reconstruction can be performed even when parts are received out of order.
- R2. Reconstruction can be performed as long as 87.5% of the segments is received.
- R3. If too many parts are missing to reconstruct, an informative error should be logged.

- P1. The payload overhead does not exceed 12.5% overall, and 100 bytes per segment.

- S1. Nim library.

- +1. Segmentation metadata should not reveal information about the original message content.
- +2. Relevant for all Logos Delivery nodes.
- +3. Nimble package manager is used to build.

### Create Rate Limit Manager

https://github.com/logos-messaging/pm/issues/319

**Owner**: Chat Team

**Feature**: [Rate Limit Manager](/messaging/furps/application/rate_limit_manager.md)

**FURPS**:
- F1. Rate limit the number of messages passed to the delivery service.
- F2. The rate limit is set in the form of number of messages per epoch; same format as RLN Relay.
- F3. Tracks current quota and usage.
- F4. Messages can be flagged with three priority levels: critical, normal, optional.
- F5. When remaining message quota is low, critical messages are sent, normal messages are queued and optional messages are dropped.
- F6. When message quota is exhausted, critical messages are queued on top, normal messages are queued, optional messages are dropped.

- U1. Developer can mark messages with relevant priority.
- U2. Developer can pass messages by batch; with an all-or-none sending strategy.
- U3. Developer can access total quota and remaining quota values.
- U4. Message status is available to the developer (queued, dropped, passed to delivery service).

- R1. Errors and status from the underlying delivery service are available to the developer.
- R2. Queued messages are persisted across restart.
- R3. Quota status is persisted across restart.

- S1. Nim library.
- +1. Nimble package manager is used to build.

### Add Segmentation to Reliable Channel API

**Owner**: Nim Messaging Team
**Owner**: Delivery Team

**Feature**: [Reliable Channel API](/messaging/furps/application/reliable_channel.md)

**FURPS**:
- F10. Large messages are segmented to fit transport constraints.
- R2. Segments tracked independently and reassembled before deliver (via event emission).
- R2. Segments tracked independently and reassembled before delivery (via event emission).
- P2. Final encoded routed message stays below 150 KB routing layer limit.

### Add Rate Limit Manager to Reliable Channel API

**Owner**: Nim Messaging Team
**Owner**: Delivery Team

**Feature**: [Reliable Channel API](/messaging/furps/application/reliable_channel.md)

Expand All @@ -58,18 +117,22 @@ Finally, prepare reliable channel to support de-MLS like encryption.

### Deprecate store hash queries for missing messages

**Owner**: Nim Messaging Team
**Owner**: Delivery Team

**Feature**: [Reliable Channel API](/messaging/furps/application/reliable_channel.md)

**FURPS**:
- ~~F4. Missing messages are automatically retrieved via store hash queries.~~

### Support different encryption for sync messages
### Support different encryption for sync messages

**Owner**: Nim Messaging Team
**Owner**: Delivery Team

**Feature**: [Reliable Channel API](/messaging/furps/application/reliable_channel.md)

**FURPS:**
- F11. A different encryption mechanism can be applied for sync message (than the one for content messages).
**FURPS**:
- F11. A different encryption mechanism can be applied for sync messages (than the one for content messages).

### Provide comprehensive documentation on the API

**Owner**: Delivery Team
Loading
Loading