Wiki source code of Networks
Version 51.1 by Zenna Elfen on 2026/01/05 20:26
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | (% class="jumbotron" %) | ||
| 2 | ((( | ||
| 3 | (% class="container" %) | ||
| 4 | ((( | ||
| 5 | = Building Blocks of P4P Networks = | ||
| 6 | Making a P4P network is a bit different than traditional communication networks, namely because we side-step the traditional confinement of the internet layers and connect in a variety of means, from bluetooth to sneakernet and beyond. This is of course very nice in a variety of circumstances and to read more about the principles and capabilities of P4P networks, see the about page. | ||
| 7 | |||
| 8 | To fully assemble a P4P network one needs a few different building blocks, below is an overview of 15 of those building blocks. This outline of 15 building blocks has been collaboratively developed. If you see something missing or would like to give feedback, please reach out to Zenna. Now, let's dive into the building-blocks which make P4P protocols. | ||
| 9 | |||
| 10 | ))) | ||
| 11 | ))) | ||
| 12 | ((( | ||
| 13 | == 15 Building Blocks of P4P Networks == | ||
| 14 | |||
| 15 | |||
| 16 | ))) | ||
| 17 | |||
| 18 | |||
| 19 | |||
| 20 | |||
| 21 | |||
| 22 | |||
| 23 | (% class="row" %) | ||
| 24 | ((( | ||
| 25 | (% class="col-xs-12 col-sm-8" %) | ||
| 26 | ((( | ||
| 27 | |||
| 28 | |||
| 29 | ==== **1. Data Synchronization** ==== | ||
| 30 | |||
| 31 | > 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. | ||
| 32 | |||
| 33 | * //How do peers detect differences and synchronize state?// | ||
| 34 | * Examples: Range-Based Set Reconciliation, RIBLT, Gossip-based sync, State-based vs op-based sync, Lamport/Vector/HLC clocks, Braid Protocol | ||
| 35 | |||
| 36 | |||
| 37 | |||
| 38 | ==== **2. Collaborative Data Structures & Conflict Resolution** ==== | ||
| 39 | |||
| 40 | > 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. | ||
| 41 | |||
| 42 | * //How do peers collaboratively change shared data and merge conflicts?// | ||
| 43 | * Examples: CRDTs (Yjs, Automerge), OT, Event Sourcing, Stream Processing, Version Vectors, Peritext | ||
| 44 | |||
| 45 | |||
| 46 | |||
| 47 | ==== **3. Data Storage & Replication** ==== | ||
| 48 | |||
| 49 | > 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. | ||
| 50 | |||
| 51 | * //How is data persisted locally and replicated between peers?// | ||
| 52 | * Examples: SQLite, IndexedDB, LMDB, Hypercore (append-only logs), WALs, Merkle-DAGs (IPFS/IPLD), Blob/media storage | ||
| 53 | |||
| 54 | |||
| 55 | |||
| 56 | ==== **4. Peer & Content Discovery** ==== | ||
| 57 | |||
| 58 | > Discovery occurs in two phases: | ||
| 59 | > 1. **Peer Discovery** → finding _any_ nodes | ||
| 60 | > 2. **Topic Discovery** → finding _relevant_ nodes or resources | ||
| 61 | > These mechanisms enable decentralized bootstrapping and interest-based overlays. | ||
| 62 | |||
| 63 | * //How do peers find each other, and how do they discover content in the network?// | ||
| 64 | * Examples: DHTs (Kademlia, Pastry), mDNS, DNS-SD, Bluetooth scanning, QR bootstrapping, static peer lists, Interest-based routing, PubSub discovery (libp2p), Rendezvous protocols | ||
| 65 | |||
| 66 | |||
| 67 | |||
| 68 | ==== **5. Identity & Trust** ==== | ||
| 69 | |||
| 70 | > Identity systems ensure reliable mapping between peers and cryptographic keys. They underpin authorization, federated trust, and secure overlays. | ||
| 71 | |||
| 72 | * //How peers identify themselves, authenticate, and establish trustworthy relationships?// | ||
| 73 | * Examples: PKI, Distributed Identities (DIDs), Web-of-Trust, TOFU (SSH-style), Verifiable Credentials (VCs), Peer key fingerprints (libp2p PeerIDs), Key transparency logs | ||
| 74 | |||
| 75 | |||
| 76 | |||
| 77 | ==== **6. Transport Layer** ==== | ||
| 78 | |||
| 79 | > This layer provides logical connections and flow control. QUIC and WebRTC bring modern congestion control and encryption defaults; Interpeer explores transport beyond IP assumptions. | ||
| 80 | |||
| 81 | * //How do peers establish end-to-end byte streams and reliable delivery?// | ||
| 82 | * Examples: TCP, UDP, QUIC, SCTP, WebRTC DataChannels, Interpeer transport stack | ||
| 83 | |||
| 84 | |||
| 85 | |||
| 86 | ==== **7. Underlying Transport (Physical/Link Layer)** ==== | ||
| 87 | |||
| 88 | > Highly relevant for **offline-first / edge networks**, device-to-device communication, and mesh networks and relates to the hardware which facilitates connections. | ||
| 89 | |||
| 90 | * //How does data move across the medium?// | ||
| 91 | * Examples: Ethernet, Wi-Fi Direct / Wi-Fi Aware (post-AWDL), Bluetooth Mesh, LoRa, NFC, Cellular, CSMA/CA, TDMA, FHSS | ||
| 92 | |||
| 93 | |||
| 94 | |||
| 95 | ==== **8. Session & Connection Management** ==== | ||
| 96 | |||
| 97 | > Manages **connection lifecycle**, including authentication handshakes, reconnection after drops, and session continuation—especially important in lossy or mobile networks. | ||
| 98 | |||
| 99 | * //How are connections initiated, authenticated, resumed, and kept alive?// | ||
| 100 | * Examples: TLS handshake semantics, Noise IK/XX patterns, session tokens, keep-alive heartbeats, reconnection strategies, session resumption tickets | ||
| 101 | |||
| 102 | |||
| 103 | |||
| 104 | ==== **9. Content Addressing** ==== | ||
| 105 | |||
| 106 | > Content addressing ensures **immutability, verifiability, and deduplication**. Identity of data = cryptographic hash, enabling offline-first and tamper-evident systems. | ||
| 107 | |||
| 108 | * //How is data addressed and verified by content, not location?// | ||
| 109 | * Examples: IPFS CIDs, BitTorrent infohashes, Git hashes, SHA-256 addressing, Named Data Networking (NDN) | ||
| 110 | |||
| 111 | |||
| 112 | |||
| 113 | ==== **10. P2P Connectivity** ==== | ||
| 114 | |||
| 115 | > Connectivity ensures peers bypass NATs/firewalls to reach each other. | ||
| 116 | |||
| 117 | * //How can two peers connect directly across networks, firewalls, and NATs?// | ||
| 118 | * Examples: IPv6 direct, NAT Traversal, STUN, TURN, ICE (used in WebRTC), UDP hole punching, UPnP | ||
| 119 | |||
| 120 | |||
| 121 | |||
| 122 | ==== **11. Session & Connection Management** ==== | ||
| 123 | |||
| 124 | > Manages **connection lifecycle**, including authentication handshakes, reconnection after drops, and session continuation. | ||
| 125 | |||
| 126 | * //How are connections initiated, authenticated, resumed, and kept alive?// | ||
| 127 | * Examples: TLS handshake semantics, Noise IK/XX patterns, session tokens, keep-alive heartbeats, reconnection strategies, session resumption tickets | ||
| 128 | |||
| 129 | |||
| 130 | |||
| 131 | ==== **12. Message Format & Serialization** ==== | ||
| 132 | |||
| 133 | > Serialization ensures **portable data representation**, forward-compatible schemas, and efficient messaging. IPLD provides content-addressed structuring for P2P graph data. | ||
| 134 | |||
| 135 | * //How is data encoded, structured, and made interoperable between peers?// | ||
| 136 | * Examples: CBOR, Protocol Buffers, Cap’n Proto, JSON, ASN.1, IPLD schemas, Flatbuffers | ||
| 137 | |||
| 138 | |||
| 139 | |||
| 140 | ==== **13. File / Blob Synchronization** ==== | ||
| 141 | |||
| 142 | > 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. | ||
| 143 | |||
| 144 | //How are large objects transferred and deduplicated efficiently across peers?// | ||
| 145 | Examples: BitTorrent chunking, IPFS block-store, NDN segments, rsync-style delta sync, ZFS send-receive, streaming blob transfers | ||
| 146 | |||
| 147 | |||
| 148 | ==== **14. Local Storage & Processing Primitives** ==== | ||
| 149 | |||
| 150 | > Provides durable on-device state and local computation (event sourcing, materialization, compaction). Enables offline-first writes and deterministic replay. | ||
| 151 | |||
| 152 | * //How do nodes persist, index, and process data locally—without external servers?// | ||
| 153 | * Examples: RocksDB, LevelDB, SQLite, LMDB, local WALs/append-only logs, embedded stream processors (NATS Core JetStream mode, Actyx-like edge runtimes), Kafka-like libraries | ||
| 154 | |||
| 155 | |||
| 156 | |||
| 157 | ==== **15. Crash Resilience & Abortability** ==== | ||
| 158 | |||
| 159 | > 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. | ||
| 160 | |||
| 161 | * //How do nodes recover and maintain correctness under failure?// | ||
| 162 | * Examples: WALs, idempotent ops, partial log replay, transactional journaling, write fences | ||
| 163 | |||
| 164 | |||
| 165 | |||
| 166 | |||
| 167 | ))) | ||
| 168 | |||
| 169 | |||
| 170 | |||
| 171 | |||
| 172 | |||
| 173 | (% class="col-xs-12 col-sm-4" %) | ||
| 174 | ((( | ||
| 175 | {{box title=" **Contents**"}} | ||
| 176 | {{toc depth="5"/}} | ||
| 177 | {{/box}} | ||
| 178 | ))) | ||
| 179 | |||
| 180 | |||
| 181 | (% class="col-xs-12 col-sm-12" %) | ||
| 182 | ((( | ||
| 183 | == Distributed Network Types == | ||
| 184 | |||
| 185 | |||
| 186 | [[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"]] | ||
| 187 | |||
| 188 | |||
| 189 | |||
| 190 | == Overview of P4P Networks == | ||
| 191 | |||
| 192 | {{include reference="Projects.WebHome"/}} | ||
| 193 | ))) | ||
| 194 | |||
| 195 | |||
| 196 | |||
| 197 | |||
| 198 | |||
| 199 | |||
| 200 | |||
| 201 | ))) |