Skip to content

added nomos/raw/nomosda-encoding.md draft - #156

Merged
Cofson merged 10 commits into
mainfrom
nomos/nomosda-encoding-raw
Sep 25, 2025
Merged

added nomos/raw/nomosda-encoding.md draft#156
Cofson merged 10 commits into
mainfrom
nomos/nomosda-encoding-raw

Conversation

@Cofson

@Cofson Cofson commented May 9, 2025

Copy link
Copy Markdown
Contributor

Created nomosda-encoding.md draft on nomos/raw/ folder

@Cofson
Cofson requested a review from jimstir June 6, 2025 14:04
@Cofson
Cofson marked this pull request as ready for review June 12, 2025 22:39
@Cofson
Cofson requested a review from danielSanchezQ June 27, 2025 15:09
NomosDA provides an assurance that all data from Nomos zones, referred to as blobs,
are accessible and verifiable by every network participant.

This document presents an implementation specification describing how:

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.

Suggested change
This document presents an implementation specification describing how:
This specification describes the following:

Comment thread nomos/raw/nomosda-encoding.md Outdated
Comment on lines +41 to +42
and broadcasts the information if the data is verified. Finally,
the verifier stores the sample data for the required length of time.

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.

Suggested change
and broadcasts the information if the data is verified. Finally,
the verifier stores the sample data for the required length of time.
and broadcasts the information if the data is verified.
Finally, the verifier stores the sample data for the required length of time.

Use sembr throughout the spec.

Comment thread nomos/raw/nomosda-encoding.md Outdated
Comment on lines +192 to +194
verifiers. These functions rely on primitives such as **polynomial commitments** and
**Reed-Solomon erasure codes**, the details of which are outside the scope of this
document.

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.

Nomos team could add a reference to a relative paper or blog post for polynomial commitments and Reed-Solomon erasure codes. For now it is not important.

Comment thread nomos/raw/nomosda-encoding.md Outdated
These details, as well as introductions to the cryptographic primitives being used,
can be found in the NomosDA Cryptographic Protocol:

[NomosDA Cryptographic Protocol](https://www.notion.so/NomosDA-Cryptographic-Protocol-4bf3bb62cfb64422ab48b5b60aab6a73)

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.

The Nomos notion links are private and should be removed. Can just add a statement like, "This specification is a work in progress."

@@ -0,0 +1,209 @@
---
title: NOMOSDA-ENCODING

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 suggest when writing a title, start with the project name followed by the short-name of the specification. E.g. NOMOS-DA-ENCODING. The project name should be alone as an identifier within the RFC-index.

AkshayaMani and others added 3 commits July 25, 2025 16:56
This PR rewrites the Mix Protocol RFC for clarity, layering, and
implementability. It reorganizes the spec into a modular structure
aligned with RFC 7322 and RFC 2119, with clean separation between
protocol logic, integration, and pluggable components.

### Goals

- Clearly define Mix as a **message-based routing protocol**, not a
transport or application-layer solution.
- Support **per-message anonymity** via a `mixify` flag and **external
integration** through Entry and Exit layers.
- Adopt a clean, layered structure: motivation → integration → routing
model → cryptographic structure → node behavior.
- Use correct RFC formatting, keywords, and SEMBR for implementation
clarity.

### Changes Completed in This PR

#### Sections 0–5: Foundational Structure and Protocol Layering

* [x] **Abstract**: Concise, non-repetitive summary of protocol purpose
and scope.
* [x] **§1 Introduction**: Cleanly describes protocol role, document
scope, and integration model.
* [x] **§2 Terminology**: Defines all key terms; includes correct use of
`MUST`, `SHOULD`, and informal variants.
* [x] **§3 Motivation and Background**: Articulates need for sender
anonymity in libp2p; includes `§3.1 Comparison with Tor`.

#### Section 4 Mixing Strategy and Packet Format

* [x] **§4.1 Mixing Strategy**: Defines continuous-time mixing;
justifies choice over batching.
* [x] **§4.2 Packet Format Overview**: Defines what a mix packet must
achieve; outlines Sphinx format properties and rationale.

#### Section 5 Protocol Overview and Integration

* [x] **§5 Protocol Overview**: Clean, layered walkthrough of core
protocol behavior and layering in libp2p.
* [x] **§5.1 Integration with Origin Protocols**: External interface
components (Mix Entry/Exit layers).
* [x] **§5.2 Mixify Option**: Per-message flag defined.
* [x] **§5.3 Why a Protocol, Not a Transport**: Explains why Mix is
layered as a libp2p protocol, not a transport.
* [x] **§5.4 Protocol Interaction Flow**: Three-phase diagram and
explanation (entry → routing → exit).

#### Section 6 Pluggable Components

* [x] Discovery: advertise Mix support via ENR, X25519 key
* [x] Delay strategy: sender-defined per-hop delay
* [x] Spam protection: PoW/VDF/RLN options, exit node validation
* [x] Cover traffic: periodic loops for unobservability
* [x] Incentivization: nodes MUST participate to send

#### Section 7 Core Mix Protocol Responsibilities

* [x] Define Sender, Intermediary, Exit node roles
* [x] Specify lifecycle and message flow per role

#### Section 8 Sphinx Packet Format (Detailed Spec)

* [ ] Full field definitions (α, β, γ, δ, delays, MACs)
* [ ] Encoding and padding behavior

#### Section 9 Node Behavior (Mix Protocol Handler)

* [ ] Describe sender node logic: path selection, packet wrapping
* [ ] Describe intermediary/exit node behavior: decryption, delay,
forwarding

#### Section 10 Limitations and Future Work

* [ ] SURB-based reply support (unimplemented)
* [ ] DoS/Sybil attack surface
* [ ] Path overlap, message reordering, end-to-end acks

#### Appendices

* [ ] Appendix A: Proof-of-Work Example
* [ ] Appendix B: ENR-Based Discovery Example
Improved x3dh.md in the waku/standards/application/53 folder

---------

Co-authored-by: Jimmy Debe <91767824+jimstir@users.noreply.github.com>

@danielSanchezQ danielSanchezQ left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

I think the info here is not up to the latest document in notion.

Comment thread nomos/raw/nomosda-encoding.md Outdated
| `aggregated_column_proof` | Proof of the `column_commitment` hash related to the `aggregated_column_commitment` | `Proof` |
| `row_commitments` | Commitments for each matrix row | `List[Commitment]` |
| `row_proofs` | Proofs for each chunk in column corresponding to the encoded rows | `List[Proofs]` |
| `blob_id` | Computed as the hash (`sha3_256`) of `aggregated_column_commitment` + `row_commitments` | `bytes` |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This is not updated. We use blake2b for everything.

Comment thread nomos/raw/nomosda-encoding.md Outdated
Comment on lines +167 to +172
def blob_id(self) -> bytes:
hasher = sha3_256()
hasher.update(bytes(self.aggregated_column_commitment))
for c in self.row_commitments:
hasher.update(bytes(c))
return hasher.digest()

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Ditto

@danielSanchezQ danielSanchezQ left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Neat!

@Cofson
Cofson merged commit 39d6f07 into main Sep 25, 2025
2 checks passed
@Cofson
Cofson deleted the nomos/nomosda-encoding-raw branch September 25, 2025 18:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants