aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/sync.rs
Commit message (Collapse)AuthorAgeFilesLines
* screen: a signature vouches for its change and what it builds ontv3 days1-0/+3
| | | | | | | | | | | | | | | Review finding 5: vouching by (actor, seq) isn't bound to a hash. A member can make a change under another member's actor at a seq that member's signature covers. The change is then taken as vouched, and if it breaks a rule, the honest member is refused as a whole and logged as the one whose own change broke the rules. A signature now vouches for its change and the changes of its actor it builds on: in the document, as before; among received changes, those it reaches through the batch's dependencies. A received change under an actor at a seq whose change the document holds (a signature verified up to it) is a fork: refused as forged, never as its actor's node's, not told back in REFUSALS, and logged with the peer that brought it.
* sync: a member refused as a whole, synced with again once it changed documenttv3 days1-3/+21
| | | | | | | | | | | | A node refusing a member as a whole sent it nothing, and lifted that only when a change of the member's was taken again. But a member that dropped what was refused (REFUSALS) starts its sync sessions over, and a fresh session sends no changes until the other side answers: the two waited for each other, and the member stayed refused. The refusal now notes the member's run and epoch_seq when it began; a member with another document since (it dropped what was refused, or rejoined) is synced with again.
* swarm: changes taken unjudged, dropped (REFUSALS)tv4 days1-4/+15
| | | | | | | | | 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).
* access: members refused as a wholetv4 days1-0/+8
| | | | | | | | | With signatures required, a member whose own change broke a rule is refused as a whole: sent nothing, shown in /peers (refused), in stats (sync.refusedPeers) and on the dashboard, until a change of its is taken again or the epoch changes. Auth plan M6 (diverged standing).
* access: refused oncetv4 days1-5/+28
| | | | | | | | A refused change is remembered by its hash: offered again it is refused without decoding, judging or logging, so is one built on it, and a peer offering nothing else is answered later each time, up to a minute. Auth plan M6 (re-sending).
* access: signatures requiredtv4 days1-5/+20
| | | | | | | | "signatures": "required": a change counts only once a signature by its committer vouches for it, and waits until then; every node then signs every change it makes. Auth plan M6.
* access: the policy enforcedtv4 days1-2/+31
| | | | | | | | _continuum/access/policy ({"version": 1}) has every node screen every change it receives, on every path changes come in. A policy a node doesn't know stops its writes through the API. GET /admin/refused. Auth plan M6.
* signatures: with sync messagestv4 days1-1/+40
| | | | | | | Sync messages carry, for each actor's writes, the latest signature the sender checked; the receiver checks it once it holds the change. Auth plan M5.
* HyParView (slim)tv5 days1-3/+6
|
* dissemination traittv5 days1-3/+6
|
* trees at runtimetv5 days1-0/+3
|
* delta end guardedtv5 days1-7/+23
|
* writers own treetv5 days1-1/+46
|
* asks by askertv6 days1-0/+1
|
* offerer asked firsttv6 days1-0/+1
|
* answering behind countedtv6 days1-2/+7
|
* one walk sincetv6 days1-11/+9
|
* no bloom bytestv6 days1-3/+3
|
* no epoch tag measuretv6 days1-3/+1
|
* waiting not twicetv6 days1-1/+8
|
* offer answerstv6 days1-0/+11
|
* push by defaulttv6 days1-5/+4
|
* broken pushes refusedtv6 days1-14/+7
|
* pushed have is the senders headstv6 days1-5/+1
|
* push only below deflatetv6 days1-2/+8
|
* push changes experimenttv6 days1-16/+78
|
* deflate blob chunkstv7 days1-5/+32
|
* epoch tag in synctv7 days1-6/+13
|
* no swarm ID in synctv7 days1-22/+7
|
* announce only to those behindtv7 days1-0/+3
|
* measure sync envelopestv7 days1-0/+10
|
* asked known elsewheretv7 days1-1/+4
|
* covered neighbours have ittv7 days1-8/+13
|
* new changes per messagetv7 days1-1/+2
|
* delta from held headstv7 days1-1/+4
|
* offer again ungeneratedtv7 days1-32/+53
|
* stale delta offerstv7 days1-0/+19
|
* delta known to sendertv7 days1-1/+7
|
* delta propagationtv7 days1-1/+17
|
* one delta at a timetv7 days1-2/+15
|
* log why a deltatv7 days1-0/+6
|
* offered deltas lapsetv7 days1-4/+14
|
* throughput from delivered messagetv7 days1-0/+9
|
* hop delaystv7 days1-1/+10
|
* benchmark delays by pathtv7 days1-0/+3
|
* benchmark what sync bytes aretv7 days1-1/+5
|
* changes from a peer never go backtv7 days1-0/+4
|
* older delivered messages leave us leveltv7 days1-1/+3
|
* benchmark where twice comes fromtv7 days1-1/+1
|
* resend only what is neededtv7 days1-1/+1
|