aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/mod.rs
Commit message (Collapse)AuthorAgeFilesLines
* roots: an epoch's root pinned, and named in every handshaketv3 days1-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Review 2, N7, the care it raised: a joining node's empty document took as the first epoch's root whatever dependency-less change came first, from whichever peer it joined through; the first epoch's ID is all zeros, so nothing pinned it. A remake's epoch has its ID, the snapshot change's hash, which the rules hold its root to. * Every node names its epoch's root in HELLO and HELLO_REPLY (the epoch's ID for a remake's, its genesis change for the first; wire version 45). A node whose document starts from another root of the same epoch refuses the handshake, logging it: another history under the swarm's ID, a forged root or a genesis started again. * A joining node with an empty document takes as its root only the one it was given (--genesis-root, new), else the one its peers name, and none while they name different ones (access::screen::RootPin, kept in Screening across documents): one peer hands it another root only if it is all the joiner hears, or never, with --genesis-root. A root refused is listed with the refused, what builds on it with it. * The genesis node logs the root (`The swarm's root`); GET /admin/epochs shows it (`root`). A genesis started again under a remembered swarm ID used to merge with the nodes of it still running; they now refuse it (another root), and the docs say to join them with seeds instead. The epoch's identity stays as it is (generation 0 all zeros): records and epoch metadata name it so, and every comparison of epochs with them.
* swarm: changes taken unjudged, dropped (REFUSALS)tv4 days1-0/+1
| | | | | | | | | A node refusing changes a peer brought tells it which broke a rule; the peer judges them itself, and if its rules refuse them too, drops them with all built on them (its document forked without them, a fresh actor), quarantining its own writes among them. Wire version 42. Auth plan M6 (rejoin on taint).
* signatures: on their own (SIGNATURES)tv4 days1-0/+1
| | | | | | | Signatures no sync message took go on their own within a second, to each peer not sent them yet (wire version bumped). Auth plan M5.
* dashboard: without LINKS; LINKS removedtv4 days1-1/+0
| | | | | | | | | The dashboard reads every member's links from the members themselves; LINKS and LINKS_REPLY, swarm::links and their wire tags go (wire version bumped). Nodes the browser can't reach are drawn from what the reachable ones measure. Auth plan M3.
* flood disseminationtv5 days1-0/+1
|
* HyParView (slim)tv5 days1-0/+1
|
* plumtreetv5 days1-0/+1
|
* dissemination traittv5 days1-0/+1
|
* working links recordedtv5 days1-0/+1
|
* suspend detectedtv5 days1-0/+1
|
* hop delaystv7 days1-0/+1
|
* add writer treestv8 days1-0/+1
|
* measure 2-hop neighbourhoodtv8 days1-0/+1
|
* add peer clock skew warningtv11 days1-0/+1
|
* document: move knowledge about node to swarmtv11 days1-0/+1
|
* move change publisher to own moduletv11 days1-0/+1
|
* add links messagestv12 days1-0/+1
| | | | | | | | | Introduce two new wire messages, LINKS and LINKS_REPLY (swarm::links). A member answers with its links: for each peer, the transport, whether it’s relayed, the RTT, and whether it’s dormant. It answers members only, at most every 5 s. This bumps wire::VERSION to 7. Every build answers, with or without the feature, so every node needs this patch before the map shows anything beyond its own node.
* add state filetv2026-10-251-0/+1
| | | | | This allows storing the swarm ID and additionally discovered seeds, which prevents a formerly genesis node to start a new document.
* add chunked download and use it during rejointv2026-10-241-0/+1
|
* add throughput statstv2026-10-241-0/+1
|
* add swarm statstv2026-10-241-0/+1
|
* assess swarm stabilitytv2026-10-241-0/+1
|
* record RTT from keepalive messagestv2026-10-241-0/+1
|
* pull missing changestv2026-10-241-0/+1
| | | | | | Nodes push changes to their neighbours but don't relay them directly. In a partial mesh, nodes can learn about missing changes via keepalive messages and can pull them from their neighbours.
* add neighbour graphtv2026-10-241-0/+1
|
* add member registrytv2026-10-241-0/+1
|
* probe sync source during catch-uptv2026-10-231-0/+1
| | | | This allows changing sources without the fixed 30 s stall duration.
* pick pair leader by hash instead of key ordertv2026-10-231-0/+1
|
* introduce pre-shared swarm keytv2026-10-221-0/+1
|
* reorganize all the modulestv2026-10-211-0/+6