adds reference docs for MIX resources

This commit is contained in:
Marcin Czenko 2026-07-17 04:34:00 +02:00
parent e70aedbaf5
commit 0ab2b1fe9b
No known key found for this signature in database
GPG Key ID: A0449219BDBA98AE
3 changed files with 64 additions and 8 deletions

58
10 Notes/Learning Mix.md Normal file
View File

@ -0,0 +1,58 @@
- MIX THEORY
- Mix spec: https://lip.logos.co/anoncomms/raw/mix.html
- SURBs
- Sphinx: A Compact and Provably Secure Mix Format: https://cypherpunks.ca/~iang/pubs/Sphinx_Oakland09.pdf
- Sphinx YouTube video: https://youtu.be/34TKXELJa2c?is=J8G4cNyG3djsWdtm
- In-depth treatment by Balazs: https://hackmd.io/@bkomuves/SJzVxYMsZl
- SURB section in the SPEC: https://lip.logos.co/anoncomms/raw/mix.html#87-single-use-reply-blocks
- PR: https://github.com/vacp2p/rfc-index/pull/307
- Sphinx Header Processing Example: https://hackmd.io/P-lbrq-iS7ui0WVcuw1rNA
- Also available in our Obsidian Vault: https://github.com/logos-storage/logos-storage-docs-obsidian
- Search for "Sphinx Header Processing Example".
- MIX IMPLEMENTATION:
- Main Mix Repo: https://github.com/logos-co/nim-libp2p-mix
- Examples:
- From Main Mix Repo:
- examples
- https://github.com/logos-co/nim-libp2p-mix/blob/master/examples/mix_ping.nim
- additional examples of how to use MIX in its default mode when `exit node == destination`:
- https://github.com/logos-co/nim-libp2p-mix/blob/feat/runtime-mix-exit-destination-dispatch/examples/mix_ping_mix_node.nim
- relevant DRAFT PR: https://github.com/logos-co/nim-libp2p-mix/pull/11
- Standalone (extracted from the main repo for convenience)
- https://github.com/logos-storage/libp2p-mix-ping-example
- Transport over MIX
- Transport layer over Mix - draft spec: https://hackmd.io/CykSpMIrRP6XA2byDiWurg
- Transport layer abstraction over Mix (initial notes from Balazs): https://hackmd.io/-6VNSq4iSpSQGu3xdJ6rOA
- Reference implementation in Haskel (from Balazs)
- https://github.com/logos-storage/transport-over-mix
- Nim implementation (placeholder):
- https://github.com/logos-storage/libp2p-storage-mix-transport
- includes some documents mirrored from Obsidian:
- https://github.com/logos-storage/libp2p-storage-mix-transport/tree/master/docs
- includes drafts implementations to encode the so-called "read-destination behavior" in the payload:
- mix-read-behavior-option-1: https://github.com/logos-storage/libp2p-storage-mix-transport/tree/mix-read-behavior-option-1
- mix-read-behavior-option-2:https://github.com/logos-storage/libp2p-storage-mix-transport/tree/mix-read-behavior-option-2
- preferred
- made it to a DRAFT PR on the Mix repo
- https://github.com/logos-co/nim-libp2p-mix/pull/11
- Hidden Services
- Mix hidden service specification: https://hackmd.io/@codex-storage/BJ2V1TwsZg
- https://github.com/logos-co/logos-lips/pull/330
- Earlier documents
- Logos-Storage Anonymous Publishing: https://hackmd.io/@codex-storage/Hyy8v2nrZg
- New Block Exchange Protocol
- New Block Protocol - Summary: https://hackmd.io/YKEKMFGgSAaHjVxKcz8n2w
- Bandwidth-Delay Product Estimations: Are we Doing It Right?: https://hackmd.io/2brFqqXzS9GQ4Ei5xe0gLw
### Potential Next Steps
- if you are new to MIX: look at MIX THEORY above
- if you want to see it action: look at MIX Implementation
- with some background, you can start building the MIX transport:
- Transport layer over Mix - draft spec: https://hackmd.io/CykSpMIrRP6XA2byDiWurg
- Reference implementation in Haskel (from Balazs)
- https://github.com/logos-storage/transport-over-mix
- start building
- the convention from the MIX implementation feels reasonable:
- a libp2p `Connection` as the transport interface
- start without erasure codding (can be added at a later step)

View File

@ -1,4 +1,4 @@
The copy of this document can be found in [https://github.com/logos-storage/libp2p-storage-mix-transport/blob/master/docs/surb.md](https://github.com/logos-storage/libp2p-storage-mix-transport/blob/master/docs/surb.md). The content of this document should contain the most recent version.
The copy of this document can be found in [https://github.com/logos-storage/libp2p-storage-mix-transport/blob/master/docs/surb.md](https://github.com/logos-storage/libp2p-storage-mix-transport/blob/master/docs/surb.md). The content available in the Obsidian vault should be considered the most recent version.
> This document belong to the series of [[Mix Implementation]] notes.
@ -7,11 +7,10 @@ vendored libp2p MIX implementation at
`nimbledeps/pkgs2/libp2p-*/libp2p/protocols/mix`.
It maps the implementation to the MIX spec, with special attention to the newer
SURB section in pull request 307:
SURB section in [pull request 307](https://github.com/logos-co/logos-lips/pull/307):
- Published MIX LIP: https://lip.logos.co/ift-ts/raw/mix.html
- Pull request 307: https://github.com/logos-co/logos-lips/pull/307
- Pull request snapshot, Section 8.7: https://github.com/logos-co/logos-lips/blob/bfd845f11c5ee4edc1d425c7c4a2b941285fd9a3/docs/ift-ts/raw/mix.md#87-single-use-reply-blocks
- Published MIX LIP: https://lip.logos.co/anoncomms/raw/mix.html
- SURB section in the SPEC: https://lip.logos.co/anoncomms/raw/mix.html#87-single-use-reply-blocks
The published LIP still contains older wording saying reply support is not
implemented yet. The pull request snapshot adds Section 8.7, which describes

View File

@ -1,9 +1,8 @@
The copy of this document can be found in [https://github.com/logos-storage/libp2p-storage-mix-transport/blob/master/docs/mix.md](https://github.com/logos-storage/libp2p-storage-mix-transport/blob/master/docs/mix.md). The content of this document should contain the most recent version.
The copy of this document can be found in [https://github.com/logos-storage/libp2p-storage-mix-transport/blob/master/docs/mix.md](https://github.com/logos-storage/libp2p-storage-mix-transport/blob/master/docs/mix.md). The content available in the Obsidian vault should be considered the most recent version.
> This document belong to the series of [[Mix Implementation]] notes.
This document describes the MIX implementation vendored with this [project] under
`nimbledeps/pkgs2/libp2p-*/libp2p/protocols/mix`. It focuses on how the code is
This document describes the MIX implementation. It focuses on how the code is
structured, what API surface is intended for callers, and what constraints matter
when using MIX as a transport-like wrapper for other libp2p protocols.