better describe sds requirements

This commit is contained in:
Ivan FB 2026-04-29 18:12:36 +02:00
parent 8734fd5d8f
commit 81ee865e55
No known key found for this signature in database
GPG Key ID: DF0C67A04C543270

View File

@ -103,6 +103,11 @@ See [SEGMENTATION](./segmentation.md).
[SDS](https://lip.logos.co/ift-ts/raw/sds.html) provides end-to-end delivery guarantees using causal history tracking.
- Each new segment to be sent, requires the following data:
- `MessageId`: a 40-character random hex string (e.g. `a23f89b4df7e1ba5a709352da3a247a4fd609f4c`), generated by the Reliable Channel API.
- `ChannelId`: the `channelId` passed to `createReliableChannel`.
- Retrieval hint: the transport `MessageHash` of the segment, exposed by the underlying [MESSAGING-API](/standards/application/messaging-api.md). The hint provider registered during [Node initialization](#node-initialization) performs this `MessageId → MessageHash` lookup.
- Each sent segment is registered in an outgoing buffer.
- The recipient sends acknowledgements back to the sender upon receiving segments.
- The sender removes acknowledged segments from the outgoing buffer.
@ -148,10 +153,7 @@ the implementation MUST perform the following setup before the node is used:
When `send` is called, the implementation MUST process `message` in the following order:
1. **Segment**: Split the payload into segments as defined in [SEGMENTATION](./segmentation.md). The maximum segment size MUST be reduced by the size of the SDS header added in step 2, so that each segment together with its SDS header stays within the network message size limit.
2. **Apply [SDS](https://lip.logos.co/ift-ts/raw/sds.html)** for each segment that is sent:
- Generate a random MessageId. 40-char long. e.g. `a23f89b4df7e1ba5a709352da3a247a4fd609f4c`.
- Persist the MessageId plus the payload for the current segment being sent.
- Get the retrieval hint from previously persisted messages (see point 5.).
2. **Apply [SDS](https://lip.logos.co/ift-ts/raw/sds.html)**: register each segment in the SDS outgoing buffer (see [SDS](#scalable-data-sync-sds) for parameter bindings).
3. **Encrypt**: If an `Encryption` implementation is provided, encrypt each segment before transmission.
4. **Rate Limit**: If `RateLimitConfig.enabled` is `true`, delay dispatch as needed to comply with [RLN](https://lip.logos.co/messaging/standards/core/17/rln-relay.html) epoch constraints.
5. **Dispatch**