diff --git a/10 Notes/Learning Mix.md b/10 Notes/Learning Mix.md new file mode 100644 index 0000000..e864075 --- /dev/null +++ b/10 Notes/Learning Mix.md @@ -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) \ No newline at end of file diff --git a/10 Notes/Sphinx SURBs implementation in the libp2p MIX protocol.md b/10 Notes/Sphinx SURBs implementation in the libp2p MIX protocol.md index 97e35f0..2add374 100644 --- a/10 Notes/Sphinx SURBs implementation in the libp2p MIX protocol.md +++ b/10 Notes/Sphinx SURBs implementation in the libp2p MIX protocol.md @@ -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 diff --git a/10 Notes/libp2p MIX Architecture and API.md b/10 Notes/libp2p MIX Architecture and API.md index 8e8ff8d..9341831 100644 --- a/10 Notes/libp2p MIX Architecture and API.md +++ b/10 Notes/libp2p MIX Architecture and API.md @@ -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.