aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/bootstrap.rs
Commit message (Collapse)AuthorAgeFilesLines
* roots: an epoch's root pinned, and named in every handshaketv3 days1-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* access: --bootstrap-keystv4 days1-5/+6
| | | | | | | The first users' SSH keys, recorded at genesis with their entries, so a swarm can be strict from its start. Auth plan M7.
* signatures: kept in the document filetv4 days1-4/+13
| | | | | | | A node's signatures are saved with its document (--document-file) and loaded with it. Auth plan M5.
* access: the users endpointstv4 days1-3/+3
| | | | | | | | /admin/users: list, add (one or several), remove, disable, grant and revoke capabilities; each one change, refused if it would lock its writer out. Capabilities as the store's paths name them. Auth plan M1.
* access: first users at genesistv4 days1-1/+23
| | | | | | | | --bootstrap-users gives a new swarm a registry from its first change, each first user with everything; other users may do nothing until added. Without it the swarm has no registry and works as before. Auth plan M1.
* HyParView (slim)tv5 days1-1/+10
|
* swarm neighbourstv6 days1-2/+10
|
* bootstrap: replace pull by progress notifytv10 days1-2/+14
|
* use Automerge as Document instead of AutoCommittv11 days1-3/+2
| | | | This allows a lot of operations to drop mut.
* move all automerge references to documenttv11 days1-4/+2
|
* rename AutoMerge to Documenttv11 days1-6/+6
|
* move keepalive and firewall to pathstv2026-10-281-0/+1
|
* use libp2p mDNStv2026-10-271-0/+11
|
* move protocol paths to dedicated moduletv2026-10-261-2/+3
|
* add simulation testtv2026-10-251-1/+4
|
* allow to persist documenttv2026-10-251-22/+145
|
* add files module to consistently track statstv2026-10-251-6/+6
|
* warn about unresolvable seeds once; log successtv2026-10-251-7/+22
|
* add disk I/O statstv2026-10-251-4/+18
|
* add possibility to start with a documenttv2026-10-251-4/+61
| | | | The --recover-from option allows a node start with a given document.
* add state filetv2026-10-251-2/+18
| | | | | This allows storing the swarm ID and additionally discovered seeds, which prevents a formerly genesis node to start a new document.
* put swarm ID into the documenttv2026-10-251-3/+19
|
* add genesis flag and never give uptv2026-10-251-65/+87
| | | | | | | | | The --genesis flag has been introduced to start with a new document. This prevents restarts to accidentally start with a new document and accept reads/writes, causing a second swarm to appear. Additionally, bootstrapping doesn't timeout anymore as that's of no use for nobody.
* drop pre-membership sync messagestv2026-10-231-4/+2
| | | | | The handshake resets the session anyway, and the sender's reply timeout resends what still matters.
* merge membership and authenticate into standingtv2026-10-231-5/+2
|
* consistently use the words node, peer, and seedtv2026-10-231-3/+3
|
* rename cluster to swarm everywhere!tv2026-10-211-14/+14
|
* rename compaction to remaketv2026-10-211-1/+1
|
* reorganize all the modulestv2026-10-211-0/+104