Wiki source code of Networks

Version 49.1 by Zenna Elfen on 2026/01/05 20:13

Hide last authors
Zenna Elfen 19.1 1 (% class="jumbotron" %)
2 (((
3 (% class="container" %)
4 (((
Zenna Elfen 20.1 5 = Peer-for-Peer Networks =
Zenna Elfen 19.1 6
Zenna Elfen 20.1 7 P4P, short for Peer-4-Peer (which in turn is short for Peer-for-Peer) are a family of networks which build on principles of local-first, peer-2-peer, open-source, routing agnostic (offline-first) and mutual-aid principles. The above is a lot of terms which in and of themselves carry a lot of meaning, yet when combined they enable censorship-resistant, resilient and adaptive, sustainable and energy-efficient communication infrastructures.
Zenna Elfen 19.1 8 )))
9 )))
10
Zenna Elfen 49.1 11 == Core principles of Peer-4-Peer Networks ==
Zenna Elfen 42.1 12
Zenna Elfen 43.1 13
Zenna Elfen 49.1 14 === Mutual-Aid ===
Zenna Elfen 43.1 15
Zenna Elfen 44.1 16
Zenna Elfen 49.1 17 === Peer-2-Peer ===
Zenna Elfen 45.1 18
19
Zenna Elfen 49.1 20 === Local-First ===
Zenna Elfen 28.1 21
Zenna Elfen 34.1 22
Zenna Elfen 49.1 23 === Routing Agnostic ===
Zenna Elfen 39.1 24
25
Zenna Elfen 40.1 26
Zenna Elfen 46.1 27
Zenna Elfen 33.1 28 (((
Zenna Elfen 49.1 29 == 15 Building Blocks of P4P Networks ==
Zenna Elfen 27.1 30
Zenna Elfen 49.1 31 To fully assemble a P4P network one needs a few different building blocks, below is an overview of 15 of those building blocks.
Zenna Elfen 45.1 32 )))
Zenna Elfen 27.1 33
34
Zenna Elfen 11.1 35
Zenna Elfen 47.1 36
37 (% class="row" %)
38 (((
Zenna Elfen 43.1 39 (% class="col-xs-12 col-sm-8" %)
Zenna Elfen 37.1 40 (((
Zenna Elfen 42.1 41
Zenna Elfen 35.1 42
Zenna Elfen 15.1 43 ==== **1. Data Synchronization** ====
Zenna Elfen 11.1 44
Zenna Elfen 13.1 45 > Synchronization answers **how updates flow between peers** and how they determine what data to exchange. This layer is about **diffing, reconciliation, order, causality tracking, and efficient exchange**, not persistence or user-facing collaboration semantics.
Zenna Elfen 11.1 46
Zenna Elfen 15.1 47 * //How do peers detect differences and synchronize state?//
48 * Examples: Range-Based Set Reconciliation, RIBLT, Gossip-based sync, State-based vs op-based sync, Lamport/Vector/HLC clocks, Braid Protocol
Zenna Elfen 11.1 49
50
51
Zenna Elfen 15.1 52 ==== **2. Collaborative Data Structures & Conflict Resolution** ====
Zenna Elfen 11.1 53
Zenna Elfen 13.1 54 > This layer defines **how shared data evolves** when multiple peers edit concurrently. It focuses on **conflict-free merging, causality, and consistency of meaning**, not transport or storage. CRDTs ensure deterministic convergence, while event-sourced or stream-driven models maintain a history of all changes and derive consistent state from it.
55
Zenna Elfen 15.1 56 * //How do peers collaboratively change shared data and merge conflicts?//
57 * Examples: CRDTs (Yjs, Automerge), OT, Event Sourcing, Stream Processing, Version Vectors, Peritext
Zenna Elfen 13.1 58
59
60
Zenna Elfen 15.1 61 ==== **3. Data Storage & Replication** ====
Zenna Elfen 13.1 62
63 > This layer focuses on **durability, consistency, and redundancy**. It handles write-paths, crash-resilience, and replication semantics across nodes. It is the “database/storage engine” layer where **data lives and survives over time**, independent of sync or merging logic.
64
Zenna Elfen 15.1 65 * //How is data persisted locally and replicated between peers?//
66 * Examples: SQLite, IndexedDB, LMDB, Hypercore (append-only logs), WALs, Merkle-DAGs (IPFS/IPLD), Blob/media storage
Zenna Elfen 13.1 67
68
69
Zenna Elfen 15.1 70 ==== **4. Peer & Content Discovery** ====
71
Zenna Elfen 13.1 72 > Discovery occurs in two phases:
73 > 1. **Peer Discovery** → finding _any_ nodes
74 > 2. **Topic Discovery** → finding _relevant_ nodes or resources
75 > These mechanisms enable decentralized bootstrapping and interest-based overlays.
76
Zenna Elfen 15.1 77 * //How do peers find each other, and how do they discover content in the network?//
78 * Examples: DHTs (Kademlia, Pastry), mDNS, DNS-SD, Bluetooth scanning, QR bootstrapping, static peer lists, Interest-based routing, PubSub discovery (libp2p), Rendezvous protocols
Zenna Elfen 13.1 79
80
81
Zenna Elfen 15.1 82 ==== **5. Identity & Trust** ====
Zenna Elfen 13.1 83
84 > Identity systems ensure reliable mapping between peers and cryptographic keys. They underpin authorization, federated trust, and secure overlays.
85
Zenna Elfen 15.1 86 * //How peers identify themselves, authenticate, and establish trustworthy relationships?//
87 * Examples: PKI, Distributed Identities (DIDs), Web-of-Trust, TOFU (SSH-style), Verifiable Credentials (VCs), Peer key fingerprints (libp2p PeerIDs), Key transparency logs
Zenna Elfen 13.1 88
89
Zenna Elfen 16.1 90
Zenna Elfen 15.1 91 ==== **6. Transport Layer** ====
Zenna Elfen 13.1 92
Zenna Elfen 15.1 93 > This layer provides logical connections and flow control. QUIC and WebRTC bring modern congestion control and encryption defaults; Interpeer explores transport beyond IP assumptions.
Zenna Elfen 13.1 94
Zenna Elfen 16.1 95 * //How do peers establish end-to-end byte streams and reliable delivery?//
Zenna Elfen 15.1 96 * Examples: TCP, UDP, QUIC, SCTP, WebRTC DataChannels, Interpeer transport stack
Zenna Elfen 13.1 97
98
Zenna Elfen 16.1 99
Zenna Elfen 15.1 100 ==== **7. Underlying Transport (Physical/Link Layer)** ====
101
102 > Highly relevant for **offline-first / edge networks**, device-to-device communication, and mesh networks and relates to the hardware which facilitates connections.
103
Zenna Elfen 16.1 104 * //How does data move across the medium?//
Zenna Elfen 15.1 105 * Examples: Ethernet, Wi-Fi Direct / Wi-Fi Aware (post-AWDL), Bluetooth Mesh, LoRa, NFC, Cellular, CSMA/CA, TDMA, FHSS
106
Zenna Elfen 16.1 107
108
Zenna Elfen 15.1 109 ==== **8. Session & Connection Management** ====
110
111 > Manages **connection lifecycle**, including authentication handshakes, reconnection after drops, and session continuation—especially important in lossy or mobile networks.
112
Zenna Elfen 16.1 113 * //How are connections initiated, authenticated, resumed, and kept alive?//
Zenna Elfen 15.1 114 * Examples: TLS handshake semantics, Noise IK/XX patterns, session tokens, keep-alive heartbeats, reconnection strategies, session resumption tickets
115
116
Zenna Elfen 16.1 117
Zenna Elfen 15.1 118 ==== **9. Content Addressing** ====
119
120 > Content addressing ensures **immutability, verifiability, and deduplication**. Identity of data = cryptographic hash, enabling offline-first and tamper-evident systems.
121
Zenna Elfen 16.1 122 * //How is data addressed and verified by content, not location?//
Zenna Elfen 15.1 123 * Examples: IPFS CIDs, BitTorrent infohashes, Git hashes, SHA-256 addressing, Named Data Networking (NDN)
124
Zenna Elfen 16.1 125
126
Zenna Elfen 15.1 127 ==== **10. P2P Connectivity** ====
128
Zenna Elfen 16.1 129 > Connectivity ensures peers bypass NATs/firewalls to reach each other. 
Zenna Elfen 15.1 130
Zenna Elfen 16.1 131 * //How can two peers connect directly across networks, firewalls, and NATs?//
Zenna Elfen 15.1 132 * Examples: IPv6 direct, NAT Traversal, STUN, TURN, ICE (used in WebRTC), UDP hole punching, UPnP
133
Zenna Elfen 16.1 134
135
Zenna Elfen 15.1 136 ==== **11. Session & Connection Management** ====
137
138 > Manages **connection lifecycle**, including authentication handshakes, reconnection after drops, and session continuation.
139
Zenna Elfen 16.1 140 * //How are connections initiated, authenticated, resumed, and kept alive?//
Zenna Elfen 15.1 141 * Examples: TLS handshake semantics, Noise IK/XX patterns, session tokens, keep-alive heartbeats, reconnection strategies, session resumption tickets
142
Zenna Elfen 16.1 143
144
Zenna Elfen 15.1 145 ==== **12. Message Format & Serialization** ====
146
147 > Serialization ensures **portable data representation**, forward-compatible schemas, and efficient messaging. IPLD provides content-addressed structuring for P2P graph data.
148
Zenna Elfen 16.1 149 * //How is data encoded, structured, and made interoperable between peers?//
Zenna Elfen 15.1 150 * Examples: CBOR, Protocol Buffers, Cap’n Proto, JSON, ASN.1, IPLD schemas, Flatbuffers
151
Zenna Elfen 16.1 152
153
Zenna Elfen 15.1 154 ==== **13. File / Blob Synchronization** ====
155
156 > Bulk data syncing has **different trade-offs** than small collaborative state (chunking, deduplication, partial transfer, resume logic). Critical for media and archival P2P use-cases.
157
Zenna Elfen 16.1 158 //How are large objects transferred and deduplicated efficiently across peers?//
Zenna Elfen 15.1 159 Examples: BitTorrent chunking, IPFS block-store, NDN segments, rsync-style delta sync, ZFS send-receive, streaming blob transfers
160
Zenna Elfen 16.1 161
Zenna Elfen 15.1 162 ==== **14. Local Storage & Processing Primitives** ====
163
164 > Provides durable on-device state and local computation (event sourcing, materialization, compaction). Enables offline-first writes and deterministic replay.
165
Zenna Elfen 16.1 166 * //How do nodes persist, index, and process data locally—without external servers?//
Zenna Elfen 15.1 167 * Examples: RocksDB, LevelDB, SQLite, LMDB, local WALs/append-only logs, embedded stream processors (NATS Core JetStream mode, Actyx-like edge runtimes), Kafka-like libraries
168
169
Zenna Elfen 16.1 170
Zenna Elfen 15.1 171 ==== **15. Crash Resilience & Abortability** ====
172
173 > Ensures P2P apps don’t corrupt state on crashes. Tied to **local storage & stream-processing**, and critical in offline-first and distributed update pipelines. Abortability is the updated term for Atomicity as part of the ACID abbreviation.
174
Zenna Elfen 16.1 175 * //How do nodes recover and maintain correctness under failure?//
Zenna Elfen 15.1 176 * Examples: WALs, idempotent ops, partial log replay, transactional journaling, write fences
177
178
179
Zenna Elfen 49.1 180
Zenna Elfen 48.1 181 )))
Zenna Elfen 15.1 182
Zenna Elfen 11.1 183
Zenna Elfen 49.1 184
Zenna Elfen 46.1 185 (% class="col-xs-12 col-sm-4" %)
186 (((
187 {{box title=" **Contents**"}}
188 {{toc depth="5"/}}
189 {{/box}}
190 )))
191
Zenna Elfen 48.1 192
Zenna Elfen 47.1 193 (% class="col-xs-12 col-sm-12" %)
194 (((
Zenna Elfen 48.1 195 == Distributed Network Types ==
196
197
198 [[Flowchart depicting distributed network variants, under development. Building on work from Z. Elfen, 2024: ~[~[https:~~~~/~~~~/doi.org/10.17613/naj7d-6g984~>~>https://doi.org/10.17613/naj7d-6g984~]~]>>image:P4P_Typology.png||alt="Flowchart depicting typologies of distributed networks, such as Friend-2-Friend, Grassroots Networks, Federated Networks, Local-First, P2P and P4P Networks" data-xwiki-image-style-alignment="center" height="649" width="639"]]
199
200
Zenna Elfen 49.1 201
Zenna Elfen 35.1 202 == Overview of P4P Networks ==
203
204 {{include reference="Projects.WebHome"/}}
Zenna Elfen 47.1 205 )))
Zenna Elfen 11.1 206
207
Zenna Elfen 32.1 208
Zenna Elfen 33.1 209
Zenna Elfen 34.1 210
Zenna Elfen 48.1 211
Zenna Elfen 47.1 212
213 )))